iOSDC 2019にランチスポンサーとして参加&ランチセッションしました

f:id:Pocket7878_dev:20190907165934j:plain © iOSDC Japan (Licensed under CC BY 4.0)

Azitのクライアントチームのテックリードをしています十亀です(id:Pocket7878_dev) 本年度弊社ではiOSDC 2019にランチスポンサーとしてブース & ランチセッションで参加させていただきました。

この記事では、ランチセッションの発表内容と、ブースで行ったアンケートの結果について紹介させていただきます。 アンケートでは特に、「iOSのアプリケーションアーキテクチャに何を採用しているのか」、「FlutterとSwiftUIそれぞれを採用するか」についてピックアップしています。 それぞれ、どんな結果になったか、それぞれの選択についてどんな判断があったのか等についてブースに来てくださった方々とお話した内容についてまとめています。

ランチセッション

今回はランチスポンサーという事で、ランチセッションをさせていただきました! 題して『CREWのUX開発事例紹介』というタイトルで弊社のプロダクトチームが現在注力して開発している機能の事例を紹介させていただいています。

ライダー(乗りたい人)とドライバー(乗せたい人)に安心してサービスをご利用いただくためには、相互評価の健全性が非常に大切です。 適切にフィードバックが行われる事はライダー・ドライバー双方の質の向上につながります。 また、ライダーからリクエストが来た際に、ドライバーはそのライダーが過去に受けとった評価の内容を確認することができます。 評価が適切に行われることで、結果的に信頼性が増し、安心してご利用いただけるようになります。

そこで、現在プロダクトチームではドライバーからライダーに送る評価のフローの抱える課題の解決に注力しています。 ランチセッションでは、ユーザーから課題を吸い上げる方法や、それぞれの問題にたいするアプローチの事例をご紹介させていただきました。

その後ブースにもランチセッションの話をさらに聞きたいと多くの方々に立ち寄っていただきました!

アンケートボード

f:id:Pocket7878_dev:20190907171327j:plain

前回DroidKaigiのスポンサーをやらせていただいた際にもアンケートボードを実施していました。 今回もiOSエンジニアの方々に向けて、アンケートを実施いたしましたので、集計結果を掲載いたします!

今回の質問項目は:

  • iOSアプリのアーキテクチャは何をつかってる?
  • ライブラリどのくらいつかってる?
  • Storyboard使ってる? それともコード?
  • Flutter使いたい?
  • SwiftUI使いたい?
  • MacPro買う?

でした。今回も、集計結果を是非公開してほしいというお声を多数いただきましたので、いくつか ピックアップしてご紹介いたします!!

iOSアプリのアーキテクチャは何つかってる?

f:id:Pocket7878_dev:20190917141846p:plain

DroidKaigiでもAndroidエンジニアの方にアプリのアーキテクチャについてアンケートを取りましたが、 今回はそちらのiOS版です。 弊社では、現在MVCからチームのスケールを見すえてVIPERアーキテクチャへの再構成を行っています。 アンケートに解答くださった方々と、それぞれのアーテクチャを選んだ背景や、実際にやってみてどうだったか リアーキテクチャはどうやって進めたか等々、色々なお話をさせていただける良い機会となりました。

集計してみると、iOSでもAndroidと同様MVVMを採用しているチームの方々が非常に多いという結果になりました。 iOSではRxSwift等を導入されている方が非常に多く、その場合にMVVMと相性が良かったからという理由が多くきかれました。 弊社で導入を進めているVIPERアーキテクチャですが:

  • 少人数のチームのうちは、作業工数が増加するのでペイしづらい
  • 実装にあたっては、責務の分離が明確なので書きやすい
  • 一方、既存の処理がどう実装されているのかコードを読む場合に処理全体を把握するのがすこし手間

といった意見をいただきました。

弊社でもVIPER化に踏みきるにあたっては、今後複数の機能開発を並行して進められるようにチームの拡充を念頭に置いています。 長期的には、現在単一になっているライダー向けアプリとドライバー向けアプリの分離等を考えています。 その際にはコードの再利用性を高めるために、モジュールによる分離等も視野に入れる必要があります。 そのような大きな計画の一部として、まずはレイヤーによる分離やテストの拡充を進めようとしています。 そんな中で、VIPERはClearnArchよりも複雑すぎず、かつRouter等による画面遷移責務の分離等のメリットがあると判断して採用しました。

MVVMを採用されているチームでも、Rxとの相性が非常に良く、分離も適度にできていてちょうど良いサイズだという感想を多くいただきました。 Apple公式のCombineフレームワークもでてきたので、今後が非常に楽しみですね!

Flutter使いたい? & SwiftUI使いたい?

f:id:Pocket7878_dev:20190917151504p:plain f:id:Pocket7878_dev:20190917151515p:plain

二日目はUI系のアンケートを行っておりました。 最近話題のSwiftUIと弊社でも一度導入を検討していたFlutterについて皆さんの反応を聞いてみたいとおもい質問させていただきました。

弊社でも、Flutterの導入を一度検討しましたが、公式プラットフォームによる提供でない事等を加味して導入を見送った背景がありました。 そのため、今回は色々な方々に導入してどうだったか、使いたいとしたらどうだったか、使わないとしたらどんな判断でそうなるのか といった事を聞かせていただきました。

  • 公式プラットフォームでないので、互換性のキープが難しそう
  • UIのパフォーマンス、更新の反映速度が良いので開発効率が上った
  • Dartをチーム全体で習得するのがすこし難しそう

等々色々な意見が聞かれました。 弊社では上記の通り、公式プラットフォームでない事が大きな懸念の一つだったので、 今回は公式である一方iOS13以降のみ対応なSwiftUIへの皆さんの反応を知りたく併せて質問していました。

SwiftUlは「使わない」という意見は0だったものの、まだ正式に導入開始するには機能が不足していたりする面や、 対応OSのバージョン面でまだそこまでの変化は取れないという意見が多く見られました。 一方で、新規プロダクトや社内向けのアプリケーション等でターゲットユーザー層をある程度コントロールできる環境の方は、早速導入しているようでした。

今年はGoogle IOでJetpack Composeという、これまたコードでUIを実現していくためのライブラリが公開されていました。 AppleのSwiftUIも近いアプローチを取っていて、コードでUIを書くための手法を両プラットフォームとも提供しはじめた形になりました。

AppleはSwiftUIをリリースするにあたって、iOS13以降のみをサポートとかなり大胆に後方互換性を切っています。 一方で、GoogleはUIをライブラリとして提供する事で、後方互換性をサポートする事も狙いだと明言していました。 個人的には、このあたりにプラットフォームとしての毛色の違いがかなり出ているなと感じています。

その他の項目

その他の項目についても、集計結果を公開しておりますので、気になる方は是非ご覧ください

docs.google.com