Conversational Development

# Conversational Development
[GitLab Advent Calendar](http://qiita.com/advent-calendar/2016/gitlab) も最終日となりました! 最終日は GitLab が提唱する新しい開発スタイル `Conversational Development` (以後 `ConvDev` と省略します) について書いていこうと思います。


## ConvDev とは?
GitLab は去年の時点で、ほぼ GitHub と同程度の機能を持っています。(Team がないとか、一部弱い部分もありますが...) そこからは新しい価値をどのように生み出そうか模索し始めた感があります。

開発体制も強化され、新しい機能がどんどん追加されていっています。([GitLab Advent Calendar 2016 五日目の記事、GitLab自体の開発のされ方](http://qiita.com/hiroponz/items/c969a8b67fa760356e43)が詳しいです)

さらに [GitLab Live Event Recap](https://about.gitlab.com/2016/09/14/gitlab-live-event-recap/) というイベントで今後の方向性を打ち出してきました。

ConvDev はその中で提唱された、ウォーターフォール・スクラム・アジャイルに変わる新しい開発スタイルです。

> Conversational Development (ConvDev) is a natural evolution of software development that carries a conversation across functional groups throughout the development process, enabling developers to track the full path of development in a cohesive and intuitive way. ConvDev accelerates the development lifecycle by fostering collaboration and knowledge sharing from idea to production.

https://about.gitlab.com/2016/09/14/gitlab-live-event-recap/#convdev

かなり意訳になりますが、「アイデアからプロダクションまで開発チームがコラボレーションを行い、開発ライフサイクルをより加速させるもの」のようです。

今後の GitLab はこの ConvDev を強力にサポートすることが目標になるようです。


## ConvDev を支える GitLab の機能
GitLab は ConvDev を支えるために、機能追加中です。ConvDev の開発サイクルにそって紹介したいと思います。

と言っても、発表されたビデオ、[Idea to Production]() をなぞっているだけです。

[![Idea to Production](http://img.youtube.com/vi/ZRcWCWatdas/0.jpg)](http://www.youtube.com/watch?v=ZRcWCWatdas)


### Idea -> Mattermost chat ships with GitLab
まずはアイデアを練るところです。チャットの Mattermost で会話を行い、その中で昇華されたバックログを slash command で GitLab に登録していきます。

[![Idea to Production](http://img.youtube.com/vi/ZRcWCWatdas/0.jpg)](https://youtu.be/ZRcWCWatdas?t=86)

ビデオだと、Slack が使われているのがちょっと悲しいです...

[GitLab CE 8.14](https://about.gitlab.com/2016/11/22/gitlab-8-14-released/#chat-commands-experimental) で実装され、[GitLab CE 8.15](https://about.gitlab.com/2016/12/22/gitlab-8-15-released/#one-click-mattermost-configuration) で簡単に設定できるようになりました。


### Issue -> GitLab Issues
登録されたバックログは Issues で管理することができます。説明は不要ですよね...


### Plan -> GitLab Issue Board
バックログをカンバン機能の GitLab Issue Board で細かく振り分けたり、詳細化したり、整理したりします。

[![Idea to Production](http://img.youtube.com/vi/ZRcWCWatdas/0.jpg)](https://youtu.be/ZRcWCWatdas?t=99)


### Code -> GitLab + Koding (IDE)
自分は使ったことがありませんが、クラウドの IDE の Koding と連携することができるようです。

[![Idea to Production](http://img.youtube.com/vi/ZRcWCWatdas/0.jpg)](https://youtu.be/ZRcWCWatdas?t=132)


### Commit -> GitLab Repositories
解説は不要ですよね!


### Test -> GitLab CI and Container Registry
CI を使ってテストをすることができます。また、GitLab Container Registry には Docker Image を登録することができます。


### Review -> GitLab Merge Requests
言わずとしれた、Merge Requests (GitHub で言う Pull Requests) を使ってコードレビューを行うことができます。

[![Idea to Production](http://img.youtube.com/vi/ZRcWCWatdas/0.jpg)](https://youtu.be/ZRcWCWatdas?t=251)

また、Review Apps という機能も付きましたので、Merge Requests で変更されたアプリのレビューも可能になりました。

[![Idea to Production](http://img.youtube.com/vi/ZRcWCWatdas/0.jpg)](https://youtu.be/ZRcWCWatdas?t=343)

Review Apps は Heroku にインスピレーションを受けたそうです。非常に有用なのでおすすめです。詳しくは [Introducing Review Apps](https://about.gitlab.com/2016/11/22/introducing-review-apps/) をご覧ください。


### Continous Delivery -> GitLab Deploy
GitLab に組み込まれた GitLab CI/CD の機能を使うことで、ステージングや本番へのアプリの設置が用意になります。また、ロールバックも簡単にできるのも素晴らしいですね!

[![Idea to Production](http://img.youtube.com/vi/ZRcWCWatdas/0.jpg)](https://youtu.be/ZRcWCWatdas?t=411)

しかも、Review Apps と GitLab Deploy はほぼ同じ方法でできますので、どちらかを覚えればどちらもできるようになるのがいいです。


### Chatops
チャットから slash command で様々なことができます。現在は、Issue の追加や表示・デプロイくらいしかできませんが、今後強化されるようです。


### Feedback -> Cycle Analytics
プロジェクトの状態を俯瞰で見ることができます。

[![Idea to Production](http://img.youtube.com/vi/ZRcWCWatdas/0.jpg)](https://youtu.be/ZRcWCWatdas?t=511)


## 終わり
ConvEnv いかがだったでしょうか? (うまく説明できている自信がないのですが...)

個人的な印象では、スクラムやアジャイルに変わるものというよりも、[GitLab](https://about.gitlab.com/) を中心とした開発サイクルのスクラムを再定義したもののような気がします。また、[GitHub](https://github.com/) の対抗馬というより、[Atlassian](https://ja.atlassian.com/) の対抗馬になる印象を受けます。

まだまだちょっと足りないかな? と思うところもありますが、Issue Board や Chatops が強化されていくと、アイデアやプランの段階から十分に使えるようになると思います。

また、そこから GitLab Deploy まで比較的簡単に構築できるようになっており、(もちろん Docker Engine 等が必要ですが...) アイデアを思いてからから仲間を集め、簡単な打ち合わせから、プロトタイプの作成とそれをチームメンバーに公開してコンセプトを確認するといったことが一日もかからずにできるような気がしてきます。

ちょっとワクワクしませんか?


## 謝辞
GitLab CE のようなソフトウェアは企業内で使われることが多く、どれくらい使われているのかが分かりにくく、Advent Calendar を作っても需要がないかも... と思ってたのですが、ギリギリに始めたのにもかかわらず、埋まりました。

しかも、GitLab にコントリビュートをされている記事もあり、自分としても勉強になりました。

記事を投稿してくださった皆さん、読者の皆さん、ありがとうございました!