React Nativeについて教えてくれたのはこの人!

テクノロジーを愛するCEO 外資系ITコンサルティングファームコンサルタントとして6年間 今、ソフトウェア会社経営中、Webサービス、情報システム、スマホアプリ制作が得意分野です。IoTと機械学習深層学習はこれからチャレンジする分野です!PythonもJavaScriptも大好きです!最近はJetson nanoを遊んでいます! noteも書いています。
React Nativeとは?

React Nativeとは、Facebookが発表したスマホアプリ開発のためのフレームワークです。
スマートフォンのOSはいま、Appleが提供する「iOS」とGoogleが提供する「Android」の2つが主流です。
それぞれのOS上で動作するアプリを開発するためには、iOSはSwift、AndroidはJavaという、異なる言語を使い分ける必要があり、開発者にとって大きな負担となっていました。
その課題を解決しようと、Facebookが開発したのが「React Native」です。
React NativeはJavaScriptを用いたフレームワーク。1つの言語でiOSとAndroidという2つのプラットフォームをまたいでアプリ開発をすることができるのが特徴です。
React Nativeは入門者にもハードルが低い
React Nativeを使ってアプリ開発をしているソフトウェアエンジニアの川島賢さん。React Nativeの魅力について、開発言語にJavaScriptを用いている点を挙げます。
「iOSで開発に使われるSwiftは熟練プログラマーにとってはパワフルなツールになり得ますが、習熟するまでの学習コストが高いのが難点です。
その点、JavaScriptを使うReact NativeはWeb系のフロントエンドの開発経験があれば始められるので、入門者にとってもハードルが低いといえます」
「ほんの十数年前、JavaScriptといえば“ブラウザ側で動くおもちゃ”といった程度の認識で、JavaScriptをやっていると言えば笑われたものです」と話す川島さんですが、JavaScriptにはいま、他のプログラミング言語にない「勢い」があるといいます。
「人気の高いプログラミング言語は、利用するプログラマーのあいだでコミュニティが形成されます。コミュニティが成長することによってさまざまなライブラリーやツールが生まれ、やがてエコシステムになっていきます。
近年、RubyやPythonといったコミュニティが盛り上がっていますが、JavaScriptはそれを上回る勢いがあります。言語を扱う人が多ければ多いほど、開発者の母数は増えます」
加えて、JavaScriptはブラウザだけでなく、いろいろなところで動かすことができるシンプルな言語であるところも利点だと指摘します。

■React Nativeは異なるプラットフォームで利用できる
川島さんは、React Nativeでのアプリ開発に次のようなメリットを感じています。 ・異なるプラットフォーム上で統一されたUI/UXが実現できる iOSとAndroidでそれぞれ異なる言語でアプリを開発した場合、UI/UXに少なからずずれが発生します。しかし、ReactNativeであれば、どのプラットフォームでも比較的容易に統一されたUI/UXを実現することができます。
・コストが削減できる iPhoneとAndroidスマホの両方でアプリをリリースしたい場合、Swiftのスキルを持つエンジニアとJavaのスキルを持つエンジニアそれぞれを採用しなければなりません。しかし、React Nativeに置き換えることでエンジニアを半分に減らすことができ、開発コストを削減することができます。
■フレームワークとして十分に成熟しておらず不安定な面も
一方で、「React Nativeでアプリ開発をすることで、楽になった部分もあれば、逆に大変になった部分もある」といいます。 「React Nativeはフレームワークとして発展途上にあり、開発が活発に進められています。そうしたフレームワーク自体のアップデートに対応していく必要があるばかりでなく、iOSとAndroid両方のバージョンアップにも対応しなければなりません。 また、新しいスマホが登場するたびに、異なるハードウェアをベースにした新機能にも対応していく必要があります」
SwiftやJavaといったプラットフォーム公認の技術であればドキュメントが充実しており、構成もスムーズ。しかし、「React Nativeではそうはいかないこともある」と加えます。 「React Nativeの場合、開発の工程でレイヤーを1つ余分に挟むことになるので、難しいバグが発生した場合の原因追究が複雑になります」
React Nativeを学ぶときに必要な知識は?

これからReact Nativeを学ぼうとする場合、どんな知識を身につけたらいいのでしょうか。 「React Nativeでアプリ開発をしてみたいからと言って、React Nativeに関する知識だけ身につければいいというわけではありません。JavaScriptの使い方やアプリ開発の基本的な知識はおさえておきたいですね」 川島さんに相談する人の中にはJavaScriptの書き方や非同期の処理方法など、React Native以外の部分で戸惑う人が多いそう。 特に、アプリ開発の知識については、「氷山の下の部分は共通している」と川島さん。インフラの知識やデータベースの構造、アプリをリリースするまでの手順は、SwiftやJavaといったプラットフォームと変わらないので、「アプリ開発の裏を知っておけるといい」と話します。 とはいえ、大切なのは「手を動かすこと」。 「React Nativeを選ぶ。そこはいい選択です。コンピュータサイエンスの基礎知識を網羅的に完全習得してからでなくても、開発の要所でぶつかる問題を1つ1つ解決していくことで、効率よく学ぶことができます」
React Nativeでものをつくる喜びや達成感を感じてほしい

大学でコンピューターサイエンスを学んだ川島さんは、ソフトウェア制作を経て大手コンサルティング会社のアクセンチュアへ。ITコンサルタントとして情報システムの構築などに携わりましたが、「お客さまに近いところで仕事がしたい」と考え、自らソフトウェア制作会社を起業しました。
Webサービスの開発や起業の顧客管理システム、人工知能に関するプロジェクトなど、フロントエンドからバックエンドまで幅広く手がけてきた川島さんですが、最近はReact Nativeについて相談する人も少なくありません。
そんな人たちに、こうアドバイスします。 「React Nativeを使ってみようと思うのであれば、とにかく手を動かしてみてください。そして、つくったものが動いたときの感動や達成感を感じてほしいですね」