coRocketsとGUI開発


coRockets - ネットコンテンツを収集するDLNA互換サーバー
http://www.corockets.com/


2008年8月からの今年の2月まで、未踏でid:gamellakzt0君とで「coRockets」というDLNA互換サーバーの開発に取り組んでました。
どんなソフトウェアかは、親友id:gamellaのエントリーが詳しいと思うのでそちらを読んでいただければと思います。

coRockets 1.0とcoRockets.comをリリース! - Future Insight
http://d.hatena.ne.jp/gamella/20090215/1234676804


この「coRockets」における担当は「GUI」及び「アドオン API」などの主にWindowsアプリケーションでした。
未踏も終わり(今後も開発は続きますが)「coRockets」の開発も一段落したので、このGUIを開発する上で考えたことなどをまとめてみました。

フルスクラッチからの開発と開発期間

このcoRocketsは、他の未踏で採択されている多くのものと異なるところは、全くのスクラッチからソフトウェアを起こさないといけなかったことでしょうか。また、開発期間は半年と短いです。
デスクトップマスコットのApricotの場合、GUIアプリケーションと言えるまともなものが出来るまで1年、洗練させるのに1年弱くらいかかっています。(というか、2年でやっと納得の出来る代物になってきたのが現状です。)

なので、半年という短い期間で高い完成度を持ったアプリケーションを作るために、最小のパスで完成度を高いものをつくるためには手段を選ばず実装していくことにしました。(この設計思想で開発できたことは、幸いなことに話がわかるチームメンバーだったのが大きいです。)

アーキテクチャ

今回つくる「coRokects」は、インタプリタなどを用いて機能拡張可能でかつネットからコンテンツをダウンロードするという機能は前提で、今後データマイニングを行うことを想定してました。
他にも、いろいろ機能要求はありますが、「Apricot」との共通点が多いです。というわけで、ベースのアーキテクチャを「Apricot」で使ってるものにしました。
これは(コードのテストのコスト削減が出来るため)運用実績があるコードを使えるのと、coRocketsで採用する機能を先行してApricotに載せることで機能の実証が出来るというメリットもありました。

プロトタイピング

GUIの基本的なレイアウトを決定するために、いろいろなプロトタイプを作りました。
ちなみにGUIの目標としては、下記のものがありました。

  • シンプル
  • 視認性が高い
  • なるべく邪魔にならない
  • 汎用性が高いGUI部品を目指す
  • 将来、拡張が容易なレイアウトとGUI部品にする
  • メディアデータを扱い易い

9月頃に、今までのコードを破棄して作り直すということなど、様々な紆余曲折があったりでなかなか納得のいくものが出来ませんでしたが、10月上旬あたりにやっと個人的に納得できるものが出来ました。

http://f.hatena.ne.jp/kawatan/
(2008年9月4日から)

その様子は、かなり恥ずかしいですが上のはてなフォトライフで一部を垣間見ることが出来ます。今から見ると結構面白いです。

そんな使わない機能は豚にでも食わせておけ!

機能については、まぁ、そんな感じです。

おわりに

今回の「coRockets」を開発するにあたって、何より一番よかったのは「チーム」だったと思います。これに尽きます。
また、アイコンを作成してくれたつっちーにも感謝!つっちーのアイコンのお陰で、ほんといろいろ勉強になりました。

今後、また新しいことをやるとしたらこの面子でやりたいです。ほんとやってて楽しかったプロジェクトでした。