見出し画像

iOSDC Japan 2023 を振り返って(登壇編)

この記事は、下記の記事で紹介できなかった登壇に関連する話題を書いていきます。

今年は運にも恵まれ、なんとスピーカーとして40分トークをする機会をいただくことができました。
おかげさまで、本当に楽しい3日間を過ごすことができました!
スライドはこちらです(アニメーションと音楽は未収録です):


ただ、喉元過ぎれば熱さを忘れるとはよく言ったもので、よくよく振り返れば実は苦悩と睡眠不足の2ヶ月間が背後にあったはずなのです。

ということで、忘れないうちに、本番までにどういうことがあったのかを(主に自分のために)書き残すことにしました。

構成をまともに考えずにだらだらと書き下しているため、暇なときにお読みいただくことをお勧めいたします。


トーク募集と採択

今年はポスターセッションと40分トークの2つを提出しました。

採択されるとすれば、まず間違いなく競技プログラミングの話題のほうが採択されるだろうと予想していましたが、実際は逆でした。

「自動作曲 on iOS」のきっかけ

直接の動機については発表の中で話したとおりですが、そもそもなぜそのような動機に至ったかといえば、やはり2月に行われたAI作曲コンテスト「弁財天」の存在が大きいです。

かねてより機械学習や人工知能に関する勉強をなにかと理由をつけてサボっていたので、自分で自分を追い込むために参加したのがこのコンテストだったのですが、今年2月のコンテストでは幸運にも優勝を賜ることができたゆえ、その後も機械学習関連の勉強に関してはモチベーションが高い状況でした。
その延長で「実はiOSでもCoreMLとかを使えば出来るのでは?」と考え始めたのが、そもそものきっかけでした。

当初の構成

CoreMLがニューラルネットワークアーキテクチャをサポートしているので、 推論環境が(ワンチャン学習環境も)iOS上でも動くだろうという前提で、工夫したことを並べ、課題と対策の形式で紹介することを考えました。プロポーザルの説明文もこれを受けたものになっています。

3つの難題

スライドを作り始めて早々に考えが甘かった事に気づきました。

(1) モデルの変換がうまく行かない

これは発表の中でも紹介しましたが、coremltools(あるいはCoreML自体?)がレイヤーをサポートしていなかったり演算をサポートしていなかったりして、変換処理はまったくもってうまくいきませんでした。
CreateMLに関してはそもそもRNNをすっと構築できる環境が整っていませんし…。

(2) 「課題」の多くがiOSと無関係

音楽生成の前に立ちはだかる課題は、実のところ、作曲法を考える上で対処すべき課題と共通する部分が多く、結果としてiOSが蚊帳の外に置かれやすくなります。音楽ないし機械学習に関するカンファレンスなともかく、iOSDCでそれはどうなのか…

(3) 初学者に厳しい前提知識群

まず、音楽というものが、人間という複雑怪奇なマシンによって受理されてはじめて成り立つので、備に説明しようとすると心理学、脳科学、文化人類学などに次々話が飛びます。
機械学習に至っては自分自身がちゃんと理解していない部分が多く(音楽生成に関連する部分の最低限の知識しかない状況)、少なくとも6月時点ではいったいどの面下げて人前で講義をするのかという状況…。

対処

(3) に関しては、プロポーザルに「初心者でも楽しめるかと思います」と書いてある以上、前提知識が要求されるような状況を放置するわけにはいきません。(書いてなくても聴衆を置き去りにするようなトークをしてはいけないですが)

そこで、本題に入る前に、本題の理解に必要な知識についてある程度解説を入れることにしました。

といっても自分の音楽知識も大概不安だったので、音楽と心理学関係の本もちゃんと読むことにしました。(最後にまとめてあります)

機械学習に関してはWikipediaで検索…だけだと足りないので、本や論文を集めて読んでみたり、関連セミナーに参加したり、MATLAB Japanのビデオを見たりしました。ただ、時間が豊富にあるわけではなく、勉強しながら資料を作っていました。
その代償としてスライドが毎週ダイナミックに書き換わり、リハーサルが半分意味をなさなくなりましたが、かわりに頓珍漢な説明がスライドに乗るという状況は回避できたんじゃないかと思います。(もしどっか間違ってたら教えてください…)

(2) については、問題の性質上、iOSがある程度疎外されるのが不可避な状況だったので、聴衆が疎外感を感じないようにiOSネタを挟むことを計画するも、結局どれも不自然過ぎて全部ボツにしました…

