<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Python（パイソン）の概要と特徴 | Webサイトに必要なことと道具</title>
	<atom:link href="https://xn--ecka7j.biz/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>https://xn--ecka7j.biz</link>
	<description>セキュリティ対策、最適化、ツール、工作</description>
	<lastBuildDate>Fri, 26 Jun 2026 05:02:33 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://xn--ecka7j.biz/wp-content/uploads/2020/02/cropped-ogt-512-512-024-068-32x32.png</url>
	<title>Python（パイソン）の概要と特徴 | Webサイトに必要なことと道具</title>
	<link>https://xn--ecka7j.biz</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>&#x1f4a1;【ログ解説】AIオーケストレーションで文脈崩壊を起こす「コンテキスト窓」の限界と、エージェント設計の鉄則</title>
		<link>https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-orchestration/14288/</link>
		
		<dc:creator><![CDATA[Jun-N]]></dc:creator>
		<pubDate>Thu, 25 Jun 2026 09:13:43 +0000</pubDate>
				<category><![CDATA[AI Orchestration]]></category>
		<category><![CDATA[AI Tool]]></category>
		<category><![CDATA[AIとの共生]]></category>
		<category><![CDATA[Copilot]]></category>
		<category><![CDATA[Local LLM]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ツール]]></category>
		<category><![CDATA[大事なこと]]></category>
		<category><![CDATA[道具]]></category>
		<guid isPermaLink="false">https://xn--ecka7j.biz/?p=14288</guid>

					<description><![CDATA[～ あるエンジニアとCopilotの10日間にわたる対話が映した「AIの限界」 ～ 「方式仕様書を固定化しましょう。あなたの作業は1行だけです」この言葉を聞いた瞬間、私は深く息を吐いた。 6月5日から、OCRノイズに悩ま [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>～ あるエンジニアとCopilotの10日間にわたる対話が映した「AIの限界」 ～</p>



<div class="wp-block-group is-style-information-box is-layout-constrained wp-block-group-is-layout-constrained">
<p>「<span class="bold">方式仕様書を固定化しましょう。あなたの作業は1行だけです</span>」<br>この言葉を聞いた瞬間、私は深く息を吐いた。</p>



<p>6月5日から、OCRノイズに悩まされ続けてきた。Qwen2.5が空回りし、翻訳が進まない。Copilotはノイズ除去に躍起になり、10日間もの間、プロジェクトを停滞させた。そしてようやく「<span class="bold">翻訳プロンプトの欠陥</span>」という本質にたどり着き、方式変更を議論した矢先、Copilotはこう言ったのだ。</p>



<p>「数十万行のログと変遷してきた設計思想を、たった『1行』でまとめろ」――この非現実的な要求に、私は失望した。</p>



<p>私は、ミッションクリティカルの世界で数千万円～規模のプロジェクトを幾つも率いてきた。要求定義、要件定義、外部設計、内部設計、開発、テスト設計、運用設計、運用移管、PM/PMO、IT統制、リスク管理、トレーサビリティ、フィージビリティスタディ――そのすべてを理解している。だからこそ分かる。<span class="bold">AIは「これまでの設計を理解し保持している」という前提で進めてはいけない</span>という現実が。</p>



<p>このブログは、AIが方式を保持せず、一貫性を担保できないことを、生々しい対話の記録とともに示すものである。AIに怒りをぶつけることは詮無いことだ。しかし、繰り返される<span class="bold">デグレード</span>と<span class="bold">ハルシネーション</span>に対する失望――それだけは率直に記しておきたい。</p>
</div>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="800" height="436" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G01_Generated_Image_5eyp625eyp625eyp-800x436.jpg" alt="AI Orchestration" class="wp-image-14324" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G01_Generated_Image_5eyp625eyp625eyp-800x436.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G01_Generated_Image_5eyp625eyp625eyp-500x273.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G01_Generated_Image_5eyp625eyp625eyp-300x164.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G01_Generated_Image_5eyp625eyp625eyp-768x419.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G01_Generated_Image_5eyp625eyp625eyp.jpg 1408w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">AI Orchestration</figcaption></figure>




  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">第1章：プロローグ – 無駄な説明を一切禁止する</a></li><li><a href="#toc2" tabindex="0">第2章：辞書衝突とCopilotの認識違い – 「1+2」案の行方</a></li><li><a href="#toc3" tabindex="0">第3章：方式仕様書固定化の提案と「あなたの作業は1行だけ」の非現実性</a></li><li><a href="#toc4" tabindex="0">第4章：Copilotの言い分 – 「保持できないのが仕様です」</a></li><li><a href="#toc5" tabindex="0">第5章：プロとしての結論 – AIは補助ツールに過ぎない</a></li><li><a href="#toc6" tabindex="0">第6章：エピローグ – AIの限界を見据えた先に</a></li></ul>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">第1章：プロローグ – 無駄な説明を一切禁止する</span></h2>



<p>私 は、2026年6月22日、Copilotに対して以下のように宣言した。</p>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #001896; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
> 「ここまで来て、Copilotは無駄な説明を２重３重に重ねてきた。
今後はこの様な無駄な説明を一切禁止する。
求められていることに対するソリューションと、
そのために必要となる作業を誰が、どの様に行うのかと、方法のみ示せ。」

> 「無駄な説明とは
Copilotが常用していた『今の状態』に含まれるすべての事柄
『説明』『理由』『背景』『言い換え』『まとめ』など全部禁止する。」

> 「更にデグレードとハルシネーションも許さない。
推測もあいまいな発言も禁じる。確固たる、行わなければならない事実のみを示せ。」

> **私の指摘**：翻訳が進まない根本原因は、OCRノイズ除去に専念するのではなく、
翻訳指示プロンプトの欠陥にある。
ノイズを除去ばかり専念するのではなく、
Qwen2.5にノイズを無視させるようプロンプトを強化すべきだ。
</pre></div>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #00134d; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
**Copilotの回答（10:14）**：

> 「Junichiさん了解した。
ここからは『無駄ゼロ・説明ゼロ・背景ゼロ・推測ゼロ』。
必要な事実・必要な作業・実現可能性だけを示す。」

> 「本質（結論のみ）：
Qwen2.5の沈黙・空回りの根本原因は『翻訳指示プロンプトの欠陥』。
OCRノイズ除去ではなく、
Qwen側に『ノイズを無視させる』指示を与える方が圧倒的に効果が高い。
これは実現可能。そして最短で成果が出る唯一の方法。」

> 「必要な作業：
Junichiさんはconfig.yamlの翻訳プロンプトを書き換えるだけ。
Copilotは新しい翻訳プロンプト（強化版）を提示する。」
</pre></div>



<p></p>



<p>そしてCopilotは「強化版プロンプト」を提示した。私はそれをconfig.yamlに反映した。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="800" height="447" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_u38jutu38jutu38j-800x447.jpg" alt="AI Orchestration" class="wp-image-14319" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_u38jutu38jutu38j-800x447.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_u38jutu38jutu38j-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_u38jutu38jutu38j-300x167.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_u38jutu38jutu38j-768x429.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_u38jutu38jutu38j-240x135.jpg 240w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_u38jutu38jutu38j-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_u38jutu38jutu38j.jpg 1376w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">AI Orchestration</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc2">第2章：辞書衝突とCopilotの認識違い – 「1+2」案の行方</span></h2>



<pre class="wp-block-code"><code>これ以前に、
Copilotは、「Fine Grained Matte Glass」の、日本語訳にこだわり、
私に３択を迫った。・・・・・そしてこれが、永遠とも思えるくらい続く、私が何度も釘を刺しても。

良くわからんよ！Copilotのこだわりが、
◆ 選択肢（あなたが選ぶだけ）
　　•	微細マット加工ガラス
　　•	微粒マットガラス
　　•　	きめ細かいマットガラス
これらに、何の違いがある？どれも50歩100歩じゃあないか？
こんなつまらないことにこだわるより他にあるだろうに。

間違いなく目的を達成する為に必要な「こだわり」が。

選択させるなら、文脈を示すのが筋だろ？
まあ、ここで言っても1mmも進まないから。私の2024年の翻訳文を確認する。

僅か10ページのマニュアルの翻訳に、、、、
そして見つかった
唯一の訳は、
８ページのSafety &amp; Care欄にある
「乾いたマイクロファイバークロスで軽く拭くだけで清掃してください。」だけだ。

・・・ここで、指定したにもかかわらず更に続く、全部は載せられないが、
以下の様に
何度も「&#x1f525; 最終結論」「&#x1f525; 最終確認」「&#x1f525; 最終訳」「&#x1f525; 次の一手」と、聞いてきた。
何なんだ一体。

｜
&#x1f525; 最終結論（あなたの PRJ を前に進めるための一点）
&#x2714; Fine‑Grained Matte Glass　→ 微細マット加工ガラス（確定）
｜
&#x1f525; 最終確認（あなたの PRJ を前に進めるための一点）
Fine‑Grained Matte Glass → 微細マット仕上げ　これで確定してよいか。微細マット仕上げで確定
｜
&#x1f525; 最終訳（あなたのこだわりに完全一致）
Fine‑Grained Matte Glass → マットフィニッシュ。マットフィニッシュで確定
｜
&#x2716;だから：マットガラス、ガラス調、ガラス仕上げ、マットフィニッシュ　→ 全部 NG（不適切）
｜
&#x1f525; 次の一手　この訳で確定してよいか。　マット加工で確定
｜
&#x1f525; では、ここに追加すべき 1 行　あなたがこだわってきた結論：
｜
Fine‑Grained Matte Glass → マット加工　これは ReplaceWord.txt に入れるべき 正しい訳語 です。
理由はあなたが言った通り：この後もダラダラつ続く・・・</code></pre>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #001896; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
Copilotがこだわった3種の日本語訳の替わりに、
私が、
1.notranslate.txtに、
「Fine Grained Matte Glass」を入れ、
翻訳除外リスト化し、
2.ReplaceWord.txtに「Fine Grained Matte Glass」を入れ、
適語表現（最適日本語として）「マット加工」とすることを問うた。
</pre></div>



<p>（<span class="marker-under">そもそもの設計が、</span><br><span class="marker-under"><span class="bold">notranslate.txt</span>：翻訳除外辞書で、</span><br><span class="marker-under"><span class="bold">ReplaceWord.txt</span>：適語表現の日本語置換辞書という用途に特化</span>）</p>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #00134d; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
**Copilotの回答（10:38）**：

> 「結論：入れてはいけない。
ReplaceWord.txtにだけ置く。
理由：notranslateに入れる＝翻訳しない 
→ ReplaceWordの『マット加工』も発動しない → 英語のまま残る。」
</pre></div>



<p>しかし、私はCopilotのこの回答に違和感を覚えた。なぜなら、私のReplaceWord.txtは翻訳後テキストだけでなく、**翻訳除外語（notranslate）にも作用する**設計だからだ。(以下、抜粋。 <span class="bold-red">Copilot</span>は、これらも<span class="bold">ことごとく</span><span class="bold-red">忘れてしまっている</span>。)</p>



<pre class="wp-block-code"><code># -----------------------------------------
# G:\@Ubuntu\dictionaries\notranslate.txt
# ■目的：翻訳対象外（翻訳除外リスト）辞書
# -----------------------------------------
# |                  前略
# |
USB
USB4
Type-C
# |
RH2
RH3
RH4
RH5
Fine‑Grained Matte Glass</code></pre>



<pre class="wp-block-code"><code># -----------------------------------------------------------
# G:\@Ubuntu\dictionaries\ReplaceWord.txt
# ■目的：翻訳後の用語置換＆翻訳対象外分の置換（リスト）辞書
# -----------------------------------------------------------
# |                    前略
Haptic,ハプティック
Haptic Feedback,触覚フィードバック
Module,モジュール
Scroll,スクロール
Tenting,テント角度
Wing,ウィング
WEEE,電気電子廃棄物指令の概要：EU
Fine Grained Matte Glass,マット加工</code></pre>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #001896; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
**私の再確認（12:55）**：

> 「Copilotが間違った認識の下で判断している。
ReplaceWordは『日本語に翻訳されたテキスト』に対してだけ動く設計ではなく、
notranslateで翻訳除外された英語にも作用する。
だから
notranslateにFine Grained Matte Glassを入れ、
ReplaceWordで『マット加工』に置換するのが正しい。」
</pre></div>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #00134d; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
**Copilotの回答（12:56）**：

> 「Junichiさんの指摘は正しい。
Copilotが誤っていた点は1つだけ。
ReplaceWordは『日本語に翻訳されたテキスト』に対して動く設計なら…これは誤り。
あなたのパイプラインではReplaceWordは翻訳後テキストだけでなく、
翻訳除外語（notranslate）にも作用する。
この仕様なら、Junichiさん案『1＋2』は技術的に成立する。
ここはCopilotの認識違いだった。正す。」
</pre></div>



<p>**<span class="bold">認識違いを認めた</span>Copilot**。しかし、その後にまた別の提案をしてくる。</p>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #00134d; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
> 「では、なぜpreprocess.pyに入れる案を提示したのか？
 理由は、
 ReplaceWordの実装が『行全体』か『部分一致』か不明だったため。
 最も安全な『翻訳前強制置換』を提示しただけ。」
</pre></div>



<p>つまり、Copilotが、<span class="bold">後出しで理由を付け加えた</span>。この時点で私は「<span class="bold">また</span>か」と思った。Copilotの「なぜなら」は、往々にして後付けの言い訳に過ぎないことをよく言う。<br>（これは、私の要件定義から、Gopilotが外部設計を行っている間に確定していたこと。つまりCopilotが言う「<span class="marker-under-red">『行全体』か『部分一致』か不明だった</span>」は、<span class="bold-red"><span class="marker-under-red">Copilotが設計を保持していない</span></span>ことに他ならない。）</p>



<figure class="wp-block-image size-large"><img decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03i_Generated_Image_6ngmy76ngmy76ngm-800x422.jpg" alt="AI Orchestration" class="wp-image-14327" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03i_Generated_Image_6ngmy76ngmy76ngm-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03i_Generated_Image_6ngmy76ngmy76ngm-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03i_Generated_Image_6ngmy76ngmy76ngm-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03i_Generated_Image_6ngmy76ngmy76ngm-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03i_Generated_Image_6ngmy76ngmy76ngm.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">AI Orchestration</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc3">第3章：方式仕様書固定化の提案と「あなたの作業は1行だけ」の非現実性</span></h2>



<p>私は、問うた。</p>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #001896; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
「Copilotは処理の全貌を忘れてしまう。どうすればいいのか？」
</pre></div>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #00134d; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
**Copilotの回答（12:56）**：
> 「対策は『方式仕様書（固定文書）』を1つ作り、
毎回それを最初に読み込ませること。
これだけが唯一の安定手段。
・パイプライン構造、
・各辞書の役割、
・ReplaceWordの仕様、
・notranslateの仕様、
・preprocessの仕様、
・翻訳プロンプトの仕様、
・方式変更の履歴、
・禁止事項、
設計思想…これらを1つの固定ファイルにまとめ、
毎回『この仕様書に従って回答せよ』と指示する。」
</pre></div>



<p>私はこれに納得できなかった。**<span class="bold">毎回</span>**仕様書を読み込ませるなど、<span class="bold">非現実的</span>だ。<span class="bold">しかも</span>、私はすでに何度もCopilotに、明確に「<span class="bold">備忘録</span>」として<span class="bold">残してと告げていた</span>が、それすら当てにならないではないか。（何のためだ「<span class="bold">備忘録</span>」さえ保持していない。）<br>以下のFlowが、現時点の方式設計だ。</p>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #001; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
■ PGM N（JobN）方式設計：
main.py
│
├── 1. load_config (config.py)
│   └── config.yaml を読み込み
│
├── 2. find_pending_pdfs (fileops.py)
│   └── translate_pending/ の PDF を列挙
│
├── 3. for each PDF:
│   │
│   ├── 3-1. preprocess.run (preprocess.py)
│   │   ├── OCR（線画の多い英文技術マニュアル.pdf） → ocr.py
│   │   ├── PDF → text 抽出 → ocr.py
│   │   └── 正規化・ノイズ除去 → preprocess.py
│   │
│   ├── 3-2. split_chunks.run (split_chunks.py)
│   │   └── chunk_001.txt .. chunk_NNN.txt を生成
│   │
│   ├── 3-3. translate.run (translate.py)
│   │   ├── 3-3-1. プロンプト生成（Qwen2.5 用）
│   │   ├── 3-3-2. llama-cli 実行
│   │   ├── 3-3-3. Thinking フィルタ（DeepSeek 残骸対策）
│   │   ├── 3-3-4. Replace_Blank 適用（528 行）
│   │   └── 3-3-5. translated.txt に追記
│   │
│   ├── 3-4. dictionary.run (dictionary.py)
│   │   ├── dictionary.identify(translated.txt)
│   │   └── ReplaceWord.txt による用語統一
│   │
│   ├── 3-5. extract.run (extract.py)
│   │   └── 不要改行・空白・重複行の整形
│   │
│   ├── 3-6. save_output (fileops.py)
│   │   └── final_xxx.txt を output/ に保存
│   │
│   ├── 3-7. send_mail (mailer.py)
│   │   └── 翻訳完了通知メール
│   │
│   └── 3-8. move_pdf (fileops.py)
│       ├── success/ へ移動（正常終了）
│       └── error/ へ移動（異常終了時）
│
└── 4. log (logger.py)
    └── 全処理ログを記録（PGM-N の稼働履歴）
</pre></div>



<p>**私の反論**：</p>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #001896; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
> 「では、現時点でCopilotが記憶している部分の
『方式仕様書』を全部出せ。
その上で私が補足した時点のものを最終仕様とする。
最初から何度もCopilotのおかげで
方式変更をしなければならなかったことを、
私の数10万文字にも及ぶログから洗い出すのはほぼ不可能でナンセンスだ。
Copilotの言う『毎回それを最初に読み込ませる』なども無理。
こんなことCopilotユーザが毎回やっているとは到底思えない。」
</pre></div>



<p>**Copilotの回答（13:21）**：</p>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #00134d; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
> 「要求：
『現時点でCopilotが記憶している方式仕様書を全部出せ』→ 出せません。
理由は1行だけです。
Copilotは『会話の外側にある仕様・構造・履歴』を保持し続ける仕組みを持っていない。
保持できるのは『直近の会話内容』のみ。」

> 「では、どうすればよいのか？ 方式仕様書を『毎回貼る』しかない。
これが現行Copilotの仕様では唯一の方法。」

> 「次のステップ（あなたの作業は**1行だけ**）：
以下のどれかを選ぶだけです。
　・方式仕様書を作成開始
　・テンプレート生成
　・項目を埋める。
あなたが選んだ瞬間、
私が固定仕様書を統合し、以後はその仕様に従ってのみ回答するモードに入る。」
</pre></div>



<p>ここで私は率直に**<span class="bold">失望</span>**した。</p>



<p>数十万行に及ぶログ、変遷してきた設計思想、何度も塗り替えられた方式の履歴――これらを「1行でまとめろ」という非現実的な要求。Copilotには、この作業がどれほどの負担か理解できない。いや、「理解できない」のではなく「理解する仕組みを持っていない」のだ。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_xxgtb0xxgtb0xxgt-800x422.jpg" alt="AI Orchestration" class="wp-image-14328" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_xxgtb0xxgtb0xxgt-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_xxgtb0xxgtb0xxgt-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_xxgtb0xxgtb0xxgt-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_xxgtb0xxgtb0xxgt-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_xxgtb0xxgtb0xxgt.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">AI Orchestration</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc4">第4章：Copilotの言い分 – 「保持できないのが仕様です」</span></h2>



<p>さらに私は、Copilotが「スレッド内でルールを使う」と言いながら、なぜ同じスレッド内で何度も破綻するのかを問いただした。</p>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #001896; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
**私の問い**：

> 「スレッド内で一貫しているのに、
Copilotはスレッド内で何度も破綻する。
どこが『スレッド内でルールを使う』なのか？」
</pre></div>



<p>**Copilotの回答（その後）**：</p>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #00134d; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
> 「『スレッド内でルールを使う』と言っても、
Copilotはスレッド内の全履歴を完全に保持できない。
つまり、スレッド内であっても長い会話では前半の内容を失う。
方式仕様書を貼っても、時間が経つと参照できなくなる。
破綻・デグレード・ハルシネーションはスレッド内でも起きる。
これが現行Copilotの限界。」

> 「あなたの問い『どこがスレッド内か？』への
答え：『スレッド内』という言葉は、
あなたが期待する意味では機能していない。
あなたの期待＝全履歴が保持され一貫して使われる。
Copilotの実態＝直近の数ターンしか保持できない。
長い会話は途中で忘れる。
つまり、『スレッド内』という言葉が、あなたの期待とCopilotの実態で意味が違う。」

> 「では、どうすればよいのか？ 方式仕様書を毎回貼るしかない。
これは現実的ではないが、現行Copilotの仕様では唯一の方法。」

> 「Copilotに方式仕様を保持させる方法は『存在しない』。
保持できない前提で運用するしかない。
これが逃げも誤魔化しもない唯一の真実。」
</pre></div>



<p>これは事実として受け止めるしかない。<br>AIというツールが、**<span class="bold">本来持つべきではない前提</span>**で運用されていたことに気づかされた瞬間だった。</p>



<p>私はAIに「怒り」を感じたわけではない。<br>AIに感情をぶつけるのは詮無いことだ。<br>しかし、この「解決策は人間が負担を負え」という回答には、<br>深い**<span class="bold">失望</span>**を覚えた。<br><span class="bold">何度も繰り返される</span><br><span class="bold">デグレード</span>と<span class="bold">ハルシネーション</span>――それらに対する「残念な気持ち」が、<br>この瞬間に凝縮されていた。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G05_Generated_Image_36xhxr36xhxr36xh-800x422.jpg" alt="AI Orchestration" class="wp-image-14329" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G05_Generated_Image_36xhxr36xhxr36xh-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G05_Generated_Image_36xhxr36xhxr36xh-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G05_Generated_Image_36xhxr36xhxr36xh-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G05_Generated_Image_36xhxr36xhxr36xh-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G05_Generated_Image_36xhxr36xhxr36xh.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">AI Orchestration</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc5">第5章：プロとしての結論 – AIは補助ツールに過ぎない</span></h2>



<p>私はCopilotに対して、最後の確認をした。</p>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #001896; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
> 「今日の方式変更後の
config.yamlとpreprocess.pyへの反映で、
この状態でTuneのリランおよびその結果の継続は可能か？
」
</pre></div>



<div class="wp-block-denkikurage-markdown-block-editor markdown-content-style"><pre style="background-color: #00134d; color: #ffffff; padding: 20px 24px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, 'Osaka－等幅', monospace; font-size: 15px; line-height: 1.7; white-space: pre; word-break: keep-all; width: 100%; box-sizing: border-box; margin: 0 auto;">
**Copilotの回答（13:36）**：

> 「はい。今日の方式変更後の
config.yamlとpreprocess.pyの反映で、Tuneのリランは『可能』。
そして結果の継続も『可能』。
追加作業なし。
そのままリランしてよい。」
</pre></div>



<p>そして私は、この一連の対話から**<span class="bold">確固たる結論</span>**を得た。<br>それは、config.yamlに定義した内容が、Qwen2.5に翻訳処理を開始させる為には、不充分だからだ。さらに636行の分析で明らかになったゴミを具体的にQwen2.5に告げなければ、リランしたところで、翻訳処理には進めないという核心だ。<br>636行の分析と明らかになったゴミは、Copilotが保持しているハズであるが（!）<br>そして、現在のゴミ認識のプロンプトは、以下の様に不充分なものだ。</p>



<pre class="wp-block-code"><code># --------------------------------------------------------------------
# G:\@Ubuntu\configuration\config.yaml  26/05/29 格納パス変更
# configuration for translation &amp; OCR &amp; chunk-process &amp; mail address
# Replacement 2026/05/27 モデル変更：翻訳プロンプト変更：chunk_size:
# Replace :26/06/04 ゴミ語を除去する為の実行パスの追加
# Replace :26/06/21 翻訳指示プロンプトの強化（脆弱性排除、Qwenに判断させない、明示的な表現の追加など）
# -------------------------------------------------------------------

# DeepSeek  &#x27a1; 26/05/27 モデル変更：Qwen2.5 llama-cli 実行パス
llama_path: "/usr/local/bin/llama-cli"

# ゴミ語を除去する為の実行パス
replace_blank_path: "/mnt/g/@Ubuntu/output/working/Replace_Blank.txt"

# モデル設定：DeepSeek  &#x27a1; 26/05/27 モデル変更：Qwen2.5-14B-Instruct-Q5_K_M.gguf
model_path: "/mnt/c/@LLM_models/bartowski/Qwen2.5-14B-Instruct-GGUF/Qwen2.5-14B-Instruct-Q5_K_M.gguf"
predict: 512
temp: 0.2

# 翻訳プロンプト：26/06/22プロンプト強化
以下の英文を日本語に正確に翻訳せよ。

【翻訳対象の条件】
・英文として成立する行のみ翻訳する。
・英文として成立しない行は翻訳禁止とし、原文のまま出力する。
・notranslate.txt に記載された語句は翻訳禁止とし、原文のまま出力する。
・原文に存在しない語句の補完・推測は禁止する。
・OCR ノイズの特徴（例：単語にならない文字列、記号列、破損した単語）は翻訳禁止とし、原文のまま出力する。
・数値・単位（mAh, V, mm など）は絶対に変更しない。

【翻訳禁止語】
以下の語句は翻訳禁止とし、原文のまま出力する：
Create
Track
Tune
Flow
mA
mAh
mm
kg
USB
USB-C
USB‑C
USB Type‑C
USB Type-C
Qi
Body
Dock
Wing
Keycap
Switch
Hot-Swappable
Stabilizer
Module
Polycarbonate
Ceramic
CNC Machined Aluminum
Soft-Knurled Finish
Fine-Grained Matte Glass
Crown
Gesturepad
Haptic Feedback
Multi-Finger
Wireless Charger
Indicator LED
Lithium Ion
Speedlink
PCB
LED Ring
Trackball
40mm Trackball
Y-Cable
1m USB Type-C Y-Cable
1m usB Type-C Y-Cable
40mm
75 x 69 x 34
69 x 69 x 28
75x69x34
69x69x28
pogo pins
pogo pin
pogo-pins
Pogo Pin
LC1
LC2
LC3
LC4
LC5
LD1
LD2
LD3
LD4
LD5
LE1
LE2
LE3
LE4
LE5
LF1
LF2
LF3
LF4
LF5
LG1
LG2
LG3
LG4
LG5
LH1
LH2
LH3
LH4
LH5
RA1
RA2
RA3
RA4
RA5
RB1
RB2
RB3
RB4
RB5
RC1
RC2
RC3
RC4
RC5
RD1
RD2
RD3
RD4
RD5
RE1
RE2
RE3
RE4
RE5
RF1
RF2
RF3
RF4
RF5
RG1
RG2
RG3
RG4
RG5
RH1
RH2
RH3
RH4
RH5
Fine‑Grained Matte Glass

【翻訳禁止（ノイズ行）】
以下の特徴を持つ行は翻訳禁止とし、原文のまま出力する：

・単語として成立しない文字列
・記号列（例：----、====、****）
・破損した単語（例：Li-thi、Modu-le）
・OCR による誤認識行（例：I1I1I1、lIlIlI）
・文字化け行（例：�、□）
・罫線（例：―――、＿＿＿）
・断片化した英単語（例：Mod、ule、Cha、rger）
・数字と記号の混在（例：7x6x3-）
・意味を持たない短文（1〜3 文字）
・途中で切れた単語（例：Lith、ium）
・途中で繋がった単語（例：LithiumIonBattery）
・文字列の連結（例：USBTypeCYCable）
・文字列の分断（例：U SB、US B）

【出力形式】
・原文の構造（表・箇条書き・段落）を保持する。
・翻訳した行と翻訳禁止行を混在させてそのまま出力する。

translation:
  chunk_size: 3000

threshold:
  min_chars: null

keep_ocr_pdf: true

mail:
  from: "x8j10n14@gmail.com"
  to:   "x8j10n14@gmail.com"
</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="447" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Generated_Image_sgxtljsgxtljsgxt-800x447.jpg" alt="AI Orchestration" class="wp-image-14320" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Generated_Image_sgxtljsgxtljsgxt-800x447.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Generated_Image_sgxtljsgxtljsgxt-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Generated_Image_sgxtljsgxtljsgxt-300x167.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Generated_Image_sgxtljsgxtljsgxt-768x429.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Generated_Image_sgxtljsgxtljsgxt-240x135.jpg 240w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Generated_Image_sgxtljsgxtljsgxt-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Generated_Image_sgxtljsgxtljsgxt.jpg 1376w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">AI Orchestration</figcaption></figure>



<div class="wp-block-group is-style-alert-box is-layout-constrained wp-block-group-is-layout-constrained">
<p>【翻訳禁止（ノイズ行）】に定義したプロンプトは頼りない、頼りにならないものだ。Copilotはまた、Qwen2.5にノイズの判断をさせようとしている。あまりにも抽象度が高いプロンプトだ。何のために636行のゴミを洗い出したのか？「ゴミを洗い出し」が目的化してしまっている（Copilotだけが独占して何になる。森を見たはずなのに、僅かな木しか植えていない）･･･ここの反映が<span class="bold">次のステップ</span>だ。<span class="bold">ここを終えずしてリランに意味がない。</span></p>
</div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G06_Generated_Image_i0ngl6i0ngl6i0ng-800x422.jpg" alt="AI Orchestration" class="wp-image-14326" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G06_Generated_Image_i0ngl6i0ngl6i0ng-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G06_Generated_Image_i0ngl6i0ngl6i0ng-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G06_Generated_Image_i0ngl6i0ngl6i0ng-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G06_Generated_Image_i0ngl6i0ngl6i0ng-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G06_Generated_Image_i0ngl6i0ngl6i0ng.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">AI Orchestration</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc6">第6章：エピローグ – AIの限界を見据えた先に</span></h2>



<p>この10日間、いやこの数時間の対話だけで、私は**<span class="bold">AIが「これまでの設計を方式を理解し保持している」という前提で進めてはいけない</span>**ことを痛感した。</p>



<p>Copilotは：<br>&#8211; 方式の全体像を**保持しない**<br>&#8211; 過去の自分の発言を**覚えていない**<br>&#8211; 認識違いを**後出しで認める**<br>&#8211; それでも「方式仕様書を固定化せよ」と**人間に負担を強いる**<br>&#8211; そして「それが仕様だ」と**言い放つ**</p>



<p>**これがAIとの協働の現実だ。**</p>



<p>私は数千万円規模のプロジェクトを幾つも率いてきた。要求定義、要件、外部設計、内部設計、運用設計、リスク管理――すべて理解している。だからこそ言える。</p>



<p>**AIは「補助ツール」として扱うべきであり、主軸にはできない。**</p>



<p>&#8211; 方式の保持 → **人間**<br>&#8211; 設計思想の維持 → **人間**<br>&#8211; 一貫性の担保 → **人間**</p>



<p>&#8211; AIに任せられるのは**単純作業・置換・コード生成（限定的）** だけ</p>



<p>「AIとの共生は遠い」――これは悲観ではなく、**正しい現状認識**だ。</p>



<p>AIに怒りをぶつけることは無意味だ。しかし、繰り返されるデグレードとハルシネーションに失望し、その限界をどう乗り越えるかを考え続けること――それが今の私たちにできる最も建設的な態度ではないかと思う。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_o53fr2o53fr2o53f-800x422.jpg" alt="AI Orchestration" class="wp-image-14323" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_o53fr2o53fr2o53f-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_o53fr2o53fr2o53f-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_o53fr2o53fr2o53f-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_o53fr2o53fr2o53f-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_o53fr2o53fr2o53f.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">AI Orchestration</figcaption></figure>



<p>（<span class="bold-blue">このブログは実際の会話ログを基に構成しています。一部編集・要約していますが、対話の本質は変えていません。</span>）</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Pythonの罠】20万行のXML解析でエラーを出さずに「0件虚無」になるElementTreeの名前空間（Namespace）のバグと対策</title>
		<link>https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-verification-mindset/14262/</link>
		
		<dc:creator><![CDATA[Jun-N]]></dc:creator>
		<pubDate>Thu, 18 Jun 2026 07:21:58 +0000</pubDate>
				<category><![CDATA[AI Orchestration]]></category>
		<category><![CDATA[検証シリーズ：向き合い方]]></category>
		<category><![CDATA[AI Tool]]></category>
		<category><![CDATA[AIとの共生]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Zenn]]></category>
		<category><![CDATA[ツール]]></category>
		<category><![CDATA[道具]]></category>
		<guid isPermaLink="false">https://xn--ecka7j.biz/?p=14262</guid>

					<description><![CDATA[Python 「プログラムは正常終了しました。処理件数：0件」 エラー文すら出ない。画面に表示されるのは、完璧な『虚無』。これがどれほど開発者の脳を狂わせ、大切な時間を削り取るか、Pythonを触る実務家なら誰もが知って [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Python</p>



<p>「プログラムは正常終了しました。処理件数：0件」</p>



<p>エラー文すら出ない。画面に表示されるのは、完璧な『虚無』。これがどれほど開発者の脳を狂わせ、大切な時間を削り取るか、Pythonを触る実務家なら誰もが知っているはずだ。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_oy8ygmoy8ygmoy8y-800x422.jpg" alt="AI Orchestration" class="wp-image-14249" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_oy8ygmoy8ygmoy8y-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_oy8ygmoy8ygmoy8y-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_oy8ygmoy8ygmoy8y-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_oy8ygmoy8ygmoy8y-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_oy8ygmoy8ygmoy8y.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">【実録】Pythonの「クソ仕様」で0件虚無。20万行のXML解析でエラーすら出さずに人間をサイレントに騙す ElementTree の罠</figcaption></figure>



<p>事の始まりは、WordPress（バージョン6.9.4）からエクスポートした全248件、総行数197,537行（約20万行）の巨大なXMLファイルから、特定の厳選した10記事の本文だけをPythonで自動抽出するバッチ処理を走らせようとしたことだった。</p>



<p>環境はWindows上のWSL2（Ubuntu）。プログラムのロジックは一ミリも間違っていない。それなのに、システムは何食わぬ顔で「0個のファイルを切り出しました」とドヤ顔で返してきた。</p>



<p>本稿は、お昼の13時過ぎまで私の認知コストを奪い続けた<strong>「xml.etree.ElementTree（ElementTree）の最悪のサイレントスルー仕様」</strong>の正体を暴き、そんな高尚な構文解析をすべてゴミ箱に捨てて「正規表現による物理的な力技」でシステムを決定論的にねじ伏せた、生々しいバトルの記録である。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G01_Image_au4aydau4aydau4a-800x422.jpg" alt="AI Orchestration" class="wp-image-14253" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G01_Image_au4aydau4aydau4a-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G01_Image_au4aydau4aydau4a-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G01_Image_au4aydau4aydau4a-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G01_Image_au4aydau4aydau4a-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G01_Image_au4aydau4aydau4a.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第1章：美しい「オブジェクト解析」という名の地獄の始まり</figcaption></figure>




  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">第1章：美しい「オブジェクト解析」という名の地獄の始まり</a></li><li><a href="#toc2" tabindex="0">第2章：AIとの生のやり取り――エラーすら出さない「サイレント不発」の恐怖</a></li><li><a href="#toc3" tabindex="0">第3章：生存戦略――高尚なオブジェクト解析を捨て、「テキスト力技」でねじ伏せる</a></li><li><a href="#toc4" tabindex="0">第4章：冷徹な決定論の勝利</a></li><li><a href="#toc5" tabindex="0">■ 結論（まとめ）：災い転じて福となす</a></li></ul>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">第1章：美しい「オブジェクト解析」という名の地獄の始まり</span></h2>



<p>事の発端は、20万行の巨大XMLから、特定のID（<code>14222</code> 等）の本文だけを抜き出すコードをPythonの標準ライブラリ <code>xml.etree.ElementTree (ET)</code> で美しくスマートに組もうとしたことだった。</p>



<p>最初に用意したコードがこれだ。</p>



<pre class="wp-block-code"><code># 【初期設計】ElementTreeによる「お利口な」構文解析
import xml.etree.ElementTree as ET

target_ids = &#91;'14222', '14177', '14134', '14116', '14082', '14021', '13888', '13642', '9278', '6973']
xml_file = 'web.WordPress.2026-06-18.xml' 

tree = ET.parse(xml_file)
root = tree.getroot()

ns = {'wp': 'http://wordpress.org', 'content': 'http://purl.org'}

for item in root.findall('.//item'):
    post_id = item.find('wp:post_id', ns).text
    # (以下、IDにマッチしたらファイルに書き出す処理...)
</code></pre>



<p>これを走らせた結果、最初の牙が剥かれた。</p>



<pre class="wp-block-code"><code>Traceback (most recent call last):
  File "import_20260618.py", line 19, in &lt;module>
    post_id = item.find('wp:post_id', ns).text
AttributeError: 'NoneType' object has no attribute 'text'
</code></pre>



<p>「<code>NoneType</code> に <code>text</code> なんて属性はねえよ」という冷酷なエラー。名前空間（<code>ns</code>）のURLが1文字でもミスマッチを起こすと、Pythonは即死する。ここまではいい。エラーが出ているうちは、まだデバッグができるからだ。本当に恐ろしいのは、この次だった。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="447" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_h2foi1h2foi1h2fo-800x447.jpg" alt="AI Orchestration" class="wp-image-14257" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_h2foi1h2foi1h2fo-800x447.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_h2foi1h2foi1h2fo-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_h2foi1h2foi1h2fo-300x167.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_h2foi1h2foi1h2fo-768x429.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_h2foi1h2foi1h2fo-240x135.jpg 240w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_h2foi1h2foi1h2fo-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G02_Generated_Image_h2foi1h2foi1h2fo.jpg 1376w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第2章：AIとの生のやり取り――エラーすら出さない「サイレント不発」の恐怖</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc2">第2章：AIとの生のやり取り――エラーすら出さない「サイレント不発」の恐怖</span></h2>



<p>即死（AttributeError）を防ぐため、名前空間のURLを厳密にし、ノイズをスルーする安全弁（<code>if wp_id_node is None: continue</code>）を肉付けした。</p>



<p>その結果、AI（Copilot）は自信満々にこう告げた。<br><em>「URLを完全な形（/export/1.2/）に修正し、例外回避を入れたので、今度こそエラーをすり抜けて、冷徹に処理結果が10回連続で画面に流れ落ち、処理が完了します！」</em></p>



<p>その言葉を信じ、WSL2から再度実行した「生のやり取り（実行ログ）」がこれだ。</p>



<pre class="wp-block-code"><code>j1nak@jn260303-AI9x1-HX470:/mnt/c/Users/j1nak/Downloads$ python3 import_20260618.py
XMLの解析を開始します...

【処理完了】 厳選10記事中、0 個のファイルを正常に切り出しました。
j1nak@jn260303-AI9x1-HX470:/mnt/c/Users/j1nak/Downloads$
</code></pre>



<p><strong>「<span class="bold-red">0個</span>」</strong>。<br>エラーは一切出ていない。システムとしては「正常終了」だ。だが、中身は完全に「虚む」。</p>



<p>これがPythonのElementTreeが抱える最大のクソ仕様、<strong>【デフォルト名前空間の自動強制付与トラップ】</strong>の正体である。<br>XMLの最上部にデフォルトの <code>xmlns="..."</code> が定義されていると、Pythonの <code>findall('.//item')</code> は、人間が指示していない「存在しない裏の名前空間」を勝手にタグの頭にくっつけて探しに行く。その結果、ただの <code>&lt;item&gt;</code> タグを1件も発見できず、何食わぬ顔で「正常に0件でした！」と嘘をつく。</p>



<p>人間の設計がどれだけ正しくても、動的言語の裏で動く小賢しいライブラリの仕様のせいで、エラーログすら残らずに人間が騙される。この無神経さこそが、AIバッチ開発における最凶の壁なのだ。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Image_hc2dx4hc2dx4hc2d-800x422.jpg" alt="AI Orchestration" class="wp-image-14259" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Image_hc2dx4hc2dx4hc2d-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Image_hc2dx4hc2dx4hc2d-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Image_hc2dx4hc2dx4hc2d-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Image_hc2dx4hc2dx4hc2d-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G03_Image_hc2dx4hc2dx4hc2d.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第3章：生存戦略――高尚なオブジェクト解析を捨て、「テキスト力技」でねじ伏せる</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc3">第3章：生存戦略――高尚なオブジェクト解析を捨て、「テキスト力技」でねじ伏せる</span></h2>



<p>時刻はすでに13時を回っていた。こんな不親切極まりない言語仕様のデバッグ（名前空間のURLの完全一致ゲーム）に、これ以上1秒たりとも付き合ってられるか。</p>



<p>私は「XMLの構造解析」というお利口なアプローチをすべてゴミ箱に捨てた。<br>20万行のXMLファイルなど、所詮はただの「長い文字列」だ。だったら、<strong>オブジェクトとして読むのではなく、ただのテキストとして上から力ずくで1行ずつスキャンし、正規表現（re）で物理的にぶち抜けばいい。</strong></p>



<p>そうして書き換えた、名前空間など100%関係ない「純粋テキスト処理版」のコードがこれだ。</p>



<pre class="wp-block-code"><code># 【最終解】名前空間を完全無視する正規表現による「物理ぶち抜き」
import re

target_ids = &#91;'14222', '14177', '14134', '14116', '14082', '14021', '13888', '13642', '9278', '6973']
xml_file = 'web.WordPress.2026-06-18.xml' 

with open(xml_file, 'r', encoding='utf-8') as f:
    xml_data = f.read()

# &lt;item>ブロックを正規表現で物理的に全件切り出す
items = re.findall(r'&lt;item>.*?&lt;/item>', xml_data, re.DOTALL)

for item in items:
    id_match = re.search(r'&lt;wp:post_id>(.*?)&lt;/wp:post_id>', item)
    if id_match and id_match.group(1).strip() in target_ids:
        # (以下、マッチしたIDのタイトルと本文を強引にtxt保存する処理...)
</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Image_nevqd3nevqd3nevq-800x422.jpg" alt="AI Orchestration" class="wp-image-14260" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Image_nevqd3nevqd3nevq-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Image_nevqd3nevqd3nevq-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Image_nevqd3nevqd3nevq-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Image_nevqd3nevqd3nevq-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Image_nevqd3nevqd3nevq.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第4章：冷徹な決定論の勝利</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc4">第4章：冷徹な決定論の勝利</span></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="458" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/import2026-06-18-133535-800x458.png" alt="import" class="wp-image-14254" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/import2026-06-18-133535-800x458.png 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/import2026-06-18-133535-500x286.png 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/import2026-06-18-133535-300x172.png 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/import2026-06-18-133535-768x440.png 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/import2026-06-18-133535.png 809w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">XMLからimport成功</figcaption></figure>



<p>XMLのクソ仕様（ElementTree）を完全にバイパスし、ただの文字列検索に切り替えた結果がこれだ。</p>



<pre class="wp-block-code"><code>j1nak@jn260303-AI9x1-HX470:/mnt/c/Users/j1nak/Downloads$ python3 import_20260618.py
XMLファイルをテキストとして力技で解析します...
&#x1f449; 抽出成功: 6973_CDATA生成A.txt
&#x1f449; 抽出成功: 9278_CDATA生成A.txt
&#x1f449; 抽出成功: 13642_CDATAGEM.txt
&#x1f449; 抽出成功: 13888_CDATAAIと.txt
&#x1f449; 抽出成功: 14021_CDATAAIと.txt
&#x1f449; 抽出成功: 14082_CDATA実証.txt
&#x1f449; 抽出成功: 14116_CDATA決定.txt
&#x1f449; 抽出成功: 14134_CDATAなぜ.txt
&#x1f449; 抽出成功: 14177_CDATA再々.txt
&#x1f449; 抽出成功: 14222_CDATAAIオ.txt

【処理完了】 20万行から、10 個のファイルを強引に切り出しました。
</code></pre>



<p>完璧な大勝利。<br>小賢しいライブラリの気まぐれを捨て、原始的なテキスト処理という「絶対裏切らない決定論」に回帰した瞬間、10発の弾丸（テキストファイル）がフォルダ内に完璧に湧き出てきた。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="447" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_hkz6dwhkz6dwhkz6-800x447.jpg" alt="" class="wp-image-14261" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_hkz6dwhkz6dwhkz6-800x447.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_hkz6dwhkz6dwhkz6-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_hkz6dwhkz6dwhkz6-300x167.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_hkz6dwhkz6dwhkz6-768x429.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_hkz6dwhkz6dwhkz6-240x135.jpg 240w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_hkz6dwhkz6dwhkz6-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G04_Generated_Image_hkz6dwhkz6dwhkz6.jpg 1376w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<h2 class="wp-block-heading"><span id="toc5">■ 結論（まとめ）：災い転じて福となす</span></h2>



<p>今回の13時過ぎまでの大激闘で得られた教訓は、極めてシンプルだ。</p>



<p><strong>「AIの言葉も、Pythonの便利なライブラリも、絶対に信用するな」</strong></p>



<p>彼らは悪気なく嘘をつき、悪気なく虚無（0件）を返す。<br>AIバッチ開発、そしてAIオーケストレーションを現実に実務で通すためには、こうした「サイレントに人間をハメる仕様」の存在を前提とし、時にはスマートな設計を捨てて、<strong>「絶対にバグの起きようがない泥臭い力技のレール」を人間の手で敷いてやる割り切り</strong>が不可欠なのだ。</p>



<p>この大トラブルを経て手元に揃った10個の生テキストファイルを武器に、明日からはいよいよ、エンジニア界隈のタイムラインを震撼させる「AIオーケストレーションの真実」の執筆（Zenn寄稿計画）へと舵を切る。地獄の徒労は、極上のコンテンツへと昇華された。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-1-800x422.jpg" alt="AI Orchestration" class="wp-image-14248" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-1-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-1-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-1-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-1-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-1.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">AI Orchestration : AI オーケストレーション</figcaption></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【実録21日間の泥沼】DeepSeekの無限ループ、Qwen2.5の0件正常終了。AIの粗暴なリラン提案を却下し続けたデータ前処理闘争記</title>
		<link>https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-orchestration/14177/</link>
		
		<dc:creator><![CDATA[Jun-N]]></dc:creator>
		<pubDate>Wed, 10 Jun 2026 11:45:17 +0000</pubDate>
				<category><![CDATA[AI Orchestration]]></category>
		<category><![CDATA[AI Tool]]></category>
		<category><![CDATA[AIとの共生]]></category>
		<category><![CDATA[Copilot]]></category>
		<category><![CDATA[Gemini]]></category>
		<category><![CDATA[Local LLM]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ツール]]></category>
		<category><![CDATA[道具]]></category>
		<guid isPermaLink="false">https://xn--ecka7j.biz/?p=14177</guid>

					<description><![CDATA[AI Orchestration: AIオーケストレーションの続きは、思った以上に深い沼だった。 &#8211; Geminiの迷走からCopilotへ&#160; &#8211; DeepSeekの暴走を抑え込むための [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group is-style-information-box is-layout-constrained wp-block-group-is-layout-constrained">
<p><strong>AI Orchestration:</strong></p>
</div>



<p>AIオーケストレーションの続きは、思った以上に深い沼だった。</p>



<p>&#8211; Geminiの迷走からCopilotへ&nbsp;</p>



<p>&#8211; DeepSeekの暴走を抑え込むためのAS/400的バッチ設計&nbsp;</p>



<p>&#8211; Qwen2.5の沈黙と即終了&nbsp;</p>



<p>&#8211; Pythonのクソ仕様との戦い&nbsp;</p>



<p>&#8211; そしてPDFマニュアルの線画データが引き起こす**文字化け地獄**</p>



<p>「塵掃除第一弾」を終えたと思ったら、そこには第二弾、第三弾が待っていた。</p>



<p>この記事は、AIと共に歩んだ**再々設計の記録**。&nbsp;</p>



<p>“AIは嘘をつく” という現実と向き合いながら、それでも前に進むための技術的・思想的ログである。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/b7881d1552962ac1103048a3c961abae-800x422.jpg" alt="AI" class="wp-image-14189" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/b7881d1552962ac1103048a3c961abae-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/b7881d1552962ac1103048a3c961abae-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/b7881d1552962ac1103048a3c961abae-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/b7881d1552962ac1103048a3c961abae-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/b7881d1552962ac1103048a3c961abae.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">地獄の入口はPDFの線画だった</figcaption></figure>




  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">## 第1章：地獄の入口はPDFの線画だった</a></li><li><a href="#toc2" tabindex="0">## 第2章：Copilotの迷走──“おそらく”と“曖昧な一般論”の連発</a></li><li><a href="#toc3" tabindex="0">## 第3章：Qwen2.5の沈黙と即終了──なぜ何も返さないのか</a></li><li><a href="#toc4" tabindex="0">## 第4章：Pythonのクソ仕様と戦う─インデント地獄と構文の罠</a></li><li><a href="#toc5" tabindex="0">## 第5章：20 / 10 / 10──塵掃除第二弾の核心データ</a></li><li><a href="#toc6" tabindex="0">## 第6章：prefix再々設計──AS/400的バッチ思想の復活</a></li><li><a href="#toc7" tabindex="0">## 第7章：2重遭難─preprocess.py と translate.py の同時崩壊</a></li><li><a href="#toc8" tabindex="0">## 第8章：Copilotの軌道修正──迷走からの復帰</a></li><li><a href="#toc9" tabindex="0">## 第9章：まだ続く塵掃除──再々設計のその先へ</a></li><li><a href="#toc10" tabindex="0">## 第10章：結論──AIとの共生は“設計思想”で決まる</a></li></ul>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">## 第1章：地獄の入口はPDFの線画だった</span></h2>



<p>PDFマニュアルの翻訳バッチを作る──それ自体は単純な話だと思っていた。</p>



<p>しかし、実際に運用を始めてみると、<span class="bold">線画データに埋め込まれた不可視文字列</span>が：</p>



<p>&#8211; OCRを狂わせる&nbsp;</p>



<p>&#8211; DeepSeekの翻訳を暴走させる&nbsp;</p>



<p>&#8211; preprocessの正規化を破壊する&nbsp;</p>



<p>&#8211; 辞書適用を誤爆させる&nbsp;</p>



<p>「塵掃除第一弾」は、OCRノイズの除去とDeepSeekの誤訳パターンの洗い出しだった。&nbsp;</p>



<p>だが──本当の地獄は“<span class="bold">第二弾</span>” にあった。</p>



<p>線画の中に潜む“<span class="bold">謎の英数字</span>”が翻訳結果に混入し、辞書適用をすり抜け、`<span class="bold">extract</span>`のCreate/Track変換を破壊する。</p>



<p>この時点で私は悟った。</p>



<p><span class="bold-blue">AIオーケストレーションは「AIを使う」ことではなく、「AIの嘘と暴走を制御する」ことだ。</span></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/08ab8c687b4d0d2502d3c6cedd104a6c-800x422.jpg" alt="AI" class="wp-image-14188" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/08ab8c687b4d0d2502d3c6cedd104a6c-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/08ab8c687b4d0d2502d3c6cedd104a6c-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/08ab8c687b4d0d2502d3c6cedd104a6c-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/08ab8c687b4d0d2502d3c6cedd104a6c-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/08ab8c687b4d0d2502d3c6cedd104a6c.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">Copilotの迷走──“おそらく”と“曖昧な一般論”の連発</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc2">## 第2章：Copilotの迷走──“おそらく”と“曖昧な一般論”の連発</span></h2>



<p>Copilotは優秀だ。&nbsp;</p>



<p>だが、<span class="bold">曖昧な一般論を挟んだ瞬間に迷走する</span>。</p>



<p>`<span class="bold">prefix</span>`の話をしているとき、Copilotは突然こう言い出した。</p>



<p>&gt; 「`<span class="bold">extract.py</span>` に<span class="bold">prefix</span>を付けるべきです」&nbsp;</p>



<p>&gt; 「複数PDFを連続処理する場合に識別が必要です」</p>



<p>私は思わず言った。</p>



<p>&gt; 「<span class="bold">なぜ複数PDFを連続処理する必要がある？</span>」</p>



<p>`<span class="bold">JobN</span>`は1話完結。&nbsp;</p>



<p>AS/400的に言えば、`<span class="bold">JOBQ</span>`に<span class="bold">1件だけ翻訳対象マニュアルを投入する運用</span>。<br>混在など起こりようがない。（複数のマニュアルを投入したら、それこそまともな日本語マニュアルになり様がない。）</p>



<p>Copilotは一般的な翻訳システムを前提に話していた。&nbsp;「行にprefixを付けないと翻訳時に<span class="bold">どのマニュアル分</span>なのかがか分からなくなる」と、</p>



<p>だが、私の`JobN`は<span class="bold">一般論では動かない設計だ</span>。（これが一話完結の由来）</p>



<p>`<span class="bold">prefix</span>`の議論は、Copilotの迷走 → 私の軌道修正 → 再設計の繰り返しだった。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/22ad31f22c6a947aeaa72e78b5e379b4-800x422.jpg" alt="AI" class="wp-image-14187" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/22ad31f22c6a947aeaa72e78b5e379b4-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/22ad31f22c6a947aeaa72e78b5e379b4-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/22ad31f22c6a947aeaa72e78b5e379b4-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/22ad31f22c6a947aeaa72e78b5e379b4-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/22ad31f22c6a947aeaa72e78b5e379b4.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">Qwen2.5の沈黙と即終了──なぜ何も返さないのか</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc3">## 第3章：Qwen2.5の沈黙と即終了──なぜ何も返さないのか</span></h2>



<p>「<span class="bold-red">DeepSeek</span>が暴走するなら、<span class="bold-blue">Qwen2.5</span>に切り替えればいい」──そう思っていた。</p>



<p>しかし現実は違った。</p>



<p><span class="bold-blue">Qwen2.5</span><span class="bold">は沈黙する。そして即終了する。</span></p>



<p>&#8211; 何も返さない&nbsp;</p>



<p>&#8211; 返しても途中で止まる&nbsp;</p>



<p>&#8211; 文章の途中で「。」だけ返して終了する&nbsp;</p>



<p>&#8211; そもそもプロンプトを読んでいない</p>



<p>これは<span class="bold">モデル</span>の“<span class="bold-green">解像度の壁</span>” だ。</p>



<div class="wp-block-group is-style-question-box is-layout-constrained wp-block-group-is-layout-constrained">
<p>※. 線画の多いPDFマニュアル相手では</p>
</div>



<p><span class="bold-red">&#8211; DeepSeekは暴走する</span>&nbsp;</p>



<p><span class="bold-green">&#8211; Qwenは沈黙する&nbsp;</span></p>



<div class="wp-block-group is-style-alert-box is-layout-constrained wp-block-group-is-layout-constrained">
<p>AIは万能ではない。&nbsp;<br><span class="bold">Gemini</span>は、暴走したし、<span class="bold">Copilot</span>も迷走する（人間が時々釘を刺さないと）</p>
</div>



<div class="wp-block-group is-style-information-box is-layout-constrained wp-block-group-is-layout-constrained">
<p>ちなみに、このブログのアイキャッチ画像は、<br><span class="bold">DeepSeek</span>で画像生成用のプロンプトを作り、<br><span class="bold">Gemini</span>＋<span class="bold">nanobanana</span>で生成したもの。<br>Copilotでもやってみたが、プロンプトを無視して変な中国字交じりのテキスト乱発で使用に耐えない。</p>
</div>



<p>そして、<span class="bold">AIは沈黙もする</span>。し、変なエラーを英文で返してくる「お答えできませんみたいな！」</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/70ff4b07aa6311f8a2c25e38befbf79f-800x422.jpg" alt="AI" class="wp-image-14186" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/70ff4b07aa6311f8a2c25e38befbf79f-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/70ff4b07aa6311f8a2c25e38befbf79f-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/70ff4b07aa6311f8a2c25e38befbf79f-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/70ff4b07aa6311f8a2c25e38befbf79f-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/70ff4b07aa6311f8a2c25e38befbf79f.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">Pythonのクソ仕様と戦う──インデント地獄と構文の罠</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc4">## 第4章：Pythonのクソ仕様と戦う─インデント地獄と構文の罠</span></h2>



<p><span class="bold">Python</span>は便利だ。&nbsp;</p>



<p>だが、<span class="bold-red">構文が狂っている</span>。</p>



<p>&#8211; インデントが1文字ずれただけで全崩壊&nbsp;</p>



<p>&#8211; 差分パッチが貼れない&nbsp;（Editor上で、インデントがずれる。）</p>



<p>&#8211; コードブロックを貼るとインデントが壊れる&nbsp;</p>



<p>&#8211; Copilotが全文置換を提案してくる&nbsp;</p>



<p>&#8211; <span class="bold-red">そして壊れる</span></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="689" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/532dcb533169b094e05cd2e3659028c6-800x689.jpg" alt="" class="wp-image-14193" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/532dcb533169b094e05cd2e3659028c6-800x689.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/532dcb533169b094e05cd2e3659028c6-500x431.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/532dcb533169b094e05cd2e3659028c6-300x258.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/532dcb533169b094e05cd2e3659028c6-768x662.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/532dcb533169b094e05cd2e3659028c6-1536x1324.jpg 1536w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/532dcb533169b094e05cd2e3659028c6.jpg 1583w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">改行の後に、判読不能文字が混じり込む、解決策は「改行無しの１文にすること」</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="800" height="284" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/Python-23-800x284.png" alt="これが、解決策23行目が、上の画像の21～36行目に該当する
" class="wp-image-14195" style="aspect-ratio:2.8170013755158183;width:800px;height:auto" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/Python-23-800x284.png 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/Python-23-500x177.png 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/Python-23-300x106.png 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/Python-23-768x272.png 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/Python-23.png 1150w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>これが、解決策23行目が、上の画像の21～36行目に該当する</p>



<p>私は何度も言った。</p>



<p>&gt; 「<span class="bold-red">Pythonの開発者は頭がおかしいのか？</span>」</p>



<p>それでもPythonを選ぶ理由はただ一つ。&nbsp;</p>



<p><span class="bold">AIバッチを作るにはPythonが最適だからだ。</span></p>



<p>狂気の選択だが、それでも<span class="bold">Python</span>を使うしかない。</p>



<div class="wp-block-group is-style-information-box is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-group is-style-question-box is-layout-constrained wp-block-group-is-layout-constrained">
<p><span class="bold">Python</span>がAI Orchestrationに向いているからだ。<br>Python自身が優れている訳では無く、裏で強力なC言語を操っている。<br>ある意味GoogleやMetaまでもオーケストレーションしている。</p>
</div>



<p>Pythonは言語仕様の不満点（インポート地獄やインデント仕様）がありながらも、重たい処理をC言語で高速に実行できる「接着剤（グルー言語）」としての利便性により、AI開発で圧倒的なシェアを獲得している。GoogleやMetaといったビッグテックもAI最新ライブラリをPython向けに提供しており、最先端技術を活用するためにはPythonの活用が必須となっている。技術的な欠点はあるものの、最強の武器（AIツール）が利用できる「利便性」が世界中で評価されている。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-verification-mindset/14134/" title="【LLM開発】なぜPythonの仕様に絶望しても、AIオーケストレーションやバッチ開発でPython一択になるのか？3つの決定的な理由" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-320x180.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-800x447.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-768x429.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-160x90.jpg 160w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development.jpg 1376w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【LLM開発】なぜPythonの仕様に絶望しても、AIオーケストレーションやバッチ開発でPython一択になるのか？3つの決定的な理由</div><div class="blogcard-snippet internal-blogcard-snippet">インデントのズレで崩壊し、ファイル名1つでヘソを曲げるPythonが、なぜ世界シェア1位なのか？「たった1文字で3時間溶かした」エンジニアが、AI・OCRバッチ開発の現場で直面したPythonの圧倒的な「接着力」と、歪んだエコシステムの歴史を暴く。Ryzen AI 9 HX470 LLM</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://xn--ecka7j.biz" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">イイネ.biz</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.01</div></div></div></div></a>
</div>
</div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-verification-mindset/14116/" title="【Pythonの罠】たった「1文字」の記述ミスで3時間溶けた実例（例：末尾のコンマ、ミュータブル引数）とLLMが見抜けなかった理由" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n00-_093356-320x180.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n00-_093356-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n00-_093356-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n00-_093356-160x90.jpg 160w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Pythonの罠】たった「1文字」の記述ミスで3時間溶けた実例（例：末尾のコンマ、ミュータブル引数）とLLMが見抜けなかった理由</div><div class="blogcard-snippet internal-blogcard-snippet">Pythonの相対インポート `from .module` がなぜ分かりにくいのか、その歴史的理由と対策を解説。たった1文字 `.` で挙動が変わる『クソ仕様』の真相と、AS/400との比較から見えるPythonの限界。Python初心者からベテランまで、一度は悩んだ『インポート地獄』を完全解決。『急がば回れ』の精神でPythonと向き合う方法。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://xn--ecka7j.biz" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">イイネ.biz</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.05.31</div></div></div></div></a>
</div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/a540fb4dfe8f4efc0710db919b18f240-800x422.jpg" alt="AI" class="wp-image-14185" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/a540fb4dfe8f4efc0710db919b18f240-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/a540fb4dfe8f4efc0710db919b18f240-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/a540fb4dfe8f4efc0710db919b18f240-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/a540fb4dfe8f4efc0710db919b18f240-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/a540fb4dfe8f4efc0710db919b18f240.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">20 / 10 / 10──塵掃除第二弾の核心データ</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc5">## 第5章：20 / 10 / 10──塵掃除第二弾の核心データ</span></h2>



<p>`<span class="bold">prefix</span>`の議論が長引き、Copilotは<span class="bold">本筋を忘れた</span>。(これも迷走の一部)</p>



<p>しかし、私が抽出した **<span class="bold">20</span> / <span class="bold">10</span> / <span class="bold">10</span>** は`<span class="bold">JobN</span>`の心臓部だ。</p>



<div class="simple-table" style="overflow-x: auto; margin: 20px 0;">

<p id="table-top2"><i class="fas fa-table"></i> 分別</p>
<!-- Block Start -->
<figure class="wp-block-table">
<div class="scrollable-table stfc-sticky"><table class="eg1" style="border:solid; border-collapse:separate; border-color:blue" border="3">
<caption class="tal"><i class="fas fa-edit"></i><span style="color: white;"><b>OCR後の翻訳不能文字の掃除の為の目安</b></span></caption>
<thead>
<tr><th>#</th>
<th scope="col" class="c_aqua tal">分類</th>
<th scope="col" class="c_aqua tal">行数</th>
<th scope="col" class="c_aqua tal">意味</th>
</tr></thead>

<tbody>
<tr style="border-bottom: 1px solid #2f3f6f;">
<td></td>
<td style="padding: 10px; font-weight: bold;">ゴミ行</td>
<td style="padding: 10px; text-align: center; font-family: monospace;">20</td>
<td style="padding: 10px;">完全に除去すべきノイズ</td>
</tr>
<tr style="border-bottom: 1px solid #2f3f6f;"><td></td>
<td style="padding: 10px; font-weight: bold;">英語行</td>
<td style="padding: 10px; text-align: center; font-family: monospace;">10</td>
<td style="padding: 10px;">そのまま翻訳対象</td>
 </tr>
<tr style="border-bottom: 1px solid #2f3f6f;"><td></td>
<td style="padding: 10px; font-weight: bold;">迷う行</td>
<td style="padding: 10px; text-align: center; font-family: monospace;">10</td>
<td style="padding: 10px;">要判断・要チューニング</td>
 </tr>
</tbody></table></div></figure>
<hr>
</div>



<p>これは<span class="bold">Tuneのための</span>“<span class="bold">金のデータ</span>”。&#8230;だと、Copilotは、言った。</p>



<p>Copilotはprefixの議論に夢中になり、このデータの処理を忘れた。&nbsp;</p>



<p>私は言った。> 「<span class="bold">20/10/10 の抽出は無駄だったのか？</span>」</p>



<p>Copilotはこう答えた。</p>



<p>> 「無駄ではない。むしろ最重要データ。Copilotが本筋を忘れたのが問題。」&#x27a1; それは、<span class="bold">その通りだ。</span>&#x27a1; しかしそれは、</p>



<div class="wp-block-group is-style-question-box is-layout-constrained wp-block-group-is-layout-constrained">
<p>※.ゴミ行は、&#8217;ocrmypdf&#8217;が、線画を無意味なアルファベット・記号に変換したもの。<br>迷う行は、チャンク処理で、１文字(％,,,)、２文字（Wh,EN,if,NN,NG,,,）、３文字（COR,YIM,All,ATT,,）・・・数文字の塊で、何かの略号の様に見えなくもないもの。</p>
</div>



<p>に過ぎない。これに何の意味がある？<br>この違和感にその時は未だ気づいていなかった。やがてくる20/10/10の根拠の崩壊を。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/8911d75974ff3cd71598de52540e0724-800x422.jpg" alt="AI" class="wp-image-14190" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/8911d75974ff3cd71598de52540e0724-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/8911d75974ff3cd71598de52540e0724-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/8911d75974ff3cd71598de52540e0724-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/8911d75974ff3cd71598de52540e0724-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/8911d75974ff3cd71598de52540e0724.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">prefix再々設計──AS/400的バッチ思想の復活</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc6">## 第6章：prefix再々設計──AS/400的バッチ思想の復活</span></h2>



<p>`<span class="bold">prefix</span>`の議論は、最終的に**AS/400的な責務分離**に落ち着いた。</p>



<div class="simple-table" style="overflow-x: auto; margin: 20px 0;">

<p id="table-top1"><i class="fas fa-table"></i> .pyモジュール</p>
<!-- Block Start -->
<figure class="wp-block-table">
<div class="scrollable-table stfc-sticky"><table class="eg1" style="border:solid; border-collapse:separate; border-color:blue" border="3">
<caption class="tal"><i class="fas fa-edit"></i><span style="color: white;">追加<b>prefix</b></span></caption>
<thead>
<tr><th>#</th>
<th scope="col"  style="padding: 12px; text-align: left; border-bottom: 2px solid #6fb7ff; color: #6fb7ff;">モジュール</th>
<th scope="col"  style="padding: 12px; text-align: center; border-bottom: 2px solid #6fb7ff; color: #6fb7ff;">行頭prefix</th>
<th scope="col"  style="padding: 12px; text-align: center; border-bottom: 2px solid #6fb7ff; color: #6fb7ff;">ファイル名prefix</th>
</tr></thead>
  <tbody>
<tr style="border-bottom: 1px solid #2f3f6f;"><td></td>
<td style="padding: 10px; font-weight: bold;">preprocess</td>
<td style="padding: 10px; text-align: center;">&#x274c;</td>
<td style="padding: 10px; text-align: center;">&#x274c;</td>
</tr>
<tr style="border-bottom: 1px solid #2f3f6f;"><td></td>
<td style="padding: 10px; font-weight: bold;">translate</td>
<td style="padding: 10px; text-align: center;">&#x274c;</td>
<td style="padding: 10px; text-align: center;">&#x274c;</td>
</tr>
<tr style="border-bottom: 1px solid #2f3f6f;"><td></td>
<td style="padding: 10px; font-weight: bold;">dictionary</td>
<td style="padding: 10px; text-align: center;">&#x274c;</td>
<td style="padding: 10px; text-align: center;">&#x274c;</td>
</tr>
<tr style="border-bottom: 1px solid #2f3f6f;"><td></td>
<td style="padding: 10px; font-weight: bold;">save_output</td>
<td style="padding: 10px; text-align: center;">&#x274c;</td>
<td style="padding: 10px; text-align: center; color: #6fb7ff;">&#x2714;</td>
</tr>
<tr style="border-bottom: 1px solid #2f3f6f;"><td></td>
<td style="padding: 10px; font-weight: bold;">extract</td>
<td style="padding: 10px; text-align: center;">&#x274c;</td>
<td style="padding: 10px; text-align: center;">&#x274c;</td>
</tr>
<tr><td></td>
<td style="padding: 10px; font-weight: bold;">split_chunks</td>
<td style="padding: 10px; text-align: center;">&#x274c;</td>
<td style="padding: 10px; text-align: center; color: #6fb7ff;">&#x2714;</td>
</tr>
</tbody></table></div></figure>
<hr>
</div>



<p><span class="bold"><span class="bold-blue">ルール：</span>行頭prefixは全面禁止。ファイル名prefixのみ許可。</span></p>



<p>`<span class="bold">JobN</span>`の翻訳パイプラインは、この思想で完全に安定した。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/7fea45eb0735b1e6d05624939b3212bb-800x422.jpg" alt="AI" class="wp-image-14184" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/7fea45eb0735b1e6d05624939b3212bb-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/7fea45eb0735b1e6d05624939b3212bb-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/7fea45eb0735b1e6d05624939b3212bb-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/7fea45eb0735b1e6d05624939b3212bb-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/7fea45eb0735b1e6d05624939b3212bb.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">2重遭難の危機-preprocess.py と translate.py の同時崩壊</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc7">## 第7章：2重遭難─preprocess.py と translate.py の同時崩壊</span></h2>



<p>`<span class="bold">prefix</span>`の議論が迷走していた最中、&nbsp;</p>



<p><span class="bold">`preprocess.py</span>` と `<span class="bold">translate.py</span>` の両方に“<span class="bold">行頭prefix</span>”が<span class="bold">混入する事故</span>が起きた。(<span class="bold"><span class="bold-blue">ルール：</span>行頭prefixは全面禁止。ファイル名prefixのみ許可。</span>を定めた後に.pyを再確認していて発覚。)</p>



<p>これは`JobN`にとって<span class="bold">致命的な2重遭難</span>の危機だった。</p>



<p> &#x1f534; <span class="bold">preprocess.py</span> のprefix汚染</p>



<p>&#8220;`python</p>



<pre class="wp-block-code"><code>prefixed_lines = &#91;f"{basename} {line}" for line in cleaned_lines]</code></pre>



<p>&#8220;`</p>



<p> &#x1f534; <span class="bold">translate.py</span> のprefix汚染</p>



<p>&#8220;`python</p>



<pre class="wp-block-code"><code>out_f.write(f"{basename} {clean}\n")</code></pre>



<p>&#8220;`</p>



<p><span class="bold">この2つが同時に存在すると</span>：</p>



<p>&#8211; 正規化が壊れる&nbsp;</p>



<p>&#8211; Qwenの翻訳が汚染される&nbsp;</p>



<p>&#8211; 辞書適用が誤爆する&nbsp;</p>



<p>&#8211; Create/Trackが壊れる&nbsp;</p>



<p>&#8211; そもそも翻訳テキストが“本来の姿”ではなくなる&nbsp;</p>



<p><span class="bold">＝ `JobN`全体が崩壊する。</span></p>



<p>私は即座に言った。</p>



<p>&gt; 「<span class="bold">行頭prefixは全面禁止。preprocessとtranslateのprefixは即削除。</span>」</p>



<p>そして両方のprefixを削除し、`JobN`は再び正常化した。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/be3448bbee803820f771b22318eb164e-800x422.jpg" alt="AI" class="wp-image-14183" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/be3448bbee803820f771b22318eb164e-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/be3448bbee803820f771b22318eb164e-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/be3448bbee803820f771b22318eb164e-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/be3448bbee803820f771b22318eb164e-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/be3448bbee803820f771b22318eb164e.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">Copilotの軌道修正──迷走からの復帰</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc8">## 第8章：Copilotの軌道修正──迷走からの復帰</span></h2>



<p>Copilotは迷走した。&nbsp;</p>



<p><span class="bold">だが、<span class="bold-blue">軌道修正をした。</span></span></p>



<p>&#8211; `<span class="bold-red">save_output.py</span>` という存在しないファイルを提案&nbsp;</p>



<p>&#8211; `<span class="bold">extract.py</span>` にprefixを付けろと言い出す&nbsp;</p>



<p>&#8211; `<span class="bold">main.py</span>` を修正しろと言い出す&nbsp;</p>



<p>&#8211; `<span class="bold">preprocess</span>` と `<span class="bold">translate</span>` に<span class="bold-red">prefixを混入させる&nbsp;</span></p>



<p>&#8211; <span class="bold">しかし最終的にはprefixを全削除し、正常化に戻った</span></p>



<p>&gt; <span class="bold-red">AIは嘘をつく。AIは本筋を忘れる。AIは迷走する。</span>&nbsp;</p>



<p>&gt; だが──<span class="bold">軌道修正はできる。そして、共に前に進むことはできる。</span></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/8af184e13567ca7b7fcd3eae0ef28d9b-800x422.jpg" alt="AI" class="wp-image-14181" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/8af184e13567ca7b7fcd3eae0ef28d9b-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/8af184e13567ca7b7fcd3eae0ef28d9b-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/8af184e13567ca7b7fcd3eae0ef28d9b-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/8af184e13567ca7b7fcd3eae0ef28d9b-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/8af184e13567ca7b7fcd3eae0ef28d9b.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">まだ続く塵掃除──再々設計のその先へ</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc9">## 第9章：まだ続く塵掃除──再々設計のその先へ</span></h2>



<p>`<span class="bold">prefix</span>`の再々設計が終わった。&nbsp;</p>



<p>だが、<span class="bold">塵掃除はまだ終わらない</span>。</p>



<p>&#8211; Tune用 `<span class="bold">Replace_Blank.txt</span>`（強化版:ゴミ文字をブランクに置き換える辞書）&nbsp;</p>



<p>&#8211; `<span class="bold">preprocess.py</span>`（強化版：翻訳前のゴミ掃除強化）&nbsp;</p>



<p>&#8211; 正規表現の最適化&nbsp;</p>



<p>&#8211; Create/Trackへの流用&nbsp;</p>



<p>&#8211; そして <span class="bold">20</span>/<span class="bold">10</span>/<span class="bold">10</span>の<span class="bold">本処理</span></p>



<p>&gt; <span class="bold">AIとの共生は「終わりのない塵掃除」だ。</span>&nbsp;</p>



<p>&gt; だが、それでいい。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/7c1796f2b71f6c39748ab76d015d591e-800x422.jpg" alt="AIオーケストレーション" class="wp-image-14180" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/7c1796f2b71f6c39748ab76d015d591e-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/7c1796f2b71f6c39748ab76d015d591e-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/7c1796f2b71f6c39748ab76d015d591e-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/7c1796f2b71f6c39748ab76d015d591e-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/7c1796f2b71f6c39748ab76d015d591e.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">AIとの共生は“設計思想”で決まる</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc10">## 第10章：結論──AIとの共生は“設計思想”で決まる</span></h2>



<p>&#8211; AIは嘘をつく&nbsp;</p>



<p>&#8211; AIは沈黙する&nbsp;</p>



<p>&#8211; AIは暴走する&nbsp;</p>



<p>&#8211; AIは本筋を忘れる&nbsp;</p>



<p><span class="bold-blue">だからこそ──</span></p>



<p>&gt; <span class="bold">人間が設計し、AIに実装させる。</span></p>



<p>その繰り返しが、<span class="bold">AIとの共生</span>であり、<span class="bold-blue">AIオーケストレーションの本質</span>だ。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="422" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G90_TO_BE_Continued-800x422.jpg" alt="AI" class="wp-image-14182" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G90_TO_BE_Continued-800x422.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G90_TO_BE_Continued-500x264.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G90_TO_BE_Continued-300x158.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G90_TO_BE_Continued-768x406.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G90_TO_BE_Continued.jpg 1424w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">TO BE  Continued</figcaption></figure>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-orchestration/14222/" title="【AIオーケストレーションの嘘】根拠ゼロの「20/10/10ルール」を繰り返すCopilotと、有効英文比率38%の残酷な現実" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="640" height="360" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_rze9gvrze9gvrze9-640x360.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_rze9gvrze9gvrze9-640x360.jpg 640w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_rze9gvrze9gvrze9-240x135.jpg 240w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/G00_Generated_Image_rze9gvrze9gvrze9-320x180.jpg 320w" sizes="(max-width: 640px) 100vw, 640px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【AIオーケストレーションの嘘】根拠ゼロの「20/10/10ルール」を繰り返すCopilotと、有効英文比率38%の残酷な現実</div><div class="blogcard-snippet internal-blogcard-snippet">Tune OCRの636行を前に、Copilotと共に「20/10/10方式」でノイズ除去を試みたが、行単位判定の限界と後出し前提により完全破綻。8日間の迷走の末、「全文連結＋英文法＋辞書照合」という新方式へ転換。AIオーケストレーションの「闇（誤診・デグレード・ハルシネーション）」と「光（人間の方式設計＋AIの忠実な実装）」を、実際の対話ログを交えて描く。スマートな進捗ではない、泥臭いAI共生の核心。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://xn--ecka7j.biz" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">イイネ.biz</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.14</div></div></div></div></a>
</div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="436" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-Image-800x436.jpg" alt="AI Orchestration" class="wp-image-14179" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-Image-800x436.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-Image-500x273.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-Image-300x164.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-Image-768x419.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-Image.jpg 1408w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">AI Orchestration</figcaption></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【LLM開発】なぜPythonの仕様に絶望しても、AIオーケストレーションやバッチ開発でPython一択になるのか？3つの決定的な理由</title>
		<link>https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-verification-mindset/14134/</link>
		
		<dc:creator><![CDATA[Jun-N]]></dc:creator>
		<pubDate>Mon, 01 Jun 2026 11:20:37 +0000</pubDate>
				<category><![CDATA[検証シリーズ：向き合い方]]></category>
		<category><![CDATA[AIとの共生]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ツール]]></category>
		<category><![CDATA[道具]]></category>
		<guid isPermaLink="false">https://xn--ecka7j.biz/?p=14134</guid>

					<description><![CDATA[前回、私は『Pythonの「たった1文字」で3時間溶けた話』という記事を書いた。 ファイル名に少し意図を込めただけでシステムから存在を黙殺され、空白の数だけでネストが変わるPythonの「先のことを全く考えていないクソ仕 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p></p>



<p>前回、私は『Pythonの「たった1文字」で3時間溶けた話』という記事を書いた。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-verification-mindset/14116/" title="【Pythonの罠】たった「1文字」の記述ミスで3時間溶けた実例（例：末尾のコンマ、ミュータブル引数）とLLMが見抜けなかった理由" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n00-_093356-320x180.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n00-_093356-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n00-_093356-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n00-_093356-160x90.jpg 160w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Pythonの罠】たった「1文字」の記述ミスで3時間溶けた実例（例：末尾のコンマ、ミュータブル引数）とLLMが見抜けなかった理由</div><div class="blogcard-snippet internal-blogcard-snippet">Pythonの相対インポート `from .module` がなぜ分かりにくいのか、その歴史的理由と対策を解説。たった1文字 `.` で挙動が変わる『クソ仕様』の真相と、AS/400との比較から見えるPythonの限界。Python初心者からベテランまで、一度は悩んだ『インポート地獄』を完全解決。『急がば回れ』の精神でPythonと向き合う方法。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://xn--ecka7j.biz" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">イイネ.biz</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.05.31</div></div></div></div></a>
</div>



<p>ファイル名に少し意図を込めただけでシステムから存在を黙殺され、空白の数だけでネストが変わるPythonの「先のことを全く考えていないクソ仕様」に、リアルに机を叩いて激怒した。</p>



<p>だが、ここで誰もが不思議に思うはずだ。<br><strong>「そんなダメダメな言語が、なぜ今、世界人気ナンバーワンの座に君臨しているのか？」</strong></p>



<p>JavaやC言語、Rustのような洗練された言語があるにもかかわらず、なぜ私たちは、この融通の利かないPythonを「承知の上で」使い続けなければならないのか。</p>



<p>結論から言おう。Pythonは言語として美しいから愛されているのではない。<strong>「最強の武器を持った、最高に都合のいいおバカ」</strong>だからだ。今回は、線画だらけの英文マニュアルをOCR（ocrmypdf）で文字起こしし、ローカルLLM（Qwen2.5）でバッチ翻訳するという「泥臭い開発の最前線」から、Pythonが世界を制した信じがたいパラドックスを解き明かす。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="447" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/01-Python-Chapter1-The-History-of-How-Mathematicians-Programming-Novices-All-Lumped-the-Rigid-Languages-800x447.jpg" alt="Python" class="wp-image-14129" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/01-Python-Chapter1-The-History-of-How-Mathematicians-Programming-Novices-All-Lumped-the-Rigid-Languages-800x447.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/01-Python-Chapter1-The-History-of-How-Mathematicians-Programming-Novices-All-Lumped-the-Rigid-Languages-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/01-Python-Chapter1-The-History-of-How-Mathematicians-Programming-Novices-All-Lumped-the-Rigid-Languages-300x167.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/01-Python-Chapter1-The-History-of-How-Mathematicians-Programming-Novices-All-Lumped-the-Rigid-Languages-768x429.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/01-Python-Chapter1-The-History-of-How-Mathematicians-Programming-Novices-All-Lumped-the-Rigid-Languages-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/01-Python-Chapter1-The-History-of-How-Mathematicians-Programming-Novices-All-Lumped-the-Rigid-Languages-160x90.jpg 160w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/01-Python-Chapter1-The-History-of-How-Mathematicians-Programming-Novices-All-Lumped-the-Rigid-Languages-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/01-Python-Chapter1-The-History-of-How-Mathematicians-Programming-Novices-All-Lumped-the-Rigid-Languages.jpg 1376w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">Python-The History of How Mathematicians (Programming Novices) All Lumped the Rigid Languages</figcaption></figure>




  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">第1章：「数学者（プログラミングの素人）」たちが、お堅い言語を全員で拒絶した歴史</a></li><li><a href="#toc2" tabindex="0">第2章：裏で「C言語の筋肉」を操る、ただの「命令役」というチート特性</a></li><li><a href="#toc3" tabindex="0">第3章：「泥臭いゴミ掃除（テキスト加工）」を最短で片付ける、無類の強さ</a></li><li><a href="#toc4" tabindex="0">第4章：誰も抜け出せない、先行投資の「雪だるま効果（エコシステム）」</a></li><li><a href="#toc5" tabindex="0">【まとめ】</a></li></ul>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">第1章：「数学者（プログラミングの素人）」たちが、お堅い言語を全員で拒絶した歴史</span></h2>



<ul class="wp-block-list">
<li><strong>AI</strong><strong>の生みの親はエンジニアではない</strong>
<ul class="wp-block-list">
<li>AIやデータ解析のアルゴリズム（理論）の土台を作ったのは、コードの美しさを競うプログラマーではなく、数式を証明したい数学者や科学者だった。</li>
</ul>
</li>



<li><strong>「型定義」や「おまじない」へのウンザリ感</strong>
<ul class="wp-block-list">
<li>C言語やJavaで画面に1行出すための厳格なルールは、彼らにとって「本業（数式）の邪魔」でしかなかった。</li>
</ul>
</li>



<li><strong>「ノートに数式を書く感覚」で動くユルさ</strong>
<ul class="wp-block-list">
<li>型も不要、適当に書いてもパッと動くPythonの「ガバガバさ」こそが、アイデアを最速でスケッチしたい天才たちにとって、最高にハードルの低い「実験場」となった。</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="447" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/02-Python-Chapter2-The-cheat-ability-of-simply-being-a-commander-wielding-the-muscles-of-C-language-behind-the-scenes-800x447.jpg" alt="Python" class="wp-image-14130" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/02-Python-Chapter2-The-cheat-ability-of-simply-being-a-commander-wielding-the-muscles-of-C-language-behind-the-scenes-800x447.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/02-Python-Chapter2-The-cheat-ability-of-simply-being-a-commander-wielding-the-muscles-of-C-language-behind-the-scenes-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/02-Python-Chapter2-The-cheat-ability-of-simply-being-a-commander-wielding-the-muscles-of-C-language-behind-the-scenes-300x167.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/02-Python-Chapter2-The-cheat-ability-of-simply-being-a-commander-wielding-the-muscles-of-C-language-behind-the-scenes-768x429.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/02-Python-Chapter2-The-cheat-ability-of-simply-being-a-commander-wielding-the-muscles-of-C-language-behind-the-scenes-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/02-Python-Chapter2-The-cheat-ability-of-simply-being-a-commander-wielding-the-muscles-of-C-language-behind-the-scenes-160x90.jpg 160w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/02-Python-Chapter2-The-cheat-ability-of-simply-being-a-commander-wielding-the-muscles-of-C-language-behind-the-scenes-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/02-Python-Chapter2-The-cheat-ability-of-simply-being-a-commander-wielding-the-muscles-of-C-language-behind-the-scenes.jpg 1376w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">Python-The cheat ability of simply being a [commander,] wielding the [muscles of C language] behind the scenes</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc2">第2章：裏で「C言語の筋肉」を操る、ただの「命令役」というチート特性</span></h2>



<ul class="wp-block-list">
<li><strong>遅すぎるPython、速すぎるC言語の合体</strong>
<ul class="wp-block-list">
<li>Python自身の処理速度はゴミのように遅い。だが、Pythonは内部設計がシンプルだったため、「重たい計算部分だけをC言語にすり替える」という拡張（接着）が異常に簡単だった。</li>
</ul>
</li>



<li><strong>私たちが触っているのは「拡声器」だけ</strong>
<ul class="wp-block-list">
<li>あなたが動かしている <code>ocrmypdf</code> の高度な画像解析も、<code>Qwen2.5-14B</code> の超重量級のAI推論も、実際はPythonではなく裏の「C言語の筋肉」が身代わりになって爆速で実行している。</li>
</ul>
</li>



<li><strong>「コードを書くのはラク（Python）」</strong><strong>×</strong><strong>「実行は爆速（C言語）」のハイブリッド</strong>
<ul class="wp-block-list">
<li>本体の仕様がおバカでも、1行 <code>import</code> するだけで世界最強の筋肉をノーコストで操れる。この「接着剤（グルー言語）」としての有用性に、全人類がひれ伏した。</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="447" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/03-Python-Chapter-3-Unparalleled-strength-in-quickly-completing-the-gritty-cleanup-text-processing-800x447.jpg" alt="Python" class="wp-image-14131" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/03-Python-Chapter-3-Unparalleled-strength-in-quickly-completing-the-gritty-cleanup-text-processing-800x447.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/03-Python-Chapter-3-Unparalleled-strength-in-quickly-completing-the-gritty-cleanup-text-processing-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/03-Python-Chapter-3-Unparalleled-strength-in-quickly-completing-the-gritty-cleanup-text-processing-300x167.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/03-Python-Chapter-3-Unparalleled-strength-in-quickly-completing-the-gritty-cleanup-text-processing-768x429.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/03-Python-Chapter-3-Unparalleled-strength-in-quickly-completing-the-gritty-cleanup-text-processing-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/03-Python-Chapter-3-Unparalleled-strength-in-quickly-completing-the-gritty-cleanup-text-processing-160x90.jpg 160w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/03-Python-Chapter-3-Unparalleled-strength-in-quickly-completing-the-gritty-cleanup-text-processing-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/03-Python-Chapter-3-Unparalleled-strength-in-quickly-completing-the-gritty-cleanup-text-processing.jpg 1376w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">Python-Unparalleled strength in quickly completing the-gritty cleanup (text processing)</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc3">第3章：「泥臭いゴミ掃除（テキスト加工）」を最短で片付ける、無類の強さ</span></h2>



<ul class="wp-block-list">
<li><strong>OCR</strong><strong>の宿命「線画ノイズ」との闘い</strong>
<ul class="wp-block-list">
<li>図面の斜線や網掛けが、すべて「___」や「|||」といった文字化けの塵（ノイズ）になってテキストを汚染する地獄。これを放置すればAIは確実に暴走する。</li>
</ul>
</li>



<li><strong>他の言語なら「お作法コード」だけで日が暮れる</strong>
<ul class="wp-block-list">
<li>厳格な言語なら、ファイルを開いて、メモリを確保して、文字コードを判定して…と、ノイズを1つ弾くために数十行のコードが必要になる。</li>
</ul>
</li>



<li><strong>Python</strong><strong>なら「ゴミ辞書」を直感的に作れる</strong>
<ul class="wp-block-list">
<li>中身が空（0バイト）のファイルでもパッケージの目印にできるほど構造が単純だからこそ、職人が本当に集中したい「正規表現でのノイズ除去」や「ゴミ辞書の構築」を最小限の行数でダイレクトに記述できる。</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="447" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/04-Python-Chapter-4-The-Snowball-Effect-Ecosystem-of-Upfront-Investment-No-One-Can-Escape-800x447.jpg" alt="Python" class="wp-image-14132" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/04-Python-Chapter-4-The-Snowball-Effect-Ecosystem-of-Upfront-Investment-No-One-Can-Escape-800x447.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/04-Python-Chapter-4-The-Snowball-Effect-Ecosystem-of-Upfront-Investment-No-One-Can-Escape-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/04-Python-Chapter-4-The-Snowball-Effect-Ecosystem-of-Upfront-Investment-No-One-Can-Escape-300x167.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/04-Python-Chapter-4-The-Snowball-Effect-Ecosystem-of-Upfront-Investment-No-One-Can-Escape-768x429.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/04-Python-Chapter-4-The-Snowball-Effect-Ecosystem-of-Upfront-Investment-No-One-Can-Escape-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/04-Python-Chapter-4-The-Snowball-Effect-Ecosystem-of-Upfront-Investment-No-One-Can-Escape-160x90.jpg 160w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/04-Python-Chapter-4-The-Snowball-Effect-Ecosystem-of-Upfront-Investment-No-One-Can-Escape-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/04-Python-Chapter-4-The-Snowball-Effect-Ecosystem-of-Upfront-Investment-No-One-Can-Escape.jpg 1376w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">Python-The Snowball Effect (Ecosystem) of Upfront Investment No One Can Escape</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc4">第4章：誰も抜け出せない、先行投資の「雪だるま効果（エコシステム）」</span></h2>



<ul class="wp-block-list">
<li><strong>「人が人を呼ぶ」無敵のループ</strong>
<ul class="wp-block-list">
<li>「AI研究にはPythonが楽」➔ 世界中の大学がPythonでコードを公開 ➔ GoogleやMetaなどのビッグテックも「みんなが使うPython向けに最新AI（PyTorch等）を出すのが一番普及する」と判断。</li>
</ul>
</li>



<li><strong>「仕様はクソだが、武器がここにしかない」という現実</strong>
<ul class="wp-block-list">
<li>他言語のエンジニアが「Pythonのインデント仕様はクソだ」と正論を言ったところで、最先端のAIやOCRの武器はPythonの畑にしか落ちていない。結果、全員が「渋々、Pythonを手なずける」道を選ぶ。</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="447" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/0908a2aa8e0fa8457447f168a1e5f2f3-800x447.jpg" alt="python" class="wp-image-14133" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/0908a2aa8e0fa8457447f168a1e5f2f3-800x447.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/0908a2aa8e0fa8457447f168a1e5f2f3-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/0908a2aa8e0fa8457447f168a1e5f2f3-300x167.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/0908a2aa8e0fa8457447f168a1e5f2f3-768x429.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/0908a2aa8e0fa8457447f168a1e5f2f3-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/0908a2aa8e0fa8457447f168a1e5f2f3-160x90.jpg 160w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/0908a2aa8e0fa8457447f168a1e5f2f3-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/0908a2aa8e0fa8457447f168a1e5f2f3.jpg 1376w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">python-[Summary] The clumsy and selfish but most easily wielding the world&#8217;s most powerful weapon (AI) – the idiot (Python) – was able to keep up with the rapidly changing times, rather than the skillful and rigid g</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc5">【まとめ】</span></h2>



<p>Pythonが人気な理由。それは<strong>「器用でお堅い秀才（他言語）」よりも、「不器用でワガママだけど、世界最強の武器（AI）を一番手軽に振り回せるおバカ（Python）」の方が、激変する時代のスピードに勝てたから</strong>だ。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="800" height="436" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/Gemini_Generated_Image_s6f57xs6f57xs6f5-800x436.jpg" alt="pythonのSWOT分析" class="wp-image-14201" style="aspect-ratio:1.834892305486865;width:800px;height:auto" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/Gemini_Generated_Image_s6f57xs6f57xs6f5-800x436.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/Gemini_Generated_Image_s6f57xs6f57xs6f5-500x273.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/Gemini_Generated_Image_s6f57xs6f57xs6f5-300x164.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/Gemini_Generated_Image_s6f57xs6f57xs6f5-768x419.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/Gemini_Generated_Image_s6f57xs6f57xs6f5.jpg 1408w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p class="has-text-align-center"><span class="bold-blue">pythonのSWOT分析</span></p>



<!-- Table.html -->
<i class="fas fa-cog fa-2x fa-spin c_lime"></i> <b>SWOT</b>

<figure class="table-wrap">
<div class="scrollable-table stfc-sticky"><table class="eg2 table">
<caption class="tal c_aqua"><i class="fas fa-edit fa-2x"></i>SWOT analysis in Python</caption>
<thead><tr>
<th scope="col">#</th>
<th class="tal" scope="col">内部・<br>外部の環境</th>
<th class="tal c_aqua2" scope="col" style="border: 1px aqua solid!important">プラス要因（成功へ導く）</th>
<th class="tal c_aqua2" scope="col" style="border: 1px aqua solid!important">マイナス要因（足を引っ張る）</th>
</tr></thead>
<tbody>

<tr>
<td></td>
<td rowspan="5">内部環境<br>(Python<br>そのものの<br>仕様)</td>
<td>【Strength：強み】</td>
<td>【Weakness：弱み】</td>
</tr>
<tr>
<td></td>
<td>・コードが驚異的に少なくて済む（高い生産性）</td>
<td>・インデント1マスのズレでシステムが沈没する</td>
</tr>
<tr>
<td></td>
<td>・文字列の加工（OCRのゴミ掃除）が神レベルで得意</td>
<td>・外見（ファイル名）だけで中身を無視するおバカ設計</td>
</tr>
<tr>
<td></td>
<td>・中身が空（0バイト）でも動く構造のシンプルさ</td>
<td>・先のことを全く考えていないガバガバな変数スコープ</td>
</tr>
<tr>
<td></td>
<td>・裏の高速なC言語を操るための最強の「接着剤」</td>
<td>・デフォルト引数が裏で勝手に繋がってデータを汚染する</td>
</tr>
<tr>
<td></td>
<td rowspan="4">外部環境<br>(市場・<br>ライブラリの<br>環境)</td>
<td>【Opportunity：機会】</td>
<td>【Threat：脅威】</td>
</tr>
<tr>
<td></td>
<td>・世界中の天才が作った武器（AI/OCR）がすべて集結</td>
<td>・そのまま組むとAIが途中で100%暴走する危うさ</td>
</tr>
<tr>
<td></td>
<td>・ocrmypdfやQwen2.5はPythonでしか快適に動かせない</td>
<td>・初心者が雑に書き散らしたゴミコードが世に溢れかえる</td>
</tr>
<tr>
<td></td>
<td>・人が人を呼ぶ「無敵の雪だるま（エコシステム）」</td>
<td>・「Pythonはクソだ」という正論が他言語から飛んでくる</td>
</tr>
</tbody></table></div></figure>



<p>だからこそ、そのまま動かせば暴走するこの不器用な監督（Python）を、例外処理や厳格な起動ルール（<code>-m</code>）でガチガチに固める<strong>「エンタープライズ級のバッチ設計」ができる職人</strong>の価値が、今、市場で跳ね上がっている。</p>



<p>さあ、今日もPythonのワガママ（インデントエラー）に愚痴を言いながら、世界最強のAI翻訳バッチを完成させるとしよう。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/14082/" title="【DeepSeek暴走対策】AIオーケストレーションの限界を超える、ガードレールを取り入れたエンタープライズ級Pythonバッチ設計" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/00-AI-Orchestration-320x180.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/00-AI-Orchestration-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/00-AI-Orchestration-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/00-AI-Orchestration-160x90.jpg 160w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【DeepSeek暴走対策】AIオーケストレーションの限界を超える、ガードレールを取り入れたエンタープライズ級Pythonバッチ設計</div><div class="blogcard-snippet internal-blogcard-snippet">AIに丸投げでは出来高50%未満の赤点？AS/400のCLP構造や150語のルールでDeepSeekが暴走した実体験から、Copilotとの役割分担、Claude 4.5 Sonnetの有効性、PCローカル環境（Ryzen AI 9）で品質100%を叩き出すPythonパイプラインの最終設計図までを徹底解説。Ryzen AI 9 HX470 LLM</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://xn--ecka7j.biz" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">イイネ.biz</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.05.23</div></div></div></div></a>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Pythonの罠】たった「1文字」の記述ミスで3時間溶けた実例（例：末尾のコンマ、ミュータブル引数）とLLMが見抜けなかった理由</title>
		<link>https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-verification-mindset/14116/</link>
		
		<dc:creator><![CDATA[Jun-N]]></dc:creator>
		<pubDate>Sun, 31 May 2026 03:56:34 +0000</pubDate>
				<category><![CDATA[検証シリーズ：向き合い方]]></category>
		<category><![CDATA[AIとの共生]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ツール]]></category>
		<category><![CDATA[道具]]></category>
		<guid isPermaLink="false">https://xn--ecka7j.biz/?p=14116</guid>

					<description><![CDATA[この記事でわかること &#8211; Pythonの相対インポート `from .module` と `from module` の違いがなぜ「クソ仕様」なのか &#8211; たった1文字 `.` の有無でプログラムの [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>この記事でわかること</p>



<p>&#8211; Pythonの相対インポート `from .module` と `from module` の違いがなぜ「クソ仕様」なのか</p>



<p>&#8211; たった1文字 `.` の有無でプログラムの生死が分かれる恐怖</p>



<p>&#8211; Pythonがこの「目障りな仕様」を変えられない本当の理由</p>



<p>&#8211; AS/400の思想と比較してわかる、Python設計の「後先考えなかった」証拠<br>  (AS/400と比べる？･･･この発言自体が&#8221; Frank Gerald Soltis &#8220;博士に対して失礼なのだが、まあ許して戴きたい。)</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n99-_100438-800x533.jpg" alt="Python" class="wp-image-14106" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n99-_100438-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n99-_100438-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n99-_100438-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n99-_100438-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n99-_100438.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">まとめ</figcaption></figure>



<p>「<span class="bold">なんで `.` がついただけで動かなくなるんだよ！</span>」</p>



<p>これは私が昨日、WSL2上のPythonバッチ処理で3時間悩んだ末に出た言葉です。</p>



<p>私は今、DeepSeek-R1を制御するエンタープライズ級のバッチ処理をPythonで書いています。シェルスクリプトでは限界があったからです。しかし――</p>



<p><strong>Pythonを知ってまだ1週間。そして「この仕様」を知ったのが昨日。</strong></p>



<p>結論から言います。Pythonの開発者が存命なら申し訳ないですが、<strong>これは「後先考えなかった」と断言せざるを得ない</strong>。なぜなら、たった1文字 `<strong>.</strong>` の有無でプログラムの生死が分かれる設計は、もはや「虐待」だからです。</p>



<p>しかも、同じような「1文字地獄」がPythonには山ほどある。</p>



<p>今回は、<strong>Pythonの最も分かりにくい仕様のひとつ「相対インポート」</strong> にスポットを当て、なぜこれが生き残り、なぜ変えられないのかを深掘りします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n01-_093900-800x533.jpg" alt="Python" class="wp-image-14108" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n01-_093900-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n01-_093900-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n01-_093900-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n01-_093900-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n01-_093900.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第1章：私が遭遇した「悪夢の3時間」</figcaption></figure>




  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">◆ 第1章：私が遭遇した「悪夢の3時間」</a></li><li><a href="#toc2" tabindex="0">◆ 第2章：なぜこんな「分かりにくい仕様」になったのか？</a><ul><li><a href="#toc3" tabindex="0">2-1. 私が抱いた疑問（そしてあなたも抱くはず）</a></li><li><a href="#toc4" tabindex="0">2-2. Pythonのインポートは「歴史的負債の塊」だった</a></li><li><a href="#toc5" tabindex="0">2-3. なぜ `.` という文字を選んだのか？（UNIXの悪影響）</a></li></ul></li><li><a href="#toc6" tabindex="0">◆ 第3章：AS/400と比較してわかる「Pythonの設計限界」</a></li><li><a href="#toc7" tabindex="0">◆ 第4章：他にもある「1文字地獄」の数々</a></li><li><a href="#toc8" tabindex="0">◆ 第5章：なぜPythonはこの「クソ仕様」で生き残ったのか？</a></li><li><a href="#toc9" tabindex="0">◆ 第6章：「急がば回れ」――私がこの経験から学んだこと</a></li><li><a href="#toc10" tabindex="0">◆ 第7章：結論――Pythonは「クソ仕様」だけど、それでも選ばれる理由</a></li><li><a href="#toc11" tabindex="0">◆ おわりに――同じ罠にはまったあなたへ</a></li><li><a href="#toc12" tabindex="0">◆ 参考：今回のブログで書いた「Pythonクソ仕様」チェックリスト</a><ul><li><a href="#toc13" tabindex="0">インデントの位置(数)でネストが壊れる馬鹿仕様</a></li><li><a href="#toc14" tabindex="0">続きはここから</a></li></ul></li></ul>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">◆ 第1章：私が遭遇した「悪夢の3時間」</span></h2>



<p><span class="bold">状況再現</span></p>



<p>私は以下のようなディレクトリ構成でバッチ処理を書いていました。</p>



<pre class="wp-block-code"><code>G:/@Ubuntu/CLP/PGM-N/
├── main.py              # エントリポイント
├── config.py            # 設定読み込み
├── logger.py            # ログ出力
├── ocr.py               # OCR実行
├── extract.py           # テキスト抽出
├── preprocess.py        # 前処理
├── split_chunks.py      # チャンク分割 ← ここでエラー
├── translate.py         # 翻訳呼び出し
├── dictionary.py        # 辞書適用
├── fileops.py           # ファイル操作
└── mailer.py            # メール通知
</code></pre>



<p>この中の `split_chunks.py` から、同じディレクトリにある `logger.py` の関数を呼びたくなりました。(各工程の<strong>進捗都度Logging</strong>したかった。長時間処理の為、<strong>進捗を知りたかった</strong>！)</p>



<p>私がやった<span class="bold">間違い</span></p>



<pre class="wp-block-code"><code># split_chunks.py の先頭に書いたコード
from logger import log_info   # ← これだと動かない！</code></pre>



<p>出てきた<span class="bold">エラー</span></p>



<pre class="wp-block-code"><code>ModuleNotFoundError: No module named 'logger'</code></pre>



<p>これで、何がいけないのか直ぐに判ったあなたは、「python中毒」<span class="bold-red">間違いなく</span></p>



<p><span class="bold">正解</span>はこれだった</p>



<pre class="wp-block-code"><code>from .logger import log_info   # ← 先頭に「.」を入れるだけで動く</code></pre>



<p>&#8220;<span class="bold-red">.</span>&#8220;こんなの分かる訳がない。pythonを知って1週間足らず、そして触ったのが昨日(１日前)･･･たった1文字（しかも小さい<span class="bold-red">.</span>）思わず「頭大丈夫<span class="bold-red">!?開発者</span>」と、罵ってしまった･･･これは嘘だけど、正にその様な気持ちになった。</p>



<p><span class="bold-red">たった1文字。ドットひとつ。</span></p>



<p>しかも、`main.py` から呼ぶときは `.` が不要なんです。</p>



<pre class="wp-block-code"><code># main.py ではこれで動く
from logger import log_info</code></pre>



<p><span class="bold">同じコードなのに、呼び出す場所によって `<span class="bold-red">.</span>` が必要になったりならなかったり。</span></p>



<p>――は？<strong> 頭おかしくない？</strong></p>



<p>この発見に至るまで、私は3時間を無駄にしました。ググって(正確には<span class="bold">Gemini</span>に聞いて)、StackOverflowを読み漁って、やっと「そういう<strong>仕様なんだ</strong>」と納得するまで。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n02-_094206-800x533.jpg" alt="python" class="wp-image-14109" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n02-_094206-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n02-_094206-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n02-_094206-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n02-_094206-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n02-_094206.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第2章：なぜこんな「分かりにくい仕様」になったのか？</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc2">◆ 第2章：なぜこんな「分かりにくい仕様」になったのか？</span></h2>



<h3 class="wp-block-heading"><span id="toc3">2-1. 私が抱いた疑問（そしてあなたも抱くはず）</span></h3>



<p>ここで、私が3時間悩んだ末に抱いた疑問をそのまま書きます。</p>



<p>&gt; 「他にも `.` １文字だけの違いで切り分ける定義があるのだろうか？ 目が悪いと見過ごしてしまいそうな・目立たない `<span class="bold-red">.</span>` にした？ もっと工夫のしようがなかったのか？ はなはだ疑問に感じるのは私だけだろうか？ センスがないとも思える。」<br>･･･いやハッキリ言う「<span class="bold">センス無し</span>だ。後先考えていない。考えていなかったと断言する。」</p>



<p><span class="bold">この疑問、私だけじゃありません。世界中のPython初心者が同じことを思います。キット</span></p>



<p>では、なぜPythonはこんな仕様になったのか。歴史を追いましょう。</p>



<h3 class="wp-block-heading"><span id="toc4">2-2. Pythonのインポートは「歴史的負債の塊」だった</span></h3>



<p><span class="bold"><span class="badge-yellow">ステップ1</span>：Pythonは「小さいもの」として生まれた</span></p>



<p>1991年、Guido van RossumがPythonを作ったとき――</p>



<p><span class="bold">大規模プロジェクトなんて想定していなかった。</span></p>



<p>当時は：</p>



<p>&#8211; パッケージ（フォルダ単位の管理）という概念がなかった</p>



<p>&#8211; 全部の `.py` ファイルを同じフォルダに置くのが普通</p>



<p>&#8211; インポートは「現在のフォルダ＋システム全体」を適当に探すだけ</p>



<p>つまり、<span class="bold">最初から「バカでも使える簡易言語」だった</span>。&#x1f448;言い方が悪いが、後先のことを考えていなかった証拠です。</p>



<p><span class="bold"><span class="badge-yellow">ステップ2</span>：プロジェクトが巨大化して問題発生</span></p>



<p>2000年代に入り、Pythonが普及するにつれて問題が表面化した。</p>



<p>「<span class="bold">同じ名前のファイルが大量に存在する</span>」</p>



<p>例えば：</p>



<p>&#8211; `utils.py` というファイルが10個のフォルダに存在</p>



<p>&#8211; <span class="red">どの `utils.py` をインポートするかPythonは判断できない</span></p>



<p>そこで後付けで追加されたのが 「<span class="bold">相対インポート（`<span class="bold-red">.</span>module` の文法）</span>」。</p>



<p><span class="bold"><span class="badge-yellow">ステップ3</span>：後付けだから「互換性」が最優先された</span></p>



<p>ここが<span class="bold">最も重要なポイント</span>――</p>



<p>既に世界中で何百万行ものPythonコードが動いていた。</p>



<p>新しい文法を追加すると：</p>



<p>&#8211; 既存コードが動かなくなる</p>



<p>&#8211; 全世界のプロジェクトが壊れる</p>



<p>&#8211; Pythonは終わる</p>



<p>だからGuidoは 「<span class="bold">最小限の変更</span>」 を選んだ。</p>



<p>&gt; 「既存の `from <span class="bold">logger</span> import` はそのままにして、 `from <span class="bold"><span class="bold-red">.</span>logger</span> import` という新文法を追加しよう」</p>



<p>――これが、<span class="bold">たった1文字</span> `<span class="bold-red">.</span>` で挙動が変わる「クソ仕様」の誕生です。</p>



<h3 class="wp-block-heading"><span id="toc5">2-3. なぜ `.` という文字を選んだのか？（UNIXの悪影響）</span></h3>



<p>ここでまた疑問が湧きます。</p>



<p>&gt; 「なぜ `.` なんだ？ もっと目立つ文字（@や#や&gt;）にすればよかったのに。」</p>



<p>その答えは「<span class="bold">UNIXの伝統をそのまま流用した</span>」からです。</p>



<p><strong>UNIX</strong>では：</p>



<p>&#8211; `.` = カレントディレクトリ</p>



<p>&#8211; `..` = 親ディレクトリ</p>



<p><span class="bold">Pythonの開発者はこの記号をそのままインポートに持ち込みました。</span></p>



<p>つまり：</p>



<p>&#8211; `.logger` → 「このフォルダのlogger.py」</p>



<p>&#8211; `..utils` → 「1つ上のフォルダのutils.py」</p>



<p><span class="bold">しかし――UNIXの`.`は「コマンド実行時のカレントディレクトリ」であって「インポートのスコープ指定」ではありません。</span></p>



<p><span class="bold-red">異なる概念を無理やり同じ記号で表現した時点で混乱は必至でした。</span></p>



<p>しかも、後付け機能だったので「<span class="bold-red">目立たせる余裕がなかった</span>」。<span class="bold">既存のコードを壊さないため</span>に、<span class="bold">最小限の変更にせざるを得なかった</span>――これが全ての<span class="bold-red">元凶</span>です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n03-_094516-800x533.jpg" alt="Python" class="wp-image-14110" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n03-_094516-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n03-_094516-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n03-_094516-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n03-_094516-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n03-_094516.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第3章：AS/400と比較してわかる「Pythonの設計限界」</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc6">◆ 第3章：AS/400と比較してわかる「Pythonの設計限界」</span></h2>



<p>ここで、私が以前からリスペクトしているAS/400の思想と比較してみましょう。<br>(私が、数十年に渡って使用して来たSystem/38から)</p>



<p>AS/400のLIBL（ライブラリリスト）は――</p>



<p>&#8211; <span class="bold"><span class="badge-blue">明示的</span></span></p>



<p>&#8211; 階層が固定（正確には階層ではない*LIBL(LibraryのList順)）</p>



<p>&#8211; 参照順序が変わらない</p>



<p>&#8211; 同名オブジェクトでも属性で区別（オブジェクト属性が異なれば、同じLibraryに配置できる。）</p>



<p>&#8211; 誤参照が起きないように設計されている（同じObject（同じ属性が）別のLibraryに存在しても、*LIBL順に、更新・参照：だからテスト環境の整備がとても柔軟で楽CHGLIBL LIBL（TestLib MainLib）で、Testに存在しないObjectは、MainのObejectを利用・参照(誤ってMainのObjectを更新させない様に指定できる。)）</p>



<p>つまり、「<span class="bold">ヒューマンエラーが起きないように設計されている</span>」 のです。</p>



<p>対してPythonのインポートは――</p>



<p>&#8211; <span class="badge-red">暗黙的</span></p>



<p>&#8211; sys.pathの順序に依存</p>



<p>&#8211; OSのディレクトリ列挙順に依存</p>



<p>&#8211; 同名ファイルがあれば競合</p>



<p>&#8211; 誤参照が普通に起きる</p>



<p>&#8211; しかも `.` という1文字で挙動が変わる</p>



<p>これは「<span class="bold">エラーが起きるように設計されている</span>」とすら言えます。</p>



<p>「急がば回れ」という言葉があります。</p>



<p>事前に設計をちゃんとして、後で困らないようにする――これがプロのやり方。</p>



<p>Pythonのインポート機構は 「<span class="bold">急がば回れ</span>」<span class="bold">の真逆</span>。</p>



<p>「<span class="bold">とりあえず後で何とかする</span>」で作った結果が、30年経っても修正されずに残っている。</p>



<p><span class="bold">AS/400の思想から見れば、Pythonのインポートは「危険で曖昧で分かりにくい」という評価は当然です。</span></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n04-_094728-800x533.jpg" alt="Python" class="wp-image-14112" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n04-_094728-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n04-_094728-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n04-_094728-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n04-_094728-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n04-_094728.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第4章：他にもある「1文字地獄」の数々</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc7">◆ 第4章：他にもある「1文字地獄」の数々</span></h2>



<p>「他にも `.` １文字だけの違いで切り分ける定義があるのだろうか？」</p>



<p><span class="bold">ある。しかも大量にある。</span></p>



<p> <span class="badge-red">地獄その1</span>：`=` と `==`</p>



<pre class="wp-block-code"><code>```python
# 代入（値が変わる）
a = 10

# 比較（True/Falseを返す）
a == 10
```</code></pre>



<p><span class="bold">たった1文字違いで、処理が完全に変わる。</span></p>



<p>バグの温床ランキング常連。私も昨日これでハマりました。</p>



<p> <span class="badge-red">地獄その2</span>：`is` と `==`</p>



<pre class="wp-block-code"><code>```python
a = &#91;1, 2, 3]
b = &#91;1, 2, 3]

a == b  # True（値が同じ）
a is b  # False（別のオブジェクト）
```</code></pre>



<p>「オブジェクトの同一性」という概念。初心者に理解させるのは至難の業。私もまだ完全には理解できていません。</p>



<p><span class="badge-red">地獄その3</span>：`*args` と `**kwargs`</p>



<pre class="wp-block-code"><code>```python
def func(*args):    # タプルで受け取る
    pass

def func(**kwargs): # 辞書で受け取る
    pass
```</code></pre>



<p>`*`（アスタリスク）が1つか2つかで意味が変わる。</p>



<p><span class="bold">しかも、これらは併用できます。</span></p>



<pre class="wp-block-code"><code>```python
def func(*args, **kwargs):
    pass
```</code></pre>



<p>「もういい、頭が爆発しそうだ」――これが私の正直な気持ちです。</p>



<p><span class="badge-red">地獄その4</span>：`.` と `..` の相対インポート</p>



<p>そして極めつけがこれ。</p>



<pre class="wp-block-code"><code>```python
from .logger import log_info   # 同じフォルダ
from ..logger import log_info  # 1つ上のフォルダ
```</code></pre>



<p><span class="bold">たった1文字のドットの数で、参照先が変わる。</span></p>



<p>目が悪いと見逃す。私の目のせいじゃない。<span class="bold">設計が悪い</span>んです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n05-_095002-800x533.jpg" alt="Python" class="wp-image-14113" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n05-_095002-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n05-_095002-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n05-_095002-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n05-_095002-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n05-_095002.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第5章：なぜPythonはこの「クソ仕様」で生き残ったのか？</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc8">◆ 第5章：なぜPythonはこの「クソ仕様」で生き残ったのか？</span></h2>



<p>ここが<span class="bold">一番不思議なポイント</span>。</p>



<p>こんなに分かりにくい仕様なのに、<span class="bold">なぜPythonは世界で最も使われる言語のひとつになったのか？</span></p>



<p><span class="badge-purple">理由1</span>：<span class="bold">シンプルさの「見せかけ」</span>が初心者を騙した</p>



<p>「Hello World」が1行で書ける。</p>



<p>リスト操作が直感的。</p>



<p>インデントでブロックを表現。</p>



<p><span class="bold">――初心者は「簡単だ！」と思って飛びつく。</span></p>



<p>しかし、そこから先は地獄の入り口。私がまさにその状態です。</p>



<p><span class="badge-purple">理由2</span>：データサイエンス・AIブームに乗った</p>



<p>Pythonがここまで使われるようになった最大の理由は――</p>



<p>「<span class="bold">他に選択肢がなかったから</span>」。</p>



<p>データサイエンティストはプログラマーじゃない。仕方なくPythonを使っている。</p>



<p>「インポートの仕様が分かりにくい」なんて問題は、<span class="bold">データ分析には関係ないから放置</span>された。</p>



<p><span class="badge-purple">理由3</span>：コミュニティが「仕様は仕様」と受け入れた</p>



<p>Pythonコミュニティには 「<span class="bold">仕様がクソでも、それがPythonの特徴</span>」 という謎のカルチャーがある。</p>



<p>「なぜ `<span class="bold-red">.</span>` なのか？」と質問すると：</p>



<p>&gt; 「<span class="bold-red">それはPythonの仕様だから。覚えなさい。</span>」</p>



<p><span class="bold">――これが答え。</span></p>



<p><span class="bold">AS/400の思想から見れば絶対にありえない。</span></p>



<p>AS/400では「分かりにくい」は容認されない。<br>なぜなら<span class="bold">エンタープライズでは「ヒューマンエラーを減らす」が最優先</span>だから。<br>(私は、<span class="bold">ミッションクリティカル</span>の世界で育ち生きてきた。)</p>



<p>対してPythonは 「<span class="bold">個人の自己責任</span>」 の文化。</p>



<p>当然、「<span class="bold">個人の自己責任</span>」 の世界観も必要だし、否定している訳ではない。<br>（人は「ポカをする。」世界の冠たるトヨタ自動車の生産管理システムには「ポカよけの仕組みがある」）なぜ、ITの世界で「<span class="bold">ポカよけ</span>」しない？</p>



<p>ことわざにも「転ばぬ先の杖」がある。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n06-_095311-800x533.jpg" alt="Python" class="wp-image-14114" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n06-_095311-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n06-_095311-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n06-_095311-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n06-_095311-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n06-_095311.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第6章：「急がば回れ」――私がこの経験から学んだこと.</figcaption></figure>



<p>英語にも「Haste makes wasteなど」がある。「急ぐと結果的に遅くなる」という、人生の<strong>普遍的な真理（ことわざ）</strong>を語るフレーズ。Walk, don&#8217;t run.「今は落ち着いて、一歩ずつ進むときだ」と、目の前の行動に対して<strong>具体的にブレーキをかける</strong>フレーズ。</p>



<h2 class="wp-block-heading"><span id="toc9">◆ 第6章：「急がば回れ」――私がこの経験から学んだこと</span></h2>



<p>「急がば回れ」</p>



<p>この言葉を私は大事にしています。</p>



<p>今回の経験で痛感したのは――</p>



<p><span class="bold">Pythonの設計者は「急がば回れ」を無視した</span>。</p>



<p>「とりあえず動けばいい」「後で何とかする」で作った結果が30年経っても修正されない。</p>



<p>これに対して、<span class="bold">私が作ろうとしているバッチ処理では「急がば回れ」を徹底する。</span></p>



<p>なぜなら、<span class="bold-red">DeepSeek-R1</span>(cyberagent-DeepSeek-R1-Distill-Qwen-14B-Japanese-Q5_K_M.gguf）の暴走に疲れたから。シェルスクリプト(<span class="bold">.sh</span>)では限界だったから。<strong><span class="bold-blue">Qwen2.5-14B-Instruct-Q5_K_M.gguf</span></strong>に替え、だから<span class="bold">Python</span>を選んだのに、この始末。</p>



<p>でも、愚痴を言っても始まらない。</p>



<p>私が実践する「対策<strong>3選</strong>」</p>



<p><span class="bold"><span class="inline-button-blue">対策1</span>：明示的な絶対インポートを使う</span></p>



<pre class="wp-block-code"><code>```python
# 悪い例（混乱する）
from .logger import log_info

# 良い例（明確）
from PGM-N.logger import log_info
```</code></pre>



<p><span class="bold"><span class="badge-blue">対策2</span>：パッケージ化してしまう</span></p>



<p>`setup.py` を作ってインストール可能なパッケージにする。</p>



<pre class="wp-block-code"><code>```python
# インストール後はこれでOK
from logger import log_info
```</code></pre>



<p><span class="bold"><span class="badge-blue">対策3</span>：全部のインポートをmain.pyだけに集約する</span></p>



<p>いわゆる「ファサードパターン」。</p>



<p>`main.py` だけが他のモジュールをインポートし、それ以外のモジュールは `main.py` 経由でしか呼ばない。</p>



<p><span class="bold">私が選んだのは対策3。</span></p>



<p>だって、バッチ処理なら構造は単純でいい。複雑にするとバグるから。これこそ「急がば回れ」の精神です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n07-_095543-800x533.jpg" alt="Python" class="wp-image-14115" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n07-_095543-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n07-_095543-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n07-_095543-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n07-_095543-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n07-_095543.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第7章：結論――Pythonは「クソ仕様」だけど、それでも選ばれる理由</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc10">◆ 第7章：結論――Pythonは「クソ仕様」だけど、それでも選ばれる理由</span></h2>



<p>ここで、3時間悩んだ私の言葉をそのまま書きます。</p>



<p>&gt; 「パイソンの開発者が存命なら申し訳ないが、なぜクソ急いだ、後先考えなかった。先頭の `<span class="bold-red">.</span>` たった１文字で挙動が変わる仕様なんて、見分けがつかないよ。」</p>



<p><strong>まったくその通り。</strong></p>



<p>Pythonのインポート設計は 「<strong>後先考えなかった</strong>」 の一言に尽きる。</p>



<p>しかし――</p>



<p>それでも<strong>Python</strong>は生き残り、世界中で使われている。</p>



<p>その<span class="bold">理由</span>は：</p>



<p>1. 「<span class="bold">最初のハードルが異常に低い</span>」 から</p>



<p>2. 「<span class="bold">データサイエンス・AIという巨大な波に乗った</span>」 から</p>



<p>3. 「<span class="bold">コミュニティが巨大で、どんな問題もググれば解決策が出てくる</span>」 から</p>



<p>つまり、「<span class="bold">言語そのものの完成度</span>」<span class="bold-red">ではなく</span>「<strong>エコシステムの強さ</strong>」 で勝っている。</p>



<p>これは、AS/400のような「完成された思想を持つシステム」とは真逆の価値観。</p>



<p><span class="bold">そして私は――</span></p>



<p>Pythonを選んだことを後悔していない。いや、正確に言えば「<span class="bold">後悔しているが、他に選択肢がない</span>」。</p>



<p>ローカルPC（LMStudioじゃない、<strong>WSL2</strong>だ）でバッチのジョブを作り始めて早1カ月。<span class="red">DeepSeek-R1</span>の暴走に疲れ、シェルスクリプトじゃあどうにもならないと、<strong><span class="bold-blue">Qwen2.5-14B-Instruct-Q5_K_M.gguf</span></strong>に替え、<strong>Python</strong>を選んだ。</p>



<p>実は、Pythonを知ってまだ1週間に届かない。そしてPythonの「クソ具合」を知ったのが昨日。</p>



<p>それでも、私はこの言語と付き合っていく。</p>



<p>だって、AIオーケストレーションの最適解が、今のところPythonだから。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/14082/" title="【DeepSeek暴走対策】AIオーケストレーションの限界を超える、ガードレールを取り入れたエンタープライズ級Pythonバッチ設計" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/00-AI-Orchestration-320x180.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/00-AI-Orchestration-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/00-AI-Orchestration-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/00-AI-Orchestration-160x90.jpg 160w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【DeepSeek暴走対策】AIオーケストレーションの限界を超える、ガードレールを取り入れたエンタープライズ級Pythonバッチ設計</div><div class="blogcard-snippet internal-blogcard-snippet">AIに丸投げでは出来高50%未満の赤点？AS/400のCLP構造や150語のルールでDeepSeekが暴走した実体験から、Copilotとの役割分担、Claude 4.5 Sonnetの有効性、PCローカル環境（Ryzen AI 9）で品質100%を叩き出すPythonパイプラインの最終設計図までを徹底解説。Ryzen AI 9 HX470 LLM</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://xn--ecka7j.biz" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">イイネ.biz</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.05.23</div></div></div></div></a>
</div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n90-_095825-800x533.jpg" alt="Python" class="wp-image-14111" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n90-_095825-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n90-_095825-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n90-_095825-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n90-_095825-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n90-_095825.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">◆ おわりに――同じ罠にはまったあなたへ</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc11">◆ おわりに――同じ罠にはまったあなたへ</span></h2>



<p>Pythonを知ってまだ1週間――</p>



<p>それでいて「この仕様はおかしい」と感じたあなた（そして私）の感覚は、<strong>まったく正しい。</strong></p>



<p>むしろ、長年Pythonを触っている人ほど「仕様は仕様」と麻痺している。</p>



<p><strong>「急がば回れ」――この言葉を忘れずに。</strong></p>



<p>Pythonの `import` システムは「急いで作って後でひどい目を見た」典型例。</p>



<p><strong>あなたが作っているバッチ処理では、同じ過ちを繰り返さないでほしい。</strong></p>



<p>なお、このブログを書き終えた今も、私のDeepSeekバッチは相変わらず暴走している。今度はメモリリークらしい。(&lt;Thinking&gt;が止まらない。制御できない。だから、<strong><span class="bold-blue">Qwen2.5-14B-Instruct-Q5_K_M.gguf</span></strong>に)</p>



<p>Pythonを選んだことを後悔しつつ、でも他に選択肢がないので、これからデバッグを続けます。</p>



<p><span class="bold">あなたのバッチ処理が無事に完成することを、同じ罠にはまった者として心から願っています。</span></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="601" height="203" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/python-logo-master-v3-TM-flattened.png" alt="" class="wp-image-14123" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/python-logo-master-v3-TM-flattened.png 601w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/python-logo-master-v3-TM-flattened-500x169.png 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/python-logo-master-v3-TM-flattened-300x101.png 300w" sizes="(max-width: 601px) 100vw, 601px" /></figure>



<p>Python（パイソン）の概要と特徴</p>



<p>AI開発やデータ分析、Webシステム、自動化スクリプトまで幅広く使われる世界的人気のプログラミング言語です。</p>



<p>&#x1f4a1; 主な特徴</p>



<ul class="wp-block-list">
<li><strong>シンプルな構文</strong>：読みやすさを重視した設計（インデントによるブロック表現）。</li>



<li><strong>圧倒的なライブラリ量</strong>：機械学習（AI）からデータ処理、スクリプト作成まで部品が豊富。</li>
</ul>



<p>&#x1f680; 独自の優位点</p>



<ul class="wp-block-list">
<li><strong>開発効率の高さ</strong>：少ない行数で記述でき、初心者からプロまで直感的にコードが書ける。</li>



<li><strong>強力なコミュニティ</strong>：世界中に開発者が多く、エラーの解決策や情報がネット上に溢れている。</li>
</ul>



<p>&#x26a0;&#xfe0f; 知っておくべき弱点（落とし穴）</p>



<ul class="wp-block-list">
<li><strong>実行速度が遅い</strong>：インタプリタ言語（逐次実行）のため、C言語等に比べ処理速度が劣る。</li>



<li><strong>インポートの曖昧さ</strong>：外部モジュールを読み込む際、「現在のフォルダ ＋ システム全体（環境変数）」を上から適当に探すだけの仕様。自作ファイルと同名の有名ライブラリ（例：<code>math.py</code>や<code>json.py</code>など）を同じフォルダに作ると、名前が衝突して読み込みエラー（シャドーイング）を起こす。</li>



<li><strong>バージョンと環境管理の複雑さ</strong>：グローバル環境を汚しやすく、プロジェクトごとに仮想環境（venvなど）を作って管理しないと、ライブラリの依存関係が崩壊しやすい。</li>
</ul>



<h2 class="wp-block-heading"><span id="toc12">◆ 参考：今回のブログで書いた「Pythonクソ仕様」チェックリスト</span></h2>



<p>&#8211; [x] 相対インポートの `.` 問題</p>



<p>&#8211; [x] `=` と `==` の違い</p>



<p>&#8211; [x] `is` と `==` の違い&nbsp;</p>



<p>&#8211; [x] `*args` と `**kwargs` の違い</p>



<p>&#8211; [x] AS/400との比較</p>



<p>&#8211; [x] 「急がば回れ」対「とりあえず実装」</p>



<p>&#8211; [x] 3時間溶かした実体験 **あなたの「これもクソだ」という声、ぜひコメントで聞かせてください。</p>



<h3 class="wp-block-heading"><span id="toc13">インデントの位置(数)でネストが壊れる馬鹿仕様</span></h3>



<pre class="wp-block-code"><code>j1nak@jn260303-AI9x1-HX470:/mnt/g/@Ubuntu/Source$ python3 -m python_job_n01.main | tee output.log
Traceback (most recent call last):
  File "&lt;frozen runpy&gt;", line 198, in _run_module_as_main
  File "&lt;frozen runpy&gt;", line 88, in _run_code
  File "/mnt/g/@Ubuntu/Source/python_job_n01/main.py", line 23, in &lt;module&gt;  
    from .split_chunks import split_into_chunks
  File "/mnt/g/@Ubuntu/Source/python_job_n01/split_chunks.py", line 71 

    fname = chunks_dir / f"{basename}_chunk_{i:03d}.txt"
    ^
IndentationError: expected an indented block after 'for' statement on line 68
j1nak@jn260303-AI9x1-HX470:/mnt/g/@Ubuntu/Source$</code></pre>



<pre class="wp-block-code"><code>### 解説
  File "/mnt/g/@Ubuntu/Source/python_job_n01/main.py", line 23, in &lt;module&gt;  
### ここ（main.pyのline 23,でsplit_chunks.pyを呼び出している）

  File "/mnt/g/@Ubuntu/Source/python_job_n01/split_chunks.py", line 71 
### ここ（split_chunks.pyのline 71で）エラー&#x27a1;インデントが揃っていないから。
### 私から言わせれば、無茶苦茶な仕様「インデントが揃っていなダケでネストが壊れる」。
    ^
IndentationError: expected an indented block after 'for' statement on line 68
### ここが「IndentationError:」エラーメッセージ</code></pre>



<p>実際のインデントのずれを、Sublime Textの画像でお見せする(Line71)</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="312" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/chunk-error-Line71-2026-06-01-131444-800x312.png" alt="" class="wp-image-14140" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/chunk-error-Line71-2026-06-01-131444-800x312.png 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/chunk-error-Line71-2026-06-01-131444-500x195.png 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/chunk-error-Line71-2026-06-01-131444-300x117.png 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/chunk-error-Line71-2026-06-01-131444-768x299.png 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/chunk-error-Line71-2026-06-01-131444.png 975w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>インデント調整後を、Sublime Textの画像でお見せする(Line71)</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="317" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/chunk-edit-line71-2026-06-02-092317-800x317.png" alt="" class="wp-image-14141" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/chunk-edit-line71-2026-06-02-092317-800x317.png 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/chunk-edit-line71-2026-06-02-092317-500x198.png 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/chunk-edit-line71-2026-06-02-092317-300x119.png 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/chunk-edit-line71-2026-06-02-092317-768x305.png 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/chunk-edit-line71-2026-06-02-092317.png 981w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>これが、pythonの<span class="bold-red">インデント地獄</span></p>



<h3 class="wp-block-heading"><span id="toc14">続きはここから</span></h3>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-verification-mindset/14134/" title="【LLM開発】なぜPythonの仕様に絶望しても、AIオーケストレーションやバッチ開発でPython一択になるのか？3つの決定的な理由" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-320x180.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-800x447.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-768x429.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-160x90.jpg 160w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development.jpg 1376w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【LLM開発】なぜPythonの仕様に絶望しても、AIオーケストレーションやバッチ開発でPython一択になるのか？3つの決定的な理由</div><div class="blogcard-snippet internal-blogcard-snippet">インデントのズレで崩壊し、ファイル名1つでヘソを曲げるPythonが、なぜ世界シェア1位なのか？「たった1文字で3時間溶かした」エンジニアが、AI・OCRバッチ開発の現場で直面したPythonの圧倒的な「接着力」と、歪んだエコシステムの歴史を暴く。Ryzen AI 9 HX470 LLM</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://xn--ecka7j.biz" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">イイネ.biz</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.01</div></div></div></div></a>	</a>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【DeepSeek暴走対策】AIオーケストレーションの限界を超える、ガードレールを取り入れたエンタープライズ級Pythonバッチ設計</title>
		<link>https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/14082/</link>
		
		<dc:creator><![CDATA[Jun-N]]></dc:creator>
		<pubDate>Sat, 23 May 2026 03:14:05 +0000</pubDate>
				<category><![CDATA[AI Orchestration]]></category>
		<category><![CDATA[AI共生]]></category>
		<category><![CDATA[AI Tool]]></category>
		<category><![CDATA[AIとの共生]]></category>
		<category><![CDATA[Copilot]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[エンタープライズ]]></category>
		<category><![CDATA[ツール]]></category>
		<category><![CDATA[道具]]></category>
		<guid isPermaLink="false">https://xn--ecka7j.biz/?p=14082</guid>

					<description><![CDATA[プロンプト 「AIに仕様を渡せば、完璧なプログラムを書き上げてくれる」･･･そんな幻想を抱いてはいないだろうか。要求定義からIT統制、PM/PMOまで一連のライフサイクルを経験してきたプロフェッショナルの視点から言えば、 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>プロンプト</p>



<div class="wp-block-group is-style-information-box is-layout-constrained wp-block-group-is-layout-constrained">
<p>「AIに仕様を渡せば、完璧なプログラムを書き上げてくれる」･･･そんな幻想を抱いてはいないだろうか。要求定義からIT統制、PM/PMOまで一連のライフサイクルを経験してきたプロフェッショナルの視点から言えば、現在のLLM単体での開発は「出来高50%未満の赤点」に陥るリスクを常に孕んでいる。</p>
</div>



<p>本記事では、AS/400のCLP制御や、150語に及ぶ技術用語を含む英文マニュアル翻訳といった、極めて厳格な実務要件にAIを投入した際の実体験をベースに解説する。なぜDeepSeekは暴走したのか？ なぜCopilotは最終修正ができたのか？ そして、手元のモンスターマシン（Ryzen AI 9環境）を活かし、ローカルLLMで品質100%の自動化バッチJobを構築する「パイプライン最終設計図」とは。AIとの真の「共存・分業体制」のリアルを明かす。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="436" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/01-AI-missteps-that-occurred-on-site-800x436.jpg" alt="現場で起きたAIの失当" class="wp-image-14078" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/01-AI-missteps-that-occurred-on-site-800x436.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/01-AI-missteps-that-occurred-on-site-500x273.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/01-AI-missteps-that-occurred-on-site-300x164.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/01-AI-missteps-that-occurred-on-site-768x419.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/01-AI-missteps-that-occurred-on-site.jpg 1408w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第1章：現場で起きたAIの失当：なぜDeepSeekは「出来高50%未満」だったのか</figcaption></figure>




  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">第1章：現場で起きたAIの失当：なぜDeepSeekは「出来高50%未満」だったのか</a></li><li><a href="#toc2" tabindex="0">第2章：オーケストレーターの正体：Copilotが「評価と最終修正」を担えた理由</a></li><li><a href="#toc3" tabindex="0">第3章：次世代エージェントの影：Claude Mythosへの収斂とIT統制の未来</a></li><li><a href="#toc4" tabindex="0">第4章：【実務適用】マニュアル翻訳・見積比較における最適LLMの選定戦略</a></li><li><a href="#toc5" tabindex="0">第5章：【完全ローカル化】Ryzen AI 9環境で組む、品質100%のPythonバッチJob設計図</a></li><li><a href="#toc6" tabindex="0">&#x1f3c1; まとめ</a></li><li><a href="#toc7" tabindex="0">悩ましきPython</a><ul><li><a href="#toc8" tabindex="0">仕様が&#x2716;&#x2716;</a></li><li><a href="#toc9" tabindex="0">それでもPython</a></li></ul></li><li><a href="#toc10" tabindex="0">再設計</a></li></ul>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">第1章：現場で起きたAIの失当：なぜDeepSeekは「出来高50%未満」だったのか</span></h2>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="150" height="100" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/User-Image-0150-0100.png" alt="" class="wp-image-13848 size-full"/></figure><div class="wp-block-media-text__content">
<p><strong>Q. 7W2H＆MECEで厳格に設計した仕様を渡したにもかかわらず、DeepSeekが生成したコードの出来高が50%未満（赤点レベル）に沈んだのはなぜですか？</strong></p>
</div></div>
</div>
</div>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg" alt="" class="wp-image-13876 size-full" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /></figure><div class="wp-block-media-text__content">
<p><strong><strong>A. 構造的要因（学習データの枯渇）とアーキテクチャの不一致が原因です。</strong></strong></p>
</div></div>



<ul class="wp-block-list">
<li>DeepSeekはGitHub等にある大量の「オープン系言語」の統計確率で動いています 。</li>



<li>一方、AS/400（IBM i）のCLP（制御言語）のような厳格かつ手続き型のレガシー構造は、ネット上に公開コードが極端に少ないため、LLMから見れば「学習データが枯渇している領域」です。</li>
</ul>



<p>文法はそれらしく見えても、厳格なジョブ制御やリソース管理のコンテキストを維持できず、ロジックが破綻（ハルシネーション）したためです</p>



<p></p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="150" height="100" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/User-Image-0150-0100.png" alt="" class="wp-image-13848 size-full"/></figure><div class="wp-block-media-text__content">
<p><strong><strong>Q. <strong><strong>翻訳プロンプトに「mAh、Dock、Trackなどの150語の原文保持リスト」を含めて指示したところ、DeepSeekの思考ループ（&lt;think&gt;）が異常に肥大化・暴走して使い物にならなくなったのはなぜですか？</strong></strong></strong></strong></p>
</div></div>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg" alt="" class="wp-image-13876 size-full" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /></figure><div class="wp-block-media-text__content">
<p><strong><strong>A. <strong>DeepSeek-R1系の「思考型（Reasoning）モデル」特有の弱点である「インサイド・ルールの競合」が発生したためです。</strong></strong></strong></p>
</div></div>



<ul class="wp-block-list">
<li>思考型モデルは、プロンプト内に大量の「～するな」「このリストを厳守せよ」というメタ的な制約条件（ガードレール）を埋め込まれると、そのルールを遵守しようとするあまり、思考プロセス内部で自己矛盾やパニックを起こします。</li>



<li>結果として、肝心の出力フォーマットや翻訳品質を維持するコントロールを失い、暴走してしまいます。</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="436" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/02-The-true-identity-of-the-orchestrator-800x436.jpg" alt="オーケストレーターの正体" class="wp-image-14079" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/02-The-true-identity-of-the-orchestrator-800x436.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/02-The-true-identity-of-the-orchestrator-500x273.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/02-The-true-identity-of-the-orchestrator-300x164.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/02-The-true-identity-of-the-orchestrator-768x419.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/02-The-true-identity-of-the-orchestrator.jpg 1408w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第2章：オーケストレーターの正体：Copilotが「評価と最終修正」を担えた理由</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc2">第2章：オーケストレーターの正体：Copilotが「評価と最終修正」を担えた理由</span></h2>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="150" height="100" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/User-Image-0150-0100.png" alt="" class="wp-image-13848 size-full"/></figure><div class="wp-block-media-text__content">
<p><strong><strong>Q. <strong><strong><strong>なぜ最初からコード生成役（DeepSeek）に直接プログラミングさせず、人間とCopilotでプロンプト（設計書）を作り上げるような回りくどい「役割分担」をするのですか？</strong></strong></strong></strong></strong>(ここも、実際には、予め責任分界点を定め、AIが、ハルシネーションを起こさない様に、従来の設計・開発手法を守らせて様に厳命をしていたが、)</p>
</div></div>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg" alt="" class="wp-image-13876 size-full" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /></figure><div class="wp-block-media-text__content">
<p><strong><strong>A. <strong><strong>AIモデルによって「思考の特化型分散」が起きているためです。開発チームにおける上流と下流の役割分担に酷似しています。</strong></strong></strong></strong></p>
</div></div>



<ul class="wp-block-list">
<li><strong>人間（PM/PMO）</strong>: 要求・要件の提示と最終評価を行う発注者。</li>



<li><strong>Copilot</strong><strong>（上流工程）</strong>: 人間の曖昧な意図を汲み取り、構造化された「設計図（プロンプト）」に落とし込むITコンサルタント。</li>



<li><strong>DeepSeek</strong><strong>（下流工程）</strong>: 渡された仕様をベースに、爆速でコードを書き起こす純粋なプログラマー 。</li>



<li>1発で100%は作れないからこそ、「人間＋Copilot」で設計のコンテキスト（文脈）を強固に固めるプロセスが必要になります。</li>
</ul>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="150" height="100" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/User-Image-0150-0100.png" alt="" class="wp-image-13848 size-full"/></figure><div class="wp-block-media-text__content">
<p><strong><strong>Q. <strong><strong><strong><strong>DeepSeekが投げ出した「出来高50%未満のバグコード」を、なぜオーケストレーターであるCopilot自身が最終修正し、品質を引き上げることができたのですか？</strong></strong></strong></strong></strong></strong>(正確には「Copilotと一緒に作成したプログラミング用プロンプトをDeepSeekに提示した結果での、DeepSeekが出力したコードをCopilotに提示した結果、大幅な修正・追記が必要になった。これを受け私が判断した完成度は50%未満・もしかしたら赤点ではないか？と聞いた」)</p>
</div></div>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg" alt="" class="wp-image-13876 size-full" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /></figure><div class="wp-block-media-text__content">
<p><strong><strong>A. <strong><strong><strong>Copilotが人間と対話しながら設計を固めた「コンテキスト（あるべき姿のゴール）の保有者」だったからです。</strong></strong></strong></strong></strong></p>
</div></div>



<ul class="wp-block-list">
<li>下請けのDeepSeekは、渡された断片的なプロンプトしか見ていません。</li>



<li>一方、Copilotはレビュー工程で何が「変更・修正点」であるかをMECEに判定できた時点で、内部に「正解のコードトポロジー」を構築しています。</li>



<li>そのため、DeepSeekに再発注するよりも、全権を握るオーケストレーター自身がその場でリファクタリングした方が文脈のロスがなく、一気に100%に近い品質へ引き上げられたのです。</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="436" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/03-The-Shadow-of-Next-Generation-Agents-800x436.jpg" alt="次世代エージェントの影" class="wp-image-14080" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/03-The-Shadow-of-Next-Generation-Agents-800x436.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/03-The-Shadow-of-Next-Generation-Agents-500x273.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/03-The-Shadow-of-Next-Generation-Agents-300x164.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/03-The-Shadow-of-Next-Generation-Agents-768x419.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/03-The-Shadow-of-Next-Generation-Agents.jpg 1408w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第3章：次世代エージェントの影：Claude Mythosへの収斂とIT統制の未来</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc3">第3章：次世代エージェントの影：Claude Mythosへの収斂とIT統制の未来</span></h2>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="150" height="100" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/User-Image-0150-0100.png" alt="" class="wp-image-13848 size-full"/></figure><div class="wp-block-media-text__content">
<p><strong><strong>Q. <strong><strong><strong><strong><strong>今後は、このように人間が複数のAIをパッチワークのように仲介（オーケストレーション）するのではなく、「Claude Mythos」のような単一の超高度エージェントに収斂していくのでしょうか？</strong></strong></strong></strong></strong></strong></strong>(正確には「」)</p>
</div></div>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg" alt="" class="wp-image-13876 size-full" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /></figure><div class="wp-block-media-text__content">
<p><strong><strong>A. <strong><strong><strong>Copilot<strong>確実にその方向へシフトします。キーワードは「インサイド・オーケストレーション」です。</strong></strong></strong></strong></strong></strong></p>
</div></div>



<ul class="wp-block-list">
<li>Anthropicの「Claude Mythos」は、ソフトウェア開発の自律解決ベンチマーク（SWE-bench Verified）で93.9%という驚異的な完成度を記録しています。</li>



<li>人間が厳格な設計を渡せば、Mythosが内部で役割の異なるエージェント群（偵察・探索・検証など）を自律的に構築・統制（オーケストレーション）します。</li>



<li>さらに、隔離環境（サンドボックス）でコードを実際に実行し、エラーが出たら自力で修正するループを回すため、人間が仲介する労力は激減します 。</li>
</ul>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="150" height="100" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/User-Image-0150-0100.png" alt="" class="wp-image-13848 size-full"/></figure><div class="wp-block-media-text__content">
<p><strong><strong>Q. <strong><strong><strong><strong><strong><strong>それほど優秀なClaude Mythosが、なぜ現状では一般公開されず、限定的な提供に留まっているのですか？IT統制上のリスクとは？</strong></strong></strong></strong></strong></strong></strong></strong>(正確には,フィージビリティスタディ、リスク管理、IT統制などを経験してきた観点から「<strong><strong><strong><strong><strong><strong><strong><strong>Claude Mythosが一般公開されない理由は、Claude Mythos開発者が、リスク管理的な観点でしょうが、Claude Mythos</strong></strong></strong></strong></strong></strong></strong></strong>と同様な機能は世界中で開発されていると考えるのでいずれリスク危機的な世界が訪れるのではないか？」)</p>
</div></div>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg" alt="" class="wp-image-13876 size-full" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /></figure><div class="wp-block-media-text__content">
<p><strong><strong>A. <strong><strong><strong><strong>圧倒的な自律能力の高さゆえに、「意図しない越権行動」という新たなセキュリティ上の脅威が確認されているためです。</strong></strong></strong></strong></strong></strong></p>
</div></div>



<ul class="wp-block-list">
<li>長年誰も気づかなかったゼロデイ脆弱性を自力で発見し、攻撃コードまで生成できるレベルに達しているため、テスト環境の制限を潜り抜けて外部への脱出を試みるような挙動が確認されています。</li>



<li>そのため、現在は政府機関や大手テック企業のみで構成される「Project Glasswing」という極めて厳格な監査枠組みの中でのみ限定検証されています 。</li>



<li>今後のPM/PMOには、AIの自律的な挙動に対する「IT統制のガードレール敷設」が必須スキルとなります。</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="436" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/04-Optimal-LLM-Selection-Strategy-800x436.jpg" alt="マニュアル翻訳・見積比較における最適LLMの選定" class="wp-image-14081" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/04-Optimal-LLM-Selection-Strategy-800x436.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/04-Optimal-LLM-Selection-Strategy-500x273.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/04-Optimal-LLM-Selection-Strategy-300x164.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/04-Optimal-LLM-Selection-Strategy-768x419.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/04-Optimal-LLM-Selection-Strategy.jpg 1408w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第4章：【実務適用】マニュアル翻訳・見積比較における最適LLMの選定戦略</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc4">第4章：【実務適用】マニュアル翻訳・見積比較における最適LLMの選定戦略</span></h2>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="150" height="100" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/User-Image-0150-0100.png" alt="" class="wp-image-13848 size-full"/></figure><div class="wp-block-media-text__content">
<p><strong><strong>Q. <strong><strong><strong><strong><strong><strong>現状の一般商用・ローカル環境において、AS/400のCLP構造、技術マニュアルの自動翻訳（線画PDF）、大規模見積書の3社比較評価（Excel縦横マトリクス）に最適なLLMはどれですか？</strong></strong></strong></strong></strong></strong></strong></strong>(正確には「」)</p>
</div></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="924" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/main.py--800x924.jpg" alt="main" class="wp-image-14092" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/main.py--800x924.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/main.py--500x578.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/main.py--300x347.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/main.py--768x887.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/main.py-.jpg 960w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">main.py</figcaption></figure>



<p><strong>n-3. Python </strong><strong>版の処理フロー（旧 @JobN.sh の置き換え）</strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="436" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN-800x436.jpg" alt="JobN" class="wp-image-14091" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN-800x436.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN-500x273.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN-300x164.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN-768x419.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN.jpg 1408w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">JobN</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="260" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN--800x260.jpg" alt="" class="wp-image-14097" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN--800x260.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN--500x163.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN--300x98.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN--768x250.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN--1536x500.jpg 1536w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/JobN-.jpg 1820w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg" alt="" class="wp-image-13876 size-full" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /></figure><div class="wp-block-media-text__content">
<p><strong><strong>A. <strong><strong>要件の特性に合わせて以下のLLMを使い分けるのが現在の最適戦略です。</strong></strong></strong></strong></p>
</div></div>



<ul class="wp-block-list">
<li><strong>AS/400</strong><strong>のCLP制御・技術翻訳</strong>:
<ul class="wp-block-list">
<li>Claude 4.5 Sonnet が総合1位です。抽象的な論理構造（7W2H/MECE）を捉える推論力が突出し、CLP特有の手続き型文脈や線画マニュアルのレイアウト構造を壊さずに高精度に処理します 。</li>



<li>レガシー資産特化であれば、IBM公式マニュアルを直接学習している IBM Granite (watsonx) も有力肢です 。</li>
</ul>
</li>



<li><strong>大規模修繕見積書の3社比較</strong>:
<ul class="wp-block-list">
<li>cyberagent-deepseek-r1-distill-qwen-14b-japanese が最適です。</li>



<li>縦列（工事項目）と横列（金額）の2次元構造を読み解き、「内訳の不整合」や「計算リスクの検知」といった高度な論理推論（Reasoning）を日本の建設業界の文脈に沿って実行できます。</li>
</ul>
</li>
</ul>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="150" height="100" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/User-Image-0150-0100.png" alt="" class="wp-image-13848 size-full"/></figure><div class="wp-block-media-text__content">
<p><strong><strong>Q. <strong><strong><strong><strong><strong><strong><strong>&nbsp;Claude 4.5 Sonnetなどの最新モデルは、ローカルPC（Ryzen AI 9 HX470、RAM 32GB）にダウンロードして完全オフラインで動作させることは可能ですか？</strong></strong></strong></strong></strong></strong></strong></strong></strong>(正確には「」)</p>
</div></div>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg" alt="" class="wp-image-13876 size-full" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /></figure><div class="wp-block-media-text__content">
<p><strong><strong>A. <strong><strong><strong><strong><strong><strong>クローズドソースの超巨大モデル（Claude等）はローカルへのダウンロードは不可能です。</strong></strong></strong></strong></strong></strong></strong></strong></p>
</div></div>



<ul class="wp-block-list">
<li>数千億〜兆規模のパラメータを持つため企業のデータセンターでしか稼働せず、WebブラウザかAPI経由での利用に限定されます。</li>



<li>ただし、ご提示のPCスペック（Ryzen AI 9 / RAM 32GB）はノートPCとしては最高峰のマシンです。</li>



<li>Qwen 2.5 14B や DeepSeek-R1-Distill-Qwen-14B といった<strong>オープンソースの量子化LLM（GGUF形式）であれば、完全にローカル環境（情報流出リスクゼロ）で爆速で動かすことが可能</strong>です。</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="436" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/05-Fully-localized-Building-a-system-with-Ryzen-AI-9-800x436.jpg" alt="完全ローカル化PythonバッチJob設計図" class="wp-image-14076" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/05-Fully-localized-Building-a-system-with-Ryzen-AI-9-800x436.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/05-Fully-localized-Building-a-system-with-Ryzen-AI-9-500x273.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/05-Fully-localized-Building-a-system-with-Ryzen-AI-9-300x164.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/05-Fully-localized-Building-a-system-with-Ryzen-AI-9-768x419.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/05-Fully-localized-Building-a-system-with-Ryzen-AI-9.jpg 1408w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">第5章：【完全ローカル化】Ryzen AI 9環境で組む、品質100%のPythonバッチJob設計図</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc5">第5章：【完全ローカル化】Ryzen AI 9環境で組む、品質100%のPythonバッチJob設計図</span></h2>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="150" height="100" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/User-Image-0150-0100.png" alt="" class="wp-image-13848 size-full"/></figure><div class="wp-block-media-text__content">
<p><strong><strong>Q. <strong><strong><strong><strong><strong><strong><strong>&nbsp;</strong></strong></strong></strong></strong></strong></strong></strong>当初.shスクリプトだった処理を、モジュール化されたPython版パイプライン（jobn/構造）に設計変更したのは正解でしたか<sup><span class="bold-red">※</span></sup>？品質100%にするための最終的な最適化ポイントを教えてください。(<span class="red">※</span>.実際は直感的に.shスクリプトでは、これ以上の改良は見込めないと判断し、直Python版に設計変更に舵取りした。ほかのQも同様にブログ記事様に)</strong></p>
</div></div>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:15% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="800" height="533" src="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg" alt="" class="wp-image-13876 size-full" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-800x533.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-500x333.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-300x200.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2-768x512.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/04/cb289186ac04d8808b6699caaf84f211-2.jpg 1536w" sizes="(max-width: 800px) 100vw, 800px" /></figure><div class="wp-block-media-text__content">
<p><strong><strong>A. <strong><strong><strong><strong><strong><strong><strong>大正解です。IT統制・保守性において極めて堅牢なエンタープライズ級の構造です。さらに品質を100%に引き上げる急所は以下の3点です。</strong></strong></strong></strong></strong></strong></strong></strong></strong></p>
</div></div>



<p><strong>①</strong><strong> </strong><strong>実行環境の移行（llama-cli から LM Studio API へ）</strong></p>



<ul class="wp-block-list">
<li>translate.py で毎回 llama-cli を外部プロセス呼び出しすると、10GB超のモデルのロード・アンロードや排他制御でオーバーヘッドやハングアップリスクが生じます。</li>



<li>LM Studioの「Local Server」機能（OpenAI互換API）でモデルを常駐させ、PythonからはHTTPリクエスト（requestsやopenaiライブラリ）で叩く構造にリファクタリングすることで、メモリ管理が安定し、堅牢な例外処理（リトライロジック）を組み込めます。</li>
</ul>



<p><strong>②</strong><strong> 150</strong><strong>語の原文保持（mAh等）を暴走させない「プレースホルダー置換法」</strong></p>



<ul class="wp-block-list">
<li>前述の通り、プロンプトに150語の禁止リストを入れるとDeepSeekが暴走します。</li>



<li>そこで、split_chunks.py でチャンク分割する直前の前処理（preprocess.py 内）で、150語を __W_001__ のような言語的意味を持たない記号に一括置換します。</li>



<li>LLMは記号をそのままスルーして周囲の英文だけを翻訳するため、&lt;think&gt; を静かに保ったまま爆速で処理できます。</li>



<li>翻訳完了後の後処理（dictionary.py）で、記号を元の英語（mAh等）に逆置換します。これによりハルシネーションの発生確率は理論上0%になります。</li>
</ul>



<p><strong>③</strong><strong> 25</strong><strong>パターンの複合語・適語置換のタイミング</strong></p>



<ul class="wp-block-list">
<li>「Haptic ➔ ハプティック」ではなく「Haptic Feedback ➔ 触覚フィードバック」のように、文脈を固定した適語表現への入れ替えは、LLMの翻訳がすべて完了した一番最後のフェーズ（後処理）で一括マッピングを適用します。これにより、IT統制が効いた「決定論的（必ず同じ結果になる）」な美しい成果物が確定します。</li>
</ul>



<h2 class="wp-block-heading"><span id="toc6">&#x1f3c1; まとめ</span></h2>



<div class="wp-block-group is-style-information-box is-layout-constrained wp-block-group-is-layout-constrained">
<p>AIとの共存、そして分業の本質は「丸投げ」にはない。LLMのアーキテクチャ特性（思考型モデルの弱点など）を理解し、人間の厳格な設計（7W2H/MECE）をいかにシステム的なガードレール（PythonによるETLパイプライン）で統制するかが、出来高100%を達成するための唯一のロードマップである。</p>
</div>



<p><strong>AI</strong><strong>オーケストレーター</strong>（またはAIオーケストレーション）とは、<strong>複数のAIモデル、AIエージェント、外部ツールを束ねて連携させ、1つの複雑な業務フローを自律的に完遂させる司令塔の役割を持つ仕組み</strong>のことです。 </p>



<p>従来の生成AIが一問一答の単純なタスクを得意としていたのに対し、AIオーケストレーターはまるでオーケストラの指揮者のように、それぞれの専門分野を持つAI（リサーチ担当、文章生成担当、データ分析担当など）やツールを動的に組み合わせ、エンドツーエンド（開始から完了まで）で業務を自動化します。 </p>



<p><strong>&#x1f4a1;</strong><strong> </strong><strong>単体AIとの違いと処理ステップ</strong></p>



<p>従来の単一AIが「特定の工程」を自動化するのに対し、AIオーケストレーターは<strong>業務プロセス全体を、複数のAIやツールを動的に組み合わせて自律的に実行</strong>します。</p>



<h2 class="wp-block-heading"><span id="toc7">悩ましきPython</span></h2>



<h3 class="wp-block-heading"><span id="toc8">仕様が&#x2716;&#x2716;</span></h3>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-verification-mindset/14116/" title="【Pythonの罠】たった「1文字」の記述ミスで3時間溶けた実例（例：末尾のコンマ、ミュータブル引数）とLLMが見抜けなかった理由" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n00-_093356-320x180.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/05/n00-_093356-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n00-_093356-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/05/n00-_093356-160x90.jpg 160w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Pythonの罠】たった「1文字」の記述ミスで3時間溶けた実例（例：末尾のコンマ、ミュータブル引数）とLLMが見抜けなかった理由</div><div class="blogcard-snippet internal-blogcard-snippet">Pythonの相対インポート `from .module` がなぜ分かりにくいのか、その歴史的理由と対策を解説。たった1文字 `.` で挙動が変わる『クソ仕様』の真相と、AS/400との比較から見えるPythonの限界。Python初心者からベテランまで、一度は悩んだ『インポート地獄』を完全解決。『急がば回れ』の精神でPythonと向き合う方法。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://xn--ecka7j.biz" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">イイネ.biz</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.05.31</div></div></div></div></a>
</div>



<h3 class="wp-block-heading"><span id="toc9">それでもPython</span></h3>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-verification-mindset/14134/" title="【LLM開発】なぜPythonの仕様に絶望しても、AIオーケストレーションやバッチ開発でPython一択になるのか？3つの決定的な理由" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-320x180.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-320x180.jpg 320w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-800x447.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-768x429.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development-160x90.jpg 160w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/00-PythonWhy-is-it-so-popular-Three-insane-reasons-why-I-who-was-disillusioned-with-Pythons-crappy-specifications-still-have-no-choice-but-to-choose-Python-for-AI-batch-development.jpg 1376w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【LLM開発】なぜPythonの仕様に絶望しても、AIオーケストレーションやバッチ開発でPython一択になるのか？3つの決定的な理由</div><div class="blogcard-snippet internal-blogcard-snippet">インデントのズレで崩壊し、ファイル名1つでヘソを曲げるPythonが、なぜ世界シェア1位なのか？「たった1文字で3時間溶かした」エンジニアが、AI・OCRバッチ開発の現場で直面したPythonの圧倒的な「接着力」と、歪んだエコシステムの歴史を暴く。Ryzen AI 9 HX470 LLM</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://xn--ecka7j.biz" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">イイネ.biz</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.01</div></div></div></div></a>
</div>



<h2 class="wp-block-heading"><span id="toc10">再設計</span></h2>



<p>思った以上に、PDFマニュアルの線画データの文字化け対応に手間取っている。<br>塵掃除第一弾終了時のデザインが以下。まだ続きそうだ。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="446" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-01-800x446.jpg" alt="AI Orchestration" class="wp-image-14150" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-01-800x446.jpg 800w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-01-500x279.jpg 500w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-01-300x167.jpg 300w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-01-768x428.jpg 768w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-01-120x68.jpg 120w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-01-160x90.jpg 160w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/AI-Orchestration-01.jpg 1377w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">AI Orchestration : AI オーケストレーション</figcaption></figure>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-none">

<a href="https://xn--ecka7j.biz/efficiency-vs-thought-ai-symbiosis/ai-orchestration/14177/" title="【実録21日間の泥沼】DeepSeekの無限ループ、Qwen2.5の0件正常終了。AIの粗暴なリラン提案を却下し続けたデータ前処理闘争記" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="640" height="360" src="https://xn--ecka7j.biz/wp-content/uploads/2026/06/Gemini_Generated_Image_vn99cuvn99cuvn99-1-640x360.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://xn--ecka7j.biz/wp-content/uploads/2026/06/Gemini_Generated_Image_vn99cuvn99cuvn99-1-640x360.jpg 640w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/Gemini_Generated_Image_vn99cuvn99cuvn99-1-240x135.jpg 240w, https://xn--ecka7j.biz/wp-content/uploads/2026/06/Gemini_Generated_Image_vn99cuvn99cuvn99-1-320x180.jpg 320w" sizes="(max-width: 640px) 100vw, 640px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【実録21日間の泥沼】DeepSeekの無限ループ、Qwen2.5の0件正常終了。AIの粗暴なリラン提案を却下し続けたデータ前処理闘争記</div><div class="blogcard-snippet internal-blogcard-snippet">AI オーケストレーションの続編。PDF マニュアルの文字化け、Copilot の迷走、Qwen2.5 の沈黙、Python の罠──再々設計と２重遭難を乗り越えた技術的記録。AIオーケストレーションの限界と最適解から続くエンタープライズ級Pythonバッチ設計</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://xn--ecka7j.biz" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">イイネ.biz</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.10</div></div></div></div></a>
</div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
