React Native Expoの編集環境をVisual Studio Codeで準備する

この記事は、「[【連載】初めてのReact Native + Expo開発環境構築入門](https://qiita.com/hitotch/items/5142fff638c7805d84d5)」の子記事です。環境などの条件は、親記事をご覧ください。

---

　Expoでは[Snack](https://snack.expo.io/)というブラウザ版IDEを使って開発することもできますが、ここではローカルPCでVisual Studio Codeを使ってコーディングする方法を取ります。前回は実行環境までが整ったので、今回は前回作ったHello Worldのプロジェクトの編集に必要な環境を作ります。

# 基本概念

　編集環境といっても、React同様にプロジェクト構成ファイルはほとんどテキストファイルだし、実行やパブリッシュはExpoのCLIでコマンドを打ち込むことになるので、Windowsならメモ帳とPowerShellで開発を進めることもできます。
　なぜVisual Studio Codeを使うかというと、以下のようなお手軽便利機能を使いたいからです。

- Debugしやすい
- Lintingしてくれる
- オートインデントなど自動整形してくれる
- オートコンプリートしてくれる
- gitなどと統合して使いやすい

# Chromeのインストール

　デバッグなどでChromeが使われるため、先にChromeをインストールしておきます。
　[Chromeのインストーラ](https://www.google.com/chrome/)

# Visual Studio Codeのインストール

　React Native編集で最もよく使われている（と思われる）エディタ、Visual Studio Codeをインストールします。

　[Visual Studio Codeのサイト](https://code.visualstudio.com/)を開けて、Downloadをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/fa42f1ad-46e3-30c8-bcd3-4c62a0421e0d.png)

　ローカルPCのOSにあったインストールボタンをクリック。この記事ではWindowsを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/2f6f5a9d-cb60-5bd3-dbda-89edfaec3827.png)

　ダウンロードしたインストーラを実行し、ウィザードに沿って進む。終わったら立ち上げてみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/2d501859-90c5-caf3-99cd-38d9ebc3494a.png)

　前回作ったHello Worldプロジェクトを開いてみます。
　[File]-[Open Folder]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/0bfed182-83d9-501d-a768-9e31125f53bc.png)

　hello-worldフォルダを指定し、[Select Folder]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/c9d34bb6-d479-0964-c385-a143a31320e2.png)

　うまく開くと以下のようにファイル構成が出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/53ff926d-6a2e-dcac-f7cf-868d9f741d96.png)

# Visual Studio Code画面からプロジェクトを実行

　Visual Studio CodeはIDEではないので、プロジェクトの実行はPowerShellからになります。ただし、別ウィンドウにPowerShellを開ける必要はなく、Visual Studio Code上にPowerShellを統合して扱うことになります。
　キーボードで ``Ctrl+@`` して、Terminalを起動。念のため、PowerShellが選択されていることを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/a1aa8760-a5c1-8d54-aa47-41886544a436.png)

　プロジェクトを開いた状態からTerminalを起動すると、カレントフォルダが自動的にプロジェクトフォルダになってるはずです（C:\ExpoProjects\hello-world）。
　では実行してみましょう。

```
> expo start
```

　Chromeをインストールしたことで、ブラウザの選択を求められる場合があります。Chromeを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/186b36d8-16e4-6e14-5b3d-084a5a367854.png)

　モバイル実機のカメラでバーコードを読んでExpo Clientを開始、さらにモバイルを振って[Debug remote JS]でリモートデバッグをスタート。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/bf6125da-5e43-c8e5-8399-5e1de3c66ccc.png)

　以下のようにReact Native Debuggerが開くので、指示に従う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/6d0c9321-5235-52f4-497e-e5162753248c.png)

- ``Ctrl + Shit + J`` でデバッグコンソールを開く。
- Sourcesタブの[Pause On Caught Exceptions]をオンにする。このチェックボックスはデフォルトで隠れているので、下のスクリーンショットで赤枠したボタンでチェックボックスを出す。
- 実機側でQRコードを読み込んで実行する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/398718be-3a62-8d20-ac96-2c3e6471cda9.png)

　うまくいくと、Chromeに ``Status: Debugger session #10000 active.`` などと表示されます。また、コンソールにアプリの実行状況が詳しく吐き出されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/f1a3af02-1a49-133b-05cf-309aec2f640c.png)

　うまくいかない場合、一度モバイル実機のExpoを閉じてQRコードを読むところからやり直してみてください。LANじゃなくてTunnelでやってるとうまくいかないことが多いような気が・・・。

# 編集してみる

　これでVisual Studio Codeでの編集実行環境がとりあえず動いたので、モバイルの画面に出ているようにApp.jsをいじってみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/578f0967-459a-d29a-c79b-50b9682258d7.png)

　以下のようにテキストを1行追加して、Hello World!を表示してみましょう。

```App.js
  return (
    <View style={styles.container}>
      <Text>Open up App.js to start working on your app!</Text>
      <Text>Hello World!</Text>
    </View>
  );
```

　App.jsを保存するとすぐにモバイル実機のほうにも結果が反映されるはずです。
　もし編集を間違えてエラーになったら、Chromeのデバッガーにいろいろ出てくるので、よく読んで修正しましょう。

<img width="375" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/308e424f-6859-dfe8-1b99-2d86ec31db1a.png">

# 自動整形ツール Prettier を入れる

VS Codeでコーディングするときに、「よしなに」自動整形してくれるようにするため、Prettierを入れます。
VS CodeのExtensionsタブを開いて、Prettierを検索し、Prettier - Code formatterを[Install]。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/40137021-94ad-4a05-2378-207b4b50486b.png)

## 手動で整形実行

　Prettierを使って手動で整形実行するのは、デフォルトでは ``Shift+Alt+F``。部分的に整形したい場合は、先に対象テキストを選択してから、``Ctrl+K Ctrl+F``。これらはPrettierではなくVS Codeのショートカット設定なので、変更したい場合は設定の ``editor.action.formatDocument`` や ``editor.action.formatSelection`` を変更します。

　初回の整形実行で、以下のようなポップアップが出るかもしれません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/b70eaa06-faf9-85f8-47b9-1aa0ffd5a108.png)

　この場合、Prettierで整形してほしいので[Configure]からPrettierを選択しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/65eb87e0-2397-e1f3-6883-f006a83e816d.png)

## 保存時に自動整形

　テキストを保存するときに整形を自動実行することも可能です。このスイッチは設定の ``editor.formatOnSave`` です。必要ならオンにしましょう。
　この設定をオンにする方法はいくつかありますが、私の場合は以下のようにWorkbenchの設定でオンにしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315589/c7be5205-0369-1544-d413-6a2b2a15a0f5.png)