(1) に関しては結局本番に間に合いませんでした…

ということで最終的には、スライドのアジェンダ部分で紹介したような構成になりました。
セクション3の部分は一応課題と対策という体にはなっているものの、トークの7割近くが座学フェーズとなった事実は変わらず、プロポーザルの説明を信じてお越し下さった皆様には大変申し訳無いことを致しました 🙇‍♂

スライドで工夫したこと

あえてアバウトな表現を用いる

これは一種の賭けに近いですが、「イケてる音楽」みたいな主観的な単語を利用することで、本来厳密に定義した場合に必要になってくる心理学・脳科学等まわりの説明を大幅に削減しました。

アニメーションをなるべく用いる

純粋に文字や図がぐいぐい動くのは見ていて楽しいので、つらい座学フェーズが少しでも楽しくなるよう、極力アニメーションを入れることを意識しました。
最終的に194枚になりましたが、数枚を除いたすべてのスライドにアニメーションが付与されています。

楽譜と一緒に音も鳴らす

画面に楽譜を表示しているスライドにおいては、多くのケースでその楽譜の音楽も流すようにしました。これにより楽譜を普段読まない方でも理解しやすい形になったのではないかと思っています。

メンタルケア

タイムテーブルを見ると、Day 1 の午後1時から開始する40分トークは、トラックAもBもCもどれもが面白そうな内容ばかり。
特に岸川さんの Mastering SwiftSyntax は誰もが認める Day 1 の目玉トークです。

「トラックD、人来ますかね…」

一般論として、この状況でやる気になる人もいれば、ネガティブ思考が精鋭化して「誰もお前を愛さない(6コマ目)」状態になる人もいます。

自分は気にしない方だとは思っていたものの、人間、年とったら色々変わるし、前述のような問題がストレスになっていたものですから、いい感じにリフレッシュを適宜入れたり、身近な人に話を聞いてもらったりして、何かとにかく、メンタル面にはある程度気を使いました。

ちなみに、たしか7月の半ばころだと思いますが、uhooiさんとこの状況の話をしたときに、uhooiさんが「(同じ時間帯に入れられるということは)それくらい素晴らしいプロポーザルだったということですから…!」と言葉をかけてくださったのが(事実の有無は扨措き!)本番まで随分支えになっていたということを書き添えておきます。
(uhooiさんその節は本当にありがとうございました…!)

リハーサル

40分トークなので、自分で練習するだけでもとにかく時間がかかり、回数も限られてしまいます。
しかも前述のように、スライドは毎週のようにアップデートされるので、睡眠時間を削るという努力も虚しく、総量だけ見れば2年前のトークに比べるとほぼできていないに等しい状態でした。

一方で2年前とは違い、人前で発表練習をする機会が1度だけありました。
以前から毎週土曜日にQAエンジニアのみなさんと会合をしているのですが、その場で一度フルでお披露目し、フィードバックを頂いたりしました。
(参加してくれた皆さんありがとうありがとう…)

予備の事前収録

手順に関しては、2年前に9回くらい収録したこともあり、そこまで手間取りませんでした。
ただ、前回と同じ用に音声ファイルを作ってノイズを取り去る時間はなかったので、普通にマイクを使って収録しました。

収録自体は大きな問題もなく終わったのですが、実はこの事前収録の時点でAE(自己符号化器)について正確に理解しておらず、VAEで説明すべき内容(潜在空間上のプロットが連続であることを利用した説明)をAEで説明するという致命的なやらかしをしていました。
2日後くらいにそれに気づいたときはもう遅かった…。
これは何が何でも当日欠席できないと体調管理に力を入れつつ、万が一のため正誤表もこっそり準備したりしていました。

実際は無事に登壇できたので事なきを得たのですが、正直かなり焦りました…。
(勉強をサボったツケは重かった…)

トーク当日のできごと

朝から昼にかけて

当日未明の4時まで資料を作っていましたが、朝の時点では完成していませんでした。
不要な説明を削っても、あと3分ほど足が出てしまう…
スライド中に音楽を流している部分を削ると間に合うけど、楽譜読めない人にとっては音楽がないと不親切だし…
などなど考えながら、開始10分前(昼12:35くらい)までスライドを最終調整していました。
結果、昼ごはんを食べそこねてしまいました…。

本番直前

いざ舞台に立って接続準備をしましたが、このとき講演台のテーブルが想像以上に低いということに気づきました。
これが原因で、講演台に乗せたMacに表示した発表者ノートの文字が認知できないくらい小さくなり、このままでは読めない、という事態に…。

