農水省の市況データ、Claude Code に雑に投げたら全部やってくれた話

AI、データサイエンス

現在主催しているスマート農業勉強会で、アプリの開発をしているのですが、その関係で、以前から農水省が公開している青果物の市況データを手元で触っていました。データの存在は知っていたし、ダウンロードして眺めたこともあったのですが、「ちゃんと分析しよう」となるとそれなりに準備が必要で、なんとなく後回しにしていました。

最近 Claude Code を使い始めて、試しにこのデータを題材に雑に指示を出してみたところ、思っていた以上のことをやってくれました。データの構造の把握、分析、可視化、HTMLレポートの生成まで、ほぼ会話しながら進めただけです。今回はその体験をそのまま書いておこうと思います。

まず、フォルダ名から始まった

最初にやったのは、データを保存するフォルダを作ることです。「農水省のサイトから市況の生データをダウンロードするフォルダを作りたいので、英語名を考えて、フォルダを作成してください」と投げたところ、こんな返答が来ました。

maff_raw_market_data という名前を提案します。maff は農水省(Ministry of Agriculture, Forestry and Fisheries)の略称、raw は加工前の生データ、market_data は市況データを示します。

そのままフォルダを作ってくれました。こういう「命名の根拠を説明してくれる」ところが地味に好きです。自分で考えると意外と悩むので。

データを開けたら ZIP だった

つづいて農林水産省のウェブサイトの「青果物卸売市場調査(日別調査)」(https://www.seisen.maff.go.jp/seisen/bs04b040md001/BS04B040UC020SC001-Evt007.do)からダウンロードしたファイルを Claude Code が読もうとしたところ、すぐに「これCSVじゃなくてZIPですね」と気づきました。拡張子は .csv なのに、中身は ZIP 形式で、さらにその中に日付ごとの CSV が複数入っている構造です。

2025_04_上旬.csv(実はZIP)
  └ 20250401ky.csv   ← 2025年4月1日・全国野菜
  └ 20250401kk.csv   ← 2025年4月1日・全国果実
  └ 20250401ty_1301_tokyo.csv  ← 東京市場・野菜
  └ 20250401ty_2701_oosaka.csv ← 大阪市場・野菜
  └ ...(市場ごとに続く)

さらに文字コードが Shift-JIS だったのですが、これも自分で検知して対処してくれました。こちらは何も指示していません。「開いたら文字化けしていたので Shift-JIS として読み直しました」という感じで、勝手に解決されていました。

こういう「よくある罠」を自律的に乗り越えてくれるのは、実際に使ってみると相当助かります。

「いい感じに分析して、可視化も」で6枚グラフが出てきた

データの構造が把握できたところで、「なんかいい感じに市況データを分析してください。可視化も」とだけ伝えました。基本は任せる、という指示です。

しばらくすると、6枚のグラフが生成されました:

野菜総計の日別取引量・価格推移(時系列)

    主要野菜8品目の月別平均価格推移(折れ線)

    品目×月の価格ヒートマップ(旬の可視化)

    主要5品目の産地別取引シェア(円グラフ)

    価格変動性ランキング TOP15(変動係数)

    主要4品目の月別価格分布(箱ひげ図)

      「いい感じに」という雑な指示に対して、どの切り口で見るかを自分で考えて選んでくれています。「取引量上位品目を先に出して、それをベースにヒートマップと箱ひげ図を作る」という分析の流れも、こちらが設計したわけではありません。

      グラフと一緒に、こんなサマリーも出力してくれました:

      分析期間  : 2025-04-01 〜 2026-04-10
      総営業日数: 272 日
      品目数    : 54 品目(野菜)
      
      野菜総計 価格統計(円/kg):
        平均: 275.7
        最高: 388.0  (2025-09-03)
        最低: 185.0  (2025-09-17)
      
      取引量 TOP5:
        1. キャベツ      計 429 百万kg  平均  91 円/kg
        2. たまねぎ      計 345 百万kg  平均 180 円/kg
        3. はくさい      計 344 百万kg  平均  78 円/kg
        4. だいこん      計 256 百万kg  平均 103 円/kg
        5. ばれいしょ    計 202 百万kg  平均 235 円/kg

      「市場間比較をHTMLレポートで」も一発だった

      次に「市場間比較をして、HTMLファイルでレポートを書いてください。内容は任せます」と投げました。

      このとき Claude Code がやったこと:

      • 37本のZIPから、全14市場分のCSVを展開・結合(520,121行)
      • 市場ごとの取引量・価格を集計
      • 東京市場を基準にした価格比(東京比%)を計算
      • 各市場と東京の価格相関係数を算出
      • グラフ6枚を生成してbase64でHTMLに埋め込み
      • スタイル付きのHTMLレポートを1ファイルに出力(637KB)

      生成されたHTMLは、一部画像が表示されないエラーがありましたが、基本的にはブラウザで開くだけで完結していて、外部ファイルへの依存がありません。KPIカードや色分けされた表、インサイトのコメントまで含まれています。

      ここで地味に感心したのは、14市場を「北から南の地理的順」に並べていたことです。こちらは特に指示していませんでしたが、「市場間を比較するなら地理的な並びにする」という判断を Claude 自身でしてくれていました。

      使ってみて感じたこと

      指示は雑でよかった

      「英語名考えて」「いい感じに分析して」「HTMLレポートにして」——こんな粒度の指示でも、やることを自分で決めて進めてくれます。最初から分析設計を全部決めなくてよいのが、探索的なデータ分析との相性がいいと感じました。

      途中の判断を見ていると面白い

      文字コードの自動検知、ZIPの入れ子構造への対処、地理的な市場の並び替えなど、こちらが気づいていなかった判断をいくつかしてくれていました。「なぜこうしたか」を説明してくれるので、結果だけでなくプロセスも把握できます。

      データの前処理が一番助かった

      Shift-JIS、ZIP入れ子、政府系フォーマット特有の罠——こういう「やる気を削ぐ作業」を勝手に乗り越えてくれるのが、実際のところ一番助かりました。分析の本題に集中できます。


      おわりに

      農水省の市況データ自体は以前から公開されていたものです。データが変わったわけではなく、アクセスのコストが下がったということだと思います。「ちゃんとやろうとすると大変」だったものが、「とりあえず投げてみる」で動くようになった感覚です。

      コメント

      タイトルとURLをコピーしました