SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

基礎からはじめるReact Native入門

ExpoではじめるReact Native開発環境の構築

基礎からはじめるReact Native入門 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

Expoを使った開発環境を構築する

 それでは、Expoを使った環境構築の手順を解説していきましょう。まずは、Expoのコマンドラインツールをインストールします(リスト1)。

[リスト1]Expoのコマンドラインツールをインストールする
$ npm install -g expo-cli

 インストールする際の名前は expo-cli ですが、コマンドライン上で扱う場合のコマンド名は expo になることに注意してください。

 次に、プロジェクトを作成します。リスト2のようにコマンドを実行してください。「my-first-react-native-app」という名前のプロジェクトの作成がはじまります。

[リスト2]Expoコマンドでプロジェクトをセットアップする
$ expo init my-first-react-native-app

 途中、図4のように、プロジェクトのテンプレートをblankとtabsのどちらにするか質問されます。blankを選択すると、とてもシンプルな構成でプロジェクトの初期化が行われます。一方、tabsを選択すると、タブで画面の切り替えができるように画面遷移ライブラリが導入済みの、少し複雑で実用的なプロジェクトとして初期化されます。

図4:プロジェクトテンプレートを選択する
図4:プロジェクトテンプレートを選択する

 今回は最小構成のプロジェクトを作りたいので、blankを選択して、エンターキーを押します。すると、my-first-react-native-appフォルダが生成され、初回のnpm installが実行されます。しばらく待つと、プロジェクトの作成が完了し、リスト3のような表示が出ます。

[リスト3]プロジェクトの作成が完了した

Your project is ready at /path/to/my-first-react-native-app
To get started, you can type:

  cd my-first-react-native-app
  npm start

 では、作られたmy-first-react-native-appを開いてみましょう。図5のようになっているはずです。

図5:expo init後のプロジェクト構成
図5:expo init後のプロジェクト構成

 各ファイル・フォルダの役割は、次のようになっています。

  • assets/:アプリアイコンやスプラッシュ画像等のリソースを配置するフォルダ
  • .watchmanconfig:デバッグ中の監視にwatchmanコマンドを利用する場合の設定ファイル
  • App.js:Reactアプリケーションとしてのエントリーポイント
  • app.json:アプリの設定を記述するファイル
  • babel.config.js:Babelの設定ファイル

とてもシンプルですね。では次に、package.jsonを見てみましょう(リスト4)。

[リスト4]初期状態のpackage.json

{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "eject": "expo eject"
  },
  "dependencies": {
    "expo": "^32.0.0",
    "react": "16.5.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz"
  },
  "devDependencies": {
    "babel-preset-expo": "^5.0.0"
  },
  "private": true
}

 こちらもかなりシンプルに仕上がっています。react-nativeモジュールはnpmリポジトリで配信されている公式のものではなく、Expo開発チームがカスタマイズしたものです。ここにexpoモジュールを組み合わせることで、多彩な機能を実現しています。

 さて、パソコン側の環境構築としては、これで完了です。Android SDKもiOS SDKもインストールしていませんが、これで問題ありません。

公式Expoアプリでデバッグする

 通常のAndroid/iOSアプリ開発であれば、GradleやXcodeによるビルドを行うことで、手元のスマートフォンにアプリを流し込んで動作確認を実施します。しかし、今回はそれらのツールをパソコンにインストールしていません。Expoでは少しユニークな手法でこの問題を解決しています。

 環境構築の最後の手順として、デバッグ用のアプリをお手元のスマートフォンにインストールしてください。次のリンク先で公開されています。

 このアプリを入れたスマートフォンを、開発に使用するパソコンと同じネットワークに接続することで、App.jsを起点としたアプリをスマートフォン上で動作させることができるようになります。図6のようなイメージです。

図6:Expoのデバッグの仕組み
図6:Expoのデバッグの仕組み

 Expoアプリがブラウザのような役割を果たして、パソコン上のビルドサーバーからJavaScriptファイルをダウンロードし、それを実行することで画面を構築するのです。

ビルドサーバーを起動してアプリを動かす

 それでは実際に、アプリを動かしてみましょう。リスト5のコマンドを実行して、ビルドサーバーを立ち上げます。

[リスト5]ビルドサーバーを立ち上げる

$ npm start

 すると、ブラウザで図7の画面が開きます。

図7:ビルドサーバーのコンソールがブラウザで開く
図7:ビルドサーバーのコンソールがブラウザで開く

 このQRコードを読み取ることで、Expoアプリがビルドサーバーの存在を認識して、JavaScriptファイルをダウンロードできるようになります。iOSの場合は、OS標準のアプリで読み取ってください。Androidの場合はExpoアプリ内からカメラを起動します(図8)。

図8:AndroidではExpoアプリ内からカメラを起動する
図8:AndroidではExpoアプリ内からカメラを起動する

 あとは図9のように、カメラでQRコードを読み取るだけです。

図9:QRコードを読み取る
図9:QRコードを読み取る

 すると、アプリがビルドサーバーからソースコードのダウンロードをはじめ、画面が表示されます(図10)。

図10:画面が表示された
図10:画面が表示された

 おめでとうございます。初めてのReact Nativeアプリが表示できました!

ソースコードの更新を取り込む

 ソースコードを改修して、画面に改修内容を反映したい場合は、アプリの動作中にスマートフォンをシェイクします(小刻みに1〜2回振ってください)。すると、図11のようなデバッグメニューが出てきます。

図11:アプリをシェイクするとデバッグメニューが現れる
図11:アプリをシェイクするとデバッグメニューが現れる

 メニューの一番上にある「Reload」をタップすると、ビルドサーバーから最新のソースコードを取得し直し、画面が更新されます。

まとめ

 今回はReact Nativeをそのまま使うことの良しあしと、拡張性を少し犠牲にして、開発を楽にするExpoについて、解説しました。Expoによるアプリ開発では、Android SDKやiOS SDKが不要なので、モバイルアプリ開発のハードルをかなり低くなったように感じています。

 Reactコンポーネントを動かす環境ができたので、次回はReactというUIのためのフレームワークについて、おさらいをしてみましょう。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
基礎からはじめるReact Native入門連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 中川幸哉(ナカガワユキヤ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11384 2019/02/27 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング