ソースコードのバージョン管理システムはソフトウェア開発に欠かせないツールです。本稿では前編から引き続き、GitベースのBitbucket Server(以降、Bitbucket)を取り上げます。
レビューして記録する
私たちがBitbucketをお勧めする理由の1つがプルリクエスト機能です。ソフトウェアの品質を高める活動の1つにコードレビューがあります。しかし、その効果やメリットをわかっていたとしても、レビューのためのしくみが整備されていないと実行は容易ではありません。レビューのたびにソースコードを紙に印刷したり、レビューのための時間と会議室を確保したり、レビューの記録を帳票として残したりと、組織によってさまざまな工夫をしていることと思います。しかし、往々にしてプログラマはこの手の作業が苦手なものです。
そこでBitbucketの出番です。Bitbucketのコードレビューは画面上で行います。Gitを使った開発では、機能の追加や不具合の修正のたびにブランチを作り(図1)、コードを修正したあとで分岐元にマージを行って開発を進めていきます。Bitbucketでは、マージするための承認プロセスをプルリクエストという機能で提供しています。
プルリクエストの画面では、ソースコードの差分やコミットの履歴を確認できます。レビュアは修正内容を確認し、問題がなければ承認を行います(図2)。コードには1行ごとにコメントを付けることができるので、画面上でコメントを追加してエンジニアどうしで議論を重ね、コードの品質を高めていくことができます。レビューの記録はBitbucketに残るため、レビューの履歴として後日活用することも考えられるでしょう。
これらの活動はオンラインでできますが、人間どうしで直接会話したほうがよいと感じた場合には、チャットやフェイストゥフェイスで会話し、その内容をJIRAやBitbucketに記録として残しておくことでさらに良いコードレビューになるでしょう。筆者も、コードを読んで理解できないときにはチームのメンバーに直接話を聞いて納得したうえで承認ボタンを押すということがよくあります。
マージには前提条件を設定でき、「2名以上のレビュアが承認していること」や「ビルドが成功していること」といった条件を指定できるので、プルリクエストのフローを厳格に規定することもできるようになっています(図3)。
その他の便利な使い方
プルリクエストは必ずしもマージを目的とする必要はありません。筆者たちがよく利用している「WIP(Work In Progress)プルリクエスト」と呼ばれるプラクティスを紹介します。
「実験的なコードをメンバーに共有したい」「現在自分が取り組んでいる仕事についてメンバーからアドバイスをもらいたい」といったとき、「WIP」という名前のプルリクエストを作成します(図4)。このプルリクエストを見たメンバーは、改善案をコメントとして付けたり、意見や感想をお互いに交わしたりします。このプラクティスは、チームの士気向上やソースコードのリファクタリングにもつながると考えています。
マージが目的ではないというよりも、むしろマージしてはいけないプルリクエストです。まれに「WIP」という名前を見落として、誤ってマージしそうになってしまうことがあるのが難点です。これを防ぐ改善点を目下検討中です。
おわりに
開発者にとって、日ごろ使い慣れた道具を変えることは大きなストレスであり、コストでもあります。しかし、GitやBitbucket、JIRAを活用することが、そのデメリットを補って余りあるパワーを与えてくれると筆者たちは考えています。
一気にすべてを変える必要はありません。新しく始まるプロジェクトのソースコードや、開発の傍らで作成するちょっとしたツール群など、気軽に始められるところから小さく始めてみてはいかがでしょうか。Bitbucketのクラウド版であれば5ユーザまではなんと0ドル、オンプレミス版であれば10ユーザ10ドルから始めることができます。
導入にあたってご不明な点や技術的サポートは、Atlassianプラチナソリューションパートナーであるリックソフトにいつでもお気軽にお問い合わせください。
日本だけでなく、アジア圏でもアトラシアン製品販売のトップエキスパートであるリックソフトのWebサイトでは、各アトラシアン製品の体験版を提供しているほか、アトラシアン製品専用のコミュニティも運営しています。まずはアクセスしてみては!
- リックソフトJIRAデモ環境
- https://www.ricksoft.jp/demo/
- 第1特集
MySQL アプリ開発者の必修5科目
不意なトラブルに困らないためのRDB基礎知識
- 第2特集
「知りたい」「使いたい」「発信したい」をかなえる
OSSソースコードリーディングのススメ
- 特別企画
企業のシステムを支えるOSとエコシステムの全貌
[特別企画]Red Hat Enterprise Linux 9最新ガイド
- 短期連載
今さら聞けないSSH
[前編]リモートログインとコマンドの実行
- 短期連載
MySQLで学ぶ文字コード
[最終回]文字コードのハマりどころTips集
- 短期連載
新生「Ansible」徹底解説
[4]Playbookの実行環境(基礎編)