初心者向け!WindowsでReactNative入門~アプリ開発編~ 3日目

f:id:enia:20211005223434p:plain えにあです。

WindowsでReactNative入門~アプリ開発編~の3日目です。 前回はコードを修正するための前準備として、アプリのエントリポイントの変更を行いました。 今回は実際にアプリを修正していきます。

今回の目標

ニュースの一覧画面を作成する処理を分割して考えると、以下のようになります。

  1. News APIからニュースを取得する
  2. 取得したニュースの件数分ループを回す
  3. ニュースを1件ずつ表示する

今回は1の部分を実装します。

News APIのアカウント作成

まずはNews APIの公式サイトでアカウントを作成します。 newsapi.org

諸々入力して、利用規約に同意してSubmitを押下します。 f:id:enia:20211010172337p:plain

API Keyが表示されます。この値を後程使います。
マイページからいつでも確認できるので心配ありません。
f:id:enia:20211010172553p:plain

axiosのインストール

外部のAPIを呼び出す場合、基本的にはhttpsプロトコルを使ってコールします。 今回はHTTPクライアントとしてオープンソースのaxiosを使っていきます。

github.com

yarn add axiosを実行します。

PS D:\Learning\news-app> yarn add axios
yarn add v1.22.11
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@1.2.13: The platform "win32" is incompatible with this module.
info "fsevents@1.2.13" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 2 new dependencies.
info Direct dependencies
└─ axios@0.22.0
info All dependencies
├─ axios@0.22.0
└─ follow-redirects@1.14.4
Done in 8.87s.

これでaxiosのインストールは完了です。

ソースコードの修正

App.tsxに以下の行を追加します。

import axios from "axios";
const URL =  "https://newsapi.org/v2/top-headlines?country=jp&category=business&apiKey=168axxxxxxxxxxxxxxxxxxxxxxxxd3f4";
axios.get(URL).then((res) => console.log(res.data));

1行目はaxiosのimportです。インストールしたライブラリを利用する場合はこのようにimportを行う必要があります。 2行目はNewsAPIのURLです。最後のapiKeyの部分はアカウント作成時に割り振られたキーになります。 3行目はAPIのコールです。axios.get(URL)で、NewsAPIをコールしています。そして、返ってきた結果がresに格納されますので、そのresの中身を表示しています。

修正を保存して実行してみましょう。 expoを実行しているターミナルに、以下のようなログが表示されるはずです。

