iOSDC Japan 2018 にメドレーが協賛しました
こんにちは、開発本部の高井です。
メドレーは、去年に引き続き 8/30〜9/2 に早稲田大学で開催された iOSDC Japan 2018(以下 iOSDC)に協賛しました。 みなさんご存知かと思いますが、iOSDC は国内の iOS イベントの中では try! Swift と並ぶ最大級のイベントです。
(オンライン診療アプリ「CLINICS」初期開発時から Swift で実装しています)
CLINICS(クリニクス) オンライン診療・服薬指導アプリ
メドレーは今回、シルバースポンサーとして協賛させていただきました。ブース出展はしていないのですが、スポンサー枠で私が参加してきました。
オープニングのスポンサー紹介は去年に引き続き今年も三石琴乃さんのナレーションでした!豪華です。
イベントの様子
ランチのお弁当はもちろん、朝はドーナツ、夕方の LT が始まるとビールが提供されるなど至れり尽くせりでした。セッションは最大 4 つが同時に進み、それに加えてアンカンファレンスと特定のテーマを設けたディスカッション企画などもあったのですが、進行も非常に円滑で非常に参加者の満足度の高いカンファレンスではないかと思います。
セッション
今年は Swift のコンパイラのソースから Swift の機能を解説するようなセッションがいくつかありました。去年はそのようなセッションはなかったのではないかと思います。Swift がオープンソース化されて 3 年弱ぐらいになり、日本でも Swift のコミュニティがより成熟しているように感じました。 また、機械学習などのキャッチーなトピックの話題が少し減って、業務上得た知見や設計についてなどの実用的なテーマが多かった印象でした。 特に View の設計や実装についてのセッションが面白かったです。やはり、iOS アプリ開発では View 周りの実装が悩みの多い領域ですよね。
ここからは特に気になったセッションをいくつかご紹介します。
MicroViewController で無限にスケールする iOS 開発
https://www.icloud.com/keynote/0vgTYDXyHQTd0l1FKTiF1jT7g#MicroViewController-en
UI パーツごとに ViewController を持たせて、一つの画面の異なる機能を複数のエンジニアで開発しやすいように実装しているというお話でした。一般的な画面単位で ViewController を持つ実装だと、開発の人数を増やしてもコンフリクトやオーバーヘッドが発生しやすくなり、効率的に開発することが難しくなってしまいます。そのため、開発チームの規模をスケールさせることができないということからそのような方法を取り入れたそうです。
MicroViewController を採用したことによって、一つのアプリに 20 人のエンジニアを充てることができるようになったということでしたが、他にそんなところあるのでしょうか、、、という気がしないでもなかったです。ただ、数人でやっていてもコンフリクトはよく起こりますし(project.pbxproj、、、!)、機能を追加したり、削除したりということを素早く試行錯誤するのには良さそうだなと思いました。
また、ビルドの効率化のためにサンドボックスアプリを用意したり、ViewController のテンプレートを作って実装の効率化を図るなど開発効率向上の参考になる取り組みも多かったです。
デバイス・ OS バージョンの依存が少なく、メンテナンスしやすいビューを作る
ビューの実装について起こりがちな問題とその対処法について紹介したセッションでした。特にレイアウト崩れを防ぐために意識すべきポイントについて、具体的な失敗例を示しながら紹介されていました。
UI コンポーネントのサンプル実装(https://github.com/folio-sec/Folio-UI-Collection/tree/master/Folio-UI-Collection)も紹介されていましたが、CLINICS でも共通 UI をコンポーネント化して使っているので、カスタム View の実装方法やコンポーネントの粒度などが再確認でき、非常に有益でした。また、UI のユニットテストもあり、CLINICS ではあまり UI 関連のテストは書けていないので参考にしたいと思います。
宣言的 UICollectionView
UICollectionView に複数の種類がある場合(よくあります!)に、宣言的な実装をすることでコードの見通しをよくする方法を提案されているセッションでした。
自分もあの switch 文をまとめようとして、うまくいかなかった経験があるのでとても興味深かったです。すぐに自分たちのコードにも適用できる実用的なセッションでした。
あとは ReactorKit のライブコーディングや差分検出アルゴリズムに関連する話がいくつかあり、ちょうど業務で ReactorKit と RxDataSources を使っているので参考になりました。
差分アルゴリズムの原理について
UITableView などで変更があった箇所だけを更新するのに利用される差分検出のアルゴリズムについて解説したセッションでした。IGListKit や RxDataSources などで使われているアルゴリズムと Android の DiffUtil で利用されているアルゴリズムの原理について紹介されていました。ライブラリを使っていると、利用方法は分かるけど内部でどう動いてるかはあまり理解していないということも割とあると思いますが、その辺りを理解できると用途に応じて最適なライブラリを選択できたり、より効果的な使い方ができそうだと思いました。
5000 行の UITableView を差分更新する
差分更新のライブラリを使って多数行を更新した際に発生した問題の紹介とその原因を特定して、改善した内容についてのお話でした。採用していたライブラリは Differ でしたが、ライブラリごとの特徴や Instruments によるボトルネックの特定などが参考になりました。
まとめ
iOSDC は去年に引き続きの参加だったのですが、今年のセッションもどれも興味深く、勉強になることが多かったです。またセッションの裏で特定の技術についてディスカッションするコーナーができるなど年々充実してきているように感じました。また、LT のときの会場の一体感はとても良いなあと思いました。
弊社のアプリ開発でもそういった知見などを活かして開発していける仲間を引き続き募集しています! 興味がある方は、こちらからご連絡ください。
https://www.wantedly.com/companies/medley