さて、4年以上が経ち、私が所属するチームがデイリースクラムにDiscourseをどのように活用しているか、その様子を少しご紹介します。
組織的な背景
- さまざまなオープンソース・イニシアチブを「外部クライアント」として手掛けるプロジェクトチームですが、大規模な組織内に位置しています。
- その大規模な組織には、ドキュメント管理、プロジェクト管理、チャット(Slack)など独自のプロプライエタリツールが存在し、過去にはオープンソースツールへの移行や組織内の業務を公に共有することに消極的でした。
- このチームの業務は、(a) 大規模な組織の報告基準を満たしつつ、(b) 一般公開される必要があるという、両方の要件を満たさなければなりません。
技術的な環境
- チームの業務を一般や他の外部関係者と連携させるためのDiscourseフォーラム。
- 誰でも閲覧可能だが、チームメンバーのみが投稿可能なプロジェクト管理専用カテゴリ。
- その下に「Daily Standups」というサブカテゴリを設け、これもチームメンバーのみが投稿可能とし、トピックを23時間後に自動クローズする設定にしています。
@discobotの名前を変更し、このカテゴリへのアクセス権を確保しました。
(現時点での)解決策
- 既存のDiscourseプラグインや利用可能なオープンソースツールでは不十分だったため、仕方なくZapierを自動化ツールとして利用しています。
- 月曜日から金曜日まで、Zapierが毎日指定された時間に、ボットユーザーとして「Daily Standups」サブカテゴリに新しいトピックを作成します。トピックのタイトルには当日の日付を含めます。
- Zapierは、各スクラム参加者の勤務開始時刻頃にSlackのリマインダーを送信します(SlackにはスヌーズやDismiss機能があります)。これには、その日のスクラムトピックへのURLリンクが含まれます。
- Zapierはそのカテゴリへの投稿を監視し、ボットからの投稿、トピックの最初の投稿、および自動クローズによるトリガーを除外します。投稿内容はZapierの機能を使って大幅に書き換えられ、Slackチャンネルに投稿されます。これは他のチームメンバーが使用するフォーマットに倣いつつ、Slackメッセージの1行目(自動生成された日付)に投稿へのリンクを追加する形式です。Chat Integration Pluginは追加のメタデータが多すぎて騒がしく、このチャンネルの他のユーザーを煩わせたため、この対応が必要でした。
- 後日、手動でEvents Pluginに日付を追加し、スクラムレポートをメインの
/calendarページに他の活動と一緒に表示されるようにしています。 - Chat Integration Pluginが、対象のSlackワークスペース内の他の場所で同じスクラムを二度表示しないよう、このStandupカテゴリを除外(ミュート)設定にしています。
Discourseへの要望リスト
将来的にZapierを使わずに済むようになるために実現してほしい機能:
- テンプレート化された変数(日付など)を用いた自動投稿の定期スケジュール機能。
- Chat Integration Plugin:メールテンプレートのように、各チャンネルに送信されるメッセージのテンプレートを編集できる機能。
- Assign:トピックへの複数の担当者を設定可能にすること、カテゴリごとにリマインダー間隔を設定可能にすること、API経由または上記の自動作成テンプレートの一部としてアサインを設定可能にすること。