MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Laravel - Laravelの構造のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Laravel - Laravelの構造
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == LaravelはMVCアーキテクチャを基本としており、コードの整理と保守性を重視した設計となっている。<br> <br> * <u>アプリケーションのコア構造</u> *: プロジェクトのルートディレクトリには、重要なディレクトリがいくつか配置されている。 *: appディレクトリには、アプリケーションの中心となるコードが格納される。 *: ここにはモデル、コントローラ、ミドルウェア等が含まれており、ビジネスロジックの大部分がこの中に実装される。 <br> * <u>ルーティングとリクエストの流れ</u> *: 全てのリクエストは、public/index.phpファイルを通じて処理が開始される。 *: その後、routesディレクトリ内で定義されたルーティング設定に基づいて、適切なコントローラへとリクエストが振り分けられる。 <br> * <u>設定とリソース管理</u> *: configディレクトリには各種設定ファイルが配置されており、データベース接続やメール設定等のアプリケーション全体の設定を管理する。 *: また、resourcesディレクトリには、ビューテンプレート、言語ファイル、CSSやJavaScript等のアセットファイルが格納される。 <br> * <u>サービスプロバイダーとDI</u> *: Laravelの特徴的な機能として、依存性注入 (DI) とサービスコンテナがある。 *: app/Providersディレクトリ内のサービスプロバイダを通じて、様々なサービスの登録と初期化が行われる。 *: これにより、疎結合なコードの実現とテスタビリティの向上が図られている。 <br> * <u>データベース操作</u> *: databaseディレクトリには、マイグレーションやシーダが配置される。 *: Eloquent ORMを使用することにより、データベース操作を直感的なオブジェクト指向的な方法で行うことができる。 <br> * <u>アーティザンコマンド</u> *: コマンドラインインターフェース Artisan を通じて、様々な開発タスクを自動化できる。 *: マイグレーションの実行、モデルやコントローラの作成等、開発効率を大きく向上させる機能が提供されている。 <br> * <u>セキュリティ機能</u> *: フレームワークには、CSRFトークン、XSS対策、SQLインジェクション防止等、セキュリティ機能が標準で組み込まれている。 *: app/Http/Middlewareディレクトリには、これらのセキュリティ関連の処理が実装されている。 <br> このように、Laravelは必要な機能を論理的に配置して、開発者が効率的にアプリケーションを構築できるように設計されている。<br> フレームワークの各部分が明確な役割を持ち、かつ柔軟に拡張できる構造となっているのが特徴である。<br> <br><br> == ディレクトリ構成 == <center> {| class="wikitable" | style="background-color:#fefefe;" |- ! style="background-color:#66CCFF;" | ディレクトリ名 ! style="background-color:#66CCFF;" | 説明 |- | app || アプリケーションのプログラム部分が存在するディレクトリである。<br>アプリケーションの開発時には、必要なスクリプトファイルを追加する。 |- | bootstrap || アプリケーションの起動時に実行される処理(laravelフレームワークの起動コード)が存在する。 |- | config || 設定ファイルが存在するディレクトリである。 |- | database || データベース関連のファイルが存在する。<br>MigrationファイルなどDB関連のファイル等が配置される。 |- | public || 公開ディレクトリである。<br>CSS、JS等の外部に公開するファイルを配置する。<br><br>NginXおよびApache2のドキュメントルートの設定では、このディレクトリを指定する。 |- | resources || プログラムが使用するリソース関連のファイル(例: ビューや言語変換用ファイル等)が存在するディレクトリである。<br>プログラムのテンプレートファイル等が存在する。 |- | routes || ルーティング情報が保存されているディレクトリである。<br>アクセスするアドレスに割り当てられるプログラムの情報等が記載されている。 |- | storage || アプリケーションのプログラムが保存するファイル等(例: ログファイル)を配置する。 |- | tests || ユニットテスト関係のファイルが存在するディレクトリである。<br>テストコード等を配置する。 |- | vendor || フレームワーク本体のプログラムが存在するディレクトリである。<br>Composerでインストールしたライブラリが保存されている。 |} </center> <br><br> == appディレクトリ (コアディレクトリ) == appディレクトリは、アプリケーションの中核となるコードを格納する場所である。<br> アプリケーションの主要なビジネスロジックの多くがここに配置される。<br> <br> 以下に示すような構造により、コードの組織化と保守性が向上して、チーム開発においても明確な役割分担が可能となる。<br> また、テストパターンの記述にも考慮された設計となっている。<br> <br> ==== Consoleディレクトリ ==== Consoleディレクトリには、Artisanコマンドに関連するファイルが格納される。<br> Kernel.phpでは、定期実行するスケジュールタスクを定義でき、カスタムコマンドもここに配置する。<br> <br> <syntaxhighlight lang="php"> // app/Console/Commands/SendDailyReport.phpファイル class SendDailyReport extends Command { protected $signature = 'report:daily'; protected $description = '日次レポートを送信する'; public function handle() { // レポート送信ロジック } } </syntaxhighlight> <br> ==== Exceptionsディレクトリ ==== Exceptionsディレクトリには、アプリケーション固有の例外処理クラスを配置する。<br> Handler.phpで、例外処理の方法をカスタマイズできる。<br> <br> ==== Httpディレクトリ ==== 最も頻繁に作業するディレクトリの1つである。<br> 以下に示すような重要なコンポーネントが含まれる。<br> <br> * Controllersディレクトリ *: リクエストの処理ロジックを担当 * Middlewareディレクトリ *: リクエスト / レスポンスの前後処理を実装 * Requests *: フォームリクエストのバリデーションルールを定義 * Resources *: APIレスポンスの整形を担当 *: <br> *: APIリソースを使用する場合にのみ必要である。 *: 必要な場合は、以下に示すコマンドで生成する。 *: <code>php artisan make:resource UserResource</code> <br> ==== Modelsディレクトリ ==== データベースとのやり取りを担当するEloquentモデルクラスが配置される。<br> リレーションシップやスコープ等のデータ操作ロジックを定義する。<br> <br> <syntaxhighlight lang="php"> // app/Models/User.phpファイル class User extends Model { protected $fillable = ['name', 'email']; public function posts() { return $this->hasMany(Post::class); } } </syntaxhighlight> <br> ==== Providersディレクトリ ==== サービスプロバイダはアプリケーションの起動時に実行される重要なクラスである。<br> サービスの登録やイベントの設定等を行う。<br> <br> ==== Servicesディレクトリ ==== これは標準的なLaravelの構造には含まれないが、多くの開発者が作成する慣習的なディレクトリである。<br> <br> ビジネスロジックを分離して、再利用可能なサービスクラスを配置する。<br> <br> 開発者が必要に応じて手動でディレクトリを作成する。<br> <br> ==== Eventsディレクトリ / Listenersディレクトリ ==== イベント駆動プログラミングをサポートするためのディレクトリである。<br> イベントクラスとそれを処理するリスナークラスを配置する。<br> <br> これは標準的なLaravelの構造には含まれない。<br> イベント処理が必要な場合に、以下に示すコマンドで生成する。<br> # Eventsディレクトリの作成 php artisan make:event UserRegistered # Listenersディレクトリの作成 php artisan make:listener SendWelcomeEmail <br> ==== Policiesディレクトリ ==== 認可ロジックを定義する場所である。<br> 特定のモデルに対する操作権限をきめ細かく制御できる。<br> <br> これは標準的なLaravelの構造には含まれない。<br> 認可ポリシーが必要な場合に、以下に示すコマンドで生成する。<br> php artisan make:policy UserPolicy <br> ==== カスタマイズと拡張 ==== Laravelでは、これらの基本構造に加えて、必要に応じて独自のディレクトリを作成することが推奨されている。<br> <br> 以下に例を示す。<br> * Repositories *: データアクセス層を分離する場合 * Actions *: 単一責任の原則に基づいたビジネスロジック * DTOs *: データ転送オブジェクト * Enums *: 列挙型クラス <br><br> == resourcesディレクトリとpublicディレクトリの違い == ==== resources ディレクトリ ==== ソースコードを配置する場所であり、コンパイル / バンドル前のファイルが置かれる。<br> Sass, TypeScript, モダンなJavaScript (ES6+) 等の開発用コードを配置する。<br> <br> また、npmパッケージからインポートしたコードも含める。<br> <br> これは、Vite / Webpackにより処理される前の状態である。<br> <br> ==== publicディレクトリ ==== Webブラウザから直接アクセス可能なファイルを配置する。<br> Webブラウザが解釈できる形式 (通常のCSS, ES5 JavaScript)<br> <br> コンパイル / バンドル済みのファイルである。<br> (最適化・圧縮済みの本番向けのコード等)<br> (アセットのビルド後の出力先)<br> <br> ==== 具体例 ==== <syntaxhighlight lang="scss"> // resources/css/app.scss @import 'variables'; .button { @apply bg-blue-500; &:hover { @apply bg-blue-600; } } </syntaxhighlight> <br> <syntaxhighlight lang="scss"> // public/css/app.css (コンパイル後) .button { background-color: #3b82f6; } .button:hover { background-color: #2563eb; } </syntaxhighlight> <br> ==== 開発フロー ==== # resources 下で開発を行う。 # vite build / npm run build でコンパイル。 # 結果がpublicディレクトリに出力される。 # publicのファイルがWebサーバから配信される。 <br> resourcesは開発向け、publicは本番配信向けという役割の違いがある。<br> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:Web]]
Laravel - Laravelの構造
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse