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

プリンシプル オブ プログラミング
第2章:原則 要約&クイズ

公開日:
最終更新日:

プログラミングの質を高める重要な原則(DRY, YAGNI, KISSなど)を要点要約で簡潔に解説します。原則は知識ではなく、実践の道具です。

要約で概念をインプットし、4択クイズ(20問・全問解説)で知識を定着。現場で役立つ実践的な基礎力を身につけましょう!

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

目次

  1. 第2章:原則の要点・要約を読む(3分)
    1. 2.1 KISS(Keep It Simple, Stupid.)
    2. 2.2 DRY(Don't Repeat Yourself.)
    3. 2.3 YAGNI(You Aren't Going to Need It.)
    4. 2.4 PIE(Program Intently and Expressively.)
    5. 2.5 SLAP(Single Level of Abstraction Principle.)
    6. 2.6 OCP(Open-Closed Principle)
    7. 2.7 名前重要(Name is important)
  2. クイズに挑戦する(20問)

  1. クイズ一覧へ
  2. 次のクイズへ(第3章:思想)
  3. 前のクイズへ(第1章:前提)
  4. 『プリンシプル オブ プログラミング』101の原理・原則総まとめ

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

第2章:原則
~プログラミングのガイドライン~

2.1 KISS(Keep It Simple, Stupid.)

  • 要旨:常に単純性・簡潔性を最優先し、「動かすための最小」を選ぶ。余計なことはしない。
  • 理由:場当たりの修正は無秩序と複雑化を招き、理解・保守・信頼性を損なうため。
  • 結論:最小構成で設計・実装し、削る姿勢で品質を守る。
  • その他(指針)
    • 新技術の無理な導入はしない。
    • 今不要なものは今書かない(多くは結局不要)。
    • プログラマが勝手に要件変更しない。
    • Less is more(より少ないことは、より豊かなこと)。
    • オッカムの剃刀(必要以上に多くの前提を仮定すべきでない)。

2.2 DRY(Don't Repeat Yourself.)

  • 要旨重複をなくす。同じコードも、コードをなぞるだけの重複コメントも避ける。
  • 理由:重複は読み手と修正を迷わせ、テストの抜けや不整合を生むため。
  • 結論抽象化により重複を排除し、一箇所の変更で済む構造にする。
  • その他(手段と適用範囲)
    • ループ化/関数化/モジュール化で要素を最小単位へ(素因数分解の発想)。
    • DRYはビルド/テスト/デプロイ工程などプロセスにも適用(共通化・自動化)。

2.3 YAGNI(You Aren't Going to Need It.)

  • 要旨:「多分必要」は多くの場合必要にならない。今必要なものだけ実装する。
  • 理由:将来想定の盛り込みは、未使用機能無駄な複雑さを生みやすい。
  • 結論現時点の要件に集中し、必要になった時にその時点のコストを支払う。シンプルさは結果的に変更に強い
  • その他(実践のコツ)
    • 将来拡張の余地は残しても、複雑さは増やさない
    • 過剰汎用化や早すぎる最適化を避ける(KISS/DRYと整合)。

2.4 PIE(Program Intently and Expressively.)

  • 要旨:コードは人が読む。意図を明確かつ表現的に伝える。
  • 理由:読み手が理解できてこそ変更が始まる。ただし、コードは主にWhat/Howしか示せず、Whyは失われやすい。
  • 結論読みやすさ最優先。コードで誤解を減らし、Why(設計理由)はコメントや補足で補完する。
  • その他(実践ポイント)
    • 明確な命名と一貫した構造、短い文・小さな関数。
    • コメントは意図・前提・トレードオフを記す(コードの繰り返しはしない:DRY)。

2.5 SLAP(Single Level of Abstraction Principle.)

  • 要旨:関数やブロックごとに抽象化レベルを揃える。同じ高さの記述を並べて、読む/要約する負荷を下げる。
  • 理由:レベルが揃っていれば要約性+閲覧性が同時に高まり、処理の流れが自然に立ち上がって読みやすくなるため。
  • 結論:プログラムを文書のように構造化し、上位は下位のみを呼ぶ(横刺し・逆流は避ける)。
  • その他(指針)
    • 序章:プログラムの趣旨を述べるコメント。
    • 目次:関数一覧(外形を先に示す)。
    • セクション:モジュール群のまとまり。
    • :各関数。
    • 段落:関数内のコードブロック。
    • :ステートメントは短く、1文1責務
    • 呼び出し規律:上→下はOK/横・上方向の直接呼び出しは避ける

2.6 OCP(Open-Closed Principle)

  • 要旨:コードは拡張に開き、既存のコード修正には閉じるよう設計する。
  • 理由:ソフトウェアの寿命は想定より長く、変化に晒され続けるため、安定運用と変更容易性の両立が必要。
  • 結論インターフェース/抽象を境界に据え、実装を直接呼ばずに差し替える。必要最小の抽象でシンプルさも維持。
  • その他(適用指針・割り切り・戦略)
    • 境界設計:ポリモーフィズム/DI/プラグイン等で新機能は追加で注入。
    • 割り切り:過剰抽象は禁物。まずはシンプルに、最初の一撃(初回修正)は受け入れ、次から同種変更を受けない構造へ整える。
    • 関連原則:カプセル化やクラス化で影響範囲を局所化

2.7 名前重要(Name is important)

  • 要旨命名は最重要。名前は読み手にとってのUIであり、意味を不可逆に伝える
  • 理由:適切な名前は仕様理解を直接支援し、誤読・手戻り・変更コストを大きく減らすため。
  • 結論:まず仕様を深く理解し、その理解から命名→コードへ落とす。実装を読み返し、命名が最適か随時検証する。
  • その他(実践ポイント)
    • 説明→命名→説明の検証(ループバックチェック)を回す。
    • ドメイン語彙に合わせ、一貫性と具体性を優先(曖昧語・略語乱用を避ける)。
    • 名前で意図と契約を伝える(単位・範囲・前提を含意)。

プリンシプル オブ プログラミング(第2章:原則)

1. 【2.6.OCP(Open-Closed Principle)④】
次のうち、OCPに反している設計はどれか?

2. 【2.4.PIE(Program Intently and Expressively.)②】
PIE原則に基づき、「Why(なぜ)」の情報を補足する適切な方法はどれか?

3. 【2.3.YAGNI(You Aren't Going to Need It.)⑤】
YAGNIと矛盾しない設計上の配慮はどれか?

4. 【2.3.YAGNI(You Aren't Going to Need It.)③】
次のうち、YAGNI原則に従った適切な対応はどれか?

5. 【2.5.SLAP(Single Level of Abstraction Principle.)④】
SLAPに基づいたコード構成の説明として、正しいものはどれか?

6. 【2.3.YAGNI(You Aren't Going to Need It.)②】
YAGNI違反によって起きやすい問題はどれか?

7. 【2.2.DRY(Don't Repeat Yourself.)③】
「DRY原則を破ると、テスト漏れが発生しやすくなる」とされる理由として最も適切なものはどれか?

8. 【2.2.DRY(Don't Repeat Yourself.)④】
DRY原則の本質に最も近い考え方はどれか?

9. 【2.1.KISS(Keep It Simple, Stupid.)③】
KISS原則において「Less is more」が示す本質的な意味は何か?

10. 【2.5.SLAP(Single Level of Abstraction Principle.)③】
SLAP原則の実践として「1つのステートメントには1つのことだけを書く」理由として最も適切なのはどれか?

11. 【2.7.名前は最重要③】
命名に必要なスキルとして最も適切なものはどれか?

12. 【2.6.OCP(Open-Closed Principle)①】
OCP(Open-Closed Principle)の基本的な設計指針はどれか?

13. 【2.6.OCP(Open-Closed Principle)②】
OCPの実践例として最も適切なものはどれか?

14. 【2.7.名前は最重要①】
プログラミングにおいて「命名」が最重要とされる主な理由は何か?

15. 【2.5.SLAP(Single Level of Abstraction Principle.)⑤】
次のうち、SLAP原則に反するコード構造はどれか?

16. 【2.7.名前は最重要②】
命名の質を高めるために効果的とされる手法はどれか?

17. 【2.6.OCP(Open-Closed Principle)③】
OCPが重要とされる理由として最も適切なのはどれか?

18. 【2.1.KISS(Keep It Simple, Stupid.)②】
次のうち、KISS原則と最も対立する設計思想はどれか?

19. 【2.7.名前は最重要⑤】
命名が「不可逆的に意味を伝える手段」であるという主張の意図として適切なものはどれか?

20. 【2.3.YAGNI(You Aren't Going to Need It.)④】
YAGNI原則の精神として最も近いものはどれか?

第2章:原則の要約を読む クイズ一覧へ

参考文献・出典

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

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

このページの著者

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

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

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

得意:PHP・JavaScript・MySQL・CSS

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


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

採点結果

正答率:0%

-

-

TOPへ

もちもちみかん.comとは


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

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