Gunosy Tech Blog

Gunosy Tech Blogは株式会社Gunosyのエンジニアが知見を共有する技術ブログです。

try! Swift Tokyo 2019に行ってきました 2日目と3日目 #tryswiftconf

こんにちは。GunosyでLUCRAのiOSアプリを開発している吉岡(@rikusouda)です。try! Swift Tokyo 2019に参加してきたので、2日目と3日目のレポートを書きます。

はじめに

僕はtry! Swift Tokyoには2017年から参加していて今回で3回目です。過去に参加したときの体験がとても良かったので今回も迷わずに参加を決めました。try! Swiftは海外のスピーカーが多数いるなど、iOSDCや普段の勉強会とはまた違ったセッションがあるのが面白さの一つではないかと思います。

www.tryswift.co

僕は初めてのカンファレンス参加がtry! Swiftで、それをきっかけにiOSの世界にのめり込んでいったこともあり、このイベントは毎年楽しみにしています。

このカンファレンスやコミュニティへの感謝の気持ちからこの記事を書きました。

1日目のレポートはどうした?

別のメンバーが記事を書いてくれることになりました。乞うご期待!

気になったセッション(2日目)

カンファレンスのタイトルに Swift が入っていることもあり、iOSアプリ開発に限定されないようなSwiftそのものについてのセッションも目立ちました。普段iOSアプリを開発しているとUIKitの使い方やGUIアーキテクチャの話題は多くインプットされますが、Swiftがどのように動作しているのかなどはなかなかインプットの機会がありませんでした。そういう観点から今回は特にSwift内部の話を気になったセッションとして紹介しています。

Swift type metadata: @kateinoigakukun

Swiftを普段使っているだけではわからないようなSwiftの内部動作を追求するとても面白いセッションでした。このセッションではstructを例にとり、Swift内部で扱っているMetadataについて紹介しています。本来はこの情報にプログラムから正規の方法でアクセスすることはアクセスすることはできないのですが、ポインタによるアクセスを使うことでMetadateを使う方法が紹介されていて、発想がとても面白いです。structの関数呼び出しの仕組みや型名を文字列で取得するための仕組みも解説されているので、普段書いているSwiftがどのように動いているかわかるようになるはずです。よりSwiftの気持ちになってコードが書けるようになりそうです。決してマニアックな感じの説明ではなく、Swiftコンパイラに詳しくない初心者にもわかりやすい説明だったことも気になったポイントです。

アセンブリ、君ならできる!: @armadsen

資料: https://www.andrewmadsen.com/AssemblySlides.pdf

iPhoneシミュレータなどでデバッグをするときに使うIntel系CPUのアセンブラを使ったデバッグテクニックの紹介でした。 限られた時間内でとても奥深いことを説明する内容だったため少し急ぎ足ではあったのですが、アセンブラの基礎を解説したあとC言語の関数コールをアセンブラでどう実現するかの解説がありました。このセッションで紹介されていたようなデバッグ手法に行き着くためには、アセンブラやコンパイラの知識を幅広く習得する必要があり少々ハードルが高い印象があったのですが、必要な知識に的を絞って解説してくれた点が気になったポイントです。そしてこの知識を応用したデバッグテクニックの紹介へと続きました。普段書いているプログラムがどのように動いているかはとても興味深いことではないでしょうか。

ワークショップ(3日目)

3日目はセッションを聞く方式ではなく、ワークショップとピアラボ(もくもく会)でした。この方式は去年と同様です。この3日目が参加型イベントになっているというのもtry! Swiftの特徴の一つと思います。2017年のハッカソンに参加して依頼、この3日目のコンテンツは毎年楽しみにしています。

今年は Open Source Swift Workshop というものに参加しました。このワークショップでは、Swiftコンパイラのビルド方法やバグの見つけ方などについて説明を受けたあとは各自自由に作業する感じでした。SwiftコンパイラやFoundationなどにあるバグを修正したりSwiftSyntaxを使ったツールを作る人が多かったように思います。何人かの人がワークショップの中でSwift関連リポジトリに初めてプルリクエストを出しており、Swift関連リポジトリに触れる良い機会となっていました。

僕はFoundationにあるNSSetというクラスのdescriptionというプロパティが未実装だったことを見つけたので、ワークショップではこれの実装に取り組み、無事にマージされました。

github.com

ワークショップは午前で終了しましたが、午後はピアラボが開催されていたのでワークショップの内容を引き続き作業していた人も見受けられました。ワークショップや1日目、2日目のセッションを振り返るための時間としてもよい3日目でした。

まとめ

今回のtry! Swiftでは業務で試してみたい内容や普段なかなか調べられないことを知るきっかけが多くありました。3日目のワークショップではプルリクエストを出してマージされるなど、この3日間で今まで以上にSwiftと仲良くなれました。