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

Ship 26 NYC - Workshop - Mini-workers

再生時間

38分 16秒

Notion WorkersとVercel Sandboxで実現する安全なコード実行環境

ポイント

  • Notion Workersは、ユーザーがNotionの機能をカスタムコードで拡張し、インフラ管理不要でデータ同期やAI自動化などを実現するSDKとランタイムです。
  • 信頼できないユーザーコードを安全に実行するためには、データアクセス制限、ユーザー分離、公平なリソース共有といった複雑なセキュリティ課題があります。
  • Notionはこれらの課題をVercel Sandboxに任せることで、Notion Workersの安全なコード実行環境を構築し、製品のコア機能開発に注力できています。

こんにちは、Notionのソフトウェアエンジニア、Jonathan Clemです。私は開発者プラットフォームに携わっており、特に「Notion Workers」という新しい製品に注力しています。本日は、Notion Workersの概要と、なぜVercel Sandboxを使用して構築したのかをご紹介します。

Notion Workersとは?

Notion Workersは、カスタムコードを記述してNotionを拡張できるSDKとランタイムです。これにより、ユーザーは次のようなことが可能になります。

  • サードパーティデータをNotionに同期する
  • AIエージェント向けのカスタムツールコールを作成する
  • 食料品の注文やスマートホームの制御など、ユニークな自動化を実現する
  • ITやセキュリティ分野における複雑なワークフローを構築する

Notion Workersの最大の利点は、ユーザーがインフラストラクチャを管理する必要がない点です。コードを記述するだけで、Notionがそのコードが常に利用可能で実行されていることを保証します。これにより、Notionが公式な連携機能を開発するのを待つことなく、ユーザー自身がNotionの機能を自由に拡張できるようになりました。

Notion Workers開発における課題:安全なコード実行環境の構築

Notion Workersの開発に着手した際、私が最も懸念したのは「安全性」でした。私はGitHub Actionsのような、信頼できないユーザーコードを実行するプラットフォームの構築経験があり、インフラ構築の難しさ、特に安全性について深く認識していました。

セキュリティとリソース共有の重要性

ユーザーコードを実行するプラットフォームでは、多くの懸念事項に対処する必要があります。

  1. データへのアクセス制限: ユーザーが記述したコードが、本来アクセスすべきではないNotionデータベースやサービスに触れないようにすること。
  2. ユーザー間の分離: あるユーザーのコードが、他のユーザーのコードやシークレットにアクセスできないようにすること。
  3. 公平なリソース共有: 1人のユーザーが大量のCPUやメモリを消費した場合でも、それが他のユーザーの体験に不公平な影響を与えないようにすること。

リソース共有は特に厄介な問題です。例えば、GitHub Actionsを構築していた際にも経験しましたが、任意のコード実行プラットフォームが成功すると、すぐに暗号通貨マイニングに悪用しようとする人々が現れます。単にCPU使用率が100%に張り付いているかどうかで検出できると思われがちですが、実際はそうではありません。悪質なユーザーは、システムにフラグが立たないように、CPU命令の実行方法を巧みに変更し、あたかも無害なアクティビティであるかのように見せかける手法を取るため、検出は非常に困難です。これを適切に対処するには、長年の経験と、多層的なセキュリティおよび可観測性の仕組みが必要です。

さらに、コード実行プラットフォームでは、サービス妨害(DoS)攻撃やボットネットのコマンド&コントロールネットワークとして利用されるリスクも考慮しなければなりません。Notion Workersでは、これらの懸念すべてに最初から対処するのではなく、ユーザーに愛される製品を届けるという、私たち自身が好きなことに集中したいと考えていました。

Vercel Sandboxの採用理由

上記の理由から、私たちはVercel Sandboxの利用を決定しました。Vercel Sandboxは、これらの問題を解決するための非常に堅牢なインフラストラクチャを、すぐに利用できる形で提供してくれたからです。これにより、Notionは複雑なセキュリティやインフラの管理に煩わされることなく、Notion Workersのコア機能開発に集中することができました。

Notion Workersのデモンストレーション

Notion Workersの機能を理解していただくために、簡単なデモをご紹介します。動画内では、カスタムエージェントが「このワークショップは呪われているか?」を判断するために、水星逆行を調べるWorkerを呼び出す例が示されました。これは、水星が逆行しているかどうかを教えてくれるAPIを使用する、単一のカスタムツールコールを持つWorkerです。

もう一つのデモでは、Vercel SandboxとVercelのBlobストレージサービスを使用して、ユーザー定義のツールを呼び出せるストリーミングチャットエージェントを構築する様子が紹介されました。エージェントは「hi」というメッセージに対して「say hello」ツールを呼び出して応答したり、「1+1は?」のような通常の質問にストリーミングで応答したりできます。さらに、建物の住所と滞在時間、行きたい場所(歴史的建造物)、歩きたくない距離などを伝え、最適な場所を提案するような、より複雑なWorkerの呼び出しも可能です。

この構築に使用されたコードは、make-notion-vercel-ship-2026-workersというリポジトリで公開されています。

まとめ

Notion Workersは、ユーザーがNotionの機能を自由に拡張できる強力なツールです。そして、その基盤を支えるVercel Sandboxは、信頼できないユーザーコードを安全かつ効率的に実行するための堅牢な環境を提供しています。これにより、Notionはセキュリティやインフラ管理の複雑さに煩わされることなく、ユーザー体験の向上に集中できるのです。Vercel Sandboxは、私たちのユーザーがNotionをさらに活用するための無限の可能性を秘めています。

参考動画