こんにちは、Reikaです。
私は現在、アプレンティスの5期生として日々勉強に励んでいます。
アプレンティスの課題としてLaravelの学習に取り組みました。
今回はこの経験を通じて学んだことについて、記述していきます。
簡単に自己紹介
- 2023年12月〜独学でプログラミングの勉強を始める
- 2024年4月〜内定直結型エンジニア学習プログラム「アプレンティス」に参加
- 地方在住26歳社会人4年目。マインドミニマリスト。植物、テレビドラマ、コーヒーが好きです
- 趣味でYouTube投稿をしています。現職やなぜエンジニアを目指すようになったのか?は以下の動画をぜひご覧ください!^^
目次
1.Laravelとは?
2.MVCモデルについて
1.Laravelとは?
まずは Laravelって何? というところからです。
Laravelは、ウェブ開発のための PHPフレームワークです。
簡単に言えば、ウェブサイトやウェブアプリケーションを作る際の お道具セット みたいなものです。
例えば、ウェブサイトは複数のページで構成されていますよね?
最初にホームのページがあり、ログインするためにアドレスとパスワードを入力するページがあり、記事を作成するページがあり。
それぞれのページがどのURLに対応するかを決めるのが 「ルーティングシステム」(後に詳しく説明します) です。
Laravelでは、URLとページを結びつける作業を簡単に行うことができます。
また、ウェブサイトでは情報を保存するためにデータベースを使います。
Laravelでは、データベースを操作するのがとても簡単で、例えば、ユーザーが入力した情報を保存したり、表示するための方法がわかりやすく提供されています。
つまり、Laravelを使えば、ウェブサイトやウェブアプリケーションを作るための基本的な道具が揃っています!
2.MVCモデルについて
LaravelではMVCモデルを使って作られています。
MVCモデルとは、
M「Model(モデル)」
V「View(ビュー)」
C「Controller(コントローラ)」 をそれぞれ意味しています。
この3つに加えて ルーター を使って処理が実行されます。これを 「ルーティングシステム」 と言います。
(いらすとやさん、めちゃくちゃお世話になってます。)
Model(モデル)
モデルはデータベースとの連携を担当します。
データベースにデータを保存したり、データベースからデータを取得したりします。
Laravelでは、モデルは通常Eloquent ORMを使用して、簡単かつ直感的にデータベース操作を行います。
例:todosテーブルに入ったレコードを全て取得して、ビューに表示する
class TodoController extends Controller
{
public function index()
{
// todosテーブルに入っているレコードを全て取得し、$todos変数に代入する
$todos = Todo::all();
// 取得したTODOをビューに渡して表示する
return view('todos.index', ['todos' => $todos]);
}
この例では、Todoモデルを使用してtodosテーブルの全てのレコードを取得しています。
取得したデータは$todos変数に格納され、その後ビューに渡されます。
ビューでは、このデータを使ってTODOリストを表示します。
View(ビュー)
ビューはユーザーが直接目にする部分で、ブラウザに表示される内容を担当します。
Laravelでは、ビューを Bladeというテンプレートエンジン を使って作成します。
そのため、ビューのファイル拡張子はすべて .blade.php となります。
テンプレートエンジンとは、通常のHTMLコードに 変数や制御構文 を埋め込むことができるものです。
例:TODOリストを表示するBladeテンプレート
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{{ asset('css/todos.css') }}">
<title>ToDo一覧</title>
</head>
<body>
<div class="container">
<h1>Todo List</h1>
<a class="new-task" href="/todos/new">タスクを追加する</a>
<table>
<thead>
<tr>
<th>タスク</th>
<th>アクション</th>
</tr>
</thead>
<tbody>
@foreach($todos as $todo)
<tr>
<td>{{ $todo->title }}</td>
<td>
<a class="edit" href="{{ route('todos.edit', $todo->id) }}">編集</a>
<a class="delete" href="#" onclick="return confirmDelete('{{ $todo->id }}')">削除</a>
<form id="delete-form-{{ $todo->id }}" action="{{ route('todos.destroy', $todo->id) }}" method="POST" style="display: none;">
@csrf
@method('DELETE')
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<script>
function confirmDelete(id) {
if (confirm('本当に削除しますか?')) {
document.getElementById('delete-form-' + id).submit();
}
return false;
}
</script>
</body>
</html>
Controller(コントローラー)
コントローラーは、ルーターから受け取ったユーザーのリクエストを実際の処理に変換する役割を担います。
具体的には、モデルを介してデータベースとやり取りしたり、設定ファイルを読み込んだり、さまざまなコンポーネントと連携します。
最終的に、ユーザーのリクエストに応じた適切なレスポンスを返します。
例:新しいTODOタスクを作成するためのフォームを表示する
public function create()
{
return view('todos.create');
}
この例では、create メソッドが todos.create ビューを返しています。
つまり、このメソッドは新しいTODOタスクを作成するためのフォームを含むビューを表示します。
ルーター
最後に、ルーターは、ユーザーのリクエストをどのコントローラーのどのメソッドで処理するかを割り振る役割を担います。
具体的には、HTTPリクエスト(GET、POSTなど)とURLパターンを指定し、それに応じて適切なコントローラーメソッドを呼び出します。
ルート設定の書き方:
Route::HTTPメソッド('URL', [コントローラー::class, 'メソッド'])->name('ルート名');
例:新しいTODOタスクを作成するフォームを表示するためのルート
Route::get('/todos/create', [TodoController::class, 'create'])->name('todos.create');
- Route::get は、GETリクエストに対するルートを定義します。
- '/todos/create' は、ユーザーがアクセスするURLパスです。
- [TodoController::class, 'create'] は、このリクエストを処理するコントローラーとメソッドを指定しています。この場合、TodoController の create メソッドが呼び出されます。
- ->name('todos.create') は、このルートに名前を付けています。この名前は、ルートを参照するときに便利です。
まとめ
いかがでしたでしょうか?
Laravelは自転車に乗れるようになった人(PHPやMySQLに慣れた人)が電動自転車(Laravel)に乗れるようになるくらい、作業を効率化し、便利なものだと感じました。
最初は学ぶことが多いと感じるかもしれませんが、その奥深さゆえに学び甲斐があります。
私も日々新しい発見をしながら学習を進めています。
最後まで読んでいただき、ありがとうございました!