はじめに
こちらはアドベントカレンダーの記事です🎄🎄
研修課題として生のPHPで蔵書管理アプリを作ったときに、
AIと一緒に盛大に詰んだ話と、そこからの学びを書いてます。
ガチな技術解説というより、
未経験者がどこで詰まり、どのように立て直したかを振り返った内容です。
私のスペック
エンジニアという響きのカッコ良さに惹かれて飛び込んだ無謀な人間です。
「HTML4使えます!え…今ってHTML5なんすか…?」そんな肌感です。
研修の一環で、Udemyを使ってPHPやデータベース(DB)の基礎を一通り学習しました。
動画を見ながらコードを書き写し、「あー、完全に理解したわ(分かってない)」という状態で意気揚々と次の課題に取り組みました。
課題内容(要件)
研修課題は 蔵書管理アプリ の作成。
Laravelなどのフレームワークは使用禁止。
「生のPHP(Vanilla PHP)」で書くことが条件です。
蔵書管理機能要件
- マイページ
- 書籍ページTOP
- 書籍検索フォーム
- 書籍一覧表示
- 削除リンク
- 登録ページへのリンクなどなど
DB構成(booksテーブル)
id,title,author,star,created,updated
いわゆる CRUD(Create, Read, Update, Delete) をすべて実装する王道の課題(らしい)です。
※研修課題には会員管理(ログイン/ユーザー管理)も含まれていましたが、
本記事では 自分が特に詰まった蔵書管理部分 を中心に書いています。
すべてを忘れた。
要件を読んで、さあやろう!と真っ白なテキストエディタを前にした瞬間
「……ん???私は何をするんだ…????」
…いわゆる記憶喪失でしょうか。
HTML?PHP?SQL?
ファイルはどう分ける?
何をどうしたらいいか分からない。
研修資料やAIに相談すると、
どこからともなく返ってくる言葉。
「まずはモックを作りましょう」とのことだった。
(モック?)
「???…あ、Udemyで習ったやつかな!」と作ったのがこのチャートです。

※ここで言うモックとは「処理を考えずに、画面の見た目だけをHTMLで作ったもの」です。
AIからは「これは画面(モック)ではなく設計図ですね😅」と言われましたが、
当時の私は**「処理の流れが分かってれば作れるっしょ!」**
と、なぜか反抗して実装を開始。
起きたこと①:思考停止
チャートには
「登録→ログイン→TOPページ」
みたいな流れは書いてあります。
でも…
- ここはHTML?PHP?
- DB処理はどこ?
- これはどのファイル?
と疑問ばかりが増えていきました。
何から手を付けるべきか分からず、
考えること自体が止まってしまった状態でした。
起きたこと②:とりあえず全部書こうとして破綻
とりあえず index.php を作って、ばばーっと全部そこに書こうとします。
<?php
// 一覧表示
〜〜〜
// 登録処理
〜〜〜
// 削除処理
「あとで整理すればいいだろう」と思っていましたが、
→処理が混ざって把握できない
→どこでエラーが出ているか分からない
→修正しようとすると別の場所が壊れる
結果的に、
状況を改善するどころか、余計に分からなくなってしまいました。
AIに指摘された「本当の問題」
限界を迎えて、AIにこう聞きました。
「何が何やら分からん助けて。」
すると返ってきたのが、
「今は、設計・画面・DB・PHPを同時に考えていますね。まずは画面(モック)だけ作りましょう。」
という指摘でした。
フローチャートは
「何をするか」は書いてあるけど
「どこに書くか」は教えてくれない。
ここでやっとAIの言うことを聞き始める
観念して、カラフルに仕上げた自信作のチャートを泣く泣く捨て、
HTMLにとりかかります。
- ボタンを置く
- フォームを置く
- 押したら別ページに飛ぶ
- 処理は一切書かない
正直、この時点では
「これ作って何になるん?」と思っていました。
見えてきたのは「正解」じゃなく「順番」
HTMLだけを書いていると、ふと気づきます。
- DBのことを考えていない
- PHPも考えていない
- 画面で何をしたいかだけ考えている
そして画面ができた瞬間、こう思いました。
- 「この画面、title と author が要るな」
- 「一覧表示は SELECT だな」
- 「登録ボタンは INSERT だな」
役割が自然に分離して見えるようになりました。
とはいえ分からん。
じゃあ次に何を書けばいいかは全然分かっていません。
SELECT だな、とは思う
INSERT だな、とも思う
でも、どのファイルに?
どの順番で?
まず何から書く?が分からない。
頭の中はだいたいこんな感じです。
「SELECTってどこに書くんだっけ…」
「HTMLの下?別ファイル?」
「そもそもDB接続どこでやるの?」
迷う → AIに聞く、を無限ループ
ひたすらAIに頼るターン
ここから先は、
一歩進むたびにAIに聞くフェーズに入りました。
たとえば、
「この画面、PHPファイルでいい?」
AI「はい。表示用のPHPファイルで大丈夫です」
「このフォーム、actionはどこ向ければいい?」
AI「処理専用のPHPファイルを作ると分かりやすいです」
こうしたやり取りを、
画面が真っ白になったり、DBにつながらなかったりするたびに
何度も繰り返しました。
そのたびにAIから返ってくるのは、だいたい同じ指摘でした。
「今は、画面と処理を同時に書いています」
「まずは画面だけ表示できるか確認しましょう」
この時点ではまだ気づいていませんでしたが、
AIはずっと「今やるべきこと」だけを教えてくれていました。
何度も聞いているうちに、少しずつ基準が見えてきます。
- 今は画面が出ればOK
- 今はDBに触らなくていい
- 今は処理が動かなくてもいい
逆に、画面も出ていないのにSQLを書く、
認証ができていないのに更新処理を書く。
これは「今やることじゃない」。
ようやく、
「全部一気にやらなくていい」
という感覚が、ここで腹落ちしました。
学び:AIは「順番」を教えてくれていた
正直、最初に反抗してよかったとも思っています。
なぜなら、
- なぜダメだったのか
- なぜ順番が大事なのか
- なぜモックが必要なのか
を体感できたからです。
AIは最初っから私を導こうとしてくれてたんですね。
でも、一度失敗したからこそ、その意味が分かりました。
この記事で伝えたかったこと
- 画面・処理・DBは同時に考えない
- モックは「見た目」だけでいい
- 分からないときは「今やるべき順番」を切り分ける
- AIは答えよりも「迷っている点の言語化」に使う
おわりに
今でも <?php を書けと言われたら記憶喪失になります。
でも「詰んだときにどう立て直すか」だけは、
AIと一緒に学べた気がします。