見出し画像

公共工事1,327件を、AIへの指示2回でCSVにした話

はじめに

愛知県の公共工事 1,327件のリストが、AIへの指示2回でCSVになりました。

  • 1回目: 「愛知県の発注予定をスクレイピングして

  • 2回目: 「全シートを統合してCSVにして

それだけです。コードは書いていません。ボタンも押していません。


私は元・愛知県庁の土木職員(神奈川県在住)。退職してから、ひとりで AI(Claude Code)を使って小さなプロダクトを作る挑戦をしています。その途中で起きた1日を、コードと数字と「詰まったところ」も含めて全部残します。

この記事を読み終わったら、あなたが手に入れるもの

  • 自治体の発注予定を自分で集める、AIへの「指示の出し方

  • 1,327件のリアルな分布(入札方式・工種・四半期)── 自社の営業計画と照らせる数字

  • Python だけは入れておけ」と私が言い切る理由

  • AIに丸投げした時に 動いたところ/詰まったところ の本音

  • 中小建設会社の経営者・営業担当で「発注予定の情報収集に毎月数日使っている」方

こんな方に読んでほしい

  • 土木業界で「AIを業務に取り入れたいけど、どこから手をつければいいか分からない」方

  • 「スクレイピングって聞いたことはあるけど、自分には関係ないと思っていた」方


── スクレイピングは「AIが世に出る前からある技術」

「スクレイピング」を1行で言うと、「Webで公開されている情報を、コンピューターに取りに行ってもらうこと」です。
手作業で1ページずつコピペしている内容を、プログラムが代わりにやってくれます。これはAIのディープリサーチ的なものではなくて、AIが世に出るずっと前からある技術です。プログラミング(Python)でコンピューターにやらせる作業で、一昔前はエンジニアでないと手が出せませんでした。
それが、いまは Claude Code に 日本語で指示するだけ で動いてくれる時代になりました。


何を頼んで、何が起きたか

私が Claude Code にした指示は、おおまかに2回だけ。

  1. 「愛知県の発注予定をスクレイピングして」

  2. 「全シートを統合してCSVにして」

これだけで、Claude Code はスクリプトを組んで勝手にやってくれました。


動いた3つ・詰まった2つ(両面提示)

うまくいったところだけ書くと「魔法」みたいになるので、両方書きます。

✅ 動いた3つ

  1. 公開状況の自動調査 ── 「愛知県の発注予定はどこにある?」と聞いたら、Claude Code がWebを見て公開ページを見つけてくれた

  2. Excelファイルのダウンロード ── curl で1リクエストだけ。利用規約を確認した上で実行

  3. 14シートの一気統合 ── ヘッダ行が3行目だったり、空白列が混ざっていたり、というExcelあるあるを Claude Code が全部処理

⚠️ 詰まった2つ

  1. 最初は別の自治体で試して詰まった ── 横浜市の建築保全公社は PDF のみで、Excelより難易度が一段上がる。今回は愛知県(Excel配布)に切り替えて成功

  2. 「番号」列の判定がシートによって違った ── 一部のシートは「番号」列が文字列で入っていて、最初は集計から漏れた。pd.to_numeric(..., errors="coerce").notna() で揃えて解決

結論: AIに丸投げ=完成、ではありません。「データの形を見て、AIに伝え直す」 の作業は人間側に残ります。ここが楽しいところでもあります。


まず分かったこと ── 自治体の発注予定は Excel が多い

Claude Code が最初に調査してくれた結果、自治体の公開状況はこんな感じでした。

  • 愛知県 建設部門:Excel + PDF

  • 愛知県 住宅供給公社:PDF のみ

  • 横浜市 建築保全公社:PDF のみ

  • 横浜市 入札のとびら:Web検索システム

  • (多くの自治体):Excel または PDF

HTMLの表として直接見られる形は、少数派でした。Excel または PDF で配布されているケースが大多数。
Claude Code は自分で Web を見て「Excel配布だ」と判断したら、コードを組み直してしっかり取り直してくれます。


取れた結果 ── 1,327件のCSV

愛知県の建設部門が公開している「令和8年度第1回 公共工事発注見通し一覧表」が今回の対象。
建設部門公共工事等の発注見通し情報 - 愛知県
このExcelファイル1つに、14シートあって、合計1,327件の工事予定が入っていました。

