0
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?

Next.js App Router: なぜ components ディレクトリにブラウザからアクセスできないのか

Last updated at Posted at 2025-05-19

最近 Next.js の App Router を使い始めた際に、少し混乱したポイントについて整理したのでここに記載します。

疑問点

Next.js のプロジェクトを開発していた時、src/app/componentsディレクトリにコンポーネントを配置し、ブラウザから直接アクセスしようとしたところ、404 エラーが発生しました。

例えば:

  • /src/app/dashboard/page.tsxhttp://localhost:3000/dashboard でアクセス可能
  • /src/app/components/Button.tsxhttp://localhost:3000/components/Button でアクセスしようとしても 404

なぜcomponentsディレクトリ内のコンポーネントにブラウザから直接アクセスできないのか、理解するのに少し時間がかかったので、その理由をまとめました。

App Router のルーティング仕組み

調査した結果、App Router においてブラウザからアクセス可能なルートは以下の条件を満たす必要があることがわかりました:

  1. appディレクトリ内のフォルダ構造が URL パスに対応する
  2. そのフォルダ内にpage.js/page.tsxまたはroute.js/route.tsxファイルが存在する

つまり、URL からアクセスするためには、フォルダ名がパスの一部になり、そのフォルダ内にpage.tsxまたはroute.tsxが必要です。

components ディレクトリの役割

componentsというディレクトリ名は、Next.js の規約上特別な意味を持ちません。これは単に開発者間の慣習として、再利用可能な UI コンポーネントを格納するために使われています。

App Router では、以下のような特別なファイル名が予約されています:

  • page.js - ルートにアクセス可能なページコンポーネント
  • layout.js - 共通レイアウト
  • loading.js - ローディング状態の UI
  • error.js - エラー状態の UI
  • route.js - API エンドポイント

一方で、componentsディレクトリやその中のファイルはルーティングの対象外です。

コンポーネントへのアクセス方法

コンポーネントの内容を直接 URL でアクセスしたい場合は、そのコンポーネントを使用するページファイルを作成する必要があります。

// src/app/my-button/page.tsx
import Button from "../components/Button";

export default function ButtonPage() {
  return (
    <div>
      <h1>ボタンコンポーネントのデモ</h1>
      <Button />
    </div>
  );
}

このようにすれば、http://localhost:3000/my-buttonからアクセスできるようになります。

まとめ

Next.js の App Router では:

  • コンポーネントは他のページやレイアウト内でインポートして使用するもの
  • 直接 URL でアクセスする対象ではない
  • ブラウザからアクセスするには、そのコンポーネントを表示する専用のpage.tsxファイルが必要

初心者で触りはじめた自分にとって、なんでだろうって混乱してました。
claudeなどの生成AIと対話しながら、その回答をもとに整理しました。

参考資料

0
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
0
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?