ionicでのハイブリッドアプリ開発のメリット・デメリットについてそろそろまとめとく
3年くらい前からionicを使い始めて良いところと悪いところが少しつつわかってきたのでメモしておく
メリッド
学習コストが低い & 開発リソースが確保しやすい
swiftやjavaなどでの実装となるとそれぞれのプログラム言語の学習する必要がある。言語自体の学習コストよりもios、androidそれぞれのUIKitというか概念を勉強する必要がありやはり慣れるのにそれなりに時間がかかると思う。その点、ionicだとWebの技術(HTML+CSS+Javascript) がある程度わかっていればなんとなく作れてしまう。またアプリ作り始めてもすごい時間がかかったりすると挫折しがちだがなんとなくでも動くものが作れればあとは慣れなのでこれはメリットかと思う。また、ネイティブだとちょっとしたレイアウト調整や文言変更でもそこそこ経験が必要になるがHTML+CSSだと直感的にもわかりやすく作業できる人が多いのでそういう意味でリソースが確保しやすいと思う。
デメリット
開発環境のバージョンアップが速い
これはメリットというか良いことだとは思うがあえて辛いところもあるということでデメリットの方に書いた。ionic1から2に上がったとき、angular1も2への変更がありangular1と2は全く別物となっていてバージョンアップ=アプリの作り直し ということとなってしまいやはり辛かった。ionicに加えてcordova自体のバージョンが上がるとプロジェクトのファイル構成も変わってしまい、これらを新しい環境にあわせて継続的に対応させ続けていくとなるのでやはり大変。長く続くアプリでは開発環境のバージョンアップも視野にいれないとならない。Swiftもけっこうバージョンアップしてるがangularやcordovaの変更に伴う修正作業と比べたらだいぶ楽なんじゃないかと、、
WebViewベースのガワアプリの開発が難しい
cordova自体の仕組み上の問題だが、アプリの一部にWebViewを組み込むようなアプリの実装が難しい。例えば画面の下タブはionicのコンポーネントを使い、タブを選択するとWebViewが切り替わるようななんてことなさそうなアプリだがこれが難しい。ionicだけで何ができて何が難しいかというのは判断はある程度慣れだとは思うがこういうのが出てくると大変
結論
何年もメンテし続ける必要があるようなアプリだと最終的にかかる工数もネイティブの方が少なくなるんじゃないかと思う。また、失敗が許されないような案件もネイティブの方が確実だと思う。逆にプロタイプのアプリや、画面数が少ないので開発環境のバージョンアップがあってもサクッと作り直せるアプリだとionicがいいのかなと思う。あと今あげたようなデメリットを許容してくれることもけっこうあると思うのでそういう場合もionicで作るのはありだと思う。ionicもけっこうたつのでだいぶ成熟してきた印象はある。flutterには期待してるけど正直まだ勉強中なのでわからん。
結論、どっちがいいかはケースバイケース。けど趣味でアプリ作るなら自分はionicかも、、以上です