<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>ハーネスエンジニアリング on hdknr blog</title><link>https://hdknr.github.io/blogs/tags/%E3%83%8F%E3%83%BC%E3%83%8D%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0/</link><description>Recent content in ハーネスエンジニアリング on hdknr blog</description><generator>Hugo -- 0.157.0</generator><language>ja</language><lastBuildDate>Mon, 27 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://hdknr.github.io/blogs/tags/%E3%83%8F%E3%83%BC%E3%83%8D%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0/index.xml" rel="self" type="application/rss+xml"/><item><title>Claude Harness</title><link>https://hdknr.github.io/blogs/wiki/tools/claude-harness/</link><pubDate>Mon, 27 Apr 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/wiki/tools/claude-harness/</guid><description>Claude Code の拡張機構（hooks / permissions / skills / MCP）をワンパッケージで組み込んだ外装プラグイン。v4.0.0 &amp;#34;Hokage&amp;#34; で Go ネイティブ化・harness.toml 1 本管理を実現</description></item><item><title>Graphite</title><link>https://hdknr.github.io/blogs/wiki/tools/graphite/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/wiki/tools/graphite/</guid><description>スタックドPR・マージキュー・AI コードレビューで AI ファースト開発を加速する GitHub PR ワークフロー拡張プラットフォーム</description></item><item><title>エージェントハーネスとユーザーハーネス — ハーネスエンジニアリングの全体像を正しく理解する</title><link>https://hdknr.github.io/blogs/posts/2026/04/%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%83%8F%E3%83%BC%E3%83%8D%E3%82%B9%E3%81%A8%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8F%E3%83%BC%E3%83%8D%E3%82%B9-%E3%83%8F%E3%83%BC%E3%83%8D%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E5%85%A8%E4%BD%93%E5%83%8F%E3%82%92%E6%AD%A3%E3%81%97%E3%81%8F%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/04/%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%83%8F%E3%83%BC%E3%83%8D%E3%82%B9%E3%81%A8%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8F%E3%83%BC%E3%83%8D%E3%82%B9-%E3%83%8F%E3%83%BC%E3%83%8D%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E5%85%A8%E4%BD%93%E5%83%8F%E3%82%92%E6%AD%A3%E3%81%97%E3%81%8F%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B/</guid><description>&lt;p&gt;r.kagaya 氏（@ry0_kaga、AstarMinds CTO）が Zenn に公開した記事がある。「&lt;a href="https://zenn.dev/r_kaga/articles/329afdc151899f"&gt;ハーネスエンジニアリングとは何で、何ではないのか 〜作る側のハーネス、使う側のハーネス〜&lt;/a&gt;」という記事だ。ハーネスエンジニアリングをめぐる言葉の混乱を整理し、エージェントハーネスとユーザーハーネスという2層の区分を提示している。&lt;/p&gt;
&lt;p&gt;CLAUDE.md や Skills を書けば「ハーネスエンジニアリングをやっている」と言える。でも、それはハーネスエンジニアリングの全体ではない。この記事ではその全体像を整理する。&lt;/p&gt;
&lt;h2 id="そもそもハーネスの定義が割れている"&gt;そもそも「ハーネス」の定義が割れている&lt;/h2&gt;
&lt;p&gt;前提として、ハーネスエンジニアリングという言葉には統一された定義がない。同じ言葉を使いながら、各社・各人が指しているものが違う。&lt;/p&gt;
&lt;h3 id="用語の来歴"&gt;用語の来歴&lt;/h3&gt;
&lt;p&gt;「ハーネス」の原義は馬具だ。馬を馬車に繋ぎ、方向を制御し、力を伝達する装備。ソフトウェア文脈では 2020 年の &lt;a href="https://github.com/EleutherAI/lm-evaluation-harness"&gt;lm-eval-harness&lt;/a&gt;（言語モデル評価ハーネス）が初出とされる（r.kagaya 氏による整理）。2024 年に All Hands AI / OpenHands が「エージェントハーネス」に拡張。2026 年に Mitchell Hashimoto（Terraform 創業者）が「Engineer the Harness」と命名し、OpenAI の記事で広まった。&lt;/p&gt;
&lt;h3 id="各社の定義"&gt;各社の定義&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;誰が&lt;/th&gt;
&lt;th&gt;何と言っているか&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;LangChain (Vivek Trivedy)&lt;/td&gt;
&lt;td&gt;「Agent = Model + Harness。モデルでなければハーネス」&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;「LLM を呼び出し、ツールコールをルーティングする制御ループ」&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;宣言的制約 + サンドボックス + スケーリング&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Böckeler / Martin Fowler&lt;/td&gt;
&lt;td&gt;サイバネティクス的制御。フィードフォワード × フィードバック&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phil Schmid (Hugging Face)&lt;/td&gt;
&lt;td&gt;Model = CPU, Harness = OS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bedi (Composio CEO)&lt;/td&gt;
&lt;td&gt;「システムエンジニアリングのサブセットに新しい名前をつけているだけ」&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;LangChain の「モデルでなければハーネス」は極めて広い。Anthropic の「制御ループ」はエージェント実装寄り。「そもそも新しい概念ですらない」と言う人もいる。さらにベンダー（作り手）と利用者（使い手）で意味が違うという構造的な問題もある。&lt;/p&gt;</description></item><item><title>Graphite 徹底解説 — スタックドPRとマージキューがAIファースト開発を加速する理由</title><link>https://hdknr.github.io/blogs/posts/2026/04/graphite-%E5%BE%B9%E5%BA%95%E8%A7%A3%E8%AA%AC-%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%83%89pr%E3%81%A8%E3%83%9E%E3%83%BC%E3%82%B8%E3%82%AD%E3%83%A5%E3%83%BC%E3%81%8Cai%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88%E9%96%8B%E7%99%BA%E3%82%92%E5%8A%A0%E9%80%9F%E3%81%99%E3%82%8B%E7%90%86%E7%94%B1/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/04/graphite-%E5%BE%B9%E5%BA%95%E8%A7%A3%E8%AA%AC-%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%83%89pr%E3%81%A8%E3%83%9E%E3%83%BC%E3%82%B8%E3%82%AD%E3%83%A5%E3%83%BC%E3%81%8Cai%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88%E9%96%8B%E7%99%BA%E3%82%92%E5%8A%A0%E9%80%9F%E3%81%99%E3%82%8B%E7%90%86%E7%94%B1/</guid><description>&lt;p&gt;&lt;a href="https://hdknr.github.io/blogs/posts/2026/04/2026-04-17-ai-first-harness-engineering-creao/"&gt;CreaoAI が25名で6週間のリリースサイクルを1日に短縮した事例&lt;/a&gt;では、PR 管理ツールとして &lt;strong&gt;Graphite&lt;/strong&gt; が採用されていた。1日8回デプロイ・AI が大量に PR を量産する運用で、素の GitHub PR フローは何が詰まり、Graphite は何を解決するのか。本記事では Graphite の3本柱（スタックドPR・マージキュー・AIレビュー）を、CLI コマンドと具体的な運用シナリオで解説する。&lt;/p&gt;
&lt;h2 id="graphite-とは"&gt;Graphite とは&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://graphite.com/"&gt;Graphite&lt;/a&gt; は GitHub 上の PR ワークフローを拡張する開発者プラットフォーム。2025年3月に Anthropic から $52M の Series B を調達し、同時に AI コードレビュー「Diamond」をローンチした（現在は &lt;strong&gt;Graphite Agent&lt;/strong&gt; に名称統合）。元 Airbnb・Meta のエンジニア出身チームが、Meta 内部で使われていた Phabricator / Sapling 的なスタック開発体験を GitHub に持ち込んだのが出発点だ。&lt;/p&gt;
&lt;p&gt;主要機能は3つに整理できる。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;スタックドPR&lt;/strong&gt; — 大きな変更を依存関係のある小さな PR の連鎖に分割する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;マージキュー&lt;/strong&gt; — スタックを理解した状態で main にマージを直列化する（stack-aware）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Graphite Agent（旧 Diamond）+ Chat&lt;/strong&gt; — AI によるコードレビューと対話的修正&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="スタックドpr大きな差分を小さなレビュー単位の連鎖に分解する"&gt;スタックドPR：大きな差分を「小さなレビュー単位の連鎖」に分解する&lt;/h2&gt;
&lt;h3 id="何が問題だったのか"&gt;何が問題だったのか&lt;/h3&gt;
&lt;p&gt;AI エージェントや生産性の高い開発者は、1つのフィーチャーを実装する過程でしばしば以下のような複数階層の変更を生む。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DBスキーマの追加&lt;/li&gt;
&lt;li&gt;それを使う API エンドポイント&lt;/li&gt;
&lt;li&gt;認証ミドルウェアの更新&lt;/li&gt;
&lt;li&gt;フロントエンドの呼び出し&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;従来の GitHub PR モデルだと選択肢は2つしかない。&lt;/p&gt;</description></item><item><title>「AIファースト」戦略の本当の意味 — ハーネスエンジニアリングで25人チームが6週間を1日に短縮した方法</title><link>https://hdknr.github.io/blogs/posts/2026/04/ai%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88%E6%88%A6%E7%95%A5%E3%81%AE%E6%9C%AC%E5%BD%93%E3%81%AE%E6%84%8F%E5%91%B3-%E3%83%8F%E3%83%BC%E3%83%8D%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%A725%E4%BA%BA%E3%83%81%E3%83%BC%E3%83%A0%E3%81%8C6%E9%80%B1%E9%96%93%E3%82%921%E6%97%A5%E3%81%AB%E7%9F%AD%E7%B8%AE%E3%81%97%E3%81%9F%E6%96%B9%E6%B3%95/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/04/ai%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88%E6%88%A6%E7%95%A5%E3%81%AE%E6%9C%AC%E5%BD%93%E3%81%AE%E6%84%8F%E5%91%B3-%E3%83%8F%E3%83%BC%E3%83%8D%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%A725%E4%BA%BA%E3%83%81%E3%83%BC%E3%83%A0%E3%81%8C6%E9%80%B1%E9%96%93%E3%82%921%E6%97%A5%E3%81%AB%E7%9F%AD%E7%B8%AE%E3%81%97%E3%81%9F%E6%96%B9%E6%B3%95/</guid><description>&lt;p&gt;MetaのGenAIチーム（LLaMA）出身のCo-FounderであるPeter Pang（@intuitiveml）が率いるエージェントプラットフォーム企業CreaoAI（25名）が、「AIファースト」を本気で実践した結果、コードの99%をAIが書き、かつてのリリースサイクル6週間を1日に短縮した方法を解説している。&lt;/p&gt;
&lt;p&gt;元記事タイトルは &amp;ldquo;Why Your &amp;lsquo;AI-First&amp;rsquo; Strategy Is Probably Wrong&amp;rdquo;。@SuguruKun_ai がX（旧Twitter）のスレッドで日本語解説している。&lt;/p&gt;
&lt;h2 id="aiを導入した会社と前提に組み直した会社の違い"&gt;AIを「導入した」会社と「前提に組み直した」会社の違い&lt;/h2&gt;
&lt;p&gt;多くの企業は既存のプロセスにAIを乗せています。エンジニアがCursorを開き、PMがChatGPTで仕様書を書く――ワークフローは変わらず、効率が10〜20%上がるだけです。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AIファーストとはまったく別物&lt;/strong&gt;です。AIファーストとは、「AIがメインのビルダーである」という前提でプロセス・アーキテクチャ・組織を再設計することです。「どうすればAIがエンジニアの役に立てるか？」ではなく、「どう再構築すればAIがビルドし、エンジニアが方向と判断を提供できるか？」という問いです。&lt;/p&gt;
&lt;h2 id="ハーネスエンジニアリングとは何か"&gt;ハーネスエンジニアリングとは何か&lt;/h2&gt;
&lt;p&gt;OpenAIが2026年2月に発表した概念で、CreaoAIが実践の中で独自に到達していたアプローチと一致しました。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;エンジニアリングチームの主な仕事はもはやコードを書くことではなく、エージェントが有用な作業を行える「環境（ハーネス）」を整えることである。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;失敗が起きたとき、解決策は「もっと頑張れ」ではなく「どのケイパビリティが欠けているか、エージェントにとって読み解けるようにするにはどうすればよいか」を問うことです。&lt;/p&gt;
&lt;h2 id="3つのボトルネックを解消した"&gt;3つのボトルネックを解消した&lt;/h2&gt;
&lt;p&gt;CreaoAIはAI移行前に3つの深刻な問題を抱えていました。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;① プロダクトマネジメントのボトルネック&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;エージェントは2時間でフィーチャーを実装できます。数週間の計画サイクルがボトルネックになります。仕様書レビューではなく、プロトタイプ→リリース→テスト→反復のループで動く必要があります。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;② QAのボトルネック&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ビルド時間2時間・テスト時間3日では話になりません。AIが書いたコードをAIが構築したテストプラットフォームで検証し、バリデーションを実装と同速度で動かします。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;③ ヘッドカウントのボトルネック&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;競合は100倍の人員。CreaoAIは25名。採用では追いつけないため、設計で追いつく必要がありました。&lt;/p&gt;
&lt;h2 id="アーキテクチャ統合モノレポへ移行した理由"&gt;アーキテクチャ統合：モノレポへ移行した理由&lt;/h2&gt;
&lt;p&gt;複数リポジトリにまたがる変更はAIエージェントにとって「不透明」でした。AIは全体像を把握できず、クロスサービスの影響を推論できません。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;モノレポへ統合した一番の理由：AIがすべてを見られるようにするため。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ハーネスエンジニアリングの原則では「エージェントが検査・検証・変更できる形にコードを引き込むほどレバレッジが増す」とされる。1週間かけて新設計を策定し、さらに1週間でエージェントを使ってコードベース全体をリアーキテクチャした。&lt;/p&gt;
&lt;h2 id="技術スタック詳細"&gt;技術スタック詳細&lt;/h2&gt;
&lt;h3 id="インフラaws"&gt;インフラ：AWS&lt;/h3&gt;
&lt;p&gt;自動スケーリングのコンテナサービスとサーキットブレーカーロールバックで運用。デプロイ後にメトリクスが劣化すると自動でリバートします。CloudWatchを中枢神経系として使い、25以上のアラームとカスタムメトリクスで全サービスから構造化ログを収集します。&lt;/p&gt;
&lt;h3 id="cicdgithub-actions6フェーズ"&gt;CI/CD：GitHub Actions（6フェーズ）&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Verify CI → Build/Deploy Dev → Test Dev → Deploy Prod → Test Prod → Release
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CIゲートは型チェック・リント・ユニットテスト・統合テスト・Dockerビルド・Playwright E2Eテスト・環境パリティチェックをすべて必須で実施。手動オーバーライドは存在しない。パイプラインが決定論的であるため、エージェントが結果を予測して障害を推論できる。&lt;/p&gt;
&lt;h3 id="aiコードレビューclaude-opus-46"&gt;AIコードレビュー：Claude Opus 4.6&lt;/h3&gt;
&lt;p&gt;PRのたびに3つのClaudeレビューパスを並列実行します。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;コード品質&lt;/strong&gt; — ロジックエラー、パフォーマンス問題、保守性&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;セキュリティ&lt;/strong&gt; — 脆弱性スキャン、認証境界チェック、インジェクションリスク&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;依存関係スキャン&lt;/strong&gt; — サプライチェーンリスク、バージョン競合、ライセンス問題&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;1日8回デプロイする状況で人間レビュアーがすべてのPRに集中し続けることは不可能だ。これはサジェスチョンではなくレビューゲートである。&lt;/p&gt;</description></item></channel></rss>