0911
仕事は一つの山を越えた。山を越えたというのは正確ではないか。別にこれから下山するわけではない。ハードルを一つ跳んだ、くらい。
大学院時代の同期とひさびさに会って飲んだ。下北沢で降りたら出口周辺が全然変わっていて、なんか間違えたかと一瞬思った。駅ってこんなに変わることあるんだな。あまり記憶にないかも。前に東北沢もけっこう変わってたけど。
寝ます。明日からは明日からでリリースに向けての準備をしないといけない。
仕事は一つの山を越えた。山を越えたというのは正確ではないか。別にこれから下山するわけではない。ハードルを一つ跳んだ、くらい。
大学院時代の同期とひさびさに会って飲んだ。下北沢で降りたら出口周辺が全然変わっていて、なんか間違えたかと一瞬思った。駅ってこんなに変わることあるんだな。あまり記憶にないかも。前に東北沢もけっこう変わってたけど。
寝ます。明日からは明日からでリリースに向けての準備をしないといけない。
いそがしいそがし。仕事が慌ただしくて大変だが、ようやく面白くなってきたなという感じもある。まあでも、ずっと忙しいのは勘弁してほしいな。
雪の結晶シミュレイタをGitHubに公開した。してどうするというわけでもないが。
https://github.com/necocen/snowflake
公開するにあたって一応ノイズ項も実装したり、カメラを回転させて見栄えを改善した。動画も撮ってREADMEに載せた。まあ、見てもらってどうなるというわけでもないが。
STLファイルへの出力について考えていた。もともとが三角格子なので、naïveな方法でよければわりと簡単に出力できそうな気がする。週末にでもやろうかな。
寝ます。明日も忙しいが、夕方は早めに切り上げて大学院時代の同期と飲む。
仕様の問い合わせに応じたり手順書を書いたりNotion職人をやったりしていた。Notionのアンチなのに職人をやるのは変な気がするが、結局のところ問題が解ければいいという考えかたはある。アンチなのでこんなものにロックインされていくのは悪手ではないかとも思うが……。
雪の結晶シミュレイタは、グレースケールでの可視化に成功した。最初はすべてのセルに対して別々にマテリアルを用意してセルの値の変化に合わせて色を変更するようにしていたのだが、それを1000x1000グリッドでやると初期化に失敗するらしく(原因は不明)、仕方ないのでセルの値を256階調に量子化して、あらかじめ作成した256種類のマテリアルの中から対応するものを都度アサインする方式にしたらうまくいった。
パラメータをいろいろいじるとなかなかいい感じの雪片が出てくる(が、物理的にどういう過程に対応するのかはよくわからない)。今度はこれを3Dプリンタで出力できるようにSTLファイルにするなどを考える。出力するのかは知らないが。その前にそろそろGitHubに上げようかな。
寝ます。明日はとても忙しそう。
朝から友人の家に出掛けていってトウモロコシを食べる会をやった。友人の子たちも集まってジグソーパズルなどをしていた。わかっていたことだが、やはり他人の子というのはうまくコミュニケイションしづらいな。自分に子ができて慣れてきたら、そういう場合の声の出し方みたいなのもわかるようになるだろうか。
話の流れでM-1グランプリ(2018年)を観たりしていた。人間が採点するってのはまあ、よく言えばドラマだが、それはよく言い過ぎじゃないのかという気もするなと思った。
夜は雪の結晶シミュレイタをやった。一応ノイズ項以外は実装できて、f32の精度程度を除けばではちゃんと質量も保存するし、Claudeに訊いたら最適化もそれなりにできた。
いまは描画をオンオフからちゃんとセルごとの氷の質量に応じた色分けにしようとしているが、これはまだうまくできていない。bevyのことをもうすこし深く知る必要があるのだろう。
寝る。来週前半は忙しさのピークか。
ちょっと放置していた雪の結晶シミュレイタに手を入れていた。まずリファクタをして、シミュレイションロジックをプラグインとして独立させたり、シミュレイションをタイマーではなく別スレッドでループ実行させるようにした。後者のほうはメリデメあるけどまあ。
それで別の論文の手法を実装しようとしている。とりあえず手順は読んだので書くだけだが、NDArrayで効率的に計算させようとするとなかなか大変である。今のところバグっている。今回の手法は(ノイズ項を無視すれば)総質量が保存する性質があるので、どこでバグったか見つけやすくていい。
寝ます。明日は出かけるのに遅くなっちゃった。まあ昼寝してたし大丈夫でしょ。
仕事が急に慌ただしくなり、てんてこ舞いしている。てんてこ舞いって何だ?
「救国のスネジンカ」してた以外は何もしていない。全エンディング見たので終わり。魅力的なゲームを遊ぶと自分でも何か作ってみたくなるよね。
小説を書いてみようとかいろいろ思ったりもするけれど、なんか僕の物語体験の根源的なところにノベルゲームというものが存在している感じがあり、もしかするとそっちの語りかたのほうが本当はやりたいのか?とか思ったりもする。というか、小説ってあんまりよくわからないんだよな。文章から情景が出てくるタイプの人間ではないから、どうしてもなんか無味乾燥な印象しか残らない。そういうのと比べると、ノベルゲーム的な演出はいろいろ記憶に残っているものもあるし、やってみたいと思うかもしれない。
土日になる。来週も忙しそうだから、ゆっくり休まなくては。
慌ただしい中でGitHub Actionsでちゃんとしたリリースフローを整えようと画策している。あまり時間を掛ける余裕はないのだが、リリース手順がgdgdだといろいろ危ないので、まあ最低限。最低限が何かはわからないが。
盆栽を再開した。認証関連をどこのレイヤに置くかはいつも悩む。今回はJWTの検証をアプリケイション層に置いた(鍵を取ってくるのはインフラ層に任せた)。最初は検証をインフラ層に丸投げしていたのだけど、検証結果によって返すエラーの種類が違う(HTTPステータスコードも変わる)ことの表現に悩んでいるうちに、そもそもそんな悩み方する時点でそれはアプリケイション層の問題なのだと思って変更した。思えば前回もこうしていた。前回はこうした上で、インフラ層に投げた方がいいんじゃないかと迷っていた気がするが、結局このほうがいいのだろう。
これでバックエンドは出揃ったはずなので、フロントエンドに集中する。まずはエラーハンドリングから学ばなくては。
また夜更かししてしまった。いそいで寝る。
仕事が急に慌ただしくなってきた。まあ、よく考えると当然そうだよねというタスクの存在を忘れていただけなので、自業自得というか、客観的には別に急ではないのだろう。しかし主観的にはちょっとリソース配分の計画が狂って困った。まあ、こうして尻に火がつかないとなかなかやる気が出てこないみたいな話はあるので、丁度いいのかもしれない。
夜はずっとゲームしていた。「溶鉄のマルフーシャ」「救国のスネジンカ」とりあえずトゥルーエンドを見た。いたいけな少女たちが過酷な境遇にあるのを見ると胸が痛むが、それはそれとして一緒に暮らしながら戦っている姿を見るのはいい。あと税金への熱い想いが伝わってくるのがいい。
エンディング回収もゆっくりやろうかな。どれもあんまり明るい気分にはなれないのだろうが。
寝ます。
なんか本番環境の不具合があってバタバタした。知らないところにRedisのキャッシュがあったりして焦った。そういうこともあるね。
盆栽はようやく方針決まったのですこし進んだ。が、また悩んでいる。アダプタがジェネリックでエラーの型が決まってない状態で、アダプタからのエラーをHTTP 401に振り分けるか500に振り分けるかの判断が必要な場合、どうしたらいいのか。Resultの代わりに3択になるような型を使うか、Result<Result<T, E1>, E2>にするか。どちらもスマートではないな。エラーのためのトレイトを定義してどちらか決めさせるのもあり得るか。いやそれは煩わしい。やはりResultのネストが一番扱いやすいのか?
寝ます。
仕事だった。引き継ぎに失敗して何もわからない状態で問い合わせに答えたりしている。前任者とコミュニケイションがとりづらい。やれやれ。
そういう状況なのだが次案件のキックオフもあった。僕がやるのはベース開発部分だけのはずだが。とにかく何があってもドキュメントは残す。
盆栽が行き詰まっているので逃避目的でSteamを眺めていたら、Braid Anniversary Editionが5月にリリースされていたことに気づいて即買いしてしまった。なんか3年くらい前から予定されていたはずなんだけど延期したままだったから、頓挫したのかと思っていた。嬉しい。
ちょっとだけのつもりでプレイしたら結局クリアしてしまった。もう4周目くらいだからさすがにパズルはだいたい覚えているけど、やっぱり傑作だなと思う。コメンタリーは、まあ追い追い?
夜更かししてしまった。はー。