Iron Pythonで遊ぶ
本ホームページはこれからIron Pythonと.NET Frameworkを覚えていく過程を逐次説明する形にまとめて、最終的にIron Pythonの資料になれば良いと思い始めました。Pythonとの出会い
【自己紹介】職業:会社員、でも仕事で別にプログラムを組んでいるわけではありません。ただ小学生の頃から家にパソコンがあったことで、普通にプログラムを組めていた人。
そんな私が『Python』に出会ったのは2001年くらい。当時ある階層構造データを変更する仕事を頼まれた。前やったことがある先輩から3ヶ月はかかるとからかわれ、仕方なくPCの前へ。
まず変更しなければいけないデータを調べてみると1万箇所以上ある。しかもデータの階層が同じではなく点でばらばら。「万里の道も一歩から」と言い聞かせ、変更してみるものの・・・。10箇所変更して諦めた。
こりゃプログラム組んだ方が早いや!でも問題がある。データの階層が決まっていないのでC++なんかで本格的に組んでいたんでは、動的メモリ確保から始めなければならないので、時間がかかる。何より文字列の扱いが面倒くさい。できればスクリプト言語で片付けられないかな。とりあえず取り合えず週末書店に行ってみよう。
その週末都内の大型書店へ、候補は『Perl』、『VBScript』、『java』、『Ruby』を考えていました。でもいくら教本を読んでみても階層が決まっていないデータの動的メモリ確保を解決するイメージが得られませんでした。そんな時本棚の隅に『Python』の本がありました。
初めて手に取ったときには、またマイナーな言語が出てきたよ。とちょっとあきれた気持ちでした。でも組み込みデータ型『リスト』の説明を読んだとき、びっくりしました。
もちろん他の言語でも似たような機能がありますが、それは数値と文字列を並べるまででしかなかったものです。しかし『Python』はリストに数値と文字列とかと一緒にリストを追加することが出来るんです。これって変数定義するだけで、階層データが簡単に作れちゃうってことで、プログラマーは動的メモリ確保について何もしなくていい。こんな至れり尽くせりの言語があっていいのかっというのが『Python』の感想でした。
Pythonを覚えてみて感じたことは、言語仕様にインデントが定義されているので、ソースが必然的に読みやすくなる。またオブジェクト指向を前提に作られているため、比較的長いソースも容易。かと言って、オブジェクト指向に傾倒している訳でないので思ったままの入力ができる。すごく扱いやすい言語と感じました。
Pythonの欠点
ということで思い起こせば、7年前Pyhonで会社のやっつけ仕事を片付けてからどうしていたかというと・・・。それっきりになっていました。理由は2つ。・Documentsが不足している。
・モジュールが多過ぎる。
当時はRubyが出てきた頃、書店にはC++やVisual Basic、新規言語としてjavaがあるくらいでした。それなのでPythonでこれをやってみたいと思っても、どう入力すればいいかわからない。ネットワークはダイアルアップ、せいぜいISDN程度。海外のWebを見に行くのでもかなり時間がかかる。なので仕方なく、これを入力したらどう動くかな?と試しながらの作業でした。まるで現在版解体新書の翻訳作業。もっと読みやすい書籍があったらいいのにと思いました。
Documentsが不足していることに起因しているんですが、Webで調べると同じことをやっているモジュールがいっぱいありました。みんな自分で作ったモジュールが便利だから使ってみて、と公開しているんですが、それってライブラリが不用意に肥大化しているということです。
今、プログラムを覚える上で時間がかかるのは、言語仕様を覚えるよりもライブラリを使い慣れる作業に時間がかかっていると思います。例えば、C++といってもGUIができるライブラリでは、MFC、VCL、ATL、Tk、Gtk、Qt、NET Frameworkなど。つまり同じことをやるのに、全部覚え直さなければいけない。当然みんなが標準であることを自負しているので統一される気配もない。Pythonはそのライブラリさえも肥大化される傾向にあったため、ライブラリを覚えてもきりがないと感じました。
Iron Pythonの登場
そんななんでしばらく、Pythonから遠ざかっていたんですが、なんとなく立ち寄った書店で『Iron Pythonの世界』という本を見つけました。Iron Pythonは、.NET FrameworkをPythonで使えるようにしたものでした。.NET Frameworkがでた時、Win32APIが使える人にはむしろATLの方が自然で強力で、コンパイルする言語で.NET Frameworkを使用してもPCの負荷だけが増えて面白くない。スクリプト言語で使用できるライブラリだったら強力なのに。と思っていて、開発はしているものなかなか出てこないスクリプト言語に、難しんだなあと思ってました。
そんなわけで、遂にスクリプト言語でできたのか。という思いとそれが昔やってたPythonだったこともあり、かなり敷居が低く感じました。
ということでこれからWin32APIでしっかり作るのもいいけど、Script言語で手軽に作ってみるのもいいもんだ。今更ながら.NET Frameworkの勉強も含め、Iron Pythonを使って遊んでいきたいと思います。