React Native&ExpoをCloud9で誰も失敗しない開発環境構築 2020年4月
背景
最近、macユーザーの私と、WindowsユーザーとでReact Nativeを使用しているのですが、Windows(特にWindows 10 Home)での同一の環境構築は難しくて手に負えなかったため、クラウドIDEを使用することにしました。
環境構築プロはDocker使うといいと思います。
この記事の仮想対象先
- AWSやCloud9を触ったことある人
- React Native初心者
(過去の私を対象としてお送りします)
手順というか解説
- Cloud9の環境(Environment)を作る
- nvmを最新にする
- nodeを最新安定版にする
- npmがきれいか確認する
- npmを最新にする
- npmのgrobalにexpo-cliだけを入れる
- expoコマンドで操作していく
- expoで新規アプリを作り、スマホからアクセスしてみる
- 8は失敗するので、ポートを開放し、外部アクセス可能にする
- expo webでwebから見てみる
1. Cloud9の環境(Environment)を作る
AWSのアカウントを作成してください。また、クレカを登録してください。
Cloud9は無料ではありません。格安ですが。
料金-AWS Cloud9
アカウントにログインしたら、こちらからCluod9にアクセスし、、、
???「うわぁああああ エイゴだああああ」
僕「コワクナイヨー」
矢印から、 Create Environmentを選択し、
進めていくと、作成され、Cloud9のIDEが出てくるはずですね。
2. nvmを最新にする
一言メモ: nvmとはNode Version Managerの略です。
「node.jsはバージョン依存度が高いため、バージョン管理ツールが必須です。」
「Cloud9ではnvmとNode.jsは既にプリインストールされています。」
Node Version Manager
$ nvm --version
0.31.7
現在のnvmを知りましょう。0.31.7だそうです。
最新は0.35.3ですので、更新しましょう。
$ cd ~/.nvm
$ git fetch
$ git pull origin master
$ source ~/.nvm/nvm.sh
$ nvm --version
$ cd ~/environment
$ nvm --version
0.35.3
0.35.3に更新できました。
3. nodeを最新安定版にする
$ node -v
v10.20.1
現在のnodeを知りましょう。10.20.1だそうです。
最新安定版は12.16.2ですので、更新しましょう。
$ nvm ls-remote
#インストールできるものの確認。LTS = Long Term Suppot(安定版)
$ nvm install v12.16.2
$ nvm alias default v12.16.2
#打たないと新しいターミナルでは古いのがdefaultのままになってしまうよ
$ node -v
v12.16.2
v12.16.2に更新できました。
4. npmがきれいか確認する
一言メモ: npmでインストールしたパッケージは、「グローバル」か「ローカル」かに入る。グローバルでインストールすると、
利点:実行ファイルがパスの指定なしで実行できる。(ローカルはできない)
例:
$ npm install hoge -g
# -gはグローバルの略。これからも出てきます。つけないとローカル
$ hoge -v
# hogeパッケージのバージョンが出る
欠点:プロジェクト内のpackage.jsonに記載されない。(ローカルは記載される)
そのため、git等でプロジェクトを共有した際に、グローバルインストールのバージョンが管理外になるため同一の環境になる保証がない。
【npm】グローバルインストールは控えるべき
今の僕 「じゃあ何はグローバルにするの?」
1週間後の僕「〇〇-cliってパッケージだけは npm install -g していいよ」
それを踏まえて、
$ npm list -g
現在のグローバルにインストールされてるパッケージ一覧。
色々出てきますが、大事なのは直下がnpmのみであること。
確認できましたね。きれいですね。
5. npmを最新にする
$ npm -v
6.14.4
現在のnpmを知りましょう。6.14.4だそうです。更新しましょう。
$ npm update -g npm
6.14.4
更新されない! わけではありません。6.14.4が最新でした。
6. npmのgrobalにexpo-cliだけを入れる
ようやくです。ちなみに上記の手順をスキップすると、symlink貼るところとかでエラーが起きることが多いです。他にもいろんなエラーがががががが
$ npm install expo-cli -g
hapi(パッケージ名)の周りでいくらかwarnが出ました。きっとそのうちupdateで直るでしょう。
optionalをskipしてるのは正常。マシン依存のものをスキップしてくれてる。(mac専用のコマンドとかパッケージとか、そういうのをスキップ)
私は出ませんでしたが、もしerrorが出てたら、それは良くないです。
この先に進むのは非常によろしくないです。ググってなんとか解決を目指してください。
7. expoコマンドで操作していく
僕「expoとnpmとyarnと、なにが違うんだ??」
1週間後の僕「npmとyarnはほぼ一緒。今回はyarnは入れてない。expoはcreate-react-native-app(パッケージ名)が進化した先。
expoコマンドは結構便利で、expo install パッケージ名 も出来るようになるぞ。
ちなみに expo install コマンドでは内部で npm install コマンドを叩いてるから、一緒だ。」
npmとyarnの細かい挙動の違いまとめ
$ nvm install(もしくは i) ~~ は
$ expo install ~~ で同じくインストール出来るので、今後はこっちを使用する。
8. expoで新規アプリを作り、スマホからアクセスしてみる
$ cd ~/environment
$ expo init sample(アプリ名)
blankを選択
エラーが起きずに終わったなら、
$ cd sample
$ npm start と見せかけて
$ expo start が良い(npmを使うのは基本なしにするって約束だ)
さて、出てきたQRコードを
AndroidならExpo AppのQRスキャンから読みとって
iOSなら普通のカメラAppから読み取って
…
あれ、エラーだ
9. 8は失敗するので、ポートを開放し、外部アクセス可能にする
それもそのはず。開発環境を外部に公開してないのだから、Cloud9で起動しているEC2と同じネットワーク内に居ないと怒られてしまう。エラーは単に接続エラーだけど。
Cloud9はデフォルトでは、8080番ポートをweb用に公開しているのみなので、Expoでよく使う19000~19006くらいまでのポートを外部公開しなければ、スマホからアクセスできません。
ということで、EC2へアクセスしてください。
その後、セキュリティグループを選択。
「aws-cloud9-あなたのCloud9のEnvironment名-~~」を選択(画像だと一番上)
インバウンドルールの設定で以下のように追加します。
19000-19006ポートを、任意のところからアクセス出来るようにしています。
次に、EC2のインスタンスを確認し、外部IPを確認します。
これが仮に 10.10.10.10だとすると、
exp://10.10.10.10
という文字列を作成してください。
- Android
- コピーして、Expoアプリから、クリップボードから起動をしてください。
- iOS
- LINEとかslackに貼り付けて、タップすることでアクセス出来るようになります。
大勝利。
後は各々お好きに開発してください。
10. expo webでwebから見てみる
$ expo web
でwebを使って確認出来るようになります。
certificateのエラーが起こりますが、コンパイルと起動は無事に出来るはずです。
sudoつけてやってくれと言われますが、無視します。(後述)
起動したらポート番号を教えてくれるはずなので、(私の環境では19006を指定していました)
先程取得した、インスタンスの外部IPを使って、
10.10.10.10:19006
とブラウザのURLに打ち込んでみますが、やはりエラーが。
この問題はSSL系の問題です。Let's Encrypt等を使えばなんとかなるのかもしれません(未確認)
Let's Encryptを使ってEC2にSSL証明書の発行から自動更新まで行う
それはそうと、自分で作ってるものなので、危険性を理解してレッツトライ。
https://10.10.10.10:19006
と、httpsを明示的に記載してアクセスしてください。
chromeでは警告が表示されますが、詳細→〇〇にアクセスする をクリック
大勝利。
後は各々お好きに開発してください。
【両OS対応】 React Nativeで爆速プロトタイプアプリを作ろう 1/3 【ウェルカム画面編】
初心者はこれおすすめです。
他に知ったことメモ
- EC2でsudo系を使おうとするときはだいたい何かがおかしい。
- Cloud9で容量足りなくなることはなかなかないが、足りなくなったらEC2のボリュームからボリュームの変更で増やして、インスタンスの再起動をかけろ。
- npm installによく付きがちな--saveは現在は何も意味がない。昔の名残。(今は内部で、--saveがついてたときにしてた処理もしている)
お役に立ちましたか?
いいねとストックで教えて下さい。もしくは彼女をください。
Author And Source
この問題について(React Native&ExpoをCloud9で誰も失敗しない開発環境構築 2020年4月), 我々は、より多くの情報をここで見つけました https://qiita.com/1ulce/items/2b681be5a66d8b9ee658著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .