2015年3月26日木曜日

初代プロポソン優勝チームに選ばれました


プロポソンは前回のteian-labからはじまった活動だ。
参加してみて思ったのは、これは世界に発信していいくらい、楽しくて役に立つすばらしい活動だ。

-----
ハッカソンをもじって、提案(”proposal")とマラソン(”marathon”)を合わせた造語。
共同作業によりRFPを作ったり提案書を作ったりして学びあいます。
-----
前回は、RFPをつくる内容だったんだけど、今回は、提案コンペ。
で、私の所属するチームが優勝した!

これから、プロポソンが世界に広まって、すばらしい提案や提案メソッドが生み出されていくかもしれない。
けど、初代プロポソン優勝の栄冠は、もう、誰も得られないのだ!

プロポソンの流れ

次の流れで、チームに分かれて提案コンペをする。
RFPがあって、きちんと評価基準に沿って評価をして、優勝チームを決めて講評をしてくれる。
これは、もう勉強会のレベルを超えていると思う。

  1. RFP説明会
  2. 1枚提案作成
  3. 発注者への質疑応答
  4. 1枚提案作成(続き)
  5. 提案プレゼン(3分)
  6. 評価・講評


設定

今回は、架空の都市松野市の「松野市市長室ホームページリニューアル」がお題だ。
RFPは次の構成でA4で1ページ強の簡単でざっくりとしたもの。

  • 件名
  • 開発期間
  • 目的
  • 要件(5項目)
  • 提案方法
  • 審査方法
  • 技術点評価基準(7項目)

登場人物は次のとおり。
講評のときに教えてくれたんだけど、キャラ設定や採点基準がきっちりと作りこまれていて、リアリティがすごかった。

  • 市長
  • 情シス課長


チームと提案支援部門

チームは1チーム約5名で3チーム。
チーム分けのフェーズはなく、単純に来て座った場所がそのままチームに。
あと、teian-lab主催者の式町さんを提案支援部門として各チーム1回だけ支援依頼をすることができる。
式町さんの使い方も重要なポイントだ。


発注者への質疑応答

質疑応答は合同方式。
今回の質疑応答概要は次のとおり。

Q. 市長が伝えたい松野市の魅力は?
A. よくわからない。

Q. 最終決定は市長がするのか?
A. RFPに書いてあるとおり。

Q. 運用は誰がするのか?
A. 市で運用している。トラブルがあると夜も起こされるので、それを避けたい。アクセス解析はしてない。

Q. 予算は?
A. キャップがあるので、その範囲で。厳しい情勢なので、コストが低いものがよい。

Q. 問題が顕在化している。利用者からの意見は?
A. 内容をアップデートするが、html書いて、ftpでアップロード。遅いのでこれが課題。

Q. 市長室のHPをつくっている目的は?
A. 市長のメッセージを市民に伝えたい。

Q. 市長のメッセージは住んでいる人?PR効果?
A. 住んでいる人には市長だよりがあるので、市の中には閉じていない。

Q. 現在のコンテンツ
A. 市長のメッセージ。ブログ。ケータイでみるとわからない。

Q. 市長の任期
A. もうそろそろ。次期出馬の意向あり。


プレゼン

Aチーム(私が所属)


Aチームは、式町さんの著書「受注を勝ち取るための 外資系「提案」の技術」の1枚提案の例にそってブレストしながらホワイトボードに整理していった。
最終的に、時間的に余裕があったので、プレゼンの練習もできた。
内容の良し悪しは別として、他のチームよりも効率的に作業が進められたおかげで、プレゼンも3分ピッタリにまとめることができた。
あと、プレゼンをチーム全員でやったのが好評だった。

ちなみに、式町カードは、ひととおり整理した後にコメントをもらう形で使った。
概ね問題なしで、足した方がいい点を教えてもらえたので、自信を持ってプレゼンに挑めた。

Bチーム


Bチームはアイディアがたくさんでていた。
プレゼンもうまくて、話がとてもおもしろかった。

Cチーム


Cチームはとにかくプレゼンがうまかった。
内容もスマートにまとまっていた。


評価・講評

講評がとてもすばらしかった。
市長や情シス担当のキャラ設定もしっかりとなされていて、RFP説明会や発注者への質疑応答で実は様々なヒントがだされていたことも解説してくれた。
講評を受けて、参加者みんな「なるほどー」と納得。
Aチームがお客様のホットボタンに一番近い部分を押せていたので、優勝となったわけだけど、ヒントからきちんと分析できていたわけではなく、たまたまの部分が大きい。

感想

先日、入社依頼の付き合いの先輩(今は上司)に、「よくできた提案書だ」と褒められた。
その先輩には、文章力、わかりやすく伝える技術、相手の立場で考える能力、どれをとってもまるでかなわない(IT技術ではまったくもって負ける気しないけど)。
どこまで本気で褒めてくれたのかは分からない。
でも、少なくても自分でも提案スキルが上達している実感がある。
teian-labに参加する2年前までは、提案書作成には必ず徹夜がつきものだった。
でも、teian-labに参加してから提案書作成で徹夜したことはない。

それは、間違いなく、式町さんとteian-labのおかげなのだ。
恥ずかしいので言わなかったけど、プロポソン優勝、すごーく嬉しい!!!

2015年3月15日日曜日

プライベートハッカソンやりました

2015/3/14-15@株式会社嗚呼社

「はじめてのハッカソンVol.8」に参加したときのチームメイトの安田さんと懇親会で盛り上がり、「プライベートでガチのハッカソンやるか?」と言われたので、のこのこやってきた。
結果、

完全燃焼!
達成感満載!!

でした。

3/14 16時過ぎ


安田さんと16時に約束していて、嗚呼社に着いたのは16時過ぎ。
ところが、安田さんはまだいない。
とりあえず、勇気を出してベルを鳴らしたら、何やらDIY中の井上さんがでてきてくれて、嗚呼社に侵入成功。
しかし、一人でただじっと待つ。


3/14 17時過ぎ


安田さんがようやく戻ってきて、とりあえずアイディア出し。
安田さんはハッカソンなんかでパッと使えるフレームワークみたいなのをつくりたいとのこと。
私は、エンジニア同士が何の分野(プログラム言語など)で誰をリスペクトしているかをビジュアライズするサービスをつくりたいと思っていた。
結局、私の案に安田さんがのっかり、その線でいくことに。

このサービスは、データが蓄積されると、リクルーティングなどに大いに使えるが、エンジニアには登録するインセンティブが全くない。
なので、サービスとして成立しない。
そこで、安田さんのアイディアで、最近、利用者が急増しているQiitaのデータを使うことに。
うまくいけば、ビジュアライズだけでなく、ユーザーがストックしている記事のユーザーやタグから、ユーザーにリコメンドもできる。


3/14 18時過ぎ


嗚呼社の白井さん、井上さんが合流。
アイディアを共有し、インフラなどの準備。
チーム編成はこんな感じ。


  • 安田さん:デザイン
  • 白井さん:インフラ+バックエンド
  • 井上さん:フロント全般
  • 板垣:D3.jsでビジュアライズ


白井さんが高速でGitを用意してくれて、とりあえずスタート。


3/14 20時過ぎ


嗚呼社の社食?をごちそうになる。
相当うまい。

3/14 21時過ぎ


ここから長い戦いがはじまる。
QiitaのAPIを叩きすぎて止められたり、悪戦苦闘しながら作業を進める。


3/15 3時過ぎ


夜食タイム。
またもや、嗚呼社の社食?をごちそうになる。
チャーハンをいただいた。
これまた、うまかった。
きっと嗚呼社はIT屋をやめても飯屋で生きていけるだろう。


3/15 10時過ぎ


安田さん、白井さんが脱落する中、井上さんが孤軍奮闘。
約18時間の戦いを終えて、10時過ぎに完成!
出来栄えは大満足!!


完成品


画面にQiitaのユーザーIDを入力して、[GO!]ボタンをクリックすると、そのユーザーがストックしている記事についているタグのTop10が表示される(アニメーションでほわっと)。
円の大きさはストックの数が大きいほど大きくなる。
色は、有名なものはロゴのカラーなどを設定している。


円をクリックすると、そのタグがつけられたストックのタイトルとユーザーIDが表示される(アニメーションでにょろっと)。


タイトルをクリックすると記事にとび、ユーザーIDをクリックすると、そのユーザーがストックしている記事についているタグのTop10が表示される(アニメーションでふわっと最初に戻る)。
つまり、延々とQiitaでのつながりをたどっていけるのだ!

積み残し


  • Qiitaのアクセス制限については解決していない。大量にアクセスするとまた止められてしまう。
  • ユーザーにリコメンドする機能は完全に未実装



    感想


    まさに完全燃焼。
    とてもいいものができて、達成感でいっぱい。
    このサービスは、きっと嗚呼社がリファインして世の中に出してくれるはずだ。
    楽しみ!

    あ、あと、飯がうまかった。
    嗚呼社の皆様、本当にありがとうございました!!!

    2015年3月8日日曜日

    「はじめてのハッカソンvol.8」に参加しました(3回連続3回目)


    まず、「はじめてのハッカソンに何回も参加していいのか問題」について。
    主催者のみまさんがはっきりと「何度でもご参加ください。」と明言しているのでかまわないのだ。
    さらに、懇親会で「キャンセル待ちが多いので、少し遠慮しようかと迷ってます。」と言ったところ、「気にしすぎ(^^)」と笑われた。
    ということで、Vol.9も募集開始しているので、こんなブログを読んでいる暇があったら早いうちに申し込むのだ。

    アイディアに悩む


    今回のチームは、若者3人におじさん2人のチーム。

    • 辻さん(PHP勉強中、学生)
    • えばたさん[女子](モバイルアプリはつくったことある、学生)
    • いしざわさん(フロントエンド、金髪)
    • 安田さん(デザイン、おじさん)
    • 私(広く浅く、おじさん)

    今回は、アイディアだしに対するアプローチがみんな違うのがおもしろかった。

    辻さんはスマートだ。
    きっと、頭の中にはファシリテーションという言葉がはっきりと書いてあったと思う。

    えばたさんは自由だ。
    後でわかったことだけど、さすが白井チルドレン。

    いしざわさんは身軽だ。
    シンプルにものごとを捉える。

    安田さんはおじさんだ。
    余裕がある。

    そして私もおじさんだ。
    つまらない。

    結局、自由人えばたのラーメン二郎愛といしざわさんのランキング愛を合わせて、今回のテーマをラーメン二郎ランキングにした。

    イノベーションはどこから起こるのか、共創をつくりあげる共感はどのようにして得られるのか。
    野中郁次郎いわく、それは共通善だ。
    共通善の根源は個人の思いであり、主観だ。
    共通善を持ち、言語化してコンセプトを作り上げ、共感による仲間をつくり、ビジネスモデルを構築してサステイナブルにする。
    コンセプトは動いているうちにできあがるもので、最初からあるわけじゃない、デザイン思考だ。

    「はじめてのハッカソン」はゆるい。
    イノベーションとか共創とか言ってはいけない(そんなことはないか ^^;)。
    だけど、もう少し、人の思いを聞きだせる力を持てるといいなぁと思う。


    非同期通信に悩む


    二郎ランキングに決めた後は、つくるものはすんなり決まった。
    ラーメン二郎の全店舗について、Twitterからつぶやきをとってきて、エクシング言語解析APIでネガ・ポジ判定をする。
    ポジつぶやきが多い順に店舗をランキングして、つぶやきも表示する。

    1. 二郎の店舗名一覧を持つ
    2. 「二郎XX店」というキーワードでつぶやきを全ての店舗分とる
    3. とってきたつぶやきを全てエクシングでネガ・ポジ判定する
    4. ポジつぶやき数を集計してランク付けする(ソートする)
    5. jQueryで画面に反映する

    簡単にできると思った。
    Twitter APIは使ったことあるし、エクシング言語解析APIは前日の夜に試していたので。

    しかし、ハマってしまった。

    こんな感じのデータを用意して、ループでtwitterになげて、そのコールバックでエクシングにまたループでなげる。

    var shops = [
    {name: '三田本店', rank: 0, tweets: null},
    ...
    ];

    発生した問題は次の3つ。

    1. とってきたつぶやきをループのインデックスでshopsに入れようとしたとき、非同期なのでデータが返ってくる前のインデックスが変わってしまうのでおかしくなる
    2. 全部データができた後に、画面に表示したいけど、非同期なのでタイミングが制御できない
    3. Twitterに負荷をかけすぎて、止められてしまう


    対策として、次の3つをした。
    とにかく時間までに動かそうということで無理やり。

    1. twitter apiへの通信をasync=falseにして同期通信にする
    2. データが全部返ってくるまで画面に表示しないようにsetTimeoutで待つ(最悪!)
    3. Twitterに負荷をかけ過ぎないように取得するつぶやきを20件にする

    本当はどうすればよかったのかというと、バッチ処理にすればよかったと思う。

    どちらにしろ、Twitterは1回で100件までしかつぶやきがとれないので、ため込む必要がある。
    店舗ごとにプロセスを変えれば問題1はなくなるし、バッチなので問題2もなくなる。
    前回とったidを保存しておけば、そのid以降という指定ができるので問題3もなくなる。
    つぶやきはリアルタイムで最新のものを表示してもいい。

    Web APIというと、リアルタイムにマッシュアップというイメージがあったけど、蓄積したり集計したりする場合はやはりバッチ処理にした方がいいのかな。

    誰か、ベストプラクティスを教えてほしい!


    成果物


    結局こんな感じになった。
    デザインはお任せで、デモの直前にはじめてみたんだけど、二郎っぽさがでてていいなぁと思う。


    ソース


    ひどいなぁ。。。

    https://github.com/itagakishintaro/jirotter

    積み残し


    • もっと見るのページ
    • 3位以降のページ
    • 店舗の選択
    • 自分のお気に入り店舗の設定

    若者とふれあう


    とてもおもしろい若者と懇親会で話をできた。
    10万人以上のユーザーを持つサイトを1人で構築・運営している24才の若者。
    自分のことをあまり話さない謎の男だ。

    彼に、上述の野中郁次郎の話をしたら、こんなことを言っていた。
    わかります。でも、ショボイと思ってもアイディアがあったらやってみたらいいと思います。
    軽やかだ。
    みんなイノベーションとか言い過ぎというか、構えすぎだよね。
    この手の考え方に年は関係ないと思うけど、やっぱり若々しさを感じた。
    本当は色々ほじくりたいと思ったんだけど、自分のことを話すのはあまりすきじゃないようだったし、変なおじさんに絡まれたと思われたくないのでやめといた。