もちもちみかん0系くん
『プリンシプル オブ プログラミング』101の原理・原則総まとめ!

プリンシプル オブ プログラミング
101の原理・原則をこの1ページに凝縮!

公開日:
最終更新日:

『プリンシプル オブ プログラミング』が示す101の原理・原則を体系的に整理した、保存版の総まとめページです。

全101原則を「要旨」「結論」で1~2行程度に簡潔にまとめており、原則の「さわり」をサクッと掴めるようになっています。

そのため、基礎から応用まで、すべての章を横断してソフトウェア設計の本質を俯瞰できます。

各原則には要点・解説・クイズのリンクを設け、「読む→解く→わかる」学習体験をサポートします!

プリンシプル オブ プログラミング 目次

  1. 第1章:前提(プログラミングの変わらぬ真実)
    1. 1.1 プログラミングに銀の弾丸はない(No Silver Bullet)
    2. 1.2 コードは設計書である(Code as design)
    3. 1.3 コードは必ず変更される(Code will be changed)
  2. 第2章:原則(プログラミングのガイドライン)
    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)
  3. 第3章:思想(プログラミングのイデオロギー)
    1. 1.プログラミングセオリー
    2. 2.アーキテクチャ根底技法
    3. 3.アーキテクチャ非機能要件
    4. 4.7つの設計原理
    5. 5.UNIX思想
    6. 6.UNIX哲学
  4. 第3章:思想①(プログラミングセオリー)
    1. 3.1 プログラミングセオリー(Programming theory)
    2. 3.2 3つの価値①:コミュニケーション(Communication)
    3. 3.3 3つの価値②:シンプル(Simplicity)
    4. 3.4 3つの価値③:柔軟性(Flexibility)
    5. 3.5 6つの原則①:結果の局所化(Local consequences)
    6. 3.6 6つの原則②:繰り返しの最小化(Minimize repetition)
    7. 3.7 6つの原則③:ロジックとデータの一体化(Logic and Data together)
    8. 3.8 6つの原則④:対称性(Symmetry)
    9. 3.9 6つの原則⑤:宣言型の表現(Declarative Expression)
    10. 3.10 6つの原則⑥:変更頻度(Rate of Change)
  5. 第3章:思想②(アーキテクチャ根底技法)
    1. 3.11 アーキテクチャ根底技法(Architecture core techniques)
    2. 3.12 抽象(Abstraction)
    3. 3.13 カプセル化(Encapsulation)
    4. 3.14 情報隠蔽(Information Hiding)
    5. 3.15 パッケージ化(Packaging)
    6. 3.16 関心の分離(Separation of Concerns)
    7. 3.17 充足性・完全性・プリミティブ性(Sufficiency, Completeness, Primitiveness)
    8. 3.18 ポリシーと実装の分離(Separation of Policy and Implementation)
    9. 3.19 インターフェースと実装の分離(Separation of Interface and Implementation)
    10. 3.20 参照の一点性(Single Point of Reference)
    11. 3.21 分割統治(Divide and Conquer)
  6. 第3章:思想③(アーキテクチャ非機能要件)
    1. 3.22 アーキテクチャ非機能要件(Architecture quality attributes)
    2. 3.23 変更容易性(Changeability)
    3. 3.24 相互運用性(Interoperability)
    4. 3.25 効率性(Efficiency)
    5. 3.26 信頼性(Reliability)
    6. 3.27 テスト容易性(Testability)
    7. 3.28 再利用性(Reusability)
  7. 第3章:思想④(7つの設計原理)
    1. 3.29 7つの設計原理(Seven design principles)
    2. 3.30 7つの設計原理①:単純原理(Simplicity Principle)
    3. 3.31 7つの設計原理②:同型原理(Isomorphism Principle)
    4. 3.32 7つの設計原理③:対称原理(Symmetry Principle)
    5. 3.33 7つの設計原理④:階層原理(Hierarchy Principle)
    6. 3.34 7つの設計原理⑤:線形原理(Linearity Principle)
    7. 3.35 7つの設計原理⑥:明証原理(Clarity Principle)
    8. 3.36 7つの設計原理⑦:安全原理(Safety Principle)
  8. 第3章:思想⑤(UNIX思想)
    1. 3.37 UNIX思想(UNIX Thought)
    2. 3.38 UNIX思想①:モジュール化の原則(Rule of Modularity)
    3. 3.39 UNIX思想②:明確性の原則(Rule of Clarity)
    4. 3.40 UNIX思想③:組み立て部品の原則(Rule of Composition)
    5. 3.41 UNIX思想④:分離の原則(Rule of Separation)
    6. 3.42 UNIX思想⑤:単純性の原則(Rule of Simplicity)
    7. 3.43 UNIX思想⑥:倹約の原則(Rule of Parsimony)
    8. 3.44 UNIX思想⑦:透明性の原則(Rule of Transparency)
    9. 3.45 UNIX思想⑧:安定性の原則(Rule of Robustness)
    10. 3.46 UNIX思想⑨:表現性の原則(Rule of Representation)
    11. 3.47 UNIX思想⑩:驚き最小の原則(Rule of Least Surprise)
    12. 3.48 UNIX思想⑪:沈黙の原則(Rule of Silence)
    13. 3.49 UNIX思想⑫:修復の原則(Rule of Repair)
    14. 3.50 UNIX思想⑬:経済性の原則(Rule of Economy)
    15. 3.51 UNIX思想⑭:生成の原則(Rule of Generation)
    16. 3.52 UNIX思想⑮:最適化の原則(Rule of Optimization)
    17. 3.53 UNIX思想⑯:多様性の原則(Rule of Diversity)
    18. 3.54 UNIX思想⑰:拡張性の原則(Rule of Extensibility)
    19. ソフトウェア入出力の箴言(Software Input/Output Proverbs)
  9. 第3章:思想⑥(UNIX哲学)
    1. 3.55 UNIX哲学(UNIX Philosophy)
    2. 3.56 UNIX哲学①:小は美なり(Small is beautiful)
    3. 3.57 UNIX哲学②:1つ1仕事(Make each program do one thing well)
    4. 3.58 UNIX哲学③:即興プロトタイプ(Build a prototype as soon as possible)
    5. 3.59 UNIX哲学④:効率性より移植性(Choose portability over efficiency)
    6. 3.60 UNIX哲学⑤:データはテキスト(Store numerical data in flat ASCII files)
    7. 3.61 UNIX哲学⑥:レバレッジ・ソフトウェア(Use software leverage)
    8. 3.62 UNIX哲学⑦:シェルスクリプト活用(Use shell scripts for leverage and portability)
    9. 3.63 UNIX哲学⑧:対話インターフェース回避(Avoid captive user interfaces)
    10. 3.64 UNIX哲学⑨:フィルタ化(Make every program a filter)
    11. UNIX哲学:小定理(UNIX little theorem)
  10. 第4章:視点(プログラマの見る角度)
    1. 4.1 凝集度(Cohesion)
    2. 4.2 結合度(Coupling)
    3. 4.3 直交性(Orthogonality)
    4. 4.4 可逆性(Reversibility)
    5. 4.5 コードの臭い(Bad smell in code)
    6. 4.6 技術的負債(Technical Debt)
  11. 第5章:習慣(プログラマのルーティン)
    1. 5.1 プログラマの三大美徳(Three great virtues of programmer)
    2. 5.2 ボーイスカウトの規則(Boy Scout Rule)
    3. 5.3 パフォーマンスチューニングの箴言(Proverb of performance tuning)
    4. 5.4 エゴレスプログラミング(Egoless programming)
    5. 5.5 1歩ずつ少しずつ(One by One)
    6. 5.6 TMTOWDI(There's more than one way to do it.)
  12. 第6章:手法(プログラマの道具箱)
    1. 6.1 曳光弾(Tracer Bullet Development)
    2. 6.2 契約による設計(Design by Contract)
    3. 6.3 防御的プログラミング(Defensive Programming)
    4. 6.4 ドッグフーディング(Dogfooding)
    5. 6.5 ラバーダッキング(Rubber Duck Debugging)
    6. 6.6 コンテキスト(Context)
  13. 第7章:法則(プログラミングのアンチパターン)
    1. 7.1 ブルックスの法則(Brooks's Law)
    2. 7.2 コンウェイの法則(Conway's Law)
    3. 7.3 割れた窓ガラスの法則(Broken Windows Theory)
    4. 7.4 エントロピーの法則(Law of Entropy Increase)
    5. 7.5 80-10-10の法則(80-10-10 Rule)
    6. 7.6 ジョシュアツリーの法則(Joshua Tree Principle)
    7. 7.7 セカンドシステム症候群(Second System Syndrome)
    8. 7.8 車輪の再発明(Reinvented Wheel)
    9. 7.9 ヤクの毛刈り(Yak Shaving)

  1. クイズ一覧へ

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

第1章:前提 ~プログラミングの変わらぬ真実~

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

第3章:思想 ~プログラミングのイデオロギー~

第3章:思想① ~プログラミングセオリー~

第3章:思想② ~アーキテクチャ根底技法~

3.12 抽象(Abstraction)

要旨概念に線を引き、何を扱い何を捨てるかを決めてモジュールを区別する。

結論余計を捨てて本質へ集中。境界に一貫した名前と契約を与え、抽象のテストも用意する。

第3章:思想③ ~アーキテクチャ非機能要件~

3.25 効率性(Efficiency)

要旨限られたリソースで必要な性能を出す(時間効率+資源効率)。

結論計測指標を明確化し、ムダの削減とスケール手段(キャッシュ/キュー/抽象化層)をバランスよく設計する。

3.26 信頼性(Reliability)

要旨例外や誤操作、異常時でも機能を保つ力(フォールトトレランス+ロバストネス)。

結論冗長化/フェールソフト/フェールセーフを設計に組み込み、必要に応じてフールプルーフで誤操作自体を無害化。

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

第3章:思想⑤ ~UNIX思想~

3.37 UNIX思想(UNIX Thought)

要旨長年の実践から生まれた設計・実装の技法群で、今も通用する普遍的な指針。

結論モジュール化/明確性/組み立て部品化/分離/単純性を設計レビューと日々の実装基準に据える。

第3章:思想⑥ ~UNIX哲学~

3.55 UNIX哲学(UNIX Philosophy)

要旨UNIXの長寿を支えた設計の哲学を、現代開発の指針として活かす。

結論小さく作る/一仕事に集中/早い試作/移植性重視/テキスト志向/組み合わせ活用を日常の設計・実装に適用する。

UNIX哲学:小定理(UNIX little theorem)

要旨日々の細部判断を支える軽量ルール集で、UNIX的実用主義を徹底する。

結論環境カスタマイズ/小さなカーネル/小文字命名/紙依存排除/沈黙/並列思考/部品連携/90%解/最小公約数重視/階層指向をチームの共通ルールにする。

第4章:視点 ~プログラマの見る角度~

4.1 凝集度(Cohesion)

要旨1つのモジュールの中身が「同じ目的」にどれだけ集中しているかの度合い。高いほど良い。

結論目標は「機能的強度」=1モジュール1役割。責務をはっきり決めて、関係ない処理を入れない。

4.2 結合度(Coupling)

要旨モジュールどうしのつながりの強さ。弱いほど変更の影響が広がらず安全。

結論目標はデータ結合。必要最小の引数でやり取りし、グローバルや制御フラグ依存を避ける。

4.3 直交性(Orthogonality)

要旨部品同士を独立させ、片方の変更がもう片方に波及しない状態を作る考え方。

結論明確な境界とレイヤーで疎結合に。重複データや暗黙依存をなくし、変更は局所で完結させる。

第5章:習慣 ~プログラマのルーティン~

第6章:手法 ~プログラマの道具箱~

6.6 コンテキスト(Context)

要旨背景・状況(文脈)を設計・実装・会話に組み込み、判断の質を上げる。

結論ドメインモデルで文脈を共有し、階層化・驚き最小でコードに反映。中断を減らし、全体最適の視点で決める。

第7章:法則 ~プログラミングのアンチパターン~

参考文献・出典

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

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

■免責事項■

本クイズは、プログラミングおよびソフトウェア設計に関する理解を深めることを目的として作成されたものであり、正確性・完全性・最新性を保証するものではありません

本クイズの内容は、一般的な設計原則や哲学的背景に基づいて構成されていますが、すべての現場や状況に適用できるとは限りません

出題内容や解答・解説において、誤りや誤解を招く表現が含まれている可能性があります。あらかじめご了承ください。

本クイズの利用により生じたいかなる損害・損失についても、当方は一切の責任を負いかねます。

問題文・選択肢・解説の内容は予告なく変更・更新される場合があります。

教育・学習・社内研修などに利用される場合は、各自の判断と責任のもとでご活用ください

このページの著者

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

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

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

得意:PHP・JavaScript・MySQL・CSS

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


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

TOPへ

もちもちみかん.comとは


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

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