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

プリンシプル オブ プログラミング
第5章:習慣 要約&クイズ

公開日:
最終更新日:

優れたプログラマーは、コードを書く習慣心構えを意識しています。本ページでは、質の高い習慣を身につけるための要点を要約します。

要約でプロの習慣を学び、20問のクイズで定着。スムーズでミスの少ない開発を実現しましょう!

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

目次

  1. 第5章:習慣の要点・要約を読む(3分)
    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.)
  2. クイズに挑戦する(20問)

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

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

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

5.1 プログラマの三大美徳(Three great virtues of programmer)

  • 要旨怠惰短気傲慢を、手戻りや手作業を減らし品質を上げるための実践的な美徳として活用する。
  • 理由:反復や非効率への反発が、自動化並列化プロ意識を促し、全体コストを下げスループットと品質を高めるため。
  • 結論:仕組みで楽をし、コンピュータに働かせ、誇りを持って恥じないコードを作る。頭脳労働の無理なハードワークは避ける
  • その他(詳細)
    • 怠惰:全体の労力を減らすために手間を惜しまない気質。
      • 繰り返し作業をマクロ化生成ツール化して自動化/仕組み化
    • 短気:コンピュータがサボることに怒る気質=コンピュータを効率よく使う姿勢。
      • 仕事を小さく分割同時実行、計算資源を最大活用してスループット向上
    • 傲慢:高いプライドで美しいコードと設計を追求する気質。
      • プロ意識を持ち、人に見せて恥ずかしくない成果物を作る。
    • 注意:一生懸命さや外圧では思考速度は上がらない→長時間労働に頼らず仕組みで解決

5.2 ボーイスカウトの規則(Boy Scout Rule)

  • 要旨:触れたコードは来た時より少しだけきれいにして戻す。
  • 理由:コードは常に洗練され続けるべきで、最終的な真実はソースに宿るため、小さな改善の蓄積が品質を底上げする。
  • 結論プル前よりよくしてコミットすることを習慣化する。
  • その他(指針)
    • 急がば回れ
      • ユニットテスト省略は避ける:わずかな変更でも手動テストが増え、後の変更が困難に。
      • 不適合な既存システムの流用は避ける:目的不一致の無理は破綻につながる。
      • 不適切なライブラリの放置は避ける:複雑化と保守困難を招き、いずれ破綻する。
    • 小さな改善例:命名改善/重複削減/関数抽出/コメント整備/テスト追加。
    • 効果:保守性と信頼性の向上、回帰リスクの低減、チームの学習促進。

5.3 パフォーマンスチューニングの箴言(Proverb of performance tuning)

  • 要旨時期尚早な最適化は害になりやすい。まずは良いコード(局所化・情報隠蔽)を作り、必要時のみ計測に基づいて最適化する。
  • 理由:最適化にはトレードオフがあり、性能の代わりに大切な性質を失うことが多いから。
  • 結論測って→直し→また測るの循環で、ボトルネックを特定、改善を行う。良い設計を先に整えれば、後からのチューニングは安全に局所適用できる。
  • その他(範囲・手順・手段)
    • 最適化の弊害
      • 可読性の低下:最適化後は前より読みにくくなる。
      • 品質の低下:読みにくさは欠陥増につながる。
      • 複雑性の増大:結合度が上がり移植性も損なう。
      • 保守の阻害:前提条件が増え汎用性・拡張性が下がる。
      • 環境間の競合:特定環境では速いが他で遅くなる。
      • 作業量の増大:結局仕事を増やしがち。
    • まずは良いコード:情報隠蔽などの原則に沿って変更の局所化を実現→他へ影響なく後から変更可能。
    • コード以外の改善点
      • 実行環境
      • デプロイ/インストール設定
      • ミドルウェア
      • ライブラリ
      • 相互運用しているシステム
      • アーキテクチャ
    • 鉄則(手順)
      • 必要性を証明(ユーザー指摘やSLO逸脱など)。
      • 計測してボトルネック特定(「推測するな、計測せよ」)。
      • ボトルネックを最適化(局所修正)。
      • 再計測して効果を確認。
      • テストで機能回帰がないか検証。
    • 手段:プロファイラを利用(例:Chrome のネットワーク/パフォーマンスタブ)。

5.4 エゴレスプログラミング(Egoless programming)

  • 要旨エゴを手放し、助言・指摘を歓迎して学ぶ。人ではなくコードを批評する。
  • 理由:防衛的態度は必要な改善を妨げ、品質を下げるため。
  • 結論:「十戒」を念頭に、謙虚さと尊重をもって継続的に改善する(ただし個性を殺さないバランスも大切)。
  • その他(十戒)
    • 自分も間違えることを受け入れる。
    • 書いたコードは自分ではないと理解する。
    • 上には上がいることを受け入れる。
    • 相談なしの全面書き直しをしない。
    • 自分よりスキルが劣る人にも敬意と忍耐を。
    • 唯一変わらないのは変化という事実。
    • 本当の権威は地位ではなく知識から。
    • 信念のために戦う。ただし敗北は潔く受け入れる。
    • 部屋にこもりきりにならない。
    • 人に優しく、コードに厳しく(人ではなくコードを批評)。

