SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
開発を効率化してみよう.NET
2015/11/21 プログラミング生放送@福岡
松村 優大
自己紹介
• 松村 優大(Yuta Matsumura)
• @tsubakimoto_s
• 島根県出身の28歳、新米パパ
• I ♥ New York Yankees
• ソフトボールやってます
2
3
4
島根県の観光地
5
• 出雲大社(縁結びの神様)
• 松江城(国宝)
• 石見銀山(世界遺産)
• 隠岐の島
• 玉造温泉、湯の川温泉
福岡県から島根県へのアクセス
• 飛行機(出雲空港便、1日2便)
• 新幹線&高速バス(広島駅で乗り換え)
• 新幹線&JR特急列車(岡山駅で乗り換え)
• 夜行バス(博多・天神 ⇄ 松江・出雲)
6
今日のお話
• .NETアプリケーション開発者向け
• Visual Studioの機能で品質向上を実現
• Jenkinsを利用した継続的インテグレーション
7
.NETとは?
• .NET Framework
• Microsoftが提供するアプリケーション実行環境
• 最新バージョンは 4.6
• .NET Frameworkが利用できるプログラミング言語に
C♯とVisual Basic.NETがある
8
.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
.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
11
12
13
アプリケーション開発のステップ
コーディング デバッグ テスト
14
Visual Studioの機能
IntelliSense
コード分析
IntelliTrace
診断ツール
IntelliTest
単体テスト
15
コーディング デバッグ テスト
コード分析
• ソースコードが規則に沿っているかを分析する機能
• 規則に沿うことでソースコードの保守性を高める
• 潜在的な問題をもつソースコードを発見できる
• チームで開発を行う際に効果を発揮する
16
Microsoftが提供する規則セット
17
すべての規則 グローバリゼーション規則
基本正確性規則 基本デザインガイドライン規則
拡張正確性規則 拡張デザインガイドライン規則
マネージ最小規則 マネージ推奨規則
混合(C++/CLR)最小規則 混合(C++/CLR)推奨規則
セキュリティ規則
https://msdn.microsoft.com/ja-jp/library/dd264925.aspx
IntelliTrace
• デバッグ中の実行履歴を記録する機能
• 記録した時点から再実行が可能
• .NET Framework 2.0以降のアプリケーションで利用可能
• ※Visual Studio Enterpriseのみの機能
18
診断ツール
• アプリケーション実行時のシステム情報を表示
• アプリケーション内のイベント
• メモリ使用量
• CPU使用率
• Entity Frameworkが発行するSQL文も出力
• ブレークポイントからデバッグを再開
19
単体テスト
• コード化した単体テスト
• MSTest
• Visual Studio標準搭載のテストツール
• Visual Studio Communityでも利用可能
• NUnit
• http://www.nunit.org/
• サードパーティ製のテストツール
• 拡張機能「NUnit Test Adapter」をインストールすれば
Visual Studioでも利用可能
20
NUnitの導入手順
1. クラスライブラリプロジェクトを作成
2. テスト対象のプロジェクトを参照設定
3. NuGetにて NUnit、NUnitTestAdapterをインストール
• NUnitはバージョン2.xをインストールすること
• バージョン3.0.0では単体テストがVS上に表示されない
21
IntelliTest
• 単体テストを自動生成する機能
• ソースコードを解析し、テストケースを網羅
• https://msdn.microsoft.com/library/dn823749.aspx
• ※Visual Studio Enterpriseのみの機能
22
自動化すれば効率も上がる!
23
自動化のサイクル
コーディング
コミット
ビルドテスト
デプロイ
24
自動化のサイクル
コーディング
コミット
ビルドテスト
デプロイ
25
26
Jenkins
• 継続的インテグレーションツール
• CI (Continuous Integration)
• ビルドやテストを頻繁に繰り返し行なうことにより問題を早期に発見
し、開発の効率化・省力化や納期の短縮を図る手法(引用元)
• CI以外にも定期タスク等も行うことが出来る
• http://jenkins-ci.org/
27
28
https://wiki.jenkins-ci.org/display/JENKINS/Logo
ビルドやテストの環境作り
• 今回は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
ビルドやテストの環境作り
• Microsoft Azureの仮想マシンがオススメです
• Visual Studioがインストール済のイメージが有ります
30
Jenkinsで自動ビルド
1. Jenkinsに MSBuildプラグインをインストール
• ビルドの実行、結果やエラー情報を保存
• https://wiki.jenkins-ci.org/display/JENKINS/MSBuild+Plugin
2. Jenkinsでのビルド構成を設定
• MSBuild.exeのパスを指定
• MSBuild.exe実行時のオプションを指定
31
32
33
デモ
Jenkinsで自動テスト
1. JenkinsにMSTest Runnerプラグインをインストール
• テストの実行、結果やエラー情報を保持
• https://wiki.jenkins-ci.org/display/JENKINS/MSTestRunner+Plugin
2. Jenkinsでのテスト構成を設定
• MSTest.exeのパスを設定
• MSTest.exe実行時のオプションを指定
34
35
36
デモ
自動化のサイクル
コーディング
コミット
ビルドテスト
デプロイ
37
ありがとうございました。

