2012年5月14日月曜日

第3回 開発コンテスト24に参加した

このエントリーをはてなブックマークに追加
今年のテーマは「一日の終わりを楽しくするもの」

この記事では、どんな流れで開発を行ったかについて書きたいと思います。

[作品]








吾輩は読書中である。明日の朝は早い。

[ブレスト]

開始から1時間ほどブレストしました。
僕はいつもスライドにブレスト内容を書き出しながら、適宜まとめます。


基本的なアプローチ方法は二つ
・一日の終りにする楽しくないものを楽しくする
・一日の終りにする楽しいものをより楽しくする
これについて、それぞれ列挙し、その後詳細に考えました。 ただ、去年の場合のように詳細を詰めることなく、応募内容のものが自分で使いたいし、シンプルで作りやすい&わかりやすいと思ったので、アイデア出しはこの程度で終わりました。

[開発]

開発はGoogle App Engine上で動作するプログラムを書きました。
基本的な動作手順は
1. 青空文庫にアクセスして、ZIPファイルをダウンロードする
2. ZIPファイルからテキストファイルを抽出
3. 文字コードをSJISからUTF-8に変換
4. テキストファイルを段落毎に区切り、各段落の文字数をカウント
5. 段落の前に、文字数とそれに応じた推定読了時間を記載
6. 再度ZIP化してリクエストに応答する
となります。ZIP/UNZIPと文字コード変換に少し詰まりましたが、昼過ぎには完成。大体100行程度のプログラムになりました。

[開発2]

コア部分の開発後、Webページを作り、説明&フォームからのダウンロードできるようにしました。ここでは、Twitter Boostrapを使いました。CSSは10行ほど書き換えて、後は説明文を記載。大体HTMLを100行ほど書きました。

[開発3]

とてもシンプルなサービスで自分でも結構気に入ったのですが、折角時間もあるので、Androidからのクライアントを作りました。と言っても、文庫一覧をリストに表示して、選択された文庫のURLでAPIを叩きに行くだけ。200行ほどのプログラム。

[サービス名]

サービス名は非常に重要だと思います。何のサービスか、何が嬉しいかを伝える必要があります。そこで、夏目漱石の吾輩は猫であるの冒頭をもじってタイトルを「吾輩は読書中である。明日の朝は早い。」、サブタイトルを「どこで読書をやめればよいか、とんと見当がつかぬ。」としました。結構悩んだのですが、審査員コメントでも触れて頂き非常に嬉しかったです。

[ムービー制作]

開発コンテストの趣旨からは離れているのですが、紹介ムービーも作りました。こちらはiMovieやらPhotoshopやらを駆使。去年の作品では音楽があったのですが、今回は自分で作ったモノだけにしようと思い、音楽はなくしました。慣れの問題もあるのですが、正直なところ、ムービー制作に一番時間を使いました。

[まとめ]

24時間と短い時間ですので、コア部分の実装を出来る限り小さくすることが重要かと思いました。コア部分が出来上がったら、縦や横に実装をすすめる。つまり、いつ開発をストップしても作品として提出できる、といった状態を作り出します。
これにより、バグにハマって抜け出せなくなっても、作品を提出できないというリスクを回避できます。そして、余った時間に応じて作品のクオリティーを上げることができます。

ただ、少しシンプル過ぎたかなーと思います。24時間を使い切ることなく、終わってしまった。
GAEやらBoostrapやらのお陰で、めんどくさい作業や書くべきコード量がガクンと減りましたね。まぁ、楽なのは良いことですが。


昨年に引き続き、参加させて頂きとても楽しく過ごせました。開催元のCookpad社とその中で"休日にも関わらず"働いてくださった社員の皆様に感謝です!!