Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

業務アプリケーション開発を支える.NET技術 #ngtnet

5,541 views

Published on

Niigata.NET 2015-10の発表資料です。

Published in: Engineering
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

業務アプリケーション開発を支える.NET技術 #ngtnet

  1. 1. 業務アプリケーション開発 を支える.NET技術 2015/10/10 - #ngtnet TAKANO Sho(高野 将)/ @masaru_b_cl
  2. 2. 自己紹介 某SIerで働くDeveloper そのかたわら執筆業も #ngtnet 2
  3. 3. 近況 #ngtnet 3
  4. 4. 今日お話すること 顧客企業の基幹システムを始めとした 業務アプリケーションを開発する際の 諸問題を解決するために使用できる .NET関連の標準テクノロジーを紹介します #ngtnet 4
  5. 5. 今日お話しないこと サードパーティのライブラリ、ツール ASP.NET 5や.NET Core、DNXといった 最新情報 Microsoft Azure #ngtnet 5
  6. 6. お願い なるべくわかりやすく説明するつもりですが、 疑問、確認、ちょっと待って!などあれば、 その場で気軽に挙手を! #ngtnet 6
  7. 7. 背景説明 #ngtnet 7
  8. 8. ユーザーの要求 画面にたくさん項目並べて一気に入力したい 100人単位で使いたい サーバーは自社のデータセンターに置きたい 職権によって使える機能制限したい etc... #ngtnet 8
  9. 9. 開発体制 複数社、複数拠点による合同開発 サブシステム単位で分担 開発者のスキルレベルはまちまち 強い「こだわり」を持っている 経験が浅い 昨今の流れに明るくない、etc… #ngtnet 9
  10. 10. アーキテクチャの選択 Windowsフォームを使った 3階層リッチクライアントアプリケーション #ngtnet 10 ※.NET におけるアプリケーション アーキテクチャ ガイド 2.0 - 第19章 : 物理ティアと配置 より http://www.microsoft.com/ja-jp/dev/2010/solutions/architecture/default.aspx
  11. 11. 選択理由 クライアント側であれこれしたいので Webアプリだと辛い WPFは教育コストが回収できない クラサバでやるにはちょっと重い #ngtnet 11
  12. 12. 求められること 簡単に配布できる 複数拠点の成果物を集約できる 低スキル者でも無理なく開発を始められる #ngtnet 12
  13. 13. それでは始めましょう まずは開発プロセスの運用寄りの ところからお話します #ngtnet 13
  14. 14. ライブラリの配布 #ngtnet 14
  15. 15. ライブラリの配布 従来は… dllファイルやソースファイルをそのまま配布 依存関係のあるライブラリ配布が漏れる 問題が発生したバージョンが特定できない ライブラリ更新が漏れる #ngtnet 15
  16. 16. dllファイルを直接配布 #ngtnet 16 ※チーム開発でもパッケージ管理を容易に! NuGetを活用してライブラリを効果的に配布しよう http://codezine.jp/article/detail/8735 より
  17. 17. ライブラリ配布あるある なんかうまく動かないんですが こっちでは大丈夫なので、dllファイルの日付教 えて下さい なんかうまく動かないんですが Hoge.dllが増えたので追加してください なんか(ry #ngtnet 17
  18. 18. NuGetの利用 NuGet https://www.nuget.org/ “NuGet is the package manager for the Microsoft development platform including .NET. ” (NuGetは.NETを含むマイクロソフトの 開発プラットフォーム向けパッケージマネージャーです) #ngtnet 18
  19. 19. パッケージマネージャーとは ライブラリの導入をサポートし、 管理するためのツール ライブラリをパッケージとしてまとめる バージョン、依存する他のパッケージなどの情報を含む パッケージはリポジトリーに登録する リポジトリーからパッケージを追加、更新、削除する #ngtnet 19
  20. 20. NuGetの利用 依存関係のあるライブラリ配布が漏れる ⇒ 依存パッケージも一緒に導入される 問題が発生したバージョンが特定できない ⇒ パッケージにはバージョンが必須 ライブラリ更新が漏れる ⇒ ツールから更新可能 #ngtnet 20
  21. 21. NuGetによる配布 #ngtnet 21 ※チーム開発でもパッケージ管理を容易に! NuGetを活用してライブラリを効果的に配布しよう http://codezine.jp/article/detail/8735 より
  22. 22. NuGetのさらなる活用 ライブラリだけでなく業務機能も NuGetパッケージで管理する 不具合対応などを行う際の対象バージョンが 明確になる 機能間の循環参照を検知及び防止できる (循環参照:相互に依存関係がある状態) #ngtnet 22
  23. 23. NuGet利用時の注意 バージョン運用ルールを定め、 順守する必要がある 例)異なるソースで同一バージョンの パッケージを作らない 「プロジェクト参照」よりは手軽ではない 例) 利用パッケージのデバッグが気軽に行えない #ngtnet 23
  24. 24. NuGetについてより詳しく 実例に学ぶチーム開発におけるNuGet導入のすすめ http://codezine.jp/article/corner/587 “NuGetを使うと多くのOSSライブラリを手軽に導入できるため、非常 に便利です。しかし、NuGetの真髄はライブラリの導入ではなく、 「パッケージ管理」にあります。本稿では、チーム開発における諸問 題を解決するために、NuGetがどのように使えるか、実例を元に紹介 していきます。” #ngtnet 24
  25. 25. チーム成果物の集約 #ngtnet 25
  26. 26. チーム成果物の集約 複数拠点で開発した成果物は最終的には 一つになる 一番最後だけでまとめようとすると 大変なことに… ビルドできません! 足りません! ルール無視しまくってます! etc... #ngtnet 26
  27. 27. こんなことが起きないためには 定期的に成果物を集めるようにする 集めた成果物を随時チェックする ビルドエラーにならないか ルールに則っているか 動作が変でないか #ngtnet 27
  28. 28. どうやってチェックするか 自動ビルドを活用する すべての成果物を一からビルドする コード分析ツールでチェックする 自動テストツールでテストする ビルド成果物をテスト環境に配置する #ngtnet 28
  29. 29. MSBuildの利用 MSBuild https://msdn.microsoft.com/ja-jp/library/dd393574.aspx “Microsoft Build Engine は、アプリケーションを ビルドするためのプラットフォームです。” #ngtnet 29
  30. 30. MSBuildの利用 .NETアプリケーションのビルドが、 Visual Studioがなくてもできる ビルド以外の外部コマンドも実行できる コード分析 自動テスト etc… ビルド成果物のコピーや「発行」ができる #ngtnet 30
  31. 31. いつビルド環境をつくるか 実際に開発に入る前一択 あとでビルドスクリプト拵えるのは困難 あとで文化を付け足すのも困難 #ngtnet 31
  32. 32. どうやって定期的に行うか Jenkins等のCIツール Windowsのタスクスケジューラー Team Foundation Server / Visual Studio Online #ngtnet 32
  33. 33. 個人的おすすめ MSBuildを使ってビルドを行う batファイルを作成しておく 好みの定期実行ツールで実行する 必要なら手動で実行する 配布が必要ならテスト環境/本番環境など、 環境ごとにbatファイルを分ける 構成情報の切替をbatファイルで行う #ngtnet 33
  34. 34. 余談:自動テスト VSについてくるMSTestが使える .NET Frameworkには含まれないので注意 MSBuildではMSTestの実行ファイルを 外部コマンドとして実行する #ngtnet 34
  35. 35. ちょっと一休み ここまでは開発プロセスの運用に 近い方の話でしたが、 ここからは実装寄りの話をします。 #ngtnet 35
  36. 36. メニューの実現 #ngtnet 36
  37. 37. メニューに求められること 使用したい機能を選択できる 選んだ機能を起動できる 機能の増減に対応できる 要件の変更 職権による制限 #ngtnet 37
  38. 38. どうやって実現するか Webアプリケーションなら… 機能別にURLを設定 画面に上記URLを設定した ハイパーリンクを表示 #ngtnet 38
  39. 39. どうやって実現するか Windowsフォームアプリケーションでは… 機能毎にフォームクラスを定義 メニューでは上記フォームクラスの インスタンスを動的に作成、表示 #ngtnet 39
  40. 40. 動的なフォーム作成 以前は… 機能ごとに以下の情報を管理 アセンブリ名 クラス名 リフレクションで動的にロード、インスタンス作成 Assembly.LoadFromメソッド #ngtnet 40
  41. 41. リフレクションの利用 DEMO https://github.com/masaru-b-cl/ngtnet-2015-10/tree/master/MEFSample/MEFSample.Reflection #ngtnet 41
  42. 42. リフレクションの問題 管理項目が多い アセンブリのファイル名、名前空間を含むクラス名、etc… 型安全でない 文字列での指定、ダウンキャスト、etc… コードが煩雑 定形といえば定形だけど… #ngtnet 42
  43. 43. MEFの利用 MEF (Managed Extensibility Framework) https://msdn.microsoft.com/ja-jp/library/dd460648.aspx “Managed Extensibility Framework (MEF) は、 軽量で拡張可能なアプリケーションを作成するた めのライブラリです。” #ngtnet 43
  44. 44. MEFの利用 #ngtnet 44 root plugins Application.exe Hoge.dll Fuga.dll コンテナー インポート カタログ エクスポート エクスポート 機能名: Hoge 機能名: Fuga
  45. 45. MEFの利用 DEMO https://github.com/masaru-b-cl/ngtnet-2015-10/tree/master/MEFSample/MEFSample.Menu #ngtnet 45
  46. 46. MEFの利点 機能の「名前」だけ管理すれば良い 型安全に扱える 呼び出しコードがシンプル #ngtnet 46
  47. 47. リモート呼び出し方法 #ngtnet 47
  48. 48. リモート呼び出し方法 三階層リッチクライアントアプリでは、 APサーバーに対するリモート呼び出しが必要 直接DBサーバーにアクセスしない APサーバーが公開するAPIを利用して データ取得や更新といった処理を実行 #ngtnet 48
  49. 49. リモート呼び出し方法 #ngtnet 49 クライアントPC APサーバー DBサーバー DBMS サービス AP クライアント AP リモート 呼び出し
  50. 50. .NETにおけるリモート呼び出し .NET Remoting TCP/IPなどを用いた比較的低レベルなデータやりとり ASP.NET XML Webサービス SOAPに基づいたHTTP(S)でのXMLデータやりとり ASP.NET Web API HTTP(S)でのJSON等のデータやりとり WCF 通信プロトコル、データ形式などを選べるデータやりとり #ngtnet 50
  51. 51. WCFの利用 WCF (Windows Communication Foundation) https://msdn.microsoft.com/ja-jp/library/ms731082.aspx “Windows Communication Foundation (WCF) は、 サービス指向アプリケーションを構築するためのフ レームワークです。” #ngtnet 51
  52. 52. WCFの概要 #ngtnet 52 ※WCF:WCFの概要図を作成してみました | be free https://takanosho.wordpress.com/2012/03/06/wcf-image-diagram/ より
  53. 53. WCFの利点 VS統合のクライアントコード自動生成 VS上でサービスのエンドポイントを選んだ後、数ステップで可能 *.svcファイルとdllファイルを置くだけの簡単配置 Webサイトにサービス定義のsvcファイルとサービス実装コードを含む dllファイルを配置するだけ #ngtnet 53
  54. 54. WCFの利用 DEMO https://github.com/masaru-b-cl/ngtnet-2015-10/tree/master/WCFSample #ngtnet 54
  55. 55. 実プロジェクトでの運用 #ngtnet 55
  56. 56. 実プロジェクトでの運用 実プロジェクトではこれらの技術、ノウハウ を組み合わせて開発プロセスを設計する コーディングガイドライン 成果物のやり取りルール テンプレートの作成 サンプルの作成 etc… #ngtnet 56
  57. 57. 実プロジェクトでの運用 間違えにくいように設計する 想定した手順は簡単に 想定外の手順は難しく 間違っても簡単にやり直せるように 言うは易し、行うは難し 開発の中でプロセスも成長させていく #ngtnet 57
  58. 58. まとめ #ngtnet 58
  59. 59. まとめ .NETやVSに付属している各種の 標準テクノロジー群は便利 必要ならさらにOSSなどの導入を 実際に大事なのは どう組み合わせて設計するか 対象アプリに合わせたフレームワーク設計、 開発プロセス運用を #ngtnet 59
  60. 60. 業務アプリケーション開発 を支える.NET技術 2015/10/10 - #ngtnet TAKANO Sho(高野 将)/ @masaru_b_cl ありがとうございました! #ngtnet 60
  61. 61. 質疑応答 わからないこと、 聞き逃したことなど、 お気軽に質問どうぞ! #ngtnet 61

×