#june29jp

おやすみのシャワーを浴びて眠ろう!「おやすみシャワー」をつくったぼくらの24時間

2012-05-16

クックパッドさん主催の第3回「開発コンテスト24」に参加して、チームのみんなと一緒に「おやすみシャワー」というアプリをつくり、応募しました。結果は、なんと特別賞でした!去年に続き、2年連続の特別賞をいただき、とても満ち足りた気持ちでこの文章を書いています。ほくほく。

このエントリでは、ぼくが過ごしたドラマチックな24時間のことを記録してみたいと思います。他のメンバーのエントリと重複する内容もありますが、重複を避けるよりも、ぼくから見た24時間をなるべくそのまま記すことを大事にします。

このエントリの目次

  1. 他のメンバーから見た24時間
  2. 前日までのこと
  3. 12日の朝のこと
  4. 12日の夜のこと
  5. 13日の朝のこと
  6. 「おやすみシャワー」を紹介します
  7. 「おやすみシャワー」を使ってくれる人を募集します
  8. まとめ

他のメンバーから見た24時間

@darashi のエントリに詳細がまとまっていて素晴らしい!

前日までのこと

この物語のはじまりを話すには、時計を1年と少し、巻き戻す必要があります。去年の第2回「開発コンテスト24」に参加したときの記録がこちらになります。

半径3メートル以内の世界でもっともっとひっついてたくて「1/2」をつくりました – 準二級.jp

「あの日のことが忘れられなくて…」と思ってしまうくらい、自分にとっては本当にありがたい経験でした。今年も「開発コンテスト24」の開催が発表されたとき、あのときのメンバーたちの間で、誰からというわけでもなく、自然に「今年もやってやろーぜー」というお話になっていました。@darashi も @kei_s も、気合充分なように見えました。

ただ、これが逆に心配だったのです。というのも、去年は本当に「お前ら、やる気あんのか!」というくらいユルユル〜っと参加していて、その脱力感が功を奏して特別賞を勝ち取れたように感じていたからです。変に力を入れすぎず、いつもの自分たちのやり方で、いつもの自分たちの能力を発揮できたからこその、よいものづくりがあったと感じています。

以下は、開催前日のチャットのスクリーンショットです。特に @darashi が張り切りすぎていて心配な感じでした。

肩から入ってる

あと、ぼくは「特別賞」というポジションをとても気に入っていて、なんというか、テーマに対して斜めに入っている作品に与えられる称号というか、肩から入っているというか、ちょっと特別感があって、とにかく好きです。今回も、意識的に特別賞を狙っているところはあって、特別賞の賞品が「ルンバ」であると発表された時点から「Perfumeのモーションデータを使って2台のルンバを踊らせる作品を作って、あと1台のルンバがあれば完璧なデモをお見せできるのですが… みたいな応募文を書こう!」なんて、特別賞乞食な発想も持ち合わせていました。

12日の朝のこと

この日、ぼくは11:00から外せない用事を抱えていて、テーマ発表の直後にお出かけしなければならない状況でした。幸い、テーマが発表される9:00にはガローアにいることができたので、テーマ発表と同時にサイトをチェックし、残された時間の中で自分にできることはすべてこなして、フルコミット組の @darashi と @kei_s にバトンを渡したいと考えていました。

9:04から Skype の音声チャットを開始し、提示されたテーマ「一日の終わりを楽しくするもの」についてあれやこれやと会話をはじめます。「一日の終わり… 寝る前か」「寝る前プロダクト、レッドオーシャンっぽい」「もっと別の切り口で “一日の終わり” を考えてみたい」などなど。@darashi からの問い「一日が終わるときって、どんなとき」に「夕日が沈んだときー」と即答できたときはドヤ顔でした。

そんなこんなしている間に時は流れて「あっ、そろそろ出発しなきゃ」と告げるぼくでしたが、他の2人は「移動中も iPhone の Skype で参加すればいいじゃん」と素敵な提案をくださり、イヤホンで2人の声を聴きながらテキストを書き込んで会話に参加しました。この体験が、ぼくらの作品の方向性に影響しようとは、このときには想像していませんでした。

「音は、おもしろい」

山手線に乗ったぼくの iPhone から、自宅にいる2人の耳に東京の雑踏の音が届きます。ぼくは、笑いをこらえながら2人の会話を聴いています。途中、自宅でイヤホンを装備したままトイレに行った @kei_s は「山手線の中で用を足しているようで、背徳感ある」と漏らしていました[1]。

[1] 漏らしていたのは言葉です

このときまでに、今回のテーマを見たすべての Rails プログラマが思い付いたであろう「ActiveSupport が Date/Time/DateTime に追加する end_of_day メソッドを拡張する」というアイディアを含む、10個ほどの作品の種が見つかっていたように思います。ぼくはここで一度、戦線を離れることになり、他の2人に場を預けて、用事へと向かいました。去り際にお話していたのは「音を録れたらおもしろいねー」「寝る前だと、やっぱり iPhone がいいよね」あたりです。このとき、およそ10:50でした。

12日の夜のこと

はい!用事を無事に済ませて、帰路につき、戦線を守っているはずの2人のことを想いました。グループチャットに「戻るよー」と書くと「要素技術はざっくり漁り終わってプロダクトの形について考えてて煮詰まってるトコです」とお返事がありました。要素技術の検討が済んでいるとは、さすが!まったく頼もしい限りです。

さて、それからちょっとバタバタとしまして、戦線に戻るに当たって足りない機材を揃えたりするために @ZoAmichi に連絡しました。せっかくの機会なので、ぼくらにない「アートワーク」の能力を持っている @ZoAmichi をチームに誘ってみました。ここで思い出すのは、RubyKaigi2011 の準備のときに颯爽と現れて「フロアガイドの作図、やります」と手を挙げてくれた当日スタッフ @ZoAmichi の姿です。デジャヴ。今回もお世話になります。

@ZoAmichi と合流してガローアに着席し、PS3 のセットアップを終えてビデオチャットを開始できたのが21:49でした。ここから本格的に参戦です。よし。

まずは、先を行く2人の作業にキャッチアップするべく、進捗を聞かせてもらいました。ほむほむ。カードは一通り揃っていて、あとは、これらをどのように組み合わせてどのような役を作るか、といったところ。このときに自分が受けた率直な印象は「おいしいところ、残しておいてくれたのだなあ」でした。2人の能力なら、カードの組み合わせを考えてプロダクトとして仕上げるところまで、できただろうに。もしかしたら、ここまで全速力で走った結果として、この進捗だったのかもしれないけれど、ぼくは、なんだかそんな印象を受けたのでした。

ここで @darashi のエントリからの引用を挟みます。

このこと——誰が何をどのくらいできて、何ができないかをお互いが包み隠さずよく知っていること——はチームで開発する上でとても大事なことです。この共通認識があって、共通認識があるということを認識しているだけで、話し合うまでもなくタスクが適切な人に届けられることになります。気がついたらその時点で最も適切な人がやっているのです。

おやすみのシャワーを浴びて寝るために僕らがしてきたこと | だらろぐ。

これは、まさにぼくがメンバーたちに対して「心から、ありがたい」と感じていることです。だから、このメンバーたちと、何度も「ものづくり」に挑みたいと思えるのでしょう。さらに付け加えるならば「できる / できない」といった「スキル」だけではなく、どんなときにテンションが上がってパフォーマンスを発揮するかという「特性」についても、かなり深いレベルでお互いに理解し合えている感覚があります。

この判断はコンテストの中で一番大事な判断になるところだと感じていたので、だいぶ悩みました。 なによりストーリーが大事です。でも、まだ「これでいこう」という決断までは出来ない状態でした。