Object {
  "articles": Array [
    Object {
      "author": null,
      "content": null,
      "description": "埼玉県のJR蕨交流変電所で火災が発生しました。この影響とみられる停電で、山手線、京浜東北線、埼京線、常磐線の快速などJR東日本管内の多くの路線で運転を見合わせています。 消防によりますと、10日
午後0時50分すぎ、近所の人などから「変電所で爆発音が聞こえ、火災が発生した」と通報が入りました。「雷のような音がして、...",
      "publishedAt": "2021-10-10T05:26:02Z",
      "source": Object {
        "id": null,
        "name": "YouTube",
      },
      "title": "埼玉県のJR変電所で火災 複数路線で運転見合わせ(2021年10月10日) - ANNnewsCH",
      "url": "https://www.youtube.com/watch?v=6pDVwy4hTAM",
      "urlToImage": "https://i.ytimg.com/vi/6pDVwy4hTAM/hqdefault.jpg",
    },
・・・

NOTE:
ログが表示されない場合はexpoを実行しているターミナルで r を押すとリロードされて正しく表示されることがあります。変更が反映されないなと思ったら、expoやエミュレータを落とし上げしたり、rを押してみたり、色々試してみましょう。

結果を見ると、title、author、urlToImageあたりが画面表示に使えそうだな、とうことが分かります。

APIキーをファイルに外だしする

さて、先ほどのソースではURLの中にAPIキーを直書きしましたが、このような定数は設定ファイルに外だしするのが一般的です。

Expoで定数を利用するにはExpoConstantsを利用します。 docs.expo.dev

ドキュメントにあるようにexpo install expo-constantsでインストールします。

PS D:\Learning\news-app2> expo install expo-constants
Installing 1 SDK 42.0.0 compatible native module using Yarn.
> yarn add expo-constants@~11.0.1
yarn add v1.22.11
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@1.2.13: The platform "win32" is incompatible with this module.
info "fsevents@1.2.13" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ expo-constants@11.0.1
info All dependencies
└─ expo-constants@11.0.1
Done in 23.13s.

定数はapp.jsonに記載します。app.jsonの最後に以下を追加します。

    "extra": {
      "newsApiKey": "168axxxxxxxxxxxxxxxxxxxxxxxxd3f4"
    }

最後にソースコードから定数をapp.jsonに記載した定数を読み込みます。App.tsxを以下のように修正します。

import Constants from "expo-constants";
import axios from "axios";
const URL = `https://newsapi.org/v2/top-headlines?country=jp&category=business&apiKey=${Constants.manifest?.extra?.newsApiKey}`;
axios.get(URL).then((res) => console.log(res.data));

1行目でインストールしたライブラリをimportしています。 3行目で、Constants.manifest?.extra?.newsApiKeyでapp.jsonに記載したAPIキーを設定しています。extra以降がapp.jsonに追記した内容が設定されます。

さて、これで再度実行してみます。

まとめ

  • NewsAPIを使って、Newsデータの一覧を取得する方法を学びました
  • 定数をapp.jsonに外だしし、アプリから読み込む方法を学びました

今回はここまで!

初心者向け!WindowsでReactNative入門~アプリ開発編~ 2日目

f:id:enia:20211005223434p:plain えにあです。

WindowsでReactNative入門~アプリ開発編~の2日目です。

前回は空のアプリケーションを作成し、エミュレータ上で以下の画面が表示されるようにしました。 f:id:enia:20211005221901p:plain:w200

今回はプロジェクト構成の理解と、ディレクト構成の変更を行っていきます。

目次

環境

Windows10 HomeEdition
expo 4.11.0
node.js 4.17.6
VSCode
Typescript

プロジェクト構成の理解

expo initでプロジェクトを作成すると、自動的に以下のファイルが生成されます。 このうち、開発者が意識する必要のあるファイル/ディレクトリに番号を振りました。 これらのファイルについて、一つずつ説明していきます。

.
├── .expo
│   ├── README.md
│   ├── packager-info.json
│   └── settings.json
├── .expo-shared
│   └── assets.json
├── .gitignore
├── App.tsx // 1
├── app.json // 2
├── assets  // 3
│   ├── adaptive-icon.png
│   ├── favicon.png
│   ├── icon.png
│   └── splash.png
├── node_modules // 4
│   ├── ....
│   ├── ....
│   └── ....
├── babel.config.js // 5
├── package.json // 6
├── tsconfig.json // 7
└── yarn.lock

1. App.tsx

アプリケーションのエントリーポイントとなるファイルです。前回空のアプリを起動した際、

Open up App.tsx to start working on your app!

という文字列が画面に表示されていました。

App.tsxファイルをVSCodeで開いてみます。以下のように画面に表示されていたものと同じ文字列が記載されていまね。

      <Text>Open up App.tsx to start working on your app!</Text>

試しに、この文字列を以下のように変更してみます。

      <Text>Hello World!</Text>

以下のように、自動的に画面の文字列が更新されたと思います。App.tsxの内容がアプリケーションの内容を決めているということがわかります。
f:id:enia:20211010105259p:plain:w200

NOTE:
expoを使うメリットの一つとして、このようにソースの修正が自動で反映されるホットリロード機能を備えていることが挙げられます。これにより、開発効率が上がります。うまく更新されない場合はexpoやエミュレータを再起動すると反映されるはずです。

2. app.json

app.jsonの中身は以下のようになっています。スマホにインストールした際に表示されるアイコンやスプラッシュ画面、カメラの仕様許可等のユーザに求めるパーミッションなどの設定を行うファイルです。 この時点ですべてを覚える必要はありません。必要に応じてドキュメントを調べながら設定すればよいでしょう。  

{
  "expo": {
    "name": "news-app",
    "slug": "news-app",
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ],
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "adaptiveIcon": {
        "foregroundImage": "./assets/adaptive-icon.png",
        "backgroundColor": "#FFFFFF"
      }
    },
    "web": {
      "favicon": "./assets/favicon.png"
    }
  }
}

