クックパッドの24contestに参加しました
クックパッドさんは仕事でもプライベートでもお付き合いがあるのですが、そのクックパッドが24時間限定の開発コンテストをやるということで参加しました。
未踏やってる時にどうしてもGAE/JRuby + twitterアプリをやりたかったのですが、それを便乗してやってしまおうということです。
(ちなみに未踏は無事終了しました。)
ネタ
コンテストの課題が「朝起きてから学校や会社に行くまでの時間をより便利にするためには」でした。朝に役立つtwitterアプリ、、ということで最初に思いついたのが、朝気になるのは夜流れてしまったTLの内容だよね!ってことで、夜中の自分のTLを保存できるアプリがあれば嬉しい人いるんじゃないかということで、安易に「丑三つったー」という名前をつけて開発を始めました。
開発した時のメモ
開発時の設計メモをさらしてみます。時間がなくて妥協したものも多いですが、実装もこんな感じになりました。
■仕様
必要
・寝てる間のtweetを保存しておいて起きたときに見るツール
・「おやすみ」ボタンから「おはよう!」ボタンまでのtweetをためる
・デフォルト昨日のが見れるあるといい
・今までのリンクもあるとよい
・認証はgoogleで
・twitterの人で絞り込めるといいなぁ
・iPhone用画面とか■設計
<アプリ構成>
・GAE/J with appengine gem
・sinatra<動作>
・tweet収集部はcronで1hに1回
- limit 24h
・Web画面では、「おやすみ」か「おはよう!」ボタンがあって、
おはよう!したら昨日の一覧が見れる。<モデル>
・user has n tls
- login
・tl has n tweets
- start
- end
・tweet
- twitterに準じる http://apiwiki.twitter.com/Return-Values
作業メモ
$ sudo gem install google-appengine
$ appcfg.rb generate_app ushi3tter
$ cd ushi3tter
Gemfileとconfig.ruでsinatraを有効に
Gemfile
# Critical default settings: disable_system_gems disable_rubygems bundle_path ".gems/bundler_gems" # List gems to bundle here: gem "dm-appengine" gem "sinatra" gem "json-jruby"
config.ru
require 'appengine-rack' AppEngine::Rack.configure_app( :application => "ushi3tter", :precompilation_enabled => true, :version => "1") require 'app' run Sinatra::Application
app.rbに実装
モデルとかパスのハンドラとか書く。こちらを参照> ushi3tter/app.rb at master · fujibee/ushi3tter · GitHub
テスト!テスト!!テスト!!!
$ dev_appserver.rb .
ある程度できたらgoogle app engineにアップロード
$ appcfg.rb update .
また実装とテストに戻る
はまりポイント
主にappengine-jrubyではまったんですが、datamapperでモデルにidをSerial型で定義していないと変なエラーが出ます。(30分くらいはまり)
あと、開発環境でモデルが中途半端にできてると壊れるので、clearするような仕組みがあるといいかもしれません。
最大のハマリは、appengine本番にアップしたあと直後は、必要なindexがappengine上で作成されていないため、エラーになります。。
とりあえず必要なindexをgoogleに作成しておいて、開発を進めるのがよいようです。
できたもの
現時点では完成度低いです。。ソースはgithubにも公開してます。
感想
まずはこのような機会を与えてくれたクックパッドさんに感謝です。
で、このコンテスト127人もの開発者が参加したとのことで、twitter上でその人達が開発している様子が伺えて、それがとてもおもしろかったですね。
もし今度やるときは、もっとネタを練って少しは入賞に手がかかるようにしたいですね。
おまけ
後日、Asakusa.rbで@urekatさんに会っていろいろお話を聞けました。日本のappengine-jrubyの第一人者です。
@masui さんがまとめサイトを作ってくれています。 24contest / Index
参考にしたURL
- Google Code Archive - Long-term storage for Google Code Project Hosting.
- http://apiwiki.twitter.com/Twitter-API-Documentation
- appengine-jrubyで簡単GAE/JRuby開発 - しばそんノート
- Google App Engine + JRuby + Sinatra + Ruby Twitter Gem でTwitter APIを利用したWebアプリを作る - 愛と勇気と缶ビール
- GoogleAppEngine/JRuby+RailsでscaffoldからTwitterBotまで - urekatのスカンク日記3