iOSDC Japan 2019 に参加しました #iosdc

iOSDC Japan 2019 に、9月5日(day 0)から9月7日(day 2)までの3日間、参加してきました。東京開催のカンファレンスに参加するのは、主に移動や宿泊の面で大変ですが、それだけの価値があったのではないかと思っています。ブログを書くまでがカンファレンスということで、大阪に帰る新幹線の中でブログを書きました(その時間だけでは書き終わらなかったけど)。

今回は聞きたいセッションが多かったので、ほとんどの時間をセッションで過ごしました。

SwiftのStringの文字数の数え方を完全理解する / Takanori Hirobeさん

https://speakerdeck.com/taka1068/swiftfalsestringfalsewen-zi-falseshu-efang-wowan-quan-li-jie-suru

StringはCollectionプロトコルに準拠していますが、添字アクセスにIntではなくString.Indexを使います。これはStringを扱う際には少々面倒な点です。なぜそのような仕様になっているのかを、Collectionプロトコルが要請する添字アクセスの計算量に着目して解説されていました。また、StringがMutableCollectionに準拠できない理由についても、同様の観点から解説されていました。こういった側面からの解説はあまりなかったように思いますので、とても良かったです。会社の同僚なので社内勉強会で事前にトークを聞いていましたが、そのときよりもずっとブラッシュアップされていて分かりやすかったです。受賞おめでとうございます。

Advanced Segue (2019年のSegue事情) / 所友太さん

https://speakerdeck.com/tokorom/advanced-segue-2019nian-falsesegueshi-qing

個人的にはSegueを使うのはViewControllerに別のViewControllerを内包させるためにEmbed Segueを使う程度でしたが、もっと使ってもいいのではないかと思わされる、Segueの可能性を感じるセッションでした。Custom Segueでdestinationに空のStoryboard Referenceを指定してSegueのperformでURLをopenするのは実用的だと思います。また、iOS 13以降ではSegue Actionを使うことで、扱いの難しかったprepareForSegueの実装から解放されるのは素晴らしいと思います。

スポンサーブース : Wantedlyさん

Swiftの問題に正解するとSwiftUI本がもらえると聞いて挑戦しました。4問あったのですが、最初の1問目で苦戦しました。メモリ管理周りは苦手です・・・。最終的には正解して無事に本をもらえました。ありがとうございます。

ライブラリのインポートとリンクの仕組み完全解説 / Kishikawa Katsumiさん

https://speakerdeck.com/kishikawakatsumi/swiftniokeruinpototorinkufalseshi-zu-miwotan-ru

基本的なところから丁寧な解説で聞きやすかったです。インポートやリンクは、概念もつかみにくいし設定も分かりにくいしでハマりがちなところだと思います。雑にエラーメッセージを検索しても、求める解決策が得られないことが多いです。そういうところをきちんとまとまった形で解説いただけるのはありがたいと思います。また、その仕組みについて知るには何をどう調べればいいのか、学び方を具体的に示してくれていたのが良かったです。

Swiftクリーンコードアドベンチャー ~日々の苦悩を乗り越え、確かな選択をするために~ / shizさん

https://speakerdeck.com/shiz/swift-clean-code

個々の具体的な問題をどのようにジェネリックな解決策としてまとめるか、具体的にコードを挙げながら、ひとつひとつ考え方を説明されていました。僕はまだまだジェネリックな解決をするのが上手ではないので、参考になりました。クリーンコードの考え方として、コードをチェックアウトしたときよりも綺麗にしてチェックインする、という言葉が印象的でした。ある程度は意識していますが、実際の作業の中ではできていないことも多いです。

Swift Playgrounds でタートルグラフィックスしよう!🐢 / Tomoki Kobayashiさん

https://speakerdeck.com/temoki/swift-playgroundsdetatorugurahuitukususiyou

LOGOとタートルグラフィックスの説明から、iOSアプリ開発者はシーモア・パパートの影響を受けている、とつながる一連の話が良かったです。また、開発されている TortoiseGraphics が実際に高校で授業に使われたとのこと、すごいなと思います。GitHubリポジトリにあるSubscribeのリンクをiPadから開くと、Swift Playgroundsアプリにインストールできるということで、実際にやってみました。手軽に実行できて良いですね。元同僚ですが、会社が変わってからも相変わらず頑張っていて素晴らしいなと思います。名古屋もどんどん盛り上がっていっているようで良いですね。

