iOSDC Japan 2019でLLVM IRを読むLTをしてきました #iosdc

今年もiOSDCが終わってしまい、達成感なのか寂しさなのか、なんともいえない感情になっているrikusoudaです。 今年もiOSDCがとてもよかったのでブログを書きます。

f:id:rikusouda:20190909013623j:plain

LTした内容

Swiftコンパイラのコードを読めない僕が、Swiftがメモリやレジスタをどのように使っているのかが気になっていろいろとあがくお話です。

togetter.com

登壇までの道のり

プロポーザル提出

去年登壇してとてもよかったので今年も登壇したい気持ちでいました。そう、気持ちだけは。

でも全然ネタの仕込みができていなかったのでiOSDCのCfPが開始された5月の段階では全然なにもプロポーザルが出せていなくて「今年はプロボーザル出せないかもしれない」というムードになりかけていました😫

そんな中CfPの期間が延長されてWWDCから帰ってきてからでもプローザルを出せることになったので、WWDCでの体験に最後の望みを託していざ出発✈️

・・なんとかいい感じの体験ができたのでそれを元にプロポーザルを出しました。

ところでSwiftコンパイラについては去年のiOSDCでかなり詳しい方々が解説するトークがいくつもあったのが印象的です。こういうプロポーザルと勝負になると難しいかなと思ったのですが、発想を変えてみると僕のようなコンパイラに詳しくない人が調べたということが逆にアピールになるかもしれない、と思ったのでプロポーザルはそういう味付けをしてみました。

今回はプロボーザルをたくさん出すことができず実質これ一本みたいな感じだったのですが、採択いただいてうれしかったです😭

登壇資料作成

まずはしゃべりたい内容を資料にまとめていったのですが、それを一通りしゃべるとなんと「10分以上」もの超大作となっていました🤣

採択された枠は5分のLTです。iOSDCでは5分経過するとドラを鳴らされて強制終了のルールなのでタイムオーバーは(上手に強制終了されるテクニックがなければ)中途半端な感じで終了となってしまいます。 しかしうまく削れそうなところがなかなか見つからず😨

そしてもう一つの心配事があり、それは最終日のLTは選択制ではなく全員が聞きに来るということです。しかもビールが配られているので多くの人は酔っ払っています。そんなシチュエーションでLLVM IRやARM64アセンブラのコードを読んでいきながら、聞いている人に楽しい気持ちになってもらうにはかなりのトーク能力が必要になるのではという心配も😨

この2つのことを同時に解決するアイディアが「LLVM IRやARM64アセンブラを疑似Swiftで表現する」ということでした。これを試したとたんに読むコード量が激減し、テンポよく進められそうになりました😊

登壇練習会

Timersさんで「登壇練習会」が開催されましたので、そこで登壇練習をさせてもらいました。

mokumoku-ebisu.connpass.com

この練習会で初めて人前でしゃべってみたのですが、10秒くらいオーバーすることがわかりました。この時点で「話す内容」はできていたのですが「当日読み上げる台詞」が決まっていなかったことに気がついて、本番までの間に「台詞」を作り込むことにしました。

一度人前で練習できたことや、フィードバックをいただいたことで本番までにいろいろ修正できました。そして練習仲間がいたことが励みになりました。練習会の皆様ありがとうございました🙏

印象に残ったトーク

自分の登壇ばかりが楽しかったわけではなく、聞きに行ったトークがめちゃくちゃ楽しかったです。day1、day2のLTも面白かったしレギュラートークも面白かった。聞きに行ったものは全部楽しかった。今回は「普段の勉強会で出てこなさそうなテーマのトーク」も聞こうと思っていたのでこのエントリーではその辺を中心に印象に残ったトークを紹介させてください。(「すぐに現場で役に立ちそう」系のトークについては会社ブログか何かで感想書くかもしれません)

普通に書くと即メモリーリーク!こんなに大変だけど、俺は Xamarin.iOS を使い続けるぜ! @hiro128_777

普通に書くと即メモリーリーク!こんなに大変だけど俺はXamarin.iOSを使い続けるぜ! by Tomohiro Suzuki | トーク | iOSDC Japan 2019 #iosdc - fortee.jp

www.slideshare.net

僕は以前にWPFというフレームワークC#を使ってWindowsアプリ開発をしていたこともあり、Xamarinが気になっていたので聞きに行きました。普通にC#使っているだけだとなかなか知見がたまらない気がする「ネイティブ(C,C++,Objcなど)」と「マネージド(C#)」の間を行き来するためのテクニックをXamarin.iOSでどのように使っているかを詳しく説明してくれました。Xamarin.iOSでの開発経験はないのですが、どんな原理で動作しているのかはわかった気分になれました。

めくるめくシェーダアートの世界 @ta_ka_tsu

めくるめくシェーダアートの世界 by Youichi Takatsu | トーク | iOSDC Japan 2019 #iosdc - fortee.jp

めちゃくちゃハイレベルで多くのテクニックはちゃんと理解できていないです。しかし「頑張れば自分にもできるかもしれない」という気分になることができました。通常の3Dグラフィックスは「カメラ」とか「光源」とか「シェーダー」を組みあせて作り上げると思うのですが「シェーダアート」というものはそういうのは一切使わずに、「フラグメントシェーダー」の処理だけでグラフィックを作り上げたりアニメーションを作り上げたりする世界とのことです。そのため、数学とか物理な感じの理論でガチ戦っていく感じで、それで見栄えのよいものができていくの、かっこいい世界だと思いました。

Swiftでつくるファミコンエミュレータのススメ @zetta1985

Swiftでつくるファミコンエミュレータのススメ by thara | トーク | iOSDC Japan 2019 #iosdc - fortee.jp

低レイヤーのトークをする勢として気になるLTでした。フラグレジスタをSwift自分で実装していくコードとか紹介されていましたが低レイヤー好きには胸熱です。最適化するだけでめちゃくちゃ性能よくなるから可読性を犠牲にするようなチューニングはいらないとか、Swiftコンパイラのすごさを改めて実感。僕がファミコンを楽しんできた世代なのもありとても胸熱でした。

感想

去年に引き続き今年も登壇することができてめちゃくちゃうれしかったです😭 いろいろな知り合いの方とお話しできたのもとても楽しく、初めての方とお話しできたのもよかった。 普段の開発に使えそうな知見も得ることができましたし、将来役立つかもしれない知識も得られました。新しい分野も知ることができました。

iOSDCは複数トラックの中からたった一つを選択しながら聞いていくスタイルなので、当日に聞けるトークは全体の中のほんの一部でした。聞きたいトークもLTもかなりあきらめることとなってしまいました。だから動画が公開されたら、当日に聞くことができなかったトークを絶対みたいです

今年のiOSDCも最高によかった😆

iOSDC[スタッフ|スポンサー|参加者|スピーカー]の皆様ありがとうございました。

f:id:rikusouda:20190905175435j:plain