5月の開発記録 (2024)

5月、GW初頭から風邪で寝込んだり、来月のKotlinFestの登壇に向けて調べ物をしたり、AOSPの中身をいろいろ調査する副業が始まったり(無職なのに!)、参加申込すら受け付けていなかったio2024を遠巻きに眺めたり、技術書典16に出展したりと、何やら目まぐるしく過ごしているうちに月末になってしまいました。そんなわけで(?)更新がほぼ無です。

aap-juce GUI experiment

AAPの現時点で一番なんとかしたい課題は、aap-juceプラグインGUIを使えるようになりたい、という問題です。これはほぼJUCE on Androidの問題です。どんな問題があるかというと…

  • そもそもオーディオプラグインプロジェクトとしてビルドできない(Standaloneアプリケーションとしてビルドしている)
  • AndroidManifest.xmlで自分のActivityを指定していてもなぜかJUCEのActivityが起動してしまう
  • さまざまなUIウィンドウがまともに動作しない(たとえば、閉じるとアプリケーションがクラッシュする)

数え上げだしたらキリがないのですが、絶対に片付けないといけない課題を片付けていくしかないところです。

今月はAndroidManifest.xmlで任意のActivityを指定できない問題を片付けました。これは、JUCE on Androidjuce_gui_basicsComponent::addToDesktop()の実装がUIを常にWindowManagerで取得した現在のWindowの上に自身のViewをaddContentView()で追加してしまっているせいでした。自分のActivityを指定していてもJUCEのランタイムが強制的に自身のActivityに切り替えていた、というわけではなく、見かけ上JuceActivityが動作しているように見えただけ、というわけです。

そもそもオーディオプラグインGUIなしで動作するのが一般的(UIが表示されるのはDAWでユーザーが操作する時だけ)なわけですが、JUCE on Androidの場合、全てのJUCEアプリケーションで共通の初期化コードJUCE_initialiseJUCE()GUIまで初期化してしまうというのが、JuceActivityが常に表示される(ように見える)問題のもう一翼でした。AAPは一般的にServiceとして起動するので、JUCE_initialiseJUCE()でUIを初期化しようとしても、そもそもアクセスできるWindowが存在せず、何も表示されません。

そんな感じでいろいろ問題がわかってきたので、JUCEの初期化処理に修正を加えて、aap-juceの実装でもjuce::AudioProcessor::createEditor()が呼び出された時にAAPのクライアント側Viewの内容として追加するようにしたら、プラグインUIとしてなんとか表示できるところまでは進みました。

View post on imgur.com
imgur.com

ただユーザーからの操作入力に対して全く反応しないので、それだけでも実用には耐えません。それと何やらJUCEホストではまだロードも出来ないようだし、2度表示しようとしたら失敗するし、まだいろいろ調べないといけなそうです。

コードの変更のやり方も、JuceActivityを完全に殺す方向性なので、このままaap-juceのmainに突っ込むわけにはいかない(それをやると「このプラグインAndroidでも動くんだ…!(Standaloneだけど)」というbaitとして機能しなくなってしまう)ので、まだgui-view-factoryブランチの中に閉じています。

技術書典16出展

してきました。サークルブースに来てくださった方はありがとうございました。MIDI-CIの新刊が思いのほか売れて、印刷した分の半分以上がもう売れていることに気付いて、割と驚いています。MIDI 2.0のメッセージプロトコルなんてマニアックなトピックでよく売れてるな…??

今回はMIDI 2.0 UMPガイドブックが在庫切れの状態で参加することになったのですが、「MIDI-CIの本を読む前にUMPの本を読みたい」人が「でも紙版がない」という問題にぶつかってしまうことがわかり、これは失敗した…となってしまいました。UMP本を改訂するなら、MIDI-CI本と合わせて、実際のコーディングトピックも加筆して、普通に商業本として売れるレベルまで持っていきたいですね(!?)

今回も採算度外視で新刊を出しているのですが、何の因果か同人誌経由で仕事がやってくる案件がいくつか発生していて(そんなことあるもんなんですねえ)、ネタがあるうちは続けておこう…ってなりました。

って、なんかもう技術書典16終わったみたいな感じで書いてますが、実はオンラインはまだしばらく続いているので、こっちで書籍を買っていた/いる勢の方がいたらこちらから見て下さい。

techbookfest.org

6月の予定

6月も裏稼業がそれなりに忙しそうなのと、KotlinFestのネタの準備をしないといけないのとで、それなりに時間がなさそうです。KotlinFest、そろそろチケットが無くなりそうだとのことなので、もし興味のある方はお早めにどうぞ。

www.kotlinfest.dev

ちなみにトピックが「上級」扱いになっているんですが、これは内容が「ライブラリ開発」だとそうなる分類になっていたので選ばざるを得なかっただけでして、そんなにエッジィな話ができる予定はないです。有名ライブラリ開発者ってわけでもないし。まあ話すべきことを無難に話そうと思います(!?)

追記: タイミング悪いなあ…(