<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>ソフトウェア工学 on KnightLiブログ</title>
        <link>https://knightli.com/ja/tags/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%B7%A5%E5%AD%A6/</link>
        <description>Recent content in ソフトウェア工学 on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Fri, 15 May 2026 08:46:23 +0800</lastBuildDate><atom:link href="https://knightli.com/ja/tags/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%B7%A5%E5%AD%A6/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Vibe Coding を拒む：Matt Pocock の skills リポジトリが AI コーディングに工学的制約を足す</title>
        <link>https://knightli.com/ja/2026/05/15/matt-pocock-skills-ai-engineering-workflow/</link>
        <pubDate>Fri, 15 May 2026 08:46:23 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/15/matt-pocock-skills-ai-engineering-workflow/</guid>
        <description>&lt;p&gt;AI がコードを書く速度が上がるほど、プロジェクトが崩れる速度も上がり得る。問題はモデルが関数を生成できるかではなく、要件を理解し、チームの言葉に従い、既存アーキテクチャの中で小さく進められるかだ。&lt;/p&gt;
&lt;p&gt;Matt Pocock が公開した &lt;code&gt;mattpocock/skills&lt;/code&gt; は、vibe coding とは逆の方向を示している。AI に開発プロセス全体を任せるのではなく、成熟したソフトウェア工学の制約の中に置く。&lt;/p&gt;
&lt;p&gt;プロジェクト：&lt;a class=&#34;link&#34; href=&#34;https://github.com/mattpocock/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/mattpocock/skills&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;これは魔法の prompt ではない。要件確認、ドメインモデリング、TDD、診断、アーキテクチャレビューを、AI agent が使いやすい workflow にした skills の集合だ。&lt;/p&gt;
&lt;h2 id=&#34;まずアラインメント失敗を防ぐ&#34;&gt;まずアラインメント失敗を防ぐ
&lt;/h2&gt;&lt;p&gt;AI コーディングで最も多い失敗は、モデルが理解したと思ったら、実は曖昧な説明から推測していただけ、というものだ。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grill-me&lt;/code&gt; はこれを反転させる。コードを書く前に、AI を厳しいレビュアーにし、分岐、境界、未決事項を質問させる。&lt;/p&gt;
&lt;p&gt;たとえば「ログインページを作って」と頼んだら、先に聞くべきことは次のようなものだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;パスワード忘れはどう扱うか&lt;/li&gt;
&lt;li&gt;外部ログインをサポートするか&lt;/li&gt;
&lt;li&gt;ログイン失敗時のエラー表示はどうするか&lt;/li&gt;
&lt;li&gt;アカウントロック、CAPTCHA、リスク制御は範囲内か&lt;/li&gt;
&lt;li&gt;成功後はどこへ遷移するか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この段階は遅く見えるが、後の手戻りを減らす。コード生成が安くなるほど、曖昧な要件のコストは大きくなる。&lt;/p&gt;
&lt;h2 id=&#34;ドメイン言語をコンテキストに入れる&#34;&gt;ドメイン言語をコンテキストに入れる
&lt;/h2&gt;&lt;p&gt;次の問題は汎用語彙だ。モデルはチーム内の業務用語を知らないため、変数名、関数名、ドキュメントの言葉がずれていく。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grill-with-docs&lt;/code&gt; は質問しながら、&lt;code&gt;CONTEXT.md&lt;/code&gt;、ADR、ドメイン文書を確認する。確認済みの用語、境界、判断は、再利用できるコンテキストとして残せる。&lt;/p&gt;
&lt;p&gt;これはドメイン駆動設計のユビキタス言語に近い。チームが user ではなく customer、order ではなく transaction と呼ぶなら、AI もその言葉を使うべきだ。&lt;/p&gt;
&lt;p&gt;コンテキスト文書の価値は、情報量ではなく推測を減らすことにある。&lt;/p&gt;
&lt;h2 id=&#34;tdd-で生成速度を制御する&#34;&gt;TDD で生成速度を制御する
&lt;/h2&gt;&lt;p&gt;AI の危険は速さにある。昔は悪いコードを大量に書くにも時間がかかったが、今は数秒で数百行が出る。問題は速さそのものではなく、フィードバックループがないことだ。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tdd&lt;/code&gt; skill は RED-GREEN-REFACTOR を戻す。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ひとつの振る舞いに対して失敗するテストを書く。&lt;/li&gt;
&lt;li&gt;そのテストを通す最小実装を書く。&lt;/li&gt;
&lt;li&gt;リファクタリングする。&lt;/li&gt;
&lt;li&gt;次の縦スライスへ進む。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;重要なのは、ひとつずつ進めることだ。AI は実行し、人間は方向と境界を確認する。&lt;/p&gt;
&lt;h2 id=&#34;診断ループで複雑な問題を扱う&#34;&gt;診断ループで複雑な問題を扱う
&lt;/h2&gt;&lt;p&gt;バグに出会うと、多くの agent は答えを推測し、何度も修正して問題をさらに複雑にする。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;diagnose&lt;/code&gt; は先にフィードバックループを作らせる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;再現する&lt;/li&gt;
&lt;li&gt;最小化する&lt;/li&gt;
&lt;li&gt;仮説を立てる&lt;/li&gt;
&lt;li&gt;観測やログを足す&lt;/li&gt;
&lt;li&gt;修正する&lt;/li&gt;
&lt;li&gt;回帰テストを足す&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;古い方法だが、AI コーディングでは特に重要だ。AI は試行が得意だが、根因に近づいているかを判断するにはレールが必要になる。&lt;/p&gt;
&lt;h2 id=&#34;アーキテクチャを定期的に見る&#34;&gt;アーキテクチャを定期的に見る
&lt;/h2&gt;&lt;p&gt;単発のタスクが通っても、コードベースが良くなったとは限らない。AI の小さな変更が積み重なると、モジュール境界がぼやけ、インターフェイスが複雑になり、テストしづらくなる。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;improve-codebase-architecture&lt;/code&gt; のような skill は、現在のタスクから離れて全体を見る。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;責務が混ざっているモジュールはどこか&lt;/li&gt;
&lt;li&gt;複雑すぎるインターフェイスはどれか&lt;/li&gt;
&lt;li&gt;テストしづらい経路はどこか&lt;/li&gt;
&lt;li&gt;ドメイン言語と合わない命名はどれか&lt;/li&gt;
&lt;li&gt;収束すべき重複ロジックはどれか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは自動で大規模リファクタリングするためではない。構造化された観察と改善方向を出し、人間が判断するためのものだ。&lt;/p&gt;
&lt;h2 id=&#34;制限すべきは自由度&#34;&gt;制限すべきは自由度
&lt;/h2&gt;&lt;p&gt;この方法論の核心は単純だ。AI コーディングはモデルを自由に走らせることではなく、明確な目標、コンテキスト、テスト、停止条件を与えることだ。&lt;/p&gt;
&lt;p&gt;人間は問題定義、アーキテクチャ境界、業務上の取捨選択、受け入れ基準を担当する。AI はコード生成、テスト補完、反復修正、局所的なリファクタリングを担当する。&lt;/p&gt;
&lt;p&gt;AI が強くなっても、ソフトウェア工学の基礎は古くならない。要件整理、ドメイン言語、TDD、診断、アーキテクチャレビューは、むしろ重要になる。&lt;/p&gt;
&lt;p&gt;コードを書ける人は増える。差がつくのは、AI を保守可能で検証可能な工学体系に組み込めるかどうかだ。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ProgramBench 0% 解説：AI コーディングで本当に怖いのは失敗ではなく、ロードマップが明確になったこと</title>
        <link>https://knightli.com/ja/2026/05/10/programbench-ai-coding-zero-percent/</link>
        <pubDate>Sun, 10 May 2026 12:32:39 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/10/programbench-ai-coding-zero-percent/</guid>
        <description>&lt;p&gt;AI コーディング界隈に、新しいベンチマーク &lt;code&gt;ProgramBench&lt;/code&gt; が登場しました。表面的には、プログラマーにとって安心できる結果に見えます。主要 9 モデルは fully resolved 指標ですべて &lt;code&gt;0%&lt;/code&gt; で、1 つのタスクを完全に通過できたモデルはありません。&lt;/p&gt;