NOTE: スプラッシュ画面
ソフトウェアを起動した際に表示されることのある画面のことです。 スプラッシュ画面は、プログラムの立ち上げ中に表示され、立ち上げが完了した時点でメイン画面に切り替わります。

3. assetsディレクト

アプリケーションのアイコンや、スプラッシュ画面用の画像を格納します。ちなみにデフォルトのアイコンは以下のようになっています。さすがにこれでは寂しいので、アイコンを作成する必要があります。
f:id:enia:20211010110509p:plain:w100

4. node_modules

ReactNativeの開発では、すべての機能を自分で作るのではなく、世の中にある便利なライブラリを再利用して開発を進めていきます。node_modulesディレクトリには、プロジェクトで利用しているライブラリ群が格納されます。expoが自動で標準的なライブラリをインストールしているため、既に大量のディレクトリが存在するはずです。プロジェクトに新たなライブラリを追加した場合にはディレクトリが増えていきます。

5. babel.config.js

babelというトランスパイラ用の設定ファイルです。トランスパイラは、あるプログラミング言語で書かれたプログラムのソースコードを入力として受け取り、別のプログラミング言語の同等のコードを目的コードとして生成する、ある種のコンパイラのことです。
ReactNativeの記法(TSX)をJavascriptに変換するために使用します。この後の手順で実際にこのファイルを変更します。

6. package.json

package.jsonの中身は以下のようになっています。 dependencies/devDependenciesにプロジェクトで使っているライブラリ群のバージョン情報が記載されています。devDependenciesは開発時にしか使わないライブラリが、dependendiesには本番・開発の両方で使ライブラリが記載されています。 例えば、react-nativeはアプリケーションを実行するために必須なためdependenciesに記載されていますが、babelはトランスパイルのためにしか使わないため、devDependendiesの方に記載されています。

scriptsはコマンドのエイリアス(別名)です。今までexpo startと実行していたものを"start"コマンドに割り当てています。ここに記載したコマンドはyarn run コマンド名で実行できます。 expo startならyarn run startで実行できるということです。この例だとexpo startの方が短いので効果が感じられませんが、オプションのパラメータが増えた場合や複数のコマンドを連続で実行したい場合など、別名を付けておくと簡単に実行できるようになります。

{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "eject": "expo eject"
  },
  "dependencies": {
    "expo": "~42.0.1",
    "expo-status-bar": "~1.0.4",
    "react": "16.13.1",
    "react-dom": "16.13.1",
    "react-native": "https://github.com/expo/react-native/archive/sdk-42.0.0.tar.gz",
    "react-native-web": "~0.13.12"
  },
  "devDependencies": {
    "@babel/core": "^7.9.0",
    "@types/react": "~16.9.35",
    "@types/react-native": "~0.63.2",
    "typescript": "~4.0.0"
  },
  "private": true
}

7. tsconfig.json

typescriptの型チェックのための設定ファイルです。

{
  "extends": "expo/tsconfig.base",
  "compilerOptions": {
    "strict": true
  }
}

以上、空のプロジェクトを作成した際に自動で作られたファイル/ディレクトリを見てきました。

ソースコードディレクトリを変更する

デフォルトで作られた構成のままだと、App.tsxがプロジェクトルートに置かれています。 今後追加するソースコードもプロジェクトルートに置かれるため、ソースコードの量が少ないうちは良いのですが、ファイル数が多くなってくると見通しが悪くなります。 もちろん、ディレクトリを分けて整理することは可能ですが、一般的にディレクトリは名前順で表示されますので、ソースコードと、ソースコード以外のディレクトリが混在して整列されることになります。
そこで、ソースコードはsrcディレクトリの下にまとめるように設定を変更していきます。

package.jsonの変更

mainフィールドを以下のように修正します。これにより、読み込みの起点がsrcディレクトリの下のApp.tsxに変更されます。

  "main": "src/App.tsx",

