去年の振り返り: https://rinsuki.hatenablog.jp/entry/2024/12/31/194653
もくじ
あったこと
無職になった
昨年末にバイトをやめ(ることになっ)たので、今年は1年を通して無職だった (pixiv FANBOX とか GitHub Sponsors とかで収益を得ているので完全な無収入ではないが。いつもお世話になっております)。
金をケチるためだけにコードを書いている時はかなり渋い気持ちになったが、それはそうと放っておかれてもやりたいことは無限にあるので、金と高速なインターネット環境さえあれば永遠に無職ができそうだった。結構高速なインターネット環境はあるので金が欲しい。
見た・聞いたものなど
ゲーム
Nintendo Switch 2
そもそも Switch 2 は買う気がなかったのだが、一応と思って Nintendo Direct を見ていたところ、突然買わざるを得ない理由ができたので My Nintendo Store の抽選に応募したら最初の方で当たった (ので発売日に手に入った。本当によかった)。Splatoon 2 と 3 合わせて2000時間くらいやっておいて良かった。
2026年1月17日までDL版がセールらしいので、Switch 2 を持っている人はぜひ。
Nintendo Switch 2 では他にもマリオカートワールドを遊んだ。前作のマリオカート8 (デラックス) からさらに音楽が良くなっていて最高。
Steam
Summer Pockets REFLECTION BLUE の Steam 版 を買った後、表現規制がかかっていることを知って積んでいたのだが、9月の頭に規制部分の復元パッチが公式で公開されたので一週間ぶっ続けで全√をクリアし、当時放映されていたアニメも放送分まで一気見して追い付いた。
特に好きな√は、識√ (RBで追加)、蒼√、しろは√。
Steam で買う場合、どういうわけかセール中はサマポケ無印とのバンドルがRB単体よりも安い(はず)なので、セールを待って買うのが良いと思う (無印はRBと違って日本語テキストが入っていないが、まあタダどころか値段がマイナスになるんだから持っておいて損はないだろう。なぜか無印にだけトレカもあるし)。
余談だが、公式サイトの売り文句がなんだかかっこよくて気に入っているので、ここに引用しておく。
2018年の夏に発売されたKeyのPCゲーム『Summer Pockets』を
『新しいSummer Pockets』として、世界に提供します。
(……追加要素……)
などの本来新作1本分の内容を、別タイトルとせずあえて既存のゲームと
組み合わせる事で、『Summer Pockets』の世界とシームレスに繋がり、
プレイ済みユーザーも、新たにプレイするユーザーにも、
さらなる感動をお届けします。
また、Steam版はよと言っていた割に出てから一年くらい放置していた DYSCHRONIA: Chronos Alternate を年始に100%クリア(実績コンプリート)した。
今作は自由移動中にミニゲームができる箇所があり、それらをクリアしていくと舞台設定が書かれたテキストを収集できる、というような仕組みになっている (そしてそれのコンプリートという実績もある)。
のだが、この収集要素がだいたいどの自由移動パートにもあるせいで、結構ストーリー的には切羽詰まっているような場面でも収集のために寄り道をしないといけない、という作りになっており、ちょっとどうなんだ、と感じた。
話自体は当時の自分は面白く感じたようだ (が、実績埋めをストーリーを最後まで体験してからとりかかったので、そっちのほうの印象が強くなってしまっている……)。
Steam 版はデスクトップ版とVR版がセットになっているので、収集要素だけデスクトップで集められるのは良い点かもしれない (本作は Meta Quest などのVRオンリーのプラットフォームで先に出ており、それらのプラットフォームではこのようなプレイはできないはず)。
余談だが、クロノスシリーズの中ではやはり ALTDEUS: Beyond Chronos が一番好きだ。
風来のシレン6 の Steam 版が出たので買い直した。買い直すほどには面白いが、面白すぎるので逆に怖くてできていない (私は面白すぎると睡眠リズム等を破壊してとにかくやり続ける傾向にあるため)。
あとは Chill with You: Lo-Fi Story を作業中にたまに起動しておいている。絶妙にだるい作業の腰を上げるのに便利。
今月から Factorio: Space Age を友人の立てたサーバーでちまちまプレイしているが、大変面白い。それはそうと、友人にはお前とはコードを書きたくないと酷評された (ごもっともだと思う)。
アニメ
どういうわけかバイトをしていた去年より見る本数が減っている (特に今年放送されたTVアニメは5本しか見られなかった)。時間はあったはずなのにどこへ……?
今年も去年同様、人に見たと声を大にして言いたい作品を抜粋して紹介する。
-
今年公開のもの
- メイクアガール (映画)
- 空色ユーティリティ (TV)
-
劇場版総集編 ガールズバンドクライ (前編+後編)
- もう上映は基本的に終わっているのでもうこれを書いても遅いのだが、いくつかあった追加シーンがかなり良く、TV版を見て良いと思った人なら再度視聴する価値はアリと感じた。
- ライブシーンがあるアニメは全て劇場で総集編をやってほしいと常日頃から思っているが、この総集編を見たことで改めてそう思った。
- わたしが恋人になれるわけないじゃん、ムリムリ! (※ムリじゃなかった!?) (TV + ネクストシャイン 先行上映)
-
去年以前の作品で今年見たもの
- 俺の妹がこんなに可愛いわけがない (一期再視聴、二期初見)
- けいおん! (一期)
-
THE IDOLM@STER SHINY FESTA (OVA)
- MUSIC♪ が本当に大好きで……
-
はいふり (TV + OVA + 劇場版)
- やっぱり海って怖いなあ、船乗りの人たちってすげえなあと思いながら見ていた。
- 劇場版は4D系で見るとかなり良さそうな雰囲気を感じた。どこかのタイミングで再上映されないだろうか……。
-
Charlotte (再視聴)
- 2015年 (10年前!?) の放送当時以来の視聴。なんとなく作業中に見る視聴済みのアニメが欲しくて選んだのだが、かなり見入ってしまった。
- 最終話は賛否両論あるが俺はあれで良かったと思う。
……あと、恥ずかしながらまだ全く見終わっていないのだが、終末ツーリングの第4話には感銘を受けたので、ぜひ第1話〜第4話だけでも視聴してみて欲しい。
音楽
Key Sounds Label
Key Sounds Label の楽曲がサブスク解禁された ので公式アレンジを中心にいろいろ聞いていた。
- Bravely You (MRM REMIX)
- 灼け落ちない翼 (Polyphonix Remix)
- 比翼の蝶たち (kamome sano Remix)
見たアニメの曲
- Eve「花星」 from メイクアガール
- フィロソフィーのダンス「迷っちゃうわ」 from わたしが恋人になれるわけないじゃん、ムリムリ!(※ムリじゃなかった!?)
- halca「ウィークエンドロール」 from mono
- Worlders from 劇場版プロジェクトセカイ 壊れたセカイと歌えないミク
- ディア・マイ・スペシャル・プレシャス・マーベラス・スウィート・ダーリンズ from わたしが恋人になれるわけないじゃん、ムリムリ! (※ムリじゃなかった!?) ネクストシャイン
今年は大団円ソングに始まり大団円ソングに終わったな、という印象がある。大団円大好きです。
ほか
今年は adomiori というアーティストを知れたのがかなり嬉しい一年だった。
単純に音が好きなのだが、それはそうと Synthesizer 系の合成音声をちゃんと追っていなかったので、ここまで合成音声ぽさが薄れているのかとも思った。最近の技術はすごいねえ (おじいちゃん)。
他にはこんな曲が良かった。
- 四条貴音(CV.原 由実), 萩原雪歩(CV.浅倉杏美), 天海春香(CV.中村繪里子), 水瀬伊織(CV.釘宮理恵)「Stellar Light」
- AIYUE blessed: 理名1「Heavenly Me」
- Cassie Wei「塊オンザドリーム」
- Leo/need × 初音ミク「Sympathy」
作ったものなど
あんまり何か作った覚えはなかったのだが、ちゃんと振り返ってみると案外あった。
ブログリニューアル
今あなたが読んでいるこれ! これをリニューアルした。昔は Hexo に任せていたのだが、変な要件を入れたくなってきたので自分で書き直した。まあ Hexo でも頑張ったらできるのだろうが、自分で書いたほうが早いし楽しいので……。
記事一覧ではなくカテゴリー一覧をトップページに持ってきて、そこから回遊して無駄な知識を持って帰ってほしい、という狙いがあったのだが (いわゆる個人サイトみたいなイメージ)、リニューアルしたところで力尽きてしまいあんまり回遊するものがないというオチが付いている。
iMast
iMast も地道に保守し続けもう9年目らしい。飽き性なのによく続いてるもんだ。
今年は Mastodon の本家についに引用投稿が来たのが Mastodon クライアント共通のビッグニュースだったように思う。
iMast でも表示は 10.0 で対応した。投稿もβ版では対応できているが、iOS 26 の Liquid Glass 対応で直し切れていないところがあり、まだリリースできていない……。まあ正直現状でも使えないわけではないのでとっととリリースしてしまうべきかもしれない。
また、画像アップロード時のリサイズ処理のメモリ使用量が多すぎて落ちるという報告が来て調査したところ、画像ファイルをそんなにメモリを使わずに解像度を縮小できるAPIがあるということに気付いたのが印象的だった。みんなも Apple の OS で大きな画像をリサイズする時は CGImageSourceCreateThumbnailAtIndex の存在を思い出してほしい。
Kubernetes クラスター
今年は一年かけてちまちま Kubernetes クラスターの盆栽をしていた。かなり面倒だったので皆さんは素直にマネージドサービスを使ったほうがいいと思う。
motplayer
https://github.com/rinsuki/motplayer
近年(えっちな)同人ゲーム界隈で RPGツクールMV/MZ 製のゲームが良く売られているが、Windows 版しか提供されていないことが多い。
しかし、RPGツクールMV/MZ 製ゲームは HTML+JavaScript ベースのエンジンを NW.js (デスクトップ版) や WebView (iOS, Android) で動かすような仕組みなので、ちょっと細工をしてやると Windows 版を他のプラットフォームで (Wineなしに) 動かすことができる。
この性質を利用し、以前自分用にクラウドセーブ付きのクラウド(?)ゲーミングを作っていたことがあった。昔で言うとゲームアツマール (旧RPGアツマール)、今で言うと DL Play Box / DLsite GamePlay のような感じ。
自分で使う分にはそれでよかったのだが (クラウドセーブなのでレベル上げとかは布団でスマホからできるし)、何回か知人から「このタイトル (RPGツクールMV/MZ製) が Wine でうまく動かんのだけど何とかならんか」と聞かれることがちょくちょくあったので、motplayer というものを作った。
https://github.com/rinsuki/motplayer
RPGツクールMV/MZ 製のゲームが入ったzipファイルをそのままプレイできる。
Electron 製ではあるが、公式配布で使われている NW.js がゲーム(のプラグイン)に Node.js の API を直接渡しているのとは対照的に、motplayer は通常のブラウザサンドボックス上で動くようなコードになっている。これによって、例えばゲーム製作者が意図して、あるいは意図せず2マルウェア・スパイウェア等をゲームに入れていても、motplayer のユーザーだけは影響を受けにくくなっている。
ただし motplayer の Electron はあんまりちゃんとアップデートできていないので、(例えば Linux ディストロ提供の Electron バイナリ + asar の組み合わせ、などではない場合) 結局あまり強くない可能性もある。
気が向いたら Tauri (これは OS の WebView ランタイムを使う) などで作り直し、他人にセキュリティアップデートの責任を擦り付けられる形にしたい。
FruitXR
https://github.com/rinsuki/FruitXR
macOS で動く OpenXR 非準拠ランタイムを非常にまったり作っている。
現状 macOS で動く OpenXR ランタイムは Meta が開発しているシミュレータだけで、実際の HMD に画面を出力できるものはない3。
ので、自分で作ってみることにした。
Monado というオープンソースのランタイムをベースにすることも考えたが、Vulkan を一旦経由するのは微妙そうというのと、macOS (あるいは Darwin、XNU) 固有の RPC 手法を学びたかったのでフルスクラッチで1から書いている。言語はもちろん Swift (なのだが諸事情により Objective-C++ などがちょっと混じっている)。
とりあえず HMD のトラッキング情報を送信し、アプリに描画させ、その描画結果をHMD側に出すところまでは作れた。 動作している様子はMastodonに上げてある。
まだまだやることは大量にある。
- コントローラ周りのサポート
- Wineサポート (Proton の wineopenxr をポートする)
- asynchronous reprojection のサポート
- そもそも WebXR ではなくネイティブクライアントを作る
- など
が、誰かが Monado の macOS ポートを試みているようで、これが upstream にマージされれば FruitXR は御役御免になりそうだ。
その他社会貢献
- フルレンジの動画を Mastodon に投稿すると、再エンコードをスキップできる条件を満たしていても強制的に再エンコードされてしまう問題を修正した https://github.com/mastodon/mastodon/pull/34098 。
- Hubble UI をサブパスに置くと動作しない不具合を修正した https://github.com/cilium/hubble-ui/pull/941 。
- Moonlight において、JIS配列特有のキーの一部がうまく扱えない問題を部分的に修正した https://github.com/moonlight-stream/moonlight-qt/pull/1532 。
- distroless の Debian 13 イメージ (当時はまだ Preview だった) において、base イメージの OpenSSL の依存関係が不足していて使えない状態になっていたのを修正した https://github.com/GoogleContainerTools/distroless/pull/1933 。
- など
あとがき
今年は必要に迫られて自分用の(表に出せない)コードを書いている割合が大きかったように思うので、来年は表に出せるようなアウトプットを増やしていきたい。あとこのブログの内容も充実させたい (ネタはそこそこある)。
また、今年はさまざまなものに誘ってもらうことが多かったように思う。良い返事をできたものもあればできなかったものもあるが、誘ってもらったこと自体はどれも(基本的に)嬉しかった。ありがとうございます。
それでは、良いお年を!
Footnotes
-
トゲナシトゲアリのボーカル ↩
-
過去の実例として XcodeGhost (リンク先英語) などがある ↩
-
SteamVR は macOS 版もあるが、OpenXR ランタイムは同梱されていなかった(はず)。 ↩