Upgrade to Pro — share decks privately, control downloads, hide ads and more …

文書とは何なのか 理解負債とは何なのか

Avatar for Stasshe Stasshe
October 09, 2026

文書とは何なのか 理解負債とは何なのか

設計判断、意図(ADR)を残した文書があっても引き継ぎはうまくいかない
それはなぜなのか
これを古典的なソフトウェア工学論から分析してみる
NaurとRyle, Petronの論考を基にこの事象を言語化し、
さらにAI時代のNaurのいう「理論」は誰が持っているのか述べる。
そして、理解負債とはつまり何であるのかを捉えなおし、
結局はAIがあっても大枠は変わっていないのだという結論に至る。

Avatar for Stasshe

Stasshe

October 09, 2026

More Decks by Stasshe

Other Decks in Programming

Transcript

  1. LT会 前回「What Is Software Design?」の続き 文書とは何なのか 理解負債とは何なのか Ref: Naur, Parnas,

    reeves N Naur 1985 P Parnas & Clements 1986 R Reeves 1992(前回) Stasshe | 2026.10 1
  2. I プログラムの本体はどこにあるか ADR は「なぜ」を残すための仕組みだった 背景 なぜ判断が必要だったか ADR が答える問い 決定 何を選んだか

    「なぜ、こうなっているのか」 対象は、すでに下された決定。 結果 何を得て、何を失うか 却下案 検討して捨てた道 グループ B が受け取った「設計議論の文 書」も、この種類の情報だった。 8
  3. I プログラムの本体はどこにあるか Peter Naur と “Programming as Theory Building” Programming

    as Theory Building Peter Naur(1928–2016) Microprocessing and Microprogramming, 15(5), 1985 ALGOL 60 報告の編者 BNF(Backus–Naur Form)の N 2005 年 チューリング賞 プログラミングを「生産」ではなく「理論の構築」として捉 え直す論考。 Cockburn『Agile Software Development』の付録に再録。 11
  4. 「理論を持つ」とは:Ryleの意味で Naur 1985 Very briefly, a person who has or

    possesses a theory in this sense knows how to do certain things and in addition can support the actual doing with explanations, justifications, and answers to queries, about the activity of concern. 問いに答えら れる 正当化できる 理論を 持つ 説明できる 想定外の質問にも それが妥当である 理由 なぜそうするのか 行える 知的に振る舞う 14
  5. I プログラムの本体はどこにあるか 知ってる と 使える は違う. F = ma 振り子

    惑星 結論 規則は書ける。規則をどの状況に当てはめるかは書けない。理論とは後者を含む能力である。 16
  6. I プログラムの本体はどこにあるか 理論は三つの領域で文書を超える 1 世界との対応 2 正当化 3 変更への応答 コードの各部分が現実のどこに対応

    するか。現実のどこがコードに写さ れているか。何が関係するかの判断 は、世界全体を知る者にしかできな い。 各部分がなぜそうなっているか。ど の設計規則が今関係するかの判断は 、最終的にプログラマの直観に依る 。 新しい要求が既存のどの機能に似て いるかを知覚し、建設的に応える。 類似性は規則にできない。 一般的な文書 ADR が届く範囲:2 の一部 ADR の射程外 17
  7. I プログラムの本体はどこにあるか 規則として書き出せば済む、とはならない … 終わらない 規則 R″ R′ をいつ使うか 規則

    R′ R をいつ使うか 規則 R こう書け 知的な振る舞いを「規則に従うこと」に還元すると、適用の規則が要り続ける(Ryle の無限後退)。 22
  8. I プログラムの本体はどこにあるか 理論は関数、文書はその標本にすぎない 未知の要求 読み方 • 文書・ADR=過去の(要求, 応答)の標 本 ━

    理論 f ┅ 標本をすべて通る、別の関数 未知の要求では、関数ごとに応答が分かれ る。 変更要求 x f(x_i) = y_i (i = 1, …, n) does not determine f(x_new) ※ 本発表の比喩 25
  9. I プログラムの本体はどこにあるか コードは設計として完全、理論として不完全な射影 Naur 理論 頭の中。説明・正当化・変更への応答 射影(欠ける) Reeves コード まとめ

    Reeves:設計文書は要らな い。コードが設計だ。 製造に十分な、設計の完全な表現 ビルド(欠けない) Naur:そのコードからでは 足りないものがある。 成果物 ビルドの結果 26
  10. I プログラムの本体はどこにあるか Naurの答え:協働による継承 協働の中で得るもの 理論を 持つ者 新しい メンバー 密に協働する 1

    現実の状況の中での、プログラムの位置 2 プログラムがどう動くか 3 異常な反応と変更を、理論の中でどう扱うか コードと文書だけでは不十分 29
  11. II ならば文書はどうあるべきか 文書の役割を問い直す:理論を運ぶのではなく、築かせる 誤った期待 現実的な役割 文書で理論を転送する 次の人が理論を築くのを助ける Naur の事例が示した通り、これは成り立たない 。

    読み手の記憶を呼び起こし、思考の経路を作る 。 A. Cockburn, Agile Software Development (2001)、Naur 論考に付した解説より要約 問いが変わる:どういう文書なら、理論の再構築が速くなるか。 36
  12. II ならば文書はどうあるべきか 設計は合理的な順序では進まない 1 発注者は何が欲しいか正確には知らない 2 必要な事実の多くは実装中に判明する 3 人間は細部の全体を理解しきれない 4

    外部の変化が過去の判断を無効にする 5 人間は誤る 6 好きな設計アイデアを持ち込む 7 経済的理由で既存資産を流用させられる 理想 要求 → 設計 → 実装 定理を公理から証明するように、プログ ラムを要求から導出する。 そんな賢者の石は見つからない。 39
  13. II ならば文書はどうあるべきか 前回の結論の更新:ADR は転送装置ではなく,足場に過ぎない 協働 理論そのものの継承 文書の目的 理論を運ぶことではない。 Parnas の文書

    全体像(内側の地図) 次の人が理論を築く速度を 上げること。 ADR 境界(選ばなかった道) 前回:「ADR で理由を残す」 → 今回:「ADR は理論の境界を示す足場」 46
  14. III AI 時代、理論は誰が持つのか 私たちはライブラリ内部の理論を持っていない 自分のアプリケーション(理論を持つ) それでも理論はある ライブラリ A ライブラリ B

    内部は知らない 内部は知らない ライブラリ C 内部は知らない 境界の契約は知っている ・何をするか ・どう組み合わせるか ・境界で何が保証されるか 理論は全粒度で持つものではない。抽象化 こそが、理論を人の頭に収める。 49
  15. III AI 時代、理論は誰が持つのか 構造は変わらない。粒度とパラメータが変わった 変わったパラメータ 理論を持つ粒度 行・関数 ボックスの境界 保持者の寿命 年

    セッション 作り直しのコスト 高い 低い 変わらない構造(Naur) ・理論は保持者とともにある ・保持者が去ればプログラムは死ぬ ・蘇生より、作り直しがよい 52
  16. 参考文献 Naur (1985) Programming as Theory Building. Microprocessing and Microprogramming

    15(5). Parnas & Clements (1986) A Rational Design Process: How and Why to Fake It. IEEE TSE 12(2). Reeves (1992) What Is Software Design? C++ Journal. Ryle (1949) The Concept of Mind. Cockburn (2001) Agile Software Development. Naur の再録と解説。 Storey ほか (2025〜) 理解負債(cognitive debt)。 59