« SpringNightDream 7/27(金) | メイン | Java Edge発足 »

作るための開発と使うための開発

 都内某所にてエンジニア話で盛り上がったのですが、そのときに出てきたのが「グローバルでは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)が用意されるべきなのです。

 こうした状況で重要なのは、使いやすいコンポーネントを作る力であり、逆から見ればコンポーネントの魅力を見抜き使いこなす力です。作るための開発と使うための開発。この着想を広げていくと、新しい開発の世界が開けそうな気がしました。
 

トラックバック

このエントリーのトラックバックURL:
http://www.arclamp.jp/mt33/mt-tracback.cgi/2312

この一覧は、次のエントリーを参照しています: 作るための開発と使うための開発:

» [仕事]システム構想を考える 送信元 Ron’s Backlog
      今あるシステムをどうするのか?今後の移行パスを含めてシステム構想を考えている。 一昔前(90年代後半)であれば選択肢が少なかったので、ユーザ... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年07月21日 23:50に投稿されたエントリーのページです。

ひとつ前の投稿は「SpringNightDream 7/27(金)」です。

次の投稿は「Java Edge発足」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type