はじめに(自己紹介)
私はいわゆるプログラマーではありません。
建設業界に身を置き、その中でも土を専門にしています。
今は少し違いますが、仕事は地盤調査(いわゆるボーリング調査)や地盤改良の設計、液状化判定などです。
そんな私ですが、土が好きでこの道に進んだかというと少し違います。
土よりPCの方が何倍も好きです。
今、私は民間企業で技術者兼研究者のような仕事をしています。
もともと大学時代から研究者になりたかったです。
実務も知りたくて民間企業に入社しましたが、今でもその夢は持ち続けています。
建設業界の研究(特に地盤)は実験系と数値解析系に大別されます。
解析系の研究を学生時代に経験しPCが好きになりました。
理由としては実験は設備を揃えたり、試料を揃えたりと準備が大変ですが、解析系ならPC1台用意して部屋にこもっていればできるからかもしれません。
なぜ有限要素解析の実装をするようになったか
プログラマーの人は理解できないかもしれませんが、建設業界では数値解析の専門家でも基本自分で実装しません。
市販のソフトウェアを使うことがほとんどです。
その市販のソフトウェアも大学の先生がFORTRAN77で実装したソルバーを組み込んでいることが多いです。
よって、ソルバーは古くブラックボックスになっています。
これは深刻な問題で、経験の浅い技術者は解析結果が正しいかなどを判断することが難しいです。
なので私は数値解析をする人は、1度は自分が使っている解析を自分で実装し中身を理解すべきと思っています。
今回有限要素解析の実装は中身の理解が最初の動機です。
ちなみに仕事ではありません。
休日に部屋にこもって作業しています。
皆さんはプライベートは遊んだほうがいいと思います。
Fという液状化解析ソフトがあってだな
某液状化解析ソフトが某大学の先生を中心とした研究会から出ており、実務で広く使われています。
しかしこのソフト、個人的にはその背景にある理論に納得がいっていません。
詳細は専門的な話になるので避けますが、もっといい理論(人はそれを拡張下負荷面回転硬化モデルと呼ぶ)があるのになと思っています。
もっと自分が納得できる理論を導入した解析をして、自分の考えが正しいと立証したいという方向に目的が変わっていきました。
なぜRust???
最初は友人に「これからの時代はRust一択!」と言われたのがきっかけです。
深い理由はありません。
後述しますが、今ではRustで良かったと思っているので、この友人には今度一杯奢ろうと思います。
あれ?RustってGUIも作れるくね?
ある時ふと思いました。
即ChatGPTに聞いてみましたが、簡単なものなら個人開発でも作れそうでした。
このあたりから目的が自分用のプログラムから他の人に使ってもらえるプログラムに変わりました。
なんとなくPythonはやだな程度で始めたRustですが、ここにきてRustである理由ができた気がします。
モチベーションも段違いに上がりました。
ChatGPTぱねぇ
最初に書いたように私はプログラマーではないので、Rustの基礎くらいは勉強しましたが、お作法には疎いです。
物理が専門の人ならわかると思いますが、数値解析は基本Fortranで記述されています。
私もFortranを習ってきた人間なので、Rustで書いても文法がFortranチックです。
これだとわかりにくいなーと思っていたところにChatGPTが颯爽と駆けつけてくれました。
ChatGPTに色々聞きながらRustっぽい書き方を勉強中です。
どこまで進んでいるか
①Fortranっぽくとにかく書く→②難しい理論を一つ追加する→③プログラムが正しいか検証する→④Rustっぽく書き換える→⑤GUIを実装する
上の流れでやろうとし、今は④の途中です。
どこが楽しいか
FEMの実装はネットに例がたくさんあるのでそれを書き直すだけで大して楽しくはありませんでした。
(弾性体は過去に実装したことがありますし)
それよりも自分の領域外であるRustっぽいプログラムに直す作業がとても楽しいです。
今後の予定のGUI実装は早くやりたくて仕方ないです。
自分の専門外のことを吸収するのは楽しいですね。
今後の目標
地盤技術者をやめるつもりはありません。
今のプログラミングの勉強も続けたいと思います。
最終的に地盤の知識がありプログラミングの知識もある、地盤技術者とプログラマーの中間のような変な技術者になりたいと思っています。
やっぱり数値解析は1度実装すべき
この意見は変わりません。
今はプログラミング言語も開発環境も簡単に整うのでやりやすいと思います。
技術者は日々勉強です。
レガシーコードとの付き合い方
自分がいくら頑張ってソフトウェア開発してもレガシーコードは今後も残っていくでしょう。
レガシーコードを否定するつもりはないですが、いつかは更新しなければいけないはずです。
これからの技術者に必要なのはレガシーコードを読み、新しいものに書き直すことではないでしょうか。
自分はFortranから比較的新しいRustまでを知っている(変な)地盤技術者としてその重要性を発信し続けたいと思います。
最後に
いつまでも あると思うな 親とコンパイラ