BizDevOpsサービス導入ガイド GitLab + Slack編 

## この記事について
BizDevOpsの考え方と、クラウド版のGitLabとSlackの導入手順をまとめました。
GitLabやSlackを活用することで、チームで協力して成果を高める文化が広がると嬉しいです。

### 対象読者
* GitLabやSlackに興味がある方
* 開発ワークフローを改善したい方
 
### 分かること
* BizDevOpsの考え方を簡単に説明できる。
* クラウド版のGitLabやSlackを、30分で導入できる。 
* 導入手順や連携設定、料金と制約が分かる。

### 目次
1. BizDevOpsとは？  
・イメージ図  
・説明  
2. GitLab導入  
・事前準備  
・サインイン  
・サービス登録  
・プロジェクト作成  
・メンバー追加  
3. Slack導入  
・サインイン  
・チャット作成  
4. GitLab→Slackへの連携設定  
・Slack側：Webhook URLを取得する  
・GitLab側：Webhook URLを設定する  
・GitLab→Slackへの連携確認  
5. 料金と制約  
・無料で使用可能  
・無料版の制約
6. まとめ  
・参考サイト

## 1. BizDevOpsとは？
BizDevOpsとは、ビジネスを成功させるための考え方の１つです。
ビジネスのゴールを、営業（Business）、開発（Development）、運用（Operations）で共有することで、チームで協力しながら、プロダクトやサービスの価値を継続的に高めていきます。プロダクトを迅速、かつ、段階的にリリースすることがポイントです。

言葉で説明しづらかったので、イメージを図にまとめてみました。

### イメージ図
![devops_イメージ図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/a311bbe9-cd19-27e1-ec17-4f242c94c49c.jpeg)

### 説明
図を見てみると、チームでアイデアを生み出す → アイデアをプロダクトというカタチにする → プロダクトをリリースしてサービスを提供する → ユーザーからフィードバックを受ける → 次のアイデアを生み出す... というサイクルが回っています。
サイクルを回し続けることで、プロダクトやサービスが充実していって、価値を高めることができます。また、採算が合わなければ開発を中止することも容易です。

