[{"data":1,"prerenderedAt":171},["ShallowReactive",2],{"content-/eurekapu-image-pipeline-model-comparison":3,"all-pages-for-dir":149,"related-/eurekapu-image-pipeline-model-comparison":150,"og-image-/eurekapu-image-pipeline-model-comparison":170},{"id":4,"title":5,"body":6,"category":130,"concepts":131,"description":132,"extension":133,"meta":134,"navigation":135,"ogImage":131,"path":136,"project_name":137,"published":138,"publishedAt":139,"seo":140,"stem":141,"tags":142,"todo":131,"unpublished":138,"updatedAt":131,"__hash__":148},"pages/2026-07/2026-07-18/eurekapu-image-pipeline-model-comparison.md","Codex CLI画像生成パイプラインでgpt-5.6-solを採用——消費効率3割差のモデル比較とレートリミット運用",{"type":7,"value":8,"toc":121},"minimark",[9,13,21,26,37,40,43,53,56,59,62,65,68,72,75,78,81,84,88,91,94,97,118],[10,11,12],"p",{},"朝5時台、「続きをお願いします」でセッションを再開した。初手は決まっている。引き継ぎメモの先頭に「gpt-5.6-solに切り替えた最初のチャンクで、消費効率を計測する」と書かせてあった。",[10,14,15,16,20],{},"発端は前のセッションにある。画像ランナーのスクリプトを確認させたら、",[17,18,19],"code",{},"codex exec -m gpt-5.5"," がかなり初期のコミットからハードコードされたままだと分かった。solに切り替えたつもりで、ずっと5.5が回っていたのだ。モデル指定を直したうえで1枚だけA/B生成させて見比べると、solの方が良く見えた。ただ、1枚では揺らぎかもしれない。チャンク単位で効率を測ってから決める——そこまでを引き継ぎドキュメントに追記させてあった。",[22,23,25],"h2",{"id":24},"再開その前に認証でつまずく","再開、その前に認証でつまずく",[10,27,28,29,32,33,36],{},"ドライバーを立ち上げる前に、Codexの認証が失効していた。",[17,30,31],{},"codex login status"," は失効していても \"Logged in\" と表示するので当てにならない。実際にAPIを1回叩かせて ",[17,34,35],{},"refresh_token_invalidated"," を確認し、再ログイン後も同じく実呼び出しで復旧を検証してから再起動した。最初の1枚がclaimから約1.7分でdoneまで通り、パイプラインは息を吹き返した。",[22,38,39],{"id":39},"solの消費効率は3割悪かった",[10,41,42],{},"量産はチャンク単位で回る。ドライバー1本がランナー24本を起動し、各5枚ずつ、およそ120枚で1チャンク。最初のチャンクは06:03に始まり、15分で走り切った。",[44,45,51],"pre",{"className":46,"code":48,"language":49,"meta":50},[47],"language-text","消費効率 = チャンクの生成枚数 ÷ 週次枠の使用率増分\nsol 実測: 約12.9枚/1%（5.5 の基準値: 約19枚/1%）\n","text","",[17,52,48],{"__ignoreMap":50},[10,54,55],{},"同じ枠で作れる枚数が約3割減る。事前に決めておいた相談ライン「12枚/1%未満なら止めて相談」は上回っていたので、規定どおり継続させつつ、判断材料だけ報告してもらった。",[10,57,58],{},"ここで枠の在庫を思い出した。週次枠をまるごと戻せるフルリセットのチケットが3枚ある。残りの必要枚数から逆算すると、どうせ使い切れない。効率3割減はチケットで吸収できる。solでいく、と決めた。",[22,60,61],{"id":61},"品質の裏取りは自分の目で13件",[10,63,64],{},"効率は割り切った。残るのは、品質が本当にコスト差に見合うのかだ。同じ対象230枚を5.5でも並走生成させ、solと5.5を左右に並べた比較用のテンポラリページを作らせた。ローカルHTMLをブラウザで開いてもらい、1件ずつボタンを押して判定していく。判定は自動保存され、あとでJSONを貼れば集計してもらえる仕組みだった。",[10,66,67],{},"13件判定した結果は、sol 7・差なし4・5.5が2。「良いものはsol」という分布だった。コスト差が3割なら、solの方がやっぱりいい。ここでsolに最終確定し、5.5の比較生成は止めて量産をsolに一本化した。",[22,69,71],{"id":70},"_24並列枠切れまでの自動運転","24並列、枠切れまでの自動運転",[10,73,74],{},"並列数は24本に固定した。前日の実測で「同時60本超は飽和して逆効果、スイートスポットは実効25〜40本」と出ていたからだ。スループットは約450〜470枚/時。Monitorにはチャンク完了と異常（今回の認証エラー検知の行も含む）だけを拾わせて、あとは自動運転に任せた。",[10,76,77],{},"途中、ワーカーが1本、また1本とレートリミット検知で安全終了していく。担当分はキューに戻り、残りのワーカーが引き継ぐ。チャンク境界で24本に再起動されるので、放っておけば自己回復する。failedは最後までゼロだった。ふと「今いくつ並列だっけ」と不安になって実プロセス数を数えさせたら、ランナー24本・ドライバー1本で多重起動なし。台帳どおりだった。",[10,79,80],{},"とはいえ枠の残量は嘘をつかない。スロットリングが増えるにつれてチャンク所要は15分から44分まで伸び、使用率93%を超えたあと、チャンク9で進捗が止まった。週次枠切れ。この日の生成は1,030枚、累計 done 3,273 / pending 939 / failed 0。対象全体の約78%まで来た。",[10,82,83],{},"あと1回リセットすれば残り939枚を作り切れる計算になる。チケットはまだ残っている。ただ、この日はここで店じまいと決め、ドライバーを完全停止して明日の再開手順をメモに残させた。",[22,85,87],{"id":86},"単語確認uiはmiller-columnへ計画だけ","単語確認UIはMiller Columnへ（計画だけ）",[10,89,90],{},"生成した挿絵の検収では、単語を確認するページを延々スクロールする羽目になっていた。ホイールを回し続けないと次の単語に届かない。そこで、既存ページで使っているMiller Columnの基盤を流用し、矢印キーで単語を移動できるレイアウトへ変える計画を立てさせた。単語・意味・メモ・例文・日本語訳・画像の配置を画面内で固定できれば、タブレットでもPCでも確認が速くなるはずだ。",[10,92,93],{},"実装には手を付けていない。計画ドキュメントを1本残しただけにした。",[22,95,96],{"id":96},"学び",[98,99,100,106,109,112,115],"ul",{},[101,102,103,105],"li",{},[17,104,31],{}," の \"Logged in\" 表示は失効を検知しない。認証の生死は実API呼び出しで確かめる",[101,107,108],{},"モデル切り替えは「切り替えたつもり」が一番危ない。ランナーのスクリプトにモデル名がハードコードされていないかを先に見る",[101,110,111],{},"消費効率は「生成枚数÷使用率増分」で1チャンクごとに測ると、モデル間の差が具体的な枚数の差として比べられる",[101,113,114],{},"レートリミット下の並列生成は「脱落してもキューに戻る」設計にしておくと、監視をゆるめても壊れない",[101,116,117],{},"品質判断は集計より先に、比較ページを自分の目で見る。13件の手動判定で方向は十分に出た",[10,119,120],{},"明日は残り939枚。リセット1回で終わる。",{"title":50,"searchDepth":122,"depth":122,"links":123},2,[124,125,126,127,128,129],{"id":24,"depth":122,"text":25},{"id":39,"depth":122,"text":39},{"id":61,"depth":122,"text":61},{"id":70,"depth":122,"text":71},{"id":86,"depth":122,"text":87},{"id":96,"depth":122,"text":96},"dev",null,"学習サイトの挿絵を量産する画像生成パイプラインで、gpt-5.6-solとgpt-5.5を効率と品質の両面から比較した記録。消費効率3割減をフルリセットチケットで吸収してsolを採用し、24並列の量産運用と週次枠切れまでの一日をまとめた。","md",{},true,"/eurekapu-image-pipeline-model-comparison","eurekapu-nuxt4",false,"2026-07-18T00:00:00.000Z",{"title":5,"description":132},"2026-07/2026-07-18/eurekapu-image-pipeline-model-comparison",[143,144,145,146,147],"Codex CLI","画像生成","モデル比較","レートリミット","eurekapu","XtvTxW_CJnCPuaZtne9_y1LoPDFFgefp2X-zKHtM1i8",[],[151,154,158,162,166],{"title":152,"path":153,"publishedAt":139},"2026年7月18日の開発日記 - 1Password実機検証と画像パイプラインsol採用","/2026-07-18-diary",{"title":155,"path":156,"publishedAt":157},"gogen-eitango Phase 4b・4d: アトラス3,859語の例文画像をCodexループで量産、並列数の飽和点を実測した日","/gogen-eitango-phase4b-atlas-images","2026-07-17T00:00:00.000Z",{"title":159,"path":160,"publishedAt":161},"gogen-eitango Phase 4: D1本番適用と章末ミニテストの4択化 — Fable 5のrate limitをCodex引き継ぎで乗り切った日","/gogen-eitango-phase4-d1-quiz-multichoice","2026-07-16T00:00:00.000Z",{"title":163,"path":164,"publishedAt":165},"語源英単語アプリの例文を作り込んだ日 — 実写画像から抽象イラストへの方針転換・単語のマゼンタ強調・Piper TTSの再生ボタン","/gogen-eitango-example-images-and-audio","2026-07-15T00:00:00.000Z",{"title":167,"path":168,"publishedAt":169},"学習コンテンツを買い切りで売る価格設計——「買う前に触らせる」と「無料プランを持たない」を両立させる考え方","/course-onetime-pricing-design","2026-07-04T00:00:00.000Z","https://log.eurekapu.com/og/blog/eurekapu-image-pipeline-model-comparison.png?v=2026-07-18T00%3A00%3A00.000Z&title=Codex%20CLI%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%A7gpt-5.6-sol%E3%82%92%E6%8E%A1%E7%94%A8%E2%80%94%E2%80%94%E6%B6%88%E8%B2%BB%E5%8A%B9%E7%8E%873%E5%89%B2%E5%B7%AE%E3%81%AE%E3%83%A2%E3%83%87%E3%83%AB%E6%AF%94%E8%BC%83%E3%81%A8%E3%83%AC%E3%83%BC%E3%83%88%E3%83%AA%E3%83%9F%E3%83%83%E3%83%88%E9%81%8B%E7%94%A8&author=Kei%20Komatsu&sig=cb8fb26854e490b8",1784424595225]