Laravelでコントローラを作成する方法!基本のMVC構造を理解しよう
生徒
「Laravelでコントローラを自分で作れるようになりたいです。どうやって作るんでしょうか?」
先生
「まずはMVCという仕組みを知るとわかりやすいですよ。コントローラはその中の“C”です。」
生徒
「MVCって何ですか?難しい単語で心配です…」
先生
「大丈夫、わかりやすい例えで説明しますね。コントローラの作り方を基本からやさしく見ていきましょう!」
1. MVC構造とは?
MVCとは「Model(モデル)・View(ビュー)・Controller(コントローラ)」の頭文字を取った言葉で、Laravelが採用している基本的なアプリ構造です。それぞれの役割を分けておくことで処理が整理され、初心者でもアプリの動きを理解しやすくなります。
- M(モデル):データを扱う係。データベースとのやり取りや保存を担当します。
- V(ビュー):ユーザーに表示する画面。HTMLやデザインに関わる部分です。
- C(コントローラ):モデルとビューを橋渡しする役で、リクエストを受け取って必要な処理を行い、結果をビューへ渡します。
コントローラはイメージとして「お店のウェイター」に近い存在です。お客さん(ユーザー)から注文(リクエスト)を受け取り、厨房(モデル)へ伝え、出来上がった料理(データ)をきれいに皿に盛り付けて(ビュー)、お客さんへ届けます。この仕組みのおかげで、どこに何を書くべきか迷いにくくなり、アプリ開発が進めやすくなります。
とても簡単な例として、MVCの動きをざっくりイメージできるサンプルを書いてみます。
// コントローラのイメージ例
class SampleController extends Controller
{
public function show()
{
$message = 'MVCを理解するとLaravelがもっと楽しくなる!'; // モデルから取得した値と仮定
return view('sample.show', ['msg' => $message]); // ビューへ渡す
}
}
このように、コントローラが中心となって画面表示までをつないでいくのがMVCの基本です。最初はイメージしづらいかもしれませんが、実際にコードを書いてみると自然と理解が深まり、Laravelがどんどん使いやすく感じられるようになります。
2. コントローラがいて何が良いの?
一見すると「文字を表示するだけなら、わざわざコントローラを使わなくてもいいのでは?」と思うかもしれません。しかし、アプリが少しずつ大きくなってくると、処理をコントローラにまとめておくことが非常に重要になります。画面に表示する内容やデータの取り扱いが複雑になったとき、コントローラがあることで処理を整理しやすくなり、見通しの良いアプリを作れるようになります。
- 処理のまとまりをきれいに分けられる:画面の見た目(ビュー)と実際の処理(ロジック)が混ざらないため、コードの読みやすさが段違いです。
- あとから機能を増やしやすい:コントローラが中心にあることで、新しい処理を追加するときも迷いません。
- 複数人で作業しやすくなる:役割が明確なため、別々の人がモデルやビューを編集しても衝突しにくくなります。
例えば、コントローラを使わずにビューだけで処理を書き始めてしまうと、あとで「どこで何をしているか」が分からなくなりがちです。コントローラがあるだけで、アプリ全体の土台がしっかりし、初心者でも整理された開発がしやすくなります。
次のようなシンプルな例でも、コントローラがデータを準備し、ビューで表示するという流れがよく分かります。
// コントローラの例
public function hello()
{
$name = '太郎';
return view('hello.message', ['user' => $name]);
}
このように、コントローラはアプリの「整理整頓役」として働き、開発をスムーズに進めるために欠かせない存在なのです。
3. コントローラの作り方(artisanコマンド)
Laravelでは、コントローラを手作業でファイル作成する必要はありません。artisan(アーティザン)コマンドという便利な仕組みが用意されており、たった1行入力するだけでコントローラのひな型を自動生成してくれます。初めての人でも迷わず使えるので、Laravel学習では必ず覚えておきたい操作です。
php artisan make:controller HelloController
このコマンドを実行すると、Laravelが必要なフォルダに自動でファイルを作成し、app/Http/Controllers/HelloController.php というコントローラが生成されます。「どこにファイルを置けばいいの?」と悩む必要がないのが大きなメリットです。
作成されたファイルの中身は次のようなシンプルなクラス構造になっており、自分でメソッドを追加して使っていきます。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
// ここに自分の処理を書く
}
このように artisan を使えば、Laravelでコントローラを作る準備があっという間に整います。慣れてくると、コントローラ作成は開発の最初に行う基本ステップとして自然に身につくようになります。
4. コントローラの中身を編集してみよう
作成されたコントローラは、そのままでは何も処理を行いません。ここに自分の動かしたい処理を追加していくのが、Laravelで画面表示やデータ処理を行う第一歩です。まずはエディターでファイルを開き、メソッド(関数)を1つ作ってみましょう。メソッドは「この処理を呼び出してね」という命令のまとまりです。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index()
{
$text = 'こんにちは、世界! 初めてのコントローラ編集です。';
return $text;
}
}
この例ではindexというメソッドを作り、変数$textにメッセージを入れて返しています。とても簡単ですが、「コントローラのメソッドが呼ばれ → 文字が返される」という基本の流れが理解できます。
プログラミング未経験の方は「メソッドって何だろう?」と思うかもしれませんが、イメージとしては「特定の仕事をまとめた箱」のようなものです。必要に応じていくつでも追加できますし、アプリが複雑になるほど役立ちます。まずはこのようなシンプルな形で、コントローラに処理を追加する感覚をつかんでみてください。
5. ルーティングと連携してみる
次に、routes/web.phpにルートを追加して、先ほどのコントローラを呼び出します:
use App\Http\Controllers\HelloController;
Route::get('/hello', [HelloController::class, 'index']);
この書き方は、「/hello」にアクセスしたときに、HelloControllerのindexメソッドを実行する、という意味です。
6. ブラウザで確認してみよう
Laravelの開発サーバー(php artisan serve)を起動し、ブラウザで次のURLにアクセスします:
http://127.0.0.1:8000/hello
こんにちは、世界!
コントローラを使って表示できれば成功です!
7. よくある間違いと対処方法
- namespaceの書き間違い → クラスの先頭にある
namespace App\Http\Controllers;が正しいか確認 - マルチバイト文字化け → 日本語を返すときは、ファイルの文字コードがUTF‑8か確認
- artisan実行忘れ → コントローラを作った後に
php artisan serveが動いていないと反映されないことも
8. コントローラとビューのつなぎ方(例)
ビュー(画面表示)を使いたい場合は、コントローラからview()を呼び出します。
public function index()
{
return view('hello.index');
}
この場合、resources/views/hello/index.blade.phpというファイルを作って、HTMLを書きます。
<h1>こんにちは、Bladeビュー!</h1>
このように、コントローラとビューをつなげてWebページを作っていきます。
まとめ
この記事では、Laravelでコントローラを作成する方法とMVC構造の基本を学びました。MVC構造とはモデル(データの処理)、ビュー(画面表示)、コントローラ(モデルとビューをつなぐ仲介役)の三つの役割に分かれています。コントローラを作ることで、処理の整理や機能追加が簡単になり、複数人での開発もスムーズになります。Laravelではartisanコマンドを使うことで、簡単にコントローラを自動生成できます。また、作成したコントローラにメソッドを追加して、文字列やビューを返すことができます。
コントローラ作成の手順まとめ
- artisanコマンドでコントローラを作成(php artisan make:controller HelloController)
- 作成されたコントローラにメソッドを追加して処理を記述
- ルーティングファイルにルートを追加してコントローラを呼び出す
- ブラウザでアクセスして動作確認
- ビューと連携させる場合は、view()関数を使ってBladeテンプレートを呼び出す
サンプルプログラム例
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index()
{
return view('hello.index'); // ビューと連携
}
}
<h1>こんにちは、Bladeビュー!</h1>
このサンプルでは、コントローラのindexメソッドからBladeビューを呼び出し、ブラウザに「こんにちは、Bladeビュー!」と表示しています。これにより、コントローラとビューの役割分担が明確になり、今後のWebアプリ開発での拡張や管理が容易になります。
生徒
「先生、今回でコントローラの作り方やMVC構造がよくわかりました!artisanコマンドで簡単に作れるのも便利ですね。」
先生
「そうですね。コントローラを使うことで、処理と表示を分けられるので、コードが整理され、あとから機能を増やすときにも効率的です。」
生徒
「ルーティングやビューとの連携もやってみて、Webページが正しく表示されるのを見ると嬉しいです!」
先生
「その感覚が大事です。コントローラ、モデル、ビューの役割を理解して、少しずつ機能を追加していけば、自分だけの本格的なLaravelアプリが作れるようになりますよ。」
生徒
「これからは、ログイン機能やデータ保存機能もコントローラを通して作れるんですね!学んだことを早速練習してみます。」
先生
「はい、その通りです。まずは小さな画面表示やメソッド追加から始めて、徐々に本格的なアプリを作っていきましょう。」