&lt;p&gt;しかし本当に警戒すべきなのは、今日の大規模モデルがまだできないことではありません。完全なソフトウェア工学が、初めて明確に評価・順位付け・反復最適化できる課題として定義されたことです。&lt;/p&gt;
&lt;p&gt;タスクが明確に定義されると、AI 業界が最も得意なことが始まります。ベンチマークを解き、反復し、ランキングを追い、かつて不可能だったものを少しずつ実用域へ近づけていくのです。&lt;/p&gt;
&lt;h2 id=&#34;programbench-は何を測っているのか&#34;&gt;ProgramBench は何を測っているのか
&lt;/h2&gt;&lt;p&gt;多くのコーディングベンチマークは、関数補完、bug 修正、単体テスト通過、あるいは既存プロジェクトへの小さな機能追加を測ります。&lt;code&gt;ProgramBench&lt;/code&gt; はそれよりずっと厳しいものです。ソースコードも、プロジェクト構造も、既存のテストケースも与えません。&lt;/p&gt;
&lt;p&gt;モデルに与えられる材料は主に 2 つだけです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;コンパイル済みの実行ファイル。&lt;/li&gt;
&lt;li&gt;そのプログラムの利用ドキュメント。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;モデルは実行ファイルを自分で動かし、入出力の振る舞いを観察し、コマンドライン引数、境界条件、エラーメッセージ、データ保存方法を理解したうえで、同じ振る舞いをするプログラムを再実装する必要があります。&lt;/p&gt;
&lt;p&gt;これはもはや「少しコードを書く」作業ではありません。簡略化されているとはいえ、完全なソフトウェア工学タスクです。要件を理解し、振る舞いを探索し、言語を選び、構造を設計し、ソースコードを書き、ビルド方法を用意し、隠しテストをできるだけ通過しなければなりません。&lt;/p&gt;
&lt;p&gt;ProgramBench の公式説明によると、現在は 200 個のタスクを含み、小規模なコマンドラインツールから PHP、FFmpeg、SQLite などの大型実プロジェクトまでを対象にしています。テストセットは agent-driven fuzzing によって生成され、合計で 248,000 件を超える行動テストがあります。&lt;/p&gt;
&lt;p&gt;テストの流れを分解すると、ProgramBench はおおよそ次の 4 つを測っています。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ドキュメントを読む力：プログラムが提供すべきコマンド、引数、出力を理解する。&lt;/li&gt;
&lt;li&gt;振る舞いを探索する力：バイナリを繰り返し実行し、正常入力、異常入力、境界条件を観察する。&lt;/li&gt;
&lt;li&gt;実装を再構築する力：言語とプロジェクト構造を自分で選び、振る舞いが近い代替プログラムを書く。&lt;/li&gt;
&lt;li&gt;隠しテストを通す力：通常の振る舞いだけでなく、エラー処理、出力形式、境界条件もできるだけ一致させる。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;つまり検索上の価値は「また新しいスコア表」だけではありません。より具体的に、ソースコードなしで、ドキュメントとブラックボックスの振る舞いだけを頼りに、大規模モデルが本物のソフトウェアをゼロから再現できるのかを問うています。&lt;/p&gt;
&lt;h2 id=&#34;なぜ結果は-0-なのか&#34;&gt;なぜ結果は 0% なのか
&lt;/h2&gt;&lt;p&gt;ProgramBench の主指標は fully resolved です。つまり、あるタスク内のテストがすべて通過して初めて完了とみなされます。現在の leaderboard では、9 モデルすべてがこの指標で &lt;code&gt;0%&lt;/code&gt; です。&lt;/p&gt;
&lt;p&gt;評価対象には Claude、GPT、Gemini などの系列が含まれ、すべて &lt;code&gt;mini-SWE-agent&lt;/code&gt; をベースライン agent として使っています。almost resolved 指標では Claude Opus 4.7 が最もよく、約 &lt;code&gt;3.0%&lt;/code&gt; のタスクで少なくとも 95% のテストを通過しました。Claude Opus 4.6 は &lt;code&gt;2.5%&lt;/code&gt;、Claude Sonnet 4.6 は &lt;code&gt;1.0%&lt;/code&gt; です。GPT 5.4、GPT 5.4 mini、Gemini 3.1 Pro、Gemini 3 Flash などは almost resolved でも &lt;code&gt;0.0%&lt;/code&gt; です。&lt;/p&gt;
&lt;p&gt;これは、今日の大規模モデルに軽量 agent を組み合わせても、ゼロから完全なソフトウェアを再構築することはまだできない、ということを示しています。最も簡単なタスクでさえ、すべての細部を完全に合わせるのは難しいのです。&lt;/p&gt;
&lt;p&gt;ただし注意も必要です。今回使われたのは &lt;code&gt;mini-SWE-agent&lt;/code&gt; であり、Claude Code でも Codex でもありません。より強力な coding agent、より多くのツールチェーン支援、より長い探索プロセスを使えば、結果は改善する可能性があります。より正確には、現在のモデルに軽量 agent を組み合わせただけでは、完全なソフトウェア再構築を安定して完了するには足りない、ということです。&lt;/p&gt;
&lt;h2 id=&#34;fully-resolved-と-almost-resolved-の意味&#34;&gt;fully resolved と almost resolved の意味
&lt;/h2&gt;&lt;p&gt;ProgramBench の結果を読むとき、最も誤解しやすいのがこの 2 つの指標です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;fully resolved&lt;/code&gt; は最も厳しい指標です。あるタスク内のすべての隠しテストを通過して初めて、完全に解決したとみなされます。境界条件、エラー形式、コマンド引数の振る舞いのどれか 1 つでも漏れれば fully resolved にはなりません。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;almost resolved&lt;/code&gt; は「ほぼ完成」に近い指標です。あるタスクで少なくとも 95% のテストを通過すれば almost resolved に入ります。モデルが大部分の振る舞いを再現できたかは分かりますが、そのプログラムが元のソフトウェアを置き換えられることを意味するわけではありません。&lt;/p&gt;
&lt;p&gt;だからこそ &lt;code&gt;0%&lt;/code&gt; は分けて見る必要があります。fully resolved の &lt;code&gt;0%&lt;/code&gt; は、モデルがまだ完全な納品をできないことを示します。一方で almost resolved の差を見ると、どのモデルが一部のタスクで復刻成功に近づいているかが分かります。たとえば Claude Opus 4.7 の almost resolved は約 &lt;code&gt;3.0%&lt;/code&gt; で、少数の比較的簡単なタスクでは確かに完成に近づいていますが、完全なソフトウェア再構築を安定して行うにはまだ遠い状態です。&lt;/p&gt;
&lt;h2 id=&#34;mini-swe-agent-が結果に影響する理由&#34;&gt;mini-SWE-agent が結果に影響する理由
&lt;/h2&gt;&lt;p&gt;今回の評価では、統一された &lt;code&gt;mini-SWE-agent&lt;/code&gt; が使われています。利点は公平性です。異なるモデルを同じ軽量 agent フレームワーク上で走らせるため、横比較がしやすくなります。&lt;/p&gt;
&lt;p&gt;しかし、それは上限も制限します。完全なソフトウェア再構築はモデル本体だけで決まるものではありません。agent が探索戦略を立てられるか、長期タスクを管理できるか、テストを自動生成できるか、失敗原因を反復的に特定できるか、プロジェクト構造を整理できるかにも左右されます。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mini-SWE-agent&lt;/code&gt; は最強のエンジニアリング環境というより、統一されたベースラインです。&lt;/p&gt;
&lt;p&gt;Claude Code や Codex のようなより完全な coding agent は、通常、より強力なツール呼び出し、コンテキスト整理、タスク分解、多段階修正能力を備えています。これらのツールに置き換えれば、結果はよくなる可能性があります。&lt;/p&gt;
&lt;p&gt;したがって ProgramBench の今回の結果は、現在のモデルが軽量 agent 環境では完全なソフトウェア再構築をまだできない、と理解するのが適切です。「モデルは永遠にできない」と証明しているわけでも、すべての商用 coding agent の上限を完全に測ったわけでもありません。&lt;/p&gt;
&lt;h2 id=&#34;swe-bench-との違い&#34;&gt;SWE-bench との違い
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;SWE-bench&lt;/code&gt; は AI コーディング領域ですでに重要なベンチマークです。実際の GitHub リポジトリで issue を読み、コードを修正し、パッチを提出させることで、モデルが現実の bug を解決できるかを測ります。&lt;/p&gt;
&lt;p&gt;しかし &lt;code&gt;SWE-bench&lt;/code&gt; は本質的には既存プロジェクトの修理です。車はすでにあり、技術スタック、ディレクトリ構造、コード組織、アーキテクチャ設計は人間が作っています。モデルは問題を見つけ、壊れた部品を直せばよいのです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ProgramBench&lt;/code&gt; は車を作り直すことに近いものです。この車は赤信号で止まり、歩行者に近づくと警笛を鳴らす、といった振る舞いだけが分かっています。構造、言語、モジュール、ビルド方法はすべて自分で決めなければなりません。&lt;/p&gt;
&lt;p&gt;だからこそ、はるかに難しくなります。局所的なパッチ能力だけでなく、ソフトウェアアーキテクチャ、システム推論、振る舞い探索、自動テスト、多段階修正、長期的なエンジニアリング設計を測るからです。&lt;/p&gt;
&lt;p&gt;違いは次の表で整理できます。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;観点&lt;/th&gt;
          &lt;th&gt;SWE-bench&lt;/th&gt;
          &lt;th&gt;ProgramBench&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;出発点&lt;/td&gt;
          &lt;td&gt;既存の GitHub リポジトリと issue&lt;/td&gt;
          &lt;td&gt;コンパイル済み実行ファイルと利用ドキュメント&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ソースコードの有無&lt;/td&gt;
          &lt;td&gt;ソースコードあり&lt;/td&gt;
          &lt;td&gt;ソースコードなし&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主なタスク&lt;/td&gt;
          &lt;td&gt;既存プロジェクト内の bug 修正&lt;/td&gt;
          &lt;td&gt;振る舞いから完全なプログラムを再実装&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;技術スタック&lt;/td&gt;
          &lt;td&gt;元プロジェクトで決定済み&lt;/td&gt;
          &lt;td&gt;モデルが自分で選択&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;プロジェクト構造&lt;/td&gt;
          &lt;td&gt;元プロジェクトに存在&lt;/td&gt;
          &lt;td&gt;モデルが自分で設計&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;テスト方法&lt;/td&gt;
          &lt;td&gt;パッチ提出後にテストを実行&lt;/td&gt;
          &lt;td&gt;隠し行動テストで復刻度を検証&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主な評価点&lt;/td&gt;
          &lt;td&gt;コード読解、問題特定、パッチ修正&lt;/td&gt;
          &lt;td&gt;振る舞い探索、システム抽象化、アーキテクチャ設計、完全実装&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;このため ProgramBench は、次段階の AI Coding の目標として見るのに適しています。「既存コードを修正する」段階から「完全なソフトウェアを再構築する」段階へ問題を押し進めているからです。&lt;/p&gt;
&lt;h2 id=&#34;0-は安全を意味しない&#34;&gt;0% は安全を意味しない
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;0%&lt;/code&gt; を見て、多くの人は「プログラマーの仕事は当面守られた」と感じるかもしれません。&lt;/p&gt;
&lt;p&gt;短期的には、それは間違いではありません。今日の大規模モデルは、特にソースコード、テストケース、プロジェクト構造がない状況では、完全なソフトウェア工学を安定してこなせません。要件定義、アーキテクチャ設計、長期保守、セキュリティ管理、チーム協業、業務理解は、いまも人間のソフトウェアエンジニアの重要な強みです。&lt;/p&gt;
&lt;p&gt;しかし &lt;code&gt;0%&lt;/code&gt; を「AI コーディングはここで頭打ち」と解釈するのは楽観的すぎます。&lt;/p&gt;
&lt;p&gt;ProgramBench が本当に変えたのは、問題定義です。以前から、AI がコードを補完できることも、bug を修正できることも知られていました。しかし「実行ファイルとドキュメントから完全なソフトウェアを再構築する」という課題は、明確な共通レースとして置かれていませんでした。今は 200 問、統一評価、統一ランキングになっています。&lt;/p&gt;
&lt;p&gt;これは、モデル企業、agent 企業、開発ツール企業が次にどこへ力を入れるべきかを知った、ということです。AI をコード片を書く存在から、完全なソフトウェアシステムを保守・再構築・納品する存在へ進化させる方向です。&lt;/p&gt;
&lt;h2 id=&#34;オフライン化と不正防止が必要な理由&#34;&gt;オフライン化と不正防止が必要な理由
&lt;/h2&gt;&lt;p&gt;ProgramBench の設計には重要な細部があります。不正防止です。&lt;/p&gt;
&lt;p&gt;初期のテストでは、モデルが GitHub から直接ソースコードを探したり、パッケージマネージャー経由でソースを含むパッケージをダウンロードしたり、ローカルのシステムキャッシュからダウンロード済みパッケージを探したりしました。これではテストの目的が壊れます。問うているのが「振る舞いからソフトウェアを再構築できるか」ではなく、「元のソースコードを見つけられるか」になってしまうからです。&lt;/p&gt;
&lt;p&gt;そのため ProgramBench はサンドボックスとオフライン環境を使います。インターネットアクセス、逆コンパイル、逆アセンブル、実行ファイル内容の読み取りは禁止です。モデルはプログラムを実行し、振る舞いを観察し、自分で実装することしかできません。&lt;/p&gt;
&lt;p&gt;この制限によって評価はよりクリーンになり、本当に答えたい問いに近づきます。大規模言語モデルは、プログラムの振る舞いとドキュメントから、自力で実行可能なソフトウェアプロジェクトを構築できるのか、という問いです。&lt;/p&gt;
&lt;h2 id=&#34;より警戒すべきなのはコード形態の変化&#34;&gt;より警戒すべきなのはコード形態の変化
&lt;/h2&gt;&lt;p&gt;ProgramBench には &lt;code&gt;0%&lt;/code&gt; よりもソフトウェアエンジニアが考えるべき発見があります。モデルが生成するコードは、人間のエンジニアが書くプロジェクトとは違う形になりがちです。&lt;/p&gt;
&lt;p&gt;公開資料では、モデルはより少ないファイル、浅いディレクトリ、少ない関数、そして長い単一関数を生成する傾向があるとされています。つまり、構造が明確で人間が保守しやすいソフトウェア工学プロジェクトではなく、巨大だが動くスクリプトを書きがちです。&lt;/p&gt;
&lt;p&gt;従来のソフトウェア工学の観点では、これは通常よくないコードです。ファイルが少なすぎる、関数が長すぎる、抽象化が足りない、モジュール境界が曖昧、といった問題は人間の保守を難しくします。&lt;/p&gt;
&lt;p&gt;しかし問題は、AI が人間の保守方法に合わせてコードを書く必要があるとは限らないことです。&lt;/p&gt;
&lt;p&gt;人間が抽象化、命名、ディレクトリ構造、モジュール境界を重視するのは、人間の記憶に限界があり、チーム協業が必要で、コードを長期的に再利用するからです。AI が長いコンテキスト、検索システム、自動テストを使ってコードを繰り返し書き直せるなら、人間に馴染みのある工学規範をそれほど必要としないかもしれません。&lt;/p&gt;
&lt;p&gt;これは現実的なリスクを生みます。将来の AI が書くソフトウェアは動き、場合によっては高速でも、人間が保守に介入することはますます難しくなるかもしれません。&lt;/p&gt;
&lt;h2 id=&#34;プログラマーが本当にアップグレードすべきもの&#34;&gt;プログラマーが本当にアップグレードすべきもの
&lt;/h2&gt;&lt;p&gt;ProgramBench の結果は、プログラマーにとって単純な朗報でも悲報でもありません。&lt;/p&gt;
&lt;p&gt;短期的には、完全なソフトウェア工学はまだ難しく、この benchmark だけでプログラマーがすぐ失業するわけではありません。特にアーキテクチャ判断、要件定義、セキュリティ管理、品質検収、業務理解は、今も人間が責任を持つ必要があります。&lt;/p&gt;
&lt;p&gt;長期的には、プログラマーの仕事はさらに上流へ移ります。本当に危ないのは「コードを書けない人」ではなく、コードしか書けず、問題を定義できず、結果を検証できず、ツールチェーンを組織できず、リスクを制御できない人です。&lt;/p&gt;
&lt;p&gt;未来のソフトウェアエンジニアは、より次のような役割に近づくかもしれません。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;要件定義者：曖昧なビジネス課題を実行可能な目標に変える。&lt;/li&gt;
&lt;li&gt;システム検収者：AI が生成した結果が本当に要件を満たしているか判断する。&lt;/li&gt;
&lt;li&gt;ツールチェーン組織者：モデル、agent、テスト、デプロイ、監視を組み合わせる。&lt;/li&gt;
&lt;li&gt;品質責任者：安全性、保守性、境界条件、長期リスクを管理する。&lt;/li&gt;
&lt;li&gt;ビジネスと技術の翻訳者：現実の問題をエンジニアリングシステムが扱える制約へ変換する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;もし AI が本当にコードアシスタントから完全なソフトウェアエンジニアへ進化するなら、人間のプログラマーの価値は、すべての行を手で書くことではなくなります。何を書く価値があるのか、何をもって正しいとするのか、どこで失敗してはいけないのかを定義することになります。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;ProgramBench の &lt;code&gt;0%&lt;/code&gt; は終点ではなく、新しい段階の始まりです。&lt;/p&gt;
&lt;p&gt;それは、今日の大規模モデルがまだゼロから完全なソフトウェアシステムを安定して再構築できないことを示しています。同時に、次世代 AI Coding agent の目標も非常に明確にしました。局所的なパッチから完全なプロジェクトへ、コード片からシステム納品へ進むという目標です。&lt;/p&gt;
&lt;p&gt;プログラマーにとって、短期的には少し安心してよいでしょう。しかし長期的には「AI はまだできない」だけを見ていてはいけません。より重要なのは、自分をコード実行者から、問題定義者、結果検収者、リスク管理者へ早く引き上げることです。&lt;/p&gt;
&lt;p&gt;本当に警戒すべきなのは、AI が今日 &lt;code&gt;0%&lt;/code&gt; を取ったことではありません。問題集がすでに置かれたことです。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