Weitere ähnliche Inhalte

Was ist angesagt?

110823久高島取り組み紹介スライド
110823久高島取り組み紹介スライド110823久高島取り組み紹介スライド
110823久高島取り組み紹介スライド
Yukihide Fukada
 
Seiwa jyuku yahoo japan group 030913
Seiwa jyuku yahoo japan group 030913Seiwa jyuku yahoo japan group 030913
Seiwa jyuku yahoo japan group 030913
SnowSugar Video
 

Was ist angesagt? (19)

110823久高島取り組み紹介スライド
110823久高島取り組み紹介スライド110823久高島取り組み紹介スライド
110823久高島取り組み紹介スライド
 
IoTを擬人化してみた そして巨大化してみる
IoTを擬人化してみた そして巨大化してみるIoTを擬人化してみた そして巨大化してみる
IoTを擬人化してみた そして巨大化してみる
 
ブログ駆動人生 - 高専生のキャリアについて考える会(20150823)
ブログ駆動人生 - 高専生のキャリアについて考える会(20150823)ブログ駆動人生 - 高専生のキャリアについて考える会(20150823)
ブログ駆動人生 - 高専生のキャリアについて考える会(20150823)
 
Global Game Jam Sapporo 2016 参加記 - Josho.LT
Global Game Jam Sapporo 2016 参加記 - Josho.LTGlobal Game Jam Sapporo 2016 参加記 - Josho.LT
Global Game Jam Sapporo 2016 参加記 - Josho.LT
 
[WordCampKyoto2017]レンサバで頑張ってるあなたに捧ぐ
[WordCampKyoto2017]レンサバで頑張ってるあなたに捧ぐ[WordCampKyoto2017]レンサバで頑張ってるあなたに捧ぐ
[WordCampKyoto2017]レンサバで頑張ってるあなたに捧ぐ
 
20150313 社内LT - そこに繋がりはあるか
20150313 社内LT - そこに繋がりはあるか 20150313 社内LT - そこに繋がりはあるか
20150313 社内LT - そこに繋がりはあるか
 
2020年度 文献管理講習会~Smartレポート術!~
2020年度 文献管理講習会~Smartレポート術!~2020年度 文献管理講習会~Smartレポート術!~
2020年度 文献管理講習会~Smartレポート術!~
 
note勉強会@NagatachoGRiD
note勉強会@NagatachoGRiDnote勉強会@NagatachoGRiD
note勉強会@NagatachoGRiD
 
3minアプリ作り
3minアプリ作り3minアプリ作り
3minアプリ作り
 
Soushikai academia-20120915
Soushikai academia-20120915Soushikai academia-20120915
Soushikai academia-20120915
 
GGJとその取り組みについて2022
GGJとその取り組みについて2022GGJとその取り組みについて2022
GGJとその取り組みについて2022
 
Seiwa jyuku yahoo japan group 030913
Seiwa jyuku yahoo japan group 030913Seiwa jyuku yahoo japan group 030913
Seiwa jyuku yahoo japan group 030913
 
Xamarin でのモバイルアプリ開発 周辺基礎知識
Xamarin でのモバイルアプリ開発 周辺基礎知識Xamarin でのモバイルアプリ開発 周辺基礎知識
Xamarin でのモバイルアプリ開発 周辺基礎知識
 
白い陽気なやつとPythonでたわむれる
白い陽気なやつとPythonでたわむれる白い陽気なやつとPythonでたわむれる
白い陽気なやつとPythonでたわむれる
 
手書きチラシとソーシャルメディアで成功する秘訣に共通項
手書きチラシとソーシャルメディアで成功する秘訣に共通項手書きチラシとソーシャルメディアで成功する秘訣に共通項
手書きチラシとソーシャルメディアで成功する秘訣に共通項
 
VRセミナー講演資料20161119
VRセミナー講演資料20161119VRセミナー講演資料20161119
VRセミナー講演資料20161119
 
