私とPython
Pythonをはじめて使って20年近く立つ。わたしはそのときどきで仕事を一番こなせそうなプログラム言語を選びたいと思っていて,今の仕事にはPythonを使う機会が多い。
前史
90年代はネットワーク関係の管理が重要な仕事であった。現職についた90年すぐだったと思うがPerlを知った。Perlのオールインワン感と正規表現に感心した。ユーザー登録やらデータ管理に便利で、スクリプトを書き散らかした。
Perlの欠点はプログラムの読みにくさである。いろいろとスクリプト言語を物色する中で、PythonやRubyを知った。95, 6年のfj.langかcomp.langではなかったか。コンパイルして試すぐらいはしたと思う。その当時使っていたのはPyramid MIS-4というマイナーなスーパーミニコン(しかし名機)であった。
それでも90年代後半ぐらいまでは、スクリプト言語はPerlを使った。Pythonの実戦投入は、1.5.2のWindows版だった気がするが、なにをやったかは忘れた。
Zope
Pythonを本格的に使うようになったのはZope(コンテンツマネジメントシステム)を使うようになった2000年ごろだったと思う。WebCT(当時まだソースが入手できた)とセットで覚えているので、今でいう学習支援システム(LMS)のような機能を物色していて出会ったのだと思う。
「Zopeはオーパーツ」は先日聞いたことばだが、ほんとによくできたシステムであった。なかでも、”environmental acquisition”という仕組みに関心した。オブジェクト指向の継承だけではなく、そのインスタンスが置かれている環境のメソッドや属性にアクセスする仕組みである。Zopeはフォルダ内にコンテンツだけではなくスクリプトもおけるのだが、同一のフォルダのスクリプト名でメソッドを呼び出せるのだ。
このころ作っていたのはweb annotationシステムで、ひとつはZopeで、もうひとつをRubyのcgiで書いた。Rubyの方では、AJAXぽいの仕組みとと、いまのAngularJSみたいな宣言的なHTMLコーディングをダイナミックにレンダリングする機構をつくった。というとかっこよさげだが、SparcStation 2だったのでレンダリングに5分ぐらいかかるひどいシステムであった。
Peter Norvig
ちょうどZopeを使いはじめたころ、Peter NorvigがPythonを使いはじめたことを知った。NervingはAI研究の大物で、”AI: A Modern Approach”の著者である。そのころ,できてまもないGoogleに移っていた。彼の書いたPython for Lisp Programmers を読んで、LisperはPythonと合うよね、やはり、と思った。
Pythonの普及活動(笑)
「なんかおもろいことないか〜」があいさつのO先生(理工学部)にPythonを教えてあげた。2003年ごろだったか? O先生は学生のプログラミング教育に困っておられたのだ。O先生はAI系の研究者だったので、 Norvigが使っているというのも大きかったのかもしれない。PythonさっそくO研究室のメイン言語はPythonとなった。簡潔に書けてわかりやすいPythonは学部でもすぐにひろまっていったようである。
並列計算
研究支援システムもそのころのわたしの仕事であった。2000年代なかばにメインフレームがなくなって、そのリプレース的にPCでクラスタ(グリッド)を組んだ。理工系の大学と違ってPCはそれほど性能は高くない。構成も最大で32台の小さな構成であった。普段はPC教室のPCが、夜間など空いているときだけグリッドのノードとなった。Hadoopはまだなく、ノードとジョブの管理、認証、データ転送はGlobus Toolkitを使った。
この上でMPI(MPICH)を動かした。Pythonで書いたプログラムを中心にして、ノードにデータとプログラムをばらまいて、PythonやRのプログラムをキックするものである。先のO先生の情報化学と、A先生の応用統計学の計算で実績をつくったが、「研究支援は不要」という事務職員の意見が通ってしまい、グリッドは3年で終わった。
現在
現在は、自分の研究のデータ処理やアプリケーション開発にPythonを用いている。ネットワーク管理とかファシリテーションの仕事がメインではないので、業務でPythonを使うことはない。分析にはPythonだけではなく、RやSASも使っているので、PyCon 2017ではデータ連携の話を軽くしてみた。
いまはNumpy/SciPy/matplotlib/pandas/scikit-learn/Jupyter Notebookなどが、最初から動いていて、自由にアイデアを試せる若い人がうらやましいと思う。
以上,PyCon JP 2017開催直前、緊急座談会に参加させていただいたのを受けて書いたのだが,PyCon JP開催後の公開になってしまった orz