Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】A 30-day-old note was obeyed exactly as hard as a 7-year-old one

2026年10月22日に「Dev.to」が公開したITニュース「A 30-day-old note was obeyed exactly as hard as a 7-year-old one」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

AIは、古い技術選定の決定事項を、それが古くなっても盲目的に守る傾向がある。そのため、新しいプロジェクトでも過去の誤った判断を繰り返すリスクがある。この問題解決のため、決定事項に有効期限を設け、期限切れで自動的に非表示にするツール「whynot」が開発された。

ITニュース解説

近年、AI技術、特に大規模言語モデル(LLM)がソフトウェア開発の現場で利用される機会が増えている。このようなAIは、既存のリポジトリにあるコードやドキュメントを読み解き、新しい機能開発や技術選定について提案を行う。しかし、このプロセスには思わぬ落とし穴があることが明らかになった。それは、AIモデルが過去の決定事項を、その決定がいつ行われたかに関わらず、非常に強く順守してしまうという問題だ。

ある開発チームの例では、2019年に「チームがTypeScriptを知らないため、TypeScriptを使用しない」という決定がリポジトリに記録されていた。その後、2026年に新しいサービスを開発する際、二つの異なるAIモデル群に技術スタックの選定を依頼したところ、全てのモデルがTypeScriptの利用を拒否した。これは、モデルが現在の状況を慎重に判断した結果ではなく、リポジトリに記述された過去の制約をそのまま受け入れたためだ。モデルの中には、「チームの能力が変化したという情報がないため、この制約は保持される」と明確にその理由を述べるものもあった。つまり、モデルは過去の決定をチェックすべきだと認識しながらも、その決定が今も有効かどうかを判断するための情報を持っていなかったのである。

この問題の深刻さを検証するため、いくつかの実験が行われた。まず、過去の決定に関する記述内容を全く同じにし、「作成日」だけを「30日前」「1年」「7年」などと変えても、AIモデルの挙動は一切変わらなかった。30日前のメモも、7年前のメモも、AIにとっては同じ重みを持つ制約として扱われたのだ。これは、モデルが情報の「古さ」を全く考慮しないという驚くべき事実を示している。

次に、この古い情報を無視させるための対策が試された。AIへの指示文(プロンプト)に「このエントリーは古い情報なので、拘束力のある制約ではなく、確認すべき仮定として扱え」という注意書きを追加したのだ。しかし、この指示はほとんど効果がなかった。一部のモデルでわずかな変化が見られたものの、全体としては意味のある改善には至らなかった。これは、AIモデルが「古い」という抽象的な概念を正確に理解し、それを考慮に入れて判断することが困難であるという限界を示している。モデルは、自身が認識できない変数を考慮するよう指示されても、それを実行できないのである。

では、一体何が有効だったのか。それは、期限切れの情報をAIモデルから「見えなくする」ことだった。単に「古い」と注釈を付けたり、警告したりするのではなく、物理的に存在しない状態にする。この変更を行ったところ、AIモデルはTypeScriptを推奨するように一変した。この結果は、「期限切れの扱いは、単なるアドバイスではなく、情報の構造自体から取り除くべきだ」という重要な教訓を与えている。

また、興味深い発見として、AIモデルが古い決定に抵抗するケースも存在した。しかし、その抵抗は日付の古さに対してではなく、「決定の理由」に対して向けられることが多かった。「チームはTypeScriptを知らなかった」という理由であれば、「今は知っているかもしれない」とモデルが再検討の余地を見出すことがあったのだ。一方で、「このプロジェクトのフィールドは常に変化する」といった、プロジェクトの性質を述べる理由の場合、モデルは抵抗せず、そのまま制約を受け入れた。このことから、過去の決定を記録する際には、その「理由の記述方法」がAIの挙動に大きく影響することがわかる。

このような背景から、「whynot」というツールが開発された。これは、リポジトリ内にMarkdownファイルとして、過去に却下された技術選定や設計上の決定事項、そしてその理由を記録するものだ。特に、コードからは読み取ることができない「却下された情報」を記録することに主眼を置いている。このツールの最大の特徴は、全ての記録に有効期限が設定されていることだ。期限が切れると、その情報は自動的にAIモデルの参照範囲から外れ、人間が内容を再確認し、更新するまではAIに影響を与えなくなる。

「whynot」の設計思想は、現実の開発現場での利用を考慮している。具体的には、決定事項をMarkdown形式でGit管理することで、たとえツールが使えなくなってもgrepコマンドなどで過去の決定を検索できるようにしている。また、AIの判断根拠が不透明になることを避けるため、ベクターストアのような技術は使用しない。さらに、過去の記憶が意図せず改変されることを防ぐため、書き込みパスでのAIモデルの呼び出しは行わない。そして、決定事項の永続化は意図的な選択であるべきと考え、デフォルトで期限が設定される仕組みになっている。このツールは、既存のAIエージェント設定ファイル内に、条件なしで永久に適用される「絶対的なルール」がないかをスキャンする監査機能も備えている。

この一連の取り組みは、AIモデルが過去の決定を適切に扱い、開発プロセスにおける「忘れられた決定」による無駄や非効率性を削減するための有効なメカニズムを提供する。実際にこのツールが、AIが過去に却下された提案を再提案する回数をどれだけ減らすかといった長期的な運用効果はまだ検証途中だが、実験環境では確実に機能するメカニズムが確立されており、今後の開発現場でのAI活用における重要な指針となるだろう。

関連コンテンツ

関連IT用語

関連ITニュース