こんにちは。SUPINFのポメでございます。早くも2年目です。
しばらくスマホアプリに携わっておりましたので、今回はスマホアプリのお話です。
クロスプラットフォームの憂鬱
有名なアプリの殆どはiOSにもAndroidにも対応しています。
スマホアプリを世に出したいと思った時、iOSとAndroidの両方にアプリをリリースするのが大多数です。
しかしiOSアプリとAndroidアプリは開発言語が違うのです。つまり、(ほぼ)同等に動作するものを、違う言語で2つ開発しなければならない・・大変です。必然的に、工数が多くなってしまいます。
そこで、ハイブリッドアプリ開発。
ここで言うハイブリッドアプリ開発とは、HTML+JS+CSSで、つまりWebベースで開発していくことです。
(Unityは3D描画に強い言語として有名ですが、iOSとAndroidそれぞれのアプリをビルドすることができるので、これもハイブリッドアプリ開発と呼べます。が、ここでは触れません)
さて、iOS・Androidが共通でアプリに使える機能としてWebViewというものがあります。
iOSのものは"UIWebView"とAndroidの"WebView"は、全く同じ仕様というわけではないですが、Webを閲覧・操作するという目的は同じです。
WebViewの最も身近な例であるところのWebブラウザは、基本的にはグローバルな(ネット上の)Webを参照・表示するものです。
が、本来ローカルに置いてあるHTML+JS+CSSを見にいくことも当然できるのです。
ある程度の機能をもつHTML+JS+CSSと、それらを参照できるWebView。これらをセットにすれば、それが一つのアプリになります。
ハイブリッドアプリ開発で主な工程は、このHTML+JS+CSSをつくっていく、ということになります。
そしてこのHTML+JS+CSSは、iOSでもAndroidでも読み込める、「一元化できるコード」なのです。
ハイブリッドアプリ開発のメリット
1. ソースの一元化により、工数を抑えることができる。
最大のメリットです。一元化できるソースが多ければ多いほど、ハイブリッドアプリ開発には旨味があるといえます。
2. 既存のJSモジュールがあれば、流用できる(かもしれない)。
例えば、既存のWebサービスをスマホアプリとして落とし込み、新しくリリースしたいときです。
既に運用段階にある信用できるモジュールがアプリでも使えれば、それらを一からさらに工数の削減につながると思われます。
ハイブリッドアプリ開発のデメリット
1. ネイティブな機能を使うソースは一元化できない。
ネイティブな機能とは、ストレージへの参照・保存、カメラの利用、他アプリとの連携などが挙げられます。「HTML+JS+CSSだけではできそうにないこと」と捉えていいと思います。
アプリの機能としてカメラの利用が必要な場合、そのカメラ画面はネイティブアプリ開発と同様にiOS向けとAndroid向けにそれぞれのロジックを記述する必要があります。
2. 処理速度が懸念される。
ネイティブアプリとハイブリッドアプリでそれぞれ理想的な実装をした上で、ハイブリッドアプリの方が動作が速い、ということはまずないと思われます。
リアルタイムな画像処理、複雑な物理演算、スワイプやピンチの繊細な検知などの機能が多くなる時は、そもそもハイブリッドアプリ開発という手法をとるべきではないかもしれません。
まとめ
ハイブリッドアプリ開発が有力な選択肢となるのは、以下のような場合。
・リアルタイムで高度な演算を要求されない。
・スマホ独特の機能は控えめ。
・既存のWebサービスがある。
ということで、ハイブリッドアプリ開発というのは必ずしも万能な方法とは言えませんが、
ネイティブアプリ開発と比較して、工数を大幅に削減できる可能性のある、非常に有力な選択肢です。
すごーく個人的な話をすると、僕は初めてのアプリ開発がハイブリッドアプリ開発だったので、わりと思い入れのある開発法だったりします。
ネイティブなお仕事も、ハイブリッドなお仕事もお待ちしています。ぜひご相談下さい。
ご相談はこちらから
企画や要件が固まっていないご相談でも
お気軽にお問い合わせください。
-
01
相談する
-
02
要件ヒアリング
-
03
専門企業のご紹介
-
04
企業との
ご面談&見積取得 -
05
企業選定〜契約締結
サポート -
06
専門企業と直接
プロジェクト進行
※ステップ5以降はご希望に応じて
サポートいたします。
EDITOR PROFILE
株式会社SUPINF
堀江 浩史
AWS/コンテナ/AI/MSP/システム開発など、お気軽にご相談ください。
BTL アンバサダーとしても活動中です!
株式会社SUPINF
株式会社SUPINFでできること
-
WEBサービス開発
-
インフラ構築
-
ソフトウェア・業務システム開発