都内某所にてエンジニア話で盛り上がったのですが、そのときに出てきたのが「グローバルではPHPできないと話にならん」という話題。確かにPHPで作られたOSSというのは非常に多くて、たとえばSugarCRMとかもそう。USでも大手ユーザー企業でもPHPを重視しているところがあるそうです。
一方でRubyやJavaというのは開発者にとって"Sweet"な言語ではあるもののユーザーには難解。ユーザーにとって使いやすい言語という点ではPHPが非常に洗練されているのではないかと。
もちろんPHPが簡単だからって、へぼ開発者が作ってしまうとメンテナンス性も何もない、ということをいうことはできます。でも、ちょっと考えてみると、それは作り手の視点なのかなと。使い手の視点からすればPHPという言語はよくできているということではないかと。
つまり、世の中でコーディング作業をする人は「モノを作るためにやる人」と、「モノを使うためにやる人」に分かれるという気がするのです。ということは、言語も「作るための言語」と「使うための言語」に分かれて当然なんだろうなと。
これを前提にすると僕が感じていたいくつかの疑問が解けるのです。それはコンフィグとは何か、ということとJava+LLの本当のメリットです。
コンフィグとは何か
コンフィグこそ、まさに使う視点での言語でしょう。最近のアプリケーション・フレームワークやOSSには非常に柔軟なコンフィグレーションを可能にしているものがあり、XML地獄と言われながらも使われています。これは「コンポーネントを作る」という作業と「それを使う(=組み上げる)」という作業の分離を意味しています。
僕がSeasarではなくSpringに惹かれる理由も、Geronimoに惹かれる理由も明確なのです。両者とも、それ自体は概念的なプラットフォームに過ぎず、どんなコンポーネントをいかに使うかによって柔軟に機能を変容させられます。
Java+LLの本当のメリットは何か
例えばSugarCRMのようなソフトウェアを導入していく場合に、そのちょっとした変更やプラグインがPHPでかけるとなるとユーザー自身でも利用が可能になってきます。
であれば、Java+LLという手法も同じように利用できるはずです。僕がSarugauで目指したアプローチは、デザインやHTML/CSSに詳しいエンジニアがHTMLとLL(RhinoやGroovy)を使ってプレゼンテーション層を描くというものでした。これはまさに「使う」という視点なのです。
またPHPもJVMの上で動作せることが可能になっておきており、こうしたアイデアに合流できるようにしている気がします。
作るための開発と使うための開発
作り手として優秀なエンジニアは当然残りますし、彼らは"Sweet"な言語を使うべきです。ですが、優秀な使い手に"Sweet"な言語を求めることをしてはいけません。彼らには、使うための言語としてXMLやPHP(LL)が用意されるべきなのです。
こうした状況で重要なのは、使いやすいコンポーネントを作る力であり、逆から見ればコンポーネントの魅力を見抜き使いこなす力です。作るための開発と使うための開発。この着想を広げていくと、新しい開発の世界が開けそうな気がしました。
