世界中の著名エンジニアから学ぶ最新のSwift事情/try! Swift参加レポート Day1

こんにちは。金子です。2016年3月2日〜3月4日の間で行われていたtry! SwiftというSwiftのカンファレンスに参加してきました。私は今年からゼクシィキッチンのiOSエンジニアとしてSwiftを書いています。Swiftのオープンソース化や昨今のサーバーサイドSwiftの動きなどSwift周辺の熱が高まっている中で行われたカンファレンスでコミュニティの大きな盛り上がりを肌で感じてきました。

try! Swiftとは

IMG_0704-2

try! Swiftとは、渋谷で3月2日から4日までの3日間行われた国際的なSwiftのカンファレンスです。世界中からSwiftエンジニアが集まり、講演者の多くが海外の有名なエンジニアでした。約30分のトークが3日間で33セッションもありかつ一つの部屋ですべて行われたため、非常に濃密なカンファレンスでした。私もこれまでいろいろなカンファレンスに参加してきましたが、最も濃密な内容だったと思います。

IMG_0706-2

弊社リクルートマーケティングパートナーズはスポンサーとしてtry! Swiftを協賛しました。多くのiOSアプリ開発でSwiftを既に導入しており、Kyobashi.swiftのようなイベントも開催しています。SwiftでバリバリiOSアプリを開発したいエンジニアを採用中とのことなので、興味のある方はぜひお問い合わせください。

本記事では、一日目に行われた11セッションのうち、個人的に特に印象に残ったトークをご紹介したいと思います。

Swiftのエコシステムに飛び込む

try! Swiftの最初のセッションでした。Swiftのオープンソース化から3ヶ月が経ち、急速にSwiftを取り巻くエコシステムが発展しています。このセッションでは、Swiftのエコシステムの概観がわかりやすく解説されており、オープンソース化からキャッチアップできていなかった身としては非常に勉強になりました。

個人的に一番気になったのはSwift Package Manager(以下、SPM)でした。現在、CocoaPodsとCarthage(「カーセージなのかカルタゴなのか」という質問も飛び出しました)というパッケージ管理ツールがある中、Appleが公式に開発しているSPMが今後どのような役割を果たすのか気になるところです。Xcodeとの統合というロードマップもあるようで今後はCocoaPodsやCarthageよりSPMが有望なのではという話がありました。

📺(tvOS)

tvOS向けのアプリ開発についてのセッションでした。tvOS専用のUIライブラリは存在せずUIKitが中心となっているため、iOSアプリ開発と同じように開発を進められるそうです。しかし、tvOSにはテキスト入力が困難であったりストレージがごくわずかしかなかったりするなどiOSにはない制約があるため、それらに注意して開発やUIの設計を行う必要があるそうです。その他、Siri remoteと呼ばれるリモコンを使った操作に対応するための実装や、シミュレータを使ったデバッグ方法についても解説されました。

平常心で型を消し去る

「型とは何か?」という根本的な問いから始まり、SwiftでProtocol Oriented Programming(POP)をするための"Type erasure"という実践的なテクニックを紹介するセッションでした。型は具体型と抽象型に分類することができるそうです。具体型は実装をもちデータを表す型で、抽象型は不完全な実装でプレースホルダーをもつ型だという説明がありました。Swiftでは抽象型を変数の型として宣言することができません。そこで、以下のようなラッパーを用意することでこの問題を乗り越えることができたそうです。

class AnyPokemon<PokemonType>: Pokemon {
    private let _attack: PokemonType -> Void
    required init<U: Pokemon where U.PokemonType == PokemonType>(_ pokemon: U) {
        _attack = pokemon.attack
    }
    func attack(type: PokemonType) {
        return _attack(type)
    }
}

このテクニックは個人的に目にウロコで、いま直面している問題を解決するものでした。このセッションのあと質問しに行ったところ、なんとペアプログラミングまでしていただきました。こういう出来事はカンファレンスの醍醐味だなと感じました。

Core Animationで作る高度なグラフィックス

UIKitの下に隠れているCore Animationフレームワークについてのセッションでした。Core Animationとはグラフィックスやアニメーションを管理するためのフレームワークで、GPUで重い描画処理でも実行できるそうです。このセッションでは、多彩な例を挙げながらCALayerなどの機能を紹介しており、かっこいいUIがどのように実装されているかが理解できました。特に驚いたのは、iPhoneのロック画面にある「slide to unlock」というキラキラしたアニメーションがいかに実装されているかを解説した場面でした。Reveal.appというアプリを使ってCALayerを複数重ねて実装されていることを解析したそうです。以下のリポジトリで詳細が紹介されています。

まとめ

一口にSwiftのカンファレンスといってもiOSアプリに関わるセッションに限らず、サーバーサイドSwift、アプリアイコンのライブデザイニング、HomeKitなど幅広い内容で非常に充実した内容でした。また、多くの海外のiOSエンジニアの方々と交流によって日本だけでは得られなかったような知見や考え方を知ることができ、iOSエンジニアとして1つステップアップできた感じがしました。