もう1月も半分以上終わってたわ。
正月は3日頃まで部屋を片付けてた。といっても1日は頑張りすぎたせいか頭痛がして寝てたけど。 完全に片付け終わりはしてないので8割といったところではあるが、残りは物が積み上がっててそう簡単には消化できない。 まあ一部に目を瞑ってもらえば人が入れる程度にはなったのであとは、ぼちぼち減らしていけば良いでしょう。
30MSのリリネルとララネルをパチ組みした。30MSはいじるので基本パチ組みだけしといて、なんかいじり終えたら色とか塗る感じで。リリネルだけ中途半端にスミ入れしてあるけど。
従来より小さめの双子キャラ、といえばかわいい感じかと思いきやかっこいい感じで来た。ララネルはまだ黒基調なのでかっこいい表情も似合ってるが、リリネルはだいぶかわいめのデザインなんだけどスンとした表情とか叫び顔しか入ってなくてちょっと違和感ある。パッケージ絵は笑顔なのにその顔入ってないのズルじゃない?
素肌手足と水着ボディで合わせ目が極力出ないデザインにはなっていたが、これもまた素体が変わってなかなか上手いことになっていた。 腰パーツが左右で合体させる形になってたりするのはなるほどなと思った。 しかし一方で脚は普通に合わせ目出まくるのデザインになってるのが謎。
ララネルはまあいいんだけどリリネルはトップヘビーなのがちょっと落ち着かない。 ヘビーアーマーの脚を付けたらだいぶ似合ったのでいいかもしんない。茶色はアレなので白とかにしたいが。
12月中に、と言って始めたパワーローダーは結局一ヶ月くらいかかって完成しました。
武装やってたらいつまでたっても終わりそうにないので、そこは一旦諦めました。またそのうちね。
前も書いたけど合わせ目消しが結構大変だったのと、色塗りもいろいろやりたくなっちゃって頑張っちゃったので時間がかかった。 あとプラモ作ってばっかりいるわけにもいかないのでプログラム書いたりもぼちぼちやってたのもあるか。
基本的に戦車っぽいよねってことで、ちょうどモデグラで戦車作ろう特集やってたのを参考に。まあ書いてあったやつ全部やったわけでは全然ないけども、だいぶ参考にはなりました。
気になるところがないではないが、結構いい感じにはできたんじゃないでしょうか。 できればもっと傷とかも付けたかったかも。
しかし1/35サイズだと汚しとかチッピングとかやりがいがあっていいですね。 まあこいつも高さ7mくらいありそうなんで足元しか汚れそうな雰囲気しかないんだけども、 1/144だともはや数mmくらいしか汚しようがないとかなるんで……。
1/35ロボが楽しかったのでATとか人型重機とか欲しくなるなあ。いや前から欲しかったけど、しかし作る暇が……。
イベントサイトのユーザー認証にAzureAD B2Cを使おうとしていじってた。
AzureAD B2Cを組み込むのは比較的簡単で……と思ってやったんだが、まあ確かに認証するだけなら簡単だった。 しかし追加の情報を取りたかったりしたらかなり大変なことに。
MicrosoftアカウントやGoogleアカウント、Twitterアカウントでのログインをした時に、AADB2CでのユーザーIDじゃなくてIdP側のユーザーIDを取りたかったんだが、なんかやり方がわからん。IdPが何かは比較的簡単に取れそうなんだけどIdPでのユーザーIDはどうしても返してくれない。 どうもMicrosoft Graphで取得できそうな雰囲気があるんだが、なんかMicrosoft Graph用のトークンが取れねえしどうしたらいいんだ?
いやその前になんかトークン取ろうとするとOmniAuthのOpenID ConnectプラグインがUserInfoが取れねえとかなんとか言ってくる。 UserInfoを取れるURLを設定する必要があるようだが、AADB2Cにはその機能が標準でなくてカスタムポリシーで作らないといけないみたい。 うげえ、めちゃくちゃめっちゃくちゃにめんどうなやつだ。でも仕方ないし基本的にサンプルコピペで取れるはずだから試しにやるか……。
なんとかUserInfoを取れるようにしたんだが、そのあとに結局AADB2Cで認証してMicrosoft Graph用のトークンは取れないのが正しいらしいのがわかった。マジかよ。まあ確かにMicrosoft GraphはMSのサービスで俺が作ったAADB2Cテナントが提供するもんじゃないのでトークン取れるわけないな。うーん。
そもそもカスタムポリシーを使えば外部IdPでのユーザーIDは返せるようになるらしいので、それで取っちゃえばいいじゃない。 ということでUserInfoに含めてみようとするが、どうしても返せない。何故だか全然わからないが、何をどう設定しても返してくれない。 本当に全然わからん……のだが、べつにUserInfoじゃなくて認証できた時に返す値の中には普通に含めることができた。 意味わからんけど動くからこれにするしかないのか。
あとはなんとかカスタムポリシーで外部IdPを使えるように設定し、アプリ側でそれを取れるようにしてデータを移行したり、とかやってなんとか目的は達成できた。
シンプルな使い方をする分には簡単なんだけど、ちょっとなんかしようとするとカスタムポリシーが要求されて大変なことになるなあ。
配信やってるときに喋ったのをテキストに変換してログに残しておきたいなというのを思ったのでやってみた。
しゃべったことを字幕として表示するというのをやってる人はいくらか見かけるんだが、それをログに残してる人は見かけなくてそんなツールもなさそうなので作ってみようかと。 視聴者のレスはログに残ってるんだが、配信者の喋りがログに残らんのであとから見始めたりちょうど見てなかった時に何喋ってたのかなというのが全然わからんのが残念だなというのが動機。
AzureのSpeech To Textは無音のところは課金されないのでお安く済む、という話を聞いて試しに使ってみたところとても簡単に使えそうなのでやってみた。 レスと混ぜて表示したかったのでunacastに入れられるといいのかな?と見てみたが、意外と大変そうでもなかったので早速実装してしまった。 Electronは全然使ってなかったが、NodeJS側のプロセスでマイク入力しようとして動かんなー?としばらく悩んだ以外はだいたいすんなりいって、結局一日で出来てしまった。せっかく作ったのでPullRequestも投げたらそのままマージされた。
しかし実際使ってみてわかったのが、べつに入力が無音でも接続してればちゃんと課金されてしまうということ。あーやっぱそうっすよね。そんな安いわけないよね……。頑張ってクライアント側で音声処理して無音部分は接続しないようにすれば行けるだろうけど、さすがにそれやるにはもうちょい時間かかりそうだ。あと反応は悪くなりそう。
まあ当面はテストなのでいくらかお金かかっても仕方あるまい、と使ってみてるけど、1時間$1かかるのに1回の配信で5時間とかやるので600円とか700円とか持っていかれる。さすがに近いうちになんとかしたいな……。
方法としてはブラウザの音声認識機能を使うかOSの音声認識機能を使うか、フリーの音声認識機能を使うか。
ブラウザ内蔵のはChromeとEdgeくらいしか実装してなくて、どちらも結局クラウドのを使うっぽい?で、Electronからは使えないのでunacastでは無理だ。 OSの音声認識機能はWindows10以降だとやっぱりAzureに投げてるっぽい?しかし無料で使えるし精度もだいぶよさそう。Electronから呼ぶのは……できそうだけど、試してみないとわからないな。 フリーのはやはり精度に難があるらしい。
あとunacastは画面表示用なので、画面にはログとして残るけど、視聴者がテキストとしては遡れないのはいまいちかな。 掲示板に書き込んでしまうという手はあるけど、それはそれとして邪魔かもしんないので悩ましい。 しかしunacastじゃなくて掲示板側に音声認識の機能を実装すれば、Electronの必要はないのでブラウザ組み込みの音声認識が使える。 まあ邪魔かどうかは一旦やってみてから考えてもよかろう。
結構楽しくなってきちゃったけど、いや他にもやるべきこといっぱいあるだろお前って感じだな。だが、だからこそ楽しくなってしまうのだ。