イチから全部作ってみよう(37)料理レシピでプログラミングの考え方を整理する:山浦恒央の“くみこみ”な話(206)(3/3 ページ)

» 2026年10月15日 08時00分 公開
前のページへ 1|2|3       

6.2 分岐する(条件分岐)

 今回のレシピでは、「味見をして、薄ければめんつゆを5mL追加する」という条件分岐があります(図2)。

図2 図2 条件分岐の例[クリックで拡大]

 このように、「特定の条件によって処理を変える」という考え方は、プログラミングの「条件分岐」に対応します。例えば、人間が「味が薄いからめんつゆを足そう」と判断するように、「ある条件を満たせば、追加の処理を行う」という考え方に従って、コンピュータは処理を分岐するのです。

6.3 繰り返す(繰り返し処理)

 「全体に油がなじむまで炒める」「じゃがいもに箸が通るか確認し、抵抗なく通るまで煮る」といった作業は、「条件を満たすまで同じ動作を繰り返す」処理と言えます。これもプログラミングの「繰り返し処理(ループ)」とまったく同じ構造です(図3)。

図3 図3 繰り返しの例[クリックで拡大]

 図3のように、コンピュータも、「加熱して、じゃがいもに箸を刺す、加熱して、じゃがいもに箸を刺す」という動作を実行し続けます。ただし、ありがたい反面、間違った指示だと、プログラムが終了するまで間違い続けるという恐ろしいプログラムになるので注意が必要です。

 皆さんのスマートフォンが動き続けているのも、どこかに「ユーザーの入力があるまで現在の画面を表示し続ける」という無限に続くループ処理を実行しているためです。ジュースの自動販売機でも、「料金が投入されるまで、ひたすら待つ」というループを実行しています。誰も何もしなくても、自動販売機の中ではプログラムが走っているのです。

6.4 別ページ参照(関数呼び出し)

 「炊飯する」という独立してひとまとまりにできる手順は、別ページとすることで、見通しの良いレシピとなりますね。

レシピの例:「炊飯する(別紙参照)」

  • 別ページ:炊飯の手順
    • お米を研ぐ
    • 炊飯器にお米を入れる
    • 水を入れる
    • 炊飯ボタンを押す
    • 炊き上がるまで待つ

 プログラミングでは、これを「関数」や「メソッド」と呼び、ひとまとめにして別の場所で書いておいてから呼び出します。こうすることで、「炊飯する」と1行書くだけで別の場所に書いてある処理を実行できます。肉じゃがのレシピの中に、炊飯の手順を書いても構いませんが、行数が増えますし、肉じゃがとは直接、関係のない「炊飯する」をレシピに入れると、2つが混じり、読んでいて混乱します。また、「炊飯する」は、他のレシピ、例えば、カレーやカツ丼にも出てきますので、みんなで共通的に使えるように「炊飯する」として外へ出しておくと便利ですね。

7.終わりに

 今回からは、詳細設計を行う前の前提知識として、料理レシピというトピックから、プログラミングの基本的な4つの基本的な構造と考え方を説明しました。

 料理レシピを考えると、プログラミングの「上から順番に実行する」「分岐する」「繰り返す」「別ページ参照」という、基本的な4つの考え方をいろいろな形に変えて実践していることが分かります。

 今回は料理を例にしましたが、もちろん、プログラミングは料理以外にもさまざまなものに例えて説明できます。プログラミングの勉強に行き詰ったら、身の回りの物事に置き換えてイメージを膨らませてみてはいかがでしょうか。

山浦先生執筆の書籍が販売中です!

 本連載で取り上げた「ソフトウェア技術者のためのバグ百科事典」を大幅に加筆、修正した山浦恒央先生の書籍「ソフトウェア技術者のためのバグ検出テキスト」が日科技連出版から好評発売中です。連載でも取り上げた、「要求仕様書のバグ」「実装抜けのバグ」「テスト業務のバグ」など、バグを36種類に分類して解説しています。囲碁や将棋であれば、「相掛かり」「矢倉」「四間飛車」「藤井システム」のような戦法を網羅した内容になっています。

 前著「ソフトウェア技術者のためのバグ検出ドリル」(2019年11月刊行)も好評発売中です。実際にバグを含む要求仕様書、設計書、コーディング、デバッグ、保守を具体的に取り上げ、練習問題として31問を出題しました。同書は、囲碁や将棋における「次の一手」的な問題であり、ピンポイントの場面を取り上げ、実践力を鍛えることを目的としています。

ソフトウェア技術者のためのバグ検出テキストソフトウェア技術者のためのバグ検出ドリル 画像クリックで出版社のWebサイトへ

 両書とも興味のある方は、Amazon.comや書店でチェックしてください!

【 筆者紹介 】
山浦 恒央(やまうら つねお)

人間環境大学 環境情報学科 教授(工学博士)


1977年、日立ソフトウェアエンジニアリングに入社、2006年より、東海大学情報理工学部ソフトウェア開発工学科助教授、2007年より、同大学大学院組込み技術研究科准教授、2016年より非常勤講師。2025年4月より、人間環境大学環境情報学科教授。

主な著書・訳書は、「Advances in Computers」 (Academic Press社、共著)、「ピープルウエア 第2版」「ソフトウェアテスト技法」「実践的プログラムテスト入門」「デスマーチ 第2版」「ソフトウエア開発プロフェッショナル」(以上、日経BP社、共訳)、「ソフトウエア開発 55の真実と10のウソ」「初めて学ぶソフトウエアメトリクス」(以上、日経BP社、翻訳)。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

特別協賛PR
スポンサーからのお知らせPR
Pickup ContentsPR
Special SitePR
あなたにおすすめの記事PR