Slack上で承認機能を作ろう！【ワークフロー】

![2019-01_BrandRefresh_slack-brand-refresh_unfurl-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/c59cc107-e927-6111-042f-5dbe26561172.png)

## はじめに
Slackの「**ワークフロー**」という機能を使うと、簡易的な認証機能を作ることができます。

今回はこのワークフローを使用して、**Slackで承認機能を作成する**方法をお伝えしていきます！

ワークフローについてご興味のある方は、公式ドキュメントをご参照ください。

https://slack.com/intl/ja-jp/help/articles/360035692513-ワークフロービルダーガイド

それでは、まず完成イメージです。

## 完成イメージ
**申請者**： 申請を行い、承認をもらいたい人。
**課長**： 申請を受けて承認を行う人。課長が承認を行うと、部長に申請が飛ぶ。
**部長**： 申請を受けて承認を行う人。決済権を持つ。部長が承認を行うと承認フローは終了。

```mermaid
sequenceDiagram
autonumber
    actor 申請者
    actor 課長
    actor 部長
    申請者->>課長: 承認お願いします！
    課長-->>申請者: 承認したよ。
    課長->>部長: 承認お願いします！
    部長->>申請者: 承認したよ。
    note left of 申請者: 課長と部長の承認を得られた！
```

このあと実際に<strong>書籍を購入する際の申請機能</strong>を作ってみます！

どういう動作になるかを先に確認したい方は、[こちら](https://qiita.com/Yazmatto/items/b5fbf09ab5f8a8c0b87b#実際に使ってみた)をご覧ください。

今回の承認フローで実現できること、できないことをまとめると、以下のようになります。


:::note info
実現できること
- **自動で承認フローが進む仕組み**（例：課長の承認 → 部長の承認）
- **オープンな承認フロー**（チャンネルに投稿可能）	
:::


:::note alert
実現できないこと
- **否認機能**（否認するときはチャンネルに手動でメッセージを送信するなど、手間が発生）
- **無料アカウントでのワークフロー作成**
:::


## 承認機能の作り方
ではここから、具体的な承認機能の作り方を記載していきます。

### 1. 「開始」→「ワークフロービルダー」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/a170f8ee-c308-7265-fe17-f23aa15e4c4e.png)

### 2. 「作成」または「ワークフローを作成する」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/fcbef38a-fcfc-76c4-aa7b-6566d53f0e63.png)

### 3. ワークフローにわかりやすい名前をつけ、「次へ」クリック
今回は「承認フロー」という名前にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/03801842-998e-cff8-5de0-ca75df33f589.png)


### 4. ショートカットの「選択する」ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/a9f3117c-60de-f68a-648b-7a1bf28e4d3c.png)

### 5. チャンネルを指定し、「短い名前」を入力して「次へ」クリック
今回は「春のキャンペーン」チャンネルの「承認フロー」という名前にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/88d1b29e-b778-dd19-95af-c611dd4699cd.png)

### 6. 「ステップを追加」クリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/ebde4437-478c-e1bd-ac9b-10fd9ce2cb7e.png)

### 7. 「フォームを送信する」の「追加」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/1a98eadb-ef0e-9a9d-e38a-0836711018f0.png)

### 8. 「タイトル」「質問を追加」を入力、「質問のタイプを選択する」→「長い回答」を選択し、「保存する」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/a2ccdfd4-225d-35e9-bcbd-d0287d9bb28c.png)

### 9. 「ステップを追加」クリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/b424c5c7-ccc1-4fcb-fd93-24ca711a5918.png)

### 10. 「メッセージを送信」の「追加」クリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/8af6823d-ba16-eae5-405a-921478512e9a.png)

### 11. メッセージの送信先：課長、メッセージのテキストを入力し、ボタンメッセージは「承認」

**誰が申請したか**を表示するため、「■申請者」の後ろで「`変数を挿入する`」をクリックし「フォームを提出したメンバー」を指定します。

