こう 聞かれます
- 「ネイティブ、
Flutter、 React Native を、 どう 選びますか」 - 「iPhone と Android の
両方に 出すアプリを、 少人数で 作る ことになりました。 何で 作りますか」 - 「クロスプラットフォームで
作って、 困る ことは ありますか」
面接官が 見ている点
- 好みではなく、
人数、 期限、 使う OS の 機能、 チームの 得意で選べるか - 1 つの
コードで 両 OS を 作る 良さと、 そのかわりの 弱さを 両方言えるか - あとから
乗り換える 費用まで 考えているか
短い答え
- 両 OS を
少人数で 作るなら、 1 つの コードで 両方に 出せる クロスプラットフォーム (Flutter や React Native) を 選びます。 - カメラ、
Bluetooth、 バック グラウンドの 処理のように OS の 機能を 深く 使うなら、 それぞれの OS の 言葉で 書く ネイティブを 選びます。 - クロスプラットフォームの
中では、 チームが Web と React に 慣れていれば React Native、 画面を 細かく 作り込みたいなら Flutter が 候補です。
少し 詳しい答え
3 つの 選び方の違い
- ネイティブ iPhone は Swift、
Android は Kotlin のように、 OS ごとの 言葉と 道具で 作ります。 OS の 新しい 機能を すぐ 使え、 動きも OS の 作法どおりに なります。 そのかわり、 同じ 画面を 2 回作り、 2 つの チームか 2 つの 得意が要ります - React Native JavaScript (や TypeScript) と React の
書き方で 画面を 組み、 OS の 部品を 使って 表示します。 Web で React を 書いている 人が 入りやすいのが強みです - Flutter Dart という
言葉で 書き、 画面を 自分で 描きます。 両 OS で 見た 目が そろいやすく、 作り 込んだ 画面を 同じように 出しやすいのが強みです
何で決めるか
- 人数と期限少人数で
両 OS を 早く 出すなら、 1 つの コードで 済むほうが有利です - 使う OS の機能カメラの
細かい 制御、 Bluetooth の 機器との やり 取り、 裏で 動き続ける 処理などが 中心なら、 ネイティブの ほうが 詰まりにくいです - チームの得意今いる
人が 書ける 言葉で 選ぶと、 立ち 上がりが 速く、 人も 集めやすくなります - 画面の作り込み独自の
見た 目や 動きを 両 OS で そろえたいなら Flutter、 OS ごとの 見た 目に 合わせたいなら ネイティブか React Native が向きます
弱さと、 別の 選び方を する 条件 (トレードオフ)
クロスプラットフォームは 1 つの
だから、
話すときは、
よく ある間違い
- 「人気だから」
「自分が好きだから」で選ぶ 人数、 期限、 使う 機能、 チームの 得意で 選んだ、 と言えるようにします - クロスプラットフォームなら
ネイティブの コードは 要らないと思う OS に 深く 入る 所では、 結局 OS ごとの コードを 書く ことがあります - 乗り換えの
費用を考えない あとから 作り直すと、 画面も 試験も 全部 やり直しです。 最初に 何を 捨てるかを 決めておきます
深掘りの問い
- 「Web の
アプリ (PWA) では だめですか」 通知や裏の 処理など、 OS ごとに 使える 機能の 差が あるので、 要る 機能が Web で 足りるかを 先に 確かめる、と答えます - 「ネイティブで
作るなら、 両 OS の 差を どう 減らしますか」 画面の 決まり (色、 文字、 部品) を 共通にし、 API と データの 形を 1 つに そろえる、と答えます - 「アプリの
更新を 早く 届けるには」ストアの 審査を 通す更新と、 サーバー側の 設定で 変えられる 部分を 分けておく、と答えます