LLaravel Bootcamp

Day 1MVCとリクエストライフサイクル、Laravelを選ぶ理由

なぜフレームワークを使うのか

素のPHPで大規模開発をするときの課題と、フレームワークが解決するものを理解する。

そもそもフレームワークとは何か

フレームワークとは、Webアプリケーションを作るときに「ほぼ毎回必要になる共通の仕組み」を、あらかじめ用意してくれている土台のことです。たとえば「URLに応じて処理を振り分ける」「データベースに接続する」「安全にフォームの値を受け取る」といった作業は、どんなアプリでも必要になります。これらを毎回ゼロから書くのではなく、実績のある共通部品として提供してくれるのがフレームワークです。

PHPは「素のまま」でもWebアプリを書けます。しかし規模が大きくなると、素のPHPだけで書き続けることには深刻な課題が出てきます。まずは、フレームワークを使わないコードがどう破綻していくのかを見てみましょう。

素のPHPの何が問題なのか

素のPHPでは、1つのファイルの中に「URLの判定」「入力値の受け取り」「データベース操作」「HTMLの出力」がすべて混ざりがちです。小さいうちは動きますが、機能が増えるほど、どこに何が書いてあるか分からなくなり、修正が別の場所を壊すようになります。

PHP
<?php
// user.php — 素のPHPでよくある「全部入り」ファイル

$conn = new mysqli("localhost", "root", "pass", "app");

// URLの ?id= を直接SQLに埋め込んでいる(SQLインジェクションの危険)
$id = $_GET["id"];
$result = $conn->query("SELECT * FROM users WHERE id = " . $id);
$user = $result->fetch_assoc();
?>
<html>
<body>
  <!-- ユーザー名をそのまま出力(XSSの危険) -->
  <h1>ようこそ <?php echo $user["name"]; ?> さん</h1>
</body>
</html>
URL判定・DB接続・SQL・HTML出力が1ファイルに同居している例。しかもセキュリティ的に危険。

このコードの危険な点

$_GET の値をそのままSQLに埋め込むとSQLインジェクション、そのままHTMLに出力するとXSSという攻撃を許してしまいます。素のPHPでは開発者が毎回、自力で対策を書かないと安全になりません。

なぜフレームワークを使うのか

フレームワークを使う本質的な理由は「楽をするため」ではなく「アプリを安全に、そしてチームで長く保守できる形に保つため」です。セキュリティ対策や共通処理を各自の自己流に任せると、品質は書いた人の力量に依存してバラバラになります。フレームワークは、安全で保守しやすい書き方を最初から標準として強制することで、この品質のばらつきをなくします。

さらに重要なのが「規約(コンベンション)」です。フレームワークには「こういう処理はこのフォルダに、こういう名前で書く」というルールがあります。これにより、初めてそのプロジェクトを見た人でも「ログイン処理ならこの辺にあるはずだ」と見当をつけられます。これがチーム開発における共通言語になります。

素のPHP(自己流)

人によってファイルの置き場所も命名もバラバラ。DB接続やセキュリティ対策も各自が毎回書く。新メンバーはコードを全部読まないと構造が分からない。

フレームワーク(規約あり)

置き場所と命名がルールで決まっている。DB接続やセキュリティ対策は共通部品が担う。新メンバーも規約を知っていれば即座に構造を把握できる。

  • 共通処理(ルーティング、DB接続、セキュリティ)を毎回書かなくてよい
  • 安全な書き方が標準として強制され、品質のばらつきが減る
  • 規約により、どこに何を書くかがチームで統一される
  • 実績あるコードを土台にするため、車輪の再発明を避けられる

面接ではこう言う

「フレームワークを使う理由は、開発を速くするためだけではありません。セキュリティ対策や共通処理を標準化し、規約でコードの構造を統一することで、チームで長く保守できる品質を担保するためだと考えています」と、保守性とチーム開発の観点で答えると評価されます。

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

フレームワークを使う「最も本質的な」利点として、面接で最も評価されやすい説明はどれか。

Q2

素のPHPで大規模開発を続けると、どんな課題が出るか。具体的に説明してください。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。