子供の時から料理が好きだったのですが、ふと料理をする時の思考と、開発する時の思考が似ているなと思ったので、備忘までに記録しておくことにしました。
ただし、プロの料理人ではないので、プロセスが正しいことを主張するわけではなく、あくまでも自分自身の思考の整理と考えています。また複数人で料理したことはないので、今回は一人でフルスクラッチで開発する時の場面と、一人で料理をする場面と照らし合わせてみました。結論からすると、共通点が多いとは思ったものの、家庭料理との完全には一致させるのは、さすがに無理があるなと思いました。しかし、非エンジニアにとって、アプリ開発やシステム開発の、大雑把なプロセスを理解するには、少しは料理のプロセスが参考になる部分があるのかなと思いました。
- 料理を考える前に、まずは冷蔵庫にある料理素材をチェックする
現場や関係者からヒアリングし、現状のアクターやデータをリストに出し、それらの関係性を紐解く
- その素材が使えそうな料理の候補を挙げる
日々調査しているトレンドの中から、近しいサービスやシステムをピックアップする
- 最近食べた料理とか天気などを踏まえて、家族や仲間など、食べる人が、その料理を食べたいと思うか創造してみる
プロダクトのオーナーや、その関係者及びステークホルダーに、ピックアップしたサービスやシステムの話をして、期待値が、どの辺にあるかを創造してみる
- 料理の候補と、家族が喜ぶ姿をマッチングさせた後、さらにもっと食べる人が喜びそうなアレンジを考えてみる
ベースとなるサービスやシステムのあたりをつけた後、どうやったら期待値を超えることができるかアレンジを考えてみる
- アレンジを加えた料理からレシピや調理方法の仮説を立ててみる
料理の仮説が完成したら、PoC(Proof of Concept)をして、グランドデザインやコンセプトを作る
- 完成した料理や、食事をするイメージをメモなどに書く
UXを言語化し、ワイヤーフレームに落とし込み、システムアーキテクトや開発手法を検討し、基本設計や概算見積もりを完成させる。
- レシピの仮説を立てたら、足りない材料をスーパーで買ってくる
プロダクトのオーナーとすり合わせが終わったら、不足している人材やツールや素材などの調達を開始する
- 材料を買ってきたら、下味となるスープや出汁を作る。
調達が完了するまでに、出来そうな部分から、開発を進める。まずは、プロダクトのオーナーに感触をつかむためのプロトタイプの完成から始めてみる
- 野菜や肉を切り、すぐに調理できる状態にしておく
マイクロサービスアーキテクチャにしていく場合は、主要なものを作っておき、ざっくり確認できるプロトタイプをすぐに作れるように準備しておく。特にUIはクライアントから分かり易いフィードバックをもらえるので、先行して進めて、早めにフィードバックをもらっておく。
- 調理の中間成果を回収できる容器や、完成物を盛り付ける食器を用意する
納品作業がある場合は、納品条件や成果物のフォーマットを確認し、準備を進めておく
- 調理を始める前に、素材を入れる順番のイメージトレーニングをする
ガントチャートやクリティカルパスを書きながら、工程の順番を確認し、納期に間に合わなそうであれば、スコープの調整や仕様の調整を行う
- 調理をスタート
あらかじめ開発した中間成果物を結合しながら、全体のサービスへと近づけていく。
- アク取りなどをしたり、火加減が適切か?素材が混ざった後の味は丁度良いか?など、状態を監視する
それぞれを結合するたびに、仕様の確認を行い、抜け漏れがないかなどの結合テストを行っていく。ある程度の中間成果物で、プロダクトオーナーへのレビューを行っておく。
- 調理が完成したら、用意した食器に、盛り付けを行う
全体のUX/UIを、仕様書と照らし合わせながら、予め考えていたものと同じになっているかを検証していく。プロダクトオーナーからのチェックも当然行っておく。
- 食卓を綺麗にし、料理を盛った食器などを並べる
ローンチに向けて、成果物の整理や、仕様書や納品物の整理を行っていく。また導入に向けたマニュアル作成や説明会など支援も行っていく。
- 食べる
ローンチ
- 料理はどうだったか?どんな体験だった?を食べる様子から、感じ取る
PV数などの定量的な観点や、ユーザーからのクレームなどの定性的な情報をキャッチし、課題を整理していく
- 次に活かすポイントを記憶する
ある程度、フィードバック情報が溜まってきたら、KPTを整理して、改善点を考える
と、ここまで書いてみましたが、さすがに家庭料理とアプリ開発のプロセスを完全にマッチングさせるには、さすがに無理があるなと思いました。ホワイト・ブラックテストなど総合テストや品質管理の工程など、マッチングが難しい部分があります。
他にも、
・デザインの工程が、アプリ開発の場合は、開発中にも同時並行で行っていくが、料理は、調理中のデザインという要素は、それほど多くない
・同じくテストの工程は、アプリ開発の場合、単体テストや結合テストを多めに行うことができるが、料理の場合は、中間でのテストというのは難しい
などです。
今回は、一人で開発する工程でしたが、これをチームに置き換えると、役割分担が生まれ、さらにチームビルディングや、進捗の管理、さまざななコミュニケーションが発生します。同じようにコース料理は、複数人の料理人がいろんな役割分担をしていき、お客様に喜ばれるサービスを考えるものと思われます。アプリ開発と料理は、完全には一致しないものの、提供する人が喜ぶものを創造するという意味で、共通点があるのはないでしょうか。