18
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【建築士×ChatGPT】「読み方も分からない技術」で、野良DXFを3秒で解析する爆速ツールをHTML1枚で作った話【2025年法改正】

Last updated at Posted at 2026-01-05

🏗️ はじめに:2025年、建築業界に「激震」が走る

【2026/01/08 追記】最新作(第4弾)を書きました!
社員に開発を丸投げしたら、私のツールが全否定された話です(泣)
👉 【建築士×ChatGPT】教育コスト0円! 「メモ帳」で、社員が勝手に業務ツールを量産し始めた話

はじめまして。東海地区で建築設計事務所を経営している建築士です。
いきなりですが、私はプログラミングの知識はゼロです。Pythonは「ヘビの種類?」だと思っていました。

そんな私が、生成AI(ChatGPT / Claude)とペアプログラミングすることで、「構造計算ソフトが吐き出す"野良DXF"を解析し、負担面積を全自動計算するツール」をHTMLファイル1枚で作り上げました。

この記事では、**「ドメイン知識(建築)× AI」**が生み出した、泥臭くも画期的な技術の裏側を共有します。


🌪️ 背景:なぜ作ったのか?

建築業界の方ならご存じでしょうが、**2025年4月の法改正(4号特例の縮小)により、木造住宅の申請業務が激変します。
平たく言うと、
「今まで不要だった計算書類を、山ほど出さなきゃいけなくなる」**のです。

市販の構造計算ソフトはもちろん導入していますが、今回の法改正で求められる細かな**「柱負担面積」**の算出には、既存ソフトが微妙に対応しきれていませんでした。

  • 既存ソフトから出るのは、ただのDXF図面データ。
  • そこから面積を出すのは、結局手作業…。
  • 「これ、一件ずつ手で計算してたら会社が潰れるぞ?」

この危機感から、**「構造計算ソフトから出たDXFを食わせて、3秒で面積計算書を作るツール」**を自作することにしました。


📦 戦略:なぜ「HTML 1ファイル」なのか?

開発にあたって、私がAIにお願いした絶対条件。
それは**「HTMLファイル1枚だけで動くようにして」**ということでした。

エンジニアの方なら「Pythonで環境構築して…」「Dockerで…」となる場面かもしれません。しかし、私たちのような一般企業(非テック企業)の現実は違います。

  • 社員のPCに勝手にソフトをインストールできない(知識とセキュリティの壁)
  • 黒い画面(コマンドプロンプト)は、一般社員には「怖い」
  • **「ファイルをチャットで送るだけ」**で共有・更新したい

この**「配布のしやすさ(ポータビリティ)」こそが、社内でツールを定着させる最大の鍵だと考えたからです。
結果として、
「メールに添付されたファイルをクリックするだけ」**という最強のUXが実現しました。


⚡ 成果物:HTMLファイル1枚の「魔改造」ツール

完成品をご覧ください。

001.gif

実装された機能

  • 完全ローカル動作: インストール不要、HTMLファイルをダブルクリックするだけ。
  • 野良DXF解析: レイヤー名に依存せず「形状」から柱を特定。
  • 自動面積計算: ボロノイ分割アルゴリズムによる負担面積算出とヒートマップ化。
  • 爆速動作: 数万マスのグリッド計算を一瞬で処理。

🛠️ 開発秘話:AIとたどり着いた「3つの技術的特異点」

このツールの真価は、「実務を知る人間」と「コードが書けるAI」が喧嘩しながら(?)たどり着いた独自のロジックにあります。
もしエンジニアが教科書通りに作っていたら、このツールは使い物にならなかったでしょう。なぜなら、現場のデータは「汚い」からです。

1. 人間と同じ「目」を持つアルゴリズム

~レイヤー名なんて信じるな、「形」を見ろ~

通常のCADプログラミングでは「"Column"レイヤーにあるオブジェクトを取得」といった処理をします。
しかし実務の現場では、レイヤー名がデフォルトの「0画層」のままだったり、壁と柱がごちゃ混ぜだったりします。いわゆる**「野良DXF」**です。

