Karabiner Logo

品質と効率を両立するOisixアプリの技術的進化 ― MVVM化からKMP導入まで

オイシックス・ラ・大地株式会社

サイトを見る
アプリ開発
アプリの画面イメージの写真

カラビナテクノロジーは、2018年にオイシックス・ラ・大地株式会社の子会社となりました。以降、Oisix、らでぃっしゅぼーや、大地を守る会のDX支援、ECアプリやサイトのシステム開発・運用保守、UI/UX改善、コンテンツ制作など、幅広い領域を担当しています。 本記事では、2022年〜2025年現在までの間に、カラビナテクノロジーが協働で携わってきたOisixのアプリ開発について紹介します。

アプリの成長に応じ発生する課題を一つ一つ解きほぐす。共通化・自動化・体制づくりまでを一気通貫で支援

カラビナテクノロジーでは、新規リリースと機能改善の両方をバランスよく実行すべく、Oisixのアプリ開発チームと協働で、下記施策を並行して実施しました。

1. アーキテクチャのMVVM化

MVVM移行では、既存画面の分析をしながら、段階的な導入戦略を採用しました。ViewModelによる状態管理導入、LiveDataからStateFlowへの移行を行い、複雑化していたUIロジックを整理して、テスト性・保守性を向上させました。

2. CI/CDや通知系の自動化

自動化のスクリプトや設定は、既存運用に沿った形で自然に組み込めるよう調整して進めました。具体的には、下記の自動化を行いました。 ・プランニングレビューのSlack通知・リマインドをGitHubラベルベースで ・リリース作業のバージョン更新/Firebase・Google PlayへのデプロイをGitHub Actionsで ・共通リポジトリからiOS/AndroidへのIssueコピーをBotで

※詳細は、こちらもご覧ください。 チーム全体の生産性を加速する!開発ナレッジを活かした自動化の実践

3. Copilot code reviewの日本語化

GitHubのプルリクエストレビューをCopilotで実施できるようになりましたが、なにも調整しなければ英語でレビューされるため、カスタムインストラクションを整備し、日本語化しました。

4. Kotlin Multiplatform(KMP)の導入

チームには、KMPの知見が少なかったため、最初は新規APIから段階的に導入するアプローチを選択しました。共通ロジックを :kmp:shared モジュールとして切り出し、APIクライアント〜UseCaseをKMPで実装し、Android・iOS両プラットフォームでの動作検証・統合までを伴走しました。

KMP化を進行しているIssue

5. Dagger2からHiltへの段階的な移行

Dagger2に残っていた独自実装(ボイラープレート削減のための工夫)があり、Hilt移行は一筋縄ではいきませんでしたが、技術顧問とも連携し、既存コードに合わせた段階的なHilt移行プランを計画。Component構造のHilt化からActivity/ViewModel単位での注入対応までを完了させました。

6. 定期的な勉強会の開催

Renovateによる週次のライブラリ更新会を習慣化させました。また、Jetpack Composeリリースノート読書会、神クラスリファクタリングも実施しました。

Oisixアプリの開発資料

成果

これらの取り組みにより、リリースの品質は大幅に向上しました。具体的な成果は下記の通りです。

1. MVVM化で技術的負債を解消

保守コストや開発スピードに課題があったUIとビジネスロジックを分離し、保守性・テスタビリティを改善。コードの責務分離が進み、テストのしやすさや改修時の安心感が増しました。

2. 自動化による業務効率化

リリースやプランニングにかかる時間を大幅に短縮することができました。属人的な作業が減り、開発の再現性・チーム全体の視認性が向上しました。

3. Copilot code review日本語化で、コードの品質が向上

「.github/copilot-instructions.md 」でレビュー内容を日本語対応し、可読性と指摘精度を向上することができました。

4. KMP導入によりクロスプラットフォームアプリの効率的開発と保守性の向上

OSとAndroidで重複するドメインロジックの管理が煩雑だったため、共通ロジックをKMP化し、iOS/Android両方に適用可能な構造にすることができました。共通処理の一元管理が可能となったことで、二重実装の工数・保守負荷を削減しています。

5. Hilt移行によりチーム開発の効率化・保守性の向上・テストの柔軟性を担保

Dagger2で構築されたボイラープレート削減とコードの見通しを改善することができました。

6. 定期的な勉強会の開催により、チーム内で技術に関する議論が活発化

定例のライブラリ更新や勉強会を通じて、チーム内に技術トピックへの意識や、ナレッジ共有の文化を定着させました。

クレジット

クライアント

オイシックス・ラ・大地株式会社

オイシックス・ラ・大地株式会社は、「Oisix」「らでぃっしゅぼーや」「大地を守る会」の国内主要ブランドを通じ、安心・安全に配慮した農産物、ミールキットなどの定期宅配サービスを提供する企業です。「サステナブルリテール」(持続可能型小売業)としてSDGsに取り組み、サブスクリプションモデルによる受注予測や、ふぞろい品の積極活用、家庭での食品廃棄が削減できるミールキットなどを通じ、畑から食卓まで、サプライチェーン全体でフードロスゼロを目指しています。

制作メンバー

Android: mike、mikan、luna

やってきたこと一覧