SlideShare a Scribd company logo
はじめての ASP.NET MVC
2015/4/11
ASP.NET 初心者勉強会
@jz5(プロ生)
自己紹介
• @jz5
• プロ生ちゃんP
• ASP.NET 初心者
• 運営
– プログラミング生放送
– IT 勉強会スタンプラリー
今回の内容
• 扱うこと
– ASP.NET MVC で Web サイトを作る
– ○○すれば□□ができるみたいな
• 扱わないこと
– MVC とはみたいな
– ○○すればどういう仕組みで□□が実現できているみたいな
対象
• 環境
– Visual Studio 2013/2015 CTP 5
• 対象者
– ASP.NET MVC でサイトを作ったことないひと
– プログラミングある程度できるひと
注意
• 実際にサイトを作って理解したことを書いています。細
かな定義や意味合いは異なるかも。
• 次期 ASP.NET MVC はどうなるか知りません
ASP.NET MVC で作ったサイト紹介
• IT 勉強会スタンプ
• パスワードを平文で送ってくるっぽいサイトまとめ
• リツイート直後のツイートを表示するやつ
• timg: Twitter 画像検索・画像一覧
• その他 画像ジェネレーター系や
プレゼント応募フォームなど
IT勉強会スタンプ
• Git リポジトリ
– https://github.com/jz5/it-stamp
• 関連技術
– SQL Server
– Azure Web アプリ
• ASP.NET 機能
– ユーザー認証
– Facebook/Twitter/Google サインイン
– Role 機能
– メール機能
– (ツイート機能)※ ASP.NET の仕組みとは直接関係なし
プロジェクトの作成
プロジェクト新規作成
1. Visual Basic/C# → Web
→ ASP.NET Webアプリケーションプロジェクト
2. 「MVC」選択
3. 「認証の変更」
– 「認証なし」
– 「個人ユーザー アカウント」: SQL Server を使ったユーザー情
報を保存する仕組みが使える。Twitter/Facebook/Google など
のサインイン機能も使える。
※ SNS サインイン機能だけ使って情報を保存しない場合は「認証な
し」から始めた方が良いかも
プロジェクトを作成したら
• NuGet パッケージの管理からプログラムを更新しておく
ちなみにプロジェクトサイズは80MBぐらい
プロジェクトの構成
• ルーティング
• コントローラー
• ビュー
ルーティング
• App_Start/RouteConfig.cs で URL の構成を決める
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);
デフォルト
http://localhost/Account/Login?returnUrl=/Home
{コントローラー名} {アクション名} {オプションのパラメーター}
→ アクセスすると AccountController クラスの
Login メソッドを実行
ルーティング
• http://localhost/Event/1 のようにアクセスしたい
routes.MapRoute(
name:"Events",
url:"Events/{id}",
defaults:new {controller = "Events", action = "Details"},
constraints: new {id = "¥¥d+"}
);
Events/{id} のアクセスは
コントローラーとアクションを固定
追記
コントローラー
• HTTP リクエストを処理して表示するビューを決める
• Controllers フォルダーにある
– AccountController.cs
– HomeController.cs
– ManageController.cs
※ 「個人ユーザー アカウント」で作成した場合
コントローラー
• AccountController.cs
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
Account/Login に GET アクセスしたときに実行される
Account/Login?returnUrl=/Home のようなアクセスは
引数 returnUrl に /Home が入っている
コントローラー
• AccountController.cs
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
...
}
Account/Login に POST アクセスしたときはこっちが実行される
[HttpPost] 属性で POST アクセスを指定
コントローラー
• ビューを返す
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
return View("Error");
return RedirectToAction("Index", "Home");
→ Account/Login ビューを表示
→ Account/Error ビューを表示
→ Home/Index にリダイレクト
ビュー
• 表示する ページ(HTML + α)
• コントローラーからデータを受け取る
(コントローラでビューにデータを指定していた場合)
• Views フォルダーにある
– Account/Login.cshtml など
• コントローラーで Account/Login ビューを返すと
このファイルの内容が表示/実行される
• Razor 記法で記述
– HTML の中にロジックなどを埋め込める
Razor 記法
• 「ASP.NET Razor」で検索
• ポイント的なところ
– @model LoginViewModel
• コントローラーから受け取った LoginViewModel クラスのオブジェクト
– 親レイアウトなどテンプレート化できる(されている)
• Shared/_Layout.cshtml(@RenderBody() に子のビューを表示)
– Html ヘルパーで HTML を短く書ける
<input class="form-control" data-val="true" data-val-email="電子メール フィールドは有効な電子メール
アドレスではありません。" data-val-required="電子メール フィールドが必要です。" id="Email"
name="Email" type="text" value="" />
@Html.TextBoxFor(m => m.Email, new { @class = "form-control" })
→
ここまでのまとめ
• ルーティングで指定したコントローラーのアクション(メソッ
ド)が実行される
• コントローラーは要求を処理して表示するビューを決める
– 要求をもとにデータベースにアクセスしてなんやらしたりする
• ビューはコントローラーのデータを受け取って Web ページを表
示する
モデルを操作する
• モデルと Code First
• モデルを作成
• Code First で DB のテーブル作成
• モデルを操作する
コントローラーとビューの作成
モデル
• Web アプリで扱うデータ(DB に格納するデータ)
– ユーザー情報など
Code First
• DB のテーブルをコードから作る方法
– 特別な専用のコードではなく通常のクラスを記述する
– 記述したクラスはアプリでそのまま使える
モデル作成
• 例:イベント情報
• Models/Events.cs
public class Event
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public DateTime StartDateTime { get; set; }
}
モデル作成
• DB に格納するモデルは ApplicationDbContext クラ
スで操作する
• Models/IdentityModels.cs の
ApplicationDbContext クラスに追記
public DbSet<Event> Events { get; set; }
DB のテーブル作成
1. プロジェクトのビルド
2. パッケージマネージャー コンソール表示
– [ツール]-[NuGet パッケージマネージャー] から
3. Enable-Migrations コマンド実行
– メッセージ「Code First Migrations がプロジェクト○○で
有効になりました。」
– Migrations/Configuration.cs ができている
DB のテーブル作成
4. Configuration.cs
– AutomaticMigrationsEnabled = true; に修正
5. Update-Database コマンド実行
– DB の構成変更完了
Configuration.csとUpdate-Database
• Configuration クラスの Seed メソッド
– Update-Database 実行時に処理する内容を記述できる
• 初期ユーザーの生成など
• Update-Database
– モデルを修正するたびに実行
– DB のデータ内容を維持してテーブル構造をモデルに合わせる
– データ内容を維持できない場合は –force パラメーターを付けて実
行(必要なときは実行時にメッセージが表示される)
– App_Data フォルダーにある .mdf ファイルを削除して作り直すの
もアリ
コントローラーとビューの作成
1. ソリューションエクスプローラー Contollers コンテキストメ
ニュー [追加]-[コントローラー]
2. 「Entity Framework を使用した、ビューがある MVC 5 コン
トローラー」を「追加」
3. データコンテキスト クラスで「ApplicationDbContext」選択
4. モデル クラスで「Event」選択して「追加」
→ Contollers/EventContoller.cs と Views/Events が生成
Event の一覧・表示・作成・編集・削除が可能なコードが
生成されているので,これを元にアプリに必要な処理を実装していく
Events/Index 一覧表示
• コントローラー: DB の内容をビューに渡す
public ActionResult Index()
{
return View(db.Events.ToList());
} ※ db: new ApplicationDbContext
• ビュー
– @model IEnumerable<Models.Event> 扱うモデルの型を指定
– @foreach (var item in Model) { ... } 一覧表示
• 「Model」で参照できる
Events/Create 作成(ビュー側)
• ビュー
– @model Models.Event:扱うモデルの型
– フォームの作成
@using (Html.BeginForm())
{
...
@Html.EditorFor(model => model.Name, ...)
@Html.ValidationMessageFor(model => model.Name, "“, ...)
...
}
Events/Create 作成(コントローラー側)
• コントローラー
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Event @event)
{
if (ModelState.IsValid)
{
db.Events.Add(@event);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(@event);
}
<input id="Name" name="Name" type="text" value="勉強会" />
input の値がプロパティに設定された
event オブジェクトとして受け取れる
モデルバインディング
モデルバインディング
• 「ASP.NET モデルバインディング」で検索
• Events/Createでは ビュー側の @model とコントロー
ラー側のメソッドの引数 events の型が一致していたが,
一致している必要はない
– リクエストデータは,一致する引数名やクラスのプロパティ名
の値に設定される
ユーザー認証(サインイン機能)
ASP.NET Identity
ASP.NET Identity
• 「ASP.NET Identity」で検索
• ASP.NET の認証や資格管理のシステム
• いろいろな仕組みを提供してカスタマイズや独自実装が可能
ユーザー認証の機能(1/2)
• ユーザー認証の仕組みが実装されている
– デフォルトはメールアドレスを一意なユーザー名として使用
– DB にユーザー情報を格納(AspNet から始まるテーブル名)
ユーザー認証の機能(2/2)
• 枠組みだけ用意されている機能
– メールによるパスワードリセットなど
• メールを送信する部分は要実装
– 2段階認証(使ったことないけど)
• SMS 部分は要実装
– Facebook/Twitter/Google アカウントによるログイン
• 各サービスの ID/Secret key を指定すれば使える
– Role の実装(管理者ユーザー権限などを付けたい場合)
• 生成されるコードにサンプルコードは記述されていない
– ApplicationRoleManager, RoleManager などで検索
– IT 勉強会スタンプは実装している
枠組みだけ用意されている機能の実装
• App_Start/IdentityConfig.cs の編集
– EmailService クラスの実装など
• App_Start/Startup.Auth.cs の編集
– Facebook/Twitter/Google ID, Secret key 指定など
ユーザー情報のカスタマイズ
• ApplicationUser クラス(IdentifyModels.cs)に
プロパティを追加して Update-Database 実行
– AspNetUsers テーブルに追加される
ユーザー認証のカスタマイズ
• ユーザー名の設定やメールアドレスまたはユーザー名で
サインイン可能にするなど
• AccountContoller などの編集(自分で実装)
– ユーザーの登録処理などは AccountContoller に記述されて
いる。デフォルトのユーザー認証の機能を確認して、少しずつ
修正していくといいと思う。
Azure Web アプリで公開
Azure Web アプリ(旧 Azure Websites )
• 「Azure Web アプリ」で検索
• 使うポイント
– Visual Studio から簡単に Web アプリとして公開可能
• データベースの新規作成,Code First 実行(DB 構造の変更)なども
可能
– Visual Studio でリモートデバッグ可能
発行
• ソリューションエクスプローラーのプロジェクト コンテキストメ
ニュー[発行]
• 「Microsoft Azure Websites」から「新規」を選択
いろいろなトピック
細かなことはサイト参照や
検索してください
複雑なモデル
• プロパティがクラス(プリミティブ型でない)
– virtual 修飾子が必要
• 多対多の関係
– マッピングの記述が必要
• 参考「コード・ファースト開発の基本」
– http://blog.shibayan.jp/entry/20101014/1287061553
.mdf を削除したら再度作れなくなった
• LocalDb インスタンスを終了させるコマンド
– sqllocaldb stop v11.0
– sqllocaldb delete v11.0
• http://adamstephensen.com/2014/03/06/entity-framework-code-first-
delete-a-localdb-instance/
HTTPS にする
1. プロジェクトのプロパティウィンドウ「開発サーバー」
1. 「SSL 有効」を True
2. 「SSL URL」をコピー
2. プロジェクトのプロパティ「Web」の「プロジェクトの
URL」にペースト
3. コントローラー クラスまたはそのメソッドに
[RequireHttps] 属性を付け HTTPS のみ許可する
CSRF 対策
• 生成されるコードは既にされている
• ビュー側
– form 内に @Html.AntiForgeryToken() 記述
• コントローラー側
– メソッドに [ValidateAntiForgeryToken] 属性
アクセス許可設定
• コントローラーのクラスやメソッドに属性を指定
– 誰でもアクセスできる
• [AllowAnonymous]
– サインインしたユーザーのみアクセスできる
• [Authorize]
– 「Admin」Role ユーザーのみアクセスできる
• [Authorize(Roles="Admin")]
Ajax で POST 処理
• NuGet パッケージ
「Microsoft.jQuery.Unobtrusive.Ajax」追加
• ビュー
– Html.BeginForm → Ajax.BeginForm に変更(パラメー
ターも要修正)
– JavaScript でデータ受け取り,表示反映などの処理が必要
• コントローラー
– ビューではなくJSON データを返すよう修正
JSON データを返す
• return Json(object_data);
– 匿名クラスでも通常のクラスのオブジェクトでも JSON に変
換して返す
• Ajax によるアクセスか判定は Request.IsAjaxRequest()
ツイート機能をつけたい
• ID/Secret key 指定のみではサインインできるだけ
• ツイートする仕組みなどを実装するにはサインイン時に
アクセストークンなども受け取るよう
TwitterAuthenticationProvider の指定が必要(次
スライド)
– 追加情報は DB に保存される(AspNetUserClaim テーブル)
TwitterAuthenticationProvider の指定
app.UseTwitterAuthentication(
new TwitterAuthenticationOptions()
{
ConsumerKey = "**TwitterConsumerKey**",
ConsumerSecret = "**TwitterConsumerSecret**",
Provider = new TwitterAuthenticationProvider()
{
OnAuthenticated = async (context) =>
{
context.Identity.AddClaim(new Claim(
"urn:tokens:twitter:accesstoken", context.AccessToken));
context.Identity.AddClaim(new Claim(
"urn:tokens:twitter:accesstokensecret", context.AccessTokenSecret));
}
}
});
参考: http://blogs.msdn.com/b/tsmatsuz/archive/2014/06/16/asp-net-identity-get-claim-scope-and-access-
token-using-external-login-of-google-facebook-twitter-microsoft-account.aspx
Claim 情報の取得
var accsessTokenClaim =
HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().GetClaims("use
rId").FirstOrDefault((x) => x.Type == "urn:tokens:twitter:accesstoken");
Twitter ライブラリー
• CoreTweet などの NuGet パッケージを追加して
ツイート処理を実装
DB なしで Twitter サインイン機能だけ実装
• 「認証なし」のプロジェクトを作成
• 必要な NuGet パッケージを追加
– Microsoft.Owin
– Microsoft.Owin.Host.SystemWeb
– Microsoft.Owin.Security
– Microsoft.Owin.Security.Cookies
– Microsoft.Owin.Security.Twitter
– Owin
• Startup.Auth.cs, Startup.cs, Controller の実装
• 参考「Using Owin External Login without ASP.NET Identity」
– http://coding.abel.nu/2014/11/using-owin-external-login-without-asp-net-identity/
– Global.aspx Application_Start() に AntiForgeryConfig.UniqueClaimTypeIdentifier =
ClaimTypes.Name; 追記
Azure Web アプリ関連いろいろトピック
日時と言語
• UTC
• en-US
• web.config で変更不可
ログの取得
• アクセスログはデフォルトで保存されていない
• 旧 Portal の Web アプリの「構成」の「サイト診断」の
「Web サーバーのログ記録」で有効化できる
実際にあったこと: 現象と原因
• 現象
• 旧 Azure Portal のダッシュボードで見ると大量の HTTP サーバーエ
ラーが発生
– 原因(アクセスログを確認して判明)
• コントローラーに引数が必要なアクションを用意していた(パラメー
ターが必要な URL)
– 引数なしの場合は HTTP エラーを返していた
• Google のクローラーがパラメーターなしの URL にアクセスしていた
リモートデバッグ
• 「Visual Studio で Azure のプロジェクトを Remote
Debug する」
• http://blogs.msdn.com/b/tsmatsuz/archive/2013/01/31/windo
ws-azure-remote-debug-using-visual-studio-2012.aspx
オマケ: アプリを完成させるには
細かいことを気にしない
• とりあえず動くものを公開する
• 気になりそうなところ
– 変数名・関数名・クラス構造 その他もろもろ
– JSON でデータ返したら camel case 一致してない
• C#/VB → Upper Camel Case, JSON → snake_case
– Ajax で表示更新を実装したら cshtml と JavaScript コード
に似たような HTML 記述ができている
– コントローラーに async メソッドとそうでないメソッドが混
在
コントローラー内の async メソッドの必要性
• メソッド内で IO 処理を並列にするなど await 呼び出し
を使う必要がなければ不要
• by @shibayan(ASP.NET MVP)
アプリが完成したら
• ニュースリリースを送る
– 「リツイート直後のツイートを表示するやつは」GIGAZINE と
ねとらぼ に送付
• Web アプリを紹介するサイトに登録
まとめ
• プロジェクトの構成
– ルーティング,コントローラー,ビュー
• モデルの操作
– Code First, コントローラーとビューの生成
• ユーザー認証
– 実装・用意されている仕組み,カスタマイズ方法
• Azure Web アプリへ発行
• その他の機能の実装方法など
以上で…
• サインインユーザーだけがイベント情報を登
録/編集できるサイト
• 登録時に情報をツイートする機能
• …というようなサイトは作れるかも
ご清聴ありがとうございました
2015/4/11
ASP.NET 初心者勉強会
@jz5(プロ生)

More Related Content

What's hot

Web開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor AppWeb開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor App
TomomitsuKusaba
 
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えしますA5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えします
ester41
 
MVC の Model を考える
MVC の Model を考えるMVC の Model を考える
MVC の Model を考える
tomo_masakura
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Akira Inoue
 
WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術
Sho Okada
 
Entity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼうEntity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼう
TomomitsuKusaba
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
 
WPF MVVM Review
WPF MVVM ReviewWPF MVVM Review
WPF MVVM Review
Takayuki Kondou
 
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」 DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
Koichiro Matsuoka
 
AWS初心者向けWebinar 失敗例を成功に変える AWSアンチパターンのご紹介
AWS初心者向けWebinar 失敗例を成功に変える AWSアンチパターンのご紹介AWS初心者向けWebinar 失敗例を成功に変える AWSアンチパターンのご紹介
AWS初心者向けWebinar 失敗例を成功に変える AWSアンチパターンのご紹介
Amazon Web Services Japan
 
AAD authentication for azure app v0.1.20.0317
AAD authentication for azure app v0.1.20.0317AAD authentication for azure app v0.1.20.0317
AAD authentication for azure app v0.1.20.0317
Ayumu Inaba
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
 
ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要
TomomitsuKusaba
 
ADRという考えを取り入れてみて
ADRという考えを取り入れてみてADRという考えを取り入れてみて
ADRという考えを取り入れてみて
infinite_loop
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
Satoshi Takami
 
iOSでMVVM入門
iOSでMVVM入門iOSでMVVM入門
iOSでMVVM入門
ishikawa akira
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 

What's hot (20)

Web開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor AppWeb開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor App
 
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えしますA5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えします
 
MVC の Model を考える
MVC の Model を考えるMVC の Model を考える
MVC の Model を考える
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
 
WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術
 
Entity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼうEntity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼう
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
WPF MVVM Review
WPF MVVM ReviewWPF MVVM Review
WPF MVVM Review
 
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」 DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
 
AWS初心者向けWebinar 失敗例を成功に変える AWSアンチパターンのご紹介
AWS初心者向けWebinar 失敗例を成功に変える AWSアンチパターンのご紹介AWS初心者向けWebinar 失敗例を成功に変える AWSアンチパターンのご紹介
AWS初心者向けWebinar 失敗例を成功に変える AWSアンチパターンのご紹介
 
AAD authentication for azure app v0.1.20.0317
AAD authentication for azure app v0.1.20.0317AAD authentication for azure app v0.1.20.0317
AAD authentication for azure app v0.1.20.0317
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 
ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要
 
ADRという考えを取り入れてみて
ADRという考えを取り入れてみてADRという考えを取り入れてみて
ADRという考えを取り入れてみて
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
 
iOSでMVVM入門
iOSでMVVM入門iOSでMVVM入門
iOSでMVVM入門
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 

Viewers also liked

社内システムの構造と設計、実装のはなし
社内システムの構造と設計、実装のはなし社内システムの構造と設計、実装のはなし
社内システムの構造と設計、実装のはなし
SATOSHI TAGOMORI
 
社内SEのキャリアについて分析してみた
社内SEのキャリアについて分析してみた社内SEのキャリアについて分析してみた
社内SEのキャリアについて分析してみた
Yuta Moriyama
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説Akira Inoue
 
WebHookの調査と実装
WebHookの調査と実装WebHookの調査と実装
WebHookの調査と実装moai kids
 
Azure Functions 入門
Azure Functions 入門Azure Functions 入門
Azure Functions 入門
jz5 MATSUE
 
kintoneとMicrosoft Flowで学ぶイマドキのシステム間連携
kintoneとMicrosoft Flowで学ぶイマドキのシステム間連携kintoneとMicrosoft Flowで学ぶイマドキのシステム間連携
kintoneとMicrosoft Flowで学ぶイマドキのシステム間連携
Sakae Saito
 
Webhooks in Microsoft SharePoint Online
Webhooks in Microsoft SharePoint OnlineWebhooks in Microsoft SharePoint Online
Webhooks in Microsoft SharePoint Online
Netwoven Inc.
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説Akira Inoue
 
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
ASP.NET SPA開発をはじめよう~今と未来とステップアップASP.NET SPA開発をはじめよう~今と未来とステップアップ
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
慎一 古賀
 
Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定
Go Maeda
 

Viewers also liked (10)

社内システムの構造と設計、実装のはなし
社内システムの構造と設計、実装のはなし社内システムの構造と設計、実装のはなし
社内システムの構造と設計、実装のはなし
 
社内SEのキャリアについて分析してみた
社内SEのキャリアについて分析してみた社内SEのキャリアについて分析してみた
社内SEのキャリアについて分析してみた
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
 
WebHookの調査と実装
WebHookの調査と実装WebHookの調査と実装
WebHookの調査と実装
 
Azure Functions 入門
Azure Functions 入門Azure Functions 入門
Azure Functions 入門
 
kintoneとMicrosoft Flowで学ぶイマドキのシステム間連携
kintoneとMicrosoft Flowで学ぶイマドキのシステム間連携kintoneとMicrosoft Flowで学ぶイマドキのシステム間連携
kintoneとMicrosoft Flowで学ぶイマドキのシステム間連携
 
Webhooks in Microsoft SharePoint Online
Webhooks in Microsoft SharePoint OnlineWebhooks in Microsoft SharePoint Online
Webhooks in Microsoft SharePoint Online
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
 
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
ASP.NET SPA開発をはじめよう~今と未来とステップアップASP.NET SPA開発をはじめよう~今と未来とステップアップ
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
 
Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定
 

Similar to はじめての ASP.NET MVC

[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介david9142
 
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験
miso- soup3
 
ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)
Atsushi Yokohama (BEACHSIDE)
 
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
DevTakas
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
normalian
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
 
ASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみたASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみた
Kentaro Inomata
 
Mvc conf session_1_osada
Mvc conf session_1_osadaMvc conf session_1_osada
Mvc conf session_1_osada
Hiroshi Okunushi
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
lalha
 
a-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazakia-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in OkazakiEtsushi Ishii
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
youku
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
Akira Inoue
 
VSハッカソン TypeScript ハンズオン
VSハッカソン TypeScript ハンズオンVSハッカソン TypeScript ハンズオン
VSハッカソン TypeScript ハンズオンKazuhide Maruyama
 
Laravelの検索機能の実装方法
Laravelの検索機能の実装方法Laravelの検索機能の実装方法
Laravelの検索機能の実装方法
yoshitaro yoyo
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
Sho A
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
Shinichiro Takezaki
 

Similar to はじめての ASP.NET MVC (20)

[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
ASP.NET MVC 1.0
ASP.NET MVC 1.0ASP.NET MVC 1.0
ASP.NET MVC 1.0
 
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験
 
UnicastWS vol.2
UnicastWS vol.2UnicastWS vol.2
UnicastWS vol.2
 
ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)
 
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
 
ASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみたASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみた
 
Mvc conf session_1_osada
Mvc conf session_1_osadaMvc conf session_1_osada
Mvc conf session_1_osada
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
 
a-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazakia-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazaki
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
VSハッカソン TypeScript ハンズオン
VSハッカソン TypeScript ハンズオンVSハッカソン TypeScript ハンズオン
VSハッカソン TypeScript ハンズオン
 
Laravelの検索機能の実装方法
Laravelの検索機能の実装方法Laravelの検索機能の実装方法
Laravelの検索機能の実装方法
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 

More from jz5 MATSUE

マスコットアプリ文化祭2018受賞作品
マスコットアプリ文化祭2018受賞作品マスコットアプリ文化祭2018受賞作品
マスコットアプリ文化祭2018受賞作品
jz5 MATSUE
 
マスコットアプリ文化祭2018受賞作品
マスコットアプリ文化祭2018受賞作品マスコットアプリ文化祭2018受賞作品
マスコットアプリ文化祭2018受賞作品
jz5 MATSUE
 
マスコットアプリ文化祭2017 受賞作品
マスコットアプリ文化祭2017 受賞作品マスコットアプリ文化祭2017 受賞作品
マスコットアプリ文化祭2017 受賞作品
jz5 MATSUE
 
MvvmCross 入門
MvvmCross 入門MvvmCross 入門
MvvmCross 入門
jz5 MATSUE
 
マスコットアプリ文化祭2016 受賞作品発表 & 表彰式
マスコットアプリ文化祭2016 受賞作品発表 & 表彰式マスコットアプリ文化祭2016 受賞作品発表 & 表彰式
マスコットアプリ文化祭2016 受賞作品発表 & 表彰式
jz5 MATSUE
 
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin
マスコットアプリ─ キャラアプリ─ 開発 with Xamarinマスコットアプリ─ キャラアプリ─ 開発 with Xamarin
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin
jz5 MATSUE
 
Text-To-だるやなぎスピーチの開発
Text-To-だるやなぎスピーチの開発Text-To-だるやなぎスピーチの開発
Text-To-だるやなぎスピーチの開発
jz5 MATSUE
 
マスコットアプリ文化祭2015 受賞作品発表 & 表彰式
マスコットアプリ文化祭2015 受賞作品発表 & 表彰式マスコットアプリ文化祭2015 受賞作品発表 & 表彰式
マスコットアプリ文化祭2015 受賞作品発表 & 表彰式
jz5 MATSUE
 
フォロワーから友利奈緒を探す
フォロワーから友利奈緒を探すフォロワーから友利奈緒を探す
フォロワーから友利奈緒を探す
jz5 MATSUE
 
Windows8.1(64bit) にVB6をインストール
Windows8.1(64bit) にVB6をインストールWindows8.1(64bit) にVB6をインストール
Windows8.1(64bit) にVB6をインストール
jz5 MATSUE
 
#darukaigi
#darukaigi#darukaigi
#darukaigi
jz5 MATSUE
 
テレニコツイ
テレニコツイテレニコツイ
テレニコツイjz5 MATSUE
 
コメントビューア Nway
コメントビューア Nwayコメントビューア Nway
コメントビューア Nwayjz5 MATSUE
 
ニコニコアプリ開発
ニコニコアプリ開発ニコニコアプリ開発
ニコニコアプリ開発jz5 MATSUE
 
プログラミング生放送@プログラミング生放送勉強会 第20回@品川
プログラミング生放送@プログラミング生放送勉強会 第20回@品川プログラミング生放送@プログラミング生放送勉強会 第20回@品川
プログラミング生放送@プログラミング生放送勉強会 第20回@品川
jz5 MATSUE
 

More from jz5 MATSUE (15)

マスコットアプリ文化祭2018受賞作品
マスコットアプリ文化祭2018受賞作品マスコットアプリ文化祭2018受賞作品
マスコットアプリ文化祭2018受賞作品
 
マスコットアプリ文化祭2018受賞作品
マスコットアプリ文化祭2018受賞作品マスコットアプリ文化祭2018受賞作品
マスコットアプリ文化祭2018受賞作品
 
マスコットアプリ文化祭2017 受賞作品
マスコットアプリ文化祭2017 受賞作品マスコットアプリ文化祭2017 受賞作品
マスコットアプリ文化祭2017 受賞作品
 
MvvmCross 入門
MvvmCross 入門MvvmCross 入門
MvvmCross 入門
 
マスコットアプリ文化祭2016 受賞作品発表 & 表彰式
マスコットアプリ文化祭2016 受賞作品発表 & 表彰式マスコットアプリ文化祭2016 受賞作品発表 & 表彰式
マスコットアプリ文化祭2016 受賞作品発表 & 表彰式
 
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin
マスコットアプリ─ キャラアプリ─ 開発 with Xamarinマスコットアプリ─ キャラアプリ─ 開発 with Xamarin
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin
 
Text-To-だるやなぎスピーチの開発
Text-To-だるやなぎスピーチの開発Text-To-だるやなぎスピーチの開発
Text-To-だるやなぎスピーチの開発
 
マスコットアプリ文化祭2015 受賞作品発表 & 表彰式
マスコットアプリ文化祭2015 受賞作品発表 & 表彰式マスコットアプリ文化祭2015 受賞作品発表 & 表彰式
マスコットアプリ文化祭2015 受賞作品発表 & 表彰式
 
フォロワーから友利奈緒を探す
フォロワーから友利奈緒を探すフォロワーから友利奈緒を探す
フォロワーから友利奈緒を探す
 
Windows8.1(64bit) にVB6をインストール
Windows8.1(64bit) にVB6をインストールWindows8.1(64bit) にVB6をインストール
Windows8.1(64bit) にVB6をインストール
 
#darukaigi
#darukaigi#darukaigi
#darukaigi
 
テレニコツイ
テレニコツイテレニコツイ
テレニコツイ
 
コメントビューア Nway
コメントビューア Nwayコメントビューア Nway
コメントビューア Nway
 
ニコニコアプリ開発
ニコニコアプリ開発ニコニコアプリ開発
ニコニコアプリ開発
 
プログラミング生放送@プログラミング生放送勉強会 第20回@品川
プログラミング生放送@プログラミング生放送勉強会 第20回@品川プログラミング生放送@プログラミング生放送勉強会 第20回@品川
プログラミング生放送@プログラミング生放送勉強会 第20回@品川
 

はじめての ASP.NET MVC

Editor's Notes

  1. はじめて参加したひと
  2. はじめて参加したひと