0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Web版ChatGPTのSkillでExcelフォーマットを守らせるまでにやったこと

0
Last updated at Posted at 2026-05-20

この記事は Zenn でも公開しています。

はじめに

Web版ChatGPTのSkillで、複数サイトを比較し、決まったフォーマットのExcel評価表を出力する仕組みを作っていました。

要件だけ見ると、そこまで難しくなさそうに見えます。

  • URLをいくつか入力する
  • サイト種別に応じた評価項目で比較する
  • Excelに評価、理由、参照情報を並べる
  • 毎回同じ列構成、同じシート構成で出力する

ところが、実機で試すとかなり苦戦しました。

こちらは「このフォーマットでExcelを作ってほしい」と指示しているつもりでも、ChatGPTは過去に見たことがありそうなExcel分析の形へ寄せてしまいます。1シートで出したいのに複数シートになったり、指定した列が消えたり、評価項目を勝手に作り直したりしました。

この記事では、具体的なプロジェクト名やコードは伏せつつ、Web版ChatGPTのSkillで「フォーマット通りのExcel」を出させるために効いた設計をまとめます。

作ろうとしたもの

作りたかったのは、サイト比較の評価表です。

人間が使うExcelなので、ただデータが入っていればよいわけではありません。あとから見返したときに、どの評価がどの理由に基づくのか、どのURLを見れば確認できるのかが横並びで追える必要があります。

最終的に目指した列構成は、次のような形です。

領域 列の意味
基本情報 No、カテゴリ、評価項目
対象ごとの評価 対象Aの評価、理由、参照
比較対象ごとの評価 対象Bの評価、理由、参照
追加対象 対象数に応じて、評価、理由、参照の3列セットを増やす
横断比較 同じ評価項目について、各サイトを横断して見たコメント

ポイントは、評価対象ごとに「評価」「理由」「参照」を3列セットで持たせることです。

参照列を末尾にまとめるのではなく、各対象の理由の右に置く。こうすると、人間がファクトチェックするときに、評価と根拠を同じ目線の移動で確認できます。

何がうまくいかなかったか

最初の失敗は、ChatGPTが「フォーマットの指示」よりも「それっぽいExcel分析の形」を優先してしまったことでした。

失敗 起きたこと なぜ困るか
シート構成が変わる 1シート指定なのに、作業用や詳細用のシートが増える 人間側の確認手順が崩れる
列構成が変わる 参照列が消える、末尾にまとめられる、独自列が増える 想定したレビューができない
評価項目が変わる 用意した項目を読まず、ChatGPTが独自項目を作る 比較の基準が毎回変わる
評価記号が揺れる 指定外の数値、ランク、記号が混ざる 集計や比較が壊れる
見た目が揺れる 列幅、色、行高、罫線が毎回微妙に変わる Excelとしての使い勝手が落ちる

特に大きかったのは、ChatGPTがExcelを自力で組み立て始めることです。

モデルにとっては「Excelを作る」こと自体はできます。でも、こちらが欲しいのは自由なExcel生成ではなく、決められた型への出力です。ここを分けて考えないと、毎回それっぽいけれど微妙に違う成果物になります。

なぜ難しかったのか

今回の問題は、単にプロンプトが弱いという話ではありませんでした。

Web版ChatGPTのSkillでは、モデルが自然言語の指示、会話文脈、外部ファイル、過去の一般的なパターンを組み合わせて動きます。そのため、こちらが「このフォーマット」と書いても、モデル側の既存パターンが強いと、そちらへ引っ張られることがあります。

Excel出力では、特にこれが起きやすいと感じました。

モデルがやりがちなこと こちらが本当に欲しかったこと
分析しやすそうな複数シート構成にする 人間が見る1シートの評価表にする
評価項目をよしなに補完する 用意した評価項目をそのまま使う
見やすそうな列を追加する 指定した列以外を増やさない
数値スコアやランクに置き換える 指定した評価記号だけを使う
その場でExcel生成手順を考える 固定された生成処理だけを使う

つまり、ChatGPTの創造性や補完力が、フォーマット固定の場面では逆にノイズになります。

方針を変えた

途中から、考え方を変えました。

「ChatGPTにExcelをうまく作ってもらう」のではなく、「ChatGPTには調査と構造化だけを任せ、Excelの形は固定処理で守る」方針です。

この分担にすると、モデルに任せる範囲がはっきりします。

領域 ChatGPTに任せる 固定処理で守る
サイト理解 ページ内容の把握、比較観点の整理 なし
採点 評価記号の選択、理由文の作成 許可記号の検証
根拠整理 参照URLや確認箇所の整理 参照列の配置
Excel出力 直接は任せない シート数、列順、列幅、罫線、色
品質確認 自己レビュー レイアウトの機械検証

この切り分けが、かなり効きました。

指示は「やること」より「やってはいけないこと」を厚めに書く

改善後は、指示ファイルの冒頭に、絶対に守る原則を置きました。

たとえば、次のような内容です。

原則 意図
評価項目資料を実際に読む 独自項目の生成を防ぐ
Excelは固定処理で作る その場の思いつきで列やシートを作らせない
出力は1シートだけにする 過去パターン由来の複数シート化を防ぐ
指定外の列を追加しない 人間の確認フローを壊さない
生成後に検証する 仕様違反を出力前に見つける

さらに、禁則事項も具体的に書きました。