5.5 1歩ずつ少しずつ(One by One)

  • 要旨小さな作業を1つずつ行い、確認→次へのサイクルを繰り返す(ステップ・バイ・ステップ)。
  • 理由:小さく確実な前進の積み重ねは、結果として品質と時間効率を高めるため。
  • 結論:実装も思考も段階を刻んで進める。論理ステップを構築し、各ステップを速く確実に。
  • その他(思考のコツ)
    • 瞬時に答えを得ようとしない。分からなくても考え続ける。
    • すぐに結論へ飛びつかない。一度否定し他の可能性を検討。
    • 既に考えたことを覚える(思考ループに陥らない)。
    • 書きながら考える(視覚化で理解が進む)。
    • 直感も活用してまず試す。ただし直感のみで決めない。

5.6 TMTOWDI(There's more than one way to do it.)

  • 要旨:目的達成の手段は1つではない。選択肢を用意する。
  • 理由:対象も要件も多様であり、解法も多様だから。
  • 結論:与えられた指示を鵜呑みにせず、別のやり方より楽な方法がないかを常に検討する。
  • その他(指針・効果)
    • 制約・評価基準(性能/可読性/保守性/コスト)を明確化し、複数案を比較。
    • プロトタイピングやスパイクでリスクと学習を前倒し。
    • 結果として、より適切で持続可能な解を選択できる。

プリンシプル オブ プログラミング(第5章:習慣)

1. 【5.3.パフォーマンスチューニングの箴言⑥】
最適化されたコードが引き起こしやすい設計上の問題として、正しいものはどれか?

2. 【5.4.エゴレスプログラミング⑥】
次のうち、エゴレスプログラミングの精神にもっとも沿っているものはどれか?

3. 【5.3.パフォーマンスチューニングの箴言⑦】
パフォーマンスチューニングにおける「毒をもって毒を制す」という比喩が意味するのはどれか?

4. 【5.3.パフォーマンスチューニングの箴言⑨】
次のうち、パフォーマンス改善後に必ず行うべき検証はどれか?

5. 【5.3.パフォーマンスチューニングの箴言①】
パフォーマンスチューニングにおいて最も基本的かつ重要な順序はどれか?

6. 【5.4.エゴレスプログラミング⑩】
「人を責めず、コードを批評する」という原則に最も近い行動はどれか?

7. 【5.3.パフォーマンスチューニングの箴言⑪】
最適化を実施した直後に、開発者がまず行うべき正しい手順はどれか?

8. 【5.1.プログラマの3大美徳④】
「怠惰」「憤怒」「傲慢」がプログラマの美徳とされる背景にある共通の価値観は何か?

9. 【5.5.1歩ずつ少しずつ⑦】
「直感も大切にするが、直感“だけ”に頼らない」とはどういう意味か?

10. 【5.1.プログラマの3大美徳⑤】
次のうち「怠惰」の具体例として最も適切なものはどれか?

11. 【5.3.パフォーマンスチューニングの箴言⑤】
次のうち、パフォーマンスチューニングの第一ステップとして最も適切なのはどれか?

12. 【5.6.TMTOWDI(There's more than one way to do it.)④】
TMTOWDIの考え方に反する姿勢として最もふさわしくないものはどれか?

13. 【5.4.エゴレスプログラミング④】
エゴレスプログラミングにおける「信念をもって主張する。ただし、敗れたときは潔く受け入れる」という姿勢の目的は何か?

14. 【5.2.ボーイスカウトの規則⑥】
「不適切なライブラリを放置する」ことで発生しうる結果として最も適切なものはどれか?

15. 【5.2.ボーイスカウトの規則③】
「ユニットテストを省略すること」によって将来的に発生しやすい問題はどれか?

16. 【5.3.パフォーマンスチューニングの箴言⑫】
性急な最適化の副作用として、本文の趣旨に最も合致するものはどれか?

17. 【5.3.パフォーマンスチューニングの箴言③】
次のうち、最適化によって引き起こされる「環境間の競合」とは何を意味するか?

18. 【5.5.1歩ずつ少しずつ⑨】
次のうち、「考えの積み上げ」ができていない人の特徴として最も適切なのはどれか?

19. 【5.1.プログラマの3大美徳⑧】
次のうち「怠惰」の気質が最も発揮される場面として適切なのはどれか?

20. 【5.1.プログラマの3大美徳②】
「憤怒」がプログラマにとって有用な理由として適切なのはどれか?

第5章:習慣の要約を読む クイズ一覧へ

参考文献・出典

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

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

このページの著者

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

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

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

得意:PHP・JavaScript・MySQL・CSS

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


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

採点結果

正答率:0%

-

-

TOPへ

もちもちみかん.comとは


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

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