開発を効率化してみよう.NET

38
開発を効率化してみよう.NET 2015/11/21 プログラミング生放送@福岡 松村 優大

Transcript of 開発を効率化してみよう.NET

Page 1: 開発を効率化してみよう.NET

開発を効率化してみよう.NET

2015/11/21 プログラミング生放送@福岡

松村優大

Page 2: 開発を効率化してみよう.NET

自己紹介

•松村優大(Yuta Matsumura)

• @tsubakimoto_s

•島根県出身の28歳、新米パパ

• I ♥ New York Yankees

•ソフトボールやってます

2

Page 3: 開発を効率化してみよう.NET

3

Page 4: 開発を効率化してみよう.NET

4

Page 5: 開発を効率化してみよう.NET

島根県の観光地

5

•出雲大社(縁結びの神様)

•松江城(国宝)

•石見銀山(世界遺産)

•隠岐の島

•玉造温泉、湯の川温泉

Page 6: 開発を効率化してみよう.NET

福岡県から島根県へのアクセス

•飛行機(出雲空港便、1日2便)

•新幹線&高速バス(広島駅で乗り換え)

•新幹線&JR特急列車(岡山駅で乗り換え)

•夜行バス(博多・天神 ⇄松江・出雲)

6

Page 7: 開発を効率化してみよう.NET

今日のお話

• .NETアプリケーション開発者向け

• Visual Studioの機能で品質向上を実現

• Jenkinsを利用した継続的インテグレーション

7

Page 8: 開発を効率化してみよう.NET

.NETとは?

• .NET Framework

• Microsoftが提供するアプリケーション実行環境

•最新バージョンは 4.6

• .NET Frameworkが利用できるプログラミング言語に

C♯とVisual Basic.NETがある

8

Page 9: 開発を効率化してみよう.NET

.NET 2015

RyuJIT, SIMD

Runtime Compilers.NET Compiler Platform (“Roslyn”)

C#/F#/VB Languages

.NET Core 5 Libraries

.NET Framework 4.6 Libraries

Libraries

.NET Framework 4.6 .NET Core 5

Fully-featured and integrated

.NET libraries and runtime for Windows

Modular and optimized

.NET libraries and runtimes

Page 10: 開発を効率化してみよう.NET

.NET オープンソース

オープンソース

クロスプラットフォーム対応

GitHub とMono Project

RyuJIT, SIMD

Runtime Compilers.NET Compiler Platform

(“Roslyn”)

Languages

.NET Core 5 Libraries

.NET Framework 4.6 Libraries

Libraries

.NET Framework

4.6

.NET Core 5

https://github.com/aspnet

https://github.com/microsoft/dotnet

Page 11: 開発を効率化してみよう.NET

11

Page 12: 開発を効率化してみよう.NET

12

Page 13: 開発を効率化してみよう.NET

13

Page 14: 開発を効率化してみよう.NET

アプリケーション開発のステップ

コーディング デバッグ テスト

14

Page 15: 開発を効率化してみよう.NET

Visual Studioの機能

IntelliSense

コード分析

IntelliTrace

診断ツール

IntelliTest

単体テスト

15

コーディング デバッグ テスト

Page 16: 開発を効率化してみよう.NET

コード分析

•ソースコードが規則に沿っているかを分析する機能

•規則に沿うことでソースコードの保守性を高める

•潜在的な問題をもつソースコードを発見できる

•チームで開発を行う際に効果を発揮する

16

Page 17: 開発を効率化してみよう.NET

Microsoftが提供する規則セット

17

すべての規則 グローバリゼーション規則

基本正確性規則 基本デザインガイドライン規則

拡張正確性規則 拡張デザインガイドライン規則

マネージ最小規則 マネージ推奨規則

混合(C++/CLR)最小規則 混合(C++/CLR)推奨規則

セキュリティ規則

https://msdn.microsoft.com/ja-jp/library/dd264925.aspx

Page 18: 開発を効率化してみよう.NET

IntelliTrace

•デバッグ中の実行履歴を記録する機能

•記録した時点から再実行が可能

• .NET Framework 2.0以降のアプリケーションで利用可能

•※Visual Studio Enterpriseのみの機能

18

Page 19: 開発を効率化してみよう.NET

診断ツール

•アプリケーション実行時のシステム情報を表示

• アプリケーション内のイベント

• メモリ使用量

• CPU使用率

• Entity Frameworkが発行するSQL文も出力

•ブレークポイントからデバッグを再開

19

Page 20: 開発を効率化してみよう.NET

単体テスト

•コード化した単体テスト

• MSTest

• Visual Studio標準搭載のテストツール• Visual Studio Communityでも利用可能

• NUnit

• http://www.nunit.org/• サードパーティ製のテストツール• 拡張機能「NUnit Test Adapter」をインストールすれば

Visual Studioでも利用可能

20

Page 21: 開発を効率化してみよう.NET

NUnitの導入手順

1. クラスライブラリプロジェクトを作成

2. テスト対象のプロジェクトを参照設定

3. NuGetにて NUnit、NUnitTestAdapterをインストール

• NUnitはバージョン2.xをインストールすること

• バージョン3.0.0では単体テストがVS上に表示されない

21

Page 22: 開発を効率化してみよう.NET

IntelliTest

•単体テストを自動生成する機能

•ソースコードを解析し、テストケースを網羅

• https://msdn.microsoft.com/library/dn823749.aspx

•※Visual Studio Enterpriseのみの機能

22

Page 23: 開発を効率化してみよう.NET

自動化すれば効率も上がる!

23

Page 24: 開発を効率化してみよう.NET

自動化のサイクル

コーディング

コミット

ビルドテスト

デプロイ

24

Page 25: 開発を効率化してみよう.NET

自動化のサイクル

コーディング

コミット

ビルドテスト

デプロイ

25

Page 26: 開発を効率化してみよう.NET

26

Page 27: 開発を効率化してみよう.NET

Jenkins

•継続的インテグレーションツール

• CI (Continuous Integration)

• ビルドやテストを頻繁に繰り返し行なうことにより問題を早期に発見し、開発の効率化・省力化や納期の短縮を図る手法(引用元)

• CI以外にも定期タスク等も行うことが出来る

• http://jenkins-ci.org/

27

Page 28: 開発を効率化してみよう.NET

28

https://wiki.jenkins-ci.org/display/JENKINS/Logo

Page 29: 開発を効率化してみよう.NET

ビルドやテストの環境作り

•今回はMicrosoft Azureが提供する、Visual Studioインストール

済の仮想マシンを利用

•自分で環境を作るなら・・・

• ビルド環境には MSBuild Toolsが必要• http://www.microsoft.com/ja-JP/download/details.aspx?id=48159

• テスト環境• MSTestならVisual Studioが必要

• NUnitなら nunit.framework.dll が必要

29

Page 30: 開発を効率化してみよう.NET

ビルドやテストの環境作り

• Microsoft Azureの仮想マシンがオススメです

• Visual Studioがインストール済のイメージが有ります

30

Page 31: 開発を効率化してみよう.NET

Jenkinsで自動ビルド

1. Jenkinsに MSBuildプラグインをインストール

• ビルドの実行、結果やエラー情報を保存

• https://wiki.jenkins-ci.org/display/JENKINS/MSBuild+Plugin

2. Jenkinsでのビルド構成を設定

• MSBuild.exeのパスを指定

• MSBuild.exe実行時のオプションを指定

31

Page 32: 開発を効率化してみよう.NET

32

Page 33: 開発を効率化してみよう.NET

33

デモ

Page 34: 開発を効率化してみよう.NET

Jenkinsで自動テスト

1. JenkinsにMSTest Runnerプラグインをインストール

• テストの実行、結果やエラー情報を保持

• https://wiki.jenkins-ci.org/display/JENKINS/MSTestRunner+Plugin

2. Jenkinsでのテスト構成を設定

• MSTest.exeのパスを設定

• MSTest.exe実行時のオプションを指定

34

Page 35: 開発を効率化してみよう.NET

35

Page 36: 開発を効率化してみよう.NET

36

デモ

Page 37: 開発を効率化してみよう.NET

自動化のサイクル

コーディング

コミット

ビルドテスト

デプロイ

37

Page 38: 開発を効率化してみよう.NET

ありがとうございました。