ZenChAIne
記事一覧に戻る
TypeScriptのエージェント基盤にMastraを選んだ理由

TypeScriptのエージェント基盤にMastraを選んだ理由

ZenChAIne·
AIエージェントMastraLangGraphTypeScript

いま開発している4つ目の自社エージェント基盤には、Mastra を使うことにしました。既存のコードが TypeScript で書かれていることと、以前に自作した機能の多くを Mastra に任せられることが理由です。

Mastra は、7月に3つ目の基盤を作ったときにも候補に入っていました。そのときは保留しましたが、今回は採用しています。

本番での採用実績や解説記事の数では、LangGraph が先行しています。それでも今回の基盤には Mastra が合うと判断した経緯を書きます。開発連載の第1回です。4つの実装方式の比較は、第0回のAIエージェントの実装方式は4種類あるを参照してください。

自作しないと決めた範囲

ループやワークフローを自作しないことは、比較の前に決めていました。第0回では、その層自体が製品価値になるかを基準に、実装方式を分けています。

今回の商品は、基盤の上に載るサービスです。エージェントのループ(モデルを呼び、ツールを実行し、結果をまたモデルに渡す繰り返し)やワークフローは、既存のフレームワークに任せます。これらの汎用機能を自社で作り、保守し続ける必要はないと考えました。

候補は次の4つです。

候補第0回の方式位置づけ
Mastra方式D(統合フレームワーク)TypeScript のエージェントフレームワーク
LangGraph方式D(統合フレームワーク)Python 版が主力のエージェントフレームワーク
Claude Agent SDK方式B(ベンダー公式 SDK)2つ目の基盤で使った方式
Vercel AI SDK と LLM ゲートウェイの組み合わせ方式C(オープンな部品で自作)3つ目の基盤で使った方式

既存の型定義を共有する

私たちは、入出力の型を zod(TypeScript で型と入力検証を一度に定義するライブラリ)のスキーマで定義し、フロントエンドとエージェント側で共有しています。Python のフレームワークを選ぶと、エージェント側だけ型定義を別に書き、仕様変更を2つの言語で追い続けることになります。今回も TypeScript で組むのは、この二重管理を避けるためです。

既存の型定義や開発の仕組みが Python で書かれているなら、LangGraph は有力な選択肢です。ただ、LangGraph の利用の中心は Python 版にあり、TypeScript 版とは規模が異なります。

2026年10月2日に取得した数字で比べると、次のようになります。

対象GitHub スター直近1か月のダウンロード
LangGraph(Python 版)42,60043,651,931(PyPI)
LangGraph.js(TypeScript 版)3,33214,091,296(npm)
Mastra(@mastra/core)28,4967,054,478(npm)

npm の期間は 2026年9月1日〜30日です。PyPI の値は集計サービス pypistats.org の値で、期間が少しずれます。

スター数では、LangGraph の Python 版は TypeScript 版の約13倍あります。TypeScript どうしで比べると、Mastra のスター数は LangGraph.js の約8.5倍です。

一方で、npm のダウンロード数は LangGraph.js が Mastra の約2倍あります。ただし、npm の langchain パッケージは LangGraph.js に依存しているため、この数には langchain を入れただけの利用も含まれます。npm の統計からは、LangGraph.js を目的に選んで使っている数を切り分けられません。

スター数もダウンロード数も、利用者数そのものではありません。私たちは、これらの数字から TypeScript での候補として Mastra を有力と見ました。

伸び方も判断材料にしました。Mastra は 2026年1月20日に 1.0 を出し、10月時点で 1.74 まで進んでいます。npm の週間ダウンロードは、2026年8月上旬の約134万から、9月末の約215万に増えました。日本語でも、2026年7月に技術評論社から Mastra を主題にした入門書『MastraによるAIエージェント開発・運用[実践入門]』が出ています。

自作機能と Mastra の対応

3つ目の基盤では、モデル切り替え、中断と再開、スキル、会話メモリを自作しました。今回それぞれを Mastra に任せられるか、2026年10月2日に Mastra 1.74.0 に同梱されたドキュメントで確かめました。

機能3つ目の基盤4つ目の基盤
モデル切り替えLLM ゲートウェイの上に自作Mastra に任せる。「プロバイダ名/モデル名」の文字列を渡すと、呼び出し先を切り替える
中断と再開自作Mastra に任せる。ワークフローが実行状態を保存して止まり、人の入力を受け取って続きから動く
スキルとサブエージェント自作Mastra に任せる。リクエストごとに渡すスキルを決める関数を書ける
会話メモリと検索自作Mastra に任せる。会話履歴とベクトル検索を Postgres に置く
処理の分岐の判断(比較対象外)Mastra に任せる。TypeSafe AI が2026年9月に公開した、文章を書かずに判断だけを返す AI モデル Jev を、分岐の判定役として標準で組み込める
利用量の記録コスト計測と監査ログを自作自作する
製品固有の機能(比較対象外)自作する

自作に残るのは、利用量の記録と、製品の機能そのものにあたる部分だけです。利用量の記録とは、モデルを呼び出すたびに使ったトークン数(モデルが処理した文字量の単位)を1行ずつデータベースに保存する処理で、原価の切り分けや請求の根拠は後から復元できないため、初日から自分のコードで持ちます。

7月の保留と今回の採用

3つ目の基盤でも、2026年7月にループの実装方式を比較し、記録を残していました。そのときは Vercel AI SDK を採り、Mastra は「長時間の承認待ちや再開が増えたら候補にする」と保留しています。

当時は、ループの外側の責務をすべて自分のコードで持ちたかったからです。実行計画、ツール実行前の許可判定、実行状態の保存、監査ログ、コスト計測、予算超過時の停止がそれにあたります。この責務を全部持ったまま Mastra を入れると、Mastra のワークフローやメモリと役割が重なるため、採る理由がありませんでした。

今回は当面の利用者が限られるため、予算や権限のゲートと承認フローは当面作らないことにしました。実行管理のうち自分のコードで持つのは、利用量の記録です。7月に役割が重なっていたワークフローやメモリは、Mastra に任せられます。中断と再開も、危険度の高い操作を実行前に止めて人に回す処理として、最初の版から使います。

開発と保守の体制

OSS の採用では、利用規模に加えて、誰が開発を続けているかも確認します。個人が一人で保守している OSS は、作者の都合で更新が止まることがあるからです。

Mastra の場合、GitHub でコードを提供した開発者(コントリビューター)は 467 人(2026年10月2日時点)です。開発元は React のフレームワーク Gatsby を作ったチームが創業した Mastra 社で、Y Combinator などから累計3,500万ドルの資金を調達しています。

次回は、Mastra を使って基盤の骨格を実装する過程を書きます。

ZenChAIne では、技術選定とその判断の記録づくりを、技術顧問として支援しています。フレームワークの選定や自作する範囲については、技術顧問・開発支援からご相談ください。

参考ソース