Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
積極的なソフトウェア構成管理

の活用方法
長沢 智治
アトラシアン株式会社 シニアエバンジェリスト
  @tnagasawa    re-workstyle.com
ソフトウェア構成管理の過去・現在
1996
インテック
ソフトウェアエンジニア
2000
Rational Software
プロセス改善コンサルタント
2003
日本アイ・ビー・エム
プロセス改善コンサルタント
2005
Borland Software
プロセス改善コンサルタント
ソリューション アーキテクト
2007
Microsoft
エバンジェリスト
プロダクト マネージャ
2014
シニア エバンジェリスト
監訳 / 共著書 多数 プレゼンテーション協力
Speaker
Agenda
1. 概要
2. 仕組み
3. 期待に応えるソフトウェア
ソフトウェア構成管理
Agenda
1. 概要
ソフトウェア構成管理
狭義と広義
構成要素
周辺構成
狭義と広義
ソフトウェア構成管理
1-1
狭義と広義
ソフトウェア構成管理
ソフトウェアの変更を

コントロールし続けること
役割や成果物を橋渡しする
本来の責務に注力可能に
ソフトウェア構成管理
ソフトウェアの変更を

コントロールし続けること
役割や成果物を橋渡しする
本来の責務に注力可能に
意図したソフトウェアを
作るために必要な基盤技術
意図したソフトウェアを
作るために必要な基盤技術
意図したソフトウェアへの課題
要求への適応
並行作業
分散化への対応
適正なリリース
意図したソフトウェアへの課題
要求への適応
並行作業
分散化への対応
適正なリリース
複雑さの軽減
ソフトウェア開発の複雑さの軽減への成果物からの

アプローチがソフトウェア構成管理です。
複雑さの軽減は、他にもモデリングや、アーキテクチャなど

も考えられます。
変更依頼 Change Requests
機能追加/バグ改修
要求の変更 要求 / バックログ
ソースコード / スクリプト
ビルド成果物 / パッケージリリース
トリアージ
(CCB: 変更管理委員会) 広義の
ソフトウェア構成管理
狭義の
ソフトウェア構成管理
狭義のソフトウェア構成管理は、

単にバージョン管理を言われることもあります。
Agenda
1. 概要
ソフトウェア構成管理
狭義と広義
構成要素
周辺構成
構成要素 = 能力
ソフトウェア構成管理
1-2
構成要素 = 能力ソフトウェア構成管理
バージョン制御
ワークスペース制御 ビルド/リリース制御
プロセス制御
ソースコード / スクリプト
の構成のバージョニング
ソースコード / スクリプト
の構成のバージョニング
ビルド成果物 / パッケージ
全体のオーガナイズとワークフロー
狭義のソフトウェア構成管理には、

バージョン管理が含まれます。
構成要素 = 能力ソフトウェア構成管理
バージョン制御
ワークスペース制御
Work Products | Development
開発者
開発チーム
check out
check in / commit
バージョン管理リポジトリだけでなく、

ワークスペースにも注目すべきです。
構成要素 = 能力ソフトウェア構成管理
バージョン制御
ワークスペース制御
Work Products | Build
ビルド bot
開発チーム
check out
ビルド/リリース制御
store / deploy ビルド成果物ソフトウェア構成管理は、自動ビルドに

とっても不可欠な基盤となります。
構成要素 = 能力ソフトウェア構成管理
バージョン制御
ワークスペース制御 ビルド/リリース制御
プロセス制御
Work Products
開発チーム
ソフトウェア開発は、チーム活動であり、

同時並列作業であることを忘れてはなりません。
Agenda
1. 概要
ソフトウェア構成管理
狭義と広義
構成要素
周辺構成
周辺構成
ソフトウェア構成管理
1-3
周辺構成
ソフトウェア構成管理 プロセスの基本要素
サポート システム
プロセスの基本要素
動機 / 行動
人 / 役割
成果物
プロセスの基本要素については、

Rational Unified Process で明文化されています。
後 行程動機 / 行動
人 / 役割
成果物
アサイン 作業
前 行程
プロセスの視点
動機 / 行動
人 / 役割
成果物
理由 作業
前 行程 後 行程
理由
役割の視点
作業者である「役割」から見ると、成果物は

作業の結果であり、チームで共有するには

「動機」づけが必要です。
動機 / 行動
人 / 役割
成果物
後 行程
作業者
理由
成果物の視点
前 行程成果物の視点では、前後関係や動機が不確かとなることが

多くあります。これは、ソフトウェア構成管理だけでを実践する

ことの難しさと言い換えることができます。
動機 / 行動
人 / 役割
成果物
前 行程
後 行程
作業者
理由
(狭義の) ソフトウェア構成管理の視点
プロセス改善をバージョン管理ツールの導入だけで

行うケースが多いですが、実は困難なアプローチになる

場合が多いことも知っておくとよいでしょう。
後 行程動機 / 行動
人 / 役割
成果物
アサイン 作業
前 行程
Version Control System
Issue Tracking System
サポート システム
Automated Build
サポート システム
変更依頼 Change Requests
機能追加/バグ改修
要求の変更 要求 / バックログ
ソースコード / スクリプト
ビルド成果物 / パッケージリリース
トリアージ
(CCB: 変更管理委員会)
ITS
SCM
CI
確認
1. 概要
ソフトウェア構成管理
狭義と広義
構成要素
周辺構成
ソフトウェア構成管理
ソフトウェアの変更を

コントロールし続けること
役割や成果物を橋渡しする
本来の責務に注力可能に
構成要素 = 能力ソフトウェア構成管理
バージョン制御
ワークスペース制御 ビルド/リリース制御
プロセス制御
変更依頼 Change Requests
機能追加/バグ改修
要求の変更 要求 / バックログ
ソースコード / スクリプト
ビルド成果物 / パッケージリリース
トリアージ
(CCB: 変更管理委員会)
ITS
SCM
CI
複雑さの軽減によりいつでも構成を識別/公開できること
1. 概要
Agenda
2. 仕組み
3. 期待に応えるソフトウェア
ソフトウェア構成管理
1. 概要
2. 仕組み
特徴と中央集中管理
分散管理
導入指針
Agenda
ソフトウェア構成管理
特徴
ソフトウェア構成管理システム
2-1
特徴
ソフトウェア構成管理システム
バージョン制御
ワークスペース制御 ビルド/リリース制御
プロセス制御
能力をサポートするシステム
ソフトウェア構成管理システム
バージョン制御
ワークスペース制御
リポジトリ
識別と再現
能力をサポートするシステム
• 成果物の格納
• 成果物のバージョン化
• 成果物構成/関係のバージョン化
• 安全な成果物の識別
• 安全な成果物の取得と更新
• 安全な成果物の利用と引き渡し
バージョン制御
ワークスペース制御
特徴 リポジトリ
ソフトウェア構成管理システム
ワークスペース制御
リポジトリ
識別と再現
能力をサポートするシステム
• 成果物の格納
• 成果物のバージョン化
• 成果物構成/関係のバージョン化
• 安全な成果物の識別
• 安全な成果物の取得と更新
• 安全な成果物の利用と引き渡し
バージョン制御
ワークスペース制御
バージョン制御
特徴 リポジトリ
上書きの問題
ソフトウェア構成管理システム
ワークスペース制御
リポジトリ
識別と再現
能力をサポートするシステム
• 成果物の格納
• 成果物のバージョン化
• 成果物構成/関係のバージョン化
• 安全な成果物の識別
• 安全な成果物の取得と更新
• 安全な成果物の利用と引き渡し
バージョン制御
ワークスペース制御
バージョン制御
特徴 リポジトリ
ソフトウェア構成管理システム
ワークスペース制御
リポジトリ
識別と再現
能力をサポートするシステム
• 成果物の格納
• 成果物のバージョン化
• 成果物構成/関係のバージョン化
• 安全な成果物の識別
• 安全な成果物の取得と更新
• 安全な成果物の利用と引き渡し
バージョン制御
ワークスペース制御
バージョン制御
特徴 リポジトリ
自動ビルド にとっても

ワークスペースは重要です。
ワークスペース制御 バージョン制御
チェックイン / コミット
チェックアウト
ブランチマージ
ソフトウェア構成管理システム
能力をサポートするシステム
リポジトリ
• 成果物の格納
• 成果物のバージョン化
• 成果物構成/関係のバージョン化
バージョン制御
識別と再現
• 安全な成果物の識別
• 安全な成果物の取得と更新
• 安全な成果物の利用と引き渡し
ワークスペース制御
特徴 リポジトリ
ソフトウェア構成管理システム
ワークスペース制御
能力をサポートするシステム
バージョン制御
特徴
ビルド/リリース制御
どのバージョンで構成されているか?
どうビルドしたか?
どこにリリースしたか?
ビルドとリリース
ソースコードの識別と再現性だけでなく、ビルドとリリースの

構成を識別することはあらゆるソフトウェアにとって重要です。
ソフトウェア構成管理システム
バージョン制御
ワークスペース制御 ビルド/リリース制御
プロセス制御
能力をサポートするシステム
特徴
• 維持
• 過度な属人性の排除
• ミスと手間の軽減
• 簡素化
目的
• ポリシー
• ACL
• 事前条件
• 事後条件
手段
プロセスとポリシー
プロセスとポリシーは、フォーマルな統制だけで
なく、人為的ミスの軽減や、均質化、ルーチンワークの
改善と軽減に繋がる戦略的なものです。
中央集中管理
ソフトウェア構成管理システム
2-1
中央集中管理
ソフトウェア構成管理システム
ワークスペース制御
バージョン制御
ワークスペース制御
中央集中管理
ソフトウェア構成管理システム
ワークスペース制御
バージョン制御
ワークスペース制御
特徴
• 単一リポジトリ
• 管理の集中化が容易
• 制御の集中化が容易
• 常にリポジトリに接続
例 Subversion (SVN) ¦ ClearCase ¦ TFS (TFVC)
ツールは、オンプレミスでの稼働が多いです。

ホスティングサービスもありますが、限定的です。
1. 概要
2. 仕組み
特徴と中央集中管理
分散管理
導入指針
Agenda
ソフトウェア構成管理
分散管理 (DVCS)
ソフトウェア構成管理システム
2-2
分散管理 (DVCS)
ソフトウェア構成管理システム
remote
local
local
local
local
local
local
local
local
ワークスペース リポジトリ (分散) ワークスペース
分散管理 (DVCS)
ソフトウェア構成管理システム
remotelocal
ワークスペース
リポジトリ (分散) master
bugfix
clone
分散管理 (DVCS)
ソフトウェア構成管理システム
remotelocal
ワークスペース
リポジトリ (分散) master
bugfix
master
bugfix
clone
分散管理 (DVCS)
ソフトウェア構成管理システム
remotelocal
ワークスペース
リポジトリ (分散) master
bugfix
master
bugfix
commit
push
分散管理 (DVCS)
ソフトウェア構成管理システム
remotelocal
ワークスペース
リポジトリ (分散) master
bugfix
master
bugfix
commit
push
分散管理 (DVCS) の特徴
ソフトウェア構成管理システム
remotelocal
分散リポジトリ
• remote と 作業環境分の local がある
• プロセス制御がしづらい傾向
local
master
bugfix
local リポジトリ
• 作業環境で独自にバージョン管理できる
• 影響を与えずにこまめに履歴を残せる
• 不必要な履歴は制御できる
• 分離と統合 を個別に制御できる
特徴
• 分散リポジトリ
• 管理の分散化が容易
• 制御が複雑
• オフライン対応が容易
例 Git ¦ Mercurial (HG)
分散管理 (DVCS) の特徴
ソフトウェア構成管理システム
remotelocal
master
bugfix
master
bugfix
local
local
1. 概要
2. 仕組み
特徴と中央集中管理
分散管理
導入指針
Agenda
ソフトウェア構成管理
導入の指針
ソフトウェア構成管理システム
2-3
導入の指針
ソフトウェア構成管理システム
頻繁な変更がある (TDD など)
地理的に分散している
やり直しが利く
複雑なブランチ戦略
他システムとの連携
ソーシャル コーディング
分散バージョン管理システム
DVCS
ひとつでも当てはまれば
導入の指針
ソフトウェア構成管理システム
緩やかな変更がある
常にリポジトリに接続できる
堅実で公式な構成管理
定型的なブランチ戦略
他システム連携の事情
メンバーの成熟度
中央集中バージョン管理システム
CVCS
すべて当てはまれば
導入の指針
ソフトウェア構成管理システム
分散バージョン管理システムDVCS
アジャイル プラクティス
モダン ブランチ戦略
広義のソフトウェア構成管理
導入の指針
ソフトウェア構成管理システム
分散バージョン管理システムDVCS
アジャイル プラクティス
反復 フィードバック
特徴:
プラクティスの例:
テスト駆動開発 継続的インテグレーション
導入の指針
ソフトウェア構成管理システム
分散バージョン管理システムDVCS
モダン ブランチ戦略
git-flow:
Develop
Feature A
master
Release
Hotfix
Feature B
v 1.0 v 1.1 v 2.0
git-flow は、ベストプラクティスのひとつして知られ
ていますが、現場に応じて、よりシンプルな運営を

することが重要です。複雑さをブランチで作らないように。
導入の指針
ソフトウェア構成管理システム
分散バージョン管理システムDVCS
モダン ブランチ戦略
Pull Request Model (GitHub Flow):
Develop
Feature A
push
remote
local
Feature A
Pull Request
merge
例 GitHub ¦ Bitbucket ¦ GitLab
プルリクエストは、多くの DVCS リポジ
トリ システムで採用されています。
GitHub, Bitbucket の SaaS 型が有名ですが、

Bitbucket Server や GitHub Enterprise,
GitLab などのオンプレミス稼働もあります。
導入の指針
ソフトウェア構成管理システム
分散バージョン管理システムDVCS
広義のソフトウェア構成管理
SCM
ITS
CI
変更依頼
機能追加/バグ改修
要求の変更
要求
バックログ
ソースコード

スクリプト
ビルド成果物

パッケージリリース
トリアージ
(CCB: 変更管理委員会)
DVCS に対応した ITS, CI システムが、増加し
ている傾向にあります。
導入の指針
ソフトウェア構成管理システム
分散バージョン管理システムDVCS
変更依頼
機能追加/バグ改修
要求の変更
要求
バックログ
ソースコード

スクリプト
ビルド成果物

パッケージリリース
トリアージ
(CCB: 変更管理委員会)
ITS
SCM
CI
• JIRA
• Redmine
• Git
• Mercurial
• Jenkins
• Bamboo
• Circle CI
1. 概要
2. 仕組み
特徴と中央集中管理
分散管理
導入指針
ソフトウェア構成管理
確認
特に重要な仕組み
ソフトウェア構成管理システム
リポジトリ
• 成果物の格納
• 成果物のバージョン化
• 成果物構成/関係のバージョン化
バージョン制御 識別と再現
• 安全な成果物の識別
• 安全な成果物の取得と更新
• 安全な成果物の利用と引き渡し
ワークスペース制御
中央集中バージョン管理システム
CVCS
2つの VCS
ソフトウェア構成管理システム
remote
local
local
local
分散バージョン管理システム
DVCS
モダン ブランチ戦略
ソフトウェア構成管理システム
Pull Request Model (GitHub Flow):
Develop
Feature A
push
remote
local
Feature A
Pull Request
merge
1. 概要
Agenda
2. 仕組み
3. 期待に応えるソフトウェア
ソフトウェア構成管理
2. 仕組み1. 概要
3. 期待に応えるソフトウェア
ビジネスとソフトウェア品質
積極的な構成管理
Agenda
ソフトウェア構成管理
DevOps
ビジネスニーズとソフトウェア品質
3-1
DevOps
ビジネスニーズとソフトウェア品質
ビジネス 開発 運用
ビジネス目標
売り上げ / 利益率
ユーザー数
生産性 / 稼働率
- ビジネス駆動ムーブメント
開発・運用のそれぞれのミッションと価値観
ではなく、ビジネス目標と KPI への戦略的な貢献
を継続的に意識する必要があります。
DevOps
ビジネスニーズとソフトウェア品質
ビジネス
- ビジネス駆動ムーブメント
開発 運用
インシデント
問題
変更
アイデア/バグ
コード
リリース
ビジネスのリズム ¦ サイクルタイム・共同所有・透明性・自動化/省力化
ソフトウェア構成管理は、開発と運用の協調
のための情報インフラとしても不可欠となって

