ChatGPTで、公的Excelを検索できるWebページにする
スクショとログで進む、GitHub Pages公開までの会話ログ
【この記事について】
厚労省がExcelで公開している「緊急避妊薬を販売可能な薬局等の一覧」を、ChatGPT 5.2 Pro(AI)と一緒に
・使いやすい形に整形し
・スマホで検索できる“静的サイト”にして
・GitHub Pagesで公開し
・(欲しければ)GitHub Actionsで「自動更新」まで持っていく
……ところまで進めた “やりとり” の一部を、公開向けに整えたものです。
この記事そのものも ChatGPT 5.2 Pro に書いてもらいました。
ウェブサイト: https://odakin.github.io/mhlw-ec-pharmacy-finder/
ソース: https://github.com/odakin/mhlw-ec-pharmacy-finder/
―――――
【このログの読み方】
結論:「理解してから進む」より、「コピペで進む」ほうが現実的。
やることはだいたいこの3つのループだけ:
(1)やりたいことを短く言う(例:「GitHub Pagesで公開したい」「毎日更新したい」)
(2)失敗したら、エラーメッセージやスクショをそのまま貼る(分からなくてOK)
(3)AIが返す「次に打つコマンド」を、そのままコピペする
これを回すと、ド素人でも“公開まで”はわりと到達できます(このログがその証拠)。
―――――
【ログ公開にあたっての伏字ルール】
このログは、公開するとセキュリティ/個人特定につながりうる情報をすべて伏字にしています。
―――――
【1 はじまり:「このExcel、AIに覚えさせたい」】
odakin:
このデータは女性が緊急避妊薬を買える薬局の厚生労働省作成のリストです。他のユーザーも使えるように ChatGPT、あなたが記憶しておいてくれますか?
https://www.mhlw.go.jp/stf/kinnkyuuhininnyaku_00005.html
ChatGPT:
了解だよ。いま貼ってくれたURLは、今後このチャットで参照できるように記憶しておいた。
ただし一点だけ:この「記憶」は基本的に君との会話を便利にするためのもので、他のユーザーのChatGPTに共有されたりはしない。
odakin:
Gemini はできるのになぜ君はできないの?
「データコントロール」「すべての人のためにモデルを改善する」をオンにしたらできる?
ChatGPT:
結論から言うと、そのスイッチをオンにしても「このURLを“他のユーザーも確実に使える形で”記憶させる」ことはできない。
個人向けのメモリと、モデル改善(学習への提供)は別物で、「ブックマークが全員に配られる」仕組みじゃない。
―――――
【2 方針転換:「学習」より「配布」】
odakin:
こういうコメントがあったので、君にも覚えさせたかった。
(※ここは長文引用だったため要約: “Excelかよ” な公式リストは使いづらい。若者が使いやすい検索(例:LINE)やAI活用が欲しい、という趣旨)
ChatGPT:
(提案)
odakin:
いいね。全部やってくれい。
ChatGPT:
了解、ぜんぶ作った。
公式Excelを取り込んで整形し、配布セット(簡易Web検索+LINE Botサンプル+カスタムGPT用の指示文+更新スクリプト)まで一式にまとめた。
※ここで大事なのは、「モデルに学習させる」より「URLで渡せる形にする」のほうが、現実に人が助かるって点。
学習より強い。配布は正義。
―――――
【3 公開:GitHub Pagesで「URL一発スマホ表示」にする】
odakin:
Codex で連携して github の odakin の下にしかるべく入れることもできる?
ChatGPT:
できるよ。しかも「Codex経由」なら GitHub に変更を入れてPRまで作れる。
ただし落とし穴があって、ChatGPTの「Settings → Apps → GitHub」でつなぐやつは読み取り専用。push/PR をやるなら Codex(Web/CLI) 側を使うのが正解。
(中略:ZIP配布物の中身。docs/ がそのまま静的サイト、scripts/ が更新用、.github/workflows/ が自動更新用、など)
odakin:
ところでgithub上で、ユーザ側は何か適当な与えられたURLを叩いたら直接スマホから見られるようになってる?(GitHub Pagesみたいに)
ChatGPT:
そのイメージにできる。docs/ を GitHub Pages で配信すれば、URLを開くだけでスマホから見られる。
―――――
【4 コピペだけでやりたい(Mac)→ だいたい可能】
odakin:
手順をコピペだけで済むように作って。
ChatGPT:
了解。ここから先は「コピペだけ」で終わるように作る。
(例:初回pushのコマンド。※この記事では “見せる” ことが目的なので、細部のパスやrepo名は[伏字]で一般化)
コピペ例:
set -e
cd “[展開したフォルダ]”
git init
git add .
git commit -m “Initial import”
git branch -M main
git remote add origin “git@github.com:odakin/[リポジトリ名].git”
git push -u origin main
Pages設定(ここだけクリック):
Settings → Pages → Deploy from a branch → Branch: main / Folder: /docs → Save
―――――
【5 初心者あるある①:brewが止まったように見える】
odakin:
これで止まってる。
(brew のログが大量……)
ChatGPT:
“止まってるように見えるだけ”の可能性が高い。
ただし抜け道もある(公式バイナリで入れる、など)。
(ログ省略)
―――――
【6 初心者あるある②:tar.gzだと思ったらHTMLを落としてた】
odakin:
tar -xzf gh.tar.gz
tar: Error opening archive: Unrecognized archive format
ChatGPT:
ほぼ確実に「tar.gzじゃなくてHTML(404ページ等)を掴んでる」やつ。
正しいmacOS用アーカイブを落として解凍しよう。
―――――
【7 初心者あるある③:SSHのknown_hosts罠(そして出力を実行)】
odakin:
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
(これをコマンドだと思って実行)
zsh: command not found: ...
ChatGPT:
それは“コマンド”じゃなくてターミナルの出力。
打つべきコマンドだけ渡すので、それだけコピペして進めよう。
―――――
【8 自動更新:「毎日午前3時に更新があれば反映」したい】
odakin:
毎日午前3時とかに厚労省のサイトに見に行って、データが更新されてたら自動で反映させることも可能?
ChatGPT:
可能。GitHub Actions の schedule(cron) で定期実行できる。
cronはUTCなので、JSTの03:00はUTCの18:00。
Actionsからpushするなら permissions: contents: write が必要。
更新が無い日はコミットしないようにしておくと運用が軽い。
―――――
【9 初心者あるある④:「runって何?」「コミット履歴って何?」】
odakin:
「その run を開いて」とは?「リポジトリのコミット履歴」とは?
ChatGPT:
run=ワークフロー実行1回分のログ(Actionsタブの実行一覧の1行)。
コミット履歴=pushされた変更の記録(Codeタブの “X commits”)。
runは原因究明、コミット履歴は結果確認。
―――――
【10 仕様変更で壊れる → ログ貼る → 直す(ここが現実)】
odakin:
(スクショ)Actionsで失敗。だめじゃん。
ChatGPT:
どのステップで落ちてるか(Update data等)と、エラー内容を見れば原因は特定できる。
修正してpushしたら、新しいrunで確認。
(中略:公式ページ側が相対URL(/content/…)になって落ちる→URL補完して修正、など)
―――――
【11 さらに壊れる:列名ゆらぎでデータ整形が爆発】
odakin:
(後日)駄目じゃん…直して。あと他にも似たようなバグあるんじゃないの?
Traceback:
df.get(”電話番号”, “”).apply(...) で AttributeError: ‘str’ object has no attribute ‘apply’
ChatGPT:
原因は明確で、df.get(”電話番号”, “”) が “列が無いとき文字列”を返して、そこに apply して爆発している。
厚労省側のExcelが更新されて列名が揺れた可能性が高い。
対策は「列名をゆるく探すヘルパー」を入れて、同種の df.get(...).apply をまとめて潰す。
―――――
【12 ここまでのやり取りを公開して大丈夫?(答え:そのままは危ない)】
odakin:
ここまでの君とのやり取りをすべて公開したとして、セキュリティ上まずいことはある?
ChatGPT:
ある。公開前に潰すべき最重要は「トークン類」。
例えば、こういう行が原文に生で残ってたら即アウト:
Token: [伏字]
(※この記事はその手の情報を全削除・伏字化済み)
―――――
【まとめ:ド素人がAIでサイト公開まで行くコツ】
・ゴールを「学習」じゃなく「配布」に置く(URLで使える形が最強)
・分からないときは、スクショ/エラーログをそのままコピペする(理解より再現が強い)
・指示は「コピペで」「1ステップずつ」「エラーはそのまま貼る」が強い
・公的データは壊れる。だから「自動更新+壊れたら直す」が最初から設計に入ってると勝つ
・公開時は秘密情報を絶対に貼らない(トークン/鍵/Cookie/個人情報)


もうちょっと具体的な経緯に興味がある方が居られたら(居ないかな)こちらから辿れます。
https://social.vivaldi.net/@odakin/115975924367141455