Mastra

Mastra AIエージェントフレームワークの概要と実装手順

ⓘ本ページはプロモーションが含まれています

Contents

スポンサードリンク

1. Mastra の概要と基本アーキテクチャ

このセクションでは、Mastra が提供する主要コンポーネントとそれらがどのように連携して「メッセージ → 応答」のフローを実現するかを概観します。全体像を把握すれば、後続の実装作業で「どこにコードを書けばよいか」が自然に見えてきます。

1‑1. コアコンポーネント

Mastra の核は以下の4つです。各コンポーネントはインタフェースとして定義されており、ユーザー側で自由に実装を差し替えることができます(DI コンテナ対応)。

コンポーネント 役割 主なインターフェイス
Agent LLM と対話するエントリーポイント。handleMessage() が外部から呼び出され、Tool・Memory・Router を協調させる。 Agent.handleMessage(msg: Message): Promise<string>
Tool 外部サービス(GitHub API、データベース、社内システム等)への橋渡しを行うプラグイン。 Tool.run(action: string, params: any): Promise<any>
Memory 会話履歴や取得したデータを永続化/キャッシュする層。標準実装はインメモリ、Redis・DynamoDB などへの切り替えが可能。 Memory.set(key:string, value:any), Memory.get(key:string)
Router ユーザーの意図を解析し、適切な Tool またはサブエージェントへディスパッチする。 Router.route(msg: Message): Promise<RouteResult>

公式ドキュメント(README)でも同様の構成が示されています。

1‑2. データフローの流れ

  1. クライアント が HTTP POST/WebSocket 等で Message を送信
  2. Agent.handleMessage が呼び出され、メッセージを Router.route に委譲
  3. Router は意図判定結果(例:{tool:"GitHubTool", action:"listFiles"})を返す
  4. Tool.run が外部 API を叩き、取得データを Memory に保存
  5. 最終的に LLM へプロンプトを組み立て、生成されたテキストをクライアントへ返却

このシーケンスはすべて非同期(Promise)で処理されるため、スケールアウトやサーバーレス環境でも問題なく動作します。


2. 開発前提条件と安全な環境構築

本章では、Mastra 開発に最低限必要なツールチェーンと、セキュリティ上重要となるシークレット管理のベストプラクティスを紹介します。手順通りに実行すれば「動かない」状態に陥りにくい環境が整います。

2‑1. 推奨ランタイムとパッケージマネージャ

ツール 最低バージョン インストール方法(MacOS / Linux)
Node.js v20.x (LTS) curl -fsSL https://nodejs.org/dist/v20.x/node-v20.x-linux-x64.tar.gz \| tar -xz && sudo mv node-v20.x-linux-x64 /usr/local/
npm 10.x 以上 Node に同梱されているので別途インストール不要
Git 2.40 以上 sudo apt-get install git(Ubuntu)

インストール後は必ずバージョン確認:

2‑2. LLM API キーの取得と .env 管理

Mastra は OpenAIAnthropic(Claude) の両方に対応しています。取得したシークレットは決してリポジトリにコミットしないよう、.gitignore に必ず追記してください。

取得手順(公式ページ)

プラットフォーム 取得 URL
OpenAI https://platform.openai.com/account/api-keys
Anthropic (Claude) https://console.anthropic.com/settings/keys

2‑3. VSCode の開発補助設定

