SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【最新Laravelアップデート解説】Laravelの変更点まとめ

AIで進化するLaravel開発の世界――BoostとLaravel AI SDK

【最新Laravelアップデート解説】Laravelの変更点まとめ 第1回

新規プロジェクトでのBoostの利用

 前節で紹介したBoostは、新規プロジェクトでももちろん利用できます。

新しいスタータキットでは標準装備

 早速新しいプロジェクトにBoostを組み込んで、AIエージェントにひとつ機能を実装させてみようと思います。新規に作成したプロジェクトに対してBoostを組み込む方法は、前節で紹介した手順と同じです、と言いたいところなのですが、実は、より簡単です。

 拙記事で紹介したように、Laravelのバージョン12で新しいスタータキットが導入されました。

 このスタータキットも進化を続けており、現在では図5のように、プロジェクト作成ウィザードの質問項目でBoostを含めるかどうかを聞かれます。この質問でYesを選択すると、自動的にBoostが含まれたプロジェクトが作成されます。その後は、先述の通りに、Boost利用の設定を行います。

図5:Boostを含めるかどうかの質問
図5:Boostを含めるかどうかの質問

作業はAIエージェントへの指示のみ

 プロジェクトの準備が整えば、あとは、AIエージェントに対して指示を出すだけです。

 例えば、図5で作成したfirst-boostプロジェクトに対して、Gemini CLIを利用して、「カクテルをリスト表示する画面を追加してください。」と指示したとします。すると、作業を始め、途中ファイルの追加や変更をしてよいかをたずねるプロンプトが表示されるので許可します。最終的に図6の結果が表示されます。

図6:Geminiによってコーディングが終了したことを告げるメッセージ
図6:Geminiによってコーディングが終了したことを告げるメッセージ

 図6のとおり、追加されたコードは、単にカクテルをリスト表示する画面だけではなく、そのもとデータを管理するデータベーススキーマ(cocktailsテーブル)、作成したテーブルへのダミーデータを挿入するシーダーとファクトリーも作成されています。もちろん、モデルクラスやコントローラークラス、Bladeのビューファイルも作成され、ルーティング登録されています。さらには、テストも作成されており、至れり尽くせりです。

 表示された画面を確認しておきます。図6のメッセージの最後にあるURLにアクセスすると、図7の画面が表示されます。

図7:Geminiによって追加されたカクテル一覧画面
図7:Geminiによって追加されたカクテル一覧画面

 このように、BoostとAIエージェントを組み合わせると、Laravelのコーディングルールに従ったコードを自動生成してくれます。ある程度の機能を自動生成させ、そこから生成されたコードを、アプリケーションの仕様に合わせて改変していく方法でのアプリケーション作成も可能です。

AIプロンプト利用を自動化できるLaravel AI SDK

 Laravelのバージョン13で新たに導入されたAI関連機能が、Laravel AI SDKです。本稿の最後に、このLaravel AI SDKを紹介します。

Laravel AI SDKとは

 前節までで紹介してきたBoostは、プログラマーがAIエージェントを利用して、Laravelプロジェクトに対して適用するものでした。一方、Laravel AI SDKは、Laravelアプリケーションを通してユーザーがAIプロバイダーを利用する機能を、プログラマーが効率よく作成するためのツールです。

 例えば、図8の画面があります。

図8:Geminiとやりとりするための画面
図8:Geminiとやりとりするための画面

 テキストエリアとボタンがそれぞれひとつだけです。このテキストエリアに何かを入力し、ボタンをクリックすると、その内容をAIプロバイダー(この場合Gemini)に送信し、その結果を図9のように下に表示させるような簡単なアプリケーションを考えます。

図9:Geminiからの返信を表示させた画面
図9:Geminiからの返信を表示させた画面

 これは、非常にシンプルな例ですが、Laravelアプリケーションの随所に、AIプロバイダーにその内容を送信し、返ってきた結果をアプリケーション上で利用する機能を組み込みたいとします。そういったAIプロバイダーとのやりとりを、ほぼ自動的に行ってくれるのがLaravel AI SDKです。

 なお、上記サンプルもBoost+Geminiに生成してもらったものです。新たに作成したfirst-aisdkプロジェクトに対してBoostを組み込み、Geminiに「簡単なテキストエリアがある入力画面を作成し、その入力内容をLaravel AI SDKを使ってGeminiにアクセスし、その返答を画面に表示する機能を追加してください。」と指示することで、生成してもらった機能です。

Laravel AI SDK利用準備

 このように、Laravel AI SDKを利用する際もBoost+AIエージェントを利用できます。ただし、事前にLaravel AI SDKの利用準備を行う必要があります。

 まず、作成したプロジェクトに対して、次のコマンドを実行してLaravel AI SDKを追加します。

composer require laravel/ai

 次に、Laravel AI SDKの設定ファイルとマイグレーションファイルを生成します。これは、次のコマンドの実行です。

php artisan vendor:publish --provider="Laravel\Ai\AiServiceProvider"

 最後に、マイグレーションを行います。

