見出し画像

実はREALITYにはiOSエンジニアが活躍できる場所が沢山あります!

寒くなってきたので、水炊きを食べに行きたいiOSエンジニアのあおやまです。

REALITYのiOSのSwiftとUnity

REALITYはアバターを使って配信やワールド、ゲーム、チャット、ビデオ通話などができるサービスです。noteや勉強会でiOSやSwiftのトピックを取り扱っていると、アバターを使っているので「ぜんぶUnityで作ってるんじゃないの!?」とよく驚かれます。

Unity as a Libraryを使ったUnityとSwiftのViewの共存

REALITYでは、Unity as a Libraryという仕組みを使ってUnityをFramework化し、Swiftで書かれたアプリに取り込んで、UnityのViewを埋め込んで使用しています。

視聴画面などアバターを表示している画面では、アバターはUnityで、コメントなどのUIはSwiftで書かれています。配信一覧画面やチャット、プロフィールなどアバターが登場しない画面は、全てSwiftで書かれています。

Swiftのみの画面とSwift+Unityの画面

そのため、iOSエンジニアが活躍できる場所が沢山あります!

REALITYのiOS開発の特色

そんな、iOSエンジニアが沢山活躍できるREALITYのiOSの開発の特色の紹介です。

グローバル展開

REALITYは日本を含む63の国と地域で公開されており、日本語、英語を含む12の言語に対応しています。ユーザーさんの海外比率は80%になりました。

https://prtimes.jp/main/html/rd/p/000000228.000021973.html

日本語から他の言語への翻訳は、LokaliseのOTA(On The Air)というランタイムで翻訳文言の更新する仕組みを導入し、素早く、高品質な翻訳文言を提供する仕組みを構築中です。

また、XcodeのTest Plansの機能を利用して、多言語でのSnapshotTestを定期的に実施し、レイアウト崩れが起きていないかチェックしています。

新しい技術の積極的な導入

REALITYはiOSの最新の2メジャーバージョンのサポートを基本としています。そのため、SwiftUIや、CombineSwift ConcurrencyなどのiOSに新しく追加されたAPIを積極的に利用しています。特にSwiftUIとSwift Concurrencyは、導入すると簡潔に記述できるようになり、実装が効率化されるため注力しています。
REALITYにSwift Concurrencyを導入するまでの話を、clusterさんとの勉強会で発表させて頂きました。

新しいAPIだけでなく、アバターを使った配信やビデオ通話を実現するためにCallKitAVAudioEngineUnity as a Libraryなどレア?な中々触れる機会のないAPIや機能と日々格闘しています。
配信やチャット、通話など様々な機能が1つのアプリに集約されているREALITYならではの特徴の1つだと思います。

開発フロー改善 / サービス品質改善のための「改善week」

REALITYには、改善weekという2ヶ月に1度、通常の施策開発を止めて1週間エンジニアが各々やりたい開発フロー改善 / サービス品質改善を中心に進める時間があります。開発フロー改善 / サービス品質改善系のタスクのガッツリとしたモノは改善weekに、軽いモノは空き時間に進めます。
直近の改善weekでは、iOSチームは「bot作成のPRのラベルの整理」「不使用ライブラリ/モジュールの削除」「mock作成の高速化」などのテーマを各々が設定して取り組みました。

他にも、needleを使ったDI(Dependency Injection)や、UIKitの既存画面のSwiftUI化、マルチモジュール化などは、開発の効率化のために日々取り組んでいます。
needleの進捗はnoteに公開しているので、ぜひご覧ください。

エンジニア主体のプロジェクト「タスクフォース」

タスクフォースは、エンジニア自身が企画、進行を担当し、「デザインシステムの構築」や「アバター描画の軽量化」などの特定の技術的課題にチームを作って挑戦します。

前身となった品質改善プロジェクトの中で、iOSチームが絡んだ課題の1つに「通信速度改善のためのprotobuf対応」があります。これはAPI通信のレスポンスをprotobuf対応して容量削減する事を目的とし、結果として60%サイズを削減しました。
詳しくは下記のnoteをご覧ください。

まとめ

REALITYのiOSアプリでのUnityとSwiftの関係と、REALITYのiOSの開発の特色でした。REALITYにもiOSエンジニアの方が活躍できる場所が沢山ある!という事が伝わっていると嬉しいです。

REALTYでは一緒にREALITYのiOSアプリを開発してくれる仲間を絶賛募集中です!

カジュアル面談も大歓迎のため、お気軽にお声かけください。