もちもちみかん0系くん
『プリンシプル オブ プログラミング』7つの設計原理を20問で学べるクイズサイト

プリンシプル オブ プログラミング
7つの設計原理 要約&クイズ

公開日:
最終更新日:

本章では、7つの設計原理(単純原理/同型原理 ほか)を学びます。

解説で要点をつかんだら、4択クイズ(20問・約5分・全問解説)で確認。毎回ランダム出題で、変更に強い設計の軸を鍛えます!

今すぐクイズに挑戦
(20問・約5分・解説つき)
プリンシプルオブプログラミング
101の原理・原則を読む

目次

  1. 7つの設計原理の要点・要約を読む(3分)
    1. 3.29 7つの設計原理(Seven design principles)
    2. 3.30 単純原理(Simplicity Principle)
    3. 3.31 同型原理(Isomorphism Principle)
    4. 3.32 対称原理(Symmetry Principle)
    5. 3.33 階層原理(Hierarchy Principle)
    6. 3.34 線形原理(Linearity Principle)
    7. 3.35 明証原理(Clarity Principle)
    8. 3.36 安全原理(Safety Principle)
  2. クイズに挑戦する(20問)

  1. クイズ一覧へ
  2. 第3章目次へ
  3. 次のクイズへ(UNIX思想)
  4. 前のクイズへ(アーキテクチャ非機能要件)
  5. 『プリンシプル オブ プログラミング』101の原理・原則総まとめ

  1. 参考文献・出典
  2. このページの著者
  3. シェア

第3章:思想④
~7つの設計原理~

3.29 7つの設計原理(Seven design principles)

  • 要旨:障害を作り込まないための7つの核心観点を共通言語として用い、設計とレビューの軸を揃える。
  • 理由:観点がぶれると指摘が一貫せず、品質が安定しないため。
  • 結論:以下の原理を設計規範/レビュー基準として採用し、チェックリスト化する。
  • その他(範囲・効果)
    • 原理一覧:
      • 単純原理(Simplicity Principle)
      • 同型原理(Isomorphism Principle)
      • 対称原理(Symmetry Principle)
      • 階層原理(Hierarchy Principle)
      • 線形原理(Linearity Principle)
      • 明証原理(Clarity Principle)
      • 安全原理(Safety Principle)
    • 効果:レビューの再現性向上/暗黙知の形式知化/欠陥の早期発見・未然防止

3.30 7つの設計原理①:単純原理(Simplicity Principle)

  • 要旨:常にシンプルにこだわり、見通しの良い自然なコードを書く。
  • 理由:障害は複雑な箇所に集中しやすいから。
  • 結論:高級テクニックより単純・直截・最小を選ぶ(必要十分で止める)。
  • その他(実践)
    • 不要な抽象化や分岐を削る/一文一義/意図が一読で伝わる命名
    • 「まず動く最小」を基準にし、複雑化は証拠(計測・要件)が出たときのみ

3.31 7つの設計原理②:同型原理(Isomorphism Principle)

  • 要旨:「同じことは同じ形で」表現し、コードの一貫性を保つ。
  • 理由:形が揃うと「違和感=不具合の芽」が浮き上がり、気づきやすくなるため。
  • 結論:自己流は避け、スタイル・パターン・命名・構造を統一する。
  • その他(実践)
    • コーディング規約/テンプレート/共通ユーティリティの徹底
    • 似た処理のシグネチャ・戻り値・例外ポリシーを揃える

3.32 7つの設計原理③:対称原理(Symmetry Principle)

  • 要旨対称性(対)を意識して構造・制御・命名を設計する。
  • 理由:対称は予測可能性を高め、理解容易性と欠陥検出性を向上させるため。
  • 結論:条件には反条件を、操作には逆操作を設け、例外で対称が崩れる場合は要件から見直す。
  • その他(実践・例)
    • 命名の対:get/set, start/stop, from/to, begin/end, open/close
    • 制御の対:if/else、try/finally(またはスコープ管理)/生成と破棄の対応
    • 例外多発時は要件が未整理のシグナルとして再整理

3.33 7つの設計原理④:階層原理(Hierarchy Principle)

  • 要旨階層構造でコードを編成し、上位→下位の主従関係を明確にする。
  • 理由:階層化により抽象化して全体像を掴みやすくなり、理解・変更が容易になるため。
  • 結論大分類→中分類→小分類(セクション→章→段落→文)の秩序で構造化し、上位からは下位を外部視点で扱う。
  • その他(実践)
    • コードの階層マップ:セクション(モジュール集合)/(関数)/段落(ブロック)/(ステートメント)
    • 上位は下位を呼び出すが、横串・逆流の依存は避ける(層間依存の単方向性)

3.34 7つの設計原理⑤:線形原理(Linearity Principle)

  • 要旨:処理の流れは直線的(Linear)であることにこだわり、分岐と状態を最小化する。
  • 理由:スイッチ乱用や状態増殖は可読性を下げ、制御フローを複雑化させて障害の温床になるため。
  • 結論:分岐は減らす/単純化し、直線的に読めるコードを目指す(俯瞰して複雑化を常時チェック)。
  • その他(実践・効果)
    • ガード節で早期returnし、ネストを浅く保つ。
    • 複雑な条件は述語関数化/表引き(テーブル駆動)で見える化。
    • 状態機械が必要なら明示的なステートと遷移表で管理(暗黙のフラグを増やさない)。
    • 処理を小さな直列パイプラインに分割して組み合わせる(1ステップ=1責務)。

3.35 7つの設計原理⑥:明証原理(Clarity Principle)

  • 要旨:「一見して正しい」と判断できる明瞭なロジックを書く(明証性)。
  • 理由:コードは繰り返し読まれるため、読みやすさの維持が保守性=品質に直結する。
  • 結論:ロジックの根拠をコード・コメント・図で示す。コードで足りないWhy/5W1Hはコメントや補助資料で補完する。
  • その他(実践・範囲)
    • 単機能関数/一文一義、意味のある命名、不要なトリックの排除。
    • 不変条件・前後条件(契約)・アサーションで正しさを明文化。
    • 境界/例外/時刻・ロケール等の落とし穴を明示(コメントやテストケースに反映)。
    • サンプル・テストを使用例(Executable Spec)として添える。

3.36 7つの設計原理⑦:安全原理(Safety Principle)

  • 要旨起こり得ない条件も想定し、安全側に倒す設計・実装を行う(elseやデフォルト経路を怠らない)。
  • 理由:現実の運用では「想定外」が発生し、放置すればデータ破壊やサービス停止に波及するため。
  • 結論フェールセーフ/フェールソフト/フォールトトレランスを織り込み、最も安全な振る舞いを選ぶ(中断・ロールバック・リトライを設計判断で使い分け)。
  • その他(実践・効果)
    • ifのelse必須、switchのdefault、ループのセーフガード(上限・タイムアウト)。
    • 入力検証/サニタイズ、タイムアウト、再試行+冪等、サーキットブレーカ、トランザクションとロールバック
    • エラー方針の明確化:継続/縮退(重要機能のみ)/即時停止+けたたましく通知(クラッシュは早く)。
    • 最小権限・確実なリソース解放・監視とアラートで被害最小化
    • 例:DBエラー時に「継続/リトライ/ロールバックで中断」を比較し、ドメイン的に真に安全な選択を採用。

プリンシプル オブ プログラミング(第3章-7つの設計原理)

1. 【3.36.7つの設計原理⑦『安全原理』⑤】
『安全原理』の実践によって得られる最も重要な効果はどれか?

2. 【3.31.7つの設計原理②『同型原理』④】
エラーコード体系の“同型性”として最も適切なのはどれか?

3. 【3.36.7つの設計原理⑦『安全原理』④】
安全原理に則った「if-else構文」の活用例として正しいものはどれか?

4. 【3.31.7つの設計原理③『対称原理』②】
次のうち『命名における対称性』の例として適切なのはどれか?

5. 【3.34.7つの設計原理⑤『線形原理』④】
線形原理の観点から、コードレビューで指摘すべき箇所として最も適切なのはどれか?

6. 【3.33.7つの設計原理④『階層原理』④】
階層原理の考えに基づく設計上の行動として最も適切なものはどれか?

7. 【3.35.7つの設計原理⑥『明証原理』⑤】
明証原理に則ったコードレビューでの理想的な指摘はどれか?

8. 【3.29.7つの設計原理④】
『階層原理(Hierarchy Principle)』に基づいた設計方針として最も適切なものはどれか?

9. 【3.30.7つの設計原理①『単純原理』⑤】
単純原理における「シンプルさ」の考え方として正しいのはどれか?

10. 【3.31.7つの設計原理②『同型原理』①】
API群の引数順として“同型性”を最も満たしているのはどれか?

11. 【3.29.7つの設計原理⑤】
『線形原理(Linearity Principle)』に反する設計として最も不適切なものはどれか?

12. 【3.31.7つの設計原理③『対称原理』③】
対称原理の効果として最も適切なものはどれか?

13. 【3.30.7つの設計原理①『単純原理』③】
次のうち『単純原理』に反するコードの例はどれか?

14. 【3.31.7つの設計原理③『対称原理』④】
「ある条件に対して、反対条件がコードに存在しない」状態は、対称原理の観点でどう評価されるか?

15. 【3.29.7つの設計原理①】
『単純原理(Simplicity Principle)』において最も重視すべき設計姿勢はどれか?

16. 【3.31.7つの設計原理②『同型原理』②】
検索系メソッド群の“戻り値”として最も同型性が高い組み合わせはどれか?

17. 【3.35.7つの設計原理⑥『明証原理』③】
明証原理を支える考え方として、正しいものはどれか?

18. 【3.29.7つの設計原理②】
『同型原理(Isomorphism Principle)』が重視されるのはどのような状況か?

19. 【3.30.7つの設計原理①『単純原理』①】
『単純原理』に基づいた設計姿勢として最も適切なのはどれか?

20. 【3.31.7つの設計原理③『対称原理』①】
『対称原理』に最も適合する設計姿勢はどれか?

7つの設計原理の要約を読む クイズ一覧へ

参考文献・出典

  • プリンシプル オブ プログラミング ~3年目までに身につけたい一生役立つ101の原理原則~
  • 上田 勲(著)/秀和システム/第1版14刷/2025年/ISBN978-4-7980-4614-3

※本ページは学習支援を目的とした要約です。実務適用時は原典もご参照ください。

このページの著者

もちもちみかん(システムエンジニア)

社内SEとしてグループ企業向けの業務アプリを要件定義〜運用まで一気通貫で担当しています。

経験:Webアプリ/業務システム

得意:PHP・JavaScript・MySQL・CSS

個人実績:フォーム生成基盤クイズ学習プラットフォーム


詳しいプロフィールはこちら!  もちもちみかんのプロフィール

採点結果

正答率:0%

-

-

TOPへ

もちもちみかん.comとは


このサイトでは、コーディングがめんどうくさい人向けのお助けツールとして、フォームやCSSをノーコードで生成できる、
 もちもちみかん.forms
 もちもちみかん.css1
 もちもちみかん.css2
と言ったジェネレーターを用意してます。

また、このサイトを通じて、「もちもちみかん」のかわいさを普及したいとかんがえてます!