PerlかJavaか…

プログラム言語にまつわる宗教戦争ってのはあまり好きではないのだけれど、かといって「どれでも一緒だよ」というのも違うと思う。やっぱりそれぞれ長所・短所があってさらにその上に個々の好き・嫌いが乗っかってくる。好き・嫌いもとても大事なことだけど、ちゃんと使い分けられるプログラマでありたいと俺は思う。

で、今の俺の仕事は企業向けのWeb系システムの開発で、言語はJavaServlet+Struts)。そこそこ快適な開発環境だ。これをPerlで作りたいとは思わないし、作らなくて良かったと思ってる。でも、一方で俺が個人的に作ろうとしているウェブ系サービスがあるのだけど、それはPerlで作るつもりだ。なぜか?

一言で言えば、柔軟だから。「作っては壊し、壊しては作る」「とにかく動くものを」と考えると、Perlの方が向いていると思うんだ。では、なぜPerlの方が柔軟だと感じるのか?

Javaで何かを作ろうとした時、どうしても「良い設計」を求めてしまう。仮に「Ajaxでデータベースからデータを取り出して、表示する」という機能だとしよう。フレームワーク等に何を使うかによるが、仮に今はやりのJSF+Spring+Hibernateみたいな構成の場合は下記のものを作らなくてはいけない(状況によるけど):

例えば、DWRというようなライブラリを使えば、上記の一部を簡略化できる。でもそこには、ライブラリの学習コストがかかる。それに対して、Perlだと思い切って下記の開発だけですませることが出来る。

  • Ajax対応HTML
  • DBにアクセスし、整形し、出力するCGI

もちろん、ちゃんと作ろうと思えば、もっと時間をかけてきれいに設計することも出来るけど、こんなに簡単にも出来るのがPerlの強みだと思う。ここで、「なんでJavaの時だけ設計を意識してるんだ! Javaでだってもっと即席な作り方があるぞ」とおっしゃる方もいるでしょう。はい、その通り、だけど、Javaの場合、一度JSF+Spring+Hibernateのような構成を固めるとそこから逸脱しにくい(しちゃいけない気持ちになる)と思う。精神的な意味もあるかもしれない。

結論、前もって要件がそこそこまとまっていて、技術的に斬新なことがないならば、Javaが強い(付け加えるならば、開発者が多い時もかな)。スクラップ・アンド・ビルドならPerlが圧倒的に強い。そう思う、今日この頃なのです。