見出し画像

86.2023年を振り返って

今年も終わりですね。毎年この時期になると、今年の目標を達成出来たのか、確認するのですが、残念ながら今年は達成できませんでした。そのことについて書きたいと思います。


当初の目標

今年は新しい技術を実際に利用できるレベルにまで持っていくことを目標としていました。

昨年の10月頃から、勉強し始め1月の時点で、基礎部分が出来ていたので、実現出来ると思っていたのですが、結局その目標は達成できませんでした。

会社としては、若返りですね。若い方が活躍できる環境を作ることです。


今まで行ってきたこと

私の現在のメイン業務となっているものの一つに、工場内を走行する装置の動作をシミュレーションするソフトウェアがあります。

1000程の装置が走行するので、搬送効率や追突・渋滞が発生しないように制御しなければいけませんので、その動作確認等に利用します。

今まで、工場内機器の制御をリアルタイムで行うソフトウェア設計に携わる事が多くありました。

リアルタイム制御を行うには、リアルタイムOS(RTOS)が必要で、Windows等の場合は、OSの遅延が大きく正しく制御が行えません。

そこで、QNXというRTOSを利用して開発を行っていましたが、とても軽いOSで1ms周期の処理も安定して動作させることが可能で、制御OSとしては最も素晴らしいOSだと感じます。

その経験を生かして、実際に工場に出向かなくともテストが行える環境を作る事を目標に、シミュレータを作成し始めました。

動作状況を「見える化」するため、現在は2DのGraphicsライブラリを作成して、そのフレームワーク上で動作状況を表現しています。

以下は工場内の一部の状況を再現しているシミュレーション動画です。


装置の動作を正確にシミュレーションすることで、工場内のすべての装置を効率よく動作させる搬送パターン等を確認することが可能です。

今ではこのシミュレータを利用したテストが、テストフローの一部となっています。


目標としていたこと

実用上は2Dの方が分かりやすいので、それで十分ではあるのですがゲームのように3Dで表現できれば面白いと思い、3D Graphics EngineをVulkan APIを利用して、作成し始めました。

Javaで作りたかったので以下のライブラリを利用しました。


3D Graphicsの場合、GLSLというシェーダー言語を理解する必要もあり、一般的な言語と比べ、難易度が高いと感じました。

デバッグが難しい事と、GPUの制御に直接関係するため、グラフィックパイプラインやメモリの扱い、同期方法等、学ぶことが多くありました。

もちろん、既存のUnityやUnrialEngine等を利用すれば、より簡単に実現できるのは理解しているのですが、目的が

「作る事より、学ぶこと」

だったので、独自にAPIを利用して作る事にしました。Vulkanを選んだのは、OpenGLの後継APIという事もありますが、OpenGLではマルチスレッド制御に制限があったためです。

以下は作成したEngineで動作させたテストシーンです。


サンプルの内容について

影にCSM(Cascade Shadow Map)を6Levelとし、カスケード境界を10%ブレンドすることで、境界を目立たなくしています。

また、PCSS(Percentage-Closer Soft Shadows)×32を適用しており、影の品質が高いので重い処理となっています。

PCSSについては以下の資料を参考にしました

https://developer.download.nvidia.com/shaderlibrary/docs/shadow_PCSS.pdf

以下は、PCSSの概念図です。

PCSS概念図1
PCSS概念図2


今回作成したEngineのPCSSには光の拡散係数を追加しています。

上の図を参考に説明すると、BlockerからReceiver間の距離により光の拡散係数を求め、W(Penumbra)とB(Umbra)に乗じることで、より自然に近い影を描画できます。

現実世界では、距離により大気中の微粒子による光の拡散が発生するためです。

光の拡散係数無し
光の拡散係数あり


スポットライトの場合は、LightとBlockerの距離が近いため、Penumbraが増大し、違和感がないのですが、環境光の場合はエフェクトを追加することで、より自然な表現になります。

