Mashup Award 10 でテーマ賞を頂いた作品の作業ログさらす

なに作ったの?

KOKOROTTE という作品を作りました。下記のAPIを利用して、ハンズネットの商品を「感情」で検索出来るサービスです。

f:id:macoshita:20141101130359p:plain

なに貰ったの?

ハンズラボ株式会社様のI ♥Shopping賞を頂きました!

まぁ……お察しの通り、この賞を狙い撃ちにいった作品でした。ちなみにテーマ賞は5万円とのことで、東京までの旅費を稼げた格好となりますw

構成まとめ

  • さくらクラウド CentOSサーバ(クーポン利用 20,000円)
  • node.js(forever) + express + nginx + mongodb

作業ログ

10/22(水)

  • 普通に仕事
  • 昼休みにひらめく
  • ハンズの商品情報をなずきSAに噛ませてみて、コンセプトが実現可能かをしらべる
    • なんかいい感じの結果になった。いける!と思ったのはこのあたり
  • ハンズ商品情報のAPIとかないのか? と思って調べる
    • ない
  • 主に下準備

10/23(木)

  • 午後は夏休み(遅い)
  • 本来なら明日が提出日だったが、10/26(日)まで伸びた。
    • (ぶっちゃけ今回一番ついてたのがコレ。)
  • さくらクラウドのクーポンを貰ったので、それを使ってCentOSサーバを建てる
  • デプロイとか考えたくないと思い、サーバにrootで入ってそのまま書くことに(ひどい
    • githubにおいてあるdotfileをペイッと持ってきてゴリゴリ書き出す
  • 言語はnode.js。今回はrubyとかでもよかったかも、でも時間ないから一番なれてる言語で。
    • 時間ない範囲でクラサバ両方書くことになったら、やっぱ言語の切り替えいらないのはありがたい。
  • なずきSAを叩くコードを作成、完成
  • hands.net用のクローラーを書きだす

10/24(金)

  • 1日夏休み(遅い)
  • データをどう保持するか悩む
    • とりあえずあんまり使ったことないけどmongoをインストールしてぶっこんでみる
    • いい感じに記事データを保存できた。
    • mongoよくしらないけど結構無茶なクエリでも行けるんでしょう? ってことで何も考えないことにした
    • (今思うとmongoの選択は大正解だった。一番なれてるのはMySQLだけど、nodeで趣味レベルのもの作るならmongoだわ)
  • handsクローラ回して記事を取得、mongoにデータを貯めつつ、mongoからデータを取り出してなずきSAを叩いて感情データ付与してupdateするような流れを作る
    • クローラと感情データ取得はそれぞれ別プロセスで回す
      • なずきSAのほうが圧倒的に速度が早いので、なずきは定期的に手動で叩くことに笑
  • handsクローラをforeverで回して眠る
    • 取得速度は1ページとれたら次の1ページという感じにしておいた(並列しない)

10/25(土)

  • 起きたらクローラが途中で止まってた。
    • 多分UAの問題。怒られるような速度じゃないと思う……
    • でも1000点分商品が取得できて、コンセプト実現には十分だったので、ここの部分は深入りしないことにした。
  • そして、友人の結婚式で名古屋へ(ほぼ作業できないのは確定してた)
  • PCは一応持っていったので、行きの高速バスで作業
  • iPhoneテザリングでさくらクラウドSSHでアクセスして作業してたけど、さすがに電波状況がつらい
  • つながらなくなる前に、macにデータをもってきてmacで作業
    • あとはmongoからデータ取得&view作成の段階だったから、デプロイで詰まることはないと判断(事実詰まらなかった)
    • mongodump コマンドについて知る。
  • mongoのクエリについて学ぶ "senses": { $elemMatch: { "senseId": { $in: senseIds } } } こんなクエリが必要で、$elemMatchも$inも聞いたことないようなレベルだったので、なかなか大変だった
  • expressjsでゴリゴリ書き出す。
  • 並行して名前を検討。kokorotte(ココロッテ)に決定。ココロ + 手(hands)で響きがかわいい感じのやつに。
  • バスが名古屋に到着。移動して、式場近くのコメダで作業。
  • まぁ、bootstrapだよね……ってことで、jadeのbootstrapテンプレートを使ってつくりだす
  • flickrのCCライセンスの画像を素材として集める
  • トップページのレイアウト作ったあたりで時間切れ。
  • 式場行って受付やったりしてたので、この日はもう作業できず。

10/26(日)

  • 遅めの起床
  • 検索結果のページを組み始める
  • 商品画像は使えないので、文字だけでも映える方法を考える
    • 「楽しい」「うれしい」「おもしろい」っぽい部分の文章をハイライト表示したり
    • ページトップにそれっぽい画像と文言をおいたり
  • 次へ・前への実装
    • mongoのskip, limitを使うと割と楽だった
  • ドメインを取得
    • お名前.comでパパっと。
    • .coドメインが安くてなんかいい感じだったので。自動更新切ってあるから1年後には消滅してしまうかもしれない(
  • 審査提出。

ざっとこんな流れ。

ソースコードとかはそのうち共有します。IDとかPWとかベタ書きなのでめんどくさい、、