昔、少しTRPGをやっていたこともあってサイコロを転がすという行為が好きだ。
記憶にあるごく初期のプログラム体験も掲示板CGIスクリプト*1にサイコロを振る機能を追加した事だ。
今やオンラインでのTRPGプレイは当たり前のもので、それをサポートするダイスボットは欠かせない存在だ。
が、別にそういう実際に便利なボットを作りたい訳ではなく、単にサイコロを振りたいときに振れるようにできるだけのものにしたい。
この思いは数年前からあったのだけれど、最近高まってきたので実行に移した。
大分昔に物理でダイスを振るボットを作りたいなぁ、って思っていたのだけれど、作ってなかったので今度こそ作ろうと思う。
— 光電/7474 (@koudenpa) 2020年9月8日
のでとりあえず電動ダイスとラズパイとカメラ買った。
作っているダイスボット
最終的には以下のような構成のボットにしたい。
自分は普段Twitterで雑多なつぶやきをしているので、その延長でサイコロを振れるようにする。
Twitterでボットにつぶやいたら紆余曲折を経てどこか(僕の自宅)にある電動ダイスが動いて、その出目がまた紆余曲折を経てTwitter上で返信される形。
このうちユーザーインターフェースの部分(図中のAzure上のもの)はざっくり作ってあって、 @RealDiceBot として動いている。
異常系処理を完全にサボっているので死んでいたり、開発中で動いてないことも多いけれど、疑似乱数のダイスをTwitterで振ることはできている。
今後は実際にサイコロを振る部分(図中のRaspberry Pi上のもの)を作っていきたいと思っている。
IT要素技術
ここからは要素技術の話。ぼんやり考えていることを書きつらねる。
個々の要素技術でやろうとしていることは『やってみた』に毛が生えたようなもので、こいつはすげぇ、というものはない。
自分は興味があることをやってみることが好きなので、試すこと自体が目的になっている。とはいえ稀に仕事で役立つこともある。浅くても色々触っていると『あそこではこんな感じだったな』と参考にする引き出し程度にはなるのだ。
- AzureでIoT Edgeにプログラムを配信したい。
- Greengrassなクリリンが太陽拳するまでを支える技術 - koudenpaのブログ でAWSがどんな感じかをやってみたのでAzureもやってみる。
- これをやるにはコンテナに触れる必要があるのでその点も都合がいい。
- エッジでの画像認識も一応やる。
- Bot Framework v4 を触る。
- v3 の頃に触ったことがあるのだけれど大分変っているみたいなので。
- Azureのリソースは全部ARMテンプレートで構成する。
- すでに破綻した。ニッチなリソースは作れないこともある。今回はBot Serviceのチャンネルが作れなかった。
- ARM テンプレートを使用してチャットボット用の CI/CD パイプラインを構築する - Azure Example Scenarios | Microsoft Docs この辺を見てREST APIの呼び出しも組み合わせればパイプラインを組めるっぽいけれど、面倒くさいのでパスする。
- .NET(C#)だけでソリューションを構成する。
- 統一世界が好きなので。
- エッジ向けのモジュールは厳しいかも。OpenCVとか使うにはサンプルとして提示されているPythonと比べて面倒ごとが多そう。
- 気が向いたらCosmos DBでイベントソーシング
- 今回データの保存は大分捨ててるので、気が向いたらやってみようかな、くらい。多分やらない。動いたら満足する。
こんなところかな。
ここでやっていっている。
先はやや長そうなので構想と現状を少しまとめてモチベーションを新たにした次第。
これはモチベーション上はそれなりの危機だった。出鼻をくじかれたというかなんというか。行為がアホなので馬鹿か? としか言えない。