2018.04.17

【レポート】try! Swift Tokyo 2018に参加しました

こんにちは。Eight事業部でインターン生として働いています、岡田直道です。

2018年3月1日〜3月2日にベルサール新宿グランドにて開催された「try! Swift Tokyo 2018」に参加しましたので、そのレポートを書きたいと思います!

「try! Swift」って何?

try! Swiftは、プログラミング言語「Swift」に関する大規模なカンファレンスです。毎年、New York、インドのBangalore、東京の3都市で開催されており、東京で開催されるのは今年で3回目です。

国内で開催されているSwift関連の大規模なカンファレンスだと他には「iOSDC」が有名ですが、iOSアプリ開発が題材となっているiOSDCとは違い、try! SwiftはSwiftに焦点を当てて開催されるカンファレンスです。iOSアプリ開発の他にもサーバーサイドSwiftや、Swiftコンパイラの中間言語、macOSやwatchOSの開発など、Swiftにまつわる話なら何でもござれのGeekな空気が特徴です。

今年のtry! Swift Tokyoは800人を超える参加者が集まり、過去最大の規模になったそうです。自分は初めて参加したのですが、予想以上の人気と海外の方がたくさん来場されていたことに驚きました(ちなみに上記のtry! Swiftの公式ページへのリンク先は、もう2019年のものに更新されています。早いですね)。

IMGP1045

初日のセッション開始前の様子。最終的には、この椅子が満席になるほどの参加者が集まりました!

Sansanは、ネックストラップスポンサーとして参加しました。ネームプレートに付属しているネックストラップには、try! SwiftのキャラクターであるRikoのロゴとともにSansanのロゴがあしらわれ、かわいらしいデザインでした!

IMGP0887

ネームプレートとネックストラップ。右に見切れているお城は、2017年のものと絵がつながるデザインだそうです! ということは、来年は……。

ブース出展に、パフォーマンスも! まるでお祭り!

スピーカーセッションは、1つの大きな部屋を朝10時から夜18時までフルに使って、2日間で合計32のセッションが行われました。発表内容については後述しますが、隣の部屋ではスポンサー企業によるブースの出展が行われました!

DSC04196

企業ブースの様子。話し掛けるのが苦手な参加者でも、ノベルティーやアンケートのおかげで会話のきっかけが作りやすかったです。

各企業ブースでは、ステッカーやTシャツ、お菓子、技術書などなど、ユニークなノベルティーがたくさん配布されて、とても盛り上がっていました。自社のPRだけでなく、ライブコーディングや技術にまつわるアンケートなどの企画も実施されていて、Swiftというプログラミング言語を通じて、国籍を問わずさまざまな人々が盛んに交流していました。

IMGP1237

技術カンファレンス恒例のアンケート。「guard let文のreturnは1行で書くか、3行で書くか」なんて、マニアックなものもありました(笑)。

一方で、スピーカーセッションの部屋ではマジックショーやプロのけん玉師によるけん玉ショーなどの催しものが行われ、技術系のカンファレンスとは思えないような雰囲気でとても盛り上がっていました。

企業ブースの部屋の隅には、休憩用の畳スペースが設置されていたので、張り巡らされたコンセント網からMacの給電をしつつ、まったりとトークを聞いている方も多かったです。ちなみにお昼の休憩時間中には、トークを映し出すためのモニターを使ってスプラトゥーンの国際交流戦が行われていて、こちらは別の盛り上がりを見せていました。

濃密すぎるスピーカーセッション

そんなこんなでお祭り気分を楽しめたtry! Swiftでしたが、メインとなるのはやはりスピーカーセッションです。

当日のタイムテーブルについてはこちらの記事に詳しくまとまっています。ここでは自分が気になった発表について、いくつか紹介したいと思います。

関心の分離と単純化のためのSwiftコードの最適化 – Javier Soto

実際の開発でありがちな実装場面について、可読性の高いコードを書くための指針がいくつかの例とともに示されていました。この手の議論はさまざまな場所でなされていますが、個人的には「Separating the “what” from the “how”(Howからwhatを切り離す)」という考え方が、可読性の高いコードを書くための指針を簡潔に言い表していて良いなと思いました。変数をクロージャ式で定義したり、enumの特性を利用してUserのProfileの通信状態を管理したりと、実用的で分かりやすいプラクティスが多く紹介されていたので、参考にしたいと思いました。

AST メタプログラミング – Katsumi Kishikawa

AST(Abstract Syntax Tree)と呼ばれるSwiftコンパイラの構文解析結果を分析することで、Swiftソースコードに対するメタプログラミングを実現していました。JavaScriptなどで利用されているPower AssertをSwiftで実現するためのSwiftPowerAssertや、Swiftソースコードに対してLintingを行うことのできるswiftfmtなどが紹介されていました。どちらのライブラリーについてもWeb上で機能を試すことのできるPlaygroundが公開されており、実際に触りながら発表を聞くことができたことが非常に魅力的でした。

Swift5のOwnershipに備える – Toru Kuriyama

SansanのiOSエンジニア栗山による、Swift5で導入が検討されているOwnership機能についての発表です。

DSC04256

Swift5では、Swiftがさらに高速に動作するために必要な機能群をOwnershipと名付け、その内容がAppleの公式リポジトリに公開されています。これらの機能群に先立って排他則がSwift4にて実装されていることや、関数の引数を読み取り専用の参照渡しにするshared参照、コピー不可能な型を定義するmoveonlyキーワードについての利用例が紹介されました。

既にOwnershipを導入しているRustでは学習コストの高さが問題視されているようですが、Swiftはこれらの機能群をOpt-inな機能として提供することで従来の簡便さを維持しつつ、高度なパフォーマンスチューニングを可能にするようです。将来リリースされる予定の機能や移行の流れについて予め考えることは、その特性を理解し効果的に取り入れるために非常に重要だと感じました。

UIImageView vs Metal – Shuichi Tsutsumi

MetalImageViewという、UIImageViewのように画像を扱えるMetalラッパークラスの実装を行った経験を通じて、GPUレイヤーの処理を細かく追っていくという内容でした。XCodeのInstrumentsであるMetal System Traceを効果的に利用してボトルネックを特定し、パフォーマンスチューニングを行っていく過程はとても勉強になるもので、GPUに関する知識が全くない状態でも分かりやすく、大変興味深い内容の発表でした。

最後の最後まで楽しい、最高のイベントでした

数々のスピーカーセッションが終った後は、大規模な懇親会が開かれました!

おしゃれな料理やお酒を片手に、国内外問わずたくさんのSwiftデベロッパーの方々とお話をすることができました。華やかな衣装でパフォーマンスをしている方もいて、最後まで賑やかな雰囲気を味わいながらお祭り気分を楽しむことができました。

「今日Starを付けたライブラリーを動かしてみたい」「発表の内容を試してみたい」「もっと自分でアプリを作ってみたい」「英語が話せるようになりたい」と多方面にモチベーションが爆発するような素晴らしいイベントでした。来年も絶対参加したいと思います!!

IMGP3860

懇親会後の集合写真。来年もまた来たい!
text: 岡田直道