今年やったことをまとめて自己肯定感を上げよう (公開はおまけ) という趣旨の記事です。
- TwiLive
- iMast
- StarlightResize
- nostaldon
- macOS 環境で gitea の日本語フォントをいい感じにした
- Mastodon にちょびっと貢献
- Homebrew の Formulae を追加したり更新したり
- Misskey
- Bad Apple!
- SwiftMsgPack に NSNull のハンドリングを追加
- iPhone as a DAC
- DeSmuME の CI に macOS ビルドを追加
- Joy-Con as a DSU Server
- Android Emulator にいたずら
- Apple Music.app のmusicdbファイル解析
- プチコン3号 (SmileBASIC) で WASM
- 古いニコニコ動画のエミュ鯖
- Among Us 周り
- Three.js の types 改善
TwiLive
Twitterでハッシュタグを使って実況できる macOS アプリケーションです。
昔 AppKit で書いたやつを SwiftUI で書き直しました (SwiftUI-Introspect をかなり使っていますが…)。
ビルド配布はありませんが (そのうち用意するかも) 良ければ手元でビルドして使ってみてください。SwiftPMオンリーなので xcodeproj を開いて Run するだけです。
iMast
iMast も 2021 年で4周年を迎え5年目に入りました (ということは来年は5周年………!?)。
4年もやっていると実装したい機能もあまりなくなってくるので、4周年では細かいところの修正くらいしかしていません。
4周年のあと Swift 5.5 で全生物待望の async/await が来たので Hydra のasync/awaitもどきから移行(ついでにAlamofire剥がし)していますが、気が向いた時にゆっくりやっているので5周年に間に合うかどうか怪しいところです。
StarlightResize
DMM版(Windows版)デレステが来たのですが 1920x1080 までしか拡大できなかったり位置を手でいじるのがだるかったりしたのでいい感じにリサイズしてくれるツールを作りました。
gigazineの記事にもなりました。
nostaldon
メンテナンスモードに入った jQuery UI を懐かしむために jQuery UI で ちょっとした Mastodon クライアントを作りました (LTLとFTLしか見れないけど…)
macOS 環境で gitea の日本語フォントをいい感じにした
現在の gitea を macOS の日本語環境で開くと日本語の文章に Hiragino Sans W4 が使用されるのですが、基本的に macOS 環境の日本語は Hiragino Kaku Gothic ProN W3 で表示される (ウェイトが違う) ので違和感があります。
これが気になって仕方なかったので、Hiragino Kaku Gothic ProN を優先する Pull Request を送ってマージされました。
Mastodon にちょびっと貢献
今年も Mastodon にちょびっと貢献していました。
Homebrew の Formulae を追加したり更新したり
corepack (Node.js のパッケージマネージャいい感じにするくん) が使いたかったので Formulae を追加する Pull Request を送ったところ、無事マージされました。
その他にもちょいちょい Formulae の更新をする Pull Request を送っています。
Misskey
なんか知らんけど今年も collabolator なのでちょっとリファクタリング系の Pull Request を書いたり来た Pull Request につっこみを入れたりしていました。ユーザーとしてはほとんど使っていませんが…。
Bad Apple!
UEFI で再生したりトグルスイッチ (NSSwitch) で再生したりしていました。
SwiftMsgPack に NSNull のハンドリングを追加
もう何で必要だったのか忘れてしまいましたが、何かで必要だったので Pull Request を送ってマージされました。
iPhone as a DAC
一時期 Apple T2 が積まれた Mac で Linux を動かしていたのですが、なんか内蔵DAC用のドライバがダメでイヤホンジャックが使えなくて困ったので、iPhoneに波形データを配信する TCP サーバーを立てて usbmuxd で Linux から繋ぐことで無理矢理解決しました。
READMEには PulseAudio で使う方法しか書いていませんが、やろうと思えば Windows でも macOS でもなんとかして使えるでしょう。
DeSmuME の CI に macOS ビルドを追加
DeSmuME はニンテンドーDSというゲーム機のエミュレータです。
DeSmuME には Interface (ちゃんと読んでないけどたぶん RetroArch から使われる libretro の dylib) とそうでないもの (普通のアプリケーション) のビルドがあり、Interface のビルドはこれまでも macOS を含む Windows, Linux, macOS で回っていたのですが、アプリケーションの方をビルドするCIは Linux でしか回っていなかったので、macOS ビルドを追加する Pull Request を送ったところ、無事マージされました。
Joy-Con as a DSU Server
昔吸い出した Wii のゲームを遊びたくなってストレージから掘り出したのはいいのですが Wii リモコンが見つからなかったので Nintendo Switch の Joy-Con を DSU Server 経由で Wii リモコンとして Dolphin で扱うやつを書きました。
ちなみにこの間部屋の掃除をしてたらWiiリモコンが出てきたのでこれはもう用無しになりました。
Android Emulator にいたずら
Android Emulator に DYLD_INSERT_LIBRARIES でコードを入れて、Android Emulator を無理矢理フルスクリーンに対応させたりクロマキーで透過したりなどのいたずらをしていました。
Apple Music.app のmusicdbファイル解析
プロプライエタリな musicdb のフォーマットを解析して、SQLiteデータベースに中身をエクスポートするスクリプトを書いていました (とはいえ基本的なところは先人がやっていたので不明とされていたところを埋めていっただけです)。
Apple Silicon Mac が来て macOS VM が手軽に使えるようになったら再開しようと思っていますが、わかるところがあったらぜひ Pull Request をください。
プチコン3号 (SmileBASIC) で WASM
WASMをプチコン3号の SmileBASIC に変換するスクリプトを書いていました (int32関連の一部と制御命令の一部しか実装してないけど)。
最適化もぜんぜんしていないので、今のところ他の言語がプチコンで動くと面白いというだけです。
古いニコニコ動画のエミュ鯖
Internet Archive を見ていたらかなり古いニコニコ動画のプレーヤーのswfが Internet Archive にあることに気づいたので、エミュ鯖を書いて動かしました。
Among Us 周り
現在の Among Us の通信はオンラインの場合すべて DTLSv1.2 で暗号化されるようになってしまったのでローカル通信でしか意味がありませんが、当時はオンラインモードでも生のUDPパケットで通信していたので、パケットキャプチャでゲームをリプレイできるようなものを (昨年から引き続き) 作っていました (https://github.com/rinsuki/AUEtherCapture)。
とはいえ大切なことは基本的に https://github.com/codyphobe/among-us-protocol に書いてあったのですが、Airship アップデートで座標の範囲が変わったりしていたのでそこを最新版に合わせる Pull Request を送ったりしました。
サーバーが不安定な時でも遊ぶために ローカル通信 over Internet を作りたいと思い続けて年末になってしまいました (まあ公式サーバーが安定してるのもあるけど)。きっとこのまま来年も思い続けて終わるのでしょう。
Three.js の types 改善
上に関連してリプレイをゲームに合わせるためにゲームのファイルを読んでグラフィックを再現する新リプレイプレーヤーを開発していたのですが (諸事情によりボツ) 、マップの一部で3Dモデル (中身は2Dだけど) が利用されており、それを Three.js の Mesh に落とす際に attribute の名前が補完されなかったのが面倒くさかったのでデフォルトのシェーダーが取る attribute の名前が補完されるようにしました。
来年は Apple Silicon Mac が年明けまあまあすぐに来る(はず)なのでまた変なものを作ってインターネットに不法投棄流しておこうと思っています。これからもよろしくお願いします。
それではよいお年を。