**申請内容**を表示するため、「■内容」の後ろで「`変数を挿入する`」をクリックし「返信元：「申請内容を入力してください」」を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/a39a0e59-3d5e-3654-1de2-9ec710303286.png)

これで**課長に送信する「承認」ボタンを設置**できます。

### 12. プレビューを確認し、「保存する」クリック
申請者、申請内容、「承認ボタン」を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/aaca0deb-b5a0-59b9-ad55-73cdac463386.png)

### 13. メッセージの送信先：部長、メッセージのテキストを入力し、ボタンメッセージは「承認」

課長へのメッセージと同様、**申請者**と**内容**を記載します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/d3853567-a0c3-f625-5e16-b8602ca7503e.png)

これで**部長に送信する「承認」ボタンを設置**できます！

### 14. プレビューを確認し、「保存する」クリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/a28064a9-d224-8372-e276-2a8486967b63.png)

ここで部長が承認し、**申請が無事承認された**、と判断します。



### 15. メッセージの送信先：ワークフローを開始したチャンネル、メッセージのテキストを入力し「保存」ボタンクリック

承認フローが終了したので、**終了したことがわかるメッセージをチャンネルに送信**します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/1a9277d0-40b4-6601-ceec-823bd21d8c2b.png)

### 16. 完成したワークフローを確認
ここまでで、以下のようなワークフローができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/4c918e53-5c7f-0973-92da-cc629b63f70c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/2e0f924a-3a25-55c9-4927-638985cf7153.png)

### 17. 右上の「変更内容を公開」または「公開する」ボタンクリック

※ 私は途中で「公開する」を押しているので「変更内容を公開」と表示されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/93afaf61-633a-a9cd-5db0-51934ce5beb8.png)

これで、**チャンネル内でワークフローを使用する**ことができるようになります！

## 実際に使ってみた
それでは、完成したワークフローを**実際に使ってみましょう**！

### 1. ワークフローを作成したチャンネルの「＋」をクリック

ワークフローを公開したので、「+」に稲妻マークがついています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/2ee0e2b8-8c64-0302-9315-3d7ca1bc8739.png)

### 2. 「承認フロー」クリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/f7a5e9ed-5ec6-7d59-36fc-08bf55234e54.png)


### 3. 申請内容を入力し、「Submit」をクリック

ここでは、「（架空の）**書籍を購入する申請**」を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/be28cea8-d1d9-d904-74f1-55ba502e092a.png)

### 4. 課長アカウントでログインし、Slackbotからのメッセージを確認
:::note info
ここからは動作確認のため、アカウントを**課長**に切り替えます。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/46737d26-934e-64f8-fd9f-d692abb699f5.png)

### 5. 申請内容を確認し「承認」をクリック

「承認」クリックで、**課長が申請を承認した**ことになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/1446375d-aaa7-ae16-c727-e16295543e6a.png)

これで課長の承認がおりました。

次は**部長の承認**が必要です！

### 6. 部長アカウントでログインし、Slackbotからのメッセージを確認
:::note info
ここからは動作確認のため、アカウントを**部長**に切り替えます。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/d4a00828-7ecd-1637-90ce-138dd1d3778f.png)

### 7. 申請内容を確認し「承認」をクリック

「承認」クリックで、**部長が申請を承認**したことになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/c2e15864-7cee-cb15-5445-c7f367653d95.png)


### 8. 承認されました！というメッセージが表示されれば成功！
これで全ての承認フローが終了し、申請は無事**承認**されました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238817/83e78fdf-3de3-16b5-e74b-84c7020be711.png)

きっと申請者は書籍:notebook_with_decorative_cover:を購入してもらえることでしょう！

めでたしめでたし:relaxed:

## おわりに
今回は**Slackで承認機能を作成する方法**をお伝えしました。

手軽に作成できる代わりに機能は多くないので、厳密に審査が必要な案件などには使えないかもしれません。

カジュアルに承認したい場合などに使うと、とても便利だと思います！

以上、参考になれば幸いです。


https://slack.com/intl/ja-jp/help/articles/360035692513-ワークフロービルダーガイド