LLM 支援によるコード品質向上のための私の agent.md

2026/08/24 2:59

LLM 支援によるコード品質向上のための私の agent.md

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

本文では、生成された Rust コードがコンパイル失敗したり構造を失った ("スパゲッティ") という初期の困難を経て、LLM 支援によるコード品質を改善するためのプロンプトベースのソリューション"Agent.md"を紹介する。2026 年 3 月に agentic IDE が導入されて反復が可能になったとしても、まだ「マジックナンバーを避ける」「関数名を短くする」などの手動で繰り返し提案が必要だった。一方、Agent.md はプロンプトに直接注入されることで、簡潔なコメント/コミットメッセージを使用する;マジックナンバーではなく定数または列挙型として再帰的な値を抽出する;関数名は 30 キャラ以内とする;パラメータに対してはブール値よりも列挙型を優先する;そして制御層・UI がデータベースクエリや生ハードウェアを直接呼び出さないよう層境界階層を厳守するなど、スタイル好悪とルールを直接的にコード化する。コミットメッセージの規約は、主題と本文を分けること、主題は 50 キャラ以下(絶対値 72 キャラ)であり命令法で記述し、本文は 72 キャラで折り返し、実行内容・理由の説明を行うが「どのように」ではなく「何を・なぜ」に焦点を当てることで定義される。文脈の希薄化を軽減するためには、機能ごとに新しいセッションを開始するか、コード品質が低下した際にハネスに agent.md を再読み込みすることを明示的に依頼することが推奨される。さらに、エージェントに agent.md の自動更新を依頼し、手動編集を回避することも可能である。これにより、Agent.md は人間の手間を最小限に抑えつつ高品質なコード維持を実現する、自律的かつ持続可能な AI 支援開発プロセスへと開発を簡素化する。

本文

LLM を活用してコード品質を向上させるための「agent.md」実践記

1. 経緯:期待と課題の浮き沈み

  • 2025 年中頃(第 1 次挑戦)
    • Rust で書かれた mDNS インプリメンテーション
      libadbmdns
      を対象に試行。
    • 結果: LLM が生成したコードはコンパイルすらできない状態でした。期待外れの結果となりました。
  • 2026 年 1 月(第 2 次挑戦)
    • 結果改善: コード品質が格段に向上。
      • 複雑なインデックス付きバイナリーヒープクラスの記述が可能に。
      • Windows IOCP インプリメンテーションにおける極めて稀なバグまで特定できた。
  • 課題の再発見(2026 年春)
    • コード品質は依然として低水準。スパゲッティ・コード(コメントなし、構造不備)。
    • 開発速度の向上メリットが、生成後のクリーンアップ作業で相殺されてしまう現実。

2. 転換点:反復的なレビューによる改善

  • 2026 年 3 月からの取り組み
    • Antigravity や VS Code の Claude Code プラグインなどのエージェント型 IDEを活用開始。
    • 「ステージ化されたコード」に対して「反復的に処理」というワークフローへ移行。
  • 手法:無限の忍耐力を持つレビュアーの模倣
    • マジックナンバーの使用禁止
    • 部分へのコメント追加指示(自己説明)
    • 関数名の短縮指示
  • 成果と残る課題
    • コード品質は劇的に改善し、手作業作成レベルに近づく。
    • しかし、同じ指摘を各セッションで繰り返すため、プロセス自体が面倒

3. 「agent.md」の導入による自動化

基本コンセプト

  • ハネス(コーディング支援環境)は
    agent.md
    を読み込み、プロンプトにインジェクトする。
  • コーディングスタイルの好みを微調整するための最適な場所
  • 必要に応じてプロジェクトルートディレクトリに配置するか、
    gemini.md
    claude.md
    をシンmlink することで有効化可能。

設定ファイル:FAB's AGENT.MD

以下のルールを定義し、生成されるコード品質を著しく向上させる。

コーディングスタイルの徹底

  • 文章と記述:
    • 人間向けの文書(コメント、コミットメッセージなど)は言葉を節約する。
    • 要点のみを伝え、「少なくても多くが生まれる」意識を持つ。
    • 超絶表現や称賛は避け、冷たい事実だけを提示する。
  • 定数と変数:
    • マジックナンバーや文字列を避ける。
    • 反復利用される値は説明的な定数(
      const
      ) または
      enum
      に抽出する。
    • 仕様由来の値(例:HTTP 200 OK)は例外なく定数とする。
  • 制御フロー:
    • インデント量を削減し、Arrow パターンを避ける。
    • 早期リターンと継続 (
      continue
      ) を活用する。
    • 単一行の
      if
      文であっても必ず
      {}
      を使用する。
  • 関数・パラメータ:
    • 関数名は30 文字以内に収める(短くする)。
    • パラメータにはブール値ではなく
      enum
      を使用し、意味を明確にする。
  • 可読性:
    • 論理的なコードブロックの間に空行を挿入する。
    • ブロックの説明は簡潔かつ要点を押さえたコメントで付ける(例示や ASCII 図案も推奨)。

アーキテクチャと設計原則

  • メンバー可視性:
    • 全てのフィールドと関数はデフォルトで
      private
      と保つ。
    • 外部アクセスが必要な場合は明確な理由を示す。
    • private
      から
      internal/public
      への変更は、ユーザーからの明確な承認を得るまで行わない。
  • アブストラクション:
    • 下位機構(ハードウェア I/O、セクタ解析など)は専用ドライバまたはレイヤーにカプセル化し、上層にはクリーンな API を公開する。
  • レイヤー境界の厳守:
    • 各レイヤーは直下の近接レイヤーのみと通信する。
    • 「穴を開ける」行為(コントローラーが直接 DB クエリを実行するなど)は一切禁止。常に中間サービス経由とする。
  • 保守性:
    • 実装する機能以外のコードブロックには手を触れない(既存ブロックへのコメント追加も避ける)。
    • 変更行数を可能な限り最小化する。

コミットメッセージの規則

Git コミットメッセージを作成する際は、以下の7 つのルールを厳守する:

  1. サブジェクト行と本文は単一空白行で区切る。
  2. サブジェクト行は50 文字以内(上限 72 文字)に制限し厳格に守る。
  3. サブジェクト行の頭文字を大文字にする。
  4. サブジェクト行は句読点で終わらせない。
  5. 命令法を用いる(例:「修正済みの」ではなく「修正する」)。検証式文脈に適合する必要がある。
  6. 本文は手動で72 文字ごとに改行し、Git フォーマティング問題を回避する。
  7. 何をして、なぜやったか」を説明。「どのように」はコード自体が担当する。

重要なワークフローの「トリック」

  • バグ修正時の手順:
    • プロンプトにバグ修正指示が出た場合、即座に修正コードを書くのを待つ。
    • まずテストを書き、失敗を確認してから、修正コードを追加しテストをパスさせる。

4. 注意点と限界

  • LLM の性質:
    • コード品質向上は「魔法」ではなく、検証と反復作業が常に必要。
    • LLM は幻覚を起こしやすいため、完全な自動依存は非現実的。
  • アーキテクチャへの集中:
    • この手法により、低レベルのコード確認から解放され、アーキテクチャや設計に焦点を当てられるようになった。

5. 「コンテキスト希薄化」への対処法

  • 現象:
    • コンテキストが長くなるほど、モデルは指示よりも前後の部分を重視する(Lost in the Middle)。
  • 対策策:
    • コンテキストを短く保つ: 各機能ごとに新しいセッションを開始する。
    • 明示的なリロード: ハネスに
      agent.md
      を再読み込みさせる。
      • コード品質が低下している場合、**「agent.md を再読み込み」**と入力することで改善可能。

6. まとめ:agent.md の自動更新

  • 新しいルールを追加しても、エディタを頻繁に開く必要はありません。
  • アーティスト(エージェント)に対して
    agent.md
    の更新を直接依頼するだけで、最新の実践規則が適用されます。

同じ日のほかのニュース

一覧に戻る →

2026/08/24 4:23

従業員エンジニアとして課題を見出す方法

