<Flutter攻略への道>第2回 基盤構築における機能選定の観点
デベロッパーズ・インサイト「最新技術の実践レポート」
基盤の構想
社内ポータルアプリ開発プロジェクトにおける基盤構想の取り組みをご紹介する第2回目です。今回はどのような観点から基盤に取り込む機能を決めていったのか、その手順をご紹介します。
基盤構築の重要性
スマートフォンアプリは機能性が重視されることから、日々変化するニーズに応えていく必要があります。つまり、継続した機能追加に対応するためには「開発効率の向上」「高い保守性」「将来の拡張性」が求められるので、アプリ全体に影響する機能や基本的な機能を基盤として構築しておくことは極めて重要になります。
基盤構築のミッション
当然のことながら、開発フレームワークにFlutterを採用しているので、iOSとAndroid両方で一貫した動作を保証しつつ、各OS固有の機能も活用できる共通基盤とすることを目指します。ですから、社内アプリだからといって、技術的にやってみたいから取り込むのではなく、この基盤を通じて何が提供できるかを考えて構築していかなくてはなりません。その結果、私たちが重視したのは次の3つの観点になりました。
基盤としての価値
開発速度の向上 | 共通機能の再利用により、機能の開発を迅速・簡素化 |
品質の向上 | 十分にテストされた基盤コンポーネントの使用と、ログ管理などアプリの共通ルールを提供することで、安定した品質を提供 |
付加価値の提供 | 拡張性が高く、求められるニーズに対応しやすい構成 |
基盤に必要な機能の洗い出し
次に基盤構築の第一歩として、私たちがおこなったのが必要な機能の洗い出しです。この過程ではアプリ開発の経験豊富なチームメンバーの知見を集結させ、幅広い視点から多くのアプリケーションで共通して必要とされる機能を挙げていきました。
主な必要機能として以下が挙がった一例
ユーザー認証・管理機能 | PUSH通知機能 | エラーハンドリング |
オフライン対応 | デバイス情報取得 | ログ管理 |
アプリのバージョン管理 | データの暗号化と安全な通信 | アナリティクス |
更に、そこから以下の点を踏まえて、アプリ全体に影響する機能を選別していきました。
機能選別時の留意点
再利用性 | 複数のプロジェクトで活用できる汎用的な機能か? |
拡張性 | 将来的な機能追加や変更に柔軟に対応できる構造となるか? |
保守性 | コードの可読性と修正のしやすさを確保できるか? |
性能 | リソース効率の良い実装が可能か? |
選別を進めていく上で、予め基盤とアプリケーションの機能の関係性を図式化しておくと便利です。 実際に開発を進めていく上で「ナゼ、この構想になったのか、ナゼ、この機能が要るのか」といったことをチームのメンバー全員がこの先、ブレることなく、同じ認識でいられるからです。私たちは以下のような図を予め起こしておき、機能の選定からその後の開発作業まで一貫した方針のもと、作業を進めることができました。
イメージ:開発基盤とアプリケーション機能の関係
システム開発の世界は日々進化しています。私達はこの基盤構築プロジェクトを通じて、技術的な挑戦を続けるとともに、アプリの利用者や運営者にとって価値を提供できる基盤となることを目指して引き続き、最善の開発モデルづくりを目指していきます。
皆様にも、何らかの形で参考になれば幸いです。