日本語Englishイントロダクションプロジェクトディレクトリ(appディレクトリbootstrapディレクトリconfigディレクトリdatabaseディレクトリpublicディレクトリresourcesディレクトリroutesディレクトリstorageディレクトリtestsディレクトリvendorディレクトリ)Appディレクトリ(ConsoleディレクトリEventsディレクトリExceptionsディレクトリHttpディレクトリJobsディレクトリListenersディレクトリMailディレクトリNotificationsディレクトリPoliciesディレクトリProvidersディレクトリ)イントロダクションLaravelのデフォルトアプリケーション構造はアプリケーションの大小にかかわらず、素晴らしいスタートを切ってもらえることを意図しています。アプリケーションは皆さんのお好みに応じ、自由に体系立ててください。クラスがComposerによりオートローディングできるならば、Laravelはクラスをどこに配置するか強制することはまずありません。modelsディレクトリはどこにある?Laravelを学習し始めるとき、多くの開発者はmodelsディレクトリが存在しないことに戸惑います。意図的にこのディレクトリを用意していません。多くの別々の人達にとって、その意味合いは様々なため、"models"という言葉の定義は曖昧であることに私達は気づきました。ある開発者たちはすべてのビジネスロジックを総称してアプリケーションの「モデル」と呼び、一方で別の人達はリレーショナルデータベースに関連するクラスを「モデル」として参照しています。このため、私達はEloquentモデルをデフォルトではappディレクトリ下へ設置することを選択し、開発者自分が選んだどこか別の場所へ設置してもらうことにしました。プロジェクトディレクトリappディレクトリappディレクトリは名前の示すとおり、アプリケーションのコアコードを配置します。このフォルダーの詳細は、このあとに説明します。アプリケーションのほとんど全部のクラスは、このディレクトリの中に設定されることを覚えておいてください。bootstrapディレクトリbootstrapフォルダーはフレームワークの初期起動やオートローディングの設定を行うファイルを含んでいます。その中のcacheディレクトリは、初期処理のパフォーマンスを最適化するため、フレームワークが生成するルートやサービスのキャッシュファイルが保存されるフォルダーです。Configディレクトリconfigディレクトリは名前が示す通り、アプリケーションの全設定ファイルが設置されています。全ファイルに目を通し、設定可能なオプションに慣れ親しんでおくのは良い考えでしょう。databaseディレクトリdatabaseフォルダーはデータベースのマイグレーションと初期値設定(シーディング)を配置します。ご希望であれば、このファイルをSQLiteデータベースの設置場所としても利用できます。publicディレクトリpublicディレクトリは、アプリケーションへの全リクエストの入り口となるindex.phpファイルを持っています。このディレクトリにはアセット(画像、JavaScript、CSSなど)を配置します。resourcesディレクトリresourcesディレクトリはビューやアセットの元ファイル(LESS、SASS、JavaScript)で構成されています。すべての言語ファイルも配置します。routesディレクトリroutesディレクトリはアプリケーションの全ルート定義により構成されています。デフォルトでは、web.php、api.php、console.phpの3ファイルが含まれています。Web.phpファイルは、RouteServiceProviderのwebミドルウェアグループに属するルートで構成します。このミドルウェアは、セッションステート、CSRF保護、クッキーの暗号化機能を提供しています。アプリケーションがステートレスではなく、RESTフルなAPIを提供しないのであれば、すべてのルートはweb.phpファイルの中で定義されることになるでしょう。api.phpファイルは、RouteServiceProviderのapiミドルウェアグループに属するルートで構成します。このミドルウェアはアクセス回数制限を提供しています。このファイル中で定義されるルートは、ステートレスであることを意図しています。これらのルートを通るアプリケーションに対するリクエストは、セッションステートにアクセスする必要がないように、トークンを使って認証されることを意図しています。console.phpファイルは、クロージャベースの全コンソールコマンドを定義する場所です。それぞれのコマンドのIOメソッドと連携するシンプルなアプローチを提供するコマンドインスタンスと、各クロージャは結合します。厳密に言えば、このファイルはHTTPルートは定義していないのですが、コンソールベースのエントリポイントを定義しているという点で、ルート定義なのです。storageディレクトリstorageディレクトリにはコンパイルされたBladeテンプレート、ファイルベースのセッション、ファイルキャッシュなど、フレームワークにより生成されるファイルが保存されます。このフォルダーはapp、framework、logsディレクトリに分かれています。appディレクトリはアプリケーションにより生成されるファイルを保存するために利用します。frameworkディレクトリはフレームワークが生成するファイルやキャッシュに利用されます。最後のlogsディレクトリはアプリケーションのログファイルが保存されます。storage/app/publicディレクトリにはプロファイルのアバターなどのようなユーザにより生成され、外部からアクセスされるファイルが保存されます。public/storageがこのディレクトリを指すように、シンボリックリンクを張る必要があります。storage:linkコマンドを使い生成できます。testsディレクトリtestsディレクトリには皆さんの自動テストを配置します。サンプルのPHPUnitテストが最初に含まれています。各テストクラスはサフィックスとしてTestを付ける必要があります。vendor/bin/phpunitコマンドにより実行できます。vendorディレクトリvendorディレクトリには、Composerによる依存パッケージが配置されます。appディレクトリ皆さんのアプリケーションの主要な部分は、appディレクトリー内に配置します。このディレクトリーはデフォルトで、App名前空間のもとに置かれており、PSR-4オートローディング規約を使い、Composerがオートロードしています。appディレクトリは多様なサブディレクトリを持っています。Console、Http、Providersなどです。ConsoleとHttpディレクトリは、アプリケーションの「コア」へAPIを提供していると考えてください。HTTPプロトコルとCLIは両方共にアプリケーションと相互に関係するメカニズムですが、実際のアプリケーションロジックではありません。言い換えれば、これらはアプリケーションに指示を出す、2つの方法に過ぎません。Consoleディレクトリは全Artisanコマンドで構成され、一方のHttpディレクトリはコントローラーやフィルター、リクエストにより構成されています。Artisanコマンドを使用することにより、その他様々なディレクトリがappディレクトリ内に作成されます。Artisanコマンドを実行するまで存在していません。Artisanコマンドにより、appディレクトリ下にたくさんのクラスが生成されます。makeコマンドをターミナルで実行してください。ConsoleディレクトリConsoleディレクトリは、アプリケーションの全カスタムArtisanコマンドで構成します。これらのコマンドクラスはmake:commandコマンドにより生成されます。コンソールカーネルもこのディレクトリ内にあり、カスタムArtisanコマンドや、タスクのスケジュールを登録します。Eventsディレクトリこのディレクトリはデフォルトで存在していません。Artisanコマンド実行時に作成されます。Eventsディレクトリは名前の通り、イベントクラスを設置する場所です。イベントは特定のアクションが起きたことをアプリケーションの別の部分に知らせるために使われ、柔軟性と分離性を提供しています。ExceptionsディレクトリExceptionsディレクトリはアプリケーションの例外ハンドラで構成します。アプリケーションから投げる例外を用意するにも適した場所でしょう。例外のログやレンダー方法をカスタマイズしたい場合は、このディレクトリのHandlerクラスを修正してください。HttpディレクトリHttpディレクトリはコントローラ、ミドルウェア、フォームリクエストを設置します。アプリケーションへのリクエストを処理するロジックは、ほぼ全てこのディレクトリ内に設置します。Jobsディレクトリこのディレクトリはデフォルトで存在していません。Artisanコマンドを実行すると作成されます。Jobsディレクトリーはアプリケーションのキュー投入可能なジョブを置いておく場所です。Jobsはアプリケーションによりキューに投入されるか、もしくは現在のリクエストサイクル中に同期的に実行されます。現在のリクエストサイクル中に同期的に実行するジョブは、コマンドパターンを実装しているため、時に「コマンド」と呼ばれることがあります。ListenersディレクトリTこのディレクトリはデフォルトで存在していません。Artisanコマンドを実行すると、作成されます。Listenersディレクトリには、eventsイベントを処理するクラスを設置します。イベントリスナはイベントインスタンスを受け取り、発行されたイベントへ対応するロジックを実行します。UserRegistered(ユーザ登録)イベントは、SendWelcomeEmail(ウェルカムメール送信)リスナにより処理されることになるでしょう。Mailディレクトリこのディレクトリはデフォルトでは存在していません。Artisanコマンドを実行すると、作成されます。Mailディレクトリは、アプリケーションから送信されるメールを表す全クラスで構成します。メールオブジェクトにより、Mail::sendメソッドを使用して送られるメールを組み立てるロジックをすべて、1つのシンプルなクラスへカプセル化できます。Notificationsディレクトリこのディレクトリはデフォルトでは存在していません。Artisanコマンドを実行すると作成されます。Notificationsディレクトリは、アプリケーションから送られる全「業務上」の通知、たとえばアプリケーションの中でイベントが発生したことを知らせるシンプルな通知などで構成します。Laravelの通知機能は、メール、Slack、SMS、データベースへの保存などのように、様々なドライブに対する通知の送信を抽象化しています。Policiesディレクトリこのディレクトリはデフォルトでは存在していません。Artisanコマンドを実行すると、作成されます。Policiesディレクトリにはアプリケーションの認可ポリシークラスを設置します。ポリシーは、リソースに対し指定したアクションをユーザが実行できるかを決定します。詳細は、認可のドキュメントをご覧ください。ProvidersディレクトリProvidersディレクトリは、アプリケーションの全サービスプロバイダにより構成します。サービスプロバイダは、サービスをコンテナと結合、イベントの登録、もしくはアプリケーションへやってくるリクエストを処理するために必要な用意をするタスクを実行するなど、アプリケーションの事前準備を行います。インストール直後のアプリケーションでも、このディレクトリは多くのプロパイダーを含んでいます。必要に応じて、自分のプロバイダーを自由に追加してください。readme.md).これは次期リリース版の翻訳で、コミュニティにより翻訳されています。