LCL Engineers' Blog

バス比較なび・格安移動・バスとりっぷを運営する LCLの開発者ブログです。

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

モバイルエンジニアの山下です。
去年に引き続きiOSDC 2018に参加してきました!

開催から時間が経ってしまいましたが、レポートとトークの一部を紹介させていただきたいと思います。

iOSDCとは

https://iosdc.jp/2018/

iOSDC JapanはiOS関連技術をコアのテーマとした技術者のためのカンファレンスです。
今年は3日+前夜祭の3.5日開催です!

iOSDCは国内最大のiOSカンファレンスです。
OSの新しいAPIや開発の知見など、iOSに関連するテーマが幅広く取り扱われています。
毎年週末にかけて連日開催されるのが恒例となっており、終日開催日はトーク発表が複数並行で行われるほどの規模となっています。

f:id:lcl-engineer:20180929171110p:plain

チケット料金は今年は10,000円~と少々お高めですが、数多くの知見に加え、4日間の飲食(ランチ、無限コーヒー、お酒、懇親会など)と沢山のノベルティが提供されるので実質無料と言っても過言ではないと思います。

今回は、平日でも業務時間として参加できる勉強会推奨制度を利用して全日参加してきました。
もちろん、参加費支給です。実質無料でした

本稿では、LCLが提供している『高速バス比較』※ に活用できそうなトークを中心に紹介させていただこうと思います。

※10月1日から『バス比較なび』にサービス及びアプリ名が変更されます

トーク紹介

再利用可能なUI Componentsを利用したアプリ開発

一言でいうと?

Atomic Designを採用し、Sketchのシンボルと同じ単位でUI Componentを実装することで、UI実装を体系化しているというお話

感想

高速バス比較でも、密結合を回避してメンテナンスしやすい環境を作りたいと思い、UI Component化を進めようとしているのですが、分割する線引が定まらない状態でした。Atomic Designの原子・分子のみを採用して切り離すというルールは一つの明確な定義となりそうなので参考にさせていただこうと思います。

Playground駆動開発のすすめ

一言でいうと?

Playgroundを使って「Build > レイアウト確認 > 調整」のループを無くそうというお話

感想

過去に私もこのスタイルで開発を試みたことがあるのですが、Xcodeが頻繁に固まったり、ビルドが終わらない状態続き逆に効率が悪化した上に待ちのフラストレーションが溜まったので止めてしまいました。
Xcode10では、Playground周りが最適化されステップ実行も可能になったということで、また挑戦してみたいと思います。

MicroViewControllerで無限にスケールするiOS開発

一言でいうと?

UI要素をViewControllerで実装し、責務を閉じ込めることでDryな状態を作れるというお話

感想

発想とそれを体系化してプロジェクトに導入できることが凄いと思いました。
トーク中にもありましたがViewControllerをたくさん生成してもパフォーマンスに負荷はかからないのは意外でした。
既存のアプリですぐに採用するのは難しいと思いますが、プライベートアプリなどで試しつつ様子をうかがっていこうと思います。今後はこの設計方針を採用するプロジェクトが増えてくるんでしょうかね。

レガシーなアプリケーションの 60fps化を目指す為にやっていること

一言でいうと?

サーバレスポンスや追加読み込みのタイミング、描画処理を最適化して60fpsを目指したというお話

感想

弊社アプリもデータ量が多い中、スクロールに関しては最低限のなめらかさは確保できているのですが、追加読み込みなどで動作がスタックしてしまうことが多いので、サーバサイドとの調整も図りながら少しずつチューニングしていきたいと思いました。 描画処理については、iPhone SEなど端末によっては滑らかさにに不安があるため、レイヤー等までケアしてみようと思います。

肥大化しがちなアプリの起動経路を整理する

一言でいうと?

アプリには7種類上の起動経路があり、AppDelegateに帰属しているためテストできる設計をして可読性と安全性を高めようというお話

感想

起動経路は一度に実装するというよりは、秘伝のタレのように継ぎ足して追加されていくものなので共通認識がない状態だと複雑になりやすいですね。 弊社アプリも変更が入ると全てのパターンを手動で動作確認をしている状態で効率が悪いため、早めの対策をしたいと思いました。

詳解Fastfile

一言でいうと?

読みやすいFastfileを書いていくためにどのように切り分けをすればよいかというお話

感想

Fastfileは綺麗に実装できていた自負がありましたが、まだまだ改善が余地があることを知れてとても参考になりました。 Code sign周りは弊社アプリでも複数の証明書を使い分けて、テスト・RC・本番環境の配信をしている知見があるので、これについては改めて記事にしたいと思いました。

デバイス・OSバージョンの依存が少なく、メンテナンスしやすいビューを作る

一言でいうと?

デバイスサイズや標準UIを仮定するなどのアンチパターンを避け、テスタブルな実装することでレイアウト崩れやメンテナンスがしづらい状態をなくそうというお話

感想

弊社アプリにもこのトークで挙げられたようなアンチパターンが少し含まれているので無くしていきたいと思います。 こういう分岐が多いとプロジェクトにジョインした際にデグレを埋め込みやすいのでチームのスケールもしづらくなりますね。

iOSアプリの開発速度を170%に向上させたデバッグノウハウ

一言でいうと?

開発速度を上げるためには手動の動作確認を減らす、手動の動作確認を減らすには安全性を担保できる仕組み(自動テスト)を作るというお話

感想

LLDBはレギュラートークでも採用されていましたが、みなさんしっかり使いこなされてるんですね。開発効率を上げるためには、もう少し自然と使う習慣を付けないといけないと思いました。 同じくテストについても、テストを書く時間を予め見積もりに含めておいてスケジューリングしなければいけないと思いました。

終わりに

今年はiOSDCは自動テスト差分更新のキーワードが目立った印象でした。
AR Kit、Firebase、Flutterの話がもう少し多くなるかと予想していましたが、後ろ2つはレギュラートークにはなかったですね。

これにて無事に「I did blog.」できました。
知見を得られた上での考察などはまた別で投稿したいと思います。