Fastly エッジクラウドプラットフォーム

革新的なデジタルソリューション

ブログに戻る

フォロー&ご登録

Python SDK ベータ版 : AI の言語が Fastly でより高速かつ安全に

Erik Rose

WebAssembly<br />スタッフエンジニア

Ajay Bharadwaj

プロダクトマネージャー, Fastly

Terri Allegretto

シニアマネージャー、プロダクトマーケティング、デベロッパープラットフォーム

バックエンドを Python で書いています。Python で AI エージェントを構築しています。その場合、エッジコードも Python で書くのが理にかなっているのではないでしょうか?Fastly Compute Python SDK のベータ版リリースにより、これが可能になりました! 

Fastly は世界最大級かつ最速で、最も安全なネットワークのひとつです。そのため、増え続ける Python のコードベースに、可能なあらゆるメリットを提供します。初めての AI プロジェクトにバイブコーディングで取り組んでいる場合でも、アクセスコントロールトークンを検証している場合でも、あるいは私たちの想像を超えることを開発している場合でも、この新しい SDK によって、Python コードをユーザーに近いネットワークエッジで実行することが可能になります。しかも、業界をリードするスピードとセキュリティも確保できます。

CPythonの標準実装、標準フレームワーク

最大限の互換性を確保するため、CPython の標準実装をクロスコンパイルして、分離された WebAssembly サンドボックス内で実行できるようにしています。また、パフォーマンスの高い Fastly の HTTP 実装上で標準的な WSGI アプリを動作させるためのアダプターを提供しています。Flask のような一般的な Python の Web フレームワークはもちろん、あまり一般的でないフレームワークを使用している場合でも、WSGI に準拠している限り、コードをほとんど変更することなく Fastly のエッジ環境で実行でき、いつもの Python と変わらない開発体験を維持できます。Pure Python モジュールもそのままで問題なく動作します。

Fastly Compute 上で実行されるシンプルな hello-world Flask アプリケーションは、以下のようになります。

from fastly_compute.wsgi import WsgiHttpIncoming
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "Hello from Python, living on the Fastly edge!"

# The only special line: register the Flask app as the recipient
# of incoming requests, using our WSGI adapter.
HttpIncoming = WsgiHttpIncoming(app)

Python を高速化する方法

Fastly Compute のコンポーネント化に関する Wasm I/O での最近の講演をご覧になった方は、ランタイムの負荷が大きい言語をエッジで適切に動作させるには、高度なエンジニアリング作業が必要であることをご存じかと思います。CPython 特有の起動の遅さを解消し、エンドユーザーに可能な限り高速なパフォーマンスを提供するために、さまざまな技術的工夫を駆使しました

  • メモリスナップショット : 一般的なケースでは、モジュールのトップレベルの処理など、多くの Python コードが起動時に実行され、コールドスタートで大きな遅延が発生します。Fastly はこれを完全にバイパスします。Python にその処理をビルド時に実行させ、その後、メモリの初期化済みスナップショットを作成します。本番環境では、このスナップショットからマイクロ秒単位でインスタンスを生成できるため、ローカルマシン上の通常の Python よりもさらに高速に起動できます。

  • クラウドではなくエッジでデータループを運用 : リアルタイムアプリケーションや AI エージェントでは、「近さ」が重要です。アプリケーションの使用で、ユーザーとの間で一連のネットワーク往復が発生する場合 (たとえばコンテキストを確認してツールを呼び出し、その後シークレットを取得するといった処理)、中央のクラウドサーバーとの往復通信が繰り返されることによってパフォーマンスが低下します。このデータオーケストレーションのループを、ユーザーにより近い Fastly のエッジネットワークで運用することで、レスポンスが高速になり、ユーザー体験も向上します。

Python の安全性を確保する方法

AI をめぐる議論は、ごく短期間で大きく進展しました。先月の PyCon 2026における AI とセキュリティの専用トラックでも見られたように、焦点は単なるプロンプトエンジニアリングから、自律的なエージェントワークフローを本番環境で運用することに移行しています。

これは、大きなエンジニアリング上の課題をもたらします。というのも、Python は非常に動的な言語であるため、従来からサンドボックス化が難しいとされてきたからです。完全に信頼できない LLM 生成コードを実行する場合、それをコアインフラストラクチャの中で動かすことは重大なセキュリティリスクを伴います。一方で、Fastly の分離モデルは、そのようなコードを安全に実行できる完全に保護された環境を提供します。個々のリクエストの実行を、それぞれ独立した一時的な WebAssembly サンドボックスに分離しています。

コードが意図しない動作をした場合、それがミスによるものであっても悪意によるものであっても、影響範囲は当社のネットワークエッジに限定され、お客様の重要なバックエンドインフラストラクチャはまったく影響を受けません。さらに、最近の Copy Fail などの多くのエクスプロイトの攻撃は、カーネル API の公開領域が保護されている Fastly のプラットフォームでは不可能です。一般的なコンテナベースの分離では、このレベルの保護は提供されません。

Fastly で Python の快適さを維持

Fastly では、面倒なクロス言語のラッパーコードを書く必要はありません。WebAssembly Component Model と WIT IDL を活用することで、バックエンドでは高パフォーマンスのネイティブコードと連携しながらも、見た目、使い勝手、動作のすべてが最先端の純粋な Python のように感じられる、型安全性が確保された API を提供しています。

前述の WSGI サポートに加えて、事実上の標準である requests ライブラリと互換性のある実装を提供することで、追加の HTTP リクエストも慣れた方法で高速に実行できるようにしています。この処理は Fastly の最適化されたネットワークスタックで実行されます。以下のようにインポートします…

from fastly_compute import requests

…あとは通常どおり、それを使って HTTP リクエストを実行できます。

現在の注意事項

これはベータ版であり、また Fastly ではセキュリティとスピードを重視しているため、以下の注意事項にご留意ください。

  • ネイティブの ML 計算フレームワークにはまだ対応していません。NumPy や SciPy、Pandas を Fastly の環境で使用するには追加の作業が必要です。Pure Python ロジックと、WASI をサポートするネイティブ拡張は、現時点ですでに利用できます。

  • トップレベルでのインポートが必要です。メモリスナップショットを作成するビルドプロセスが確実に取り込めるようにするには、パッケージが何らかのモジュールのトップレベルでインポートされている必要があります。(サードパーティのコードが内部インポートを使っている場合でも、別の場所のトップレベルでインポートすることで、この問題を回避できます。)

  • ファイルシステムおよびスレッドはサポートされていません。ディスクからテンプレートを読み込んだり、Web リクエスト内で複数スレッドを使用している場合は、コードを修正する必要があります。現時点ではまだ、サンドボックス内で仮想ファイルシステムやその種の並列処理はサポートされていません。

今すぐ開始

Python コードをエッジにデプロイしてみませんか?以下は、その開始方法です。

GitHub リポジトリへのプルリクエストの送信や issue の作成は大歓迎です。うまく動かない Python パッケージ、取り組んでいるプロジェクト、一般公開 (GA) に向けて開発者体験をどのように改善できるかについて、ぜひお知らせください。

始める準備はできましたか?

ぜひご連絡ください