Perlを入れたはいいものの
ご存じのように、Perlには、簡単なコマンドであれば、いちいちスクリプトファイルを用意しなくてもコマンドライン上で実行できる-eというスイッチが用意されています。
> perl -e 'print "Hello, world!"'
また、一行では収まらないような長さのスクリプトでも、使い捨てでよければ、perlコマンドをスクリプトファイルや-eスイッチなしで実行することで、コンソールからスクリプトを入力できるようになります。
> perl
print "Hello, world!";
^D
とはいえ、まともにPerlを使おうと思ったら、何らかのテキストエディタが必要になります。Unix系の環境ではviとEmacsの系統がそれぞれ一大勢力を成していますが、Windows環境では、標準添付のメモ帳(notepad)があまりに貧弱なため、たいていの人は自分の好みのエディタをインストールして使っていることでしょう。筆者はもっぱら学生時代愛用していたVZ Editorの実質的な後継にあたるWZ Editorの古い版を利用していますが、国内では秀丸やEmEditor、xyzzy、海外ではNotepad++やUltraeditあたりが比較的よく使われているでしょうか。viやEmacsの仲間を移植したものを使っている人もいますが、Unix系の環境ほど圧倒的な勢力とはなっていません。
このように事実上標準と呼べるエディタがないことは、エディタに自分をあわせるのではなく、自分にあったエディタを使えるという意味では気楽なことですが、業務レベルで環境を構築するときには問題になることがありますし、リソースが分散されてしまう分Perlに特化した機能が用意される可能性も下がりますから、開発効率の点でも得とはいえません。そのため、特にWindowsへの移植が本格化した1997年頃から、おもに業務でWindowsを使っているユーザ向けにPerlの開発環境を用意しようという動きが見られるようになります。
KomodoとVisual Perl
その先頭を切ったのは例によってActiveState社 でした。同社がオライリー社と協力して1998年に販売したWindows向けPerl Resource Kit には、Perlスクリプトをexeファイル化するツールや、ISAPI(Internet Server Application Programming Interface)用のライブラリなどのほか、Perlスクリプトのデバッグを容易にするための環境が付属していました。このキットは翌1999年にはPerl Development Kit と名を変え、現在に至るまで開発・販売が続けられています。
また、2000年にはそのPerl Dev Kitをより効率よく利用できるように、MozillaプラットフォームをベースにしたKomodo というIDEの開発が始まりました(2001年4月リリース ) 。これはMozillaプラットフォームを利用したはじめてのサードパーティ製品としても注目を浴びます。
同社はさらに、当時提携していたMicrosoft社との関係を活かしてVisual Perl と呼ばれるVisual Studio .NETのプラグインの開発にも着手します(2001年9月リリース 。これはActiveState社が再独立した2006年に開発終了 となりました) 。
また、やや遅れて2003年には、EPIC (Eclipse Perl Integration)と呼ばれるEclipse 向けの環境も登場しました。
これらの製品はそれぞれ欠点はあったものの、コードの色分けやデバッグ用の実行環境などを備え、一般的な開発を行う分には十分実用的でした。
が、これらは一般のユーザが使うにはいろいろな意味で導入コストが高すぎたせいか、結局いずれもそれほど大きなシェアを獲得するには至らず、Perl用のエディタがほしいという欲求は熾火のようにくすぶり続けます。
そのひとつの発露が2004年に生まれたProton CE、のちのKephra でした。
Proton CE
このProton CEは、1999年に最初の公開版が出たScintilla というソースコード編集用に各種機能を搭載したエディタ向けコンポーネントと、イタリアのマッティーア・バルボン(Mattia Barbon)氏が2000年にサポートを開始したWx を利用してつくられた、Perl製のテキストエディタです。
Scintillaは、もともとはPythonの世界で同じような欲求のもと1994年頃に生まれたPythonWinプロジェクト に付属していたエディタ用コンポーネントの貧弱さを改善するために生まれたもの。
Wx(wxPerlと表記されることもあります)は、1992年に開発が始まったwxWidgets(当時の名前はwxWindows)というクロスプラットフォームなGUIツールキットをPerlから利用するためのインタフェースで、コンポーネントの描画を自前で行わず、環境に応じて適切なAPIを呼ぶという特徴があるため、特にWindows環境では当時よく使われていたTk やGtk 、そしてちょうどこの頃切り替えが行われていたGtk2 を使った場合に比べてより自然な外見になる、というメリットがありました。
当時のProton CEは、Scintillaのデモ用エディタSciTE の60~70%程度の機能 しかなく、それほど注目を集めたわけではありませんが、サンプルの実装としては手頃だったようです。これに目を付けたのが前回 も登場したアダム・ケネディ氏でした。
2つの助成金
「( 言語としての)Perlの構文はあまりに複雑・動的すぎて、( その実装である)perlでしか解析できない(Only perl can parse Perl) 」と言われることがありますが、同氏は2002年にPPI というプロジェクトを立ち上げて、Pure PerlでPerlスクリプトの構造を解析する努力を始めていました。
その目的はPPIのドキュメントにいろいろ書かれていますが、スクリプトの構造が解析できれば複雑な正規表現を使わなくても構文の色分けができるようになりますし、ドキュメントの自動生成やコードの整形をしたり、関数や変数の一覧を用意してコード記述時のヒントにすることも簡単になる、といった具合に、その多くはPerlの統合開発環境づくりを見据えたものとなっていました。
このPPIプロジェクトは2年間の努力の末、最後のラストスパートをかけるために2004年にPerl Foundationから助成金 を受け、2005年7月に最初の正式版となる1.000がリリースされます。
氏は再度Perl Foundationの助成金 を受けて、Perlでエディタを書くときに使えるようにPPIを拡張しながら、File::HomeDir を書き直したり、File::ShareDir やFile::UserConfig といったモジュールを作成したりといった具合に周辺モジュールの整備にも力を入れます。また、Proton CEをCPANに登録するための準備や、App::GUI::Notepad と呼ばれる実験的なアプリケーションの作成にも協力します。
Padreの誕生
残念ながら2007年まで断続的に努力を続けたものの、この助成金では最終的なPerl Editorの作成まではたどり着けなかったのですが、氏は決してPerl用のエディタ作りを諦めたわけではありませんでした。Proton CEが最終的にKephraとしてCPANに登録されたあと(2008年2月) 、2008年7月に(その年宮川達彦氏とともにホワイト・キャメル賞を受賞した)ガボル・サボ(Gábor Szabó)氏が新しいエディタの開発をアナウンス すると、氏もすぐにコミッタとして参加しています。
当初はApp::Editorと呼ばれていたそれが、Padre (Perl Application Development and Refactoring Environment)という名前をもらったのはイタリアのPerlユーザたちからの提案だったそうですが(padre(パードレ)というのはイタリア語で「父」という意味です) 、直後に開催されたYAPC::EU 2008のライトニングトーク では、実際にPadreからPerlのスクリプトファイルを開いて実行する様子を見せて喝采を浴びていました。
Padreは誕生して1年ちょっとの若いプロジェクトなので、viやEmacsの仲間をバリバリにカスタマイズして使っている人にとっては物足りなく感じられる面もあると思いますが、機能一覧 を見てもわかる通り、Perlmonks のようなコミュニティサイトで話題になった機能を積極的に取り入れようとしているところがひとつの特徴といってよいでしょう。折からの「Perl is unDead 」のような運動を受けて、はじめてPerlに触れる初心者に向けた配慮も見られますし、Perl 6を学ぶためのとっかかりに、というのもお題目のひとつとしてあげられています。国際化にも熱心で、すでに日本語を含む18か国語に対応済み。本体の更新ペースが速いのでなかなか100%翻訳済みの状態にはできないのですが、日本語については時折筆者が更新をしています。
その他、おもな機能としては次のようなものがあります。
基本的な編集機能(矩形選択などにも対応)
検索・置換(インクリメンタルサーチ対応。改行、空白などの変換含む)
構文ハイライト
構文チェック(Perl 5、Perl 6)
ソースファイルなどのツリー表示
Module::Starterによるひな形作成
スクリプトやテストの実行
右クリックによるコンテキストメニュー
差分作成
アウトライン表示
コードの折り畳み
各種ヘルプ(オンラインサポート、インストール済みのPODの表示など)
Padreのインストール
もっとも、どんなにすぐれたアプリケーションであっても、簡単にインストールできないようでは使う気にはなれないものです。
その点、Padreははじめて使うWindowsユーザでもインストールに困らないようStrawberry Perl(やRakudo)を同梱したインストーラを用意するといった配慮がされているのですが、それでも環境によっては一筋縄ではいかない部分があります。
詳細はプロジェクトのダウンロードページ や、サポート用のWiki をご覧いただくとして、いつも通りにCPANからインストールする場合、ハマリどころはおおよそ3つに分類できます。
システム標準のperlがスレッドに対応していない場合(Mac OS X、FreeBSDなど) 、まずはperlバイナリをコンパイルし直す(あるいはスレッド対応のwxPerlなどを別途インストールする)ところから始める必要があります。
Padreはかなり新しいWx(とwxWidgets)を要求します。古い2.6系列のwxWidgetsでは動かないのはもちろん、OS付属のパッケージャの類では十分な最新版が用意されていない場合があります。この場合はCPANから最新のWxやAlien::wxWidgetsを自分でインストールする必要がありますが、場合によってはあらかじめ別の外部ライブラリ(OpenGLなど)をインストールしたり、makeファイルの種類をgnu makeに変えたりする必要があるかもしれません。
Padreそのものが例によってかなり依存モジュールが多いアプリケーションです(特にプラグインを大量に利用する場合) 。環境によってはCPANから依存モジュールをインストールするときにテストに失敗したり、インストールが先に進まなくなるようなケースもあるかもしれません。
こういった問題は、見つかるたびにPadreチームの面々が関係各所に連絡をとって修正をお願いしていますが、まだ十分にテストされていない環境もあります。問題が起こった場合はぜひIRC(irc://irc.perl.org/#padre )やメーリングリストなどで開発陣に声をかけていただければと思います。
インストールが済んだら、コマンドラインからpadreというコマンドを実行すると、Padreが起動します。本稿執筆時点ではキーバインディングは固定で、すべての動作にキーが割り当てられているわけでもないので、どうしてもマウス頼りになってしまう部分はありますが、それを除けば、あとの使い方にはそれほど困ることはないでしょう。
依存モジュールのインストールが苦にならない方はSubversionリポジトリの開発版を利用することもできます。
> svn co http://svn.perlide.org/padre/trunk
チェックアウトが済んだらPadreディレクトリの中に移動して、dev.plを実行してください。依存モジュールに問題がなければ、タイトルバーにリビジョン番号が入った開発版が起動するはずです。
> cd Padre
> perl dev.pl
Padreのプラグイン
Padreは単体でもそれなりに使えますが、各種プラグインをインストールするとさらに便利に使えるようになります。
たとえば、Catalyst用のプラグインであれば新規プロジェクトなどの作成はもちろんのこと、作成したプロジェクトのスタンドアロンサーバを起動してブラウザから確認するような作業がPadreから直接できるようになりますし、基本的なオンラインドキュメントへのリンクも用意されています。
GitやSubversionを扱うプラグイン、Perl::CriticやPerl::Tidyのためのプラグインや、どうしてもvi風に使いたいという人のためのPadre::Plugin::Vi、Eclipseのような機能を追加するPadre::Plugin::Eclipticのようなものもあります。
もちろんPadreはPerlで書かれているのですから、必要に応じて自分用のプラグインを追加することもできます。Wxのマニュアルはあまり整備されていないので書き方に慣れるまではしばらく苦労するでしょうが、公開できる状態になったらぜひ開発チームに声をかけてください。公式リポジトリに入れておけば、翻訳チームが適宜国際化用のファイルを付け加えてくれるはずです。
既存のエディタに不満があるなら
連載第11回 でも紹介したように、Padreは昨年12番目に多く更新があった名前空間です。いまも活発に開発が進められていますし、その勢いが落ち着くまでにはもうしばらくかかるでしょう。エディタは日々の仕事の能率に直結するものだけに、既存のエディタに満足しているなら慌てて乗り換える必要はありません。
ただ、新しいものが好きな方や、いまのエディタに不満を感じている方は、ぜひ一度Padreを試してみてください。メインの環境として使うかどうかはともかく、PPIを駆使したアウトラインや折り畳み表示は十分一見の価値がありますし、とかくWebと結びつけられがちなPerlの世界でもこのようなGUIユーザインタフェースを実現できるということは、もっと多くの人に知られていてもよいと思います。