![見出し画像](https://assets.st-note.com/production/uploads/images/89755490/rectangle_large_type_2_506864a65bde51d6c04592c0d6988cf1.png?width=1200)
実はREALITYにはiOSエンジニアが活躍できる場所が沢山あります!
寒くなってきたので、水炊きを食べに行きたいiOSエンジニアのあおやまです。
REALITYのiOSのSwiftとUnity
REALITYはアバターを使って配信やワールド、ゲーム、チャット、ビデオ通話などができるサービスです。noteや勉強会でiOSやSwiftのトピックを取り扱っていると、アバターを使っているので「ぜんぶUnityで作ってるんじゃないの!?」とよく驚かれます。
![](https://assets.st-note.com/img/1665501045724-lczG8GZdbs.png?width=1200)
Unity as a Libraryを使ったUnityとSwiftのViewの共存
REALITYでは、Unity as a Libraryという仕組みを使ってUnityをFramework化し、Swiftで書かれたアプリに取り込んで、UnityのViewを埋め込んで使用しています。
視聴画面などアバターを表示している画面では、アバターはUnityで、コメントなどのUIはSwiftで書かれています。配信一覧画面やチャット、プロフィールなどアバターが登場しない画面は、全てSwiftで書かれています。
![](https://assets.st-note.com/img/1666154305555-cABYlAHvH5.png?width=1200)
そのため、iOSエンジニアが活躍できる場所が沢山あります!
REALITYのiOS開発の特色
そんな、iOSエンジニアが沢山活躍できるREALITYのiOSの開発の特色の紹介です。
グローバル展開
REALITYは日本を含む63の国と地域で公開されており、日本語、英語を含む12の言語に対応しています。ユーザーさんの海外比率は80%になりました。
![](https://assets.st-note.com/img/1665585570669-gwDnDTqaYl.png?width=1200)
日本語から他の言語への翻訳は、LokaliseのOTA(On The Air)というランタイムで翻訳文言の更新する仕組みを導入し、素早く、高品質な翻訳文言を提供する仕組みを構築中です。
また、XcodeのTest Plansの機能を利用して、多言語でのSnapshotTestを定期的に実施し、レイアウト崩れが起きていないかチェックしています。
新しい技術の積極的な導入
REALITYはiOSの最新の2メジャーバージョンのサポートを基本としています。そのため、SwiftUIや、Combine、Swift ConcurrencyなどのiOSに新しく追加されたAPIを積極的に利用しています。特にSwiftUIとSwift Concurrencyは、導入すると簡潔に記述できるようになり、実装が効率化されるため注力しています。
REALITYにSwift Concurrencyを導入するまでの話を、clusterさんとの勉強会で発表させて頂きました。
新しいAPIだけでなく、アバターを使った配信やビデオ通話を実現するためにCallKitやAVAudioEngine、Unity 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アプリを開発してくれる仲間を絶賛募集中です!
カジュアル面談も大歓迎のため、お気軽にお声かけください。