この記事はヤプリのiOSエンジニア職にご興味をお持ちの方向けに、参考になりそうな情報をまとめております。
ヤプリについて
弊社ヤプリはノーコードでモバイルアプリの開発、運用、分析をクラウドからワンストップで提供するプラットフォーム「Yappli」を提供しています。
ヤプリのミッションは「デジタルを簡単に、社会を便利に」であり、専門知識がなくてもデジタル技術を簡単に利用できるプラットフォームを通じて、顧客と企業の間に新たな価値を創出していくことを目指しています。
Yappliのアプリ開発の特徴
Yappliのアプリは、CMSのコンテンツ情報をAPI経由で受け取り、機能やレイアウトを動的に構築しています。
CMSのコンテンツデータを表示させる以外にも、User Notifications、Core Location、Face ID/Touch ID、ARKit、HealthKit、WidgetKitなど、様々なネイティブAPIが利用できます。
また、プラットフォームとして利用できる汎用性を意識した仕様検討が必要であったり、ストア審査でリジェクトにならないよう、ビルド時に機能の付け外しを柔軟に行えるようなモジュール設計も必要です。
さらに、ストア公開用のアプリ以外にも、カスタムApp、非表示App、エンタープライズプログラムなど、多様なアプリ配布のユースケースもサポートしており、これら800以上のアプリ運用ができるよう、配信フローの自動化も工夫しています。
iOSグループの開発体制について
働き方
- オープン勤務
- 出社やリモートワークの判断は、各部署の取り決めや業務に支障がなければ、各自の判断で行うことができます(会社の方針変更やチームの要望により、今後出社割合が変わる可能性はあります)。
- 現状では、iOSメンバーのほぼ全員がフルリモートですが、月1回の締め会や入社歓迎会などで適宜出社し、オフラインでコミュニケーションが取れる機会も設けています。
- 所定労働時間
- 10:00~19:00
- フレックスタイム制度あり(コアタイム 10:00~16:00)
人数(2024年9月4日時点)
- 社員:8名(マネージャー1名)
- 業務委託:2名
コミュニケーション機会
iOSグループでは、Discordを使って全員参加のデイリーミーティングを行っています。
ミーティングでは、業務の共有や相談に加え、雑談トピック(アイスブレイク)やメンバー間での感謝を伝えるトピック(Clap)を取り入れ、心理的安全性が高まりやすい環境を意識しています。
また、日常的にDiscordに常駐し、メンバー同士が気軽に話しかけられる環境を整えています。さらに、非同期的なコミュニケーションにはSlackを活用し、活発なやりとりを行っています。
技術スタック
- プログラミング言語と UI フレームワーク
- 言語:Swift、Objective-C
- UIフレームワーク:SwiftUI、UIKit
- アーキテクチャ
- MVVM
- ライブラリ
- Floating Panel、Keychain Access、SwiftGen、LicensePlist、計測系SDK
- 開発ツール
- 統合開発環境:Xcode
- リポジトリ管理:GitHub
- パッケージ管理:Swift Package Manager
- CI/CD:Bitrise、CircleCI、Fastlane
- コラボレーションツール
- プロジェクト管理:Jira
- ドキュメント管理:Confluence
- デザイン管理:Figma
- コミュニケーション:Slack、Zoom、Discord
メンバーの役割分担
メンバーの役割は、主にプロジェクト開発を担当するメンバー(プロジェクトチーム)と、緊急度や重要度の高い小規模タスクに取り組むメンバー(遊撃チーム)の2つに大きく分けられます。
どちらのチームも、会社の成功に不可欠な役割を果たしています。
プロジェクトチーム
事業の総合的判断からトップダウンで決定される案件や、社員からのボトムアップの企画で選出された案件を担当します。
プロジェクトの工数は目安として3〜6ヶ月で、iOS、Android、サーバー、フロントエンド、デザイナー、QA、開発ディレクターなど、部署横断的なチームで構成されています。
遊撃チーム
プロジェクト開発が遅延しないように、期中に急遽対応が必要になったタスクに取り組んだり、プロジェクト化する規模ではないが重要度の高いタスクを担当します。これにより、安定したサービス提供を支えます。
さらに、チーム全体の生産性向上につながる開発や運用改善、新機能検討も行います。
具体的な内容は以下の通りです。
- 改善・不具合チケット対応
- 緊急度と重要度に基づいて優先順位付けされたタスクの対応に取り組んでいます。開発のベロシティを計測しながら、スクラム体制のブラッシュアップも実施しています。
- リファクタリング
- 開発ロードマップをチームで策定し、半期のOKRに組み込むことで、技術負債が増えないようにしています。マルチモジュール化やSwiftUI導入などのリファクタリングを計画的に取り組んでいます。
- 開発運用改善
- NewRelic監視の仕組み作り、アプリ配信基盤の自動化改善、AIコードレビューの導入など、開発運用面の効率化や品質改善をします。
- 新機能検討
- App Clipやロック画面のWidget機能など、新しいAPIが発表された後に技術調査や試験的導入をエンジニア主導で行うこともしています。
その他、社内外のシステム的な問い合わせも遊撃チームで対応しています。
共通業務(チーム全員で対応)
- コードレビュー
- 実装後、QAフェーズに入る前にメンバー内でコードレビューを行います。改修の影響範囲に応じてレビュアー承認の人数基準を設けるようにしています。
- ビルド/リリース
- 週次のコードフリーズやリリース作業を行います。
- インシデント対応
- インシデントの内容に応じて、取りまとめ役(事故隊長)を決定し、プロダクト全体で協力して調査から復旧までを実施します。復旧後にはポストモーテムを行い、必要であれば追加で再発防止アクションを決定します。
現状の課題感や今後の方針
品質の強化
弊社アプリは機能やレイアウト、画面遷移などが動的に変更可能なため、テストパターンを手作業で網羅的に確認するのは困難です。
そのため、テストコードの実装など、デグレードを防ぐための品質強化をしていきます。
オブザーバビリティの強化
アプリバージョン、OSバージョン、CMSの入稿、Webサイトなどの掛け合わせによって発生する問題など、開発段階で検知が難しいことがあります。
リリース後のクラッシュやアクションエラー、パフォーマンス異常を監視し、問題の検知や原因特定のためにオブザーバビリティの強化をしていきます。
障害復旧時間(MTTR)の短縮
アプリで致命的な不具合が見つかった場合、修正のアップデート申請が必要です。さらに、運用しているアプリが800以上あるため、復旧時間(MTTR)が長くなるという課題があります。
この復旧時間(MTTR)を短縮するために、アップデート申請をしなくても即時に切り戻しができる仕組みを検討していきます。
プロダクト価値のさらなる向上
最新技術をキャッチアップしているエンジニアだからこそ思いつくアイデアもあります。
ネイティブアプリならではのユーザー体験を増やすため、エンジニアからの提案をさらに推進していきます。
社外への発信力強化
ヤプリのことをもっと世のエンジニアに知ってもらうため、テックブログの執筆や登壇機会など、社外への発信力強化が必要です。
そのため、社外発信のネタをストックしやすい仕組みの改善や、新しい技術の導入やコードベースのモダン化をさらに推進し、メンバーの発信意欲を高めていきます。
継続的な学習とスキルアップの支援
オンボーディングと目標設定
入社後の3ヶ月間はメンターが付き、業務や部署間のコミュニケーションをサポートします。目標設定はメンバーのスキルや経験、モチベーションを考慮し、上長と話し合って決定します。ストレッチ目標も設定し、成果や成長を意識したサポートを行います。
抽象的な課題への取り組み
最初は定型的な業務や具体的な要件のタスクから取り組んでいただきますが、経験に応じてコードの設計改善やオブザーバビリティの強化、配信基盤の自動化、チーム全体の技術力アップなど、より抽象的な課題に対しても解決策の提案や実施の裁量を持って取り組むことができる環境があります。
部署横断的な開発経験やリーダシップの機会
プロジェクトは部署横断的なチームで構成されており、技術領域の知見を広げることができます。複数のプロジェクトを経験し、各部署との業務連携に慣れた段階でプロジェクトのリードエンジニアとしてアサインされることもあります。
技術的なディスカッションやナレッジ共有の機会
定期的にコードレビュー会やプランニングポーカー(見積もり会)、技術導入の分科会やモブプログラミングを行っています。また、WWDCやiOSDCのアフター勉強会、開発アイデアのチケット化も積極的に実施しています。
また、プロダクト開発本部としての技術共有会も月1回実施しています。そこではiOS以外の技術知見を聞いたり質問することもできます。
社外登壇のネタ出し会やプロポーザルのチームレビュー
社外登壇の機会を増やすために、iOSDCのプロポーザル受付けが開始される前にネタ出し会をやったり、プロポーザルを書いて登壇経験者からレビューもしてもらうこともできます。
なお、今年(2024年)はプラチナスポンサーとして、スポンサーセッションを行います。
スポンサーセッション:Nao_RandD
一般応募セッション:岸川克己
社内成果共有イベント
その他、プレゼン力を身につけるのに最適な定期的な社内イベントもあります。
- Win Session
- 日々の業務におけるWinを発表する社内イベントです(月1回)
- LT大会
- 発表時間は5分、技術に関係ない趣味の話もOKなので発表のハードルは低く設計されています(3ヶ月に1回)
- Yappli Tech Conference
- エンジニア向けの自社カンファレンスです(年1回)
最後に
お読みいただきありがとうございました!
ヤプリでは、一緒に働く仲間を募集しています。この記事がヤプリのiOSエンジニアに興味を持つきっかけになれば幸いです。
「もう少し具体的な話を聞いてみたい」という方は、是非カジュアル面談にお越しください。ご応募を心からお待ちしております。