より少ないコードでより多くをエッジで実現 : expressly のご紹介

Compute@Edge が馴染みのあるフレームワークと同様の方法で使用できるようになりました。Fastly は先日、Compute@Edge 上で動作する JavaScript アプリケーション用の軽量でシンプルなルーティングレイヤー、expressly をリリースしました。これは、広く普及している Node.js のフレームワーク、Express から着想を得て開発されたものです。

Compute@Edge は基盤となるプラットフォームであるため、開発者はライブラリを使用して好みの言語で迅速にイテレーションを実行できます。例えば同僚の Kailan は先日、Rust Edge Side Includes 向けのライブラリを作成して同様のことを行いました。

expressly によって、Compute@Edge で JavaScript を使ってより簡単に構築することが可能になり、開発者はビジネスロジックに専念できるようになりました。expressly は、以下を含む便利な機能を豊富に備えています。

より少ないコードでより多くを実現

私たち開発者にとって、大量のコードを削除するほど嬉しいことはありません。expressly を使用して Fastly の Developer Hub のコードサンプルをいくつか書き換えているうちに、喜びがこみ上げてきました。

expressly を使用して Compute@Edge アプリケーションを構築するイメージを掴んでいただけるように、次の要件に沿ってアプリケーションシナリオを考案しました。 

  1. /base64/[something] へのリクエスト

    1. URL パスのセグメントを読み込む

    2. 読み込んだセグメントを Cookie に書き込む

    3. デコードしてレスポンスボディに格納する

    4. デコードが失敗した場合は500のステータスコードを返し、レスポンスボディにエラーメッセージを含める

  2. /status/[anything] へのすべてのリクエストをオリジンサーバーに転送する 

  3. その他の場合は、状況に応じて405 (Method Not Allowed) のレスポンス、または404 (Not Found) のレスポンスを送信する 

expressly を使用せずにこのシナリオを実装する方法を見てみましょう。

次に、同じアプリケーションロジックで、expressly を使用した場合の例を見てみましょう。

こちらの方がスマートですよね。expressly のルートマッチャー、ビルトインのパスパラメーターパーサー、デフォルトのエラー処理ミドルウェアによって、想定した複雑なシナリオの実装がよりシンプルになります。ぜひご自身で試してみてください。undefined

expressly使用するには

Node.js と JavaScript の Compute@Edge サービスをまだセットアップしていない場合は、セットアップから開始します。

expresslyインストール

npm レジストリから expressly をインストールします。

npm i @fastly/expressly

初めての expressly アプリケーション

Compute@Edge アプリケーションの src/index.js の内容を次のように変更します。

import { Router } from "@fastly/expressly";
const router = new Router();
router.get("/", async (req, res) => {
return res.send("Hello world!");
});
router.listen();

実際に試してみる

アプリケーションをローカルで起動します。

fastly compute serve

これにより、http://localhost:7676 でサービスが開始されます。

準備はできましたか

@fastly/expressly@1.0.0-alpha.x は現在、開発テスト用に提供されています。Fastly は今後も expressly使用したコードサンプルを集めて、Developer Hub でご紹介していきます。発想を広げるためにぜひ参考にしてください。

実際に試してみたい場合は、このブログ記事の2番目の fiddle のクローンを作成し、Fastly のアカウントを作成せずにご自身のオリジンサーバーでテストしてください。完全なグローバルサービスを公開する準備ができたら、Compute@Edge の無料トライアルに登録してください。すぐに expressly の使用を開始できます。

Dora Militaru
Developer Relations Engineer
投稿日

この記事は3分で読めます

興味がおありですか?
エキスパートへのお問い合わせ
この投稿を共有する
Dora Militaru
Developer Relations Engineer

Fastly で Developer Relations Engineer を務める Dora は、グローバル規模のニュースサイトの開発者として経験を積みました。また、データ保護やサイト信頼性エンジニアリングを担当するチームを統率した経験を通じて、開発者に対する思いやりの精神を育んできました。ロンドンのキッチンの片隅から、開発者がより高速かつ安全で信頼性の高い Web を構築できるよう支援しています。

Fastly試してみませんか ?

アカウントを作成してすぐにご利用いただけます。また、いつでもお気軽にお問い合わせください。