[業務効率化]Slackのワークフロービルダーで質問フォームを作成

## 概要

Slackは、多くの会社でコミュニケーションツールとして活用されており、勤怠連絡や設計・開発での質問、雑談など多くのシーンで利用されます。
その中で同じような質問をすることは多く、その際に質問のフォーマットを考える時間が多少なりとも発生します。

今回は、そういった時間の削減が期待できるSlackの[ワークフロービルダー](https://slack.com/intl/ja-jp/help/articles/360035692513-%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%83%93%E3%83%AB%E3%83%80%E3%83%BC%E3%82%AC%E3%82%A4%E3%83%89)を利用し、汎用的に使える質問用テンプレートを作成していきます。

:::note warn
ワークフロービルダーを利用するには有料プランである必要があります。
:::

## ワークフロービルダーについて

ワークフロービルダーは、日々行う定型作業をワークフロー化し、業務効率化を図るためのツールになります。

### ユースケース

主に、以下のようなケースで効果を発揮します。

- 会社の担当者への備品注文依頼
- システム開発での質問
- 毎日の進捗報告連絡
- スラックチャンネルにメンバーがjoinした際のウェルカムメッセージ
- 特定のスラック絵文字を使用すると、絵文字毎に設定されたメッセージをチャンネルに投稿

### ワークフロー作成

ワークフローは、以下の要素から構成されます。

| 要素 | 概要 | 備考 |
|:----------|:------------------------|:------------------------|
| トリガー | ワークフローを開始するイベント。<br>選択肢は以下から選択<br>・ショートカット<br>・チャンネルの新しいメンバー<br>・絵文字リアクション<br>・スケジュール<br>・Webhook | 詳細は[トリガー](#トリガー)を参照 |
| ステップ | ユーザがワークフローを操作する方法。<br>選択肢は以下から選択<br>・メッセージを送信<br>・フォームを送信する<br>・スラックアプリ | 選択肢は[ステップ](#ステップ)を参照 |
| 変数 | ワークフローに送信される情報。<br>変数として以下などが利用できる<br>・メンバーやチャンネルの名前<br>・ワークフロー実行日時<br>・前ステップで入力された情報 | フォームで入力された値などを引き継いで利用できる |
| コラボレーター | ワークフローの管理者権限を持つメンバー。<br>コラボレーターはワークフローの編集や削除、公開停止などを行うことが出来る | デフォルトでは、ワークフロー作成者がコラボレーターとなるが追加可能 |



### トリガー

トリガーには以下から選択できます。

| 名前 | 概要 | 利用シーン例 |
|:----------|:------------------------|:------------------------|
| ショートカット | ワークフローを作成したチャンネルでメンバーがショートカットをクリックした場合に起動 | 書籍購入フォーム |
| チャンネルの新しいメンバー | メンバーがワークフローを作成したチャンネルに参加した場合に起動 | ウェルカムメッセージ |
| 絵文字リアクション | ワークフローを作成したチャンネルでメンバーが特定の絵文字を押した場合に起動 | Bot、何かの多数決を取る場合の集計 |
| スケジュール | 毎日などの特定の頻度で起動するワークフロー | 毎日の進捗報告連絡 |
| Webhook | SlackのWebhookURLにリクエストすると起動 | 任意のアプリやサービスとの連携 |


### ステップ

ステップは以下から選択できます。

- メッセージを送信
  - ユーザが任意の内容で作成したメッセージを送信
  - クリックすると後続ステップを実行するボタンの作成も可能
- フォームを送信する
  - 入力フォームを作成し、後続ステップに送信
  - 後続ステップを作成しないで、チャンネルに送信することも可能
- スラックアプリ
  - GoogleスプレッドシートなどのSlackと連携可能なアプリに送信

## 質問フォームを作成してみる

では、実際に作成してみます。
今回は、以下のように動作する`ショートカット`のワークフローを作成します。

1. ショートカットで`質問フォーム`をクリック
2. クリックすると`質問テンプレート`が開く
 2-1. フォームに質問内容を入力 
 2-2. `Submit`をクリック
3. 2-1で選択した`投稿チャンネル`に入力した質問が送信される

### 1. ワークフローの作成

まず、ワークフローを作成します。

左上のワークスペースメニューから`ツール > ワークフロービルダー`をクリックします。
<img width="400" alt="1.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/98dac917-8da2-99d4-1b7a-a30dcbda10d0.png">

作成するワークフローに名前を付けます。名前を入力したら`次へ`をクリックします。
<img width="400" alt="2.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/37648749-a947-fdd4-c175-b17548f64e2e.png">

ワークフローのトリガーを選択します。今回は`ショートカット`を選択します。
<img width="400" alt="3.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/1a1d7910-d807-789c-c954-8dfb63729c54.png">

最後に、ショートカットを作成するチャンネルとショートカット名を入力し、`次へ`をクリックすると空のワークフローが作成されます。

:::note warn
この時点ではワークフローはまだ公開されていません
:::


<img width="400" alt="4.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/dafb551c-4d78-0b60-86f8-c697b9cae5ca.png">

### 2. ステップの追加

空のワークフローが作成されましたがこの状態では何も行われませんので、ステップを追加していきます。
`ステップを追加`をクリックします。
<img width="400" alt="5.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/ac5bbc49-4f72-86ad-8e5b-ecb845e313f0.png">


#### 2-1. フォームの作成

`フォームを送信する`の`追加`をクリックします。
<img width="400" alt="6.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/ca5531d3-a00f-01f4-2e66-92a1eaab1aa6.png">


各フォームのタイプは、以下が用意されています。
| 名前 | 概要 |
|:----------|:------------------------|
| 短い回答 | 自由に入力できる短いテキスト |
| 長い回答 | 自由に入力できる長いテキスト |
| 一覧から選択 | 自由に作成できるリスト |
| メンバーを選択 | Slackメンバーのリスト |
| チャンネルまたはDMを選択 | Slackチャンネルまたはメンバーのリスト |

今回は、以下のフォームを用意します。

| 質問名 | 概要 | タイプ | 入力必須/任意 |
|:----------|:------------------------|:------------------------|:------------------------|
| 投稿チャンネル | 質問を投稿するチャンネル | チャンネルまたはDMを選択 | 必須 |
| 回答希望者1-to～3-to | メンション(to) | メンバーを選択 | 任意 |
| 回答希望者1-cc～3-cc | メンション(cc) | メンバーを選択 | 任意 |
| 回答希望日(特になし/今日中/xx月xx日まで) | いつまでに回答してほしいか | 短い回答 | 必須 |
| 分類 | どういった分類の質問か<br>ex.詳細設計、開発など | 一覧から選択 | 必須 |
| 質問内容 | 具体的な質問内容 | 長い回答 | 必須 |
| 資料(設計書やチケットのURLなど) | 質問に関連する資料 | 短い回答 | 任意 |

<img width="400" alt="7.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/3b3adb32-5bea-32c0-1eee-bc69aa784cf7.png">

入力が完了したら`保存する`をクリックすることで、ステップが保存されます。
<img width="400" alt="8.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/600834d4-f983-b4b2-6b9a-5e352ca13acb.png">


#### 2-2. メッセージの送信

次に、入力されたフォームの内容をチャンネルにメッセージ送信するステップを作成します。
`メッセージを送信`の`追加`をクリックします。

<img width="400" alt="10-1.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/78cfe97e-b388-275e-8ac5-1d29403d03db.png">

送信するメッセージを作成します。


- メッセージの送信先：${投稿チャンネル}
- メッセージ本文
※変数を${xxx}として記載しています。

```
${回答希望者1-to} ${回答希望者2-to} ${回答希望者3-to} cc: ${回答希望者1-cc} ${回答希望者2-cc} ${回答希望者3-cc}
質問させてください。

回答希望日：${回答希望日}

分類： ${分類}

質問内容： ${質問内容}

資料： ${資料}

以上、ご確認よろしくお願いします。
```

入力が完了したら`保存する`をクリックすることで、ステップが保存されます。
<img width="400" alt="10-2.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/1785a908-b13d-8827-ff8c-2c6b8f9de922.png">


### 3. ワークフローの保存

全てのステップを作成し、`変更内容を公開`をクリックするとワークフローの完成です！！！
<img width="400" alt="10-4.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/874a7808-6604-8661-2295-660b69678d3e.png">

### 4. ワークフローの動作確認

最後に作成したワークフローの動作確認をしていきます。
ショートカットに作成した`質問フォーム`が表示されるようになったので、クリックします。
<img width="400" alt="11-1.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/fa8e144b-2250-ab84-b40d-39ea71318c50.png">

クリックすると、質問フォームが表示されるので必要項目を入力し、`Submit`をクリックします。
<img width="400" alt="11-2.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/215d8af1-4cd7-f21d-6ddb-0518542e2032.png">

指定したチャンネルにメッセージが送信されました。
<img width="400" alt="11-3.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/e3436e2f-2db8-6b9b-347e-79975382d53d.png">

:::note info
ワークフローは、インポートとエクスポートが可能です。
作成したワークフローを他のチャンネルで利用したい場合のコピーもスムーズに行えます。
:::


### おわりに

今回は、Slackのワークフロービルダーを利用して質問フォームを作成してみました。
今回は質問フォームを作成しましたが、他にも書籍購入フォームなどを作成し作業を定形化したり、外部サービスと連携することで業務効率化が図れそうです:smile: