Cookpad TechConf 2022
基調講演
Cookpadのミッションのおもしろさ、開発者のカルチャーをお伝えしたい
エンジニア・デザイナー両方の要素がごちゃ混ぜになっている
2017-2027 投資期間
失敗を次の挑戦につなげる
持続可能性
エンジニア組織
プロダクトのチームと横断組織
「境界を超える」
「技術を楽しむことに責任を持つ」
「作ったもので語る」
デザイナー組織
プロダクトのチームと横断組織
ポートフォリオ
スキルマップ
自分でなんとかするために自分と頼れる人のマッピングをする
ルールを最小にする、裁量がいっぱいある
TechConfのロゴに込めた想い
レシピサービスにおける持続的なプロダクト開発プロセスについて
レシピサービス開発部
大規模サービスを支える組織と開発プロセスのリデザイン
技術領域とプロダクト領域
なぜ開発プロセスのリデザインが必要なのか
2020年
アプリの大規模リニューアル
これが大きなきっかけだった
これまでにないユーザー価値を目指す
思うように開発が進まない
問題の解像度を上げる
課題と指針を言語化
歴代の責任者と振り返る
メンバーと振り返る
3つの問題
無理を強いる開発進行
技術的なコストを事業として考慮できていない
技術戦略面のミスコミュニケーション
解決へ向けて
制約
規模を考慮する
開発を止めない
スクラムの導入
検索基盤チーム
機能要件・非機能要件を1つのチームで見れるように
サービス継続確認会
プロダクトゴールや方針だけでなく、組織、システム、文化も一緒にアップデートされる環境
技術的な情報非対称の解消
巨大なレシピサービスのアーキテクチャを最高にしたい
cookpad_allの歴史
全てがあった時代
時代はマイクロサービス
BFF
なんか開発がつらい
開発の見通しが悪い
「差し込み」
各種マイクロサービスから情報をかき集めている
リソースの結合やロジックが発生
アプリケーションごとの責務が不明瞭
BFFにロジックがある
フロントエンド・サーバーサイド双方の実装のことを意識する必要がある
技術スタックの分散
アプリ向けBFFはもともとアプリエンジニアが書く想定だった
プロジェクトTakanawa
API Gatewayパターン
クライアントからのリクエストは必ずここを通る
api4-gateway
共通のGraphQLスキーマ
ロジックやデータを持たない
オーケストレーション層は薄く
難しいことは各バックエンドサーバーにやらせる
Hakoアプリの一生
ライブコーディング
Webフロントエンドパフォーマンスチューニングデモ バンドルサイズ削減編
ライブコーディング
dynamic importするのは知ってるけど画像がライブラリに埋め込まれているのはビビる
LT
AWS CloudTrailを普段の開発や調査に活用する
CloudTrailログをクエリ可能にする
S3 → Prism → Redshift
CloudTrail Lake
あるバッチジョブがどんな変更を加えたのか見たい
バッチジョブのログが不十分
レートリミットの状況や原因調査
Horizon
イギリスのオフィスに派遣
6ヶ月
時差・分業・有給
シックリーブ
OS固有の新機能をサービスに取り入れ活用していく
iOS
実際に取り入れて活用するのは結構ハードルが高い
Tips
とりあえず社内で話してみる
動くプロトタイプを作ってみる
レシピ事業のRailsアプリケーションにRBSを導入する
既存のRubyコードからRBSを生成する
protoファイルからRBSを生成する
rbs_rails
めちゃくちゃ楽しかった仕事
アプリ内ログ確認ツール