Fastly Compute 開発の基礎 (4) Fiddle で手軽に動作を確認する

2023/12/08に公開

この記事は Fastly Compute (旧 Compute@Edge) 一人アドベントカレンダー 7 日目の記事です。

これから開発環境を整備して初めてビルドやデプロイをする方向けの手順を紹介するシリーズ(Fastly Compute 開発の基礎)の第四回目です。本稿では Fastly Compute の開発を色々な側面からサポートする開発環境である Fiddle を紹介します。

What's Fiddle?

名前から想像できる方もいらっしゃるかもしれませんが、Fastly Fiddle は JS Fiddle, Codepen, Rust playground といったサービスと同様の感覚でブラウザ上で簡単に Fastly の VCL と Compute を実行し動作確認ができる開発環境です。実際に動かしてみるのが早いと思うので、気になる方はこちらのリンクから動作を試してみてください。

Fiddle での作業は常に公開状態で、非公開にする機能は存在していないため少しでも機密性のある作業には不向きですが、Fastly アカウントを作成する程でもないが少し試してみたいといった状況の人にとても使いやすく、またアイデアベースで考えたことをすぐに他の人と共有できる/しやすいといった特徴があります。

昨年末の Fastly の公式ブログで Fiddle に追加された機能が紹介されていますが、2023 年も継続的に機能追加・アップデートがされており社内外問わず活発に利用されている開発環境となっています。

そんな Fiddle について、本稿では Compute の視点から利用可能な機能や特徴、オススメの使い方などを紹介していきたいと思います。

Fiddle で利用可能な外部パッケージは?

下記ページに一覧が記載されているので参照してください。
https://developer.fastly.com/learning/tools/fiddle/authoring/#dependencies

Rust で利用可能なパッケージが一番多く、Go が一番少ない状態です。SDK が提供開始された時期や、公式サイト上でのサンプルコードの数などと相関していると思われるので、今後対応するパッケージもゆっくりと増えていくのかなと予想しています。

記載されていない外部パッケージは利用できないの?

現時点では依存関係をカスタマイズする機能は提供されていません。

stdout や stderr はどのように扱われるの?

どちらも画面右側の STDIO 欄に出力されます。

Fiddle はどのような仕組みで動いているの?

公式サイトの解説のうち、以下の記載が手掛かりになります。

For Compute fiddles, we use an instrumented instance of our open source local testing server running in a container to execute your fiddle code. This means there is no deployment delay for Compute fiddles, but the behavior you see is a simulation of the live platform, rather than using the real thing. There is a small per-request overhead to running Compute fiddles which is not experienced on live services.

Fiddle が動作している環境は Compute の Production 環境ではなくコンテナ環境で動くシミュレーションであること、またそのシミュレーションは $fastly compute serve で動作するオープンソースのローカルテストサーバーである(つまり Viceroyが動作している)ことなどが説明されています。

仕様上の制限事項は?

昨日の記事で紹介した Viceroy の制限に関する Developer Hub の記載を参照してください。なお、Simple Cache API 等の Cache API については記載通り動作しませんが、Readthrough Cache については Viceroy の動作とは異なり、Fiddle で独自の Cache 機構を実現することで動作がシミュレーションされますのでご注意ください。(※Readthrough Cache 等の Cache 自体の紹介については後日別の記事で紹介を予定していますのでそちらも参照してください)

Fiddle 上で EdgeStorage は使える?

KVStore は利用できませんが、ConfigStore のエミュレーションであれば利用することができます。参考ドキュメント

Fiddle の使い方のコツはある?

最近使っていて便利なことに気づいたのが、Shift+Click で Run ボタンの処理を呼び出せることです。画面左のエディタでコードを修正した後マウスポインタを移動させることなく実行処理を呼び出せるので知っていると便利かもしれません。

まとめ

本稿では開発環境のセットアップ不要で手軽にビルドやデバッグができる Fiddle について紹介しました。明日は SDK の基本的な仕組みについて紹介したいと思います。

Discussion