## Japanese Translation: 上級エンジニアは、特定のタスクの実行から、組織的なパターンや根本原因を独立して特定することへと焦点の本質的な転換を行う必要があります。初期の依頼に対して直ちに行動するのではなく、「スポンジ」のように日常的な雑音を吸収し、表面的な症状に対して真のニーズを検証すべきです。このアプローチでは、即座の解決策への要求を無視して workflows(ワークフロー)を実際に観察することが必要であり、そのような忍耐は低価値な一回限りの依頼が自然にフィルタリングされることを可能にし、複数の独立したチームで見られる反復的なパターンを明らかにすることで、より大きな戦略的投資を正当化します。従来の即座の行動という期待とは異なり、この戦略は、複数の部門の問題を目撃してきたクロスファンクショナルな専門家と相談し、共通の問題の形状をより速く定義することに依存しています。 実装前に、チームは捨てられるプロトタイプを使用して仮説を検証し、不確かな概念を直ちにプレッシャーテストします。価値が不足しているか技術的な障壁に直面するアイデアは、厳格な自己説得および公式なレビューを通じて見送られます。最終的に、この移行により、個々のエンジニアがすべてのプロジェクトを所有することなく、信頼性と広範な対話を通じて組織のロードマップに影響を与えることが可能になります。共通のソリューションの形状を先に定義することで、チームは単に特定の機能のギャップを埋めるのではなく、組織の中核的な問題を解決するマルチユースケースのソリューションを提供できます。

2026/08/24 7:41

私が所有するものすべて

## 日本語訳: 要約:インスタ360 Link Web カメラ、ASUS ROG Swift モニター、Shure MV7 マイク、Elgato Cam Link 4K、Elgato Key Light Mini の 5 つの一般的な家電製品が、高度な AI ツールを用いて 2 週間以内の期間にリバースエンジニアリングされ、重大なセキュリティ脆弱性が明らかとなりました。最も緊急の発見事項は、弱い完全性チェック(例:単純なチェクサムまたは MD5 ハッシュ)、保護されていない更新パス、ウェブインターフェースまたはベンダー固有のプロトコルを通じてアクセス可能で、平凡な認証により守られているコマンドシェルなどです。例えば、Insta360 Link Web カメラは任意のファームウェアの書き込みが可能であり、アクティビティ LED などの安全性機能が無効化できます;Shure MV7 マイクは WebHID プレーンテキストシェルを通じて遠隔でのメモリアドレッシングおよび LED 制御を可能にし、これは単純な文字列比較による認証で守られています;Elgato Key Light Mini は UART への HTTP POST を通じて署名のないファームウェア更新を受け入れるように巧妙に操作され、これにより署名検証が無効化されます。研究チームはハードウェアコストの理由から修正されたファームウェアをフラッシュしなかったものの、 exploit の容易さの実証は、周辺機器が安全であると信じているユーザーにとって深刻なリスクを示しています。業界リーダーは即座に完全性メカニズムの強化、ベンダー固有コマンドの分離、そして無許可の改変や IoT ラインナップにおける遠隔乗っ取りを防ぐための堅牢な認証の実装を推進する必要があります。

2026/08/24 4:29

ドメインがメールプロバイダーと見なされる問題について(Google Workspace)(2025 年)

## Japanese Translation: 2026 年 8 月時点で、Google Workspace は、正当なドメイン登録を誤ってブロックしてしまう未解決の不具合を抱えています。この問題は、サインアップページの検証関数に存在する誤った正則表現パターンに起因しており、有効なドメインを保留済みメールプロバイダーとして誤分類してしまいます。具体的には、`web\\..*` というパターンが "web." で始まるすべてのドメイン(プレミアム TLD の `.one` も含む)をフラグ付けし、`me\\..*` というパターンは "me" で接頭されているドメイン(ウクライナ経済省の `me.gov.ua` など)をブロックします。また、検証リストには文脈が明確でない `alice\\..*` というエントリも含まれています。この欠陥の深刻さは、ウクライナ経済省のドメインの拒否といった高プロファイルな事例によって示されています。調査(エンジニアによるビデオレビューを含む)が行われたにもかかわらず、ユーザーには根本原因は説明されておらず、サポート担当者からはブラウザやデバイスを切り替えるような効果がない回避策が最初に推奨され、その後別の企業ドメインを使用することへの勧告に変わりました。デバッグ機能を通じてフロントエンドの検証機能を無効化するとユーザーがサインアップを進められ、この問題はこれらの破綻したパターンに限定されていることが確認されます。Google が問題のある正則表現エントリを検証配列から取り除くまで、影響を受けた組織はオンボーディングにおける継続的な障壁に直面し、代替メールプロバイダーへの依存か複雑な回避策の使用を余儀なくされます。この持続的な欠陥は、業務の継続性を阻害し、プラットフォームがドメイン所有権を正確に検証する能力に対する信頼を損なっています。

LLM 支援によるコード品質向上のための私の agent.md | そっか~ニュース