【React学習】〜Reactとは〜

PHP

 最近プログラミング熱が再燃したので、過去に買ったUdemyの講座を見直しました。
 前回投稿したのが1年前で、そのときにNode.jsやReactについて少しだけ学習したんですが、特にアプリ開発などはせず、学習が止まっていました。
 そこでもう一度講座を見直して、アプリを作ってみることにしました。

 現在稼働しているトランポリン採点集計システムは、PHPをベースに作られています。一部計算やajax通信のためにJavaScriptを使っています。なんとか動くところまではできましたが、「動くだけ」でコードが整理されていないので、アップデートが難しい状態です。今回学習したことを活かして、新しい集計システムを構築していこうと考えています。

 その前に、いくつか簡単なアプリを作ってみたので、制作過程で学んだことを、少しずつまとめていこうと思います。ただし、できるだけ自分の言葉で(自分の理解の範疇で)書いていきますので、間違えていることもあるのはご了承ください。

Reactとは

  • Meta社が開発したJacaScriptのライブラリ
  • 仮想DOMを用いた動的なページの高速表示
  • コンポーネントを組み合わせてページを構築
  • ホームページ、Webアプリ、ネイティブアプリなど、様々な場面で活用できる

 React以外にこれまで使ったことがあるのはJQueryというライブラリだけです。「何か書き方が普通と違うなー」くらいにしか思っていませんでした。でもReactを使ってみると、「なんて便利なんだ!」と思いました。大規模なアプリを作っているわけではないので、ページの高速化を特に意識したことはないんですが、それよりも「コンポーネント」という概念がとても便利です。

 例えばこんな感じ。

const Example = ({ props }) => {
  return (
    <div>Hello World</div>
  );
};
export default Example;

 ( ) => { … }はJacaScriptのアロー関数で、{ }の中の処理を実行します。この関数は戻り値としてHTML要素を返しています。普通はこんな書き方できなくて、要素を作って、プロパティを設定して・・・なんて作業をする必要があるんですが、これはひと目でdiv要素を返しているのかが分かります。

 これが「関数コンポーネント」というもので、これをexportすることで、どのファイルでも使うことができるのです。つまりこれで「部品」を作ったことになるわけです。

 今回作ったアプリのログイン画面です。これは「ヘッダー」「インプットとボタンの集まり」という2つの部品からなります。もっと細分化すれば、「インプットとボタンの集まり」は「タイトル」「インプット」「ボタン」となります。これら一つ一つをコンポーネントとして定義します。

コンポーネントの何がいいの? 

  1. どんな部品かが分かりやすい
  2. 再利用できる(これが大事!!)

 ということでしょうか。特に2番は重要で、同じ働き(あるいは同じスタイル)を持つ要素を何度も作る必要がなく、大本の部品を修正すれば、アプリ全体で修正されるということです。
 コンポーネントにはporpsという情報を渡すことができるので、ボタンならテキストや色などの情報を渡して、形だけを共通化させることもできます。でもこれはCSSでもできることで、propsのいいところは、「オブジェクトや関数を渡せる」ということです。つまり、アラートを表示させるボタンとか、ログアウトするボタンとか、共通の「処理」を持った部品をアプリのいろいろな場所におけるということです。さらに、ボタンに渡した処理を変更するには、大本の処理を書き換えればいいだけです。

 詳しくはReactの公式ドキュメントをご覧ください。

クイックスタート – React
Thelibraryforwebandnativeuserinterfaces

 こうしてコンポーネントをたくさん作って、それを組み合わせてアプリにしていく工程は、まるでレゴブロックのようです。しかもそのブロックは自作できる!素敵じゃないですか?

 ただいいことばかりではありません。Reactは難しいと言われているらしいんですが(というか実際難しいと思います)、他に考えなければいけないことがあるんです。それは次回にまとめます。

コメント