try! Swift Tokyo 2019に参加してきました

こんにちは。ライフスタイル事業部でレシピ動画メディアmoguna、美容メディアARINEのiOSエンジニアをしている矢崎です。今回、2019年3月21〜23日に開催されたtry! Swift Tokyo 2019に参加してきましたので、そのレポートをさせていただきます。

try! Swiftについて

try! SwiftはSwift言語に関する国際的なカンファレンスです。2016年に1回目が東京で開催され、その後ニューヨーク、サンノゼ、インドのバンガロールと広がり毎年各地で開催されています。

会場に向かう通路に歴代try! Swiftのポスターが並んでいました

自分は1回目のtry! Swift Tokyo 2016に参加しており、今回は3年ぶりの参加となりました。今年のtry! Swift Tokyoは世界32カ国から約900名の参加者が集まったとのことです。

会場の様子

海外からの参加者がとても多く、いたるところから英語の会話が聞こえてきました。セッションは半数以上が英語での講演だったと思います。

スポンサー企業のブースでは「どんなアーキテクチャを使っている?」というアンケートを行っていました。MVVMが一番人気のようですね。

セッション

セッションのテーマはiOSに関わらず、macOS、サーバサイドフレームワーク、アセンブリ、Swiftコンパイラ、3Dレンダリング、サウンドデザインなど様々な発表がありました。普段はiOSアプリのためにSwiftを書くことがほとんどなため、Swiftの言語的な特徴を活かしたトピックに新鮮さを感じました。以下、個人的に気になったセッションを2つピックアップして紹介させていただきます。

Swift Type Metadata

型のメタデータがランタイムでメモリ上にどのように表現されているのか、またそのメタデータを使ったユースケースについての発表でした。

Swift Type Metadata (ja) - kateinoigakukunのブログ

www.youtube.com try! Swift 2019 kateinoigakukunです。メルカリでインターンをしています。 今日はSwiftを理解するために重要なメタデータについて話します。Swiftは静…

静的型付け言語であるSwiftですが、String(describing: Int.self) のように型名をStringで取得するような処理は、内部的にはメタデータの情報を使った動的な動作で実現しているそうです。
また、Objective-CではランタイムAPIが用意されており、動的なメソッド入れ替え(Method Swizzling)が可能でしたが、これと同様のことがSwiftのメタデータを使い実現することができるとのことです。

このメタデータを利用したOSSライブラリはいくつかあるそうですが、Swiftのバージョンによってメタデータのレイアウトが変わるとその都度対応が必要でした。
しかしSwift 5からはABI安定化が実現したため、メタデータを使ったライブラリの開発がより活発になるのではないかと期待しています。

テストケースでMemory Leakを発見する

SwiftのMirrorというリフレクションの機能を使って、メモリリークを検出するライブラリXCTAssertNoLeakを作ったという発表でした。

アプリ申請直前にDebug Memory Graphを眺めていてメモリリークに気づくということが過去にあったので、テストで発見できるのはとても便利だと思いました。現在のプロジェクトではRxSwiftを使っているのですが、コードレビューで見落としてうっかりクロージャ内で循環参照を起こしてしまうということがあり、導入を検討したいと思いました。(そもそもテストをあまり書いていないという問題もありますが...)

最後に

セッション間の休憩時間が比較的長く取られており、その間にスポンサー企業のブースを回って、各企業のトップエンジニアの方や参加者との交流をしたりすることもできました。try! Swiftは技術的な内容にとどまらずSwiftの国際的なコミュニティを広げる素晴らしいカンファレンスだと思いました。

グリーのメディア事業ではMINE, LIMIA, ARINE, aumo, mogunaの5つのバーティカルメディアを展開しており、その中で4つのiOSアプリはSwiftで書かれています。非ゲームのネイティブアプリをゴリゴリ作っているイメージが少ないかもしれない弊社ですが、各ジャンルでトップメディアになるべく開発を行っています。また、子会社であるグリーライフスタイル株式会社ではエンジニアを募集しております。興味のある方はぜひこちらからご応募ください。