そうこうしているうちに、 @june29 が仕事を終えて戻ってくる時間が近づいてきました。@june29 はこういうストーリーを組み立てるのがとても上手なので、彼もいるところで一緒に話をしたいという気持ちが強くありました。

おやすみのシャワーを浴びて寝るために僕らがしてきたこと | だらろぐ。

このように思ってもらえたことに感謝します。「ああ、ぼくは、ぼくとして、このチームに身を置いていていいのだなあ、それが許されるのだなあ」という安心に、心から感謝しています。ならば、ぼくがやるべきことはシンプルで、期待を上回るような貢献を目指すのみです。

@kei_s からソースコードの解説を受け、ありがたいことにシンプルな構成だったので、すぐに理解できました。ようやく合流です。途中から参加する開発プロジェクトにおいて最初にやるべきことは「一通りの道を歩くこと」です。というわけで、コードベースを手元に揃えて、今回の開発に必要な環境を整えて、アプリを手元で動かしてみる。それが済んだら、小さな変更を加えたものをコミットし、他のメンバーの手元でも確認してもらう。ぼくが最初のコミットにたどりついた記念の時刻は、23:11でした。

余談ですが、このときのリポジトリ名は「koe」(声)でして、ぼくは手元の「dev」ディレクトリに clone してきたため、パスが「~/dev/koe」になり、しばらく「デブ肥え」を連呼しながらニヤニヤする深夜のノリがありました。

そうして、ここから「作品としてどのように仕上げるか」を考える時間に入りました。手元にあるカードは「声を録音する」「サーバに送信して保存する」「サーバに保存されている声を再生する」これですべてでした。これらを組み合わせて、iPhone 向けのアプリケーションとしてパッケージし、一日の終わりを楽しくするものに仕上げる… なかなかむつかしい作業ですね!

さてさて、作品としての在り方と同時に、作品の「名前」も考えていきました。例によって例のごとく、最高の悪ふざけタイムがありました。そのときに挙がっていた名前の候補をいくつか並べて、ぼくの感想 (というかボツの理由というか) を書いておきます。

  • スヤリッチ : 毎日の「すやり」をリッチにするっぽい
  • おやすみクラウド : ありがちっぽい
  • Oyasumi as a Service : エンタープライズっぽい
  • iOyasumi : Appleっぽい
  • 美声おやすみ : 「美人時計」のパクりっぽい
  • 夜のリレー : カムチャッカの若者は寝るっぽい
  • おやすみください : 執事っぽい
  • おやすミク : 札幌っぽい
  • おやすみ日本 : NHKっぽい
  • おやすみエクスチェンジ(おやっくす) : @darashiの略しセンスのせいで証券っぽい
  • おやすみクロスロードZ : 週末ヒロインっぽい
  • おやすみスターライト : 寝台特急っぽい

ひどい悪ふざけをしながらも、きちんと議論は進行していて、0:18、満場一致で「おやすみシャワー」に決定しました。@ZoAmichi がいてくれたおかげで「アイコンもつくりやすい」といった観点を取り入れてネーミングできたのはよかったと思います。気付けば日付も変わっていました。

作品の名前が落ち着いたことで、作品として「どうあるべきか」も、だいぶ考えやすくなりました。0:45に画面設計とユーザのアクションフローの設計に着手し、1:30頃に初案が完成、メンバーのフィードバックを取り入れて「じゃあ、これでつくってみよう」というところまで進みました。1年前のぼくなら、画面設計の合意をつくる前にコーディングをはじめていたことと思いますが、この半年でプロトタイピング技術が向上していたため「まずは画像で最低限のモックをつくり、それを指さしながら認識合わせをする」という堅実なプロセスを踏むことができました。自分の成長を実感できて、ほのかに嬉しかった瞬間です。

