ReactJSの技術を使ってスマホアプリが開発できるフレームワーク「ReactNative」 今回は、そんなReactNativeの環境構築からプロジェクト実行までを順に解説していきます。 私個人はTypescript信者なので、私が開発で実際に使用している「Typescript+ReactNative」の環境構築記事になります。
Xcode
がインストール済Node.js
がインストール済VScode
がインストール済npm
もしくはyarn
がインストール済※この記事はQiitaに載せた内容のリライト記事です。 あちらの内容が若干古くなった感もあるので、改めて書き直しました。
まずはreact-native
のCLI
をインストールします。
グローバルに入れておくのがオススメです。
yarn global add react-native-cli
react-native init
で新規プロジェクトが作成できます。
ここではsample
という名前でプロジェクトを作ります。
react-native init sample
作成できたらプロジェクト配下に移動しましょう。
cd sample
Typescript
に関するモジュールをインストールします。
yarn add --dev typescript
yarn add --dev react-native-typescript-transformer
yarn add --dev @types/react
yarn add --dev @types/react-native
下記のコマンドを実行することで、tsconfig.json
とrn-cli.config.js
が作成されます。
yarn tsc --init --pretty --jsx react-native
touch rn-cli.config.js
tsconfig.json
はlib
とallowSyntheticDefaultImports
の値を変えて、さらに末尾にexclude
を追加しましょう。
{
"compilerOptions": {
...
"lib": ["es2015"], // "es2015"を記入
"allowSyntheticDefaultImports": true, // コメントアウトを外す
...
},
// 下記を丸ごと追加
"exclude": [
"node_modules"
]
}
rn-cli.config.js
は中身を下記の通りにします。
module.exports = {
getTransformModulePath() {
return require.resolve("react-native-typescript-transformer");
},
getSourceExts(){
return["ts","tsx"];
}
}
tslint
やprettier
を入れるかは好みな部分もありますが、個人的には意識せずに記法が統一されるのでオススメです。
yarn add --dev prettier
yarn add --dev tslint tslint-react
yarn add prettier --dev tslint-config-prettier tslint-plugin-prettier
.prettierrc.js
がない場合は作成します。
自分は内容は下記の通りにしています。
module.exports = {
bracketSpacing: false,
jsxBracketSameLine: false,
singleQuote: true,
trailingComma: 'all',
printWidth: 120,
};
同様にしてtslint.json
も編集します。
ちなみに自分のtslint.json
は下記設定で使っています。主にはrules
の中の値を変更するかと思います。
個人でやる分にはほとんどfalse
でいいと思いますが、ラムダ式やインターフェースの名称、import
のアルファベット順あたりは好みによって変更してください。
{
"extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],
"rules": {
"jsx-no-lambda": false,
"member-access": false,
"interface-name": false,
"prefer-for-of": false,
"ordered-imports": false,
"object-literal-sort-keys": false,
"no-console": false
},
"linterOptions": {
"exclude": [
"config/**/*.js",
"node_modules/**/*.js",
"coverage/lcov-report/*.js"
]
}
}
デフォルトだとルート直下にソースが増えていくことになるので、src
フォルダ下にまとめるようにします。
同じタイミングでApp.js
をApp.tsx
にリネームします。
mkdir src
mv App.js src/App.tsx
App.js
のパスが変わったので、参照しているindex.js
を修正します。
/**
* @format
*/
import {AppRegistry} from 'react-native';
// import App from './App'; // 削除
import App from './src/App'; // 追加
import {name as appName} from './app.json';
AppRegistry.registerComponent(appName, () => App);
デフォルトだとreact-native run-ios
で実行することができますが、簡略してyarn run-ios
で実行できるようにします。
Android
でのアプリ開発も視野に入れる場合はrun-android
も追加しておきましょう。
{
"scripts": {
...
"run-ios": "react-native run-ios",
"run-android": "react-native run-android"
},
}
JPEF
やPNG
,SVG
などの画像ファイルをimport
できるようにします。
touch images.d.ts
中身は下記のようにします。
declare module '*.svg';
declare module '*.png';
declare module '*.jpg';
declare module '*.jpeg';
declare module '*.gif';
declare module '*.bmp';
declare module '*.tiff';
yarn run-ios
コマンドで実行します。
yarn run-ios
シミュレータが立ち上がり、下記の通り表示されたら成功です。
今回はMacOS
でTypescript+ReactNative
の環境構築から作成したプロジェクトの実行までをまとめました。
気づけばバージョンも0.62
となり、ますます便利になっていくReactNative
ですが、初期設定周りがちょっと多めなのが初見殺しっぽいですね。
しかし、ワンソースでiOS
とAndroid
の両方のアプリが開発できるのはやはり魅力的なので、今後もオススメライブラリを紹介していきたいと思います。