ソースコードの移動と修正

App.tsxをsrcディレクトリの下に移動します。

├── src
│   └── App.tsx

そして、App.tsxの中身を以下のように修正します。修正箇所は★の3行です。

import { registerRootComponent } from "expo"; // ★追加
import { StatusBar } from "expo-status-bar";
import React from "react";
import { StyleSheet, Text, View } from "react-native";

function App() { // ★修正
  return (
    <View style={styles.container}>
      <Text>Hello World!</Text>
      <StatusBar style="auto" />
    </View>
  );
}

export default registerRootComponent(App); // ★追加

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: "#fff",
    alignItems: "center",
    justifyContent: "center",
  },
});

さて、この状態で再度アプリケーションを起動してみます。expoとemulatorを止めて起動しなおしてみましょう。問題なく表示されますね。

まとめ

  • 空のプロジェクトの構成を確認しました。
  • 空のプロジェクトではApp.tsxがエントリポイントになっていました
  • エントリポイントの位置を変更する方法を学びました

今回はここまで!

初心者向け!WindowsでReactNative入門~アプリ開発編~ 1日目

f:id:enia:20211005223434p:plain えにあです。

WindowsでReactNative入門~アプリ開発編~の1日目です。

この記事は和田さんのUdemyの講座を参考にしています。
www.udemy.com

講座は非常にわかりやすい内容で、特にReact経験者であればすぐに理解できると思います。 しかしながら、現在のバージョンとの環境差異であったり、MacWindowsの違いであったり、コーディングスタイルの好みの違いがあったので、自分なりにアレンジにした開発の過程を記録していきます。

目次

出来上がりイメージ

こんな感じのアプリを作ります。 f:id:enia:20211005212734p:plain

環境

Windows10 HomeEdition
expo 4.11.0
node.js 4.17.6
VSCode
Typescript

Androidアプリだけが対象です。iosは対象外です。

プロジェクト作成

では早速始めていきましょう。
作業ディレクトリはどこでも構いません。私はD:Learningの下で作業をしています。

Windows PowerShellを起動して、expo init news-appと入力します。 選択肢が表示されるので、blank (Typescript)を選択します。

PS D:\Learning> expo init news-app
? Choose a template: » - Use arrow-keys. Return to submit.
    ----- Managed workflow -----
    blank               a minimal app as clean as an empty canvas
>   blank (TypeScript)  same as blank but with TypeScript configuration
    tabs (TypeScript)   several example screens and tabs using react-navigation and TypeScript
    ----- Bare workflow -----
    minimal             bare and minimal, just the essentials to get you started

自動的に必要なライブラリのインストールなどが始まります。 1分ほどで完了し、以下の内容が表示されます。

√ Choose a template: » blank (TypeScript)  same as blank but with TypeScript configuration
  Downloading and extracting project files.
🧶 Using Yarn to install packages.  Pass --npm to use npm instead.
  Installing JavaScript dependencies.

✅ Your project is ready!

To run your project, navigate to the directory and run one of the following yarn commands.

- cd news-app2
- yarn start # you can open iOS, Android, or web from here, or run them directly with the commands below.
- yarn android
- yarn ios # requires an iOS device or macOS for access to an iOS simulator
- yarn web

これで、空のプロジェクトが作成されました。

ここでは選択肢の違いを詳しくは説明しませんが、javascriptを使う場合はblank、Typescriptを使う場合はblank(Typescript)を選択します。
規模の小さいプログラムであればjavascriptでもよいですが、中規模以降になるとTypescriptで型付けを行った方がメンテナンスしやすいと私は考えておりますので、Typescriptを採用します。

エミュレータで起動してみる

さて、作成した空のプロジェクトは中身のないアプリですが、それでも立派なアプリです。つまり起動することができます。早速Androidエミュレータ上でこのアプリを起動してみましょう。

まずAndroidエミュレータを起動しましょう。 環境構築編でエミュレータの設定は完了していますね。 前回はAndroid Studioからエミュレータを起動しましたが、今回はコマンドで起動してみましょう。

まず、エミュレータの名前を調べるためにemulator -list-avdsを実行します。このコマンドは、今までに作成したエミュレータの一覧を表示するコマンドです。

PS D:\Learning> emulator -list-avds                            
Pixel_5_API_30

ここで、環境構築編で作成したエミュレータが表示されるはずです。私の場合はPixel5で作成したので上記のように出力されました。

エミュレータの名前がわかったのでこのエミュレータemulator -avd エミュレータ名で起動します。

PS D:\Learning> emulator -avd Pixel_5_API_30
emulator: Android emulator version 30.8.4.0 (build_id 7600983) (CL:N/A)
handleCpuAcceleration: feature check for hvf
added library vulkan-1.dll
Failed to open /qemu.conf, err: 2
Windows Hypervisor Platform accelerator is operational
emulator: INFO: GrpcServices.cpp:315: Started GRPC server at 127.0.0.1:8554, security: Local
emulator: INFO: EmulatorAdvertisement.cpp:93: Advertising in: C:\Users\heart\AppData\Local\Temp\avd\running\pid_8144.ini
emulator: ERROR: AdbHostServer.cpp:102: Unable to connect to adb daemon on port: 5037
Your emulator is out of date, please update by launching Android Studio:
 - Start Android Studio
 - Select menu "Tools > Android > SDK Manager"
 - Click "SDK Tools" tab
 - Check "Android Emulator" checkbox
 - Click "OK"

エミュレータが起動すればOKです。
f:id:enia:20211005220035p:plain:w200

次に、作成したプロジェクトディレクトリに移動しexpo startを実行します。

PS D:\Learning> cd news-app
PS D:\Learning\news-app> expo start 

すると、ブラウザが起動し、以下の画面が表示されるので、Run on Android device/emulatorをクリックします。
f:id:enia:20211005215929p:plain

このような画面が表示されれば成功です!
f:id:enia:20211005221901p:plain:w200

おわりに

今回は空のプロジェクトを作成し、エミュレータで空のアプリを起動させました。
次回は独自のアプリを作り始めていきます。
今回はここまで!

Something went wrongと表示された場合

私の場合、以下のようなエラー画面が表示されてしまいました。
この解決方法でめちゃくちゃはまりました。
色々原因があるのですが、私の場合ググっても出てこない原因でした。
f:id:enia:20211005220342p:plain:w200

Network response timed outと表示されていますが、どうやらエミュレータ側から、expoの待ち受けポートである19000に接続できていないようです。

対策① ネットワークプロファイルをプライベートにする

ネットワークプロファイルは以下のようにプライベートを選択してください。
f:id:enia:20211005222129p:plain

対策② ポート重複を解消する

対策①で解決しない場合、expoの待ち受けポートである19000番を別のプロセスが使用している可能性があります。

netstat -aon | find '"19000"'を実行し、19000番ポートを使用ているプロセスを調べます。
1228と5808の二つプロセスが19000でLISTENしていることがわかります。

PS D:\Learning> netstat  -aon  | find '"19000"'
  TCP         0.0.0.0:19000          0.0.0.0:0              LISTENING       5808
  TCP         0.0.0.0:19000          0.0.0.0:0              LISTENING       1228
  TCP         [::]:19000             [::]:0                 LISTENING       1228

PIDからプロセスを調べます。node.exeがexpo startで起動したプロセスです。
windowsが起動しているsvchostとポートが重複しているようです。

PS D:\Learning\news-app> tasklist | findstr "1228 5808"   
svchost.exe                   5808 Services                   0      9,608 K
node.exe                      1228 Console                    1    107,260 K

その場合は、expo start --port 空きポート番号で、ポート重複を回避します。

expo start --port 19010

対策③ tunnelを使う

LANをtunnelに変更すると、とりあえず動くかもしれません。
f:id:enia:20211005223141p:plain

初心者向け!WindowsでReactNative入門~環境構築編~ ③Expoのインストール

f:id:enia:20210920164331p:plain

えにあです。
WindowsでReactNative入門~環境構築編~の3日目です。
本日はExpoはReactNativeでの開発をより便利にしてくれるツールであるExpoをインストールしていきます。

目次

Expo-cliのインストール

PowerShellを管理者権限で起動し、yarn global add expo-cliを実行します。

PS C:\Windows\system32> yarn global add expo-cli
yarn global v1.22.11
[1/4] Resolving packages...
~中略~
[4/4] Building fresh packages...
success Installed "expo-cli@4.11.0" with binaries:
      - expo
      - expo-cli
Done in 158.50s.

環境変数の追加

コマンドラインでexpoコマンドを実行できるように、環境変数を追加します。
まずはexpoコマンドの格納場所を確認します。

PS C:\Windows\system32> yarn global bin
C:\Users\xxxxx\AppData\Local\Yarn\bin  ★xxxxxの部分はユーザごとに異なります。

ここで確認したパスをユーザ環境変数pathに追加します。

Powershellを管理者権限で開きなおします。 expoコマンドが実行できることを確認しましょう。

PS C:\Windows\system32> expo --version
4.11.0

expoのアカウントを作る

expo.dev

の左上から作れます。

expo-cliへのログイン

expo loginコマンドを使ってcliへログインします。

PS C:\Windows\system32> expo login
√ Username/Email Address: ... xxxx.xxxx@xxxx.xxxx
√ Password: ... **********

Success. You are now logged in as enia_c.
PS C:\Windows\system32>

今回はReactNativeの開発をより便利にするツールであるExpoをインストールしました。 今回はここまで!

初心者向け!WindowsでReactNative入門~環境構築編~ ②Android Studioのインストール

f:id:enia:20210920164331p:plain

えにあです。
WindowsでReactNative入門~環境構築編~の2日目です。
Androidアプリ開発用にAndroid Studioをインストールしていきます。

目次

インストーラーのダウンロード

下記の公式ページにアクセスします。
developer.android.com

垢枠のエリアをクリックします。
f:id:enia:20210913102350p:plain

利用規約が表示されるので、最下部に移動して、利用規約に同意します。 赤枠のDownloadボタンを押下するとダウンロードが始まります。(size:912MB)
f:id:enia:20210913102505p:plain

Android Studioのインストール

ダウンロードしたインストーラを実行します。 セットアップウィザードが起動したらNextを押します。
f:id:enia:20210913103115p:plain

インストールするコンポーネントを選択します。デフォルトのままNextを押します。
f:id:enia:20210913103146p:plain

インストールディレクトリを設定してNextを押します。デフォルトのディレクトリでよいでしょう。
f:id:enia:20210913103231p:plain

スタートメニューへの登録設定を行います。デフォルトのままInstallボタンを押します。
f:id:enia:20210913103303p:plain

インストールが始まります。
f:id:enia:20210913103411p:plain

完了したらNextを押下します。
f:id:enia:20210913103440p:plain

Finishを押下します。
f:id:enia:20210913103506p:plain

自動的に次の画面が起動します。

Do not import settingsを選択してOKをクリックします。
f:id:enia:20210913103736p:plain

GoogleAndroid Stuidoを改善するために、どのように使っているか情報をGoogleに送信しても良いか?と聞かれているようです。「Don't send」を選択しても問題なく使えるので、こちらを選択しました。
f:id:enia:20210913103932p:plain

「Next」を選択します。
f:id:enia:20210913104042p:plain

「Standard」にチェックを入れてNextを押します。
f:id:enia:20210913104217p:plain

UIのテーマです。好きな方を選択してNextを押します。 私は夜電気を暗めにして作業するので、目が痛くならないようにダークモードを選びました。
f:id:enia:20210913104309p:plain

「Finish」を押します。
f:id:enia:20210913104357p:plain

初期化が完了するまで3~4分待ちましょう。
f:id:enia:20210913104425p:plain

おっと、私の環境ではエラーが発生してしまいました。 とりあえずFinishしか押せないので押します。
f:id:enia:20210913104719p:plain

とりあえず起動はできるはずです。 ここまででインストールは完了です。

Android Studioの設定

SDKの設定をしていきます。 メニューからCustomizeを選択し、表示された画面でAllSettingsを選択します。
f:id:enia:20210913134232p:plain

