Appearance
サンドイッチ・ワークフロー ― なぜ「判断する力」が必要なのか
この章のキーワード
| 用語 | 意味 | なぜ重要か |
|---|---|---|
| Webhook | 外部サービスがあなたのサーバーにHTTPリクエストを送る仕組み | LINE がメッセージイベントを通知する方法 |
| 署名検証 | リクエストが本物の送信者から来たか確認すること | 偽のリクエストを弾くための防御線 |
| HMAC-SHA256 | 共有秘密鍵を使った改竄検知アルゴリズム | 署名検証の具体的な方法 |
| hash_equals() | 文字列を一定時間で比較する PHP 関数 | タイミング攻撃を防ぐ |
| エンドポイント | サーバーがリクエストを受け取る URL | /webhook のようなパス |
あなたも体験してみよう
AI に次のように頼んでみてください。
「LINE Bot の Webhook 受信エンドポイントを Laravel で書いて」
30秒もかからず、動くコードが返ってきます。たとえばこんな感じです。
php
// AI が生成した Webhook エンドポイント(典型例)
Route::post('/webhook', function (Request $request) {
$events = $request->input('events', []);
foreach ($events as $event) {
if ($event['type'] === 'message') {
$userId = $event['source']['userId'];
$text = $event['message']['text'] ?? '';
Http::withHeaders([
'Authorization' => 'Bearer ' . config('line.channel_token'),
])->post('https://api.line.me/v2/bot/message/reply', [
'replyToken' => $event['replyToken'],
'messages' => [
['type' => 'text', 'text' => "受信しました: {$text}"],
],
]);
}
}
return response()->json(['status' => 'ok']);
});動きそうですね。
では問います ― これを本番に入れますか?
AI禁止ゾーン
上の AI 生成コードを本番環境にデプロイすると仮定してください。
- このコードに 問題はありますか? あるなら何が問題ですか?
- 何が足りない と思いますか?
- あなたなら 何を追加 しますか?
3分間、AI に聞かずに考えてみましょう。
AIに聞く前に、自分の頭で考えてみましょう。
テキストを入力すると有効になります
AI 時代の構造的変化
T. Wada 氏は「AI時代のエンジニアリング生存戦略」で、こう指摘しています。
[人間の指示] → [AI の大量生成] → [人間のレビューと判断]
↑ ここがボトルネックこれを サンドイッチ・ワークフロー と呼びます。
- 上のパン: 人間が指示を出す
- 具材: AI がコードを大量生成する
- 下のパン: 人間がレビューし、判断する
AI は 30 秒で「動くコード」を生成できます。しかし、署名検証の有無、タイミング攻撃への耐性、エラー時の挙動 ― これらの 非機能要件を判断する責任 は人間に残されました。
さらに問題なのは、AI の普及によって「教える」機会が減ったことです。かつて中級者は後輩に教える過程で自身の知識を形式知化していました(プロテージュ効果)。AI がその相手を奪った今、判断力は意図的に訓練しなければ育ちません。
この教材の使い方
LIBOT Labs では、各チャプターを次の 5 フェーズで構成しています。
| Phase | 何をするか |
|---|---|
| 1. 観察 | LIBOT の実コードを読む |
| 2. 判断 | 「このコードに問題はあるか?」AI に聞かずに考える |
| 3. 理論 | 判断の根拠となる CS 概念を学ぶ |
| 4. 実践 | AI 生成コードを判断する |
| 5. 深化 | 判断の根拠を他者に説明する |
Phase 2 の「AI 禁止ゾーン」がこの教材の核心です。
自分の頭で判断を形成する時間を確保することが、訓練の前提条件です。 AI に聞けばすぐ答えが出ます。でもそれでは、判断する力は育ちません。