見出し画像

iOSDC Japan 2019に参加してきました!

iOSDC関連3つ目の記事です。
タイトルにもある通り、iOSDC Japan2019に参加してきたのでそのレポート記事です。

事前ブログ・0,1日目のブログは以下になります

はじめに

他のブログにも書いているのですが、今回サイバーエージェントさんのスカラシップで参加させていただきました!ありがとうございます🙇‍♂️

宿泊先・交通費の支給を今回いただきまして、本当に助かりました。。
スカラシップ募集内容に関する記事は以下です

おことわり

0,1日目のブログで、動画など見て色々理解してからブログを書くと書いていたのですが、動画の上がる時期を勘違いしてまして、スライドのあるものはスライドを見つつ0,1日目のセッションについては0,1日目ブログの内容を変えた形にしようかと思います🙇‍♂️

0日目

・スクリーン配信機能の実装が大変だったので知見をお伝えします By @FromAtom

ReplayKitについてのセッションでした。Qiitaに5記事しか存在しなく、日本語での情報収集はすごく難しい技術についての話だったので「こんなものがあるんだー」というのを認知できただけ進歩かなと思います。また、 「WebRTC」についても言葉自体を知れたのは大きかったです。「WebRTC」はWeb Realtime communicationの略称になっていてその名の通りリアルタイムな通信をするための方法だそうです。(こちらも事後ブログで細かく描けそうだったら書きます)一応ホームページです
このセッションのスライドがわかりやすいリファレンスになるんじゃないか?というくらい詳細に書いてあったので後日時間のあるときに試せたらいいなと思っています。

・Advanced Segue By @tokorom

Storyboardを使おうとしたりすると出てくる Segue についてのセッションでした。自分自身普段 Storyboard 自体を使用しておらず、Segueについてはもってのほかという感じでした。
セッションを聞く前はSegueについて、「画面遷移をするために使うもの」としか考えておらず、Storyboard上で遷移をわかりやすくするためだけのものなんだろうと思っていました。。。しかし、セッションを聞いてSegue自体に色々種類があり、画面遷移以外でも使え、具体的な使用例の部分でいくと、スタティックなTableViewを定義したい時にはStoryboardでやるかと思うのですが、そのセルタップ時の処理をSegueを使うことによっていい感じにできると知って これは使ってみたい! と思いました。
ここまでSegueに関して語れる所さんのSegue愛はすごいなと感じました。

1日目

・ライブラリのインポートとリンクの仕組み完全解説 By @k_katsumi

普段からたくさん使用しているライブラリのインポート・リンクについての話でした。普段からcocoapods やCarthage というパッケージマネージャーを使用していて、その仕組みについてほとんど理解できていない状況だったのでカンファレンス参加前からかなり聞きたいセッションになっていました。
インポート・リンクがそれぞれどういったものか、ということだとか、セション中にインポート・リンクに関わる部分を消してみて、消すとコンパイル時に怒られるようになるものなど、順を追っ手の内容になっていたので理解しやすそうだと感じました。(まだ全然理解できていないです。)
後日動画がアップロードされた際に改めてなんどもみて理解しようと思います。応用編が難しくて楽しいらしいので楽しみです。

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

クリーンコード(読みやすいコード)についてのセッションでした。セッション内では主に Protocol を使用したクリーンコードの実現についての内容となっていました。また、セッション内ではKickstarterというオープンソースアプリについて触れられており、そこではクリーンコードを体現しているとのことなので時間のある時か事後ブログを書く時にでもみたいなと思います。今までなんとなくこんな感じかなっていう風に書いていたコードをリファクタしたくなってくるようなセッションでした。

・FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた By @ktanaka117

メモが不十分なので後ほどYouTubeみて加筆します。。。
自動テストがないようなプロダクトに対してそのプロダクトが設計上テストがいれられないものだった場合に自動テストをいれたい場合どうしたかというセッションでした。序盤に出ていたデッドロック問題については確かにって思いました。自動テストいれたいのにいれられない設計だからコード変えなきゃ。でも自動テストいれたいのってどうしてだっけ・・?と考え始めた時に頭の中でぐるぐる回ってしまってデッドロックを起こした状態になってしまうということで、今後普通に起こりえるなと。デグレを避けるために自動テスト書きたいのに自動テストを書くためにデグレの元を作るかもという感じで矛盾しちゃう状態ありそう。。。という感じですね。。
解決策はとりあえず3つ提示されていて、

・UIテスト
・BDD(振る舞い駆動開発)
・一時的な手動テスト

この3つでした。

・UIテストはまずアプリの奥にある画面だとテストするのかなりきつい・・・
・BDDはメンテコスト高い・・・
・一時的な手動テストはヒューマンエラーが発生する可能性があったりなど、ぐえーという感じ

とのことでした。
この中で選んだのは手動テストだそうです。
痛みを許容する場合というのが、「自動テストの範囲外のところはよしとする」というのが今までの自分の考え方にはないところだったので考えさせられました。

2日目

Heart of Swift by @koher

こちらに関してはスライドがアプリだったということもあってまだ公開されていないのでメモをみながらになります。箇条書きで書いているので時々はしょります。
このセッションでは Value semantics と Protocol Oriented Programming についての内容でした。

まず Value Semantics について、
なぜ今この話なのか、という部分では あまりこの概念が浸透していないことだったり、この概念を大きく取り入れているSwiftUIが登場したことや 最新の情報があまり出回っていないということでした。
あとは Value Semantics を持つ/持たない とはなんなのかということだったり、SwiftのライブラリがだいたいValue Semanticsを持っているという内容でした。

次に、Protocol Oriented Programming について、
Protocol Oriented Programming の定義の話だとか、リバースジェネリクス・Opaque Result Type に絡めたExistential Container、あとは各種ポリモーフィズムについての説明などといった内容でした。
Protocol Oriented Programmingも言葉は知っていても定義まで立ち戻ったりしたことはなく、セッションの中でこういったことが聞けたのは良かったです。また、最近よく調べていたことだったリバースジェネリクス・Opaque Result Type 周りの話で、存在型という理解しきれていなかった部分で新しくこういったものがあるというのを知れたのはよかったです。

まとめて、
このセッションは本当に内容が濃くて、最近Swiftを始めたからこそ聞くべきだったセッションだと感じました。今後もこういった定義などに戻った内容について個人的にも調べていきたくなるような内容でした。

ソーシャルライブサービスにおけるデジタル化粧の仕組みと実装 by @noppefoxwolf

今までこういったことをやったことがなかった自分ができるかもしれないと思えるくらいに内容自体は難しくなく、こうやればできる!がわかるセッションでした。
iOSのコードの中にAdobe Photoshop の概念を持ち込んで色々やるというのはなかなか「なるほどー」という感じでした。

感想

0, 1日目のブログにもまず書いていたのですが、すごく楽しかったというのがまず第一にあります。カンファレンス自体去年とかは本当にいったら打ちのめされそう・・・みたいな印象しかなかったのが完全に払拭されました。
そして、いろいろな新しい概念や書き方・標準ライブラリについて知ることができたのは大きかったです。普段の開発の幅がこれのおかげで広まったと思います。

参照

スライドはこの記事から引用しました。ありがとうございます🙇‍♂️


この記事が気に入ったらサポートをしてみませんか?