
日本Perl事始
過去に書いた記事を再掲しています。編集前のものなので、出版されたものとは異なるし、掲載にあたり若干修正している場合もあります。これは2006年にインプレスから出版された「まるごとPerl!」というムックに寄稿したもの。編集者との昔のメールが偶然目についたものなので、出版されたものとはかなり違うかもしれない。
1986
日本初の Unix 専門誌として、アスキーから Unix Magazine 誌が創刊されたのは1986年のことである。その創刊号から、前職である SRA の複数の社員がhackers を逆に綴った srekcah というペンネームを共有して、Little Language という連載を持ち回りで書いていた。この連載は Unix のシェルやawk, sed, m4 などを使って、ちょっとしたスクリプトを書くコツを紹介するもので、当時の Unix の典型的な開発方法を読者に紹介するものでもあった。本格的なアプリケーションはもちろんC言語で記述するのだが、Unix のツールボックスアプローチを活用すれば、大幅に開発工数を短縮できるということを実践的に示そうとしたものである。
しかしシェルとC言語の間には大きなギャップがあり、その中間的な手段が欲しいという要求を当時の多くの Unix プログラマが持っていたと思う。筆者は、1986 年頃から Icon という言語を使い始めていた。Icon は、Cに比べて遥かに高い抽象度でプログラムを記述することができ、インタプリタ言語で開発が容易だった。
1988
Perl に最初に出会ったのは、1988年の4月に長期出張から戻った頃だと思う。冬のロンドンに滞在した2ヵ月は、天候も住居も最低の環境だったの加えて、現地銀行のタコ部屋で朝から晩まで Cobol のプログラムを書き続ける生活だったので、日本に帰って来て Unix のありがた味を再確認していた時期でもある。
前年の12月にリリースされたばかりの Perl はまだバージョン1だったが、とても『気持ちのいい』言語だった。Icon も悪くはなかったが、Unix の設計思想とは完全に独立した文化の下で開発された言語なので、常にどこかに違和感を感じながら使っていたような気がする。それに比べて Perl は、当時 Unix プログラマが『こんな風にできたらいいのに』と思うことがそのまま実装されていた。今でもマニュアルには『C と sed と awk と sh を組み合わせた言語である』と書いてあるように、実に Unix プログラマのツボを押えた言語仕様だったのだ。Perl について、その言語仕様の一貫性のなさを批判する意見もあったが、それを逆に小気味よく感じ支持するプログラマの方が圧倒的に多かったのだと思う。
Perl をリリースした頃、Larry Wall は rn や patch コマンドの作者として、すでに有名人だった。rn というのはニュースリーダであり Perl とはまったく性格の違うコマンドだが『気持ちがいい』という点は共通していた。どうすれば利用者が (というか一番の利用者である自分が) 体感的に気持ちよく感じるかを重視して、仕様を決め実装していたプログラマなのである。その気持ちよさの感覚を多くの他の利用者と共有していたことが、多くの支持を集めた理由であろう。
Little Language の連載に最初に Perl を紹介する記事を書いたのは、その年の秋だ。活字メディアに Perl が紹介されたのは、これが最初だったかもしれない。これに先だってバージョン2がリリースされ、そこでは Henry Spencerの正規表現ライブラリが導入されていた。その後 Larry は独自にこのライブラリを拡張し、現在これほど Perl が普及する原因の1つとなる強力な正規表現機能を作り上げたわけだから、このタイミングで導入したことは大きな意味を持っていたのかもしれない。
1989
その後も散発的に『Perl 入門』と題して記事を書いていたが、1989年の半ばになっても『perl なんぞというマイナーな言語の話を』という記述が見られるように、まだまだマニアが使う言語だった。大きな変化は1989年10月にリリースされたバージョン3で訪れる。バージョン3では実に多くの機能拡張が施されたが、個人的に重要だったと考えるのは、正規表現の拡張、バイナリデータの取り扱い、パッケージの導入、データベースとのリンク、システムインターフェース、ネットワークサポートである。これによって、Perl はそれまでC言語を使わなければ実現できなかったほとんどの機能を実装することができるようになった。
Unix では、自分専用のコマンドをホームディレクトリに置いておく習慣があるが、この頃にはワークステーションが普及し、異機種間で NFS を使用してホームディレクトリを共有するようになっていた。こうなると、C言語で記述してコンパイルしたコマンドはアーキテクチャが異なるマシンでは動作しないので、ディレクトリを分けて固有のバイナリを用意しなければならない。それに比べるとPerl で記述したスクリプトはどんな環境でも実行できるので、管理が俄然簡単なのだ。そんな事情もあり、これ以降に作る自作のユーティリティコマンドには、ほとんど Perl しか使わないようになってしまった。
1991
バージョン3には数多くの機能拡張が繰り返し加えられたが、パッチレベル44でそれを終了し、その版を元にして、O'Reilly から Camel Book として知られるようになる Programming Perl が出版される。それにともないバージョン番号は 4.0 に変更された。Programming Perl は、1991年1月にダラスで行なわれたUSENIX に合わせて発売されサイン会も開催されたが、残念ながら自分ではこの会議には参加できなかったので知人に頼んで購入してもらった。サインをしてもらう時に知人が僕のことを知っているかと尋ねると Larry Wall 氏はもちろんと答えたそうだが、これはおそらくリップサービスだったんじゃないかと思う。
でも、実装のバグを見つけたりしてメールのやりとりはあって、日本人だから少しは憶えていたのかもしれない。Larry が実は日本のアニメオタクだということが判明するのは後になってのことだ。
1992
Perl に関するまとまった解説が望まれるということで、1992年の春から UnixMagazine 誌に Little Perl Parlor という連載を開始した。これは MIT Press から出ている Little Lisper という本のタイトルに触発されたものだが、その後 Palo Alto の Printer's Inc. で "Parlor Cat" という本 (猫の写真集だったが) をみつけ、"Parlor Perl" というタイトルにすればよかったとちょっと後悔した。翌1993年には増井俊之氏による「Perl 書法」をはじめとして関連する書籍が何冊か刊行され、日本でもちょっとした Perl ブームが訪れる。
その後、Perl は Unix 上のスクリプト言語として広く普及するが、それに更に拍車をかけたのが WWW の登場である。1993年に NCSA から WWW ブラウザである Mosaic がリリースされ、そのサーバ側の実行環境として CGI が導入されると、CGI の実装言語として Perl は急速に広まることになる。その後の経緯は、多くの読者がご存知であろうからここで詳しく語るまでもあるまい。
■■
担当編集者からは jcode.pl のこととか交えて書いてくれというリクエストだったようだが、紙面が足りそうにないのでやめといた。
今でも自分で作るコマンドは Perl が大半だ。慣れているからというのももちろんあるが、過去の資産が積み重なっているので、他の環境に乗り換えづらいというのが大きな理由だ。だから、完全に新しく書き起こすようなものについては別の言語を使う。Python や JavaScript は、気持ちいがいいという点では Perl に遥かに及ばないように感じる。git のバックエンドで多用されていたりするのを見ると、まだまだ出番はあるような気もするので、若い人もせめて読んで直せるくらいには Perl をわかった方がいいのになあとは思う。
ICON
shar
perl も含めて、この頃のソフトウェアの配布は shar (shell archive) という形式で行われていた。USENET のニュースに、何分割かされたソースコードのリストがテキスト形式で投稿されて、それぞれの本文部分を sh で実行するとファイルが展開される。更新時にすべてのファイルを投稿するのは無駄なので、更新情報は diff 形式で投稿された。これを適用するのがやはり Larry Wall が作った patch コマンドだ。