はじめに
こんにちは。ディベロッパーエクスペリエンスチームに所属している iOS エンジニアの freddi です。2023年5月にイタリアのトリノで開催された SwiftHeroes 2023 に登壇したので、登壇までの道のりや、海外カンファレンスの様子のレポートをお送りします。
SwiftHeroes とは
SwiftHeroes は、毎年イタリアのトリノで開催される Apple プラットフォーム開発者のためのカンファレンスです。世界から様々な有名な Apple Platform に関わるエンジニアが登壇します。例えば、過去には、日本の著名な iOS エンジニアである 岸川克己 さんや Server-side Swift で有名な Tim Condon さん、今年は RxSwift のクリエイターである Shai Mishali さんや、Sourcery を始めとした多くの活動を行っている Krzysztof Zabłocki さんなどが登壇しました。
2020年〜2021年は、新型コロナウイルスの影響でオンライン開催でしたが、2022年からはオフライン開催に戻っています。今年は5月3日にワークショップがあり、5月4日〜5日の2日間にトークが行われました。
今年のトーク動画は順次公開されているので、よろしければみなさんも見てみてください。
こちらは、今年の会場の雰囲気が伝わる動画です。0:49くらいに私がでます。なんか楽しそうです。
登壇するまで
トークプロポーザルの作成・採択
社内では、iOSエンジニアの中で海外登壇がブームになり、様々な海外のカンファレンスにプロポーザルを出してみんなで登壇するぞ!という目標ができあがりました。その時色々とトークできそうなネタが有りましたが、
- 身近にあるけど、だれもあまり深掘りしていないような Swift の言語仕様
- 最近調べてちょっと詳しくなったこと
- コンパイラに関するディープな内容で、聞くと面白そうな内容
という基準で考えた結果、Swift 5.8 からの Existential Type や Opaque Type、ジェネリクスという小さな機能に関する話をしたいな、と思い始めました。実は、去年の Swift のアドベントカレンダー15日目の記事として、このような 記事を書いていました。この記事をどうにか海外のカンファレンス向けにできないか、工夫することにしました。
数週間かけて、「Deep Dive into "any" and "some"」というタイトルで、以下のトークプロポーザル書き上げました。
----
As you may know, Swift 5.7 introduced the "any" keyword for protocol types, and future Swift versions will enforce its usage. We have already know about a similar keyword, "some," which is mainly used in SwiftUI. We know usage differences because compiler tells us with warnings and errors, however, there are still many secrets even if the build is passed, such as, runtime behavior, performance between module, and more, which is not talked in WWDC session. If we understand the deep side of them with compiler knowledge, we can create more effective and performant Swift APIs with this knowledge.
In this talk, I will discuss the mechanisms of "any" and "some" and what "Swift Engineers" really have to know about them. This talk puts the highest importance on knowledge of Swift Compiler, such as "Existential Container" which is the special mechanism of "Existential Type", protocol types and method dispatch.
You'll learn ...
- The evolution of "any" and "some" with good Swifty API design (Recap)
- How Swift Compiler achieves feature of protocol type and it's performance
- "Existential Container" and "Existential Type" to understand "any" performance
- Module optimization of any and some
- Why we really need to have "any" keyword from Swift 5.7 from above perspective
This talk is targeting for the person who don't understand how they can use "any" and "some" effectively, also you will enjoy this talk if you want to know about deep side of "any" from compiler side.
----
審査する人が自然に読めるようなプロポーザル心がけたほか、チームメンバーに内容や英語のレビューをしてもらい、提出期限ギリギリまで改善した甲斐もあってか、無事採択されました。140のトークプロポーザルの中から、審査員の得票率が5位という結果になったそうです。やったね!
※ このようなトークプロポーザルを採択されるためにできる工夫については、iOSDC Japan 2020 で発表した私のトークで解説しているので、ぜひご覧ください。
プレゼンテーションの準備
トークをするための様々な準備は、採択のメールが届いた日から行いました。プレゼンテーションスライドは、見ている人がよりわかりやすく理解できるよう、アニメーションの動き方といった大まかなところから、文字の色といった細かいところまで、かなり工夫しました。内容の面白さや正確性のレビューは社内だけでなく、外部のエンジニアである koher さんや kateinoigakukun さんにもお願いしました。また、英語ネイティブのチームメンバーから、トークスクリプトと両方プレゼンテーションスライドの英語のレビューももらいました。プレゼンテーションスライドは本番ギリギリまで調整しつつ、練習も何度も行いました。最後の方はかなりへとへとになりなっていましたが、登壇後はその分の達成感がありました。
約160ページありますが、ほとんどアニメーションによるものです
イタリアに行く
準備も終わり、2日前になったので出発します。ここから約40時間かけてイタリアのトリノに向かいました。
画像: 飛ぶぞ
画像: トリノ上空
べっどがある…… pic.twitter.com/iHRNlbUVWU
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 2, 2023
40時間ぶりのベッドに感涙する筆者
SwiftHeroes 2023 参加・登壇
トリノ到着の翌日から、SwiftHeroes ではイベントが開催されるのでそれぞれ参加していきました。
ワークショップ
Donny Wals さんによるワークショップに参加しました。このワークショップでは、Swift Concurrency の基礎的な内容から、Task を含めた複雑なコードをどのように書いていけばいいか、どのように理解すればいいかを学びました。
Check out the #SwiftHeroes23 workshop hosted by @donnywals, who says you'll learn everything you need to start building moderately advanced systems with Swift Concurrency.
— Swift Heroes (@swiftheroes_it) April 28, 2023
https://t.co/30SV24BMyJ pic.twitter.com/ny9ewsbpPQ
実は私自身、 Swift Concurrency をそこまでディープに追えておらず、当時はキャッチアップできるか心配していましたが、このワークショップでは Donny さんが初歩的なところからわかりやすく解説されていたため、とても楽しく学ぶことができました。
また、ワークショップに参加されていたみなさんと親交を深め、カンファレンスの最終日までずっと話してたりできました。ワークショップに参加できてとても良かったです。
スピーカーディナー
ワークショップの夜、スピーカーディナーに参加しました。私は英語を聞くのが苦手なので、どうにかしてスムーズにコミュニケーションが取れないか工夫し、日本のお菓子を配ったりしました。ウケは良かったのでホッとしました。
SwiftHeroes Speaker Dinner! 🍕🇮🇹@swiftheroes_it @leah_m_vogel @icanzilb @zats @b3ll @___freddi___ @merowing_ @DonnyWals @khanlou @peterfriese @polpielladev (sorry for tags I don’t have 😂) pic.twitter.com/dmwb2PjwFF
— Shai Mishali (@freak4pc) May 3, 2023
スピーカーディナーの様子
いままでコロナ渦のオンラインカンファレンスでお互いに存在を認知していた方や、try! Swift NYC 以来久しぶりに会った方、自分が貢献している OSS に同じく貢献した人とようやくお会いできてうれしかったです。
@k_katsumi pic.twitter.com/RrpLf6hKta
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 3, 2023
Marin さん
@giginet へ
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 4, 2023
With @polpielladev pic.twitter.com/OJtarhKUv6
Pol さん
カンファレンススタート
さて、ディナーから帰ってしっかり寝て、カンファレンス本番の日です。心配性なのでかなり早めに会場につきました。開場時間になると、会場にぎっしり人がいてとても驚きました。ここまで人が密にいるカンファレンスが久しぶりなので、アフターコロナも始まりつつあるなあ、と思いました。また、日本人の参加者が私以外に、もう一人いらっしゃったことにも驚きました。
画像: アフターコロナなカンファレンス会場(SwiftHeroes 公式アルバムより抜粋)
マスコットのクッキー
このカンファレンスではオンライン配信も行っており、全世界から登壇を見ることができました。ちょっと器用なことをすると、今リアルでいるトラックの動画を見つつ、別のトラックにあるトークの動画をライブから見ることができます。
And I’m also seeing great accessibility talk from online from audotium #SwiftHeroes2023 #swiftheroes23 @swiftheroes_it (I forget to battery for AirPods so without sound 🥲) pic.twitter.com/rCnZJM1s7O
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 5, 2023
本当に同時視聴してました
Hi! @zats and @freak4pc @swiftheroes_it #swiftheroes_2023 pic.twitter.com/5ZdYiQASQr
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 4, 2023
登壇者と自撮りシリーズ
登壇する
さて、初日はなんと私のトークもあります。カンファレンスは何回も登壇したことあるし、準備はしていましたが、ステージに立つとかなり緊張します。
画像: 自撮りで気を紛らわそうとするもブレブレである
いざ喋り始めるとなると、緊張もほぐれて、余裕を持ってゆっくり喋ることができました。160ページも有りましたが、時間通りに喋ることができて楽しかったです。
Go yukiiii goooo @swiftheroes_it @___freddi___ pic.twitter.com/0r7QfBZmmJ
— Shai Mishali (@freak4pc) May 4, 2023
Shai さんが撮ってくれた!
Wow, @___freddi___ presentation @swiftheroes_it was definitely a “missing WWDC section” about some and any. 🤯 #swiftheroes23 pic.twitter.com/YJrURUmI5u
— Ezequiel Santos (@ezefranca) May 4, 2023
プロポーザルに「 WWDC にはないトーク」と書いたネタを拾ってくれた
Yuki Aki (iOS Engineer, LINE) talks about "DEEP DIVE INTO "ANY" AND "SOME"" in Auditorium! #SwiftHeroes2023 #turin #mobile #apple pic.twitter.com/0rR7ceS6xK
— Swift Heroes (@swiftheroes_it) May 4, 2023
SwiftHeroes 宣伝ツイート
※ 私の動画は公開され次第、更新して追記予定です。
登壇したあとは、いろんな人から「おもしろかったよ!」と声をかけられて、とても嬉しかったです。やはり登壇することの醍醐味はここにあるなあ、と毎回思います。日本からオンラインで聞いてくださった方々もいてとても嬉しかったです、皆さん本当にありがとうございました。
他トークの紹介
SwiftHereos 2023 で見たトークはどれも勉強になるので、全て必見だと思っています。しかし、すべてのトークを記事で紹介するのは難しいので、個人的に特に注目するべきと思ったものをいくつかピックアップして紹介します。
BUILDING DELIGHTFUL APPLICATIONS
Netflix のエンジニアである Adam Bell さんのトークでは、彼が開発した音楽アプリがどのように作られているのかをコードで見て学び、そこから面白い体験をどのように生むことができるかを学ぶことができました。特に、 iPod のようなアルバムのスクロール UI がどのようにできるかを順を追って見るのが楽しかったです。
アプリが気になる方はここからダウンロードしてみてください。https://apps.apple.com/jp/app/albums-music-shortcuts/id1602404960
A NEWBIE'S GUIDE TO THE COMPOSABLE ARCHITECTURE
Shai さんは、 1からアプリを作るライブコーディングを通じて、 The Composable Architecture(TCA) の紹介をするトークを行いました。いままで TCA に対して難しいと思っていましたが、このトークを通じて、 TCA を使うためにはどうすればいいかが簡単に理解出来、TCA の様々な強みを学びました。また、眼の前でリアルタイムに The Composable Architecture を使ったアプリが出来上がるのは圧巻でした。
MAKING DEVELOPER TOOLS WITH SWIFT
Pol さんのトークでは、 Swift を使って開発者向けツールを作ることの意義や彼自身の開発事例を話されていました。iOS/Swift のカンファレンスで、このようなトークを聞くことができるのは珍しく感じました。その上、私たちのチームでは、 Swift を使ってビルドツールやコード生成ツールを作成しているので、かなり勉強になることがありました。
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 5, 2023
WARNING!! NEW TECHNOLOGY AHEAD
また、Donny さんのトークでは、新しい技術を使いたいときに、どのようにすべきかについて話しています。私たちのアプリでも、新しい技術を多く取り入れたい分、 iOS のバージョン管理などを気をつけなければならないので、このトークで紹介された考え方は勉強になりました。
#swiftheroes2023 pic.twitter.com/CL2Unbv7rB
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 4, 2023
※ 動画は公開され次第更新して追記予定ですが、よかったら公式チャンネルを登録してチェックしていただけると幸いです: https://www.youtube.com/c/swiftheroes
その他のトークの雰囲気
Pokedex #SwiftHeroes2023 pic.twitter.com/ItMosbHZ8c
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 4, 2023
Pokedex は万国共通である
Leo @leogdion is now on stage after long trip 🤯 @swiftheroes_it #swiftheroes23 #SwiftHeroes2023 pic.twitter.com/PQCFZTbvTp
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 5, 2023
なんと、Deep Dish Swift というシカゴのカンファレンスをハシゴしてきたらしい
lol #swiftheroes2023 pic.twitter.com/XUmiyiH6NJ
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 4, 2023
こういう面白いネタが散りばめられているのが海外のトークで好きなところ。GIF はこれ
Now @peterfriese show! @swiftheroes_it #SwiftHeroes2023 #swiftheroes23 pic.twitter.com/d8gnX9bhWc
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 5, 2023
Firebase のエンジニアのトーク。めっちゃわかりやすい SwiftUI のトークだった
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 5, 2023
iPod や iPad など、色々なデバイスのプロトタイプの画像が見れて面白かったトーク
登壇後
登壇後は余裕ができたので、会場を歩き回りました。実は会場の建物は、MAUTO という車の博物館でした。SwiftHeroes のパスを見せると入場料が割引になるらしいので、登壇者の方と一緒に見て回りました。
画像: かっこいい車
画像: おそらく車のモック
カンファレンスの一日目が終わった後は、スピーカーの方々と一緒にディナーに行き、あつあつのピザを食べました。
Pizza time! 🍕🇮🇹 @swiftheroes_it @zats @DonnyWals @___freddi___ @b3ll @inkedengineer @polpielladev @SiriVita @peterfriese @hiddevdploeg @JakubKiermasz 💪📱 pic.twitter.com/kA3ZptIdho
— Shai Mishali (@freak4pc) May 4, 2023
Shai さんによる登壇者集合自撮り パート2
ピザ美味しかった さすが本場 pic.twitter.com/G5YG1Q4puQ
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 4, 2023
普通に日本の S サイズくらいはあるピザ
観光
カンファレンスの全日程も終え、数日余裕があったので、イギリスから来てくださった日本人エンジニアの方(先程の方とは別の方)とトリノの町を観光しました。観光で、多くの建造物や建物、グルメを満喫しました。将来トリノに住みたいですね〜、と二人で話しながら歩いたのを覚えています。
画像: ジェラートは必須
画像: サン・カルロ広場。トリノは地面がほぼほぼ石畳なので足が痛くなる
画像: よくわからないけど美味しかったシリーズ
夜、空港近くのホテルに戻ろうとしたときに、カンファレンスの運営の人とバッタリあって、さらにワインを飲みまくったのは本当に楽しかったです。その後、50時間の復路の移動時間に思いを馳せながら、Uber で空港近くのホテルまで向かいました。
swiftheroesの運営の人と偶然会って呑んでる pic.twitter.com/XhfQunuSM0
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 6, 2023
お世話になったカンファレンスのスタッフと乾杯
帰国
その後、50時間かけてゆっくり帰りました。帰りも疲労感が大きかったですが、それ以上に達成感でとても満ち溢れていました。飛行機でイタリアでの出来事を思い返していたら、長い飛行時間もあっという間に感じました。
帰るぞ pic.twitter.com/w3A5Xr6U4d
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 7, 2023
チケットが多い
人生
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 8, 2023
台湾でおそらく呟いたけど、どういう感情で呟いたのかわすれたやつ
不審者帰国情報 pic.twitter.com/FTZqWDaPVH
— freddi(Yuki Aki) @翻訳本発売中 (@___freddi___) May 9, 2023
家族に撮ってもらった
所感
コロナもまだまだ続いている中でのカンファレンスでもあって、参加される方がどのくらいいるのか気になっていましたが、オンラインだけでなくオフライン参加者もたくさんいて、非常に驚きました。世界の色々な方々とコミュニケーションができる時代が再び訪れてきたと感じ、とても嬉しいです。登壇するしないに関わらず、今後も積極的にカンファレンスには参加していきたい、とまた改めて思い始めました。
以前、 try! Swift NYC で海外登壇したときからコロナを経ても、何も変わらず海外登壇は本当に楽しかったです。様々な方々から面白くわかりやすいという声も頂き、かつ他の登壇者からはスライドもきれいだったという声も頂いたので、ここまで苦労して準備した甲斐があったと感じています。毎日のスライドづくりや、登壇発表も練習から本番までがんばり、さらに片道40時間以上というハードな日程でしたが、その分得たものも多かったと思います。今回も多くの方々のサポートがあり、この登壇を実現できました。本当にありがとうございました。
おわりに
今回は海外のカンファレンスへの登壇にフォーカスした話をしましたが、iOSDC Japan 2023 という国内のカンファレンスでも、会社の他のエンジニアと一緒に登壇するので、その時のレポートや工夫も今後伝えていければな、と思っています。これからも登壇頑張るぞ!!!
この記事を読んでいる皆さんも、国内だけでなく、ぜひ海外登壇にチャレンジしていきましょう!ここまでお読みいただきありがとうございました。