>_tech-draft
Mastra AIのアイコン
Mastra AI
動画公開日
タイトル

MCP or CLI: Why Not Both? - Jan Peer Stöcklmair, Sentry

再生時間

16分 20秒

Sentry CLIの進化:RustからTypeScriptへ、開発体験を変革する新「Sentry」コマンドラインツールの全貌

ポイント

  • SentryのCLIがRustからTypeScriptへ完全に移行し、新「Sentry」コマンドラインツールとして刷新されたことを解説します。
  • LLMを活用した新しい`Sentry init`コマンドにより、開発環境に応じた最適なSentryの初期設定が対話的に行えるようになります。
  • この進化により、ウェブUIに匹敵する「第二のUI」がCLI上で実現され、開発者はSentry機能をより効率的かつ直感的に操作できるようになります。

はじめに:AIエージェントの潮流とCLIの必要性

2022年11月のChatGPT登場以来、AIエージェントは技術業界で大きな話題となり、その進化は目覚ましいものがあります。2024年11月にはMC Peakと呼ばれるエージェントが登場し、さらなる熱狂を巻き起こしました。しかし、登場からわずか1年後には「MC Peakは死んだ」という声が聞かれるようになり、CLIの方が優れていると主張する人も現れました。

私たちSentryにも「Sentry MC Peak」というものが存在し、これもまた「死んだ」のでしょうか?

答えは「ノー」です。Sentry MC Peakは日々改善され、ユーザーに愛用されています。そして、Sentry MC Peakのバージョン2も間もなく登場する予定です。しかし、MC PeakサーバーがLLM(大規模言語モデル)の入力を受け取り、処理し、LLMへ出力を返すという設計は、本来LLMによる利用を想定していました。そのため、これをユーザーやプログラムから直接利用しようとすると、使いにくいという課題がありました。ここで、より直接的な操作を可能にするコマンドラインインターフェース(CLI)の重要性が浮上するのです。

旧Sentry CLIの歴史と限界

SentryのCLIは、AIエージェントがまだ存在していなかった2015年に開発されました。当時の主要な機能は以下の通りです。

  • リリース管理
  • ソースマップのアップロード
  • デバッグ情報ファイルのアップロード
  • イベントの送信

これらの機能は、Sentryを機能させるために必要不可欠なものでした。特にソースマップのアップロードは、ビルド時に一度設定すれば、その後はほとんど手を加える必要がないため、非常に便利でした。これにより、ミニファイされたJavaScriptコードのエラーをSentry上で元のコードとして読み取ることができ、デバッグ作業が格段に向上しました。

しかし、当時のCLIにはいくつかの限界がありました。

  • プロジェクト設定の複雑さ: Pythonのような言語では、Sentry SDKをインポートして初期化するだけで簡単にセットアップできました。しかし、JavaScriptエコシステムでは、Next.jsやReact Routerのような多様なフレームワーク、Node.js、Bun、Deno、ブラウザといった異なるランタイム、そしてコードを最適化するためのバンドラーが存在するため、手動での設定は非常に手間がかかりました。エラーがSentryに送信されても、ソースマップがなければ読みにくいスタックトレースとなってしまいます。
  • 「第二のUI」としての機能不足: 当時のCLIは、ウェブUIのように動作するツールとしては設計されていませんでした。
  • エージェントの作成機能なし: 2015年にはエージェントという概念自体が存在しなかったため、この機能は含まれていませんでした。
  • APIの直接利用不可: CLIからSentry APIを直接利用することはできませんでした。

Sentry Wizardの登場と、それでも残る課題

プロジェクトのセットアップにおける複雑さを解消するため、Sentry Wizardが登場しました。これは、Sentry CLIのセットアップを支援する別のCLIで、ユーザーの環境を上から下までスキャンし、必要な機能を選択させることで、セットアッププロセスをガイドしました。これにより、プロジェクトの初期設定にはSentry CLIとSentry Wizardの2つのCLIが使われることになりました。

Wizardはセットアップを助けましたが、それでもすべての機能を網羅しているわけではなく、開発体験としてはまだ改善の余地がありました。

新Sentry CLIへの変革の動機

従来のSentry CLIはRustで書かれており、バイナリファイルとして提供されていました。これはCI/CDパイプラインやローカル環境での実行には適していましたが、コード内でSDKとして利用するには、バイナリの実行が必要となり、複雑さが増しました。私たちは常に、GitHubのghコマンドや1Passwordのopコマンドのように、「第二のUI」として機能するCLIの実現を目指していました。

新「Sentry」コマンドラインツールの誕生

そして今、私たちはこの目標を達成しました。これまでの「Sentry CLI」という名称は「Sentry」へと変更され、よりクリーンで直感的なものになりました。内部的には、従来のRustで書かれたコードベースは、TypeScriptレイヤーを介して完全にTypeScriptで書き直されました

この抜本的な変更により、以下の機能が実現されました。

  1. TypeScriptへの完全な移行: コードベース全体がRustからTypeScriptに移行されました。これにより、開発の柔軟性とメンテナンス性が向上しました。

  2. Sentry initコマンドによる初期設定の革命: Sentry Wizardの機能が新しいSentryコマンドに統合されました。Sentry initコマンドは、LLM(大規模言語モデル)の助けを借りてコードベースを初期化します。すべてのコードベースは異なるため、LLMがその違いを理解し、最適な設定を提案することで、より良い初期設定が可能になります。

    • 機能の仕組み: ローカルで実行されるSentryコマンドがSentryサーバーと通信し、LLMの機能を利用します。これにより、以下のことが可能になります。

      • プラットフォームの自動検出
      • Sentryドキュメントに基づいた最新の機能選択
      • コードモディフィケーション(コード変換)の計画と適用
    • 設定体験の例: Sentry initと入力すると、ダッシュボードが表示され、進行中のタスクやステップ(例:機能選択)が確認できます。左側には、セッションリプレイ、トレーシング、ログ、プロファイリング、ユーザーフィードバックなどの機能を選択するプロンプトが表示されます。バックエンドサービスの場合、セッションリプレイやユーザーフィードバックは不要となるなど、プラットフォームに応じて適切な機能が選択肢として提示されます。

    • 迅速な評価と情報提供: 初期化プロセスは非常に高速で、すべてが正しく機能しているかを確認するための評価が行われます。最終的には、プラットフォーム、プログラミング言語、参照されたドキュメントなど、設定に関するすべての情報が提供され、背後で何が起こっているかを常に把握できます。

CLIを「第二のUI」へ

私たちは、単に複数のCLIを一つに統合しただけでなく、CLIが「第二のUI」として機能するという究極の目標を達成しました。Sentry製品が持つあらゆる機能を、この新しい「Sentry」コマンドラインツールに詰め込むことで、ウェブブラウザにアクセスすることなく、CLIから直接多くの操作を行えるようになりました。これにより、開発者はよりスムーズで効率的なワークフローを構築できるようになります。

まとめ

SentryのCLIは、RustからTypeScriptへの完全な書き換えを経て、「Sentry」という単一の強力なツールとして生まれ変わりました。この進化は、単なる技術スタックの変更に留まらず、LLMを活用したインテリジェントな初期設定機能「Sentry init」の提供、そしてウェブUIに匹敵する「第二のUI」としての機能を実現しました。

これにより、Sentryは開発者の皆様に、より直感的で、効率的で、そしてパワフルな開発体験を提供できるようになりました。今後のSentryのさらなる進化にご期待ください。

参考動画

https://www.youtube.com/watch?v=Tm4uT-anXd0