第4回 釧路OSS札幌 勉強会「自己紹介LT」 #946oss札幌
第4回 釧路OSS札幌 勉強会「自己紹介LT」 #946oss札幌第4回 釧路OSS札幌 勉強会「自己紹介LT」 #946oss札幌
第4回 釧路OSS札幌 勉強会「自己紹介LT」 #946oss札幌
 
レポートを書くために(中級)2020
レポートを書くために(中級)2020レポートを書くために(中級)2020
レポートを書くために(中級)2020
 
kintoneハンズオン♪
kintoneハンズオン♪kintoneハンズオン♪
kintoneハンズオン♪
 

Andere mochten auch

《kintoneプラグイン》「Movable Type連携」のご紹介
《kintoneプラグイン》「Movable Type連携」のご紹介《kintoneプラグイン》「Movable Type連携」のご紹介
《kintoneプラグイン》「Movable Type連携」のご紹介
Sakae Saito
 

Andere mochten auch (20)

20160402_Awsで簡単実装cmsサイト
20160402_Awsで簡単実装cmsサイト20160402_Awsで簡単実装cmsサイト
20160402_Awsで簡単実装cmsサイト
 
機械学習プロ生20151121
機械学習プロ生20151121機械学習プロ生20151121
機械学習プロ生20151121
 
20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春
20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春
20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春
 
20160402 jaws oita_opening
20160402 jaws oita_opening20160402 jaws oita_opening
20160402 jaws oita_opening
 
Asp.netとbluemixで遊んでみたお話
Asp.netとbluemixで遊んでみたお話Asp.netとbluemixで遊んでみたお話
Asp.netとbluemixで遊んでみたお話
 
Webデザイナー視点で使ってみた Microsoft Azureの話
Webデザイナー視点で使ってみたMicrosoft Azureの話Webデザイナー視点で使ってみたMicrosoft Azureの話
Webデザイナー視点で使ってみた Microsoft Azureの話
 
AWS free tier maximization
AWS free tier maximizationAWS free tier maximization
AWS free tier maximization
 
《kintoneプラグイン》「Movable Type連携」のご紹介
《kintoneプラグイン》「Movable Type連携」のご紹介《kintoneプラグイン》「Movable Type連携」のご紹介
《kintoneプラグイン》「Movable Type連携」のご紹介
 
kintone café 大阪 Vol.3
kintone café 大阪 Vol.3 kintone café 大阪 Vol.3
kintone café 大阪 Vol.3
 
【kintone café松江#1】kintoneの可能性
【kintone café松江#1】kintoneの可能性【kintone café松江#1】kintoneの可能性
【kintone café松江#1】kintoneの可能性
 
20150715 kintone Café 大阪 Vol.3 カスタマイズハンズオン
20150715 kintone Café 大阪 Vol.3 カスタマイズハンズオン20150715 kintone Café 大阪 Vol.3 カスタマイズハンズオン
20150715 kintone Café 大阪 Vol.3 カスタマイズハンズオン
 
kintone Café 福岡 vol.6 / kintone.Promise を使ったREST API更新処理
kintone Café 福岡 vol.6 / kintone.Promise を使ったREST API更新処理kintone Café 福岡 vol.6 / kintone.Promise を使ったREST API更新処理
kintone Café 福岡 vol.6 / kintone.Promise を使ったREST API更新処理
 
第35回 WordBench 大阪 kintoneハンズオン
第35回 WordBench 大阪 kintoneハンズオン第35回 WordBench 大阪 kintoneハンズオン
第35回 WordBench 大阪 kintoneハンズオン
 
20150624 kintone Café 福岡
20150624 kintone Café  福岡20150624 kintone Café  福岡
20150624 kintone Café 福岡
 
kintone Café 新潟 Vol.2 -kintone magic-
kintone Café 新潟 Vol.2 -kintone magic-kintone Café 新潟 Vol.2 -kintone magic-
kintone Café 新潟 Vol.2 -kintone magic-
 
「納品のないkintone受託開発」で お客様が価値を感じたポイントは?
「納品のないkintone受託開発」でお客様が価値を感じたポイントは?「納品のないkintone受託開発」でお客様が価値を感じたポイントは?
「納品のないkintone受託開発」で お客様が価値を感じたポイントは?
 
kintone Café 福岡 Vol.1(kintoneまとめ・ハンズオン)
kintone Café 福岡 Vol.1(kintoneまとめ・ハンズオン)kintone Café 福岡 Vol.1(kintoneまとめ・ハンズオン)
kintone Café 福岡 Vol.1(kintoneまとめ・ハンズオン)
 
APIで広がるkintoneの世界
APIで広がるkintoneの世界APIで広がるkintoneの世界
APIで広がるkintoneの世界
 
