React アプリの作成

React を使って新しいアプリやウェブサイトを作成したい場合は、フレームワークを使って始めることをおすすめします。

あなたのアプリが既存のフレームワークではうまく対応できない制約を有している場合や、自分自身でフレームワークを構築したい場合、または React アプリの基本を学びたい場合は、React アプリをゼロから構築することも可能です。

フルスタックフレームワーク

これらの推奨フレームワークは、アプリを本番環境でデプロイしスケールするために必要な、すべての機能をサポートしています。最新の React 機能を統合し、React のアーキテクチャを活用しています。

補足

フルスタックフレームワークは必ずしもサーバを必要としない

このページのすべてのフレームワークは、クライアントサイドレンダリング (client-side rendering; CSR)、シングルページアプリケーション (single-page app; SPA) および静的サイト生成 (static-site generation; SSG) をサポートしています。これらのアプリは、サーバ機能なしで CDN や静的ホスティングサービスにデプロイできます。さらに、これらのフレームワークは、ユースケースに応じてサーバサイドレンダリングをルートごとに追加することを可能にします。

これにより、クライアントのみのアプリから始めておき、後で要件が変化した場合に、アプリを書き直すことなく個々のルートでサーバ機能を使用することを選択できます。レンダー戦略の設定については、フレームワークのドキュメントを参照してください。

Next.js (App Router)

Next.js の App Router は、React のアーキテクチャを最大限に活用してフルスタック React アプリを実現する React フレームワークです

Terminal
npx create-next-app@latest

Next.js は Vercel によってメンテナンスされています。Next.js アプリを Node.js やサーバレスホスティング、または独自のサーバにデプロイできます。Next.js はまた、サーバを必要としない静的エクスポートをサポートしています。Vercel はさらにオプトインの有料クラウドサービスも提供しています。

React Router (v7)

React Router は、React 用の最も人気のあるルーティングライブラリであり、Vite と組み合わせてフルスタック React フレームワークを作成できます。標準の Web API を重視しており、さまざまな JavaScript ランタイムやプラットフォーム向けにそのままデプロイできるテンプレートをいくつか提供しています。

新しい React Router フレームワークプロジェクトを作成するには、以下のコマンドを実行します。

Terminal
npx create-react-router@latest

React Router は Shopify によってメンテナンスされています。

Expo (ネイティブアプリ用)

Expo は、真にネイティブな UI を持つユニバーサルな Android、iOS、および Web アプリを作成できる React フレームワークですReact Native 用の SDK を提供することでネイティブ部分を使いやすくしています。新しい Expo プロジェクトを作成するには、以下のコマンドを実行します。

Terminal
npx create-expo-app@latest

Expo を初めて使用する場合は、Expo チュートリアルをチェックしてください。

Expo は Expo(社名) によってメンテナンスされています。Expo を使ったアプリ構築は無料であり、Google や Apple のアプリストアにも制限なく申請できます。また Expo ではオプトインの有料クラウドサービスも提供しています。

その他のフレームワーク

私たちのフルスタック React ビジョンに向けて取り組んでいる他の新進のフレームワークも存在します。

  • TanStack Start (Beta): TanStack Start は、TanStack Router を活用したフルスタック React フレームワークです。Nitro や Vite などのツールを使用して、フルドキュメント SSR、ストリーミング、サーバ関数、バンドル機能などを提供します。
  • RedwoodJS: Redwood は、多くのプリインストールされたパッケージと設定を備えたフルスタック React フレームワークで、フルスタックウェブアプリケーションを簡単に構築できます。
さらに深く知る

React チームのフルスタックアーキテクチャビジョンに含まれる機能

Next.js の App Router バンドラは、公式の React Server Components 仕様を完全に実装しています。これにより単一の React ツリー内で、バンドル時専用コンポーネント、サーバ専用コンポーネント、インタラクティブなコンポーネントを混在させることができます。

例えば、データベースやファイルから読み込みを行う React コンポーネントを非同期 (async) 関数として記述できます。そしてそのデータをインタラクティブなコンポーネントに渡すこともできます。

// This component runs *only* on the server (or during the build).
async function Talks({ confId }) {
// 1. You're on the server, so you can talk to your data layer. API endpoint not required.
const talks = await db.Talks.findAll({ confId });

// 2. Add any amount of rendering logic. It won't make your JavaScript bundle larger.
const videos = talks.map(talk => talk.video);

// 3. Pass the data down to the components that will run in the browser.
return <SearchableVideoList videos={videos} />;
}

Next.js の App Router は、サスペンス (Suspense) を使用したデータフェッチを統合しています。これにより、React ツリー内で直接、UI の様々な場所に表示されるロード中状態(スケルトンプレースホルダなど)を指定できるようになります。

<Suspense fallback={<TalksLoading />}>
<Talks confId={conf.id} />
</Suspense>

サーバコンポーネントとサスペンスは、Next.js の機能ではなく React の機能です。しかしフレームワークレベルでこれらを採用するには、合意形成とかなりの実装の手間が必要です。現時点では、Next.js の App Router が最も完全な実装です。React チームはバンドラの開発者と協力して、次世代のフレームワークでこれらの機能を実装しやすくすることを目指しています。

ゼロから構築を始める

あなたのアプリが既存のフレームワークではうまく対応できない制約を有している場合や、自分自身でフレームワークを構築したい場合、または React アプリの基本を学びたい場合には、ゼロから React プロジェクトを始めるための他の選択肢があります。

ゼロから始めることでより柔軟性が得られますが、ルーティング、データフェッチ、その他の一般的な使用パターンにどのツールを使用するかを選択する必要があります。これは、既存のフレームワークを使用する代わりに自分自身でフレームワークを構築するようなものです。おすすめのフルスタックフレームワークには、これらの問題に対する組み込みの解決策があります。

独自のソリューションを構築したい場合は、ゼロからの React アプリ構築ガイドを参照し、ViteParcel、または RSbuild のようなビルドツールを使って新しい React プロジェクトをセットアップする方法を確認してください。


このページに掲載されることに興味のあるフレームワークの作者の方は、こちらからお知らせください