2023年4月11日に「GO TechTalk #18 『GO』のiOS開発で、Concurrency、Xcode Cloud、新DIを試してみた」(connpass)を開催しました。
本記事では当日の内容を簡単に紹介します。
GO TechTalkは、GO株式会社のエンジニアたちが、タクシーアプリ『GO』をはじめとしたサービスやプロダクトを開発する中で得た技術的ナレッジを共有するイベントです。
18回目となる今回は、『Engineer Challenge Week(※)』で取り組んだ、タクシーアプリ『GO』のiOSアプリへの、async/await、Needle、Xcode Cloudの導入について紹介しました。
※『Engineer Challenge Week』は、GO株式会社のエンジニアが半期に2週間、日々のプロダクト開発から離れ、普段できない技術チャレンジや時間があればやってみたいこと、新たな知識の獲得など、スキルアップのための期間を与えられるという取り組みです。
詳しくはこちらの記事もご覧ください! 参考:取締役エンジニアとして考える新しい個人と組織の成長の形 - Engineer Challenge Week
Engineer Challenge Weekでの取り組みの一部は、すでにテックブログでも公開しているのでこちらもどうぞ! 参考:Engineer Challenge Week関連の記事一覧
こちらのツイートのスレッドで当日の様子や雰囲気を感じていただけると思います。
GO Tech Talk #18 『GO』のiOS開発で、Concurrency、Xcode Cloud、新DIを試してみた
— GO Inc. dev | タクシーアプリ『GO』 (@goinc_techtalk) April 11, 2023
はじまります!
ライブ配信:https://t.co/3kIr2Ctbsu
イベントページ:https://t.co/aTZcQ64pqA#goinc_tech_talk
今回はこちらのメンバーが登壇しました。
タクシーアプリ『GO』のiOSアプリではUber社の開発したRIBsアーキテクチャを採用しています。RIBsアーキテクチャでは「RIB」と呼ばれるコンポーネントを親子関係のように組み合わせることで、木構造でアプリを構築するのが特徴です。
このRIBsアーキテクチャでは、親のRIBで定義されているインスタンスを子のRIBから参照したいというケースがよく起きます。親のインスタンスを参照するだけなら親にアクセサメソッドを実装するだけですが、親の親、親の親の親といった祖先のインスタンスを参照しようとすると、中間にあるすべてのRIBにアクセサメソッドを実装する必要があり煩雑です。
今回はRIBsアーキテクチャと同じくUber社が開発したDIライブラリであるNeedleを使い、RIBsアーキテクチャの親子間の依存関係を自動で解決できないか検証した成果を紹介しました。
またより詳細にサンプルコードなどもご覧になりたい場合は以下の記事もご覧ください!
参考:RIBsアーキテクチャのアプリにNeedleを導入検討してみた話
タクシーアプリ『GO』では、RxSwiftを用いてリアクティブプログラミングを行っています。またその流れで非同期処理もRxSwiftを利用しています。
今回はリアクティブプログラミング部分はRxSwiftそのままに、非同期処理部分だけAppleが推奨するSwift Concurrencyに置き換えられないか検証した成果を紹介しました。
Swift Concurrencyの概要や、導入の流れ・勘所にも触れているので、ぜひスライドや本記事の文末に掲載しているアーカイブ動画をご覧ください!
2022年にリリースされた Xcode Cloud の活用について検討しました。実際に Xcode Cloud を使用して、良いところ、他の CI サービスとは異なる特徴、また導入前に考慮すべきポイントとして以下4つについて紹介しました。
今回非常に多くの質問や感想をいただきました。ありがとうございました。アーカイブ動画の中では以下の質問にもお答えしていますのでぜひ視聴いただければと思います。
GO TechTalk は不定期開催しています。過去の開催レポートは こちら にもありますので、ぜひご覧ください!
GO株式会社の最新技術情報は公式Twitterアカウント @goinc_techtalkで随時発信していきますので、ぜひフォローして続報をお待ちください!
興味のある方は 採用ページ も見ていただけると嬉しいです。
特に今回登壇したメンバーが所属しているポジションは以下のページで紹介していますので、ご興味持っていただけた方はぜひご覧ください!