kintone基本操作ガイド
kintone基本操作ガイドkintone基本操作ガイド
kintone基本操作ガイド
 
kintone devCamp Vol.5 LT資料
kintone devCamp Vol.5 LT資料kintone devCamp Vol.5 LT資料
kintone devCamp Vol.5 LT資料
 

Ähnlich wie 開発を効率化してみよう.NET (6)

ゲームジャム高梁2023_オンライン事前勉強会
ゲームジャム高梁2023_オンライン事前勉強会ゲームジャム高梁2023_オンライン事前勉強会
ゲームジャム高梁2023_オンライン事前勉強会
 
【2021年3月】平成生まれのためのUNIX&IT歴史講座
【2021年3月】平成生まれのためのUNIX&IT歴史講座【2021年3月】平成生まれのためのUNIX&IT歴史講座
【2021年3月】平成生まれのためのUNIX&IT歴史講座
 
【2021年7月】平成生まれのためのUNIX&IT歴史講座
【2021年7月】平成生まれのためのUNIX&IT歴史講座【2021年7月】平成生まれのためのUNIX&IT歴史講座
【2021年7月】平成生まれのためのUNIX&IT歴史講座
 
WordFesの翌日はタワーに登りましょう
WordFesの翌日はタワーに登りましょうWordFesの翌日はタワーに登りましょう
WordFesの翌日はタワーに登りましょう
 
20180208_shibuya30_final_spoppy
20180208_shibuya30_final_spoppy20180208_shibuya30_final_spoppy
20180208_shibuya30_final_spoppy
 
OSCで何するの? (オープンソースカンファレンス2013 Tokushima LT用) 代理発表 白影さんじゃい
OSCで何するの? (オープンソースカンファレンス2013 Tokushima LT用) 代理発表 白影さんじゃいOSCで何するの? (オープンソースカンファレンス2013 Tokushima LT用) 代理発表 白影さんじゃい
OSCで何するの? (オープンソースカンファレンス2013 Tokushima LT用) 代理発表 白影さんじゃい
 

Mehr von Yuta Matsumura

Mehr von Yuta Matsumura (20)

「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer
 
チーム開発で徐々にコード品質をあげていく取り組み
チーム開発で徐々にコード品質をあげていく取り組みチーム開発で徐々にコード品質をあげていく取り組み
チーム開発で徐々にコード品質をあげていく取り組み
 
.NETのサポートポリシーのおさらい #csharptokyo
.NETのサポートポリシーのおさらい #csharptokyo.NETのサポートポリシーのおさらい #csharptokyo
.NETのサポートポリシーのおさらい #csharptokyo
 
App Modernization for .NET
App Modernization for .NETApp Modernization for .NET
App Modernization for .NET
 
分かったうえではじめるCI/CD
分かったうえではじめるCI/CD分かったうえではじめるCI/CD
分かったうえではじめるCI/CD
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
いつでもどこでも .NET
いつでもどこでも .NETいつでもどこでも .NET
いつでもどこでも .NET
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
マイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tyeマイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tye
 
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
 
Azure の ID 管理サービスに LINE ログインを組み込もう
Azure の ID 管理サービスに LINE ログインを組み込もうAzure の ID 管理サービスに LINE ログインを組み込もう
Azure の ID 管理サービスに LINE ログインを組み込もう
 
Blazor Server テンプレート解説
Blazor Server テンプレート解説Blazor Server テンプレート解説
Blazor Server テンプレート解説
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返る
 
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
 
忙しい人のための .NET Conf 2019 まとめ
忙しい人のための .NET Conf 2019 まとめ忙しい人のための .NET Conf 2019 まとめ
忙しい人のための .NET Conf 2019 まとめ
 
.NET Conf の歩き方
.NET Conf の歩き方.NET Conf の歩き方
.NET Conf の歩き方
 
PHPカンファレンス福岡2019 閉会式
PHPカンファレンス福岡2019 閉会式PHPカンファレンス福岡2019 閉会式
PHPカンファレンス福岡2019 閉会式
 
PHPカンファレンス福岡2019 開会式
PHPカンファレンス福岡2019 開会式PHPカンファレンス福岡2019 開会式
PHPカンファレンス福岡2019 開会式
 
これから始める Bot Builder 開発のコツと舞台裏
これから始める Bot Builder 開発のコツと舞台裏これから始める Bot Builder 開発のコツと舞台裏
これから始める Bot Builder 開発のコツと舞台裏
 

Kürzlich hochgeladen

Kürzlich hochgeladen (10)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

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