Android SDK Build-Tools(赤枠)がinstalledになっていることを確認します。
f:id:enia:20210913134923p:plain

Android SDK Locationをコピーしておきましょう。
最後に環境変数の設定をする際に利用します。
f:id:enia:20210913135041p:plain

エミュレータの設定

メイン画面に戻り、[Projects] -> [More Actions] -> [AMD Manager] を選択します。
f:id:enia:20210913135211p:plain

[create virtual device]をクリックします。
f:id:enia:20210913135257p:plain

エミュレートするハードウェアのタイプを選択します。プロダクトを開発するときには様々な機器でテストする必要がありますが、今回は入門編なので[Pixel 5]を使うことにします。
f:id:enia:20210913135441p:plain

エミュレータにロードするOSバージョンを選択します。ここでは最新のAndroid11を選択します。 f:id:enia:20210913135607p:plain

利用規約に同意して[Next]を選択します。
f:id:enia:20210913135708p:plain

OSのダウンロードが始まります。
f:id:enia:20210913140239p:plain

完了すると[Next]が押せるようになったはずです。
f:id:enia:20210913140328p:plain

[Finish]を押下します。
f:id:enia:20210913140439p:plain

バイス一覧にPixel5が表示されているはずです。[▲]を押してみましょう。
f:id:enia:20210913140532p:plain

エミュレータが起動するはずです。真っ暗な場合はしばらく待ってみましょう。 5分程度待つと、真っ暗 => Googleのロゴ => 以下の画面 という順番で表示されると思います。
f:id:enia:20210920222931p:plain:w200

環境変数の設定

途中でコピーしたAndroid SDK Locationのパスをユーザ環境変数ANDROID_SDKに設定します。
f:id:enia:20210920203017p:plain

ユーザ環境変Pathに以下二つを登録します。

%ANDROID_SDK%\emulator
%ANDROID_SDK%\platform-tools

以上でAndroid Studioのインストールは完了です! 今回はここまで!

初心者向け!WindowsでReactNative入門~環境構築編~ ①Node.jsインストール

f:id:enia:20210920164331p:plain

えにあです。 今回からWindowsでReactNative入門~環境構築編~をスタートしていきます。
ReactでもReactNativeでも、まずはNode.jsが必要ですのでインストールしていきます。

目次

前回まで

経緯についてはこちら。
enia.hatenablog.com

Node.jsのインストーラをダウンロードする

まずは以下の公式ページにアクセスしてNode.jsのインストーラをダウンロードしていきます。 nodejs.org

赤い枠の位置をクリックするとダウンロードが始まります。(サイズ29.1MB) f:id:enia:20210920165942p:plain

Node.jsをインストールする

ダウンロードが完了したらインストーラを実行します。
セットアップウィザードが起動したら、Nextを押します。
f:id:enia:20210920170036p:plain

利用規約に同意して、Nextを押します。
f:id:enia:20210920170137p:plain

インストールディレクトリを指定してNextを押します。デフォルトのディレクトリでよいでしょう。
f:id:enia:20210920170206p:plain

カスタムセットアップの設定です。デフォルトのままNextを押します。
f:id:enia:20210920170653p:plain

PythonやVisualStudio Build Toolsなどを一緒にインストールするか聞かれています。
チェックをいれてNextを押します。
任意項目ですので不要であればチェックしなくても構いません。
f:id:enia:20210920170845p:plain

Installを押します。
f:id:enia:20210920171049p:plain

インストールが始まります。30秒くらいで完了します。
f:id:enia:20210920171325p:plain

インストールが完了しました。Finishを押します。
f:id:enia:20210920171437p:plain

関連パッケージをインストールする(任意)

途中でPythonVisual Studio Build Toolsをインストールする設定をいれた場合、以下のコマンドプロンプトが起動します。続行するために何かキーを押します。
f:id:enia:20210920171537p:plain

画面が切り替わります。
f:id:enia:20210920171719p:plain

PowerShellが起動してインストールが始まります。私の環境では15分ほどかかりました。インストールが完了したEnterキーを入力します。
f:id:enia:20210920173807p:plain

これでインストールは完了です。

インストールの正常性確認