事務所別の件数

  • 尾張建設:182件

  • 東三河建設:152件

  • 西三河建設:148件

  • 豊田加茂建設:144件

  • 新城設楽建設:133件

  • 公共建築課:108件

  • 知多建設:107件

  • 一宮建設:105件

  • 知立建設:94件

  • 海部建設:78件

  • 公営住宅課:30件

  • 三河港務所:24件

  • 衣浦港務所:17件

  • 航空空港課:5件

  • 合計:1,327件

中身のサンプル(先頭3件)

1. 県営名古屋空港エプロン舗装等補修工事

  • 事務所:航空空港課

  • 場所:西春日井郡豊山町

  • 入札方式:指名競争

  • 時期:第1四半期

  • 規模:4,800万円以上3億円未満

2. 県営名古屋空港滑走路ゴム除去工事

  • 事務所:航空空港課

  • 場所:西春日井郡豊山町

  • 入札方式:指名競争

  • 時期:第2四半期

  • 規模:800万円以上3,000万円未満

3. 県営名古屋空港航空灯火・電力監視制御設備更新工事

  • 事務所:航空空港課

  • 場所:西春日井郡豊山町

  • 入札方式:一般競争

  • 時期:第2四半期

  • 規模:8,400万円以上6億円未満

これが1,327行ぶん、CSVとして取り込めました。


取れたデータから見えた、3つの傾向

1,327件を眺めてみると、面白い分布が出てきました。営業計画の組み立てに直結する数字です。

傾向1: 指名競争が61%、一般競争より多い

  • 指名競争:809件(61.0%)

  • 一般競争:512件(38.6%)

  • 随意契約:6件(0.5%)

公共工事のイメージは「一般競争」かもしれませんが、件数ベースでは 指名競争のほうが多い。指名願いを出しておく価値が、この1つの数字だけでも見えます。

傾向2: 土木一式工事が65%、市場の太さがそのまま件数に

  • 土木一式工事:860件(65%)

  • 舗装工事:119件

  • 電気工事:72件

  • 建築一式工事:50件

土木一式が3分の2を占めます。「土木屋の市場の太さ」が、そのまま件数に出ています。

