管割シンプル

水道管の設計がSaaSになりそうと作る気満々だった話

社会人の先輩と飲んだ時に、水道管の管割を自動化できないかという話になりました。

管割とは

管割とは、配管計画のことです。
どのように、どんな水道管をつなげていけば最も効率の良い配管になるのかきめる作業。

出典:http://www.jpinfo.ne.jp/R11movie/honkan.htm

こんな図を作るらしいです。
手書きで試行錯誤してパズルのように紙に描き込み、完成したらCADで図に起こすらしい。

どこを自動化するか

管割の手順はほぼ決まっていて、完成図もほぼ一意にきまるという話でした。

水道管が通らなければいけないチェックポイントを指定

それらを結ぶ最短のルートを提示

各ルール(水圧や長さ時計算で色々書くべきことがある)に則って図面を出力

というツールを作ろうかなと思っていました。

実は自動化困難…?

ところが、よくよく聞くと、

出典:http://www.aam.co.jp/business/water.html

上図のような複雑な図も全然あり得るという話になってきました。
複雑でもいいのですが、自由度が高いところで言語化できないルールがあると、アルゴリズム化が困難なのです。
マンホールにつなげる部分はメンテナンスのしやすい配管にする、だとか。
障害物のよけ方みたいなところも同様でした。


インタラクティブな作画ツールにしよう


自動化がなかなか難しそうなので、インタラクティブな作画ツールにしようと思いました。
ドラッグで管を引っ張ったり、右クリックのメニューからチェックポイントや曲がる地点を作れたり。
色んな便利そうな機能を考えました。

あとは実装について、僕のスキル的にもブラウザ上で動くものがいいなと思い、
Javascriptで作図するならCanvasがいいな、
Canvasに描いた図をオブジェクトとして認識できるライブラリが欲しいな、
パワポみたいに、近くに同じくらいの高さのオブジェクトがあったら自動でそろえる機能欲しいな、
そういう判定関数作らないとな、
などなど考えておりました。

ちなみに、Canvasのライブラリはかなりたくさんあるっぽいです。
シンプルで使いやすそうなのは、Konva.js(描いたオブジェクトをドラッグ移動できたり)とCreate.js(オブジェクトをグループ化したり)、あたりかなと調べて分かりました(使ってないので何とも言えないですが)。
あとはゲームにも使われているWebGLっていうライブラリがハイクオリティな3D図も描画出来て、インタラクティブですごすぎました。
(例 : http://clockmaker.jp/labs/140104_away3d_ts_fires/index.html)
いつか使いたい。

ブラウザで作図する意味を再検討

いったん現実に戻って、ブラウザでの作図のメリットを考えてみました。

まず、手書きの図をCADで図に起こす作業がなくなること。
簡単に水道の図が描けること。
あとは、戻る、進むボタンなどでやり直しが効いたり、候補をとっておけること。

で、気づいたんですが、CADで図にする作業がなくなること以外、あまりメリットないんじゃないかと。
水道の図が簡単に描けると言っても、例えば水道管を3つ描く必要があっても、×3と描くことも多いらしいですし、
マウス合わせ

右クリック

水道管を選択

作画クリック
のような手順を考えると、紙に手書きが最も効率が良いのではと思いました。
候補をとっておけることに関しては、まだメリットはありますが、コピーをとったり、部分的に作図したりで解決できそう。

結論

試行錯誤で配管計画を立てるところは、実は今のままで十分効率化できているのではないか。
それなら手書き図をCADで図に起こすところは画像認識が最適なのではないか、ということに落ち着きました。

クライアント側が

・何を自動化してほしいか(ボトルネックがどこか)厳密には分かっていない
・どんな形で自動化してほしいかが漠然としている
・自分の普段の作業を上手く言語化できていない(何が機械的な作業か、そのアルゴリズムは)

場合が多くありそうだなと思った次第です。

まとめると、

何(ボトルネック ⇒ ツールで解決する課題)を
どうやって(普段の作業手順 ⇒ アルゴリズム)
どんな風に(現状のデメリット ⇒ ツールの仕様)
解決するか

てな感じですかね。
これらをきちんと会話の中で引き出さないとといけないなと思いました。
これらは当たり前のことですが、普通の会話の流れからだとなかなか意識するのが難しいと感じました。

自動化だったり、デジタル化だったり、とりあえず僕のアルゴリズムで人の役に立てたらいいなと思いました。


お読みになっていただきありがとうございます!
事業(アプリ開発)日記を書いておりますので、ぜひまた読んでください!

この記事が気に入ったらサポートをしてみませんか?