Movatterモバイル変換


[0]ホーム

URL:


慎一 古賀, profile picture
Uploaded by慎一 古賀
PPTX, PDF87,107 views

ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発

これから C# 開発を始める方、あるいはチームの開発品質をあげたい リーダー・マネージャ向けに、C# の勉強方法を解説した、約2時間の研修用の資料です。

Embed presentation

Downloaded 532 times
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発1Microsoft MVP - ソフトバンク・テクノロジー株式会社(エキスパートエンジニア)古賀 慎一2015年4月28日(火)Copyright© 2015 Shin-ichi Koga All Rights Reserved.
このセッションのゴール※本セッションの対象者は C# 初心者、あるいはチームの開発品質をあげたい リーダー・マネージャ“ちゃんとしたC#プログラムを書く”こと のイメージを持つVisual Studioで何が出来るか? を理解する 勉強方法を理解し、明日の開発から 実践 出来るようになる高品質・低コスト・保守性の高い開発を行えるようになろう!2
自己紹介3古賀 慎一Microsoft MVP for Visual Studio ALMソフトバンク・テクノロジー株式会社 Project Management Office (PMO) エキスパートエンジニア クラウドサービス Online Service Gate® で TFS 導入事例 前職では 某大手 情報サイトのデータ入稿システム のフレームワークを開発 「仕組み」作りで 如何に高品質・低コストで早い開発を実現できるか? エンタープライズ向けの実践的な C# サンプルを公開
アジェンダ “ちゃんとしたプログラムを書ける” とは? 絶対に身につけるべき事 C#言語の特徴 領域別 解説 勉強の仕方4
“ちゃんとしたプログラムを書ける” とは?具体的なゴールはなんだろう?5
経験年数に応じて今後10年~20年で経験すること 言語を理解し、プログラムを書く ( if, for, List<T>, ()=>) ライブラリ・サービスを組み合わせてアプリを組む ( NuGet, Azure, SQL ) 自分で設計を工夫し、オブジェクト指向で実装 ( class, interface ) デザインパターンを理解し、適切な設計を判断 ( LINQ, MVVM, UML, UX ) プロジェクト全体を俯瞰して課題を解決 ( PMBOK, Facilitation ) ビジネス・会社・社会・世界を俯瞰して問題を解決 ( Advocacy, Influencer )6
役割で異なるゴール エンジニア リーダー マネージャ / アーキテクト 部長・役員・ステークホルダー(株主・取引先・顧客・NPO )全体のベスト ≠ それぞれのベスト次の役割に移る時に必ず障壁がある(評価は必ず後からついてくる) 7
変化する世界で求められるゴール Windows の進化 言語の進化 ( C++, Visual Basic, Java, .net Framework, C#, Ruby, F# ...) サーバークライアント, Web, スマートフォン、クラウド、機械学習、IoT20年前は一つのコンピュータの中で動作するプログラムが書ければ仕事になった現代では パブリック/プライベート クラウド とのハイブリッドが必須※C#の最先端はインターネットに繋がるセンサーの制御と得られたビックデータを活用すること ー Azureを使えば誰でも 8
グローバルスタンダードはゴール? Microsoft 資格 ( MCSD ) ※最新の資格は基礎向けではないので注意 国家資格 ( ITパスポート、基本情報処理、応用情報処理・・・) PMBOK ( PMP )資格試験で問われる内容は理想論で、現場では役に立たない?9
PMBOKについて説明したものはどれか?A) システム開発を行う組織がプロセス改善を行うためのガイドラインとなるものである。B) 組織全体のプロジェクトマネジメントの能力と品質を向上し,個々のプロジェクトを支援することを目的に設置される専門部署である。C) ソフトウェアエンジニアリングに関する理論や方法論,ノウハウ,そのほかの各種知識を体系化したものである。D) プロジェクトマネジメントの知識を体系化したものである。10
PMBOKについて説明したものはどれか?(答え)A) システム開発を行う組織がプロセス改善を行うためのガイドラインとなるものである。B) 組織全体のプロジェクトマネジメントの能力と品質を向上し,個々のプロジェクトを支援することを目的に設置される専門部署である。C) ソフトウェアエンジニアリングに関する理論や方法論,ノウハウ,そのほかの各種知識を体系化したものである。D)プロジェクトマネジメントの知識を体系化したものである。※ ITパスポート 平成27年春期 問41 - ITパスポート試験ドットコム ( http://www.itpassportsiken.com/ ) より引用 11
グローバルスタンダードはゴールではなく武器 Microsoft 資格 ( MCSD ) ※最新の資格は基礎向けではないので注意 国家資格 ( ITパスポート、基本情報処理、応用情報処理・・・) PMBOK ( PMP ) ⇒ Visual Studio もこれがわかっている前提で構成誤:資格試験で問われる内容は理想論で、現場では役に立たない正:資格試験で問われる共通言語で話せない人は、現場では役に立たない資格試験は時代に合わせて進化していて、最新のものは実践的で現実的な問題が多い 12
あなたに求められるゴールは時代の変化に応じて最適な手法で品質・生産性・保守性を担保できること13
Visual Studio を使ってC#でどうやって実現するか?14
絶対に身につけるべき事Visual Studio で C# を使って開発する基本的・具体的な方法15
絶対に身につけるべき事1. 常に綺麗なコードを書く方法2. 格安で必要な範囲を的確にテスト出来る方法3. 格安で何度でも容易に安全にデプロイ(配置)出来る方法4. 複数人のチームで開発する方法将来 Visual Studio のバージョンが変わっても、これを忘れないこと※ Visual Studio では設計も扱えますが、このセッションでは解説しません 16
絶対に身につけるべき事1. 常に綺麗なコードを書く方法2. 格安で必要な範囲を的確にテスト出来る方法3. 格安で何度でも容易に安全にデプロイ(配置)出来る方法4. 複数人のチームで開発する方法17
1. 常に綺麗なコードを書く方法 静的コード分析を有効にする MVVM を理解する(データバインドを使える)未経験者にとって覚えることは沢山ありますが、まずこの2つを目標に※当然 C# の文法などは教科書で勉強する必要がありますが(後で教科書を紹介します)始める前に知っておいて欲しい!18
静的コード分析を有効にする常に綺麗なコードを書く方法①19
静的コード分析はペアプログラミングの代わり Visual Studio プロジェクトに設定(プロジェクト単位でコード分析を有効にする) ビルドするたびに、問題を探して警告に表示 標準の警告より、バグや問題になりやすい問題を詳細に指摘してくれる優秀なエンジニアとペアプロしている気分=(ちょっとウザい時もあるけれど)的確に指摘してくれる20
コードを書く・ビルドする・エラーの説明を読む エラーは修正しないとプログラムがうごかないので誰でも直す 多くの人は警告を無視・放置する じゃぁ、警告は何のために出ているのか?=もしかしてバグなんじゃね? 10年前に「静的コード分析」が誕生=もっとバグっぽいのあるんじゃね?確かに警告のヘルプは何言ってるか?わかんないこと多いけど10歳以上年の離れた先輩の言っていることも、わからないことが多いから同じような(以下略) 21この癖を
どんなことを教えてくれるのか?(1) IDisposable の Dispose 忘れ(using, try-finally で必ず解放)メモリーリークしていませんか?GCが動いて突然遅くなることないですか? 使われていない変数の宣言宣言しただけで使われていない変数がある別の変数や仮の定数をいれておいて、変更するのを忘れてないですか?動かすまでもなくバグっぽいよね 22最重要!
どんなことを教えてくれるのか?(2) 英語のスペルミス恥ずかしい(一生残ります)同じ単語の正しいスペルとスペルミスの2つが存在する場合、バグになる可能性が 省略形の禁止昔は長い変数名が使えなかったので省略が普通でした、が、バグも多かったml は メーリングリスト の略?機械学習の略?(時代と人によってイメージが違う)ちょっと口うるさいケド、人間同士で宗教的な論争になるよりマシ 23
どんなことを教えてくれるのか?(3) この例がダメな理由がわかりますか?public string CreateTransactionId ( FileInfo userFile ){return “TR” + userFile.FullName.GetHashCode() ;}実際に同様の問題でバグになるケースが沢山あります静的コード分析を有効にしていれば、「警告」で気付くことが出来ます 宿題:この静的コード分析の説明とスローされる例外を確認 24
静的コード分析 導入を阻む者達 新規作成した空のプロジェクトが警告になる ので嫌になるCLSCompliant (true or false) を追加するKey.snk ファイルで署名する ー 昔は署名の意味が .net 2.0 の MCP 試験に出題されました定番の警告は「お決まりのやるべき事」と覚える(そんなに数はありません) Visual Studio 2013, 2015 日本語版はバグで、正常に動作しない分析があるMicrosoft にフィードバックしました今は 英語版を使う or 完全ではなくても日本語版で使える範囲で 25
リーダー・マネージャーが肝に銘じること 開発メンバーが「静的コード分析は難しくて納期に間に合いません」と言ってきたら 「納期までに完成させられますが、瑕疵として修正する必要があるバグがどれだけあるか?私にはわかりません」と言っている と思うべき 上級者向けではなく、新人教育・コードレビューで指摘する内容 歴史的経緯・お金の都合でデフォルト有効じゃないだけ(※ 以前は上位エディションでしか使えなかった。Microsoft の上位機能は手軽さをお金で買うイメージが近い)26
実際の案件で使えなくても C#を勉強するときには必ず「静的コード分析」有効にする どんな教科書・サンプルを使った勉強でもこれを実践するだけで、どんどんちゃんとしたプログラムが書けるようになる! 自分が担当するときだけ有効にするという手も 既存資産(会社のプログラムコード、特に2005年より前のもの)には適用出来ない場合もあるが、適用して何が問題か?確認するのも勉強になります27
MVVM を理解する(データバインドを使える)常に綺麗なコードを書く方法②28
MVVMはどんなアプリを作るときも標準の考え方 M : Model DBやクラウドサービスから入手したデータを入れる箱 V: View 画面に表示して、人間がデータの内容を確認出来るようにする VM : View Model 画面(V) に表示するために、モデル(M) を複製して、その画面用のモデル(VM) とする※ 2005年頃 Microsoft で提案され、.net Framework 3.0 から採用。JavaScript や Android にも普及29
MVVM : Model – View – View Model の動き DBやクラウドから取得した Model を、画面用の View Model に格納 画面にデータバインドで表示 双方向バインドなら V でユーザーが値を変える VM も変わる プログラムで今度は逆に VM から M に格納、それぞれDBやクラウドに保存する30“A” Model“C” View Model View “C”Database “A”Cloud Service “B” “B” ModelデータバインドData BindingWeb API, WCFEntity Framework, LINQ to SQL
MVVMは変更に強い(保守性が高い) 新サービスが増えても、DBを変えても低コストで対応可能31“A2” Model“C” View ModelView “C”part 1part 2Database “A2”Cloud Service “B” “B” ModelデータバインドData BindingWeb API, WCFEntity Framework, LINQ to SQL“D” Model “C2” View ModelNew Service “D”
イベントでプロパティを代入するのは古典的 Console アプリでは前から順に値を出力すればいい 昔の Windows / Web はその考え方の延長「イベントでプロパティ代入」で実装されていた Windows / Web / App 画面を伴うアプリは全てユーザーの入力がある 現代のアプリは DB や複数のクラウドサービスから値を取得・保存する 非同期で(リアルタイムに)画面が更新される イベントとプロパティ代入では対応出来ない = データバインドが必要32
昔よく見られた失敗 = 偽3層アーキテクチャ 画面・ロジック・データアクセスを分離する考えは以前からあった 分離する強力な「仕組み」が無かったため、意図を守れない実装も多数 DLL(Visual Studio プロジェクト)は分かれているのに、実際にはプレゼンテーション層に全てのロジックが実装されている場合も・・・33Data Tier?Method “A”Method “B”Method “C”BusinessLogic Tier?Method “A”Method “B”Method “C”Presentation Tier?事実上、全ロジックが実装されているCall Method “A”Call Method “B”Call Method “C”DatabaseSQL Query Call A, B, C Call A, B, CMVVMで解決
境界を越えるときは必ずテスト済みであること 責任の所在が明確 DB から M を正しく取得することがテスト済み M から VM を正しく作れることがテスト済み バグがなく正常に動くはず VM を V にバインド出来ることがテスト済み34“A” Model“C” View Model View “C”Database “A”Cloud Service “B” “B” ModelデータバインドData BindingWeb API, WCFEntity Framework, LINQ to SQL簡単に品質を保てる
無理に MVVM にこだわる必要は無いが MVVM の考え方が出来ることは必須 後で説明する「単体テスト」もこの考え方を理解していると簡単に使いこなせる HTML5 + JavaScript など他の言語・文化圏でも MVVM が浸透 今後、Azure のサービスが増えるにつれてますます重要度が上がるMVVM を意識して C# を勉強してください35
絶対に身につけるべき事1. 常に綺麗なコードを書く方法2. 格安で必要な範囲を的確にテスト出来る方法3. 格安で何度でも容易に安全にデプロイ(配置)出来る方法4. 複数人のチームで開発する方法36
2. 格安で必要な範囲を的確にテスト出来る方法 F5 デバッグ(ローカルデバッグ・リモートデバッグ・エミュレータ) 単体テスト コード化されたUIテスト ロードテスト自分で書いたコードは必ず自分でテストする 最初の責任をどう果たすか?※設計や上流工程での問題はここで紹介するテストではなく、「テストスイート」「テストケース」を使って確認します。ここでは取り扱いません。必要に応じて ウォーターフォールV字モデル や、Test Manager を勉強してください。37
F5 デバッグ(ローカルデバッグ・リモートデバッグ・エミュレータ)格安で必要な範囲を的確にテスト出来る方法①38
Visual Studio = F5 デバッグ プロジェクトを作成して、[ F5 キー ] を押すとアプリが起動する 多くのアプリがそのままデバッグできるWindows 上で直接起動Windows Desktop、Windows Store Apps、ASP.net (Web site)アプリが起動(アプリ・拡張機能がインストールされた状態で起動)Visual Studio Extensions、 Office Apps、Office Extensions (Outlook, Word, Excel, PowerPoint )エミュレータが起動Windows Store Apps 、Windows Phone Apps、Xamarin.iOS、Xamarin.Android 39
F5デバッグ出来る = 最高速で何度も試せる 何度も試せると、手動での動作確認が数多く出来る F5デバッグ出来ないと、その分テストが億劫になる• 「ちゃんと書けたはずだから確認しなくても、大丈夫だろう」• 「コードは変えたけど、さっき動いたから全部は確認しなくても、大丈夫だろう」• 「自分は確認しなくても、誰か他のところで確認されるだろうから、大丈夫だろう」 自動車の「だろう運転」と同じ ⇒「(バグがある)かもしれない」40簡単に品質を保てる
F5デバッグ出来ない=十分にテストされない 「Windows Server にインストールしないと動作確認出来ない」は リリースされるまで一度もテストされない=まともに動かない と等しい インストールしないと動作確認出来ないアプリの品質を保つのが難しいWindows Service、Azure Worker Role、SharePoint Page/Workflow、Exchange Transport Agent ...どんなに責任感が強い人でも こなせる回数が少ない と品質が低くなる※エミュレータも起動するまで時間がかかると、デスクトップアプリより品質が低くなりやすい41
何としても F5 デバッグ出来るようにしたい! 前職で 某大手 情報サイトのデータ入稿システム のフレームワークを開発 最もこだわったのは F5デバッグ出来ること1. ローカルで開発しそのまま F5 デバッグ出来る(開発)2. サーバーにインストールして動作させる別のモードがある(本番) 「Windows アプリ」として起動する開発モードを用意した 2ヶ月かかる開発が、2週間でバグ無しで開発出来るようになったローカルで十分にテストしてリリースすれば、本番で問題にならない 42
クラスライブラリを参照すれば F5 デバッグ出来る インストールしないと動作しないものを開発する場合 (MVVMの考え方と同様)インストールするそのものと、ロジックを分離 ロジックだけを入れたクラスライブラリを作成 そのクラスライブラリを参照した Windows アプリを作る 43クラスライブラリ(DLL)インストールが必要なもの(例:Windows Service)開発用 Windows アプリ(WPF)参照参照起動するまで 約10秒起動するまで 約10分
画面の部品のみの F5 デバッグ も出来る Visual Studio 拡張機能を作る時、ツールウィンドウだけでデバッグ(起動速度が全然違う)Editor Plushttps://visualstudiogallery.msdn.microsoft.com/af8f350c-b992-464f-b9f3-580b51545f6744起動するまで 約3秒起動するまで 約1分
UI部品・ロジックを分離してもテストできるか?1 MVVM を理解していれば可能 ⇒ テスト用に部分的に差し替えても正常に動作する※ Expression Blend を使うと、WPF アプリの「デザイン用サンプルデータ」を作成可能。起動しなくてもUIを確認出来る。45“A” Model“C” View Model View “C”Database “A”Cloud Service “B” “B” ModelデータバインドData BindingWeb API, WCFEntity Framework, LINQ to SQLView “C”“C” View ModelData Bindingテスト用 View Modelを作るプログラム
UI部品・ロジックを分離してもテストできるか?2 MVVMの 色んな部分を差し替えることが可能 DBにもインターネットに繋がずにテスト出来る※他社との連携システムを作成するときは、両者で共通して使える スタブ・ドライバの作成が必須46“A” Model“C” View Modelテスト用ViewDatabase “A”Cloud Service “B” “B” ModelデータバインドData BindingWeb API, WCFEntity Framework, LINQ to SQLView “C”“C” View ModelData Bindingテスト用 Modelを作るプログラム“A” Model“B” Model
インストールしなくてもテスト出来るように! 低コストで品質を保つためには、如何にF5デバッグ出来るようにするか? テストを前提にクラスライブラリ(ロジック・UI部品)を分離する MVVM を理解して部品を差し替え可能に 差し替え用の部品も(ソースバージョン管理に含めて)納品物と同じように扱うここで作ったものを「個人のツールとし、人に引き継がない」は絶対にダメ!47
ここまで工夫すればF5デバッグだけで十分に戦える!48
いや、毎回テスト用 View 作るのしんどいし・・・ロジックを直接テストしてくれる画面無いの? 49
単体テスト格安で必要な範囲を的確にテスト出来る方法②50
Visual Studio でメソッドを直接テスト Visual Studio 単体テスト は C# コードで、C# コードをテストするメソッド public string CreateTransactionId ( FileInfo userFile ) をテストする時userFile を様々に変えてテストする、テスト用のメソッドを作成 Visual Studio がテスト用のメソッドを実行 一度作ったテストは何度でも使える※ Java の JUnit と同様。以前は NUnit 。Visual Studio 2005 から標準機能になった。 51
テストの実行と結果画面が標準で提供される F5デバッグ感覚でテストを実行、成功・失敗がひと目でわかる テストケースの分だけテストメソッドを追加52
すぐに試せるサンプルを用意しました TFS・VSO・ローカルで動作するデータベースを使った単体テストの作り方・量産方法 https://code.msdn.microsoft.com/TFSVSO-dc7b8c9d C# サンプルをダウンロードできます53
F5デバッグより回数をこなせる単体テスト プログラムを改修したら、単体テストを開始して休憩に 休憩から変えるとテスト結果が出ている その間に 100~ 200~ 何万テストケースでも自動で実行してくれる (他の関係ないと思っていたところを)壊すとすぐに気付く 完成すると嬉しい MVVM でロジックだけを直接テストできるのは、単体テストのみ54
単体テストで自動でメソッドをテストできるなら画面操作を自動でテストする機能は無いの? 55
コード化されたUIテスト格安で必要な範囲を的確にテスト出来る方法③56
Visual Studio が人の代わりに画面を操作してテスト コード化されたUIテスト は C#コードで、画面をテストする Web アプリ / Windows デスクトップアプリをテストする時 画面を開く、ボタンを押す、テキストを入力する・・・ を C# で記述 手で操作して「録画」する機能が使える Visual Studio がテストを実行(人の操作を代行) 一度作ったテストは何度でも使える※MS-Windows 3.1 には、レコーダという人の操作を記録・再生する機能が標準であった 57
すぐに試せるサンプルを用意しました WPF アプリケーションの「コード化されたUIテスト (Coded UI Test) 」の作り方 ~ UIのテスト駆動開発とUIMapの保守 https://code.msdn.microsoft.com/WPF-UI-Coded-UI-Test-9ab5581d C# サンプルをダウンロードできます58
テストの回数を増やすことが品質に繋がる・・なら1機能を開発する時に、テスト出来る回数とかかる時間の比率:※経験に基づくイメージです。テストする範囲が異なるので単純に比較できませんが、これぐらい差が出ると思います。59 インストールしないとテスト出来ない 1(手動) 1,000 F5デバッグが出来る 10~100(手動) 100 コード化されたUIテストが出来る 10~1,000(自動) 10 単体テストが出来る 100~10,000(自動) 1
ロードテスト格安で必要な範囲を的確にテスト出来る方法④60
すぐに試せるサンプルは用意できていません 簡単に言うと Visual Studio で Web サイトに負荷をかける機能です F5デバッグで起動した ASP.net Webサイトに自分で負荷をかけますローカルWebにも、サーバーにも負荷を変えることが出来ます ローカルで早く動かない Web サイトが、サーバーで(以下略※現在は Visual Studio Ultimate が必要ですが、近い将来 Premium と Ultimate は Enterprise に統合されますhttp://blogs.msdn.com/b/visualstudio_jpn/archive/2015/03/31/announcing-the-visual-studio-2015-product-line.aspx61
絶対に身につけるべき事1. 常に綺麗なコードを書く方法2. 格安で必要な範囲を的確にテスト出来る方法3. 格安で何度でも容易に安全にデプロイ(配置)出来る方法4. 複数人のチームで開発する方法62
格安で何度でも容易に安全にデプロイ出来る方法 発行 セットアップの作成Visual Studio Installer Extension を使用 リリース管理ただし、今のバージョンは難易度が高い将来使うことを意識(考え方を身に着けておく)63
絶対に身につけるべき事1. 常に綺麗なコードを書く方法2. 格安で必要な範囲を的確にテスト出来る方法3. 格安で何度でも容易に安全にデプロイ(配置)出来る方法4. 複数人のチームで開発する方法64
複数人のチームで開発する方法 ソースバージョン管理 タスク管理 自動ビルド・自動テスト全て Visual Studio + Team Foundation Server / Visual Studio Online を使う65
TFS の使い方は他のスライドを参考に スクラム開発を始めよう!TFS を使った日常コミュケーションとチームワークhttp://www.slideshare.net/shinichikoga355/102-ver4 開発キックオフ時にマネージャが行うべき11のこと~Visual Studio Online & TFS 使い始めと HOME 画面の構成http://www.slideshare.net/shinichikoga355/starting-tfs TFS スクラム開発とリリース管理を使えば Rapid Release を行える!~ Online Service Gate® クラウド サービスの開発事例http://channel9.msdn.com/Events/Architect-Jump-Start-Seminar/20141117/Session2 66
自動ビルド・自動テストはサンプルを用意しました TFS・VSO・ローカルで動作するデータベースを使った単体テストの作り方・量産方法 https://code.msdn.microsoft.com/TFSVSO-dc7b8c9d C# サンプルをダウンロードできます(※前述のサンプルです。解説を読んでください)67
C#言語の特徴他の言語との違いを「ふんわり」理解しておく68
C# は JavaScript, VBよりも堅く Java よりも柔らかに Visual Basic (VB) と C# はほぼ同じ物 違いはコンパイラの「思想」だけで、どちらも .net Framework で動作 VB は厳密にも曖昧にも使える柔軟な言語(1位※) Java は厳密に定義する言語(2位※ ) JavaScript は非常に曖昧なことを許容する言語(3位※ ) C# は VB より厳密に、Java よりは曖昧に調整された言語(4位※ )※利用者数:@IT 「Windows 10/Visual Studio 2015への期待と課題」よりhttp://www.atmarkit.co.jp/ait/articles/1504/24/news018.html69
C# は他の言語の機能と融合してきた たぶん C++ + VB + Java + Delphi = C# として誕生 C# 3.0 から 型推論・ラムダ式・匿名クラス( 関数型プログラム ) ASP.net MVC は Ruby on Rails, Cake PHP に近い( ”設定より規約” ) 多くのプラットフォームで動作 最新版 ASP.net は Linux で動作する Xamarin, Unity では iPhone, Android アプリが開発できる70
領域別 解説全体像を把握して(古い技術ではなく)新しい技術を身につけよう71
共通言語仕様 if, for, while ... 基本的な C# の構文 ( .net 1.0 以降) ジェネリック IDictionary<string, int> ( .net 2.0 以降) 型推論 var, 匿名型, LINQ, ラムダ式 ()=>{}; (.net 3, 3.5 以降) dynamic, 非同期 async/await(.net 4, 4.5 以降) nameof, null条件演算子 ?. (次バージョン以降)新しいほど低コストで使いやすく推奨される機能※ .net のバージョンが同じでも Visual Studio のバージョンで機能が追加される場合が多くあります※ 新しさと習得の難易度は関係がありません72
データアクセス(データベースの利用) SqlCommand で SQL を直接実行旧式、最高速だが高リスク高コスト DataSet, 型付きDataSet旧式、中~高コスト(進化の途中で扱いにくい) LINQ to SQL + Entity Framework最新、若干低速だが低リスク低コスト73
作成するもの別 デスクトップ( WPF, Windows Forms, Windows Service , Console ) Web ( ASP.net SPA, Web API, ASP.net MVC, ASP.net ) スマートデバイス アプリ( Windows Store, Windows Phone, Xamarin.iOS ) Office ( Office ストアアプリ, デスクトップ Office 拡張機能, Exchange, SharePoint ) 通信のみ( WCF, .net Remoting ) Visual Studio( 拡張機能, 言語, プロジェクト )※ SDK の追加インストールや製品の購入が必要なものも含みます。ゲームは Unity や Direct X の知識が必要。※ 他に IoT (Internet of Things)、機械学習などが今後のトレンドです。74
チーム開発 ソースバージョン管理 タスク管理 テストケース・バグトラッキングシステム スクラム開発 / ウォーターフォール開発75
テスト F5デバッグ(ローカル, リモート, エミュレータ) 単体テスト(ローカル, 自動ビルド・自動テスト) コード化されたUIテスト ロードテスト(Visual Studio Ultimate, Visual Studio Online シンプル) テストケース・バグトラッキングシステム ラボ管理76
配置(デプロイ) Windows Installer セットアップの作成(Visual Studio Installer) 発行(Web, ClickOnce, FTP, ファイルコピー) Azure 発行 ストアに登録(Windows Store, Windows Phone, Office Apps ) Release Management Windows Azure への継続的な配信(Visual Studio Online)77
勉強の仕方良いサンプルを参考にしてください78
バージョンに注意 新機能によって、過去の書き方は推奨されなくなる場合が多々ある 最新のバージョンの教科書で勉強すること 同じ処理を違う書き方が出来るときは、必ず、最新の書き方を使う事誤:古い物が初心者向け、新しい物は上級者向け正:新しい物を使うのが推奨、優しいか難しいか?は場合による79
ネットの「サンプルのための記述」に注意 サンプルは「説明したい目的の機能」の使い方がわかりやすくなるように構成 その他のエンタープライズ開発の要素は考慮されていない場合が多いプロジェクトの構成、名前の付け方、デバッグしやすい設計、エラー処理・・・ これをそのまま標準だと誤解して実装したコードが、社内にも増えている可能性がある(参考にしてよいか?注意が必要)80
実務の実践だけではスキルアップできない? マネージャは(個人のスキルアップではなく)結果を期待 役員は、個人のスキルアップは現場の上長の責任と認識 ステークホルダーはスキルを持っているエンジニアが担当することを期待「これを試しにやってみたい」は、成果が上げられるときに認められる⇒ 既にレベルアップしていることが条件81
お奨めの教科書 独習 C# ( http://goo.gl/92a4Pq ) ASP.NET MVC5実践プログラミング ( http://goo.gl/ii0D15 ) プログラミングMicrosoft ASP.NET MVC 第3版ASP.NET MVC 5 対応版(マイクロソフト公式解説書) ( http://goo.gl/HBKvHQ )まず、C# の言語仕様を理解。ラムダ式とLINQは必ず使いこなせるようになってください。次に MVVM の経験として ASP.net MVC が教科書が多くてお奨めです。82
推薦図書 IT Architects’ Archive―ソフトウェア開発の課題パターンによるソフトウェア構成管理 ( http://goo.gl/2yF1N1 ) 独習 UML ( http://goo.gl/VYg1ZC ) PMBOKガイド・マニュアル―第5版対応 ( http://goo.gl/G4oDks )ソースバージョン管理で「何となく分岐・マージする」のではく、理解して使いこなせる様に。自分で設計をしたり、チームで会話をするには UML 図を読めるようになりましょう。プロジェクト全体の流れを理解するために PMBOK を勉強しておくこともお奨めです。83
84Copyright© 2015 Shin-ichi Koga All Rights Reserved.

Recommended

PDF
怖くないSpring Bootのオートコンフィグレーション
PDF
オブジェクト指向できていますか?
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
PDF
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
PDF
ドメイン駆動設計のための Spring の上手な使い方
PDF
イミュータブルデータモデル(世代編)
PDF
ドメイン駆動設計 本格入門
PDF
Serverless時代のJavaについて
PDF
Cognitive Complexity でコードの複雑さを定量的に計測しよう
PDF
ソフトウェア開発のやり方の改善
PDF
SQL大量発行処理をいかにして高速化するか
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PDF
Where狙いのキー、order by狙いのキー
PPTX
さくっと理解するSpring bootの仕組み
KEY
やはりお前らのMVCは間違っている
PDF
What's new in Spring Boot 2.6 ?
PDF
それはYAGNIか? それとも思考停止か?
PDF
ドメイン駆動設計という仕事の流儀
PDF
DDD sample code explained in Java
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
PDF
PlaySQLAlchemy: SQLAlchemy入門
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PDF
実践的な設計って、なんだろう?
PPTX
イベント・ソーシングを知る
PDF
Unity開発で使える設計の話+Zenjectの紹介
PPTX
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
PDF
中の下のエンジニアを脱出するための仕事術

More Related Content

PDF
怖くないSpring Bootのオートコンフィグレーション
PDF
オブジェクト指向できていますか?
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
PDF
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
PDF
ドメイン駆動設計のための Spring の上手な使い方
PDF
イミュータブルデータモデル(世代編)
PDF
ドメイン駆動設計 本格入門
PDF
Serverless時代のJavaについて
怖くないSpring Bootのオートコンフィグレーション
オブジェクト指向できていますか?
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
ドメイン駆動設計のための Spring の上手な使い方
イミュータブルデータモデル(世代編)
ドメイン駆動設計 本格入門
Serverless時代のJavaについて

What's hot

PDF
Cognitive Complexity でコードの複雑さを定量的に計測しよう
PDF
ソフトウェア開発のやり方の改善
PDF
SQL大量発行処理をいかにして高速化するか
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PDF
Where狙いのキー、order by狙いのキー
PPTX
さくっと理解するSpring bootの仕組み
KEY
やはりお前らのMVCは間違っている
PDF
What's new in Spring Boot 2.6 ?
PDF
それはYAGNIか? それとも思考停止か?
PDF
ドメイン駆動設計という仕事の流儀
PDF
DDD sample code explained in Java
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
PDF
PlaySQLAlchemy: SQLAlchemy入門
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PDF
実践的な設計って、なんだろう?
PPTX
イベント・ソーシングを知る
PDF
Unity開発で使える設計の話+Zenjectの紹介
Cognitive Complexity でコードの複雑さを定量的に計測しよう
ソフトウェア開発のやり方の改善
SQL大量発行処理をいかにして高速化するか
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Where狙いのキー、order by狙いのキー
さくっと理解するSpring bootの仕組み
やはりお前らのMVCは間違っている
What's new in Spring Boot 2.6 ?
それはYAGNIか? それとも思考停止か?
ドメイン駆動設計という仕事の流儀
DDD sample code explained in Java
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
コンテナ未経験新人が学ぶコンテナ技術入門
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
PlaySQLAlchemy: SQLAlchemy入門
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
実践的な設計って、なんだろう?
イベント・ソーシングを知る
Unity開発で使える設計の話+Zenjectの紹介

Viewers also liked

PPTX
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
PDF
中の下のエンジニアを脱出するための仕事術
PDF
今からでも遅くないC#開発
PPTX
いまさら学ぶMVVMパターン
PDF
知って得するC#
PDF
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
PPTX
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
PPTX
技術選択とアーキテクトの役割
PDF
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
PDF
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
PDF
運用に自動化を求めるのは間違っているだろうか
PDF
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
PDF
実践イカパケット解析
PDF
MySQLテーブル設計入門
PDF
ウェブパフォーマンスの基礎とこれから
PDF
オンラインゲームの仕組みと工夫
PPTX
Webアプリケーション負荷試験実践入門
PDF
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
PDF
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
PDF
SSL/TLSの基礎と最新動向
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
中の下のエンジニアを脱出するための仕事術
今からでも遅くないC#開発
いまさら学ぶMVVMパターン
知って得するC#
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
技術選択とアーキテクトの役割
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
運用に自動化を求めるのは間違っているだろうか
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
実践イカパケット解析
MySQLテーブル設計入門
ウェブパフォーマンスの基礎とこれから
オンラインゲームの仕組みと工夫
Webアプリケーション負荷試験実践入門
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
SSL/TLSの基礎と最新動向

Similar to ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発

PDF
C#coding guideline その2_20130325
PPTX
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4
PPTX
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
PDF
C# コーディングガイドライン 2013/02/26
PDF
Visual Studio と Microsoft Azure で変わる開発スタイル
PDF
C#勉強会 ~ C#9の新機能 ~
PPTX
Visual Studio による開発環境・プログラミングの進化
PPTX
C# 8.0 Preview in Visual Studio 2019 (16.0)
PPTX
Deep Dive C# 6.0
PPTX
復習も兼ねて!C#6.0-7.0
PDF
テスト勉強会よしおか100311 1
PPTX
Live Coding で学ぶ C# 7
PDF
大規模ソフトウェア開発とテストの経験について
PDF
TDDBC osaka 2012/06/02
PPTX
C# linq入門 意図編
PDF
TDDの原理 ~ スペック・ファースト
PPTX
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
PDF
今日からできる!簡単 .NET 高速化 Tips
PDF
20150425 iiba日本支部講演 日米比較 一色浩一郎
PDF
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
C#coding guideline その2_20130325
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
C# コーディングガイドライン 2013/02/26
Visual Studio と Microsoft Azure で変わる開発スタイル
C#勉強会 ~ C#9の新機能 ~
Visual Studio による開発環境・プログラミングの進化
C# 8.0 Preview in Visual Studio 2019 (16.0)
Deep Dive C# 6.0
復習も兼ねて!C#6.0-7.0
テスト勉強会よしおか100311 1
Live Coding で学ぶ C# 7
大規模ソフトウェア開発とテストの経験について
TDDBC osaka 2012/06/02
C# linq入門 意図編
TDDの原理 ~ スペック・ファースト
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
今日からできる!簡単 .NET 高速化 Tips
20150425 iiba日本支部講演 日米比較 一色浩一郎
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方

More from 慎一 古賀

PPTX
JavaScriptを使った開発を始めるなら!TypeScriptをはじめよう ~ ステップアップ
PPTX
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
PPTX
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
PPTX
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法
PPTX
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
PPTX
新しい Visual Studio & .NET と新時代のアーキテクチャ
PPTX
開発キックオフ時にマネージャが行うべき11のこと ~Visual Studio Online & TFS 使い始めと HOME 画面の構成
PPTX
TFS リリース管理 による継続的デリバリー TFS Release Management を使ったリリースの効率化
PPTX
バックログとタスクをインポート・エクスポート Team Foundation Server と Excel・Project との連携
PPTX
スクラム開発を始めよう!TFS を使った日常コミュケーションとチームワーク
JavaScriptを使った開発を始めるなら!TypeScriptをはじめよう ~ ステップアップ
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
新しい Visual Studio & .NET と新時代のアーキテクチャ
開発キックオフ時にマネージャが行うべき11のこと ~Visual Studio Online & TFS 使い始めと HOME 画面の構成
TFS リリース管理 による継続的デリバリー TFS Release Management を使ったリリースの効率化
バックログとタスクをインポート・エクスポート Team Foundation Server と Excel・Project との連携
スクラム開発を始めよう!TFS を使った日常コミュケーションとチームワーク

ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発

Editor's Notes

  • #7 言語を理解し、フラットなプログラムが書けるようになる自分で設計を工夫し、オブジェクト指向でプログラムが書けるようになる。重量すぎるオブジェクト指向になりがち。ライブラリ・フレームワークの役割、コードでの実装・規約ベース・データバインド・MVVM などの考え方を理解し、適切な設計を判断出来るようになる。プロジェクト全体を俯瞰できるようになる。マネージメントかアーキテクトか専門領域が分かれ始める。役員、ステークホルダーから課題を投げかけられるようになる。課題を解決するための道筋は自分で作り上げる必要がある。全体を俯瞰し、部分最適ではなく全体最適を目指し、チームビルディングやリスクを意識して計画を立てられるようになる。タレントとして社内外で『象徴』的な役割を期待されるようになる。ファシリテーションを意識し、他の課題を解決出来る人と協力して、会社を越えて最適な答えを探せるようになる。
  • #8 エンジニアリーダーマネージャ / アーキテクト部長・役員・株主自分が次の役割になるときに、かならず障壁があるそれぞれの役割でベストなゴールは違う、両方の役割でのベストは、それぞれのベストとは異なる可能性が高い ⇒ 「評価は必ず後からついてくる」
  • #9 Windows の変化(進化)VB, .net, Java, Ruby, F# ... 相互に影響し合うサーバークライアント、Web、HTML、スマートフォンApps、IoT、機械学習、パブリッククラウドとプライベートクラウドとオンプレミスのハイブリッド新しい技術は、前の時代の常識ができることを前提にしている
  • #10 MCSD Microsoft ー C#技術 ※ただし最新の資格は基礎向けではない国家資格 基本情報、応用情報、プロジェクトマネージャ、システムアーキテクト ー 一般的な知識http://www.jitec.ipa.go.jp/1_11seido/seido_gaiyo.htmlPMBOK、PMP ー マネージメント その前に ITパスポートとれますか? ITパスポート過去問から PMBOK とはなにか?を問う問題を。
  • #13 MCSD Microsoft ー C#技術 ※ただし最新の資格は基礎向けではない国家資格 基本情報、応用情報、プロジェクトマネージャ、システムアーキテクト ー 一般的な知識http://www.jitec.ipa.go.jp/1_11seido/seido_gaiyo.htmlPMBOK、PMP ー マネージメント その前に ITパスポートとれますか? ITパスポート過去問から PMBOK とはなにか?を問う問題を。
  • #19 コード分析MVVM、データバインド
  • #38 単体テスト・コード化されたUIテスト
  • #64 今のバージョンのリリース管理は難 ー 将来使われることを意識発行手順を手動ではなく、自動化することを意識
  • #66 TFS (ソースバージョン管理・タスク管理)自動ビルド・自動テスト
  • #70 厳密な型 / 型推論

[8]ページ先頭

©2009-2025 Movatter.jp