はじめに
前回、こちらのブログではCloud Automator(以下CA)チームの社内週報の取り組みについて、背景や内容を紹介しました。 今回は、その社内週報の運用の方法や使用している技術について紹介します。
社内週報の運用イメージ
社内週報は以下の流れで運用を行います。
- (月曜日~金曜日の昼)CAチームで週報に開発内容や雑談を記載する
- (金曜日の夕方)記載された週報を社内に展開する
したがって、前者で記載した内容を手を加えることなくそのまま後者の作業を可能にすることが、運用を続けていく上で負荷軽減になります。
ツールの選定(Slackポスト)
サーバーワークスでは社内のコミュニケーションツールにSlackを使用しています。したがって、Slack上で内容を読めるようにすることで、読んで頂きやすくなると考えました。 内容は数十行に及ぶことが想定されたため読みやすく、また、前述の通り書いたものをそのまま読める形で展開する必要があります。それらを実現するため、チーム内でディスカッションした結果、Slackのポストを利用することにしました。
Slackのポストは以下が可能です(残念ながら画像の貼付には現状対応していませんでした)。
- 共同編集
- 複数チャンネルへのShare
- Markdown装飾
- 絵文字の利用
上記機能を利用し、以下図のようなイメージで運用することにしました。 まずサービス開発チームのチャンネルでポスト上に展開した週報を共同編集し、全員記載が完了したらgeneralチャンネル(社員全員が参加しているチャンネル)に共有します。このようにすることで、記載した内容を編集したり別の媒体にコピーすることなく、編集と共有をシームレスに行うことができます。
前回記事のサンプルの内容をSlackのポストに書き起こすと以下のようなイメージになります。
週報準備(Slackポスト作成)の自動化
上記の通り、Slackのポストを利用することとしましたが、毎週同じテンプレートを元にその週のポストを作成するのは面倒なので、スクリプトを作成して準備部分を自動化することにしましたので、その内容を簡単に紹介します。
環境
- 言語:Ruby 2.6
- ライブラリ:slack-ruby-client
- 実行環境:AWS Lambda
事前準備
Slack APIを利用するためのTokenを生成/取得します。
今回、Tokenのタイプは user
を用いました。
Tokenの利用にあたっては事前にPermissionを設定しますが、今回は以下のPermissionが必要です。
- channels:read
- files:write:user
- pins:write
ポストの作成
まず、他のメンバーでも編集可能なポストを作成し、サービス開発チャンネルに共有します。 スクリプトの簡単なサンプルは以下の通りとなります。
Slack.configure do |config|
config.token = 'xxxxx'
end
client = Slack::Web::Client.new
content = <<'EOS'
[週報のテンプレート]
EOS
response = client.files_upload(
channels: '[Channel Name]',
as_user: true,
content: content,
title: '[Ttile]',
filetype: 'post',
editable: true,
initial_comment: '[Comment]'
)
チャンネルにピン止め
次にチャンネルに作成したポストをピン止めし、その週のどこかでいつでも週報を書きやすいようにしておきます。
file_id = response['file']['id']
client.pins_add(
channel: '[Channel ID]',
file: file_id
)
運用
以上のコードをAWS Lambdaで動作するようにしておき、CloudWatch Eventsで毎週月曜の朝に実行されるようにしています。
おわりに
今回、CAの社内週報をSlackのポストで実施している取り組みを紹介しました。
CAハンズオンについて
ところでCAでは定期的にハンズオンセミナーを開催しております。今後も開催を予定しておりますので、是非チェックしてみてください!