expo.ioを使ってリアルタイムにReact Nativeアプリを開発する

f:id:amagitakayosi:20170417212408j:plain

1年ぶり3度目のReact Native入門してるんだけど、expo.ioっていうサービスがメッチャ便利そうだったので紹介します。
何がどう便利かっていうと、

  • ケーブルなしで、実機の動作確認ができる
  • もちろんコード変更も即座に反映される
  • 開発版アプリの配布がワンタッチでできる
  • 便利なReactコンポーネントもついてくる

youtu.be

expo.io とは

React Nativeでのアプリ開発を支援するサービスです。
公式サイトはこちら。めっちゃ素朴……

expo.io

expoは create-react-native-app XDE expo client といったツールを公開しています。

  • create-react-native-app: アプリの雛形を作るCLIツール
  • XDE: アプリ開発を支援するデスクトップアプリ。実機のログをみたり、アプリを再起動したりできる
  • expo client: 開発中のアプリを実機にインストールするためのクライアント

今回はこれらを使ってReact Nativアプリケーションを開発する方法を紹介します。

事前準備

インストールするものは多いけど、設定はほぼ不要です!

開発フロー

基本的な開発の流れはこんな感じ。

  1. create-react-native-app でアプリの雛形を作成
  2. npm start して、実機で確認しつつ開発
  3. リリースビルドを作ってストアに公開

create-react-native-app

create-react-app みたいなやつです。
基本的な操作は create-react-app と同じ。
facebook公式みたいな名前なのはちょっと邪悪な感じする……;;)

$ create-react-native-app my-app とすると、 my-app ディレクトリにアプリの雛形が作成されます。
雛形はかなりシンプルになっており、 .xcodeproj ファイルすら存在しません。
expoでは、アプリケーションの配布・ビルドを独自のしくみで行なうため、これだけで充分なようです。

f:id:amagitakayosi:20170417222536p:plain

実機で確認しつつ開発

npm start すると、react-nativeのパッケージャーにより、JSのビルドが始まります。
同時に、ターミナルに巨大なQRコードが出現します。かっこいい。

f:id:amagitakayosi:20170417223418p:plain

手元のデバイスにインストールした expo client でこのQRコードを読み取ると、開発中のアプリケーションがexpo clientにインストールされます。
これによって、ケーブルなしでも実機で動作確認しつつ開発を進めることができます。

ReactでふつうにWeb開発してるような気分。

開発中のアプリを配布

XDE上にある「Publish」ボタンを押すと、開発中のアプリを配布するためのリンクが生成されます。
これにより、アプリを社内リリースしたり、友達にだけリリースしたりといったことができます。

f:id:amagitakayosi:20170417224311p:plain

ほぼ雛形の状態でPublishを押したのがこちら。
インストールにはexpo clientが必要です。

my-app — Expo

リリースビルド

Building Standalone Apps | Expo v15.0.0 documentation

expo clientなしで、普通にApp Storeから配布するためには、exp というツールでビルドする必要があります。
今回はリリースまでやってないけど、iOS版のリリースビルドを作成する手順はこんな感じみたいです。

  1. $ npm i -g exp && exp login
  2. exp.json を作成
  3. exp start
  4. 別のターミナルで exp build:ios を実行

便利コンポーネントがついてくる

create-react-native-app で作ったアプリには、最初から expo がインストールされている。
わかりやすいところだと、画像を選択するImagePickerや、地図を表示する MapViewOpenGLの描画を行なうGLViewなどがある。

感想

前回React Native入門した時は全然ビルドできなくてハマってたんだけど、今回はexpoのおかげでめっちゃ気軽に開発を開始できた。
FAQにも「いまのところ有料にする予定はない」って書いてあるし、良いんじゃないですかね。

ハーフマラソンに出場してきた

f:id:amagitakayosi:20170417173353p:plain

3月末、大阪で開催されたハーフマラソンに出場した。
ついでにスーパー銭湯でのんびりしたり、鶴橋で焼肉を食べたりした。

マラソン

淀川沿いを往復するやつ。

第7回 淀川国際ハーフマラソン|サンスポマラソン

去年なんとなくジョギングしてた時22キロくらい走ってたりしたので、まあ行けるでしょ、というノリでエントリーした。
しかし、マラソン大会の経験は当然無いし、子供の頃から体力ゼロで通してきたので、結構不安になって朝のジョギングの頻度を上げたりしていた。
目標は低く、「完走できればOK」とした。

天気予報によると当日は午後から雨だったので、前日にはスポーツショップや100均に買い出しに行った。
ウエストバッグは持っていたものの、重さや収納を考えて、こちらの商品を購入した。

FlipBelt(フリップベルト) スポーツウエストポーチ FBB ブラック M

FlipBelt(フリップベルト) スポーツウエストポーチ FBB ブラック M

当日午前中は良い感じに涼しい天気だった。
ファミリーコース?みたいなのもあり、家族連れがおおい。
主催の人が歌ってたり、NMB?かなんかの曲にあわせて準備体操が始まったり、平和な感じ。

これ司会してるのラジオDJかなんかかと思ったけど、どうやら有森裕子本人らしかった。異常にテンション高い。
有森さん、スタート地点でも「いってらっしゃーい頑張って〜!フォォォおお!!」みたいな感じで、やっぱアスリートってエネルギーすごいんだなって思った。

序盤は「エッこんなゆっくり走っててもみんなスイスイ追い抜けちゃうの?」って思うくらい楽々で、道路脇の芝生の部分を走ってたりしたんだけど、これが裏目に出たのか、半分すぎた辺りから追い抜かれることが多くなった。
追い抜かれると焦ってしまって余計しんどくなるので、後半は目をつぶって走ったりしてた。

給水所では、水のほかにも一口大にカットされたアンパンやクリームパンが配られていた。
意外と制限時間までは全然余裕だったので、ちょっと立ち止まって味わって食べた。

最後のほうは足が半分麻痺してたけど、どうにか完走出来てよかった。
順位を見ると半分より下なのでやっぱり悔しい気はする。

こちらは当日のようすです。
走りながら撮るのも楽しい。

スーパー銭湯

マラソンのあとは、会場から電車で30分ほどのスーパー銭湯へ向かった。
街なかにあり、程よい広さでいろんな種類のお湯に浸かれて便利。

www.nobuta123.co.jp

日曜の夕方だが、部活帰りの少年たちが非常に多かった。
高校生や大学生のバイトが大量に働いていたのもあり、自分が大人サイドの人間って感じがしてしまう。

銭湯なのに美容室やレストランが併設されていたり、建物内の施設では自販機含め全て独自システムで決済したりと、一つの国家のような様相を呈していた。

鶴橋で焼肉

たっぷり筋肉を痛めつけたという名目で焼肉へ。
以前から鶴橋に行きたかったんだよ

www.yakinikusora.jp

鶴橋は焼肉屋さんだらけだが、今回は一番有名っぽいとこにした。
ホルモン5種盛りがお得で旨い。

ごちそうさまでした。