きています。
DevOps
ビジネスニーズとソフトウェア品質
- ソフトウェア構成管理のスコープの拡大
開発 運用
インシデント
問題
変更
アイデア/バグ
コード
リリース
ビジネスのリズム ¦ サイクルタイム・共同所有・透明性・自動化/省力化
共同所有
開発コード 運用コード

( IaC )
IaC : Infrastructure as Code によりインフ
ラのコード化が促進され、アプリとインフラを統
制だてて構成できるようになってきました。
DevOps
ビジネスニーズとソフトウェア品質
- ソフトウェア構成管理のスコープの拡大
開発 運用
インシデント
問題
変更
アイデア/バグ
コード
リリース
ビジネスのリズム ¦ サイクルタイム・共同所有・透明性・自動化/省力化
共同所有
開発コード 運用コード

( IaC )
ビジネスニーズ ビジネス価値
広義のSCM
2. 仕組み1. 概要
3. 期待に応えるソフトウェア
ビジネスとソフトウェア品質
積極的な構成管理
Agenda
ソフトウェア構成管理
ソフトウェア構成管理
積極的な
3-2
ソフトウェア構成管理
積極的な
成果物と作業の複雑化により、メンバーも

マネジメントも本業ではなく、情報取集に時間を
とられる傾向があります。
成果物の一元化と、ITS による情報統制 (情報
Hub) により、本業に注力できる環境が整います。
アイデア ビジネス価値
コード ビルド
動くソフトウェアバックログ
ソフトウェア開発における

情報の平易度、粒度、価値観はさまざまです。
アイデア ビジネス価値
コード ビルド
動くソフトウェアバックログ
ITS
ITS
SCM CI
CI
ITS, SCM. CI により情報の流通を制御し、

ソフトウェア開発の複雑度を軽減します。
SCM だけで改善できない点を注意します。
アイデア ビジネス価値
コード
バックログ
タスク
ソフトウェア構成管理は不可欠ですが、

それだけではな、コミュニケーションと

コラボレーションには不足している点と注意すべきです。
ソフトウェア構成管理
積極的な
•Flow of Value
•共同所有
•ソーシャル コーディング (集合知)
「Flow of Value」とは、アイデアがビジネス価値になるまでの流れを重視すべきということです。

各工程での進捗よりも、価値をデリバリーできたかに重きを置きます。
「ソーシャル コーディング」は、フォーマルな構成管理より、知見に収集と改善能力に期待するアプローチで

オープンソース プロジェクトで実践されているやり方です。このやり方により、新技術や要求が固まりにくい

ソフトウェア開発でも、能力を最大化できることが期待されています。
2. 仕組み1. 概要
3. 期待に応えるソフトウェア
ビジネスとソフトウェア品質
積極的な構成管理
ソフトウェア構成管理
確認
DevOps
ビジネスニーズとソフトウェア品質
- ソフトウェア構成管理のスコープの拡大
開発 運用
インシデント
問題
変更
アイデア/バグ
コード
リリース
ビジネスのリズム ¦ サイクルタイム・共同所有・透明性・自動化/省力化
開発コード 運用コード

( IaC )
ビジネスニーズ ビジネス価値
広義のSCM
まとめ
1. 概要
2. 仕組み
3. 期待に応えるソフトウェア
ソフトウェア構成管理
Thank you!
Tomoharu Nagasawa • Senior Evangelist • Atlassian • @tnagasawa
無料で講演や現場訪問のご依頼を承ります。
お気軽に、ご連絡ください。
email: tnagasawa@atlassian.com

More Related Content

ソフトウェア構成管理入門