毎日の料理を楽しみにする挑戦をし続けた20年
- 橋本 健太
- CTO ~2014
- クックパッドスペイン社長 ~2017
クックパッドとは
- 毎日の料理を楽しみにする会社
- クックパッドはテックカンパニー
プロジェクトの進め方
クックパッドの “体系的” サービス開発
- 新井 康平
サービス開発の難しさ
- ゴールが分からない
- ユーザの反応をみないと
- 製品開発ならゴールがわかりやすい
- BMLループ
- Build
- Measure
- Learn
- https://www.amazon.co.jp/dp/4822248976/
Build
- 不必要に大きくしてしまうと検証したいことがぶれてしまう
Measure
- 複数のA/Bテストが衝突して計測がぶれる
- 正しく計測できているか
Learn
- 出てきた数字をどう解釈すれば分からない
- 数字は出たが学びを得られない
失敗しないために
- 前から順番にループを考えない
- 逐次的にすすめると手戻りが起きる
- 最初にサイクル全体を設計するべき
- サービスに対する理解(施策結果の予想)と現実のギャップ
フレームワーク
- 価値仮設シート
- chanko
- EazyAB
- Hakari2
- papa dashboad
- Report.md
- プルリクでレポートを出す
- 知見をリポジトリにためる
- http://www.report.md/
クックパッドクリエイティブワークフロー
- 辻 朝也
開発チーム構成
- 1サービス140人
- 2w~1m
- 利用シーン別に区切ってその中に複数チーム
- 投稿
- 検索
- 記録
事例
施策・体験
- 目的と仮設を明確にする
デザインレビュー
- なぜそういうデザインにしたか
- チーム内外でレビュー
- issueに蓄積
施策の指標とレビュー
- ログについても全員で話す
テスト
- チーム内で手動テスト
- エッジケースも含めて
- 問題出たらissueに一覧化
- デザイン上の細かい考慮漏れ
- チェックシートがある
- issueにチェックリストを入れる
- http://transitkix.hatenablog.jp/entry/2017/06/18/015857
リリース後分析
- 振り返る人によってまちまち
- 見てもキャッチアップに時間かかる
- 必要な情報が一箇所にまとまってるようにしたい
デザインリリースマネージャー
- バージョン単位でUI変更ある箇所を把握しデザイン周りを一貫して管理
What/How to design test automation for mobile
- 松尾 和昭
- appiumのメインコミッター
テストを自動化したい
- 何をテストしたいのか噛み合っていないといけない
- テストに関して合意形成を作らないといけない
- http://techlife.cookpad.com/entry/2016/08/13/test-size-for-mobile
SPLIT
Scope
- テストの範囲
Phase
- 開発中のテストなのか
- 本番稼働中のテストなのか
Level
- どこまでテストを進化させるか
- 何をテスト?
- どう実装?
- どう計測?
- どこまで自動化?
size
- テストをどう切り分けるか
- UnitTests
- IntegrationTests
- UITests
- http://techlife.cookpad.com/entry/2016/08/13/test-size-for-mobile
Type
- どのような目的を持ったテストなのか
- ロジックが正しく動いているかのテスト
- パフォーマンスのテスト
- UIのテスト
- 縦軸
- BusinessFacing
- TechnologyFacing
- 横軸
- GuideDevelopment
- CritiqueTheProduct
Rubyの会社でRustを書くということ
- 小林 秀和
クックパッドで使ってる言語
- ruby on railsが多い
- ミドルウェアはjavaとかgoとか
- dockerでパッケージングしてる
- push通知配信基盤をRustで書いた
クックパッドのpush通知
- 都度配信
- 一斉配信
クックパッドのアプリ構成
- railsのモノリシックだったけど小さいアプリはマイクロサービス化してる
- push通知基盤貧弱だとダメになってきた
新しいpush通知配信基盤
- 受信設定クエリ
- ARNクエリ
- SNSに通信
- こうすることでユーザIDとメッセージ放り込めば通史が行く
- 数百万件通知
- rubyじゃ向いてない
- そこでrust
- データ競合の可能性のあるコードをコンパイルで検出
- 速度安全性並行性
Rustのいいところ
- マルチスレッドが安全
- 安心して高速化に取り込める
- 汎用ライブラリ化しやすい型システム
cookpad storeTV 〜クックパッド初のハードウェア開発〜
- 今井 晨介
StoreTV
ハードウェア開発
- ソフトウェアと同じようにサイクルを回す
- サイクルは長めになる
- 第1サイクル
- 最小価値検証
- 第2サイクル
- スケール
- 第3サイクル
- 収益化
第1サイクル
- 最小価値検証
- ストアに電話調査
- アプリ利用率
- 売上
第2サイクル
- 何をやって何をやらないのか
- 得意なことは自分たちで、不得意なことはひとりでやらない
第3サイクル
- 広告の追加
- アプリのバグ対応
- 長時間可動によるバグ
- 今までやってる開発と違う観点
- 負荷検証
- 顔認識も入れてどれだけの人に見られたか情報を集める
Challenges for Global Service from a Perspective of SRE
- 渡辺 喬之
クックパッドのグローバル・サービス
グローバルサービスの成長
- 対応言語ここ1年で15 -> 22言語に、58カ国->68カ国
- 料理は地域と密接
グローバルサービスにおけるSREの課題と挑戦
特定の国のユーザ体験が悪い
- その国に住んでないので同じ環境でテストできない
- 68カ国あるから直接いくのは大変
- 定点観測した
- Catchpointを使った
- 米国から遠いとレスポンス悪い
- サーバは米国と日本
- Fastlyを導入した
イベントがとにかく多い
- 祝祭日などのイベントが地域によってある
- そのタイミングでアクセス増
- 日本だとバレンタインでアクセス急増
- 展開国数が増えるとイベントも増えて負荷も増
- 全てのイベントに都度対応は難しい
- 時差もあるし国もどんどん増えてるし
- DBはAurora
- Dockerアプリ開発環境の提供
デプロイのオペレーションコストが高い
- 日本で可能なことが海外ではできないこともある
- 長時間停電とか
- 世界のどこからでもデプロイできるようにしたい
- Slackからデプロイできるように
- 誰がやっても同じようにできる
toilが急増する
- toilにあてはまる業務
- 手動対応
- 自動化余地がある
- 繰り返し発生
- 発生してからじゃ遅い
- toilが急増してやりたいことができない
- nginxとomniauthによる社内ツールアクセス制御
動き出したクックパッドのCtoCビジネス
- 村本 章憲
C to Cの新サービス
- komerco
- モノで毎日の料理を楽しくする
- 食器
komerco
- EC
- product
- media
- story
- cookpad
- recipe
komercoの技術
- サーバーレス
- firebase
- 開発をはやくすることが大切
- firebaseがバックエンドで一番はやくつくれる
- http://techlife.cookpad.com/entry/2018/02/09/102554
firebase
- 高速
- APIを作らなくていい
- セキュリティ
- オートスケール
OSSとして公開
Solve "unsolved" image recognition problems in service applications
クックパッドのR&D
- いろいろやってる
- その中で今日は画像分析
画像分析
- 機会は人間より優秀になっている
- ただし理想的な状況下であること
- ポイント
- 適切なラベルの付与
- 適切なカテゴリの設計
- closed set
- 実サービスで解くべき問題が何なのか
- 間違ってることがおおい
- trial&errorで探っていく
- 画像分析に限った話ではない
事例
料理きろく
- ユーザの端末から料理の画像だけを引っ張り出す
- 解きたい問題がなんだと思ってたか
- 画像が料理なのかどうか
- やってみると考える事とても多い
モバイルへの移行
- 今後対応していく
Beyond the Boundaries
- 成田 一生
料理とインターネット
- インターネットがないと本を買うとか親から引き継ぐとか
- インターネットによって広く共有できるようになった
クックパッド2018の技術スタック
- rails
- go
- rust
- ハイパフォーマンスを安全に
- swift
- kotlin
- javaから移行
- ReactNative
- プロトタイプ向けにつかってる
- firebase
- ECS
- Docker
- Hako
- デプロイツール
- rubyのコントリビューターもいる
- 自分たちの使ってる技術が廃れないように自分で育ててく
文化
- Beyond the Boundaries
- 境界を認識
- 自身の役割
- 自身の技術力
- 人が増えて役割が特化
- 役割を飛び越えていろいろやたせたい
- 社内hackarade
テックリード制度
- 部門内のミニCTO
- 技術選定
- コードレビュー
- メンタリング
- エンジニア評価