おいしいカレーのつくりかた
*これはKCS AdventCalender2019 15日目の記事です*
こんにちは.アドベントカレンダー遅延常習犯,いくぴー(Twitter: @190ikp)です.
前回に引き続き書く羽目になりました.修行だと思って書いていきます.
はじめに
「おいしいカレーのつくりかた」とは何か?
曰く,「これを制するものはレポートを制す」
曰く,「これを制するものは就活を制す」
曰く,「これを制するものは設計を制す」
というわけで今日は「おいしいカレーのつくりかた」を書いていこうと思います.
必要なもの
- 材料
- 調理器具
- やる気
- 要件定義
…要件定義?
そう,私たちははじめに,「カレーとは何か?」を今一度考え,その上で今回作るカレーの要件定義をしなくてはなりません.
これがない限り,必要な材料も調理器具も,工程数によるやる気の必要量もわかりませんので,非常に重要です.
それではさっそく,グーグル先生に聞いてみましょう.
なお,我が家代々の家訓に「Googleの検索エンジンを使うべからず」とあるので,検索はDuckDuckGoで行うものとします.
ちなみに「カレーとは?」は国ごとに異なるようで,グローバルな定義らしきものも「多種の香辛料を併用して食材を味付けしたもの」という,なんともふわっとした感じでした.
今回作りたいのは(日本人的に)おいしいカレーなのですが,まだ「どの国のカレー」を作るかを決めていませんでしたね.
各個人の好みによって洋食のカレー,インドカレー(これにもさらに様々な種類がある),欧風カレー等々,意見が分かれそうです.
これは先の長い戦いになりそうだぜ…
…やる気が消失したので今回はここまでとします.
〜(完)〜
ここから本編
というわけで
今回は,開発の下準備である,要件定義・設計の大切さについてポエムっていきたいと思います.
(本当は関数のカリー化について書いてみたかったけど各方面から飛んでくるであろうマサカリが怖い)
要件定義とは
何かしらのシステムの開発・構築を始めるとき,そこには必ず目的があると思います(こういうものが欲しい,顧客からこういう依頼をされた,etc…).
要件定義とは,この目的をはっきりさせることです.
頭でっかちなふんわりとした目的をより具体的に絞り込み,最終的にそのシステムにどういった機能をもたせるかを決めます.
この作業を怠ると,顧客も含めて開発に携わるすべての人が不幸になります.ゴールが見えないからです.
人生にゴールは定めなくてもいいと思いますが,せめて開発にはゴールを定めましょう.
設計とは
要件定義をしたら,次は設計に移ります.
設計とは,要件定義に従って具体的なシステムの構成を検討・決定することです.
この「要件定義に従って」という部分はとても重要です.
ゴールを無視して暴走し始めると歯止めが効かなくなります.こわいこわい.
もしも要件定義に無かったことが設計段階で出てきたら,もう一度要件定義に立ち返って本当に必要なのか確認してみましょう.必要であれば追加しましょう.
ただし,ひとつのシステムにあれこれ盛りすぎると無駄に精神と体力がすり減ります.
あまりにも機能マシマシになってしまう場合には,複数のシステムに分割できるかを検討しましょう.
このプロセスは,次の段階である開発に移っても同じです.
もし実際に開発してみて「これもあったほうがいいかもしれない」と思ったら,何も考えず突っ走る前に一段階前のプロセス,つまり設計に戻ってよく考えましょう.
その機能を追加したことで設計に不整合が出てしまうと,メンバー全員が毎夜シュンケルする羽目になってしまいます.
必要だと感じたら,何度でも前のプロセスに立ち返りましょう.そのほうが結果的に開発効率は上がります.
おわりに
今回の記事では,複数人のチームでの開発を前提とした感じで,要件定義・設計がとても大事であると書いてきました.
これは,実際に何かしら作ったことがある方だと身に沁みて感じたことがあると思います.
ただ,この話は別にチームでの作業に限った話ではなく,個人で何かしら作るときにも生きてくることだと思います.
個人だと飛ばしがちですが,要件定義と設計のプロセスをきちんと踏むことでより効率的に開発ができるようになるでしょう.
作り始めたはいいものの中々終わらんぞ…ということが多々ある方はぜひ参考にしてみてください.
以上,要件定義が難しい「おいしいカレー」の開発は困難を極める,という話でした.
Posted on: 2019年12月16日, by : 190ikp