🦌

オープンデータ探索のためにAgentモードのChatGPTができること・苦手なこと

に公開

tl;dr

  • 目的:ニホンジカ増加の要因(狩猟者減少・暖冬/積雪減少・捕獲圧の変化 ほか)をダッシュボードで可視化し、議論を前に進める。
  • 検証仮説:①狩猟者減少・高齢化 → 調整力低下、②暖冬・積雪減少 → 生存率上昇、③捕獲圧の構成変化 → 個体数に影響、(次版)④政策イベント・土地利用の変化が増減に寄与。
  • AIが探してきて勝手に採用したデータ:環境白書の推定個体数(分位)捕獲数(内訳)狩猟免許所持者(年齢別)、代表観測点(奈良/新潟/岐阜)の日別積雪深→年集計、補助的に県別気候指標(2019)
  • 主な前処理:古い.XLSをCSV化、和暦→西暦、見出し正規化、ワイド→ロング、積雪の積雪日数/平均/最大/合計を年集計。すべてUTF-8 CSVでTableau即投入。
  • Agentモードでできたこと:公的サイトの図表Excel到達→変換→整形、年別CSVの一括取得、軽量ETL、自動ファイル出力。
  • Agentモードが苦手なこと:ログイン/動的ページ/古い形式の自動取得、県別個体数の網羅は要追加作業。

著者のお気持ち

  • あらかじめどのような仮説を検証したい、という文脈を(これもAIで)まとめてからプロンプトとしてAIに伝えておけば、あとは「いい感じのデータを持ってきて」だけでかなりいい感じの作業をしてくれます。古いxls形式でも勝手にツールを探してきてCSVに変換してくれるのはとても助かりました。
  • 直近のデータが存在しても、たどり着けずに中途半端な年代のデータだけを持ち帰ってくることがあります。なので人間が検証・吟味するプロセスは必須。
  • Agentに頼めば、とりあえずBIツールにインポートすればグラフになる段階のデータを返してくれます。逆に言えばそれだけなので、探索しがいのあるデータというよりは、当たり前の結論しか引き出せないようなデータになりがち。(それはそれでありがたいのだが)
  • 2025年10月時点でAIによるオープンデータ探索をするなら、分析テーマは思いつきレベルでもよくて、そこからどんなデータがあるかなーと当たりをつけるフェイズでAI Agentを使うのが良いかと思います。


こんな感じの割と何の変哲もないグラフならすぐできる程度のデータは、サクッと取ってきてくれる(が、色々足りなかったりする)

背景

問題意識:なんでそんなに日本で野生のシカとかイノシシが増えてるの? → でもデータ前処理が面倒 → ChatGPTでできるかな

このようなふと疑問に思ったことに対して探索的データ分析をして仮説を検証するデータの可視化を(Tableauで)したくなる皆さんは多いと思いますが、パブリックデータを検索・取得・加工する前処理の過程がとてもめんどくさいのです。(個人の感想です)

そこで今回はデータの前処理をどこまでAIに任せられるのか、ChatGPTのAgentモードならどこまでできるの?というのを知っておくための実験を行いました。

Tableauうまうま会

きっかけはTableauうまうま会というイベントでした。Tableau界隈はコミュニティ活動が活発で、その中の「うまくViz(データ可視化)がつくれるようになる×うまいご飯を食べる」会に参加してきました。今回のテーマは「ジビエ焼肉」。めっちゃうまかったです。

ジビエ焼肉コース料理の数々

ジビエとは

(この節はPerplexityの検索結果を貼り付けただけです)

ジビエとは、主に野生の鳥獣を狩猟によって捕獲し、食材として利用する肉や、それを使った料理のことです。[1][2][5]

語源や定義

  • 「ジビエ(gibier)」はフランス語が由来で、日本語では「野生鳥獣肉」と訳されます。[2][3]
  • 家畜(牛・豚・鶏など)の肉と異なり、野生で育った動物(シカ、イノシシ、カモ、クマ、ウサギ、キジなど)が対象です。[6][8][1]

ジビエの特徴

  • 狩猟によって得られることから、運動量や食べているものにより味や肉質に独特の違いがあります。[1]
  • 日本でも伝統食文化として古くからジビエを食べる習慣があり、近年は農作物被害対策の観点でも活用が進んでいます。[3][9]
  • フランスを中心とするヨーロッパでは高級食材、貴族料理として発展しました。[5][6]

代表的なジビエの例

  • 鹿(シカ)、イノシシ、クマ、ウサギ、カモ、キジ、ハトなどが一般的です。[7][8][1]
  • それぞれ味や調理方法が異なり、「ぼたん鍋」(イノシシ)や「もみじ鍋」(シカ)と呼ばれる料理も有名です。[3][7]

注意点

  • 野生動物肉には衛生上のリスク(E型肝炎や寄生虫など)があるため、十分に加熱調理することが推奨されています。[2]

このようにジビエは、自然の恵みをいただく食文化であり、現代でも持続可能性や地域振興の観点から注目が高まっています。[6][3]

参考文献

1 2 3 4 5 6 7 8 9 10


このようなおいしい経緯で、そもそも野生のシカやイノシシの個体数が増えているのはなぜ?という疑問が湧いたので、冒頭の実験を始めるに至ります。

実験概要

日本のニホンジカ増加要因(天敵不在、狩猟者減少、暖冬・積雪減少、保護政策の影響、土地利用変化)を、見てわかる形で示すMVPダッシュボード(Tableau)を作るために、短時間でオープンデータを収集・整形しました。本記事はその探索の実録と、AgentモードのChatGPT(ブラウザ操作・ファイル処理・軽いPython整形が可能な環境)でどこまでできたか/何が苦手かをまとめたものです。


AIが考えたデータ探索の計画

短時間で説得力のあるストーリーを作るため、以下をMVP(Minimum Viable Product)の必須として集めました。

  • 推定個体数の長期トレンド(全国・本州以南)
    環境省『環境白書』の図表Excelから抽出 → CSV化
    ・分位(0.05〜0.95)を含む推定個体数 → 中央値(Q0.50)を基軸にトレンド把握

  • 捕獲数の推移(全国)
    同じく環境白書の図表Excel → CSV
    ・「狩猟」「許可捕獲」「指定事業」の内訳+合計 → 人為的圧力の代理変数

  • 狩猟免許所持者数(年齢別・長期)
    環境白書の年齢別免許所持者Excel → ロング形式に整形、年合計も作成
    ・高齢化・減少の可視化に直結

  • 積雪・気温(気候面)
    ① 2019年の都道府県別「年平均気温」「年間雪日数」(ランキング表由来)
    積雪の“定点観測”として、鹿の多い県に所在する観測点の日別積雪深を年度アーカイブから収集・年別集計(例:奈良・新潟・岐阜の代表観測点)

これで、**「個体数・捕獲・狩猟者・積雪」**という核の4軸が揃い、最小限のダッシュボードでストーリーを構成できる状態になりました。

「集めました」「なりました」と(AIが)仰せですが、 実際には(おそらくトークンの制約で)1度ではデータを持ってこられなかったり、データがなかったりしました。AIのドヤ顔は大目に見てあげてください。


データ探索の実録

1) 環境白書の図表Excel → CSV化

  • 目的:推定個体数・捕獲数・狩猟者(年齢別)を年次時系列で扱う

  • (AIが)やったこと:

    • 白書PDFの図表ページからExcel添付へ到達
    • .xlsxはそのまま読み取り、.xlsLibreOffice(headless)でCSV変換
    • 日本語見出しや和暦→西暦複数行ヘッダの正規化、ロング形式化を実施
  • 成果:Tableauにすぐ入れられるクリーンCSVが揃い、年次の折れ線・面グラフが一発で描ける

2) 積雪の“定点”データ(1989年〜、全県網羅は不要)

  • 目的:暖冬・積雪減少の仮説を、“同じ観測点”で長期に追う

  • やったこと:

    • 気象官署の**年別CSV(観測点×年)**をダウンロード
    • 奈良(葛城)、新潟(新潟)、岐阜(高山)で**日別の積雪深(mm)**を取得
    • 年別に積雪日数/平均・最大・合計積雪深を集計
  • 所感:奈良はそもそも暖地で積雪日が極端に少なく、「積雪減少が生存率↑」の効果を示すには豪雪地の方が説明力が高い。新潟の年変動はストーリーに効く。


つまずきポイント(乗り越えた/回避した)

ここでも「主語はAI」です。AI(GPT-5のAgentモード)がつまずき、考え、乗り越えています。人間はぼけーっとお茶飲んでました。

  • 古いExcel(.xls)の読み込み
    → Python標準では読めず、LibreOfficeでCSV化して解決。
  • 多段ヘッダ・和暦・全角空白
    → 列名正規化、和暦→西暦マッピング、ロング化で統一。
  • サイトのクロスドメイン制約やログイン要件
    → 一部の統計ポータルは自動DLに制約。可能な範囲で一次のExcel/CSVへ直接到達し、難しいものは代替のオープンデータ代表点の定点観測に切り替え。
  • 気象の“県平均”より“定点観測”を優先
    → 都道府県平均は年や指標の網羅に限界があるため、**長期かつ再現性の高い“観測点×年”**に切り替えたのが奏功。

