クロスプラットフォームを導入したいかどうかは、場合による

今年のDroidKaigiのサイボウズブースでやっていたアンケートの質問内容に感じ取ったことを記事にするのを、すっかり忘れていたので書きます。 (ちなみにこの写真と記事作成に関しては当日その場で許可をもらっています)

Jetpack Composeはいずれ導入しないといかんだろうという考えで、アーキテクチャは一生何もわからないと思っています。 あと残り2つのアンケートについての話です。 今回はクロスプラットフォームについて。

なお、あくまでもyamacraft個人の見解であることをご留意ください。

プライベートなら…

プライベートで個人開発なら、技術検証目的でなら導入したいかなとは思っています。 それ以外であれば、Webのみでサービスを作るときには検討するかもしれません。 自分がWebフロントの技術に疎いのと、あそこは流行り廃りが早すぎて何がトレンドなのかわからないので…。

AndroidとiOS両方にアプリを提供する場合、導入したくないのが個人的な見解です。 理由として、結局1つのコードだけで両OSに対応したアプリを作るのは難しそうだなという導入事例をいくつか目にしていることです。 おそらくアプリの内容次第では完全に共通コードだけで対応できるものがあるのでしょうが、それはおそらくWebでの提供も可能なはずです。 そうなると、そもそもアプリで提供する必要はあるのかという疑問が拭えません。

あとは単純に、両OS対応するアプリを作る以上、それぞれでの動作検証の必要性が避けられません。 プライベート以外でコーディング以降の作業に時間を消費するのは、ちょっとモチベーション的に避けたいところ。

結局、わざわざクロスプラットフォームでAndroidアプリ作るなら、ネイティブで素直に作りたいなあとなってしまうわけです。

仕事なら…

結論から書くと、極力導入は避けたいと考えています。

まず企業のプロダクトは、可能な限り(収益やらコストやらに問題がなければ)永きに渡って続けていきたいわけです。 そうなるとプロダクトの改修や保守が続くわけで、ここでクロスプラットフォームを使う場合の不安要素があります。

AndroidやiOSはAPI(SDK)の更新が早く、また公式が積極的に最新版を利用することを求めてきます。 ネイティブ開発であれば、開発者都合のタイミングでついていくことができます。一方でクロスプラットフォームの場合、そちらの都合で待ちが発生することもあります。 ひどい場合は、クロスプラットフォームの更新が止まってしまうことで、結局ネイティブで作り直すケースも発生してしまいます。 このあたりの話は、○honeGapとか○amarin等が脳裏をよぎります。

またプライベートの項で少し触れましたが、「それもうWebでよくないか?」というアプリでない限り、それぞれのOSの独自機能へ対応するコードの用意が求められがちです。 結局それを対応するためには、それぞれのアプリの知識に精通したエンジニアが必要になり、そのエンジニアがいるならネイティブ開発でよくないか?と思ってしまいます。 逆に言えば、それができないエンジニアしかいない中で安易にクロスプラットフォームを導入すると、その部分で地獄を見ることになるんじゃないかと不安になります。

一方でReactをバリバリやっているエンジニアしかいない会社がReact nativeを導入したり、Dartをバリバリやっていたエンジニアがflutterを導入したりするのは少し話が変わります。 この場合、それぞれの地力があるのでゼロからネイティブで開発をするよりはスムージに品質のよいアプリが作りやすい可能性はあります。 まあ、その辺は該当のエンジニアではないので、自分の壮大な勘違いの可能性があります。

そうした理由で、結局各クロスプラットフォームを使う上で考えられるメリットが本当にメリットになったのか?というケースが多いので、どうにも導入には懐疑的になってしまうのが個人的な見解です。 エンジニアの技術的興味で導入したいという意見もわからなくはないですが、プロダクトはエンジニアのおもちゃではありません。 仕事である以上、たとえば自分が何らかの理由によって関わらなくなる以降のことも考えた上で、慎重に検討したいところです。

完全否定はではない

なんだかだいぶクロスプラットフォーム否定派みたいになってしまいましたが、新しい技術を拒絶したいわけではありません。 導入していろいろと頑張っている人達のことは応援していますし、うまく回っているプロダクトがあれば素直に尊敬します。

たとえばゲーム方面ではありますが、UnityやUnreal Engineはクロスプラットフォームとして十分な成果を上げていると思っています。 今回の写真に写っているflutterやKMMがそれぐらいの立ち位置になる可能性だってあり得ますし、ぜひ目指して頑張ってほしいのが本音です。 私個人はプログラミング言語を覚えるよりもプロダクトを作りたい側の人間ですので、覚える必要のある言語が少なくて済むのは大歓迎という立場です。

yamacraftを支援する

記事への感謝や応援を、コーヒー1杯分の支援で行うことができます。支援を受けると、さらに頑張って記事を書くようになります。