見出し画像

【町工場DX奮闘記③】文字化けとの終わりなき戦い。「CADポン」を作った話

(②からの続きです)




いよいよ、社長の一言のきっかけになった「ボルトが一瞬で出てくる」を実現する番です。JW_CADに、部品を自動で配置するツール「CADポン」を作り始めました。

メージ画像

Pythonで作って、渡して、詰まる

最初はPython(Tkinter)で作りました。ボルト・H鋼・角鉄・丸鋼・プレートといった部品を、寸法を入力するだけで自動生成できるようにしたところまでは順調でした。JW_CADには「外部変形」という、外部のプログラムと連携できる仕組みがあり、これを使えば、JW_CAD上でクリックした位置に、自作のプログラムが計算した図形をそのまま書き出せます。この仕組みを知った時は、地味に興奮しました。

問題は「相手のPCにPythonが入っていない」ということです。これでは渡しても動きません。そこで、Pythonのインストールが不要なHTA(ブラウザの仕組みを使う形式)に作り直すことにしました。せっかく動くものができても、相手の環境で動かなければ意味がない。当たり前のことですが、これを痛感した出来事でした。

文字化けが、原因不明のエラーを生む

ここから、地獄のような文字コードとの戦いが始まりました。

渡したバッチファイルを実行してもらったところ、こんなエラーが返ってきました。

'さい' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。

日本語が完全に文字化けして、コマンドとして誤動作していたのです。原因は、バッチファイルをUTF-8で保存していたのに、Windows側はShift-JISとして読み込んでいた、という単純だけど気づきにくいものでした。Shift-JISで保存し直して解決しました。

直したと思ったら、また同じことが起きる

ホッとしたのも束の間、今度はHTA本体(CADポンの画面そのもの)でも同じ現象が起きました。部品を選ぶと、日本語が全部文字化けして表示される。踏んだり蹴ったりです。同じ理由でした。1回直したくらいでは、根本原因を潰しきれていなかったのです。文字コードの問題は、1箇所直せば終わり、というものではなく、関わるファイル1つ1つに同じリスクが潜んでいる、ということを、身をもって学びました。


「pip install」がすれ違う、という罠

別の日には、こんな現象も起きました。ライブラリをインストールしたはずなのに、実行すると「モジュールが見つかりません」というエラーが出る。

原因は、PCの中に複数のPythonが入っていて、pipコマンドとpythonコマンドが、別々のPythonを指していたことでした。片方にライブラリを入れても、実行時は別のPythonが使われるので、永遠にすれ違い続けます。厄介なことに、これは一度きりの出来事ではありませんでした。後日、3D関連の別のライブラリを追加した時にも、全く同じ現象が再発しました。python -m pip installという書き方に統一することで、ようやく解決しましたが、同じ罠に二度もはまったのは、正直こたえました。


形そのものが違っていた、という根本的な間違い

トラブルはコードの外側だけではありませんでした。ある時、JIS規格の寸法データを調べ直していて、愕然としました。私が最初に作っていた六角ボルトの図形、正六角形ではなく八角形になっていたのです。見た目にはそれなりにボルトっぽく見えてしまうので、誰にも指摘されるまで気づきませんでした。対辺寸法をきちんとJISの数値に合わせ、正六角形に描き直した時は、地味ですが「ちゃんと基礎から見直さないとダメだな」と反省しました。

この見直しをきっかけに、六角穴付きボルトやスプリングワッシャー、フランジナット、アンカーといった部品も、一気に追加していきました。現場で実際に使われる部品の種類を、想像だけで決めつけず、実在する規格をひとつずつ調べながら実装していく作業は、地道でしたが手応えもありました。

車の絵が、なかなかそれっぽくならない

余談ですが、駐車場のレイアウト図などで使う「車の図形」を作る過程も、地味に苦戦しました。最初に作った車は、単なる八角形に毛が生えた程度の、お世辞にも車には見えない代物でした。実車の寸法比率を調べ、ミラーの出っ張りやフロントガラスのラインを足し、角の丸め方を何度も調整して、ようやく「車っぽい」と言えるシルエットにたどり着きました。小さなパーツひとつでも、それらしく見せるには意外と手間がかかる、ということを実感した部分です。

地味ですがそういう1つ1つの壁を攻略していくと、進んでいる感触は得られ、完成したら素直にうれしいです。

UIも、一度作って終わりではなかった

機能が増えてくると、今度は「使いやすさ」が課題になりました。最初はドロップダウンで部品名を選ぶだけの、味気ない画面でした。これを、部品のアイコンが並んだギャラリー形式に作り直し、クリックすると寸法入力欄とプレビューが出る、という形に一新しました。本業のツールで使われている配色やフォントに寄せることで、見た目の統一感も意識しました。


それでも、直った瞬間は嬉しい

正直、心が折れかけた瞬間もありました。ただ、六角形のボルトが、狙い通りの寸法でJW_CAD上にポンと配置された瞬間は、単純に嬉しかったです。JIS規格の対辺寸法を調べて実装し直した六角形が、正しい形で表示された時は、思わず画面をじっと見てしまいました。

地道な話ですが、こういうバグを一つずつ潰していく作業の積み重ねでしか、動くものは作れないんだな、というのを実感した期間でした。


(④に続きます)


  • Coconala(見積り・ご相談はこちら):https://coconala.com/users/5818480

  • ホームページ(実績・プロフィール一覧はこちら):https://kawakou-blog.com

  • X(日々の発信はこちら):https://x.com/kawakou_dx

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