公共工事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回だけ。
「愛知県の発注予定をスクレイピングして」
「全シートを統合してCSVにして」
これだけで、Claude Code はスクリプトを組んで勝手にやってくれました。
動いた3つ・詰まった2つ(両面提示)
うまくいったところだけ書くと「魔法」みたいになるので、両方書きます。
✅ 動いた3つ
公開状況の自動調査 ── 「愛知県の発注予定はどこにある?」と聞いたら、Claude Code がWebを見て公開ページを見つけてくれた
Excelファイルのダウンロード ── curl で1リクエストだけ。利用規約を確認した上で実行
14シートの一気統合 ── ヘッダ行が3行目だったり、空白列が混ざっていたり、というExcelあるあるを Claude Code が全部処理
⚠️ 詰まった2つ
最初は別の自治体で試して詰まった ── 横浜市の建築保全公社は PDF のみで、Excelより難易度が一段上がる。今回は愛知県(Excel配布)に切り替えて成功
「番号」列の判定がシートによって違った ── 一部のシートは「番号」列が文字列で入っていて、最初は集計から漏れた。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の場合
公式サイト https://www.python.org/ にアクセス
「Downloads」から最新版をクリック
ダウンロードしたファイルをダブルクリックでインストール
インストール画面の最下部にある「Add Python to PATH」のチェックを必ず入れる(ここ大事)
「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 #愛知県 #公共工事 #個人開発
