React のベストなアーキテクチャを構築しよう！React ライブラリのベストプラクティス

こんにちは！


本記事は React を始める方向けに、おすすめなライブラリを紹介する記事です。



## React の開発には、なぜライブラリが必要なのか？

React は「UI の部品 (コンポーネント) 作りに特化した JavaScript ライブラリ」 であり、それ以外の、アプリケーション開発に必要な機能は、追加でインストールする必要があります。

例えば、ほとんどのアプリケーションで必要なルーティング (画面遷移) の機能なども、追加でインストールする必要があります。

無駄になる可能性があるものは極力削減し、必要最小限のアプリケーションを構築するには React は最適なフレームワークと言えます。

とはいえ、React を初めて触れる方にとって「何が必要なのか？」というのを一から探していくのは、なかなか大変な作業かと思います。

本記事では、そのような読者に向けた React で「業務アプリケーション開発」に必要なライブラリをセットで紹介していきます。


## ベストプラクティス

早速ですが、それぞれのカテゴリ毎に、おすすめのライブラリを紹介します。

Redux ... React における最適な設計パターンの実現

React Router Dom .. ルーティング

React Hook Form ... フォームバリデーション

Material UI React ...  基本的なコンポーネントの提供

Styled Components ... 保守性の高いスタイルの管理

React Virtualized ... パフォーマンスの改善

Jest & Enzyme   ... テストライブラリ

以降、それぞれのライブラリの概要を紹介します。

## React における最適な設計パターンの実現

### Redux

Redux は、設計パターンの提供、および、設計に必要な機能を提供するライブラリです。

改めて React の特徴として、

① React はコンポーネント(部品) 作成に特化したライブラリであり、

② 作られたコンポーネント(部品)を、データをどのように管理・連携するか？ はデベロッパーに任せている

この②の部分において、デベロッパーを手助けしてくれるのが Redux です。

Redux は、②の課題を、ベストプラクティスの提供と共に解決してくれます。

※業務アプリケーションによくある MVC および MVVM とは、設計思想が異なるため、Redux を採用する場合は、事前によく検討することをおすすめします。

https://redux.js.org/

## ルーティング

### React Router Dom 

ルーティングを行うためのライブラリです。ルーティングに関する基本機能、履歴、パラメータの受け渡しなどが実現できます。

https://reactrouter.com/

## 基本的なコンポーネントの提供

### Material UI React

見た目の統一は、フロントエンド開発において、最も検討すべき項目の１つかと思います。

React 単体では、HTML 標準コンポーネントを利用することになりますが、Material UI React は、基本的な UI コントロール一式を提供します。

Google 社が提唱するマテリアルデザインを実現し、洗練されたスタイルの形で提供してくれるライブラリです。

https://material-ui.com/ja/


## フォームバリデーション

### React Hook Form

公式サイトの説明を抜粋すると「高性能で柔軟かつ拡張可能な使いやすいフォームバリデーションライブラリ。」です。

バリデーションの機能や、入力の変更監視や、バリデーションエラーに関する機能の提供を行ってくれるライブラリです。

https://react-hook-form.com/jp/

## パフォーマンス向上

### React Virtualized

React Virtualized は、様々な仮想化機能を提供します。

大量な項目を一度に表示するページだと、非常に機能を発揮するライブラリです。

但し、使い方としては「配置したら勝手に性能があがる」という夢のようなライブラリではなく、例えばスクロール時に、どのコンポーネントを破棄、または追加するのか？など一部実装する必要があります。

そのため、全ページに導入するのではなく、パフォーマンスに問題ありなページに導入するのが良いでしょう。

https://github.com/bvaughn/react-virtualized



## スタイルシートの管理

### Styled Components

Styled Components の、React における大きなメリットとしては、スタイルの「カプセル化」ができます。

従来の CSS では、グローバルに管理されているため、クラス名が被らない、他のスタイルの影響をあたえないようにするなど、様々な考慮が必要となりますが、Styled Components を活用すると、コンポーネント単位で、スタイルをカプセル化し、管理することができます。

https://styled-components.com/

## テストライブラリ

### Jest & Enzyme 

Jest は、Facebook 社が開発を進めているテストランナーです。

また、 Enzyme という React のテストユーティリティライブラリを用いることで、DOM要素のテストも行う事が出来ます。

https://jestjs.io/ja/docs/tutorial-react

https://enzymejs.github.io/enzyme/

## まとめ

React 自身が、コンポーネント作成の基盤がしっかりあるからこそ、様々なライブラリを用いて、アプリケーション開発ができるフレームワークであると実感しました。

様々な OSS に支えらえれ、同時にデベロッパーコミュニティーの強さ、採用できるライブラリの豊富さも、React の大きな魅力ですね。

例えば、新しい設計手法が出たとしても、対応するライブラリが開発され、それを採用することも出来るので、React は長く最前線で戦える良いフレームワークだと思います。


## Ignite UI for React トライアル版を利用するには

Ignite UI for React はトライアル板での試用が可能です。
<a href="https://jp.infragistics.com/products/ignite-ui-react/download" target="_blank">トライアルのダウンロードはこちら</a>

また、<a href="https://iam.infragistics.com/Account/Register" target="_blank">こちらのページ</a> よりアカウントの作成を行っていただければ、実際にサブスクリプションをお持ちの場合と同じ内容のテクニカルサポートをご利用いただくことが出来ますのでぜひご利用ください。（初回利用より30日間）

また、製品をご購入をご検討のお客様は <a href="https://jp.infragistics.com/about-us/contact-us" target="_blank">こちらのページ</a> よりお気軽にお問い合わせください。そのほか、<a href="https://jp.infragistics.com/request-demo" target="_blank">製品デモ</a>や、弊社製品そのものに関するご相談だけでなく、システム開発における様々なご相談も実施可能な<a href="https://jp.infragistics.com/free-consultation" target="_blank">無料相談会</a>も随時受け付けています。


## 開発全般に関するご相談はお任せください！

インフラジスティックス・ジャパンでは、各開発プラットフォームの技術トレーニング、コンサルテーションの提供、開発全般のご支援を行っています。

https://jp.infragistics.com/service-and-support/professional-service


「古い技術やサポート終了のプラットフォームから脱却する必要があるが、その移行先のプラットフォームやフレームワークの検討が進まない、知見がない。」

「新しい開発テクノロジーを採用したいが、自社内にエキスパートがいない。日本語リソースも少ないし、開発を進められるか不安。」

「自社のメンバーで開発を進めたいが、これまで開発フェーズを外部ベンダーに頼ってきたため、ツールや技術に対する理解が乏しい。」

「UIを刷新したい。UIデザインやUI/UXに関する検討の進め方が分からない。外部のデザイン会社に頼むと、開発が難しくなるのではないか、危惧している。」

といったご相談を承っています。

お問い合せは<a href="https://jp.infragistics.com/about-us/contact-us#contactform" target="_blank">こちら</a>からお気軽にご相談ください。


## 技術サポート・無料オンライン相談会をご利用ください

インフラジスティックスのUI製品は多くの機能を備えているためドキュメントの情報量も多く、なかなかお探しの情報に辿り着けない場合もあります。そういった際はお気軽に技術サポートや、製品導入支援担当との無料オンライン相談会をご予約いただくことで検証時間を節約可能ですので、ぜひご活用ください。<br>
<a href="https://jp.infragistics.com/support/dev-support" target="_blank">技術サポートへの問い合わせ方法を確認する</a><br>
<a href="https://jp.infragistics.com/free-consultation" target="_blank">無料オンライン相談会を予約する</a>