iOSアプリの受託開発の誘惑
- 最近はハイブリッドアプリを開発するための様々な仕組みが整理されてきたようだ
- ネイティブに近い開発手法も出てきており、既存のWeb系のスキルで開発できるらしい
- 今のお客様のスマホアプリを受託していきたい
iOSアプリを受託開発する前に考えること
iOSアプリは複数言語で開発可能
Swift : ネイティブアプリ開発
JavaScript : Cordovaを使用したハイブリッドアプリ開発
JavaScript : React Nativeを使用したよりネイティブに近いハイブリッドアプリ開発
C# : Xamarinを使用したハイブリッドアプリ開発
ハイブリッドアプリの特徴
- クロスプラットフォーム
- Web技術でアプリ開発が可能
- HTMLを使用したUI構築が可能
- ネイティブなコントロールもおおよそ利用可能
ネイティブアプリの特徴
- 実行速度が早い
- マイナーな機能も実現が可能
- Xcode9.0の生産性向上
- 開発環境ではまるところが少ない
開発手法選択の基準は?
- コスト?
- 仕様の複雑さ?
- チームのスキルレベル?
- 性能?
- B2c or B2B ?
⇛全てを考慮する必要がある
一般的な開発手法選択基準
- コスト重視かつAndroid/iOS両対応が必要。さらに、アプリの機能がシンプルである場合。 →ハイブリッドアプリを推奨
- アプリの仕様が複雑かつ、高いレイテンシーが求められる →React NativeやSwiftを使用したネイティブ開発
- iOS(iPhone/iPad)向けのみのアプリケーション →Swiftを使用したネイティブ開発か、シンプルな機能であればハイブリッドアプリ
後で「しまった!」を防ぐ為に
- SIでは決めた要件をあとでできないとは言えない
- ハイブリッドアプリで実現可能か?
- SIで開発したアプリは長い間使われつづける
- JavaScriptは進化が早いのに加え、動的型付言語で保守が可能か?
- iOSのアップデート後も使える?
- 性能が出ないと、受託は検収はもらえない
- ハイブリッドアプリは自分で性能を改善できる範囲に限界がある
できるだけSwiftを使う
- 自社サービスとして提供するような企業の開発と請負のSI開発を同一に考えると、痛い目に合う可能性がある。請負では作れないとわかってから、バックログを落とすとか簡単にできない
- iOSアプリの開発は画面/機能開発の工数以上に細部のデザイン/UXに時間を取られる。Swiftを使用して実現のためにはまるリスクを下げた開発がおすすめである。
開発手法以外の考慮事項
- 対応するiOSのバージョンを決める
- 対応デバイスを決める(iPhone/iPad/watch)
- アプリのデザイン・コンポーネントは縛る
- アプリ以外のサーバ開発の有無を明確に
- Appleストアへの申請作業の線引き
- アプリリリース後のサポート方針を決める
- iOSバージョンアップ時の対応内容を決める