画面設計とアクションフローの設計が終われば、あとはコードを書いて実際の動くものに落とし込む作業です。そうそう、今回は PhoneGap での iPhone アプリ開発でしたので、ぼくが触れたファイルは「HTML」「CSS」「JavaScript」のみでした。これなら「お得意の Web 開発だぜヒャッハー」と勢いよくコーディングしました!…と思いきや、いつもの「Haml」「Scss」「CoffeeScript」に比べると「素で書くのつらい…」と思う場面が多かったわけですが、まあ、許容範囲です。

声を扱う部分については @darashi と @kei_s がしっかりと整備してくれていたおかげで、ぼくの作業は、アクションフローに合わせて用意されている function を順番に叩いていくだけで済みました。簡単便利でとっても助かりました。と言いつつ function の呼び忘れによるバグを生んですみませんでした……

3:12には、おやすみシャワーの原型とも呼べる状態のものをコミットしました。ここらでようやく、作品を提出できるイメージを持てるようになってきました。そのすぐあと、3:35には、並行してアートワークを進めてくれていた @ZoAmichi がアプリのアイコンをコミットしてくれました。一気に完成形に近付いていきました。

13日の朝のこと

この一晩で、動作確認のための「おやすみ」をどれくらい言ったことでしょうか。メンバーの「おやすみなさい」が聴こえてくる度に「あ、仮眠に入るのかな」と思いました。たぶん100回以上は「おやすみ」を聴いた夜だったと思いますが、誰も寝ていませんでした。おやすみ詐欺ナイト。そして迎えた日の出。

最初に「とりあえずこれで Shippable (提出可能) だね」となったのは、5:45くらいのことだったと思います。そこから先は、ちょっとした改善を試みたり、紹介動画を撮影してみたり、でした。安全に応募にたどりつくための時間を過ごします。

ぼくがコーディングしてくれている間に @darashi は応募のための文章を書いてくれていたりしました。@darashi はアップルスクリプト[2]を書くことに長けていたので、4:44の初案の時点でかなりいい感じの文章ができあがっていました。それを4人でちょっとずつブラッシュアップして、最終的に提出した文章を完成させました。

[2] Appleの商品紹介文っぽい文章のこと

(もう眠かったし朝のことはあんまり覚えていなくてごめんね)

「おやすみシャワー」を紹介します

そうしてつくられたのが「おやすみシャワー」です!(じゃじゃーん)

あなたは一日の終わりを誰と過ごしますか。
ときには見知らぬ誰かと「おやすみ」の言葉を交わすのはどうでしょう。
「おやすみ」はあなたに降り注ぐ、流星のシャワーのように。
素晴らしい一日の終わりを分かちあう、最高のおやすみ体験をお届けします。

そして次は、あなたから。

工夫したこと

作品として仕上げるときに考えたこと・詰め込んだ想いを、ちょっこし書いておきます。ぼくのメインの担当は、こういったことを考えるお仕事でした。「寝る前におやすみを交換する」というアイディア自体はそれほど尖っていないという自覚があったので、類似作品に負けないように、作品としての完成度を少しでも高めておきたいと考えました。

  • 「5分後にお返事がくるかも…」だと眠れなくなるので、起動と終了のタイミングを明確にしたい
    • アプリの「起動」から「終了」までを「戻ることのできない一本道」にした
    • ユーザ間のインタラクションは「同期」ではなくて「疑似同期」を採用した (5分前の「おやすみ」も1時間前の「おやすみ」も区別しない)
  • ユーザが必ず得をする入出力のバランスを保ちたい
    • 自分ひとり分の「おやすみ」を入力すると、5人分の「おやすみ」が返ってくる設計にした

ただ、これらの工夫って、ぼくが考えるプロダクトデザインにとっては極めて重要なのだけれど、デモだけでは伝えることがむつかしくて、ここに気付いてもらえなかったら評価は低くなるだろうなぁという覚悟もありました。審査員からのコメントを見るに、こちらの工夫をかなり読み取ってもらえたようで、とても嬉しかったです。

