48
46

More than 1 year has passed since last update.

Next.js プロジェクト構造

Last updated at Posted at 2023-06-11

next.jsのプロジェクト構造に関して

公式サイト

公式のサイトに書いてあるものをまとめました。

トップレベルのファイル

ファイル名 説明
next.config.js Next.jsの設定ファイル
Next.jsアプリケーションのカスタム設定や環境変数の定義
middleware.ts Next.jsのリクエストミドルウェア
リクエストの前処理や後処理を実行するためのカスタムコード
instrumentation.ts OpenTelemetryとInstrumentation
OpenTelemetryはアプリケーションの監視やトレーシング,
Instrumentationは計測やトレース
.env 環境変数
アプリケーションで使用する機密情報や設定を管理
.env.local ローカルの環境変数
ローカル開発環境でのみ適用される変数を管理
.env.production 本番環境の環境変数
本番環境でのみ適用される変数を管理
.env.development 開発環境の環境変数
開発環境でのみ適用される変数を管理
.next-env.d.ts Next.jsのTypeScript宣言ファイル
Next.jsアプリケーションで使用するTypeScriptの型定義

Ecosystem

ファイル名 説明
package.json プロジェクトの依存関係とスクリプト
プロジェクトで使用するパッケージやそのバージョン情報、開発に必要なスクリプトなど
.gitignore 無視するべきGitのファイルとフォルダ(Gitのバージョン管理から除外)
tsconfig.json TypeScriptの設定ファイル
TypeScriptのコンパイルオプションやプロジェクトの構成を指定(特定のコンパイラオプションの有効化や、コンパイル対象ファイルの設定、型定義ファイルの取り扱いなど)
jsconfig.json JavaScriptの設定ファイル
プロジェクトの設定やコンパイルオプションを指定
.eslintrc.json ESLintの設定ファイル
ESLintのルールや設定、プラグインの適用などが指定

Top-level folders

フォルダ名 説明
app このフォルダ内には、アプリケーションのルーティングに関連するファイルやコンポーネントが配置されます。
pages このフォルダ内に配置されたファイルが自動的にルーティングされます。各ファイルは単一のページとなり、URLパスに基づいてアクセスされます。例えば、pages/index.jsはルートパス(/)に対応します
public サーブするための静的アセットを格納するフォルダです。ここに配置されたファイルは、直接公開され、アプリケーションからアクセスできます。一般的には、画像、CSSファイル、フォントなどの静的なリソースを配置します。
src オプションのアプリケーションソースフォルダです。このフォルダは必須ではありませんが、プロジェクトのソースコードをより構造化したい場合に使用されます。例えば、コンポーネント、ユーティリティ関数、カスタムフックなどのソースコードをこのフォルダ内に配置することができます。

app Routing Conventions

Routing Files

ファイル名 拡張子 説明
layout .js .jsx .tsx レイアウトを定義するファイルです。 複数のページで共通のヘッダーやフッター、ナビゲーションなど
page .js .jsx .tsx 各ページに対応するファイルです。 複数のページで共通のヘッダーやフッター、ナビゲーションなど
loading .js .jsx .tsx ローディング UI を定義するファイルです。 データの読み込み中やページの切り替え時に表示されるローディングUIを定義するために使用されます。通常、非同期データの取得や処理が行われている間に表示されるコンポーネント
not-found .js .jsx .tsx ページが見つからない場合の UI を定義するファイルです。存在しないページにアクセスされた場合に表示されるUIを定義
error .js .jsx .tsx エラー UI を定義するファイルです。 APIリクエストの失敗やデータの取得エラーなどの場合に表示されるコンポーネント
global-error .js .jsx .tsx グローバルエラー UI を定義するファイルです。 ネットワークの切断や予期せぬエラーが発生した場合に表示されるコンポーネント
route .js .ts API エンドポイントを定義するファイルです。 クライアントからのリクエストに応じてデータを取得・送信するためのサーバーサイドの処理
template .js .jsx .tsx 再レンダリングされたレイアウトを定義するファイルです。 コンテンツの一部を動的に変更する必要がある場合に使用
default .js .jsx .tsx パラレルルートのフォールバックページを定義するファイルです。 他の特定のファイルがマッチしない場合に表示されるページ

Nested Routes

フォルダー ルートセグメント
folder ネストされたルートセグメント  例えば、/folderというパスがある場合、folderはルートセグメントとなります。セグメントは親ルートに対応し、フォルダ内のページを表示するために使用されます。
folder/folder ネストされたルートセグメント

Dynamic Routes