nodeコマンドとnpmコマンドが使えるようになっているはずです。
Power Shellを起動してnode --version npm --versionを実行します。バージョン名が表示されれば正常にインストールされています。

PS C:\Windows\system32> node --version
v14.17.6
PS C:\Windows\system32> npm --version
6.14.15

追加インストールを行った場合はpythonもインストールされています。python --versionを実行して、pthonがインストールされていることを確認します。

PS C:\Windows\system32> python --version
Python 3.9.7
PS C:\Windows\system32>

Yarnのインストール

Yarnとは、主にJavaScriptで開発されたプログラム部品(モジュール)を管理するためのパッケージ管理システムの一つで、npmと互換性があります。

npmに比べ実行速度が高速です。パッケージの導入時に依存先のパッケージのバージョン番号を記録(yarn.lockファイル)するため、環境の再構築や他のコンピュータでの環境構築において正確に同じバージョンのパッケージを導入することができます。npmで許可されていたパッケージ導入時のコード実行が禁止され、パッケージの整合性をチェックサムで検証するなどセキュリティにも配慮しています。

2016年に米SNS大手フェイスブックFacebook)社が自社環境でのパッケージ管理のために開発し、BSDライセンスに基づいてオープンソースソフトウェアとして公開しました。

yarnのインストール手順は下記の公式サイトに記載されています。 classic.yarnpkg.com

PowerShellを管理者権限で起動してnpm install --global yarnコマンドでインストールします。

PS C:\Windows\system32> npm install --global yarn

> yarn@1.22.11 preinstall C:\Users\xxxxx\AppData\Roaming\npm\node_modules\yarn
> :; (node ./preinstall.js > /dev/null 2>&1 || true)

C:\Users\xxxxx\AppData\Roaming\npm\yarn -> C:\Users\xxxxx\AppData\Roaming\npm\node_modules\yarn\bin\yarn.js
C:\Users\xxxxx\AppData\Roaming\npm\yarnpkg -> C:\Users\xxxxx\AppData\Roaming\npm\node_modules\yarn\bin\yarn.js
+ yarn@1.22.11
added 1 package in 3.182s

yarnコマンドが利用可能になっていることをyarn --versionで確認します。

PS C:\Windows\system32> yarn --version
1.22.11

以上でyarnのインストールは完了です。

今回はここまで! 次回はAndroid Studioをインストールしていきます。

初心者向け!WindowsでReactNative入門~イントロダクション~

f:id:enia:20210920191627p:plain

えにあです。 諸事情によりReactNativeの勉強をすることになりました。 これから学習の経緯を記録していきたいと思います。

私はReactでの開発経験はありますが、ReactNativeは昔少し触ったことがある程度です。開発環境を一から作るところから始めたいと思います。

環境

Windows10 Home Edition 64ビット

本当はWSL2上で開発できるようにしたかったのですが、色々と難しかったので挫折しました。 挫折の経緯はいつかまた書きます。

React Nativeとは

モバイルアプリの開発方法は大きく2つの方法があります。 ①iosandroidそれぞれに用意された開発言語を使って開発する方法 ②両方のOSに対応したアプリケーションを一つのソースコードで開発するためのクロスプラットフォーム対応フレームワークを利用する方法

React Native は Facebook 社製のオープンソースクロスプラットフォーム対応のモバイルアプリ開発フレームワークです。 クロスプラットフォーム対応のフレームワークには他にもGoogle製のFlutterがあります。

どの開発方法が適しているかは目的や重視するポイントによって変わります。 クロスプラットフォームを前提としてReactNativeとFlutterを比較すると、勢いとしてはFlutterのほうが上のように思います。一方で、情報量の多さではReactNativeのほうが上であり、入門としてはReactNativeのほうが入りやすいのではないでしょうか。私のようにReact経験がある方の場合は、特にとっつきやすいのではないかと思います。

少なくとも、現時点でReactNativeがオワコンと化したわけではないですし、ReactNativenに取り組むことは無駄にはならないはずです。 一緒に頑張って勉強していきましょう。

次回以降、まずは環境構築から進めていきます。 今回はここまで!