「おやすみシャワー」を使ってくれる人を募集します

さて!そんなぼくらの「おやすみシャワー」を使ってくれる人を、若干名、募集してみたいと思います。一日の終わりに、誰かに「おやすみ」を言ってもらいたい… そんなあなた!「おやすみ」の交換をしてみませんか。

「iPhoneを所持している」「おやすみしたい」「このエントリを読んで興味を持った」「おっさんの声が聴こえてきても平気だ」そんなあなた!声のかわいい女の子だったらさらによいです!TestFlight に登録の上、ぼくまでお声掛けください。希望者が多い場合は対応を考えなくちゃいけない事情があるのですが… ひとまずは、連絡をいただいた順にアプリをお渡ししたいと思います。

今なら、開発者4人の「おやすみ」をコンプリートしやすいですよ!おっさんボイスが好きという女の子!お待ちしています!

まとめ

@darashi がだいぶいい感じに肩から入っているエントリを書いてくれていて、出遅れた感じがあってちょっと悔しいのですが!自分のために書いてみました。

Untitled

クックパッドさん主催の第3回「開発コンテスト24」に参加しました。@darashi @kei_s @ZoAmchi とぼくの4人のチームで「おやすみシャワー」というアプリをつくって応募し、ありがたいことに特別賞をいただきました。

@darashi さんへ。いつものことながら、素晴らしいバランス感覚でプロジェクトを進行してくれて、どうもありがとう。役割分担や、リリースに向けての時間の使い方、技術的リスクの回避、などなど、道を歩いていこうとしたときに襲いくる幾多の困難を未然に防いでくれる人がいるというのは、本当に心強いことです。頼もしい安定感がある一方で、命名のときには誰よりダジャレを飛ばして無邪気に楽しんでいる最年長者の姿は、チームに愉快なリズムを与えてくれました。今回も、どうもありがとうございました!あと、PS3 もありがとうございました!本当にありがとう!

@kei_s さんへ。「これ、どうしたらいいんだろう」というときに、ササッと調査して解決への道筋を見付けてくれて、とても助かりました。その対象はプログラミングのことだけに留まらず、ツールやサービスの使い方や、他のあらゆることに対してでした。ぼくが開発に合流したときには、すでに一通りの道具は揃っていて、まるで「自分の背丈に合わせてつくられた椅子」が用意されていたような、気持ちのよい体験でした。おかげで、作品を作品として仕上げるところに集中できたので、とてもやりやすかったです!ぼくは今回、TAMIYAを着ていなくてすみませんでした…!

@ZoAmichi くんへ。ガローアまで色々と運んでくれて、どうもありがとう。急なお誘いにもかかわらず、スッとチームに参加して、朝まで作業に付き合ってくれてどうもありがとう!いなかったらアイコンとかどうなっていたんだろう… って思います。命拾いしました。実は @ZoAmichi くんがいなかったら「おやすみシャワー」という名前にもたどりついていなかったような気もしています。一緒に開発プロジェクトに携わったのは、今回が初かもしれませんね。楽しい時間を共有できて、うれしかったです!

クックパッドさん。今回も素敵なコンテストを企画してくださって、ありがとうございました!2年連続の特別賞、やってやったぜー!と思っています。それにしても、テーマの設定が本当に上手だなぁと、頭が下がります。コンテストの運営に尽力されたみなさんにお会いできること、心から楽しみにしています。表彰式では、どうぞよろしくお願いします。

相変わらず「賞金」には縁のないチームですが、前半で書いた通り特別賞はとても好きなポジションなので、今回も受賞できてよかったです!チームの4人でルンバを4つ切りにする会をやりたいと思います!(去年は iPad を3つ折りにしました)

おもしろかったら、シェアやブックマークや送金などぜひぜひお願いします。サイト運営の励みになります!

シェアや送金などお待ちしています!