そこで私はAIにこう指示しました。
「データ上の名前なんてどうでもいい。人間が見て『柱(×印)』に見えるなら、それは柱だ!」

このツールは、数万本の線分データの中から、以下の幾何学的特徴を持つものを「柱」として認識します。

  1. 長さがほぼ同じ2本の線分がある
  2. その2本が交差している
  3. 交点が、それぞれの線分の中点付近にある
  4. サイズが100mm〜150mm(建築的に妥当な柱サイズ)

この findPillarsStrict 関数により、どんなに整理されていない荒ぶった図面データでも、**「お前は柱だ!」**と正確にロックオンできるようになりました。

2. 「ドット絵職人」のアプローチ

~ベクター解析の限界をラスターで突破する~

柱の位置がわかったら、建物の外形(外周線)を繋ぐ必要があります。
しかし、単純に「近い点をつなぐ」ような計算(ベクター解析)だと、L字型の建物の「凹み」をショートカットしてしまったり、中庭を勝手に埋めてしまったりします。

ここで私は、AIに行き詰まりを訴え、ある**「発想の転換」**を実装させました。
「図面を一旦、クソデカい『方眼紙(ドット絵)』だと思えばいいんじゃないか?」

  1. 世界をドット絵にする: 高精度の座標を捨て、仮想的なグリッド(方眼紙)を用意する。
  2. インクを滲ませる: 柱がある場所にインクを落とす。さらに柱と柱の間にもインクを流す。
  3. 輪郭をなぞる: 黒く塗りつぶされた領域のフチを、マンハッタン距離(カクカクした線)でなぞる。
  4. 清書: 最後に元の座標にスナップさせて直線に戻す。

「正確さ(ベクター)」を入口と出口に置き、中間の処理を「曖昧さ(ラスター)」で行う。
この「いいとこ取り」こそが、AIだけでもたどり着けなかった、実務家としての最適解でした。

3. 読み方もわからない「謎の技術」で爆速化

~Uint8Arrayって何? おいしいの?~

グリッド計算を実装した当初、処理が重くなる場面がありました。
そこでAIに「もっと速くして!」と無茶振りをしました。

🤖 AI: 「では、通常の配列をやめて『Uint8Array』を使いましょう」

正直、私はその読み方すら分かりません。(ウイント…?)
D3.js や Turf.js といった便利なライブラリもあるそうですが、AIいわく「読み込みが遅くなるから使わない」とのこと。

しかし、「速くなるならそれで頼む!」とGOサインを出したところ、**「TypedArray(型付き配列)」**によるバイナリレベルの計算が実装され、数万マスの処理が一瞬で終わる爆速ツールに生まれ変わりました。

「中身の技術は知らなくても、意思決定(GOサイン)さえすれば、AIが勝手に最高の実装をしてくれる」
これぞまさに、社長(発注者)と優秀なエンジニア(AI)の関係そのものでした。


🚀 結論:日本の生産性は「現場」から上がる

このツールを作って痛感したのは、**「プログラミング知識ゼロでも、ドメイン知識(業務への深い理解)があれば、AIを相棒にして『最強の道具』を作れる」**という事実です。

  • エンジニアは、技術はあっても「現場のDXFがどれほど汚いか」を知りません。
  • 建築士は、現場は知っていても「それを解決するコード」が書けません。

この両者の間にある**「巨大な溝」**を、AIが埋めてくれました。

2025年の法改正はピンチですが、こうやって自ら武器を作れば、逆にチャンスに変えられます。
「市販ソフトが対応してくれない…」と嘆く前に、**「AI、ちょっとこれ作って!」**と言ってみる。

そんな**「市民開発者」**が建設業界に増えれば、日本の生産性はもっと上がるはずです。

もし同業者の方で「そのツール気になる!」という方がいれば、反応いただけると嬉しいです。
(反響があれば、コードの一部解説記事も書くかもしれません!)

👉 【建築士×GIS】Google Maps上で「雨水の流下経路」を1クリック追跡する“HTML1枚”ツールを作った(国土地理院 標高×道路中心線×Cloudflare Pages)


Tags:
ChatGPT 建築 DX JavaScript 個人開発 4号特例

18
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?