実装優先時の考慮点 その3 - 言語と環境の選択 -
ここまで実装を優先する事でリスクを回避する際に、実装したソフトウェアに引きずられない事、自動化により実装・確認・フィードバックのループを早く回すと共にリファクタリングを容易にする事を説明してきました。
今回は実装・確認・フィードバックのループを早く回すもう一つの視点として言語と環境の選択を取り上げます。進化的プロトタイピングの研究開発事例である「WEBユーザビリティ評価用ツールWebTracer」の経験を通じて説明します。
WebTracerはWeb画面とキー入力、マウス操作、ユーザの視線を記録し、議事アニメーションで再生すると共に、基本的なメトリクスの分析をするツールです。エンピリカルソフトウェア工学(実証的ソフトウェア工学)の研究テーマの一つとして開発し、ユーザビリティテスティングに利用しました。
言語の選択
開発言語はVisual Basic 6(VB6)を選択しました。当時はVisual C++(VC++)に慣れていました。また、所属組織としてはSmalltalkを使った方が良以上今日でした。しかし、MSDNなどのドキュメント類に慣れていたこと、学習工数を考慮しても生産性に期待でき、IEとの相性の良さが期待できるなどメリットがあり、そして何よりもWYSIWYGな開発環境が進化的プロトタイピングに有効だと思われたからです。
元々パソコンをBASICで学んだ時代の人ですし、すでにRubyによるリエンジニアリング支援ツールの研究開発はしていましたので、コードを書けばすぐに確認できるインタプリタの効果は理解していました。
作らないとフィードバックが得られないのは、ユーザだけでなく開発者も同じです。コードは実行してその結果が表示されるまではプログラムに問題があるかわかりません。インタプリタならコーディング後にすぐ確認できるので、徐々にプログラムを作り上げる際に効果を発揮しました。
環境の選択
WebTracerの開発は、想像以上にうまくいきました。もし、VC++で開発していたなら、2倍ぐらいの工数がかかっていたと思います。もしかすると、完成していなかったかもしれません。
VB6は見た通りに画面が作成でき、それがそのまま動きます。ビルドにまつわる余分な事を考えなくて済み、その時間も必要ありませんでした。
またIDEによる開発支援もあって、こうすればできるとわかった時にはすぐにプログラムができました。ツールを今後どのように発展させるべきか、どのように活用できるか、を検討するなど、より高度な仕事ができました。
このように、フィードバックがすぐに得られるメリットを大いに感じました。
限界を知る
結果がすぐに得られる環境は、実装によるフィードバックループを高速化します。その効果は絶大です。しかし、複雑なプログラミングが簡単にできるという事は、できない事も増えました。
VB6は基本がシングルスレッドなので、画像の圧縮と保存を並列処理できませんでした。一旦、全ての画像をメモリー上に残しておいて、実験が終了する際に保存するという仕組みで、やり直せない実験には少し使いにくいツールでした。
WebTracerではVC++と併用する事でVB6の限界を超えましたが、環境の選択はその限界を見極めないと、アプリケーションの寿命を縮めてしまいます。
かつて4th DimensionというMacintosh上の開発環境を利用したプロジェクトを担当した事があります。これはこれで高速な開発が可能な環境で、お客様との仕様調整がうまくできれば良いツールでした。
しかし、これも標準規格でない事が足かせになるのか、WEBベースのWAKANDAが開発されている様です。同様の効率的な開発では、超高速開発(リンク先はPublickey)が話題になっていますが、これらはどういう開発に向いていて、どのような状況になれば限界にぶつかってしまうのか、大変興味のあるところです。
まとめ
言語や環境の選択によって、高速なフィードバックを得る事が可能になります。しかし、言語や環境の選択によっては効率的に開発できる内容には限界があり、プロジェクトの特性をきちんと把握して、ふさわしいものを選ぶ必要があります。
進化的プロトタイプのように実装優先で開発する場合、実装結果を早く確認できないとあまり効果が得られません。今回取り上げた言語と環境の選択と同じように、前回の継続的統合やテスト自動化もバランスを考えて実施すべきでしょう。
プロジェクトにはバランス以外にも考えないといけない事がたくさんあります。次回は実装優先のプロセスの一つである、アジャイル開発で考慮されている他の要素を考えてみる予定です。
« 実装優先時の考慮点 その2 - 継続的統合とテスト自動化 - | トップページ | 実装優先時の考慮点 その4 - パッケージとしてのアジャイル開発 - »
「私のアジャイル」カテゴリの記事
- One fact in one placeとチケット駆動開発 - Software Processes are Software, Too -(2021.12.21)
- マルチスレッド処理と進捗管理・配員・作業分割/割り当て- Software Processes are Software, Too -(2021.12.20)
- カプセル化と組織パターン - Software Processes are Software, Too -(2021.12.20)
- Greedy algorithmと2割8割の法則 - Software Processes are Software, Too -(2021.12.12)
- 「任せて、任せず」「魚を与えるのではなく"釣り"を教えよ」(2021.08.16)
« 実装優先時の考慮点 その2 - 継続的統合とテスト自動化 - | トップページ | 実装優先時の考慮点 その4 - パッケージとしてのアジャイル開発 - »
コメント