僕は2年間Web開発に携わってきましたが、その中でハイブリッドアプリの開発にも一時期アサインされておりました。
今回は当時の開発を振り返りながら、感じたメリットとデメリットをWeb開発者目線で解説していきたいと思います。
1.ハイブリッドアプリとは
ハイブリッドアプリとは一つのソースコードでWebアプリとモバイルアプリの両方を開発することができる開発手法になります。
開発言語としてはWebアプリケーションとしてフロントエンドと同様、HTML、CSS、JavaScriptを使用して実装します。Webアプリケーションとしては、従来のWebアプリケーションと同じく、Webブラウザ上でアプリケーションが動作します。モバイル上ではスマホにあるWeb Viewerという機能を利用することで、Web用に開発したアプリケーションをモバイルアプリとして動作させることができるようになります。
2.ハイブリッドアプリのメリット
まずは、ハイブリッドアプリのメリットを解説していきます。
主なメリットは三つになるかと思います。
プログラムソース、開発環境、人的資源の観点からメリットを挙げることができるかと思います。
2-1.一つのソースでWebとモバイルの開発が行える
上述したように、ハイブリッドアプリではWEB、モバイルともに、HTML、CSS、JavaScriptでアプリケーションを開発します。そのため、一つのソースで双方の開発を行うことができます。WEBとモバイルで二つプログラムを書かなければいけないところを一つのプログラムで開発することができるため、単純計算ではありますが、プログラミングにかかる工数が半分になります。
2-2.開発段階ではモバイル用の環境構築が不要
一つ目はプログラミングの時点では、HTML、CSS、 JavaScriptを使用して開発しているため、Webブラウザを使用して開発やデバッグを行うことが可能です。
もちろん、実機テストやリリースの段階ではアプリをビルドするための環境構築を行う必要がありますが、モバイルの機能に依存しない画面や機能の実装段階では、モバイルアプリの開発用の環境構築が不要ということになります。
アプリをビルドするためにはiOSであればXcodeが、AndroidであればAndroidStudioが必要になります。XcodeはMacでしか使用できません。開発マシーンの有無や容量、環境構築といった、コストや手間を省くことが可能になります。
2-3.人のアサインが比較的容易
繰り返しになってしまいますが、ハイブリッドアプリでWEBのフロントエンド技術でモバイルアプリを実装できます。そのため、大枠の画面や機能であればWEB開発の知識で開発することができます。
通常、モバイルアプリを開発するためにはiOSであればSwift、AndroidであればJavaやKotlin、クロスプラットフォームであればFlutterの言語知識が必要になります。
そのため、モバイルアプリを開発するため、上記の言語知識がある人をアサインするか、新たに学習させるなどの工数がかかります。
WEB開発を行なったことがあれば大体の人はHTML、CSS、JavaScriptの知識はあるかと思います。(JavaScriptについてはFWによると思いますが)そのため、新たな知識のキャッチアップが最小になり、すぐにメンバをアサインすることが可能になります。
以上がハイブリッドアプリ開発の際のメリットになります。総じてWeb開発の知識でできるということで人、手間、コストの面でハードルを下げることができるということがポイントになるかと思います。
3.ハイブリッドアプリのデメリット
続いてハイブリッドアプリのデメリットを解説していきます。
3-1.起きる不具合がニッチ
使用するライブラリ、FWによるとは思いますが、何か不具合が起きた際にハイブリッドアプリ自体の記事があまり多くなく、どうしても解決できないということがありました。
そういう場面に出会した時は力勝負をするか諦めるかという選択が必要になります。
3-2.開発ライブラリの依存する部分が発生する
iOSは大体1年に一回メジャーアップデートを行い、Androidも定期的にOSのメジャーアップデートが行われます。
その際にクロスプラットフォームを実現するために使用しているライブラリがそのOSのアップデートに対応しているかという問題が発生します。
開発が盛んなライブラリであれば、OSのアップデートに合わせてライブラリをアップデートすることがあるかもしれませんが、そうでなければモバイル上で動作するかは運次第、というようなことが発生してしまいます。
また、開発が盛んなライブラリでもOSのアップデートにリアルタイムで追いつくことは難しいため、最新のOSに対応したアプリのアップデートはどうしても後追いになってしまいます。
3-3.モバイルアプリ側のUIが不安定になる
僕自身あまり気にはならなかったのですが、巷で言われていることとして、UIの動作が不安定になることがあります。ネイティブアプリとは違い、ライブラリやモバイルの機能を使用してをWebアプリケーションをモバイル上で動作させているため、読み込みが遅くなったり、レイアウトが崩れてしまうなどのUI上の問題が起きてしまいます。
4.ハイブリッドアプリに取り掛かる際の留意点
次にハイブリッドアプリの開発の際の留意点を解説していきたいと思います。
4-1.モバイルアプリの知識、環境が全く必要な訳ではない
メリットで挙げた点を全てひっくり返してしまうようなことなのですが、結局、一つのソースコードでWebアプリと同様にモバイルアプリを開発できるといっても、モバイルアプリにはモバイルアプリ特有の知識が必要になります。
プッシュ通知、通知バッジ、デバイスのストレージや、ローカルデータベースの管理、GPS、動作検知機能、オフラインでの動作確認など、Web開発ではあまり馴染みのないモバイルならではの仕様を利用した開発になる場合があります。
開発要件によりますが、モバイルの仕様についてはWebとは違った形でキャッチアップが必要になります。開発する際に使用するライブラリがモバイルの仕様を利用した実装を行うことができるかの調査が必要になります。
場合によってはSwiftやJavaでプラグインを作成する必要があるなど、特定の部分については、モバイル開発の知識が必要になります。
また、上記の機能についてはシュミレータや実機でのテストが必要になります。
5.まとめ
開発者側としては、完全に大枠はWEBの知識で対応できるため人的リソースの確保はある程度ハードルが下がるかと思いますが、最低一人はモバイルアプリに精通している人が必要かなと思います(僕の場合は周りに一人もいなかったため、大変苦労しました)。
また、やはり情報が少ないために解決が難しい問題がおきることがあったり、そもそもハイブリッドアプリじゃ実現できない場合もあるので、そこの調査と切り分けが要件定義の時点で必要かと思います。
ビジネス側としては、初期開発でコストを抑え、開発速度を上げるためにWebと同時進行でモバイルアプリの開発を行うことという点もあるかと思いますが、要件を最小限にして、モバイルアプリを伸ばしていく段階では、どこかしらのタイミングでネイティブアプリへの切り替えが必要があるのではないかと考えています。
理由としては、いつどのタイミングでそのハイブリッドアプリ用のライブラリの開発が止まるかもしれないという保守的な観点とOSの機能を最大限生かしきれない可能性があるという機能面の観点です。
以上のことを踏まえてハイブリッドアプリの開発を検討していただけたらと思います。
今回はここまでです。最後まで閲覧くださりありがとうございました。
コメント