拡張機能 設定例(settings.json
ESLint "editor.codeActionsOnSave": { "source.fixAll.eslint": true }"
Prettier "prettier.singleQuote": true, "prettier.trailingComma": "all"
GitLens デフォルトで有効にしておくとコミット履歴が見やすい

VSCode の設定は公式ドキュメント(VSCode Docs)を参照してください。


3. プロジェクトの作成とシンプルな質問応答エージェント

ここでは、Mastra CLI を用いたプロジェクト雛形生成から、最小構成の質問応答エージェント実装までをステップバイステップで示します。コードはコメント付きで解説し、初心者でも理解できるよう配慮しています。

3‑1. CLI インストールとテンプレート生成

src/agent.ts がエントリーポイントとして自動生成され、以下のような雛形コードが入っています。

3‑2. 質問応答エージェントの実装例

続いて src/index.ts でエージェントを起動します。

起動手順

起動後は以下のようにリクエストできます。

3‑3. デバッグ時に役立つ設定

項目 推奨値
ログレベル MASTRA_LOG_LEVEL=debug.env に追加
ソースマップ tsconfig.json"sourceMap": true を有効化
再起動自動化 nodemonnpm run dev スクリプトを作成(例:nodemon --watch src -e ts --exec "npm start"

4. 実務レベルのサンプル ― GitHub リポジトリ解析エージェント

本章では、Tool, Memory, Router を組み合わせた実践的なサンプルを構築します。GitHub のコードベースを走査し、ファイル一覧や簡易分析結果を返すフローを通じて、Mastra が提供する拡張性と可観測性を体感してください。

4‑1. GitHubTool の実装手順

4‑1‑1. 必要パッケージのインストール

4‑1‑2. Tool インターフェイスに沿ったクラス定義

4‑1‑3. .env にトークンを追加

注意:GitHub のパーソナルアクセストークンは最小権限(repo:read)に絞り、漏洩防止のため必ず .gitignore.env を記載してください。

4‑2. Memory の活用例

4‑3. Router による意図判定とツール選択

ポイント:現在の Mastra 本体には「ハイパーパーソナライズ」機能は実装されていません。将来的に属性ベースのルーティングが追加された場合は、this.context.user にユーザー情報を格納し上記 route メソッドで分岐させる設計が推奨されています。

4‑4. 完全動作サンプルのディレクトリ構成

この構成で npm run build && npm start を実行すると、POST /message に以下のような JSON を送るだけでリポジトリ解析が可能です。


5. テスト・デバッグ・本番デプロイ、そしてコミュニティ参加

実務での信頼性確保とスケーラビリティを考慮し、テスト戦略、ロギングベストプラクティス、主要クラウドへのデプロイ手順をまとめます。

5‑1. ユニットテストとモック

Mastra 用に提供されている @mastra/test-utils パッケージは、Tool の内部 API(例:Octokit)や Memory の永続化処理を簡単にスタブできます。

5‑1‑1. Jest 設定 (jest.config.js)

5‑1‑2. テスト例(GitHubTool のモック)

テスト実行は npm test

5‑2. Structured Logging の推奨フォーマット

フィールド 説明
timestamp ISO8601 形式(例:2026-06-27T12:34:56.789Z
level debug, info, warn, error
requestId 各リクエストに付与する UUID
component Agent, Tool:GithHubTool など
message ログ本文(JSON の文字列化は不要)

実装例

JSON 出力は CloudWatch Logs、Elastic Stack、Datadog 等の外部可観測性プラットフォームでそのまま活用できます。

5‑3. デプロイ先別手順

環境 手順概要
Vercel npm i -g vercel → プロジェクトルートで vercel --prod。環境変数は Vercel ダッシュボードの「Environment Variables」へ登録。
Cloudflare Workers (Wrangler v3) npm i -D wranglernpx wrangler loginwrangler.tomltype = "javascript" とエントリーポイント (src/index.ts) を記述し、npx wrangler publish
Docker Dockerfile(下記参照)でイメージ化し、Kubernetes の Deployment もしくは ECS/Fargate にデプロイ。

Dockerfile 完全例

5‑4. コミュニティと情報入手先

項目 URL
GitHub リポジトリ(コード・Issue) https://github.com/mastra-ai/mastra
ドキュメント(GitHub Pages) https://mastra-ai.github.io/docs/
Discord コミュニティ 招待リンクはリポジトリの README.md に掲載
GitHub Discussions(質問・提案) 同上

定期的に Release NoteRoadmap が公開されるので、機能追加や非推奨情報を見逃さないようにしましょう。


まとめ

  • Mastra は TypeScript 製オープンソースフレームワークで、Agent・Tool・Memory・Router の四大コンポーネントが標準装備されている点が特徴です。
  • 必要なランタイムは Node.js v20 以上、シークレットは .env に安全に格納し、VSCode と ESLint/Prettier の設定で開発体験を向上させます。
  • mastra-cli init で作ったテンプレートに SimpleQAAgent を実装すれば、数分で動く質問応答エージェントが完成します。
  • 実務的なサンプルとして GitHub リポジトリ解析エージェントを構築し、Tool の拡張・Memory のキャッシュ・Router の意図判定を体感できます。
  • テストは Jest と @mastra/test-utils でモック化し、structured logging によって本番環境でも可観測性を確保。Docker、Vercel、Cloudflare Workers へのデプロイ手順も揃っています。
  • 最後に公式リポジトリ・Discord・Discussions を活用し、最新情報とコミュニティサポートを受け取りながら開発を進めてください。

これらのステップを踏むことで、初心者でも安全かつスケーラブルな AI エージェントをゼロから構築し、本番環境へデプロイできるようになります。ぜひ実際に手を動かして、Mastra の可能性を体感してください。

スポンサードリンク

-Mastra