12月の開発記録 (2024)

2024年がもう終わろうとしています。今年は個人開発は惨憺たる状況でしたが、半分以上は予想外にしごと(いろんなレベル)が舞い込んできて、常に何かしらに気を取られていた(いる)状況だったということがあります。まあ1年分を振り返るのは時間がもったいないので、今月分だけ書きます(1年分については、こっちではなくgithub.ioのほうにまとまっています)。

experiments

今月も引き続きプラグインホストみたいなやつを作っていたのですが、半分以上はWebViewを使ったWeb UIをどう構築したもんかな…とこねくり回していたように思います。この辺の知見はある程度たまったら公開したいところです(書きかけが放置されている状態)。webview.h、choc webview、saucerを触ってみて、現状saucerが一番よさそうと思っていますが(chocはコードを書く上で致命的なバグが放置されているレベルなので使い物にならない)、どのWebViewにも依存しないWebView実装中立なAPIを作ってコーディングしています。

実装中立にするのは割と重要で、MVCのようなアプリケーションのモデルを特定のWebView実装の上に構築できるほどには信頼できるものが現状ありません。仕組みまで構築したくはないのですが、下回りが駄目になると上に積み上げたものが全滅するので、なるべく層を切り分けて作り上げたいところです。

UIでは現状ReactやVueではなくShoelaceやwebaudio-controlsなどのWebComponentsの技術を使っていて、WebViewからのinterop部分は現状JSONシリアライズしています。ここにWITなどが使えると可能性が広がると思うのですが、これは各プラットフォームのWebView実装のレベルで追加されないといけないので敷居が高いですね。開発体験は良くないので他の人におすすめはしませんが、WebViewを使うなら他にない感じです(今回はQt等が動かないような特殊環境も想定していて、多分WebViewで無理やり作ると思います)。

あと先月分がスカスカだった理由のいくぶんかは今月のJUCE Advent CalendarのネタだったDAWの挙動に依存するコード、の反対側つまりプラグインの挙動に依存する部分にいろいろ振り回されていた、ということもあります。まあこれは10月からそうなのですが(それが先月の同人誌のネタに繋がる)。現状VST3, AU, LV2に対応していて、CLAPにも対応したいのですがそこまでやると手が回らなくなる感じです。

ちなみに、まだpublicにする予定はなかったのですが、ちょっと他所のリポジトリで再現報告したり他所のプライベートリポジトリで一部を使いまわしたい等の理由があってpublicになっているだけなので、宣伝する予定はありません。まだPoCとしてすらまともに動きません。

externals

今月はrtlog-cppを複数ログクライアントで使えるようにするパッチをいろいろ書いていました。これはzennにまあまあ詳しく書いたのでこれで終わりです。rtlog-cppは懇切丁寧に対応してもらえて非常に体験がよかったし、API設計もユーザーフレンドリーなかたちで再構築してもらえたので全面的にお勧めできます。

あとsfizz, sfizz-uiのdarwin-arm64版をビルドできるようにしたりちゃんと使えるようにしたりといったバグフィックスもやっていたのですが、sfizzは完全に開発チームが止まってしまっていて(開発者が就職してからずっとそうではある)、これはのんびり待たないとなあという気持ちと、来年SforzandoがLinux対応したらもう開発しなくなっちゃうかもなあという悲観的な読みがあります。まあOSS実装はそれでもsfizzが最先端なので、Sforzandoにお任せというわけにはいかないし、最悪の場合自分で何かしらのアプリケーションのレベルで独自に巻き取るしかないかも…とはちょっと思っています。

extended

そういうわけで、今年はいろいろ仕掛のものをかかえこんだまま2025年に持ち越す感じになりそうです。どうも春先まではタスクがいっぱいいっぱいになりそうなので、こっちに書くネタも少な目になりそうですが、地味に進めていければと思っています。