はじめに
この原稿を書いている時点で、衣替えの時期になりました。この春に入社された新入社員のみなさんの中には、そろそろ研修期間も終わり、実際のプロジェクトに配属されてコードを書き始めている方々もいらっしゃると思います。業務の傍ら新人教育の時間を捻出された先輩社員の方々もお疲れ様でした。
突然ですが、そんなみなさんに質問です。ソフトウェア開発を支える「三種の神器」については上司や先輩から教えていただいたでしょうか? 上司や先輩のみなさんはこれらの開発ツールの重要性について説明されたでしょうか? 私たちリックソフトの考える「三種の神器」とは、第一にソースコードのバージョン管理システム、第二に課題管理システム、第三に継続的インテグレーション(CI)システムです。
本記事では、バージョン管理システムに着目し、課題管理システムと連携しながらソフトウェア開発を進めていくプロセスを俯瞰します。次回以降では、CIシステムを活用してビルドやテストの自動化、デプロイの省力化を行う方法を紹介したいと考えています。
Bitbucket ServerとJIRA Software
バージョン管理システムや課題管理システムには多種多様な製品やサービスがあります。たとえば、バージョン管理システムとしてはSubversionやGitが広く普及しています。製品やサービスの例としては、GitのクラウドサービスであるGitHubやBitbucket、課題管理システムのRedmine、Trac、JIRAが有名です。
本記事では、Atlassianの商用製品であるBitbucket Server(以降、Bitbucket)とJIRA Software(以降、JIRA)を取り上げます。なお本記事で文中に注意書きがない場合はどちらの製品についても、みなさんがお持ちのサーバにインストールする形式のオンプレミス版を指します。
BitbucketとJIRAは、アプリケーションサーバとデータベースで構成されるWebアプリケーションなので、特別な専用のソフトウェアを必要とせず、Webブラウザがあれば利用できます。
追跡する
ソースコードのバージョン管理に専用のシステムを利用したほうがよい最大の理由は、いつ(When)、誰が(Who)、何を(What)、なぜ(Why)、ソースコードを変更したのかを記録するためです。ソースコードの変更点をこまめに記録しておくことで、チームのメンバーが変更点を確認できますし、数日後、場合によっては数年後の自分自身のためにもなります。たいていのプログラマは、ソースコードの変更点をすべて覚えておくことはできません。細かいデータの記録はコンピュータに任せて、私たちの頭の中は常に整理整とんしておきたいものです。
ソースコードの変更点を保存する際にJIRAの課題キー(バグやストーリーのひとつひとつを識別するための番号をJIRAでは課題キーと呼びます)をコミットログ(図1)に含めておけば、自動的にリンクが設定され、JIRAとBitbucketのどちらからも相互に参照できるようになります(図2)。
気軽に見る
BitbucketはWebアプリケーションなので、ソースコードのコミット履歴やブランチ間の差分をWebブラウザで確認できます。ソースコードを手元のパソコンにダウンロードしてIDEやテキストエディタで開くといっためんどうな操作は必要ありません。
ファイルの内容が表示される画面では、特定の行を指定して表示させることもできるので、チャットなどでチームメンバーとURLを共有するといった使い方もできます(図3)。
また、タイプミスなどのちょっとした修正であれば、Webブラウザだけでも済ませられるので、たいへん便利です(図4)。
続いてBitbucketをお勧めする理由の1つである、プルリクエスト機能(コードレビュー)の話をしようと思いますが、そのお話は後編で。
日本だけでなく、アジア圏でもアトラシアン製品販売のトップエキスパートであるリックソフトの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の実行環境(基礎編)