オブジェクトはPBR(物理ベース)のDeferred Renderingとし、オブジェクトの数が増えた場合を考慮して、Indirect Drawingを行っています。

シーンによるカスタマイズを行えば、実用レベルの速さに持っていける感じがしました。

このEngineを利用して、シミュレーション内の世界を表現することが、今年の目標でした。

会社の経営としては、本来は利益を確保しながら、若返りが出来ればよかったのですが、経営の難しい1年でした。でも、若い方が主軸として活躍できる環境への変化を感じることが出来たので、来年に期待です。


なぜできなかったか

第一に、業務負荷が高かったことが影響しています。その影響で、全ての趣味を辞める決断をしました。

第二に、 LinkedIn に出会ったことです。この先、人生でなにがあるのかわからないので、ある程度自身の学んだことを、記録として残しておきたい思いがありました。

実際に LinkedIn を運用してみると、記事を書くことの楽しさもそうなのですが、多くの方とつながり、実際にお会いすることができ、この経験が今までにない新鮮さがありました。

そして、実際にお会いした方々というのは、私が言うのはおこがましいですが、とても素敵な方ばかりでした。

このような方々が、これほど多く居られるということに

「暗い話題もおおいけど、この世界もすてたもんじゃないな」

と、なぜか偉そばって、想いにふけっていました(笑)

でも、これは心の底からの想いで、今までの人生で出会ったことのない、尊敬できる方々ばかりでした。

初めはSNS上での出会いなんて・・・と、思っていたのですが

「あぁ~なんでもっと早くに始めなかったんだろうか」

と、強く後悔しました。

結局、 LinkedIn を運用するにあたって、時間を取られることもあり、当初の目標をそっちのけで、業務と記事の作成に時間を費やすこととなりました。


多くの学びと変化

多くの時間を費やしましたが、その分学びも多くありました。

特に大きかったこととして、落語との出会いです。きっと、 この活動をはじめなければ出会うことはなかったと感じます。

そして、実際に初めて鑑賞した落語が、喜楽館ベストアワードで優勝された 桂 雀太さんだった事も何かの縁なのかもしれません。

落語の鑑賞はゲーム等と異なり、時間を多く消費しない事が今の自分に合った趣味だと感じたので、毎月1回は継続して繁盛亭と喜楽館には足を運びたいと思います。

きっと、この趣味は一生続くのだと直感的に感じます。

HPを新しく作り替えた事も、一つ大きな出来事でした。

その過程で、安い料金で数分の共有動画が簡単に作成できる、Gyazoというサービスに出会えました。非常に使いやすいのでこの記事でも使わせて頂いてます。

手軽に動画で伝える手段を手に入れたことが、大きな価値だと感じます。

何か新しい事を行うと、学びにつながる、貴重な経験を身をもって実感した、1年でした。


まとめ

辛いこともあれば、楽しいこともある、これが人生だという事をしみじみ感じた1年でした。

人生って、辛いことや楽しいことはあって当然だと思います。それは避けて通れないと思うので、そうであるならば少しでも多くの楽しさを求めて生きていくのが、幸せへの道なのだと感じます。

楽しい事があれば、辛いこと忘れられますからね。

あとは、閉ざして守るのではなくオープンにしていくことも同様に大切だと思います。

オープンにするってことは、ありのままで居るってことですね。これが、精神的にも一番楽です。

もちろん、オープンにすることでネガティブな思いを引き込むこともあるでしょう。でも、守る不安と天秤にかければ、ありのままのが楽なのは間違いないです。

皆さんも、ありのままの自分を表現できる場を探してみてください。自身の助けとなるはずです。

来年も引き続き LinkedIn で伝えて続けていきたいと思います。

改めて、今年出会った多くの方々への感謝と、良い年越しを迎えられる事を願っております。

全ての方へ、貴重な1年をありがとうございます。

来年もどうぞよろしくお願いいたします。

お気持ち感謝に尽きません🙇‍♂️