iOSアプリのリジェクトリスクを早期に発見するための取り組み / Kesin11さん

https://speakerdeck.com/kesin11/iosapurifalseriziekutorisukuwozao-qi-nifa-jian-surutamefalsequ-rizu-mi

アプリの審査で、うっかりミスや見落としでリジェクトされるのはつらいですよね。リジェクトを未然に防ぐためのチェックをツールで自動化して、Fastlaneで実行できるようにする、という発想が良いと思いました。また、QAチームがリジェクトリスクを調査しているという点も良いなと思いました。チェックツールをどのように実装しているかの解説も分かりやすかったです。

Swiftプログラミングと論理 〜そして帰ってきた圏論〜 / 稲見 泰宏さん

https://speakerdeck.com/inamiy/swift-and-logic-and-category-theory

今回のiOSDCでぜひ聞きたいと思っていたセッションのひとつ。論理式とSwiftコードとの対応について、丁寧に解説されて分かりやすかったです。具体的なコードで示してもらえたので、また自分でも試してみたいです。直観主義論理、2階命題論理とジェネリクス、あたりの解説も分かりやすくて良かったです。僕は型システムや圏論はまだ理解できていない部分も多いのですが、また引き続き勉強していこうという気持ちをもらったセッションでした。

茶会(day 1 夜)

アルコール飲料も提供されつつノンアルコールが基本の懇親会でした。「飲まないことがマジョリティの懇親会」があってもいいのではないか、ということですが、確かにそうですね。いろいろな話ができて楽しい時間でした。

Heart of Swift / koherさん

Value Semantics と Reference Semantics の説明、値型・参照型と混同しそうになるところを丁寧に説明してくれて良かったです。また、Protocol を型として用いる場合と制約として用いる場合とで分けて考える、Opaque Result Type をリバースジェネリクスシンタックスシュガーと考える、といった考え方について整理して話していただいて、学ぶところの多いセッションでした。

今こそwatchOS / 堤 修一さん

https://speakerdeck.com/shu223/jin-kosowatchos-number-iosdc

watchOS は最初の頃はやっていたけど、開発コストに見合わないのでだんだん撤退していく、という典型的なパターンで、最近の動向はあまり追えていなかったので興味深かったです。バックグラウンドでワークアウトを許可すればモーションが取れるというのは気になるところです。手を時計回りや反時計回りにまわすジェスチャーが取得できるデモが面白かったです。

SwiftyMath で学ぶ数学(抽象代数学) / さのたけとさん

https://speakerdeck.com/taketo1024/swiftymathdexue-bushu-xue-chou-xiang-dai-shu-xue

今回のiOSDCでもっとも聞きたいと思っていたセッション。とても面白かったです。僕は抽象代数学はある程度知っているので、それをどのようにコードで表現するのかに注目して聞きました。Protocol の conditional conformance で書くやり方は、数学での気持ちとコードが綺麗に一致して気持ち良いですね。型パラメータに整数値が渡せない問題を整数値に対応する型を作ることで解決するのは最初は強引な気もしましたが、その延長で素数も protocol で表現できているのはなるほどと思わされました。代数拡大によって√2や虚数単位iを実装するデモも面白かったです。

このセッションのあと、SwiftyMath を見てみたところ、SwiftyLinearAlgebra の中で Lie Algebra が実装されていることに気づいてテンションが上がりました(学生のときに Lie Algebra の勉強をして論文を書いた、今も再度勉強中)。もっと詳しく見てみようと思います。

懇親会(day 2 夜)

こちらはアルコール飲料と食べ物ありの懇親会でした。ここまでの機会であまり話せていなかった人たちと話ができたので、これもまた楽しい時間でした。

まとめ

とても楽しいカンファレンスで良かったです。iOSDC Japan 2019 を作ってくださった皆さま、ありがとうございました。

気になるセッションは他にもいろいろあったので、また資料やセッションビデオを見てみたいと思います。また、次こそはスピーカーとして参加したいですね。プロポーザルを出してはいるもののなかなか採択されないので、良いプロポーザルが書けるようになりたい。