Enviar pesquisa
Carregar
20130603 aspnet勉強会 実践的debugging
•
0 gostou
•
1,338 visualizações
kumake
Seguir
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 37
Recomendados
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
Daisuke Tamada
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
SHIFT Inc.
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
Kazuhiro Sera
開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて
Takaaki Kasai
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
kyon mm
0からのプログラミング研修
0からのプログラミング研修
Jun Chiba
TDDの原理 ~ スペック・ファースト
TDDの原理 ~ スペック・ファースト
Yasuhiko Yamamoto
Recomendados
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
Daisuke Tamada
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
SHIFT Inc.
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
Kazuhiro Sera
開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて
Takaaki Kasai
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
kyon mm
0からのプログラミング研修
0からのプログラミング研修
Jun Chiba
TDDの原理 ~ スペック・ファースト
TDDの原理 ~ スペック・ファースト
Yasuhiko Yamamoto
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
Daisuke Tamada
中の下のエンジニアを脱出するための目標設定
中の下のエンジニアを脱出するための目標設定
空宙 小笠原
単体テストのすゝめ
単体テストのすゝめ
Li Satoshi
engineer-life
engineer-life
karupanerura
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!
虎の穴 開発室
DevLove 甲子園2014 インクリメンタルに設計・テストする
DevLove 甲子園2014 インクリメンタルに設計・テストする
Yasushi Hagai
ゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼン
光晶 上原
プログラマーのお仕事
プログラマーのお仕事
Kohei Kadowaki
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)
Tatsuya Ishikawa
パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)
odakeiji
仕様七変化
仕様七変化
galluda
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
Hiroyuki Tanaka
今、おさえておきたい DevOps
今、おさえておきたい DevOps
智治 長沢
#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン
kyon mm
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
Katsuhiro Morishita
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
ume3_
非開発者のためのアジャイル開発入門
非開発者のためのアジャイル開発入門
Kiro Harada
Dockerを使ってローカルテストを良い感じに実装した話
Dockerを使ってローカルテストを良い感じに実装した話
Ryo Yamaoka
【Microsoft Conference Japan Tour 2010】 T4-2 クラウド時代を迎えたソフトウェア開発における現場力の向上
【Microsoft Conference Japan Tour 2010】 T4-2 クラウド時代を迎えたソフトウェア開発における現場力の向上
智治 長沢
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
Satoru Kodaira
第1回 モデリング勉強会
第1回 モデリング勉強会
hakoika-itwg
eXtremeProgramming入門
eXtremeProgramming入門
You&I
Mais conteúdo relacionado
Mais procurados
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
Daisuke Tamada
中の下のエンジニアを脱出するための目標設定
中の下のエンジニアを脱出するための目標設定
空宙 小笠原
単体テストのすゝめ
単体テストのすゝめ
Li Satoshi
engineer-life
engineer-life
karupanerura
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!
虎の穴 開発室
DevLove 甲子園2014 インクリメンタルに設計・テストする
DevLove 甲子園2014 インクリメンタルに設計・テストする
Yasushi Hagai
ゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼン
光晶 上原
プログラマーのお仕事
プログラマーのお仕事
Kohei Kadowaki
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)
Tatsuya Ishikawa
Mais procurados
(9)
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
中の下のエンジニアを脱出するための目標設定
中の下のエンジニアを脱出するための目標設定
単体テストのすゝめ
単体テストのすゝめ
engineer-life
engineer-life
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!
DevLove 甲子園2014 インクリメンタルに設計・テストする
DevLove 甲子園2014 インクリメンタルに設計・テストする
ゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼン
プログラマーのお仕事
プログラマーのお仕事
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)
Semelhante a 20130603 aspnet勉強会 実践的debugging
パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)
odakeiji
仕様七変化
仕様七変化
galluda
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
Hiroyuki Tanaka
今、おさえておきたい DevOps
今、おさえておきたい DevOps
智治 長沢
#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン
kyon mm
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
Katsuhiro Morishita
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
ume3_
非開発者のためのアジャイル開発入門
非開発者のためのアジャイル開発入門
Kiro Harada
Dockerを使ってローカルテストを良い感じに実装した話
Dockerを使ってローカルテストを良い感じに実装した話
Ryo Yamaoka
【Microsoft Conference Japan Tour 2010】 T4-2 クラウド時代を迎えたソフトウェア開発における現場力の向上
【Microsoft Conference Japan Tour 2010】 T4-2 クラウド時代を迎えたソフトウェア開発における現場力の向上
智治 長沢
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
Satoru Kodaira
第1回 モデリング勉強会
第1回 モデリング勉強会
hakoika-itwg
eXtremeProgramming入門
eXtremeProgramming入門
You&I
カンバンゲーム
カンバンゲーム
Yasui Tsutomu
アート・オブ・アジャイル デベロップメント 〜テストが駆動するビジネス価値〜
アート・オブ・アジャイル デベロップメント 〜テストが駆動するビジネス価値〜
Fumihiko Kinoshita
20130320 agile pm
20130320 agile pm
Takao Kimura
テストコードの定型化
テストコードの定型化
Shinichi Hirauchi
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
Hiro Yoshioka
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
Semelhante a 20130603 aspnet勉強会 実践的debugging
(20)
パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)
仕様七変化
仕様七変化
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
今、おさえておきたい DevOps
今、おさえておきたい DevOps
#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
非開発者のためのアジャイル開発入門
非開発者のためのアジャイル開発入門
Dockerを使ってローカルテストを良い感じに実装した話
Dockerを使ってローカルテストを良い感じに実装した話
【Microsoft Conference Japan Tour 2010】 T4-2 クラウド時代を迎えたソフトウェア開発における現場力の向上
【Microsoft Conference Japan Tour 2010】 T4-2 クラウド時代を迎えたソフトウェア開発における現場力の向上
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
第1回 モデリング勉強会
第1回 モデリング勉強会
eXtremeProgramming入門
eXtremeProgramming入門
カンバンゲーム
カンバンゲーム
アート・オブ・アジャイル デベロップメント 〜テストが駆動するビジネス価値〜
アート・オブ・アジャイル デベロップメント 〜テストが駆動するビジネス価値〜
20130320 agile pm
20130320 agile pm
テストコードの定型化
テストコードの定型化
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
20130603 aspnet勉強会 実践的debugging
1.
ケーススタディから学ぶ 実践的 DEBUGGING 2013/06/03 ケーススタディから学ぶ実践的 ASP.NET
勉強会 @kumake1004
2.
Who...? • My name
is... • @kumake1004 / kumake • はてなだけ kendik • My work is... • 都内某ベンチャー勤務 • Pro Exceler • 動作検証、調査を行ったり • 調整(要件、人、スケジュール)に奔走したり • ごく稀にプログラミング
3.
今日お話しすること • コードを書かないのでノウハウ無し • 今日は
Debug / Diagnostic ツールの紹介 • まだコードを書いていた時代に遭遇した問 題や、同僚が遭遇した問題に絡めてケース スタディから学んでる感を演出します
4.
デバッグについて “一般的に言って、デバッグは面倒で退屈な 作業である。 実際の作業ではプログラマのデバッグに関 するスキルがおそらく最も重要な要素とな るが、ソフトウェアのデバッグの難易度は 使用するプログラミング言語やデバッガな どのツールによって大きく左右される。” - Wikipedia デバッグ
5.
そう、生産性 • ソフトウェア開発において、コーディング が占める割合はほんの僅か • 大半は要件定義、設計、テスト •
僅かしかないコーディングも、デバッグが 半分以上(主観)
6.
楽しいコーディングのために • デバッグ作業を • もっと効率よく •
もっと手軽に • 今日紹介するツールで、尐しでもデバッグ が楽になれば
7.
事例 その一
8.
パフォーマンスチューニングしてた • パフォーマンスチューニングはボトルネッ クの特定から • ASP.NET
MVC & C# 環境でパフォーマン スのボトルネックを特定するには?
9.
たとえばこんなコードが public ActionResult HogeAction(int
id) { var model = _repo.Find(id); if(model.Hage()) { model.Something = "hogehoge"; _repo.Save(); } return View(model); }
10.
当時はこんな解決 • System.Diagnostics.Stopwatch • Stopwatch.StartNew
スタティックメソッドで ストップウォッチを開始して、 • Stopwatch.Stop メソッドでストップウォッチを 止めて • Stopwatch.ElapsedMilliseconds プロパティの結 果を Console.WriteLine スタティックメソッド で出力する
11.
こんな汚いコードに public ActionResult HogeAction(int
id) { var sw = Stopwatch.StartNew(); var model = _repo.Find(id); sw.Stop(); Console.WriteLine("Elapsed1 > " + sw.ElapsedMilliseconds); sw.Restart(); if(model.Hage()) { var sw2 = Stopwatch.StartNew(); model.Something = "hogehoge"; _repo.Save(); sw2.Stop(); Console.WriteLine("Elapsed2 > " + sw2.ElapsedMilliseconds); } sw.Stop(); Console.WriteLine("Elapsed1 > " + sw.ElapsedMilliseconds); sw.Restart(); return View(model); }
12.
もう尐しスマートにやるなら • Miniprofiler の導入 •
UI キレイ • Entity Framework のクエリと Duration も 見れる
13.
14.
15.
でも実は... • これだけの情報を表示するなら • Global.asax
に修正が必要 • Application_BeginRequest イベント • Application_EndRequest イベント
16.
でも実は... • 計測箇所にも修正が必要 using StackExchange.Profiling; ... //
計測用オブジェクトを作って var profiler = MiniProfiler.Current; // 計測したい処理を using 内に using (profiler.Step("Set page title")) { ViewBag.Title = "Home Page"; } using (profiler.Step("Doing complex stuff")) { using (profiler.Step("Step A")) { Thread.Sleep(100); } using (profiler.Step("Step B")) { Thread.Sleep(250); } }
17.
もっと簡単にデバッグ出来ないか • 自分で計測コードを埋め込むと面倒 • 埋め込んだら埋め込んだで、コードが非常 に汚くなる •
ライブラリを使うと、見え方はキレイにな る • でも相変わらず実装に修正が必要
18.
事例 その二
19.
MVC のコントローラ作ってた • 上手くルーティングされない •
上手くモデルバインディングされない
20.
当時はこんな解決 • とにかく気合いでデバッグ(白目 • ルーティングを最小限にして、一つずつ問 題の切り分け •
モデルバインディングも、モデルの属性を 減らして、一つずつ問題の切り分け
21.
Stackoverflow でも… • Stackoverflow •
http://stackoverflow.com/questions/4651085/best-practices- for-debugging-asp-net-mvc-binding
22.
回答 • MVC ソースコードのステップ実行
23.
もう尐しスマートにやるなら • ASP.NET MVC Routing
Debugger
24.
モデルバインディングは? • なし • (何か良いのあったら教えてください)
25.
Web API なら •
Web API Route Debugger 一択
26.
もっと簡単にデバッグ出来ないか • 地道にやるのは耐えられない • いくつか使えそうなツールはあるが... •
問題領域毎にライブラリ/ツールを入れるの? • 溢れるリポジトリ(Nuget パッケージの復元のお 陰で今は大分楽だけど) • で、モデルバインディングは?
27.
GLIMPSE の紹介
28.
統合デバッグ環境 Glimpse
29.
Glimpse の紹介...の前に • Glimpse
を見つけて遊んでたのが 5/17 頃 • 日本語の情報がほとんど無いからあまり知 られていない? • これは勉強会のテーマに良いかも!?
30.
tが、5/22 witter にて
31.
あっ...(察し
32.
改めて Glimpse • OSS
の Debug / Diagnostic ツール • Nuget からインストール可能 • PM> Install-Package Glimpse • プラグインによってデバッグ出来る内容が 異なる • プラグインも Nuget からインストールで簡単 • e.g. Glimpse.AspNet, Glimpse.Mvc4, Glimpse.EF6, Glimpse.SignalR ...
33.
改めて Glimpse
34.
Glimpse でどうなる? • コレ一つでほとんどのケースをデバッグ可 •
Entity Framework のクエリ / duration 確認可能 • アクションメソッドの duration 確認可能 • Routing Resolution も確認可能 • モデルバインディングも確認可能 • リモート環境のデバッグが出来る • 他のデバッグツールが不要 • ツールは尐ない方が良いよね! • デバッグノウハウも共有 • 実装への影響もなし • Web.config への修正だけで OK
35.
DEMO • Glimpse のインストール •
Glimpse デバッグ画面の確認 • いくつかの機能を実際に確認 • Configuration • Session • Model Binding • Ajax • Trace • Execution • Entity Framework SQL • PM> Install-Package Glimpse.EF5 • Web.config の修正
36.
まとめ • クライアントサイドのデバッグを置き換え るものではない • Chrome
Developer Tool と併用可能 • サーバサイドのデバッグは Glimpse にお任 せ • Glimpse でデバッグ時間を短縮して快適な 開発ライフを
37.
ご清聴 ありがとうございました