やさしいりあくとのはじめかた

この記事は株式会社富士通システムズウェブテクノロジーが企画するいのべこ夏休みアドベントカレンダー 2020の27日目の記事です。本記事の掲載内容は私自身の見解であり、所属する組織を代表するものではありません。

# はじめに
本記事ではFacebook社のJavaScriptのSPAライブラリのReactについて紹介したいと思っています。

プロジェクトでフロントエンド基盤を整備することを目的に2020年4月に0からReactを勉強してきました。

この経験を踏まえ、React興味あるけど勉強の仕方がわからない、SPAを作ってみたいという方にとって、React開発を始めるきっかけになれればいいと思っています。

# SPA（Single Page Application）ってなに？
SPAとは単一のWebページでアプリケーションを構築するアーキテクチャです。

サーバーサイドWebとSPAと比較すると...
![コメント 2020-08-06 174704.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670225/5b91163c-73e7-9f02-855b-169b1428aa74.jpeg)
上の画像を見てわかる通り、SPAは極力サーバーへのリクエストを減らし、単一のWebページのみを使用して、効率よくWebページの表示ができます。

# 今が熱いReact
3大SPAフレームワーク/ライブラリは、

* React.js
* Vue.js
* Angular.js

がありますけど、ランキングはこんな感じ

### ダウンロード数（2020/08/06現在）
![コメント 2020-08-06 180954.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670225/23b791f6-9f18-3cb8-b27c-6506d502ee26.jpeg)
reactの圧倒的ダウンロード数！！！！

### githubスター数（2020/08/06現在）
![コメント 2020-08-06 181013.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670225/abeba44d-950b-8fe3-4b6b-3fe20f092631.jpeg)
vueとreactがいい勝負。

こんな感じでいろんな人がReactをダウンロードして開発している

>
> npm trends react vs vue vs angular
> https://www.npmtrends.com/react-vs-vue-vs-angular
>


# はじめてのアプリ作成
さっそく、Reactアプリケーションを作ってみよう！

### 準備
下記のツールを自分の端末にインストール！

* [Google Chrome](https://www.google.co.jp/chrome/?brand=CHBD&gclid=EAIaIQobChMIs6qNhKaD6wIViraWCh0zjAIJEAAYASAAEgLyKPD_BwE&gclsrc=aw.ds)
* [Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)
* [Node.js](https://nodejs.org/ja/)（※推奨版）

### YARNを導入

```bash:コマンドプロンプト
npm install --global yarn
// もしくは
npm i -g yarn
```

### プロジェクト作成

```bash:JavaScriptで開発する場合
npx create-react-app [プロジェクト名]
```

```bash:TypeScriptで開発する場合
npx create-react-app [プロジェクト名] --typescript
```

### プロジェクト起動

```bash:作成したプロジェクトまで移動
cd [プロジェクト名]
```

```bash:プロジェクトを起動する
yarn start
```

[http://localhost:3000/](http://localhost:3000/) で下の画面が表示される！
![コメント 2020-08-05 150115.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670225/13c2b0f2-7e14-62d5-3635-6771d3a723a5.jpeg)

### Hello World!を表示する
フォルダ構成はこんな感じ
![コメント 2020-08-05 150942.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670225/28855093-05b8-06da-76f1-cd5527368746.jpeg)

`src/App.js`もしくは`src/App.tsx`を開いて、以下の内容を変更して保存！

```diff:src/App.js
import React from 'react';
import logo from './logo.svg';
import './App.css';
function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
-         Edit <code>src/App.js</code> and save to reload.
+         Hello World!
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}
export default App;
```

ロゴ画像の下に「Hello World!」と表示される
![コメント 2020-08-05 152011.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670225/b8421740-0e46-1273-c441-7eeb48af4281.jpeg)
とっても簡単。

# りあくとのはじめかた
Reactの習得する方法は以下の流れ

1. JavaScriptの習得
2. (TypeScriptの習得) ※必要がある人だけ
3. Reactの習得

>
> おすすめ勉強サイト/書籍
> ・[現代の JavaScript チュートリアル](https://ja.javascript.info/)
> ・[りあクト！ TypeScriptで始めるつらくないReact開発 第2版](https://booth.pm/ja/items/1312652)
> ・[React 公式サイト](https://ja.reactjs.org/)
> ・[TypeScript 公式サイト](https://www.typescriptlang.org/)
>

__やってはいけないこと__

* いきなり完成されたコードを読もうとする
* HTML、CSS、JavaScriptの知識がない状態でReactの開発に臨む
* Reactの設計思想を知らない状態で開発を始める

基礎からちょっとずつ進めることをお薦めします。

# みんなの反応
2020年7月17日(金)にウェブテクデーを使用して、チーム内でReact勉強会を開催しました。
私が講師として進めていました。開催後のみんなの反応はこんな感じです。

__H・Hさん__
従来型のウェブ開発ばかりやっていると、モダンなJavaScript(ES6以降)の知識がコードが全く読めないことを痛感した。新しい技術に触れないとだめだなと感じたし、特にフロントエンドは流れが素早いと思った。

__E・Hさん__
C#やJavaScript(ES5以前)はやってみたことがあったが、
今日の勉強会を通して、JavaSciprt(ES6以降)は新しい言語で臨むつもりで勉強しないといけないと感じた。
ただ、JavaScriptの新しい機能は便利だと思ったし、SPAの仕組みについても知れてよかった。
家でももっとやりたいと感じた。

__T・Sさん__
業務チームのある程度の水準でスキルを均一化をどう図るかが今後の課題になってくる。

__Y・Sさん__（React学習経験あり）
私は山田と一緒に1週間ペアプログラミングを行い、Reactを学びました。短い期間ですが、体験してみて感じたことは技術を学ぶ際には、必ず基礎から始めるべきだとということです。いきなり完成されたコードを読み込んでも、読めなくて挫折するだけです。
私はReactの学習を下記の流れで行いました。私はこれである程度実装できるようになりましたよ！
① HTML、JavaScript(TypeScript)の知識を習得する
　りあクト！ TypeScriptで始めるつらくないReact開発 第2版 ← これ本当におすすめ！
② Reactの公式ドキュメントの最初のページを読んで、Reactで何ができるかを知る
③ React公式ドキュメントに記載されているチュートリアルを行い、小さいコンポーネントから開発

![コメント 2020-08-07 184907.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670225/6b9801f2-eb7f-c84b-21b4-9e7a77c12431.jpeg)

# おわりに
4月から勉強を開始して、2か月間がっつりReactを独学で勉強しました。
フロントエンドの開発自体、あまり経験がなく学習にすごく苦労しましたが、
最終的にはウェブテクデーで人に教えられるレベルまで成長できたので良かったです。