フォルダー ダイナミックなルートセグメント
[folder] ダイナミックなルートセグメント。 このセグメントは、ユーザーからのリクエストに応じて異なる値を取り、該当するページを表示するために使用
ダイナミックなルートセグメント(https://nextjs.org/docs/app/building-your-application/routing/dynamic-routes#example)
[...folder] キャッチオールセグメント。このセグメントは、可変の階層構造を持つパスに対応するために使用されます。例えば、/folder1/folder2/folder3などのパスにマッチさせることができます。
スクリーンショット 2023-06-11 10.05.09.png(https://nextjs.org/docs/app/building-your-application/routing/dynamic-routes#catch-all-segments)
[[...folder]] オプションのキャッチオールセグメント。例えば、/[[...folder]]というパスがある場合、[[...folder]]はオプションのキャッチオールセグメントとなります。このセグメントは、任意の階層のパスに対応するものであり、存在しない場合には空の値を取ることもあります。 Optional Catch-all Segments(https://nextjs.org/docs/app/building-your-application/routing/dynamic-routes#optional-catch-all-segments)

Route Groups and Private Folders

フォルダー 説明
(folder) ルーティングに影響を与えずにルートをグループ化します。 特定のルートセグメントをグループ化し、ルーティングに対して特別な動作を追加することなく、関連するページやコンポーネントをまとめることができます。Private Folders(https://nextjs.org/docs/app/building-your-application/routing/colocation#private-folders)
_folder プライベートフォルダとそのすべての子セグメントをルーティングから除外します。 この構文を使用することで、指定したフォルダとそのすべての子セグメントをルーティングから除外し、外部からのアクセスを制限することができます。Organize routes without affecting the URL path(https://nextjs.org/docs/app/building-your-application/routing/route-groups#organize-routes-without-affecting-the-url-path)

Parallel and Intercepted Routes

ルート 説明
@folder 名前付きスロット。この構文を使用することで、複数のルートが同じレベルに並べられ、名前付きスロットとして機能する。Parallel Routes(https://nextjs.org/docs/app/building-your-application/routing/parallel-routes#convention)
(.)folder 同じ階層をインターセプト。この構文を使用することで、同じレベルにある他のルートの処理をインターセプトし、特定の動作を追加。
(..)folder 1つ上の階層をインターセプト。この構文を使用することで、1つ上のレベルにある他のルートの処理をインターセプトし、特定の動作を追加
(..)(..)folder 2つ上の階層をインターセプト。 この構文を使用することで、2つ上のレベルにある他のルートの処理をインターセプトし、特定の動作を追加。
(...)folder ルートからインターセプト。この構文を使用することで、ルートの直下にある他のルートの処理をインターセプトし、特定の動作を追加

Intercepted Routes参考記事1
Intercepted Routes参考記事2

Metadata File Conventions

App Icons

アイコン 拡張子 説明
favicon .ico ファビコンファイル
icon .png .svg アプリアイコンファイル
icon .ico .jpg .jpeg .png .svg 生成されたアプリアイコン
apple-icon .jpg .jpeg .png Appleアプリアイコンファイル
apple-icon .js .ts .tsx 生成されたAppleアプリアイコン

Open Graph and Twitter Images

イメージ 拡張子 説明
opengraph-image .jpg .jpeg .png .gif Open Graphイメージファイル
opengraph-image .js .ts .tsx 生成されたOpen Graphイメージ
twitter-image .jpg .jpeg .png .gif Twitterイメージファイル
twitter-image .js .ts .tsx 生成されたTwitterイメージ

SEO

ファイル 拡張子 説明
sitemap .xml サイトマップファイル
sitemap .js .ts 生成されたサイトマップ
robots .txt ロボットファイル
robots .js .ts 生成されたロボットファイル

pages Routing Conventions

Special Files

ファイル 拡張子 説明
_app .js .jsx .tsx カスタムApp。 アプリケーションのカスタム設定や共通のレイアウトを定義
_document .js .jsx .tsx カスタムDocument。Next.jsアプリケーションのHTMLドキュメントのカスタマイズを行う
_error .js .jsx .tsx カスタムエラーページ
404 .js .jsx .tsx 404エラーページ
500 .js .jsx .tsx 500エラーページ

Routes

ファイル名 拡張子 説明
index .js .jsx .tsx ホームページ
folder/index .js .jsx .tsx ネストされたページ

Dynamic Routes

以下は、表形式のマークダウンで表示されたファイルの命名規則と説明の一覧です:

ファイル名 拡張子 説明
[folder]/index .js .jsx .tsx ダイナミックなルートセグメント
[...folder]/index .js .jsx .tsx キャッチオールセグメント
[[...folder]]/index .js .jsx .tsx オプションのキャッチオールセグメント
48
46
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
48
46