ASP.NET MVCを使ったTDD入門 ~SI屋さんとWEB屋さんとの違い~

Similar documents
Microsoft Word 基_シラバス.doc

5-3- 応統合開発環境に関する知識 1 独立行政法人情報処理推進機構

4-4- 応スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語のうち 特に Ruby について学習し 応用的なアプリケーション開発の手法を習得する Ⅰ. 概要フレームワークによる Web アプリケーション開発やデータベース操作について学習する Ⅱ. 対象専門分野職種共通 Ⅲ.

ASP.NET MVC を使ってみたよ!

スライド 1

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Seasar.NET入門

<4D F736F F D208DCC91F088C48C8F955D89BF8F915F8DA196E5504A>

PowerPoint プレゼンテーション

CodeIgniter とは? アメリカ EllisLab 社が開発配布しているオープンソースの PHP フレームワーク 2006 年 2 月リリース

フレームワーク再考

(Microsoft PowerPoint - ClickFramework.ppt [\214\335\212\267\203\202\201[\203h])

S2Pradoの紹介

5-1- 応開発フレームワークに関する知識 開発フレームワークを利用した Web アプリケーションの実装方法を理 Ⅰ. 概要解する MVC や OR マッピング DIxAOP といった技術を理解する Ⅱ. 対象専門分野職種共通 Ⅲ. 受講対象者 本カリキュラムの 5-1- 基開発フレームワークに関す

プレポスト【問題】

クラウド税務 会計 給与システム開発にスピードを!A-SaaS が Sencha Ext JS / Sencha Test を導入した軌跡 第 36 回エンバカデロ デベロッパーキャンプ アカウンティング サース ジャパン株式会社土田拓也 斎藤はるか 北村圭 本文書の一部または全部の転載を禁止します

Microsoft Word - ModelAnalys操作マニュアル_

Windows Azureで作るボットアプリ?

利用者

CodeGear Developer Camp

Web Performer V2.0 カタログ

20th Embarcadero Developer Camp

スライド 1

LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のよう

WEBシステムのセキュリティ技術

デザインパターン第一章「生成《

開発・運用時のガイド JDK8への移行に伴う留意点 [UNIX]

スライド 1

(Microsoft PowerPoint - Java\221\3462\225\224\211\357\224\255\225\\\216\221\227\ ppt)

_mokuji_2nd.indd

JBoss と Arquillian で実現する 究極のテスト環境 レッドハット株式会社 JBoss サービス事業部 コンサルタント 山 田義和

intra-mart WebPlatform/AppFramework

Rmenuフレームワーク

WEBサービス超入門 mask.key

スライド タイトルなし

intra-mart Accel Platform

JP-2-Develop Websites and Components in AEM v6x_(V3_after QA)_1111


ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

大域照明計算手法開発のためのレンダリングフレームワーク Lightmetrica: 拡張 検証に特化した研究開発のためレンダラ 図 1: Lightmetrica を用いてレンダリングした画像例 シーンは拡散反射面 光沢面を含み 複数の面光 源を用いて ピンホールカメラを用いてレンダリングを行った

Microsoft Word - XOOPS インストールマニュアルv12.doc

OSSTechプレゼンテーション

メソッドのまとめ

受講を行うための前提知識 PC の基本操作ができること 座学 コーディング実習 受講講座の名称 9 日間 67:30 システムエンジニア向け IT 基礎 4/8/( 月 ) IT 技術者に共通する基本的な知識の習得を目標とします コンピュータ基礎では コンピュータの仕組みやコンピュータで扱う数値や単

デモで理解する Facebook アプリ開発のポイント シグマコンサルティング ( 株 ) 菅原英治

Visual Studio Do-It-Yourself シリーズ 第 18 回 ASP.NET MVC

商用監視ソフトウェアユーザの Zabbix 移行へ朗報 Zabbix Event Viewer のご紹介 【本邦初公開】

目次 研究目的 背景システム開発について実験および評価結論

PowerPoint Presentation

S2Wicketの紹介

Microsoft PowerPoint - CakePHPforDesign.ppt

1 ユーザ認証を受けた権限で アプリケーションを利用するために ログインプロキシにアクセスします 2 ログインプロキシにより Shibboleth SP から Shibboleth IdP の認証画面にリダイレクトされます 3 ブラウザに認証画面を表示します 4 認証画面にユーザ / パスワードを入

S2BaseとZend Framework

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

PowerPoint プレゼンテーション

~~濱田のジイサンとの出会い~~

オブジェクト指向開発論

PowerPoint プレゼンテーション

情報システム設計論II ユーザインタフェース(1)

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

Microsoft PowerPoint - FormsUpgrade_Tune.ppt

5-3- 基統合開発環境に関する知識 1 独立行政法人情報処理推進機構

Mobile Access簡易設定ガイド

(Microsoft PowerPoint - HP\227pWASABI\217\320\211\356\216\221\227\277.ppt)

目次 1. 研究の背景と目的 1.1. 背景 1.2. 目的 2. 研究計画 3. 現状報告 3.1. 制作中の Web アプリケーション 使用する技術 概要 機能 課題 参考にしたサイト 書籍 3.2. その他の取り組み 4.

Webシステム授業資料

think9i Oracle Internet File System i を使用した ソフトウェア開発手法 日本オラクル株式会社製品本部システム製品マーケティング部 Copyright 2001 Oracle Corporation Japan. All Rights Reserved.

2 Java 35 Java Java HTML/CSS/JavaScript Java Java JSP MySQL Java 9:00 17:30 12:00 13: 項目 日数 時間 習得目標スキル Java 2 15 Web Java Java J

<4D F736F F F696E74202D D F838C815B F C835B83938E9197BF2E B93C782DD8EE682E890EA97705D205B8CDD8AB B83685D>

d_appendixB-asp10appdev.indd

Microsoft PowerPoint - prog03.ppt

凡例 : 優れている : やや優れている : 普通 : やや劣っている E: 劣っている 未 : 未学習 : 対象外 02. Javaデータベース講座 ( 使用環境 :MySQL Eclipse4.3 JK8) 総合講師評価 コメント 第 1 回 最終 データベースの全体理解は概ねできて

Si 知識情報処理

5-1- 基 開 発 フレームワークに 関 する 知 識 現 在 普 及 が 期 待 されている 開 発 フレームワークの 実 際 の 開 発 運 用 Ⅰ. 概 要 の 際 に 必 要 な 管 理 知 識 手 法 の 種 類 と 特 徴 内 容 を 理 解 し 必 要 なノ ウハウを 実 務 レベル

WebOTX V6 J2EEアプリケーションのトラブルシューティング

10th Developer Camp - B5

An introduction and future of Ruby coverage library

WebOTXマニュアル

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを

V8.1新規機能紹介記事

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

WebReportCafe

会社案内

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

情報システム設計論II ユーザインタフェース(1)

.NET テクノロジー概説 /WindowsAzure 入門 コード P-2 0:00~7:00 ( 休憩 時間含む ) 前提条件 Windows の操作経験 ( エクスプローラの操作 ファイルの操作 ) があること 最低開講人数 0 名.NET テクノロジー概説 /WindowsAzure 入門

Visual Studio 2017 RC インストール & ファーストステップガイド 2016 年 11 月 16 日 (V1.0)

mylittleadmin for SQL Server 2005 mylittleadmin for SQL Server 2005 Installation Guide version 3.1 ( インストールガイド日本語版 ) 目次 概要... 2 インストール要件... 2 インストールと設

IBM Cloud Social Visual Guidelines

PowerPoint プレゼンテーション

ホンダにおける RT ミドルウェア開発と標準化活動 株式会社本田技術研究所基礎技術研究センター関谷眞

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

改訂履歴 項番版数作成日 / 改訂日変更箇所変更内容. 平成 28 年 5 月 3 日新規章構成の変更, 分冊化に伴い新規作成 (i)

T2でつなごう! -つなぐつながるWebフレームワーク「T2」の紹介

IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators

4-4- 基スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語を学習し アプリケーション開発の手法を習得する 本カリキュラムでは まずスクリプト言語に位置づけされる Perl PHP Python JavaScript Ruby といった Ⅰ. 概要プログラミング言語の特徴に

ObjectPartner Pro

SpringSecurity

Transcription:

ASP.NET MVC を使った TDD 入門 ~SI 屋さんと WEB 屋さんとの違い ~ http://twitter.com/normlian http://d.hatena.co.jp/waritohutsu http://www.pixiv.net/member.php?id=147209 by

自己紹介 HN : 割と普通 本拠地 : 横浜近辺 肩書き : コードをあまり書けない SI 屋 趣味 : コードを書く & 絵を描く その他 : InfoQの翻訳者もどき

今日の流れ ASP.NET MVC って何者? ASP.NET MVC 誰がいつ使う? ASP.NET MVC をいじってみよう! ASP.NET MVC による TDD 開発

ASP.NET MVC って何者? WEB アプリ開発用のフレームワーク Codeplex でソースコードを公開中 ASP.NET Ajax WebForm ASP.NET ASP.NET MVC.NET Framework

ASP.NET MVC って何者? (1/2) ASP.NET で M V C のモデルを構築 Model View Controller Controller モデルの呼び出し Web ブラウザ Model View View がモデルを参照

ASP.NET MVC って何者? (2/2) 認証機能 フィルタ機能 時間があったらおまけで話します キャッシュ機能 単体テストの容易性 今日の発表はここメインで

なんで ASP.NET MVC つくったん? (1/3) ASP.NET 自体のコンセプトは? デスクトップアプリの開発手法 WndProc WM_XXX イベントドリブン WEB アプリの開発 GET POST form セッション 従来のクラサバシステム開発者が WEB 開発にそのまま移行できる開発フレームワークを提供していた

なんで ASP.NET MVC つくったん? (2/3) でも それはそれで色々と問題が ViewState の埋め込み何とかして orz コードビハインドは良いけど ユニットテスト化しにくいよ orz Javascript css の自動生成されて 他の部品とコンフリクトしますが何か?

なんで ASP.NET MVC つくったん?(3/3) 純粋な WEB 開発用フレームワークの台頭 Ruby on Rails (Ruby) Django (Python) Cake (PHP) 同じ型付言語の Java でも色々と JSF Struts Spring Wicket TDD WEB 開発に特化 従来のクラサバ開発者だけでなく WEB 開発者も取り込んでみようかのー かな?

今日の流れ ASP.NET MVC って何者? ASP.NET MVC 誰がいつ使う? o WEB 屋さんと SI 屋さんの違い o WebForm と MVC の住み分け ASP.NET MVC をいじってみよう! ASP.NET MVC で TDD 開発

ASP.NET MVC 誰がいつ使う? 主な対象はいわゆる WEB 屋さん 気にするのは開発効率の向上 カスタマイズの容易性とか 設計メインな SI 屋さんではない 気にするのがコンポーネント化 標準化とか TDD 開発 Agile 開発等で強さを発揮しそう 逆にウォーターフォールとかだと厳しそう

SI 屋さんと WEB 屋さんの違いってなにさ?(1/2) SI 屋さん o 業務知識優先 o 古き良きウォーターフォールベース o イントラ多し 典型的な CRUD アプリやら帳票やら o 特定ユーザがターゲット ( 特定の法人内とか ) WEB 屋さん o サービス企画 柔軟で高速な開発 ( ドキュメントは後から ) o アジャイルが割かし多い筈じゃない? o URL やら XHTML やら デザインが超重要 o ユーザが不特定多数多し ( インターネット上 ) いわゆるインターネットの あちら側 と こちら側

SI 屋さんと WEB 屋さんの違いってなにさ? (2/2) 概要設計 SI 屋 ( 設計者 ) さんが主に住んでそうな世界 総合テスト 基本設計 連結テスト 要件 仕様 予算等を伝える 詳細設計 開発 ソースチェック 単体テスト WEB 屋 ( 開発者 ) さんが主に住んでそうな世界 テスト項目の納品 WEB 屋さんとSI 屋さんで気にするポイントが結構違う

WebForm と MVC のすみわけ SI 屋さんの様なタイプ ( コンポーネント指向 ) o 設計と開発との切り離しが容易 o 典型的な CRUD アプリとかならコーディングレスでも OK o 基本設計とテスト項目の整合性チェックとかが楽 o コンポーネントを用いた開発標準化が行いやすい WebForm 向き!! WEB 屋さん的なタイプ ( リソース指向 ) o Agile 開発 TDD 開発向き o Ajaxなんかとの連携しやすいし デザインにこりやすい o ポストバック VIEWSTATE 埋め込み CSS 生成はつらい o URLルーティングとか良い感じ o URL 名もデザインできるよ MVC 向き!!

今日の流れ ASP.NET MVC って何者? ASP.NET MVC 誰がいつ使う? ASP.NET MVC いじってみよう! o Model o View o Controller ASP.NET MVC を使った TDD 開発

ASP.NET MVC を使ってみる ~ 概要 1/2~ URL ルーティングされ 実行される Controller がマッピング o URL マッピングからコントローラ & アクションを引き出す o リフレクションを使ってアクションを実行 ルーティングクラスを使ってマッピング

ASP.NET MVC を使ってみる ~ 概要 2/2~ Controller が実行され 画面にデータをマッピング o 以下は System.Web.Mvc.MvcHandler Controller 作成 Controller 実行

ASP.NET MVC 使ってみる ~Controller 1/2~ System.Web.Mvc.Controller で定義 デフォルトでは DefaultControllerFactory 辺りから Controllerが抜き出される Controllerのアクションを実行された際に ActionResultクラスを返す困ったらController.csクラスを眺めてみよう! ControllerActionInvoker.cs 辺りを見ると Controller がどうやって実行されてるかわかるよん

ASP.NET MVC 使ってみる ~Controller 2/2~ Controller 辺りに余計な拡張をしようと思ったら IControllerFactory を実装したクラスに置き換えるといい感じ ( 現状では DefaultControllerFactory 辺りを継承したクラスでいじると良いかも ) Controller に対して DI コンテナでインジェクションとか

ASP.NET MVC を使ってみる ~Model 1/2~ System.Web.Mvc.IModelBinder を使ったりできるよ! o バインド用の独自インターフェースを使って Binding o アクション実行の段階ではすでにモデルにバインディングされてる (ControllerActionInvoker 内でバインド )! ViewModel クラス Binder クラス

ASP.NET MVC を使ってみる ~Model 2/2~ Controller#UpdateModel メソッドを使うのも全然有り o Controller 内で明示的にバインディングする o FormCollection と Models なクラスに対するマッピングをリフレクション使ってやってくれる プロパティ名 == collection[ name 属性 ] の値をマッピング

ASP.NET MVC を使ってみる ~View 1/2~ Controller 戻り値 ActionResult の中で ViewResult が *.aspx のレンダーに対応してる View の検索 View でレンダリング ViewEngineCollection から View を検索

ASP.NET MVC を使ってみる ~View 2/2~ IViewEngine の標準実装として用意されているのは WebFormViewEngine ~/Views 仮想パス下から {controller}/{action}.aspx とかを探して その WebFormView を作成

今日の流れ ASP.NET MVC って何者? ASP.NET MVC は誰がいつ使うのか? ASP.NET MVC をいじってみよう! ASP.NET MVC を使った TDD 開発

ASP.NET MVC 上での TDD 開発 (1/2) 開発サーバを起動することなくテスト可能 ActionResult の Model ViewData に対してチェックを行う 基本的に Controller の引数 戻り値がテスト対象

ASP.NET MVC 上での TDD 開発 (2/2) 単体テスト効率化の コツ *.aspx ViewData[ key ] ViewData.Model Controller IRepository MainRepository( 本番用 ) 画面の表示データに対してチェックする MockRepository( テスト用 ) Repository パターンを使ってモック化 実際にデモをしてみます!

おまけその1 Filter 開発 Controller 実行時に適用されるフィルタ 1. IAuthorizationFilter#OnAuthorization() 2. IActionFilter#OnActionExecuting() 3. コントローラのアクション実行 4. IActionFilter#OnActionExecuted() 5. IResultFilter#OnResultExecuting() 6. ActionResult#ExecuteResult() 例外が発生 7. IResultFilter#OnResultExecuted() IExceptionFilter#OnException()

おまけその 2 HtmlHelper の拡張 *.aspx を作成する際に用いるヘルパークラス やり過ぎると WebForm と区別が付かなくなったりするので程々に

まとめ 純 WEB 屋さんなら MVC が良い感じ 元々がデスクトップアプリ開発者なら 無理に変えなくても良いかも 拡張性が非常に高いのは素晴らしいよね CodePlex に行くと ソースコードが落とせますよ Future パッケージ系は楽しそう ( 非同期実行とか )