Diverse developer blog

株式会社Diverse(ダイバース) 開発者ブログです。

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

どうもこんにちは、冬場は隣駅の銭湯まで毎日通っている @imaizume です。
都内だと深夜まで営業している店も多く、たった460円でリラックスできるのでリフレッシュにオススメです。

f:id:incheon-special:20190424191556j:plain

try! Swift Tokyo 2019の会場にて

遅くなってしまいましたが、3/21から3/23にかけてベルサール渋谷にて行われた try! Swift Tokyo 2019 へ参加してきましたので、今回はそのレポート記事になります。

try! Swift 概要

www.tryswift.co

try! Swiftは、Swiftに関するさまざまな技術発表が行われる国際的なカンファレンスで、過去にはアメリカのニューヨークやインドのバンガロールでも行われています。

今回はなんと、30カ国から900名以上が集まっていて、実際に自分が会場を見渡した時も約半分が外国からの参加者だったように見えました。

3日間の会期のうち、1日と2日目がセッションとブース展示、3日目がワークショップとピアラボという構成になっています。

また2日目の終了後には懇親会が行われますが、英語での会話があちこちから聞こえてくるというそんなイベントでした。

セッション (1日目 2日目)

セッションでは、Swiftの言語そのものにまつわる話からiOSやmacOS、テスト、サーバーサイド、IoT、さらには波形編集といったテーマまで、幅広い発表がされていました。

普段の業務で扱う機会がない技術の話も含めどれも非常に面白い発表でした。

今回はその中でも個人的に特に気になったものを3つピックアップしたいと思います。

1. Introduction to Swift Keypaths (@terhechte さん)

speakerdeck.com

Swift 4.0からKVOの書き方が新しくなり、KeyPathをより簡単かつ直感的に生成できるようになりました。

しかし自分もまだあまり使う機会がなく知識を整理できていなかったため、この発表で改めてSwift 4以降のKVOの仕組みや活用法を知ることができました。

またProtocolでは実現できない高レベルな抽象化を例に説明してくださったので、この手法はプロダクトでもぜひ取り入れたいなと思いました!

2. テストケースでMemory Leakを発見する (@tarunon さん)

www.icloud.com

 

こちらはSwiftで起こりがちな循環参照の問題を、コードレビューやメモリデバッガーではなくテストケースにより発見・修正する試みについての発表。

Swiftにはオブジェクト自身の状態を取得するために、Mirrorと呼ばれるAPIがついており、このMirror APIを利用して循環参照の可能性がある場所を検知しweakを挿入するXCTAssertNoLeakというライブラリを作成されたそうです。

自分の普段の開発でも現状はコードレビューに頼っているので、早くSwift 5にアップデートしてこちらのライブラリを試してみたいと思いました!

SwiftCheckで始めるProperty-based Testing (@tobi462 さん)

speakerdeck.com

一般的なテストで用いられる境界値分析では、テストを設計するエンジニアが仕様上検証が必要そうな値を考えて入力と期待値を設定します。
一方プロパティベーステストは、テスト対象の特性に着目しランダムにテストケースを生成するという手法で、これを簡単に導入できるSwiftCheckの紹介もされていました。
自分のプロダクトでも場所によってはこの手法が試せるのではと思い、現在プロダクトに実践導入を行っているところです、大変参考になりました!

ワークショップ (Testing & Performance) とピアラボ (3日目)

f:id:incheon-special:20190424191603j:plain

ピアラボでの講義の様子

3日目は会場を変えてワークショップとピアラボが開催されました。

午前のワークショップはいくつかのテーマごとに講師の方を囲みながら課題をこなしたり相談をするという内容です。

自分はプロダクト開発での直近の関心であるTesting & Performanceのワークショップに参加しました!

最初に講師の @samuelgoodwin さんからInstrumentsのTime ProfilerとNetworkについての説明を受けた後、質問をしながら各自が持参したコードを改善してきます。

自分は現在のプロダクトのコードで起動時間の改善を行いたかったため、初めてのTime Profilerを触りながら時間の掛かりそうな処理を探しました。

するとなんと、APIコール時にパフォーマンスを大きく下げるコードを発見することができました。

そして最終的には、改善により1リクエストあたり数百ミリ秒の短縮につなげることができました!

やはり実際に手を動かして新しい技術を身につけたりレビューをしてもらえるのは、ワークショップの醍醐味と言えるのではないでしょうか。

そして午後のピアラボは、各自が好きな作業をしたり参加者と交流したりする時間です。

3日目にもなると心身ともに疲れてはいたものの、非常に大きな充実感を得ることができ、次回のtry! Swiftへの参加意欲を大きく掻き立てられました。

参加者との交流

f:id:incheon-special:20190424191606j:plain

毎年恒例の畳スペースが今年も人気でした

国際カンファレンスであるtry! Swiftは、普段会えない海外のエンジニアと話せる絶好の機会です。

自分もランチや懇親会、さらにはイベント後のプライベートな飲み会にまでお邪魔し、たくさんの海外エンジニアさんと話すことができました!

ランチに出会ったとあるエンジニアさんとは、アプリの各設計思想に対するお互いの考えや少人数チームでのスキルアップ方法について議論しました。

また懇親会ではカザフスタンから来たというエンジニアさんに話を聞くことができ、日本と違って国内にまだデベロッパーが少なく情報を仕入れるのが大変だという話をしました。
このようにエンジニアが考えたり悩んでいることは万国共通なんだなと思いながら、同時に日本は情報にもモノにも恵まれていてありがたいなと改めて実感しました。

また参加者専用のSlackが用意されており、イベントの終了後も活発な交流がされているのが印象的でした。

自分もたまたまイベント後に打ち上げをしてところにお邪魔し、イベント外でも大変楽しい時間を過ごせたのが良かったです。

全体を通じた印象や感想

iOS以外の分野でのSwiftが広がっている

昨年あたりからサーバーサイドSwiftの話を少し聞いてはいたのですが、今回はそれ以外の分野でのSwiftの利用例の発表が目立ちました。
個人的にはあまり追っていなかった情報なので、今年は少し注目していきたいと思いました。

ノベルティが豪華

f:id:incheon-special:20190424191600j:plain

豪華なノベルティグッズ

try! Swiftのノベルティも各社デザイン性や機能性の高いものばかりでした。
中でも今回一番の目玉はBitriseさんのブースで先着で配られていたオリジナルのポスター!

ちょうどプロダクトのBitriseで困った点があり初日すぐに質問に行ったため運良くGETすることができました!!

try! Swift公式キャラクターのrikoちゃんがプリントされたトートバッグもかわいいですね、さっそく普段遣いしてます。

まとめ

ということで今回、自分は初めてtry! Swiftに参加してきましたが、予想以上に濃い時間を過ごすことができました。

明日からの業務で活かせる内容もたくさん聞けたので、ぜひ次は発表者としての参加を頑張りたい所存です!

またDiverseでは、try! Swiftをはじめとした技術カンファレンスへの参加・登壇を推奨しており、参加費も補助してもらえる制度があります

こうした社外活動にも興味を持たれた方はぜひ自分またはお近くの社員へお気軽にお声がけいただければと思います。