ひがやすを技術ブログ

電通国際情報サービスのプログラマ

フレームワークの進化的開発

フレームワークは、多くのユーザのニーズに応えられるようにするために、汎用的で、最初から多くの機能が盛り込まれるというのが一般的ではないかと思います。
でも、本当にそうかなぁと私は思います。例えば、私がフレームワークを作るとします。多くのユーザのニーズを初めから把握できるでしょうか。たぶん、できないでしょう。ユーザのニーズを想像して機能を盛り込んでも実際に使われるかどうかは分かりません。それなら、ニーズを確実に把握できない機能は盛り込まないほうが良いでしょう。
ただ、このような考えはフレームワークに限っては落とし穴があります。機能の足りないフレームワークは誰にも使われない可能性があり、フィードバックがないかもしれないのです。
結局事前にどこまで機能を盛り込むかというのは、非常に難しい決断になります。そんなときに、私が使う方法は、「ユーザに使ってみたいと思わせるキラーな機能」は、事前に盛り込み、それ以外のニーズが確実に把握できない機能は、後回しにしてユーザのフィードバックを待つというものです。
実際にそうやって開発したのが、S2Daoです。2Way SQLと設定ファイルいらずというキラーな機能を最初に盛り込み、残りはユーザのフィードバックを待ちました。S2Daoは、今なお機能的に足りないところはあるのですが、実装されている部分はよりよくユーザのニーズが反映されているのではないかと思います。
進化的開発でもう1つ迷うのが、リリースのタイミングです。ある機能はユーザのニーズは把握しているけど、実装には少し時間がかかる、リリースを遅らせて実装するのか、今できている分でリリースしてしまうのかという問題です。
私は、仮に未完成の部分が残っていても、できている分を先にリリースしてしまったほうが良いと考えています。なぜなら、ユーザによっては今できている部分で困らないかもしれないからです。あるいは、既に修正済のバグフィックスを心待ちにしているかもしれない。ユーザへのフィードバックはできるだけ早いほうが良いと考えています。私の関連するプロダクトで、リリースのタイミングが早いのは、そういう理由です。
バージョンアップについていけないと思うユーザがいるのも知っています。ただ、細かいバージョンアップで恩恵を受けるユーザがいるなら、できるだけ早く新しいバージョンを提供してあげたいと思っています。

Flex2再入門

今年は、Flex2な年にしようと思っているので、Flex2についていろいろ書いてみようと思います。Flexとは何かというと、JSPみたいにXMLでテンプレートを記述して、コンパイルするとFlashのファイルになるというもの。FlexのテンプレートをMXMLといいます。コンパイル後のFlashのファイルはSWFと呼ばれます。
Flexは現在バージョンが2.0.1なため、Flex2と呼ばれています。Flex2以前は、Flexのサーバライセンスを買う必要があったのですが、Flex2からは、IDEなしでコマンドラインベースで開発するなら、無償で開発できるFlex SDK2が利用できるようになりました。とりあえず最初はSDKベースでやってみます。
Flex2は、https://www.adobe.com/cfusion/tdrc/index.cfm?product=flex&loc=jaからダウンロードできます。Flex Builderの単独版とEclipse Plugin版があるのですが、後からS2Flex2と一緒に使いたいので、Plugin版でインストールしました。
インストールしたら、Flex2をインストールしたディレクトリ\Flex SDK 2\binにPATHを通してください。これは、MXMLコンパイラ(mxmlc)を使うために必要です。
それでは、適当なディレクトリを作って、そのディレクトリにMyApp.mxmlという名前で次のような内容のファイルを作ってください。文字コードUTF-8にします。




コマンドプロンプトを開き、MyApp.mxmlを作ったディレクトリにcdして、次のコマンドを実行します。

D:\USER\flex>mxmlc --strict=true --file-specs MyApp.mxml
Loading configuration file C:\Program Files\Adobe\Flex Builder 2 Plug-in\Flex SD
K 2\frameworks\flex-config.xml
D:\USER\flex\MyApp.swf (117110 bytes)
正常に実行できたら、そのディレクトリにMyApp.swfができているので、ダブルクリックして実行してください。Flashのシンプルな画面が表示されたはずです。