php artisan migrate

 このマイグレーションにより、Laravel AI SDKが利用するagent_conversationsテーブルとagent_conversation_messagesテーブルが生成されます。これらのテーブルに、ユーザーとAIプロバイダーとのやりとりが記録されます。

 これで、Laravel AI SDKを利用したコーディング準備が整いましたが、実際にAIプロバイダーをやりとりするためには、AIプロバイダーを利用する許可をアプリケーションに与えないといけません。つまり、APIキーの設定です。

 これは、プロジェクト内の.envファイルへの追記です。追記する環境変数キーは、利用するAIプロバイダーによって変わります。公式サイトのページにキーが掲載されているので、適切なものを追加してください。

 なお、first-aisdkプロジェクトではGeminiを利用するので、.envファイルに追加するのは、リスト1のコードとなります。この「XXXXXXXXXXXX」の部分に各自が取得したAPIキーを記述します。

[リスト1]first-aisdk/.env
GEMINI_API_KEY=XXXXXXXXXXXX

Agentsの作成

 Laravel AI SDKを利用する場合、まず、Agentsクラスを作成する必要があります。Agentsクラスは、AIプロバイダーとやりとりする中心的なクラスであり、AIプロバイダーとのやり取りの手段が全てクラス内に含まれることになります。そのため、やりとりする内容や機能ごとにクラスを作成します。たとえば、first-aisdkプロジェクトでは、AIプロバイダーとのチャット機能ですので、ChatAgentクラスであり、app/Ai/Agents/フォルダーに作成することになっています。

 このAgentクラスを手動で作成する場合は、次のコマンドが便利です。このコマンドによって、自動的にAgent名のファイルがapp/Ai/Agents/フォルダー内に作成されます。

php artisan make:agent Agent名

 ここでChatAgentクラスのコードを見てみると、リスト2のようになっています。

[リスト2]first-aisdk/app/Ai/Agents/ChatAgent.php
<?php
  :
#[Provider(Lab::Gemini)]  // (1)
class ChatAgent implements Agent  // (2)
{
  use Promptable;  // (3) 
  public function instructions(): Stringable|string  // (4)
  {
    return 'You are a helpful assistant.';
  }
}

 Agentクラスは、リスト2の(2)のように、Agentインターフェースを実装して作成します。さらに(3)のように、Promptableトレイトを読み込んでおきます。ここまでがお約束コードといえます。

 その上で(4)のように、instructions()メソッドを実装します。メソッドシグネチャは(4)の通りであり、引数なしで、戻り値は文字列、または、Stringableインスタンスです。

 このメソッドは、やりとりするAIプロバイダー(のLLM)に対して、その役割や性格を定義するためのものです。このメソッドを利用することで、AIに対してどのように振る舞ってほしいかをあらかじめ伝えることができます。リスト2では「優秀なアシスタント」として振る舞う文字列が定義されています(これもBoost+Geminiによる自動生成です)。

 Agentには、最低限(4)のinstructions()メソッドが定義されていれば、機能します。その他に、表1のようなメソッドも定義できます(ここでは紙面の都合上、簡単な紹介に留めておくことをご了承ください)。

表1: Agentクラスのメソッド
メソッド 内容
messages(): iterable 会話コンテキスト(履歴)をAIに伝えるメソッド
tools(): iterable AIが外部機能を呼び出すための機能を提供するメソッド
schema(スキーマを定義したクラス $schema): array AIからの回答の形式を指定するメソッド

 なお、リスト2の(1)に関して補足しておきます。これは、PHPのアトリビュートを利用した記述です。PHPのアトリビュートを利用した記述は、Laravelのバージョン13で導入されたものであり、次回詳しく紹介します。(1)では、その仕組みを利用して、AIプロバイダーとして何を利用するかをProvider()の引数にenum Labで指定しています。(1)の記述の通り、Geminiを利用するようになっています。

Agentとの利用方法

 このように作成したAgentクラスをどのように利用しているかを、ChatControllerクラスのコードから見ていきましょう。必要部分を抜粋すると、リスト3のようになります。

[リスト3]first-aisdk/app/Http/Controllers/ChatController.php
<?php
  :
class ChatController extends Controller
{
  public function store(Request $request)
  {
      :
    $response = (new ChatAgent)->prompt($validated['prompt']);  // (1)
    return back()->with([
        :
      'response' => $response->text,  // (2)
    ]);
  }
}

 リスト3の(1)のコードのように、リスト2で作成したAgentクラスをnewします。そのインスタンスに対して、prompt()メソッドを実行します。メソッドの引数として、AIプロバイダーに渡したいメッセージを指定するだけの非常にシンプルなコードです。たったこれだけで、AIプロバイダーと通信を行い、その結果を取得し、戻り値として返してくれます。あとは(2)のように、この$responseのtextプロパティで取得したデータ本体テキストをビューに送信し、表示するだけです。

 このように、Laravel AI SDKを利用することで、非常に簡単にAIプロバイダーを利用することが可能となります。

 なお、今回は、AIプロバイダーとのやりとりがテキストのみでしたが、他にも画像やファイルなどの生成を指示することも可能です。ただし、全てのプロバイダーがサポートしているわけではありません。公式ドキュメントのページに、どのプロバイダーがどの形式をサポートしているかのデータがあるので、参考にしてください。

まとめ

 Laravelでの変更点を紹介する本連載の第1回は、いかがでしたでしょうか。今回は、バージョン13で導入された新機能として、非常にインパクトのあるAI関連の機能であるLaravel BoostとLaravel AI SDKを紹介しました。

 次回は、Laravelバージョン13で導入されたAI以外の機能を紹介します。

この記事は参考になりましたか?

この記事の著者

WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。HAL大阪の非常勤講師を兼務。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/24265 2026/06/05 09:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング