Cookpad x シリウステクノロジーズ勉強会に行ってきました

挨拶

クックパッド開発部長 井原さん
シリウステクノロジー 安藤さん
  • 会社の魅力は社員

cookpadAWS

自己紹介
ログ解析(通常)

scheduler->worker app -> db

  • カウントのキャッシュPV/UUの解析
    • ユーザの要求が理解できていない
    • 複雑な条件で解析したい
      • 無料/有料会員のアクセス頻度
ログ解析(cookpad)

scheduler->worker app -> db
|
+- Ec2/S3 Hadoop

Hadoopクラスタ
  • Amazon EC2
  • Large instance
  • 10-20 instance/day
  • Cloudera AMIをカスタマイズ
  • CDH1
  • 独自スクリプト追加
  • MySQL等書くソフトインストール済み
Hive
SELECT count(1) FROM pv_users WHERE date="20100219" and hour = "12"
  • MySQLで可能なことは大抵OK
    • DISTINCT
    • GROUP BY
    • JOIN
Hiveのメリット
  • SELECTがスケールする
質問
  • INSERTやUPDATEはスケールするのか?

クックパッドのものづくり

自己紹介
cookpad
  • 当初は有料サイト
  • 915万UU/month
  • 16-18時がpeak
  • 秋からバレンタイン
Goodはやらない
  • Bestに集中する
  • Bestとは
    • 料理が楽しくなるか(やりたい)
    • 世界一になれるか(とくい)
    • 儲かる
もの作り3原則
  • 無言実行
    • 告知なし
    • サービスを言葉にできない
    • ユーザにメリット無し
  • 言語化
    • 機能を一瞬で理解できるI/Fを
    • ユーザはヘルプを読まない
  • サービスに値段を付ける
    • 無料だという理由ではつかわれない
    • お金を払ってでも使いたいサービスが無料だと使われる
質問
  • なんで500円の有料モデルを止めたのか?

レゴとプラレールをくっつけろ(内外混成チームとものづくり)

自己紹介
シリウステクノロジーズ
チーム
  • 世界中からエンジニアがある
  • 公用語は英語
  • 20% Ph.D
コミュニケーションや文化の問題を緩和
  • 簡単な言葉
  • 主語、述語をそろえて
  • Skypeチャットで言葉の理解をバッファ
  • ホワイトボードの活用
  • 問題は仕組みで解決
  • 議論はし尽くす
スクラム
  • あじゃいるな開発手法
  • 2-4習慣で区切られた開発期間
  • 機能横断的なチーム
  • ProductBacklog
  • SprintBacklog
  • 2-4weeks
  • Daily scrum


作ったもののレビュー(Sprintレビュー)

Ridding ショットガン

自己紹介
  • Viktor(ハンガリー)さん prezi.comにいた
  • Robby(オーストラリア)さん
AdLocalの FlontEnd
  • 3層になっている
Semantic HTML
  • 最小構成のHTML
    • 意味だけを表す
  • DIVやSpanを使わない
  • インラインCSSを使わない
  • インラインJSを使わない
DRY CSS
  • CSSをモジューラー化しる
  • 画像をできるだけ使わずにCSSだけで
unobrit javascript
  • パフォーマンスは重要
  • モジュールを疎結合
    • HTTPのレスポンス
  • Firebug等で計測
  • 最適化する

Testing@cirius

自己紹介
  • Ericさん
UnitTest
  • クラスひとつに1づつRSpec
  • YUIをつかってテスト
Integration Test
受け入れテスト
  • Post-itを使う
  • マネージャとレビューして機能
負荷テスト
    • JMeter
      • Random locations
      • Random load
ユーザビリティテスト
  • プロトタイプをまず作る
  • Flashで作る
自動化に関して
  • UnitTestとIntegrationTest
  • Hudsonを使っている

新製品near nearに付いて(Android)

自己紹介
  • 橋本さん
アプリ紹介
  • おいしいレストランとか行きたいけど忘れたという経験
  • お店を検索してブックマークに追加できるアプリ
    • 住所とかタイトルを抜き出して保存できる
  • 4sq.comのようなチェックイン機能がある

Sinatra導入事例とTips

Sinatraとは?
  • SimpleなRubyFW
  • ウェブアプリを書くためのDSL
get '/' do
 "<h1>hello world"</h1>"
end

ruby hello_world.rb
http://localhost:4567
で動く

特徴
productionは
  • passengerを使うと簡単
導入事例

のアプリをsinatoraに

よかったこと
  • パフォーマンス
  • コードがすっきり
  • 簡単deploy
  • testが書きやすい
  • GAEでも簡単に動く
Railsとの住み分け
  • Rails的になっていく
  • sinatora->Railsへのコンバートが
Sinatoraに向き
  • RDBに依存しないもの

EnigmoとBuyMaAWS

自己紹介
システム
まとめ
  • S3はストレージとして使えない
  • EBSは便利
CloudFront
  • クエリストリングにパラメータをあたえてもキャッシュされてしまう

広告効果システムの開発環境

AD Counter
  • 企画6人
  • Appエンジニア2人
  • インフラ1人
Trac
  • 情報は全てwiki
    • 機能ドキュメント,障害管理
  • バグはTicket管理
IRC+Plagger
CruiseControl.rb
  • CIツール
    • レポジトリがコミットされたらビルドを行う
    • IRCに通知
開発の流れ
  • スクラム
  • スプリントで行うことを決める
  • スプリントでブランチを切る
  • タスクを分割してチケットに登録
  • 日次MTG
    • 昨日やったこと今日やること、所外
  • 週次MTG
    • 企画者も参加

超小型人間型ロボットEMMA-U0A

自己紹介
デジタルまないた
  • まないたに画面が付いている
  • 料理のしかたを教えてくれる
  • みじん切りの回数表示
デジタルまないたTODO
  • ネットワークからレシピを取得
  • 料理ログからお薦め
  • テレビが見れる
  • 重さがはかれる