デザインレシピ

「デザインレシピ」という言葉は、浅井健一先生の『プログラミングの基礎』ではじめて知りました。ソフトウェア(特に関数)の設計方法は体系化できるという考えです。

元ネタは有名な「How to Design Programs: An Introduction to Programming and Computing」だそうです。使用している言語はSchemeですけども、考え方は同じです。

  1. 問題分析(Problem Analysis)
  2. シグニチャ、目的文、ヘッダ(Signature, Purpose Statement, Header)
  3. 関数の例(Functional Examples)
  4. 関数のテンプレート(Function Template)
  5. 関数の定義(Function Definition)
  6. テスト(Testing)

ペンシルバニア大学の授業の講義ノートにも似たようなものがありました。上記のデザインレシピを参考にしたと書いてあります。こちらの使用言語はOCamlです。

  1. 問題の理解(Understand the problem.)
  2. インターフェイスの形式化(Formalize the interface.)
  3. テストケースの記述(Write the test case.)
  4. 求められる挙動の実装(Implement the required behavior.)

浅井先生のスライドでは以下の表記でした。

  1. 目的:関数の目的を考え、ヘッダを作成する。
  2. 例:関数の入出力の例を作成する。
  3. 本体:関数本体を作成する。
  4. テスト:作った関数の動作を確認する。

デザインレシピ、入力ページというものもあります。

テストを作るところはTDDと同じですが、その前後の思考過程についても考えられているところが有益だなあと思います。

あわせて読みたい

  • プログラミングの基礎 (Computer Science Library)
  • How to Design Programs: An Introduction to Programming and Computing (The MIT Press)

角 征典(かど まさのり)@kdmsnr

ワイクル株式会社 代表取締役、東京工業大学 環境・社会理工学院 特任講師。アジャイル開発やリーンスタートアップに関する書籍の翻訳を数多く担当し、それらの手法を企業に導入するコンサルティングに従事。主な訳書に『リーダブルコード』『Running Lean』『Team Geek』(オライリー・ジャパン)、『エクストリームプログラミング』『アジャイルレトロスペクティブズ』(オーム社)、『図解リーン・スタートアップ成長戦略』(日経BP社)、『Clean Coder』(KADOKAWA)など。大学では、起業家育成プログラムにおいて、「デザイン思考基礎」および企業と連携したPBL型講義「エンジニアリングデザインプロジェクト」を担当。共著書に『エンジニアのためのデザイン思考入門』(翔泳社)がある。