1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Reactとはなにか、Reactの開発からデプロイまでの流れ

Last updated at Posted at 2021-06-13

#はじめに
前回の記事[[1]]でデプロイまでできたのですが、いまいち何をしているのか理解できませんでした。
そもそもReactは何をしているのか、どのような流れでデプロイするのかをまとめたいと思います。

#Reactは何をしているのか
Reactとはjavascriptのライブラリという風に書かれていることが多いと思います。
ただ、C言語の#includeライブラリ名.hみたいにインクルードすればいいのかいうと全く違います。
個人的にはダラダラと書いていたものをコンポーネントという単位でまとめて見やすくするためのUIライブラリだと思っています。この表現は正確ではないと多くの人に言われそうですが、ライブラリだと思ってると認識のずれが生じます。たぶんライブラリとかフレームワークの定義が統一されていないからこういうことになるんでしょう。

そもそもReactは単体では動きません。
大きく分けて4つのものに構成されています[[2]]。

  1. javascript
    当然javascriptの知識は知らないとだめです。nodejsとかの区別は一旦置いといていいです。

  2. JSX
    これがReactの中枢を担っている気がします。
    JSXはjavascriptの拡張言語です。
    一番の違いはDOMを値として扱えることです。
    定数などに代入したり、DOMそのものを返り値とすることが出来ます。
    そこさえ押さえておけば仕組みは分かります。

  3. Babel
    JSXはそうすると楽だよねって勝手に作った拡張言語です。
    サーバーにアップして使う際にはjavascriptでないと当然動きません。
    この拡張言語をjavascriptに変換するのがBabelです。
    またjavascriptの標準的な書き方がES5からES6に移行しました。
    この2つは割と大きな違いがあり、かつすべてのブラウザがES6に対応しているわけではありません。
    下位互換性を持たせるためにすべてのjavascriptをES5にするべきです。
    このES5への変換もBabelが担っています。
    イメージとしては
    JSX→javascript→javascript(ES5)
    みたいな流れでしょうか。
    逐次的に変換しているのか、まとめて変換しているのかは分かりませんがこんな理解でいいでしょう。
    要するにJSXのjavascriptへの変換、javascript(ES5)への変換をしてくれるツールです。

  4. webpack
    [[2]]より引用

webpackは、JavaScriptを依存関係を考慮してひとまとめにしてくれるツール

 要するに散らかってるjavascriptをひとまとめにしてくれるというものです。
 まとめたjavascriptをBabelに通します。

この4つによるプログラム生成の仕組みを前提として動いているのがReactです。
Reactを使うということはこれらの仕組みを使うということと同義です。
ライブラリとしてのReactはこれらの仕組みの上に成り立ったものです。
webエンジニアが直接触るのはJSXだけですが、ここら辺は理解しておきましょう。

#デプロイまでの流れ
結局JSXプログラムを書いたらどうすればいいのでしょうか。
HTML/CSS/javascriptだったらサーバーに置いたらOKです。
Cなどのコンパイル言語ならコンパイルして実行すればいいです。
pythonなどのスクリプト言語なら書いてすぐ実行できます。
しかしJSXではjavascriptをまとめて変換しないといけません。
頭ではわかってもコマンド上はどうなるのでしょうか。
そのための環境構築コマンドとしてcreate-react-appコマンドがあります。
このコマンドによってwebpack、babel、reactライブラリなどがプロジェクトディレクトリ配下のnodemodulesディレクトリにダウンロードされます。
これらをNode.jsのアプリケーションとして動かす場合は

yarn start

とすればローカルで立ち上げることが出来ます[[3]]。
しかし、webサーバーにアップロードする場合は変換しなければなりません。
この変換の作業を一般的にはビルドと呼ばれています。
makefileとかでもビルドという言葉使っていた気がします。
ここでのビルドはソースコードを使える状態に変換するようなニュアンスでしょう。
コンパイルと言い換えてもあまり差し支えないように感じます。
もちろんCのコンパイルのようにコードをバイナリに変換してるわけではありません。
しかし、webサーバーで使える形式に変えているのです。
コマンド上では

yarn build

などでビルド出来ますが、実際にはjsonファイルのスクリプトが実行されています。
このファイルをwebサーバー上におけばデプロイ完了というわけです。
僕の場合は

yarn deploy

でビルドとデプロイ同時にやってくれます。

あとこのサイト[[4]]が割と流れを丁寧に説明してくれているので読んでおくことをお勧めします。

#おわりに
React複雑すぎる。
こんなの一発で分かる訳ないでしょうと思っちゃいますね。
JSXの考え自体は好きなんですが、この仕組み自体をもう少し抽象化して欲しいです。

#参考文献
[1]:https://qiita.com/it_tsumugi/items/2acf8c88dbccef413f71
[2]:https://zenn.dev/haniwaman/articles/b66a3a1fa5a6fa6428a5
[3]:https://www.tuyano.com/index3?id=5712536552865792
[4]:https://jp.quora.com/react%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%8Cnode-js%E3%81%A0%E3%81%A8%E8%81%9E%E3%81%84%E3%81%9F%E3%81%AE%E3%81%A7%E3%81%99%E3%81%8C%E3%81%A9%E3%81%86%E3%81%84%E3%81%86%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%81%8B-

[[1]]:GitHub Pages で最小構成のreactのhelloworldをデプロイしてみた
[[2]]:Reactをなんとなく理解できるようになるまでのステップ
[[3]]:Reactの基本的な仕組みを理解しよう (1/4)
[[4]]:reactの基本がnode.jsだと聞いたのですがどういうことですか?書き方が同じということですか?まだ全くの初心者なのでやさしく教えていただけると助かります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?