そこで、急遽iPhoneからKeynoteをリモートコントロールすることにしました。

ただ、本番でいきなりそれをやったので、ノートのスクロール規則を若干間違えて、途中で1回完全に読み間違えたりしました…。

本番

まず、内容に関しては、40分に収める計画がまとまらないまま開始したので、開発者ノートから適宜冗長な言葉や概念を省くという荒業を実行しました。
また、発表で流す音楽に関しては極力削りたくなかったのですが、最後の方に出てくる「イマイチな例」については時間がなく、まるごとカットしました。

予想できなかったこととしては、講演台付近が若干暑かった、という点です。緊張していたのと相まって終始汗が止まらず、目の前を汗が横切ること数度。
音楽が流れている間にタオルをとって汗を拭くなど、アドリブで工夫はしたものの、あれほどまでに汗だくになるのは予想外でした。

余談ですが、Ask the Speaker で隣にいらした岸川さんの眼鏡が相当に曇っていたので、トラックAは照明などもあってもっと暑かったのかもしれないですね…。

その後

40分間不思議な姿勢をしていたせいなのか、しばらく体の節々が痛い状態が続きました。
また、終わった直後は嬉しいことがあって感覚が麻痺していましたが、時間の経過とともに疲れが表面化していきました。
Day 1 の夜にオープニングパーティに参加した方は、もしかするとフロアの奥の椅子で魂が抜けたように座っている私の姿を目撃したのではないでしょうか。

トークの反響

前述のように、トラックDはあんまり参加者が多くないと考えていたときもあったのですが、嬉しいことに想像以上に多くの方に来ていただけまして、正直感謝以外の言葉がありません。

中にはトークのあとに「面白かったです!」と直接お伝えくださった方もおりまして、持病の腰痛など忘れて何度もお辞儀しました。
(あとでしっかり大変な反動にあったわけですが)

トークにお越しいただいたみなさま、本当にありがとうございました!

なお、他の記事でも言及したのですが、Ask the Speaker のコーナーにヤマハ株式会社の小笠原さん(@ogswr_mtk)がお越しくださいまして、自動作曲の話で大変盛り上がりました。本当にありがとうございました!

自画自賛点

本番のとっさのアドリブ

40分に収めるためにアドリブで台本を削ったり、汗を拭き取るタイミングを事前にその場で計算してトークを進められたのは良かったと思いました。

スライドのアニメーション

前述のように、スライドのほとんどでアニメーションを入れていたのですが、懇親会などで感想をきいてみたところではかなり好評でした。
マジックムーブ自体がまだ知名度がないせいでしょうか、スライド間のトランジションは結構な確率で「すごい」といっていただけました。

反省点

機械学習の勉強はもっと優先度をあげよう

スライドの完成が遅れた理由はひとえに自分が機械学習関連の勉強を長らくサボっていたことなので、こういう事が起きないように、日頃からしっかり勉強することが大事だと思いました…。

いや、別に日頃勉強をやってないわけじゃなくて、うまい感じに優先順位をつけられていないのが原因だと思うんですね。
そういう意味でまだまだ模索や改善すべき点は多いと思います。

スライドをちゃんとレビューしてもらおう

スライド全体については、土曜日にクローズドで実施している勉強会にて一度リハーサルをしているものの、それ以外ではまったくレビューなどを受けておらず…。
理想を言えば、音楽、機械学習、iOS(特にCoreML)の専門家にそれぞれレビューをいただけると良かったのですが、前述の理由などもあってスライドが形になった頃には色々時期としては手遅れになっており、要改善ポイントだと思いました。

さいごに

初めての40分トーク、成功した部分もありますが、失敗した部分もたくさんあります。
しょうもないことで悩んでいた時期もあります。

そういうことをつらつらと書いていくと、 色々なフェーズで自分がいかに多くの人に支えられているかという事実に気づきます。
今後も努々忘れないようにしたいものです。

改めて、
かくもマニアックなトークにスターを付けて下さった皆さま、
多くのトークの中からこのトークを選んでお越し下さった皆さま、
拙い発表にもかかわらず、面白かったとお伝え下さった皆さま、
次のトークが始まる中、Ask the Speaker にお越しいただいた皆さま、
何より、素晴らしいイベントを開催してくださった運営スタッフの皆さま、
そして、このとりとめのない記事を最後まで読んで下さった皆さま、
本当に、本当にありがとうございました!

付録

参考図書


この記事が気に入ったらサポートをしてみませんか?