抽象的に「フォーマットを守る」と書くだけでは足りません。実際に起きた失敗をもとに、「作業用シートを増やさない」「参照列を末尾にまとめない」「独自の評価項目を作らない」のように、やってほしくない形を明示しました。

LLMは自由度が高いと、親切心で別案を作ります。だから、フォーマット固定が重要な場面では、正解だけでなく不正解の形も書くのが大事でした。

評価項目は読んだ証跡を残す

評価項目を外部資料にしても、ChatGPTが実際に読まずに進むことがあります。

そこで、評価項目資料を読んだことが会話上で分かるようにしました。具体的には、資料ごとに短い識別子を置き、採点前にそれを出させる運用です。

これは厳密なセキュリティ機構ではありません。けれど、「読んだことにして進んだ」ケースを見つけやすくなります。

今回のようにフォーマットと評価基準を固定したい場合、モデルの内部状態を信じるだけでは危ういです。外から観測できるチェックポイントを作ると、失敗の発見が早くなります。

Excelの見た目はモデルに任せない

Excelは、見た目の再現が思った以上に難しいです。

列幅、行高、セルの塗り、フォント、罫線、折り返し、リンク、コメント。ひとつひとつは小さな要素ですが、少しずつズレると「人間が使う表」としての品質が落ちます。

そこで、見た目に関わる要素はできるだけ固定処理側へ寄せました。

固定したもの 理由
シート数 1シートで確認する運用を守るため
ヘッダー行 列順と意味を固定するため
列幅 長い理由文や参照情報を読みやすくするため
行高 折り返し後の視認性を保つため
罫線・塗り 既存の確認しやすい表に寄せるため
評価記号の表示 集計と目視確認をしやすくするため

ChatGPTには「評価内容」を作ってもらう。Excelの見た目は、固定処理で再現する。

この線引きをしたことで、出力の安定性が上がりました。

生成後の検証を手順に入れる

もうひとつ効いたのは、Excelを作ったあとに必ず検証する手順です。

検証では、次のような観点を見ます。

検証項目 見る理由
シート数が1つか 複数シート化していないか確認する
ヘッダーが指定通りか 列の欠落や追加を見つける
最終列が横断比較か 右端の構成が崩れていないか確認する
集計行があるか 評価記号の件数確認ができるか見る
各対象に参照列があるか ファクトチェックしやすい構造か確認する
ファイル形式がExcelか 出力物の取り違えを防ぐ

この検証は「あとで人間が見る」ではなく、Skillの実行手順に組み込みました。

出力前に機械的に落とせるものは落とす。これで、「見た目はそれっぽいけど仕様違反」という成果物をかなり減らせます。

参照列は対象ごとに置く

途中までは、参照情報を最後の列にまとめる案もありました。

でも実際に見ると、評価対象ごとに参照列が分かれている方が確認しやすいです。

構成 メリット デメリット
末尾に参照列を1本だけ置く 列数は少ない どの対象の根拠か追いにくい
各対象に参照列を置く 評価、理由、根拠を横並びで読める 対象数に応じて列数が増える

最終的には、列数が増えても「各対象に参照列を置く」方を選びました。

Excelは人間が見るものです。列数の少なさより、確認するときの迷いにくさを優先しました。

躓いたところ

一番印象に残っているのは、実機テスト後の振り返りです。

自分: Web版ChatGPTのSkillで検証したけど、フォーマットが全然安定しない。どこが悪いか原因を整理したい。

AI: 根本原因は、指示ファイルの制約がLLMの既存パターンより弱かったことです。正解フォーマット、禁則、生成後検証を強化する必要があります。

この「既存パターンより弱い」という見立ては、かなり腑に落ちました。

こちらは指示ファイルに仕様を書いたつもりでも、モデル側には「Excel分析ならこういう構成にする」という強い既存パターンがある。その既存パターンを上書きするには、正解レイアウト、禁則、固定処理、検証まで含めて、逃げ道を減らす必要がありました。

もう一つの躓きは、評価の中身とExcelの形を同時にモデルへ任せようとしたことです。

調査、採点、理由づけはLLMの得意領域です。一方で、列順、シート数、セル幅、参照列の位置は、LLMに自由に考えさせるほど揺れます。ここを分離するまで、出力はなかなか安定しませんでした。

この記事から持ち帰れること

Web版ChatGPTのSkillでExcelを出すときは、「Excelを作れるか」より「毎回同じ型で出せるか」が難所になります。

そのために効いたのは、次の設計です。

観点 学び
役割分担 LLMには調査と構造化を任せ、Excelの形は固定処理で守る
指示設計 正解だけでなく、過去に起きた失敗形を禁則として書く
外部資料 評価項目を読んだことが分かる証跡を作る
フォーマット 1シート、列順、参照列の位置を明文化する
検証 出力後にシート数、ヘッダー、集計行を機械的に確認する
運用 人間が確認しやすいExcelをゴールにする

まとめ

LLMに「いい感じにExcelを作って」と頼むと、たしかにそれっぽいものは出ます。

でも、業務で使うExcelに必要なのは「それっぽさ」ではなく、毎回同じ場所に同じ意味の情報があることです。

今回の学びは、ChatGPT Skillを安定させるには、モデルの自由度を全部なくすのではなく、自由に考えてよい部分と、絶対に守る部分を分けることでした。

調査や理由づけはChatGPTに任せる。Excelの構造や見た目は固定処理と検証で守る。

この分担にすると、Web版ChatGPTのSkillでも、フォーマットに沿ったExcel出力にかなり近づけます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?