2016.04.06

開発作業効率化への取り組みⅡ


こんにちは。次世代システム研究室のS.Iです。
次世代システム研究室ではシステム開発を行う上で様々な取り組みを行っています。
前回に引き続き、現在進行中のプロジェクトで開発を出来る限り効率的に進めるために導入している工夫について紹介したいと思います。今回は開発作業の効率化のために利用しているAtlassian製品にフォーカスして紹介させて頂きます。

ソリューション導入による開発作業の効率化

今回取り上げるプロジェクトでは「実装>レビュー>テスト」がよりスムーズに流れるように、Atlassian製品を利用して開発作業を効率化しています。導入効果として期待している点は以下の通りです。
  1. 手作業で埋めていた部分を自動化することで、本来注力すべき作業に開発リソースを割くことできる
  2. 常に最新のプログラムをサーバに自動的に反映することで、確認作業にスムーズに入ることができる

それぞれの機能について実際の利用方法や利点について紹介していきたいと思います。

Stash

Gitのソリューションで、一般的なものですが、プルリクエストでは差分の比較、確認した際のコメントなどがわかりやすいです。前回紹介させて頂いた、スクラムボードの自動化(※)やBambooとの連携が強みです。
※ブランチの状態によって、スクラムボードの該当タスクが自動的に移動する
(TODO>進行中>レビュー中>完了など)

stash_1

現在作成されているプルリクエストや承認・否認済みのプルリクエストが確認できます。

stash_2

プルリクエストで変更点の比較やコメントなどが見やすく、マージ・否認・承認なども同一画面から操作できるのでレビューや改善点の共有などがスムーズにできます。
※マージに複数人の承認が必要な場合も設定可能なようです

Bamboo

継続インテグレーション(CI)のソリューションで、デプロイやビルド、テストなどを自由に構築することができます。

bamboo_1

ここでは様々な設定で実行の設定をすることができます。特定ブランチへのマージをトリガーに設定したり、期間やデイリーなどの設定が可能です。本プロジェクトではプルリクエストを承認すると自動で全環境にデプロイが走るように設定されています。

bamboo_2

ここではデプロイ時にどのリポジトリを利用するか設定することができます。本プロジェクトでは以下のような設定で最新プログラムを全環境へ自動デプロイする設定にしています。
  • 開発環境
    developブランチへのマージをトリガーとしてdevelopブランチをデプロイする
  • ステージング環境
    developブランチへのマージをトリガーとしてdevelopブランチをデプロイする
  • 確認用本番環境
    masterブランチへのマージをトリガーとしてmasterブランチをデプロイする
    (リリース前までは他環境と同様の設定)
bamboo_3

ここではトリガーを検知した際に実行するタスクを設定できます。本プロジェクトではCI用のサーバにSSH接続し、デプロイコマンドを実行します。

bamboo_4

ここでは実際に実行したブランチにどのような変更があったか、コミットのコメントや変更のあったプログラムとそのdiffなどを参照することが出来ます。

bamboo_5

ここでは実際に実行したタスクのログが参照でき、デプロイ・ビルド・テストなどに失敗した場合にすぐに確認することが出来ます。

開発作業の効率化の工夫

ソリューションでない部分ではいくつかのルールを設けて各作業の効率化を行っています。
  • 結合テストケースの作成は実装者以外が行い、レビューは実装者が行う
    実装者以外が作成することで仕様のダブルチェックを行い、実装者がレビューを行うことで実装上の漏れやケース上の漏れを事前に防ぐ
  • 実装のレビューはだれでもいい(実装方法の正しさしかみない)
    仕様を気にしているとレビューに多くの時間を費やしてしまう
  • 結合テストの実施は実装者・結合テスト作成者以外の人が実施する
    別の人が実施することで、わかっているが故の漏れを防ぐ、また仕様の理解者を増やす

次回は

次回以降で、その他の効率化の取り組みについて紹介していきたいと思います。
  • 構成管理
  • デプロイ
  • プログラムの自動生成
次世代システム研究室では、アプリケーション開発や設計を行うアーキテクトを募集しています。アプリケーション開発者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。