BizDevOpsとは、ビジネスの変化が激しい現代において、ビジネスを成功させるための考え方の１つ、と理解して貰えればOKです。
説明が物足りない方は、[DevOpsとは何か？ そのツールと組織文化、アジャイルとの違い](https://www.buildinsider.net/enterprise/devops/01) をどうぞ。

* GitLab  
DevOpsのサイクルの全体をカバーするアプリです。プロダクトやサービスを提供するために様々な機能があります。
説明すると長いので、機能一覧のアイコン画像を添付します。興味がある方は[DevOpsツールの俯瞰図](https://www.gitlab.jp/devops-tools/)をどうぞ。
![Gitlab_機能.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/0168c4c8-a25f-c1b8-a16a-45c4bc9cc785.png)
* Slack   
コミュニケーションの中核となるアプリです。GitLabの情報を表示するだけでなく、GmailやSalesforce、ZoomやTwitterなど様々なアプリと連携することができます。詳細は[slack apps](https://bizdevopshq.slack.com/apps)を参照下さい。

## 2. GitLab導入
### 事前準備
アカウント登録は楽したいので、既存のGoogleアカウントを使用します。
SlackでもGoogleアカウントを使用できるので、事前に作成しておくことをオススメします。※手順は割愛

### サインイン
GitLabの公式サイトにアクセスして、Googleアカウントでサインインします。
Sign in with「Google」を押下します。
https://gitlab.com/users/sign_in

![Gitlab_login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/db627d84-4a0e-73f1-4132-c416fd6b3717.png)

### サービス登録
GitLabの利用規約とプライバシーポリシーに同意できる場合、「Accept terms」を押下します。
![Gitlab_Accept.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/9a6a3a96-fa61-d2a5-3ffd-2061471e8c25.png)
  
### プロジェクト作成
サンプルプロジェクト「BizDevOps」を作成します。
「Create a project」を押下します。

![Gitlab_PJCreate.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/808d173e-c710-cd90-1056-ceed6f25efc0.png)

Project nameに「BizDevOps」を入力して、「Create a project」を押下します。
非公開プロジェクトであれば、Visibility Levelは「Private」のままで問題ありません。

![Gitlab_PJCreate2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/3af3f6eb-42da-0c02-6335-d14ca2d2b6c6.png)

サンプルプロジェクト「BizDevOps」が出来ました。簡単ですね。
![Gitlab_PJCreate3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/3aaa9710-bbdb-c2c0-9e70-31ff9e282785.png)

UIの日本語化、2要素認証、SSHキー設定などの説明は、割愛します。
以下のサイトが参考になります。後でじっくり読んでみて下さい。
　[GitLab.comのアカウントを作成し、安全に利用する方法](https://www.gitlab.jp/blog/2020/06/23/steps-to-get-a-gitlab-dot-com-account-and-get-set-up/)

### メンバー追加
メンバー追加は、プロジェクトの左側にあるメニューから可能です。
![Gitlab_memberAdd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/0755a24b-e8bb-60d5-6226-816e0f095c45.png)


## 3. Slack導入
### サインイン
Slackの公式サイトにアクセスして、Slackワークスペースを作成します。
「＋Slackワークスペースを作成する」を押下します。
https://slack.com/intl/ja-jp/get-started#/
![Slack_Create_jp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/93bd2dfa-972a-5798-f8b7-3da374b7fc65.png)

Slackアカウントを登録します。メールアドレスを入力して「続行する」を押下します。
![Slack_Create_jp2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/f09bc870-74c3-f67b-c80a-5999d31f5d0d.png)

メールに届いた6桁のコードを入力します。
入力後、認証が自動で行われます。問題なければ、Slackアカウントは登録完了です。
![Slack_Create_jp3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/b9963916-af37-8607-23e1-6fb3f0b8905c.png)

### チャット作成
サンプルチャット「BizDevOps」を作成します。
チーム名に「BizDevOps」を入力し、「Next」を押下します。
![Slack_Create3_jp1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/a29f9d9d-9c41-ff5f-8d13-b4d33b33d180.png)

追加したいメンバーのメールアドレスを入力し、「続行する」を押下します。
メンバー追加は、後からでも簡単にできます。
![Slack_Create_jp5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/7493c338-fb1b-0f77-1d8a-67d4c3014979.png)

「後でする」を押下します。
![Slack_Create_jp6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/632a58fb-86c6-b5a6-f405-e795cfc2d0df.png)

お疲れ様でした。サンプルチャット「BizDevOps」が出来ました。こちらも簡単ですね。
メンバー追加したい場合は、「チームメンバーを追加」を押下してください。
![Slack_Create_jp7_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/fb9bb1f0-26a0-7745-0361-eb651b8ee17e.png)

## 4. GitLab→Slackへの連携設定
GitLabでプロダクトの開発や、サービスのリリースなどを行った場合に、Slackへリアルタイムで通知できると便利です。
そこで、Webhook URLを使用して連携設定を行います。Webhookの詳細は[コチラ](https://qiita.com/soarflat/items/ed970f6dc59b2ab76169)の説明が分かりやすいです。

### Slack側：Webhook URLを取得する
slack api画面へアクセスし、Messagingの「Using Webhooks」を押下します。
https://api.slack.com/lang/ja-jp
![webhook1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/ce52e196-a690-e972-f2c5-df3d2a078505.png)

「Create your Slack app」を押下します。
![webhook2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/5effcd11-d8bc-06f6-d0ee-9c8b1862ea08.png)

App Nameに「sandbox」を入力、Development Slack Workspaceに「BizDevOps」を選択し、「Create App」を押下します。
![webhook3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/721e3d15-f4eb-4535-5341-8f2ef910c9f7.png)

「Incoming Webhooks」を押下します。
![webhook4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/9106717a-a071-1627-11c9-9605dbd205d1.png)

Webhooksを「ON」にして、「Add New Webhook to Workspace」を押下します。
![webhook6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/1c0f4a5e-8af5-0022-12b6-72da41b35ac9.png)

sandboxの投稿先に「#general」を設定し、「許可する」を押下します。
![webhook7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/1c83cdcc-80ad-ea10-1b98-c9090316f8a2.png)

Webhook URLを取得できました。「Copy」を押下して保存しておいてください。
 ![webhook8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/4a4c4963-738f-484c-116b-431a0c746608.png)

### GitLab側：Webhook URLを設定する
プロジェクトの左側にあるメニューの「インテグレーション」を押下します。
![webhook12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/b9d3821b-de6e-58f3-ec45-4a98fec9a9db.png)


WebhookにSlackの「Webhook URL」を入力し、「設定をテストして、変更を保存する」を押下します。
これで、GitLab側の設定も完了しました。
![webhook11-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/b858758e-0783-19b8-09b9-e2510c8e106f.png)

### GitLab→Slackへの連携確認
まず、GitLabのIssueにコメントを入力してみます。
![webhook13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/2d27dd6c-c334-c319-1c5a-6f086f788ca7.png)

すると、Slackにメッセージが自動で投稿されます。
これで完了です。お疲れ様でした。
![webhook14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676914/21ce7854-5aa9-80a5-f61e-64fbc449f59d.png)

## 5. 料金と制約
### 無料で使用可能  
クラウド版のGitlabとSlackは、どちらも無料で使用できます。

### 無料版の制約
無料版には制約がありますが、小規模なプロジェクトでは問題ないレベルだと思います。  

* GitLab
毎月2,000分まで共有  
RunnerでCIを実行可能  
* Slack  
検索可能な10,000件のメッセージ、10個のアプリとインテグレーション、  
1対1のビデオ通話と2要素認証など、フリープランでは Slack の基本的な機能が利用できます。  

## 6. まとめ
BizDevOpsとは、ビジネスの変化が激しい現代において、ビジネスを成功させるための考え方の１つです。ビジネスのゴールを、営業（Business）、開発（Development）、運用（Operations）で共有することで、チームで協力しながら、プロダクトやサービスの価値を継続的に高めていきます。プロダクトを迅速、かつ、段階的にリリースすることがポイントです。

また、BizDevOpsを簡単に実現するサービスとして、クラウド版のGitLabとSlackを取り上げてみました。
どちらも無料で使えて、簡単に導入できます。ぜひ、チームで試してみて下さい。

### 参考サイト
* BizDevOps
  * [DevOpsとは何か？ そのツールと組織文化、アジャイルとの違い](https://www.buildinsider.net/enterprise/devops/01)
  * [よく耳にするDevOpsとは？わかりやすく解説します](https://proengineer.internous.co.jp/content/columnfeature/13575)
  * [BIZDEVOPSでビジネス貢献を向上させよう](https://archwayblog.wordpress.com/2019/04/24/bizdevops/)
* GitLab
  * [サインイン](https://gitlab.com/users/sign_in/)
  * [DevOpsツールの俯瞰図](https://www.gitlab.jp/devops-tools/)
  * [料金プラン](https://www.gitlab.jp/pricing/)
  * [GitLab.comのアカウントを作成し、安全に利用する方法](https://www.gitlab.jp/blog/2020/06/23/steps-to-get-a-gitlab-dot-com-account-and-get-set-up/)
  * [GitLab実践ガイド](https://book.impress.co.jp/books/1116101163)
* Slack
  * [サインイン](https://slack.com/intl/ja-jp/get-started#/)
  * [slack apps](https://bizdevopshq.slack.com/apps)
  * [slack api](https://api.slack.com/lang/ja-jp)
  * [料金プラン](https://slack.com/intl/ja-jp/pricing)
* GitLab→Slackへの連携設定
  * [Webhookとは？](https://qiita.com/soarflat/items/ed970f6dc59b2ab76169)
  * [GitLabのイベント(Push等)をSlackへ通知する手順](https://qiita.com/M4e/items/c26d938e73830b0ba6b9)
  * [GitLabを使用したCIの構築とSlackとの連携](https://qiita.com/NayutaOno/items/9541197c52b4aa8afd07)