最後に参考資料Contentfulの新機能Functionsでバックエンド処理をカスタマイズする#Contentful小西諒2024.10.16ベルリンオフィスの小西です。機能を触ってみました。Contentfulカスタマイズ勢としては待ち望んでいた機能ですので、本記事ではその概要とハンズオンを紹介します。FunctionsとはContentfulのインフラストラクチャ上で動作するサーバーレスワークロードです。独自のサーバーを用意することなく、CMSダッシュボードをカスタマイズして機能を拡張することができます。下記のようなことが可能になります。Contentfulで発生するイベント(記事の保存/公開/非公開/...)をフィルタリング、変換、処理する。ようになり、障害点も減らすことができます。いくつか制限があり、重すぎる処理は任せられない点に注意してください。個までハンズオンでは実際にFunctionを作成・デプロイしてみます。今回は試しに「記事が公開されたら自動でタグを付与するバックエンドアプリ」を作成します。先にCMS側で、タグを作成しておきます。Appの新規作成、ビルド、デプロイサンプルアプリケーションを立ち上げます。appevent-handlerアプリを見ると下記の構成になっているかと思います。アプリケーションの設定や権限を定義するマニフェストファイルまずはApp定義を行います。No完了すると、CMSダッシュボードでもAppが確認できるようになります。https://app.contentful.com/account/organizations/{ORG_ID}/apps/いったんビルドしてデプロイしてみましょう。Contenful」に変わっており、ビルドされたコードがContentfulでホストされていることがわかります。※逆に、詳細は後述しますが、デフォルトだとSpace全体に適用されるため、本番Spaceにはいきなり実装しないでください。}};エントリーの公開イベントを受け取り、記事の詳細を取得し、その記事にタグを追加するというシンプルな流れです。情報だけが格納されていたり、構造にまだ一貫性がないようです。ContentfulのPMにフィードバックしたところ、近いスプリント中に整理するとのことでした。上記例ではそのため、エントリーをバックエンド側から一度解決してその中からバージョン情報を取り出して更新処理に利用しています。アプリの設定とインストールイベントによるFunctionの起動を有効化します。Functionとして起動するハンドラーを指定し、トリガーしたいイベント(下記例では「Publish」)にチェックを入れます。その後、デプロイされたアプリをSpaceにインストールします。挙動の確認インストールしたスペースで、適当に記事を作成してPublishしてみます。Tagsのタブに移動すると、無事タグが追加されていました。タグを含むメタデータ更新のためにcmaクライアントを利用しており、contextとして各ユーザーの権限が渡されているためです。デバッグコンソールで実行ログを確認できます。console.logの内容が出力されています。なっており、このままでは不便です。そのため、前段でイベント自体をフィルターする必要が出てきます。上記ハンドラーとは別途、下記のFunctionもAppの一部として登録することができます。することで有効化できます。特定のモデルや条件に絞ってイベントをトリガーしたい時など、appevent.handlerの前段として実行したいフィルター処理を記述できます。TopicについてFunctionをどのイベントでトリガーするかを指定できます。混乱しやすいのが「Save」と「Autosave」イベントの違いです。「Save」をトリガーにして、記事の自動タグ付けを行うFunctionを設定した場合、記事更新が無限に行われるループが発生してしまいます。公式から色々なモックが公開されているため、手始めにこれらをいじってみるのもいいと思います。autotagger最後に記事の拡充、バリデーション、ログ、通知、外部連携など色々な使い道がありそうです。触ってみてまた続報を書こうと思います。