追加機能より先に、中心となる操作を決める
誰が使い、何を行い、現在どこで困っているかを教えてください。そこから必要な画面、データ、連携を定めます。
例えば現場作業アプリなら、割り当てられた仕事を開き、メモと写真を記録し、報告を提出することが中心かもしれません。予定管理、管理画面、顧客への通知は後の段階に分けられます。これは範囲の例であり、実績の紹介ではありません。
最初のリリースで実際の課題を解決しつつ、必要な依存関係も見える形にします。
Androidアプリの案件に含められる項目
| 項目 | 一緒に定める内容 |
|---|---|
| 利用体験 | 主な作業、画面遷移、入力チェック、アクセシビリティ要件。 |
| アカウントと権限 | ログインできる人、役割、各役割がアクセスできる情報。 |
| アプリのデータ | 端末内とサーバーに保存する内容、更新のやり取り。 |
| 連携 | 必要なAPI、メーカーSDK、通知、機器との接続。 |
| 対応端末 | スマートフォン・タブレット、Androidのバージョン、指定端末。 |
| 納品 | テスト用ビルド、受け入れ条件、公開時の責任、引き継ぎ資料。 |
これらは範囲を考えるための項目であり、すべての案件に含まれる機能ではありません。バックエンド、管理画面、サブスクリプション、継続的なホスティングは必要に応じて別途定めます。
Androidが中心ならネイティブ開発を検討
利用者がAndroidを使い、OSとの深い連携が必要なら、KotlinとAndroidのネイティブツールが候補になります。新しい画面にはJetpack Composeを使えますが、既存のViewベースのアプリも全画面を置き換えずに改善できる場合があります。
技術は要件から選びます。iOSも同じくらい重要で、体験の多くを共有できるなら、別々に開発する前にFlutter開発も比較してください。
既に製品の設計が定まり、主にネイティブ実装が必要な場合はKotlin・Jetpack Compose開発をご覧ください。
利用者が実際に遭遇する状況を考える
電波が弱い、アップロードが中断する、アプリを閉じてから戻る。重要な状況なら仕様とテスト計画に含めます。
オフライン対応は単純な切り替えではありません。通信なしでできる操作、未送信の変更の表示、同じ記録を複数人が編集した場合の扱いを決めます。キャッシュの閲覧だけと、変更を保存して後で同期することでは要件が異なります。
読み込み中、データなし、エラーの表示も定義します。「まだ結果がない」と「サーバーに接続できない」は区別すべきです。
相談から範囲を定めたリリースまで
要件の整理: 利用者、中心となる作業、既存システムを伺い、確かな見積もりを妨げる不明点を洗い出します。
技術計画: アプリの構成、データの流れ、連携、対応端末を決めます。リスクの高い依存関係は先に検証できます。
実装: 合意した機能を確認可能な段階に分けて開発し、範囲の変更は明示して相談します。
テストと引き継ぎ: 合意した利用手順を確認し、既知の制約を文書化して、提案に含むビルドと公開資料を用意します。
ストア公開の支援は範囲に含められますが、お客様の開発者アカウント、ストア要件、審査結果はそれぞれ別の責任として扱います。
見積もりを左右するもの
主な要因は操作の数と複雑さ、バックエンドの準備状況、連携先の品質、端末固有の要件、必要なテストです。既存の仕様書や動作するAPIは不確実性を減らし、未完成のコードや仕様不明の通信方式は増やします。
予算や希望時期に制約があればお知らせください。信頼性に必要な作業を黙って省くのではなく、最初のリリース範囲を相談できます。
よくある質問
アイデアや大まかなデザインから始められますか?
はい。利用者、作業、事業上の目的が分かれば最初の相談は可能です。詳細な調査や設計は着手前に範囲を定めます。
現在のWebサイトや業務システムと接続できますか?
可能性があります。利用できるAPI、認証、権限、データ要件を確認します。連携に特化した作業はAPI・SDK連携をご覧ください。
Androidアプリはオフラインで動きますか?
そのように設計した機能は動作できます。オフラインでの操作、端末内のデータ、再接続後の同期方法を定める必要があります。
専用アプリにroot権限は必要ですか?
通常の業務・一般向けアプリには基本的に不要です。root権限や特権動作が必要なら、別の技術要件として評価します。
ソースコードは受け取れますか?
ソースへのアクセス、成果物の権利、第三者ライセンス、アカウントの責任を着手前の書面で定めます。引き継ぎを曖昧にしないことが大切です。
初回リリース後に機能を追加できますか?
はい。合意した基盤を後の段階で拡張できます。新機能、保守、第三者サービスの費用は範囲上で区別します。
利用者が完了したい作業から始めましょう
アプリに必要なこと、既にあるもの、最初のリリースが役立つ条件をお知らせください。