
はじめに
こんにちは、ACS事業部亀崎です。
開発者ポータル Backstage は非常に活発に開発が進められているプロジェクトです。
2025年8月には v1.42.0 がリリースされました。
リリースノートには記載されなかったのですが、実はこのバージョンから Backstageの create-app コマンドで生成されるソースコードに
Notification機能が最初から組み込まれるようになりました。
Notification機能はだいぶ前(たしか2024年中頃)にはPluginが公開されていたので、
v1.42のリリースノートには明記されなかったのだと思いますが、コミュニティでは
「リリースノートにも記載したほうが良かったね」と言われるほど、Notification機能の初期組み込みが歓迎されています。
こうした声もあってか、Notificationについて記載したドキュメントには以下のようなNOTEが追記されています。

ということで、今回はそんなBackstageのNotification機能をご紹介したいと思います。
Backstage Notification機能とは
Notificationとはその名の通り、Backstage上でメッセージを通知する機能です。
通知先は「全員に通知」と「Backstage上のユーザーやグループを選択して通知の2通りがあります。
メッセージは個人ごとに、「既読」「保存」といったステータスを管理することができます。
また、現在はメールやSlackといったシステムに連携する拡張Pluginも用意されているので、Backstageの通知を外部にも送信することができます。
説明はこれくらいにして実際の画面をみていきましょう。
メッセージ通知画面
Notification一覧画面
Notification一覧画面はNotification機能の中心的存在です。ここでメッセージの一覧を表示します。

左側のオプションに「未読」「既読」、重要度、送信時期(過去24時間、過去1週間、期間指定なし)、重要度、トピック別といったフィルタが用意されているので、自分が確認したいものを絞り込むこともできます。
また、メッセージには関連リンク先というものが設定されていることがあります。リンク付きのメッセージの場合、タイトルにリンクが設定されます。
下の例では「優先度低」というのがメッセージのタイトルになっていますが、この部分がリンクになっており、必要に応じてクリックしてリンク先に遷移し、詳細を確認することもできます。

さらに、メッセージを受信したときのトースト表示機能もあります。自分宛てのメッセージを受信すると、下のようなトーストが画面右下に表示されます。

サイドメニューのNotificationの部分には未読件数も表示されます。トースト機能や未読件数表示で、通知に気づかなかったということも防止されるかと思います。

Notificationで送信できる内容
続いてNotificationで送信できる内容の概要をご紹介します。
Backstage v1.42 時点では以下の内容をNotificationに指定することができます。
| 項目 | 概要 |
|---|---|
| recipients | 送信先タイプ。 broadcast または entity を指定します。entity を指定した場合は次のentityRefs に具体的な送信先を指定します。 |
| entityRefs | 送信先ユーザー・グループのentity名称 |
| title | Notificationのタイトル |
| info | Notificaiton本文 |
| link | Notificationに関連するリンク先URL |
| severity | 優先度。low 、 normal 、 high 、 critical のいずれかを指定します |
| scopes | Notificationのスコープ。同一メッセージかどうかを判断する際に使用するものです |
| topic | Notificationのトピック。どんな内容のものかのグルーピングを指定するものです |
scopeは上記の画面イメージには登場していませんが、その他は画面イメージ登場しているので理解できるのではないでしょうか。
詳細は、以下のコードの部分に記載されたものになります。
Notification 送信方法
Backstage v1.42現在、Notificationの送信は scaffolder機能のActionとして用意されているもののみとなっているようです。
create-app をした際に作成される Scaffolder Templateのサンプルに、Notification actionが追加されています。
- id: notify
name: Notify
action: notification:send
input:
recipients: entity
entityRefs:
- user:default/guest
title: 'Template executed'
info: 'Your template has been executed'
severity: 'normal'
ただ、このままだと検証などもしにくいと思いますので、私のほうでNotificationだけを送信するScaffolder templateを作成してみました。
apiVersion: scaffolder.backstage.io/v1beta3 kind: Template metadata: name: notify-template title: Send message description: メッセージを送信します。 spec: owner: group:guests type: service parameters: - title: Choose notification type properties: notificationType: title: Notification Type description: '送信する通知の種類を選択してください。' type: string enum: - broadcast - entity enumNames: - '全利用者宛' - '指定ユーザー/グループ宛' dependencies: notificationType: allOf: - if: properties: notificationType: const: entity then: properties: entities: title: Entities description: 'メッセージの送信先となるユーザー/グループ' type: array items: type: string ui:field: MultiEntityPicker ui:options: catalogFilter: kind: - User - Group allowArbitraryValues: false required: - entities - title: Message description: 送信するメッセージの内容を指定してください。 required: - messageTitle - messageBody - topic - severity properties: messageTitle: title: Message title description: 'メッセージのタイトル' type: string ui:autofocus: true messageBody: title: Message body description: 'メッセージ本文' type: string link: title: Message link description: 'メッセージに関連するリンク' type: string topic: title: Topic description: 'メッセージのトピック' type: string enum: - 'general' - 'notification' - 'maintenance' - 'information' severity: title: Severity description: 'メッセージの重要度' type: string default: normal enum: - low - normal - high - critical enumNames: - '低' - '通常' - '高' - '重大' steps: - id: send-notification name: Send notification action: notification:send input: recipients: ${{ parameters.notificationType }} entityRefs: ${{ parameters.entities if parameters.notificationType == 'entity' else undefined }} title: ${{ parameters.messageTitle }} info: ${{ parameters.messageBody }} link: ${{ parameters.link }} topic: ${{ parameters.topic }} severity: ${{ parameters.severity }} optional: true
トピックに関しては、使用上どんな文字も入力可能ですが、一覧画面でグルーピングをする際にある程度のまとまりになるように、以下の4つから選択するようにしています。
- 'general'
- 'notification'
- 'maintenance'
- 'information'
なお、こちらの内容は、簡単にBackstageをお試しいただける「ちょこっとBackstage」のリポジトリに置いてありますので、以下のリンクをご利用のBackstageで取り込んでいただければすぐにNotificationもご利用いただけます。
Notificationの使い所
Notificationをどこで利用するか、を考えてみましょう。
一例としては、Scaffolderでリポジトリを新規作成した場合などになります。これが Backstageのサンプルテンプレートのイメージになります。せっかく作成したリポジトリの存在をぜひ同じチームのメンバーにも知ってほしいのではないでしょうか。そこで、Scaffolderでリポジトリ作成後、Notificationのactionを使って作成リポジトリの名称やそのリンクをNotification機能で通知するとよいと思います。
このほか、何かしらのイベント通知もあるかと思います。開発イベント(勉強会等)をNotificationを通じて全員に通知するといった使い方もあるかと思います。
さらに、独自の機能を作るということも考えられると思います。例えばGitHub Advanced Securityの脆弱性検知の通知を、Backstage Notificationでも通知するといったことも可能になると考えています。GitHub だけではなく、ほかのサービスからのAlert通知などを受信してBackstage Notificationとして送信し、担当者が通知に気づけるようにするといったことも可能になると思います。
弊社でも現在こうした独自の通知機能を検討しております。
使い方は他にもいろいろあると思います。ぜひ皆さんもBackstage Notificationをご活用いただければと思います。
最後に
Backstageには他にも開発者の認知負荷を低減する様々な機能が存在します。その効果も使い方次第でより大きくなります。
ご興味のある方がいらっしゃいましたらぜひ弊社までご連絡ください。よろしくお願いします。
www.ap-com.co.jp
www.ap-com.co.jp
また、弊社では開発者ポータルBackstageのマネージドサービスである「PlaTT」も提供しております。
Backstageに興味があるという方もぜひご連絡をいただけると嬉しいです。
それでは次の機会にまたお会いしましょう。
コメント