Perlフレームワークの選び方。メリット・デメリットの比較をふまえて解説!
この記事の目次
Perlとは?
プログラミングの世界では、JavaScript、PHP、Python、RubyなどLL(Lightweight Language)系言語全盛の感がありますが、そのはしりともいえる言語がPerlです。Perlは1987年、プログラマにして言語学者、そして文筆家でもあるラリー・ウォールによって開発されました。
当初はPearl(真珠)と名付けられましたが、既に同名のプログラミング言語が存在していたのでPerlにした、というのは有名なエピソードです。
Perl登場以前は、コンピュータで文字列(テキスト)の自動処理をする、というニーズに対しては、「C」などの本格的プログラミング言語を用いるのは大げさ過ぎるということもあって、UNIXのツールであるawkやsed、あるいは、UNIXコマンドの羅列であるシェルスクリプトが使われていました。
当時はインターネットが普及し始めた頃で、HTMLを用いてブラウザに文章や画像を静的に表示するだけでなく、アクセスカウンタや掲示板など、プログラムで処理した結果を動的にブラウザに表示させることが増えていました。
HTMLというのはブラウザ上の表示方法を記述した文字列なので、プログラムで処理した結果をHTMLとして書き出し、ブラウザで表示させる(これをCGI(Common Gateway Interface)というのはご存知の通り)というのは、突き詰めればテキスト処理です。
テキスト処理のための適切なツールがないことにプログラマが不満を募らせていたこの時期に登場したのが、テキスト処理を得意とするプログラム言語Perlです。テキスト処理に苦労していたプログラマはこぞってPerlを採用します。
後に、Ruby、PHP、Pythonなどのより使い勝手が良い言語が登場すると、次第にPerlから乗り換えるプログラマが増え、Perlは徐々にその勢いを失っていきます。さらに、読みにくい、保守しにくいなどの批判も聞かれるようになりました。
しかし、現在でもPerlで記述されたシステムは世界中で稼働しており、インターネット黎明期にPerlが果たした功績が失われるわけではありません。また、Perlには現在も根強いファンがおり、今なお進化を続けているのです。
Perlのフレームワークとは?
PerlはWEBプログラミングで盛んに使われた、という歴史的経緯もあって、PerlのフレームワークといえばWEBプログラミングフレームワークです。
RubyにおけるRuby on Railsのような一強といえるようなフレームワークはありませんが、メジャーといえるフレームワークは何種類か存在します。
また、フレームワークではないのですが、PerlにはCPAN(シーパン)と呼ばれる巨大なライブラリアーカイブが存在します。
Perlのフレームワークを使うメリット
フレームワークとは「枠組み」のことです。ソフトウエア開発においてフレームワークというと、ソフトウエア部品、実装方法や制約などが予め洗練された形で提供されているものです。決められた規則に従ってプログラムの実装を進めていけば一定レベルの品質を持ったアプリケーションができあがります。
Perlに限らず、アプリケーション開発においてフレームワークを用いると、開発スピードが向上し、コードの書き方もある程度統一されるようになります。
さらに、想定されるバグを防ぐように設計されているので、バグの発生をある程度事前に防ぐこともできるのです。これは、セキュリティホールの発生を防ぐ意味でも大事です。
Perlのフレームワークを使うデメリット
フレームワークを使うメリットと同様に、フレームワークを使うデメリットも言語には依存しません。
フレームワークというのは、開発者のスキルレベルの差を埋めて開発効率を上げ、一定レベルの品質を持つアプリケーションができるように作られているので、使うに当たっては、フレームワークの使い方を理解していなければなりません。つまり、勉強が必要になるのです。
使おうとしているのがフルスタック(なんでもあり)のフレームワークであれば、使い方を習得するだけでもそれなりの時間と努力が必要です。入門レベルのプログラマには少々敷居が高いかもしれません。
メジャーなフレームワークであればネット上の情報も豊富で、本も出版されていることも少なくないので、独習も十分可能ですが、そうでなければ自己責任で使わなければなりません。
枠組みが用意されていて、その枠組みに従って実装していけばアプリケーションができる、ということは、フレームワークの中身を理解していなくても使えてしまうということです。これでは、何か問題が生じたときにお手上げです。
さらに、あるフレームワークを採用してアプリケーションを開発するということは、フレームワークがアップデートされたらそれに追随しなければならないということを意味します。
また、別のフレームワークに乗り換えようとした場合は移行の手間がかかることはいうまでもありません。このように、アプリケーション開発がフレームワークに依存することをロックインといいます。
Perlのフレームワークの種類
Catalyst
Ruby on Railsの影響を強く受けたWEBアプリケーションフレームワークで、本も出版されています。MVCアーキテクチャーを採用し、DRY原則に基づいているというあたりはRuby on Railsと同様です。
前述のCPANに登録されているライブラリと連携することを前提に設計されているのが特徴です。
Mojolicios
Mojoliciosは、PerlのリアルタイムWEBアプリケーションフレームワークです。リアルタイムWEBというのは、サーバーからのPush通信によって情報の更新をリアルタイムに反映するWEBサイトのことをいいます。
Mojoliciosを用いると、簡単なものから複雑なものに至るまで様々なWEBアプリケーションに適用することでできます。また、テストフレームワークが洗練されているのも特徴のひとつです。
Dancer
DancerはRubyのWEBフレームワーク「Sinatra」を移植して作られました。MVCアーキテクチャーではないということが「Sinatra」の特徴のひとつであり、このため、「Sinatra」を用いると柔軟性のあるプログラミングが可能になっていました。
Dancerでは、モジュールへの依存度が低く、シンプルな構文で済むように設計されているのでメンテナンスが行いやすいという特徴があります。
TripletaiL
日本製のWEBアプリケーションフレームワークです。安全性、生産性、保守性が重要視された設計であることが特徴です。名称の「3つの尾」はこれら3つのことです。日本製なので日本語のドキュメントが充実しています。
Perlのフレームワークのトレンド
Per以降に登場したRuby、PHP、PythonなどがPerlより使い勝手が良かったため、Perlはかつての勢いが失われています。しかしながら、Perlで構築されたWEBアプリケーションもまだ数多く稼働しており、PerlそのものもPerlのフレームワークも今なお進化を続けています。
Perlのフレームワークの選び方
Perlに限らず、フレームワークを選定する基準としては、導入のしやすさ、自動コード生成ツールなどアプリケーション開発のしやすさ、メンテナンスのしやすさといった観点で各フレームワークを比較し、どれを重要視するかによって選定するのがよいでしょう。
まとめ
Perlは、全盛期を過ぎた言語であるという見方をされることが少なくありませんが、現在でもPerlで書かれたシステムは数多く稼働しています。
また、Perlから別の言語へ移植するといった案件では、Perlとそのフレームワークを知っていると大変有利になります。
フリーランスプログラマとしては、Perlを「勢いのなくなった言語だから習得する価値はない」と捉えるのではなく、案件獲得のためのスキルセットのひとつとして考えてみてはいかがでしょうか。