Backstage Notifications – APC 技術ブログ

はじめに

こんにちは、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 優先度。lownormalhighcritical のいずれかを指定します
scopes Notificationのスコープ。同一メッセージかどうかを判断する際に使用するものです
topic Notificationのトピック。どんな内容のものかのグルーピングを指定するものです

scopeは上記の画面イメージには登場していませんが、その他は画面イメージ登場しているので理解できるのではないでしょうか。

詳細は、以下のコードの部分に記載されたものになります。

github.com

Notification 送信方法

Backstage v1.42現在、Notificationの送信は scaffolder機能のActionとして用意されているもののみとなっているようです。

github.com

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もご利用いただけます。

github.com

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に興味があるという方もぜひご連絡をいただけると嬉しいです。

www.ap-com.co.jp

それでは次の機会にまたお会いしましょう。




Source link

関連記事

コメント

この記事へのコメントはありません。