前処理レシピ(今回やったこと)

  • 列名整形(日本語→英語、スペース・改行・全角の除去)
  • 和暦→西暦への変換辞書を適用
  • ピボット(ワイド→ロング)
  • 文字→数値への強制変換、欠損はNaN/0を文脈で使い分け
  • 年別集計(積雪日数snow_depth_mm>0の日数、平均/最大/合計積雪深
  • 書き出し:UTF-8 CSV(Tableau/Sheets/Pythonで相互運用)

Tableauでの最小ストーリーボード

「最小」という条件がついているのは、この前の文脈でMVPについて議論しているからです。

  1. 推定個体数(Q0.50)トレンド:全国時系列の折れ線

  2. 捕獲数スタック:狩猟・許可・指定事業の重ね棒

  3. 狩猟者の高齢化:年齢帯別の面積図 or ピラミッド

  4. 積雪の定点比較:豪雪地(新潟)vs 暖地(奈良)の年別積雪日数

    • →「暖冬・少雪年」と個体数増の時期の重なりをハイライト
  5. (任意)注釈レイヤ:政策転換年(雌ジカ禁猟期間の解除など)を縦線で注記


AgentモードのChatGPT:できたこと

  • 公式サイトからのデータ探索と到達
    ・白書図表の埋め込みExcelまでナビゲート
    ・年別観測CSV(観測点×年)の一括取得を工夫して実施
  • ファイル変換・整形・結合
    .xls→CSV、.xlsx読込、日本語混じりのヘッダ修正
    ロング化・年集計などの軽量ETL
  • 出力の“すぐ使える”最適化
    UTF-8 CSVでTableau/Sheets/PythonどれでもOK
    ・列名やデータ型をBIフレンドリー

短時間で「使える形」に持っていく、という点では極めて相性が良いです。


AgentモードのChatGPT:苦手だったこと/注意点

  • ログイン・APIキー必須のサイトや、動的生成ページの自動取得

    • 統計ポータルのログイン要件クロスドメインクッキー制御は壁。
    • 対処:一次配布のExcel/CSVに回避経路を取り、どうしても無理なら代表点に絞る別の一次ソースに切替。
  • 古いExcel形式(.xls)や日本語特有の表記揺れ

    • 追加ライブラリが使えない環境だと詰まりがち。
    • 対処:LibreOfficeのヘッドレス変換や、行スキップ+正規表現で粘り強く整形。
  • 完璧な網羅性を短時間で担保すること

    • 例:都道府県別の鹿個体数の統一フォーマットは即時取得が難しい。
    • 対処全国トレンド+捕獲+狩猟者+定点積雪でまず説得力あるMVPを作り、後続で地域別へ拡張。
  • 単位・定義差

    • 積雪は「降雪」「積雪深」「雪日数」など指標が多く、**単位(cm/mm/日)**も混在。
    • 対処:定義を明示し、列名で単位を埋め込む(例:snow_depth_mm)。

再現ワークフロー(社内標準にすると楽)

  1. データ取得

    • 白書図表Excel → /raw/env_whitepaper/*.xlsx|.xls
    • 観測点×年CSV → /raw/snow/{station}/{year}.csv.gz
  2. 前処理(軽量ETL)

    • 形式変換(.xls→csv)、列名正規化、和暦→西暦、数値化
    • ワイド→ロング、キー(年・都道府県・観測点)で整合
  3. 特徴量作成

    • 積雪日数、平均/最大/合計積雪深
    • 狩猟者年齢帯の比率・中央値年齢(任意)
  4. 検証用ビュー

    • 折れ線(個体数・捕獲)、積層棒(捕獲内訳)、人口ピラミッド(狩猟者)、積雪比較
  5. エクスポート

    • /out/csv/*.csv をTableauに取り込み、ワークブック雛形にバインド

こうするとさらに良い(実務Tips)

  • “代表点×複数県”の積雪を少しずつ増やす(北海道・青森・秋田・新潟・長野・岐阜など)
  • 政策イベント年リストを整備(雌ジカ禁猟解除年、捕獲事業拡大年 等)→縦線注釈で因果の仮説提示
  • 土地利用系のプロキシ(耕作放棄地、林齢構成、広葉樹比率など)を1~2指標だけ追加
  • データ辞書を最初に作る(列名・単位・定義・出典URL・更新頻度)

まとめ

  • AgentモードのChatGPTは、**“到達できる一次データを最短で整形し、BIに乗せる”**ことが得意です。
  • 一方で、ログイン必須のAPI・高度に動的なサイト・古い形式には詰まりやすい。そこは回避ルート(別ソース、代表点、形式変換、手動1ステップ)を混ぜて突破するのが現実解。
  • 本稿の流れ(全国トレンド+捕獲+狩猟者+定点積雪)だけでも、「暖冬・積雪減少×個体数動態」を示す強い出発点になります。ここから地域別の肉付け政策イベントの重ね合わせを進めれば、意思決定に耐えるダッシュボードに育ちます。

付録1:仮説と、そのために探した/取得したデータ

仮説 検証の狙い 探した/取得したデータ(ソース) 取得状況・備考
狩猟者の減少・高齢化が頭数調整力を弱めている 狩猟者数の長期トレンドと年齢構成の変化を把握 狩猟免許所持者数(年齢別・全国)(環境白書の図表Excel) 取得・整形済み(ロング化、年合計作成)
気候変動(暖冬・積雪減少)が越冬率を押し上げている 雪の減少が“生き延びる環境”を広げていないか 観測点の日別積雪深(1989年〜):奈良(葛城)、新潟(新潟)、岐阜(高山)/年別集計(積雪日数・平均・最大・合計) 取得・年集計済み(奈良=積雪稀、新潟=年変動大で説明力あり)
個体数は90年代以降に増加した 長期の増加傾向を可視化 推定個体数(本州以南、分位0.05〜0.95)(環境白書Excel) 取得・CSV化済み(中央値Q0.50をメイン指標に)
捕獲圧の変化(狩猟・許可・事業)が個体数に影響 捕獲構成の変化と総量を把握 ニホンジカの捕獲数(狩猟/許可/指定事業/合計)(環境白書Excel) 取得・CSV化済み(年次スタックで可視化)
(補助)暖冬の広域傾向を県尺度で把握 観測点データと県スケールの整合を見る 都道府県別:年平均気温・年間雪日数(2019)(公表ランキング表由来) 取得済み(2019年は指標が揃っており比較用に採用)
(次版)法令・政策変更が増減に与えた影響 縦線注釈でイベント年と動態を重ねる 雌ジカ禁猟の解除年、被害対策拡充年 等(年表) 収集中(MVPでは注釈候補を列挙)
(次版)生息環境の変化(耕作放棄地、林相) 餌資源・隠蔽環境の拡大仮説を検証 耕作放棄地面積推移(国・県), 森林資源統計 等 後続取得(現時点は候補リスト化)
(次版)都道府県別の個体数・捕獲 地域差の説明力を高める 県別捕獲頭数/解体頭数、県別個体数推定 一部アクセス制約あり → 次版で段階的に拡充

注:天敵(オオカミ絶滅)については歴史的事実として定性背景に位置づけ、定量データは不可(時間・空間の比較対象がないため)。


付録2:Agentモードで使用した主なツール/機能(今回の実作業ベース)

データ入手

  • Webブラウザ操作:環境白書の図表ページからExcel添付に到達/ダウンロード
  • 年別CSVの一括取得(観測点×年):降雪深の年アーカイブを年単位で取得(奈良・新潟・岐阜など)

変換・前処理

  • LibreOffice(headless):古い.xlsCSVへ一括変換.xlsxはそのまま読込)

  • Python(pandas / csv / gzip)

    • 列名正規化(日本語・改行・全角スペースの除去)
    • 和暦→西暦変換
    • ワイド→ロング整形、数値化(欠損は文脈で0/NaN)
    • 日別積雪深 → 年別集計(積雪日数、平均/最大/合計)
  • シェル作業の最小化:ダウンロードとファイル配置(/raw/out)の整理

検証・可視化準備

  • UTF-8 CSVでエクスポート(Tableau/Google Sheets/Pythonの相互運用)
  • Tableau前提のスキーマ(日付/年キー、ロング形式、明示的な単位:snow_depth_mm など)

制約と回避

  • ログインやクッキー前提のポータル、クロスドメイン制約の強いサイト → 一次のExcel/CSVへ直接到達、または代表観測点にピボット
  • 古いExcel(.xls)や多段見出し → LibreOffice変換+正規化で解消
  • 県平均の気候指標は年・項目の欠落がありうる → 定点観測の長期トレンドを主軸に

Discussion