突撃!
隣の Visual Studio Team Services /
Team Foundation Server
~ 利用者からのベストプラクティス
日本マイクロソフト株式会社 武田 正樹
株式会社日立産業制御ソリューションズ 額賀 義則
株式会社ジュピターテレコム 井上 宗治
セッション概要
1
• Visual Studio Team Services / Team Foundation Server を
活用して開発効率を高めるための手法を実際の利用事例から
紹介
Visual Studio Team Services
Team Foundation Server 2015 Update 2 以降
Agenda
2
株式会社日立産業制御ソリューションズ様
株式会社ジュピターテレコム様
3
背景
4
• VB.NET でパッケージソフトの開発をしているプロジェクト
• プロジェクトの繁忙期ではなく、改善ができる状態だった
• 管理の手間をかけず、ソースコード品質を担保する仕組みを
作りたい
• 問題が発生すると構成管理台帳などの管理資料の準備が必要
この手間を回避したい
これまでの品質担保のフロー
5
単体テストを実施
- 3rd パーティーツールを使用
追加 / 変更したソースコードに静的コード解析を実施
- 3rd パーティーツールを使用
ローカルマシンでビルドを実施、
成果物を共有フォルダに保存
単体テスト完了後、
開発者ごとに作業漏れ防止用のチェックリストを作成、
受け入れ基準を満たしているかを管理者が確認
1
2
3
4
手作業で実施
実施内容
6
• 定義したビルドタスクが成功した場合のみ、チェックインを
許可する仕組みを導入
• 受け入れ基準をビルドタスクとして定義することで、
ゲートチェックイン通過 = 受け入れ基準を満たす
• ソースコード変更者と成果物の関連付けのためラベルを導入
• Visual Studio 拡張機能で開発に必要なもの一式を
インストールするためのメニューを追加
運用イメージ
7
TFSサーバー
チームプロジェクト
参照モジュール
(前提モジュール)
静的コード解析結果
実行モジュール
(ビルド結果)
プログラム
静的解析サーバー
開発者用PC
静的コード解析用
プログラム
静的解析結果
Visual Studio
プログラム
実行モジュール
参照モジュール
静的解析結果
ビルド定義/
プログラム
運用イメージ
8
TFSサーバー
チームプロジェクト
参照モジュール
(前提モジュール)
静的コード解析結果
実行モジュール
(ビルド結果)
プログラム
静的解析サーバー
開発者用PC
静的コード解析用
プログラム
静的解析結果
Visual Studio
プログラム
実行モジュール
参照モジュール
静的解析結果
ビルド定義/
プログラム
①関連モジュールと
プログラムを取得
運用イメージ
9
TFSサーバー
チームプロジェクト
参照モジュール
(前提モジュール)
静的コード解析結果
実行モジュール
(ビルド結果)
プログラム
静的解析サーバー
開発者用PC
静的コード解析用
プログラム
静的解析結果
Visual Studio
プログラム
実行モジュール
参照モジュール
静的解析結果
ビルド定義/
プログラム
②プログラム修正
運用イメージ
10
TFSサーバー
チームプロジェクト
参照モジュール
(前提モジュール)
静的コード解析結果
実行モジュール
(ビルド結果)
プログラム
静的解析サーバー
開発者用PC
静的コード解析用
プログラム
静的解析結果
Visual Studio
プログラム
実行モジュール
参照モジュール
解析結果
ビルド定義/
プログラム
③静的コード解析実行
運用イメージ
11
TFSサーバー
チームプロジェクト
参照モジュール
(前提モジュール)
静的コード解析結果
実行モジュール
(ビルド結果)
プログラム
静的解析サーバー
開発者用PC
静的コード解析用
プログラム
静的解析結果
Visual Studio
プログラム
実行モジュール
参照モジュール
ビルド定義/
プログラム
静的解析結果
④-1 ゲートチェックインで
静的コード解析結果の有無
やビルド成否を確認
④-2 実行モジュールと
プログラムにラベルを設定
現状の成果と今後
12
• 管理者が手を動かさなくても、ソフトウェア品質を確保する
仕掛けを準備することができた
• 運用項目の目的と手段を明確にすることができた
• 利便性向上、運用負荷の低減、運用フローから外れないよう、
開発に必要なすべての操作を Visual Studio から実施可能に
⇒ 操作手順を単純化、開発者にメリットを実感できるように
• 構成管理台帳や管理資料などの作成自動化
13
事例からの学び
ビルド機能を活用することでソースコードの品質を担保
• ゲートチェックインでチェックインの基準を作成
• Git の場合ブランチポリシーで受け入れ基準を設定可能
既存の業務フローを自動化
• ルールから外れた自動化をしても誰も使わない
TFVC でのソースコード管理に関する FAQ
14
• Visual Studio 2012 以降 + Team Foundation Server
2012 以降の組み合わせでタイムスタンプを有効化可能です
• Visual Studio にインストールされている “tf folderdiff”
コマンドをご利用ください
• ケースバイケースです
• ブランチとマージに関する運用ルールを決める事が重要です
きっかけは Azure
16
• 一般的な 3 層構造システムをパブリック環境に構築
• ソースコード管理 & 自動ビルド・デプロイで使用
• ビルドタスクが用意されているため、簡単に実装できた
Git
Visual Studio Team Services
成果物
ビルド デプロイ
Web+AP DB
パブリック環境
Azure IaaS への自動デプロイで躓く
17
• 社内イントラネットと VPN 接続したプライベート環境
• インターネットへのポートの公開はポリシー上難しい
• この影響で、リリース手順ミスも頻発。開発効率が低下
Git
Visual Studio Team Services
成果物
ビルド
プライベート環境
デプロイ先
デプロイ
Azure IaaS への自動デプロイ 解決方法
18
• 自動ビルド・デプロイを DMZ 上のビルドマシンで実施
• 必須だった 1週間に1回のデプロイが実現。
プロジェクトの成功にも貢献
Git
Visual Studio Team Services
ソースコードをコピー
プライベート環境
デプロイ先ビルドマシン
DMZ
成果物
所感
19
• Azure 利用がなければ使うことはなかった
• Azure へのビルド・デプロイはとても便利
• 利用開始からまだ 1 年未満のためまだまだ利活用できてない。
開発効率向上が見込めるものはどんどん活用していきたい。
• Azure PaaS 環境へのデプロイは比較的情報収集可能だった。
一方で、IaaS 環境へのデプロイの情報が難しかった。
もう少し How To 情報が公開させていると非常に助かる。
20
事例からの学び
Microsoft Azure との高い親和性
• Visual Studio Team Services は Azure の 1 サービス
• ビルドタスクには、Microsoft Azure へのデプロイタスクが
多く用意されている
ビルドエージェントで自前のビルドマシンを利用可能
• ビルドマシンを Azure IaaS 環境内に置くことがポイント
ビルドエージェント
21
• Hosted Agent にないビルド環境を使用
• 環境固定したい場合
• イントラネット環境へのデプロイを行う場合
Hosted 基本はこちらを使用
Hosted VS 2017 Visual Studio 2017 / .NET Core 専用
Hosted Linux Preview Linux ベースのビルドマシン
ビルド機能とリリース機能の切り分け
22
ビルド機能 リリース機能
ビルドタスク 共通
ビルドエージェント 共通
ソースコードの取得 ○ ○
Artifact の取得 ○
ゲートチェックイン (TFVC) ○
ブランチポリシー (Git) ○
承認 ○
パイプライン処理 ○
並列実行 ○
まとめ
23
• Team Foundation Server ソース管理機能
+ゲートチェックイン / ブランチポリシー = 品質担保
• Microsoft Azure PaaS / IaaS 環境
+ Visual Studio Team Services 自動デプロイ = ミス撲滅
目的を明確にしたうえでのツール利活用を!
リソース
24
• 技術情報
(英語) https://www.visualstudio.com/ja-jp/docs/overview
• 手順書
https://docs.com/takeda-masaki
• ハンズオンセミナー
6 月 14 日(水)弊社品川オフィスにて開催
https://azure.microsoft.com/ja-jp/community/events/
セッションアンケートにご協力ください
 専用アプリからご回答いただけます。
decode 2017
 スケジュールビルダーで受講セッションを
登録後、アンケート画面からご回答ください。
 アンケートの回答時間はたったの 15 秒です!
Ask the Speaker のご案内
本セッションの詳細は『Ask the Speaker Room』各コーナーカウンタにて
ご説明させていただきます。是非、お立ち寄りください。
© 2017 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

[TL09] 突撃! 隣の Visual Studio Team Services / Team Foundation Server ~利用者からのベストプラクティス