傾向3: 上半期に約8割が集中、年度後半は3%

  • 第1四半期:441件(33%)

  • 第2四半期:577件(44%)

  • 第3四半期:273件(21%)

  • 第4四半期:36件(3%

上半期に約8割が集中。年度の前半が、受注機会の山。「年度末に取り急ぎ」のイメージとは逆で、営業の最盛期は4〜9月ということが、数字で出ました。


Python、使ってますか?

Claude Code はスクレイピングにおいて Python(パイソン) というプログラミング言語を使います。Python が、Excelを開いて、データを取り出して、CSVを書き出してくれた、というイメージです。
自分で書く必要はないけれど、Python が動く環境はパソコンに必要です。 ここだけ、最初の一回だけ、頑張る価値があります。

Pythonをパソコンに入れる方法(初心者向け)

Python を知らない方へ。Python は、Claude Code で仕事をするうえで必須と言える道具です。実感として、いま私は Excel がなくても仕事はできるけれど、Python がないと仕事にならない と感じています。
Windowsの場合

  1. 公式サイト https://www.python.org/ にアクセス

  2. 「Downloads」から最新版をクリック

  3. ダウンロードしたファイルをダブルクリックでインストール

  4. インストール画面の最下部にある「Add Python to PATH」のチェックを必ず入れる(ここ大事)

  5. 「Install Now」をクリック

Macの場合
最新のMacには Python が最初から入っています。ターミナルを開いて

python3 --version

と打って、バージョン番号が出たらOK。
確認
Windows なら「コマンドプロンプト」、Mac なら「ターミナル」を開いて、

python --version

と打ってみてください。Python 3.x.x のような文字が出れば、インストール成功です。
ここまで来れば、あとは Claude Code が全部やってくれます。


なぜ Python が必要か ── Excelより重要なツールになりつつあります

「自分はExcelで十分」と思っている方こそ、ぜひ Python を触ってみてほしいです。

Excelで「無理」だったことが、Pythonで普通にできる

  • 100個のExcelファイルを一気に開いて、特定の情報だけ抜き出す

  • ネット上のデータを定期的に自動取得する

  • 数千行のデータを瞬時に集計する

  • グラフ・レポートを毎月自動生成する

  • AIと組み合わせて、文章や画像を扱う

Excelでマクロを組めばできることもありますが、Python の方が圧倒的に簡単で、応用範囲が広いです。何より、Claude Code のようなAIと組み合わせたとき、本領を発揮します

これからの仕事道具として、必須と思っていい

Python は、これからの仕事において、Excel よりも重要なツールになりつつあります
理由は単純で、AIに「これやって」と頼むと、AIはたいてい Python で返してくるからです。AIが書いたコードを、自分のパソコンで動かせる環境さえあれば、できることは指数関数的に広がります。


一応、Pythonはこう書かれていました

参考までに、Claude Code が書いてくれたコードを少しだけ載せます。読み飛ばしてもらって構いません。「これだけのことを、AI が勝手にやってくれた」 という感覚だけ持ち帰ってもらえれば。

Excelをダウンロードする部分

curl -L -k -o "aichi_kouji_R8.xls" \\
  "<https://www.pref.aichi.jp/uploaded/attachment/614778.xls>"

Excelを読んで、14シートを統合する部分

import pandas as pd

xls = pd.ExcelFile("aichi_kouji_R8.xls")

all_df = []
for sheet in xls.sheet_names:
    df = pd.read_excel("aichi_kouji_R8.xls", sheet_name=sheet, header=2)
    df = df.dropna(axis=1, how="all")
    df = df[pd.to_numeric(df["番号"], errors="coerce").notna()]
    df["担当課名"] = df["担当課名"].ffill()
    df.insert(0, "事務所", sheet)
    all_df.append(df)

merged = pd.concat(all_df, ignore_index=True)
merged.to_csv("aichi_kouji_R8_全件統合.csv", index=False, encoding="utf-8-sig")

全部で30行ほど。これを Claude Code が書いてくれて、私は「実行して」と言っただけです。


このデータ、何に使えるか

このCSVだけでも、たとえばこういう使い方が考えられます。

  • 自社の地元(例: 尾張建設の管轄)に絞って、来期の工事候補を一覧化

  • 自社の工種・規模感(例: 土木一式・1.5億〜3.6億円)でフィルタ

  • 第1〜第2四半期に出る案件を時系列で並べて、営業優先順位を作る

  • 過去の見通しと突き合わせて、本当に出た案件/出なかった案件を比較

この情報、自社で集めるのは大変だけど、誰かが整えてくれていたら便利」というやつです。個人と AI で、こういう道具を一つずつ作りたい と思っています。


倫理メモ

念のため、今回の取り組みのスタンスを書いておきます。

  • 取得したのは 公開されているExcelファイル1つ(1リクエスト)

  • ユーザーエージェントを明示

  • robots.txt と利用規約は事前に確認

  • 取得したデータは、本記事内では集計値・先頭サンプルのみ掲載

  • 個人や特定企業を不利にするような使い方はしない

公開してくれている情報を、便利な形に整えるだけ。これからも、この線を超えないように書いていきます。


まとめ

  • AIへの指示は 日本語で2回だけ、コードは Claude Code が書いた

  • 1,327件の公共工事リストから、指名競争61% / 土木一式65% / 上半期8割集中 という傾向が見えた

  • Python を入れる「最初の一回だけ」を乗り越えれば、AI に丸投げできる範囲が一気に広がる

  • ただし「データの形をAIに伝え直す」人間側の仕事は残る(だから面白い)

「コードを書けるエンジニアだけが使える道具」だった時代は、もう終わっています。


プロフィール

井上浩太郎|土木×AI研究家
神奈川県在住。元・愛知県庁の土木職員。退職後、AI(Claude Code)を使って、ホームページ制作・アプリ・Webプロダクトの制作に取り組んでいます。
AI(Claude Code)を使って、小さなプロダクトを作るのが好き。業界をほんの少しだけ変えるような道具を、ひとつずつ作っていくのがいまのテーマ。その挑戦の過程を、公開日記として note で連載中。
連絡先: [メール/問い合わせフォーム予定]



#公開日記 #土木 #土木業界 #土木DX #ClaudeCode #AI #スクレイピング #Python #愛知県 #公共工事 #個人開発


いいなと思ったら応援しよう!