SlideShare a Scribd company logo
入力データ検証を使いこなそう

    Silverlightを囲む会in東京#4

田中 孝佳(@tanaka_733)
はじめに
サンプルアプリの公開

説明に使うサンプルアプリを公開しています
 – http://techblog.hilife-
   jp.info/2011/10/silverlightin4.html
 – PC持参の方はぜひどうぞ
 – IS12T, Win8MetroUIではだめですm(_ _)m
ソースコードはこちらで公開しています
 – https://skydrive.live.com/?cid=B43F4832F5
   BAFBB9&id=B43F4832F5BAFBB9%211121#
で、公開してるブログの紹介

銀の光と藍い空
  – http://techblog.hilife-jp.info/
Silverlight(Web), WP7, Azure, Kinect
 ネタが中心です
最近はSilverlight 5 シリーズやってます
  – http://techblog.hilife-
    jp.info/search/label/Silverlight5
自己紹介 (@tanaka_733)

ERPパッケージベンダーの研究部門
 – クラウドを使っていい感じにする研究
Silverlightは業務アプリ開発で使ってます
 – サーバーサイドはJava
 – 前回発表したものです
   https://skydrive.live.com/view.aspx?cid=B43F483
    2F5BAFBB9&resid=B43F4832F5BAFBB9%211128
今回から 囲む会in東京 の運営にも
 参加しています
WP7, Kinect, クラウド関連の勉強会
 にも出現します
なぜクライアントサイドの
入力データ検証が必要なのか
サーバーサイド検証との違い

サーバーサイドの検証は信頼性のため
 そして業務用要件を満たすため
 – SQLインジェクションなどを防ぎたい
 – 業務的にありえない値を入力させたくない
クライアントサイド検証はUX向上
 – サーバーサイド検証だけだと応答性が悪い
 – どんな値を入力すればいいか伝えてあげる
  単にNGを出せばいいわけではない
サーバーサイド検証


        Client   Server


       検
       証         検
                 証
  API呼び出し
クライアントサイドに求められる事

あらかじめ入力形式を教えてあげる
 – 入力データ検証を助けるため


入力形式が誤っていた時、
 どう修正すればいいか伝える
 – よくない例
入力データ検証を実装するには
WebフォームだとJSが基本

HTMLは静的なので単体では検証できない
 – サーバーサイドで毎回検証するのは
   通信コスト・サーバーの処理コストがかかる
そこでJavaScriptの出番
 – でもサーバーサイドでの検証も必要ですよ
   JavaScriptが無効だったり、
    フォームを通さず通信されたりします
   公開APIを用意すると、
    もはやサーバーサイド検証のみ
Silverlightでの検証

入力検証の仕組みが用意されています
  – ASP.NET の検証コントロール的なもの
WCF RIA Servicesなど使えば、
 サーバーサイドとコードを共有する
 ことも可能
  – ただし今回はやりません
  – どちらもC#/VB であることの強みですね
Silverlightにおける
入力データ検証の実装
用意されているもの

UI部品
 – DataForm (ちょっと特殊なので今回はなし)
 – Label
 – DescriptionViewer
 – ValidationSummary
 – TextBox, ComboBoxなど入力系UI
検証ロジック
 – いくつかのやり方が存在
UI部品を使ったサンプルアプリ




このアプリを例にとって説明していきます
その前に前提条件

MVVMでの実装です
 – 今回の実装にはPrismを使っていますが、
   MVVMサポートライブラリに依存しない話です
 – ViewとViewModelの分離と
   Bindingが重要
   検証ロジックはViewModel側に定義します
   今回はロジックがないのでModelは出てきません
Silverlight4 です (5 RCでも動作を確認)
Rx使ってます
 – 非同期検証を簡単に書きたかったから
VM側の実装方法
データ検証の実装方法いろいろ

検証方法の定義
 – 自前の検証関数で定義
 – DataAnnotationsで定義
VMでの実装方法
 – 検証してNGだったら例外を投げる
 – IDataErrorInfoをVMが実装する
 – INotifyDataErrorInfoをVMが実装する
データ検証の実装方法

検証方法の定義
                          個人的に
 – 自前の検証関数で定義             おすすめ
 – DataAnnotationsで定義
VMでの実装方法
 – 検証してNGだったら例外を投げる
 – IDataErrorInfoをVMが実装する
 – INotifyDataErrorInfoをVMが実装する
おすすめの理由

DataAnnotations
 – 検証ロジックを宣言的に記述できる
   if (str.Length >= 8 && str.Length <= 20)
    とか書かなくていい
 – Label, DataformなどUIとの相性がよい
INotifyDataErrorInfo
 – 例外を投げる=処理が中断される のが嫌い
 – IDataErrorInfoより改善されている
Data Annotationsの使い方
DataAnnotationsの使い方

プロパティにAnnotationを付与
Annotationに従って検証する処理を追加
 – Validator.TryValidateProperty や
   TryValidateObjectで検証できる
   今回はINotifyDataErrorInfo
     を実装したViewModelの基底クラス内
     で記述します
DataAnnotations一覧

 検証属性                        説明
 CustomValidationAttribute   検証用にカスタム メソッドを使用します。
                             特定の種類のデータ (電子メール アドレス、
 DataTypeAttribute
                             電話番号など) を指定します。
 EnumDataTypeAttribute       値が列挙体に含まれることを保証します。
 RangeAttribute              最小値および最大値の制約を指定します。
 RegularExpressionAttribute 正規表現を使用して有効な値を指定します。
 RequiredAttribute           値が必須であることを指定します。
 StringLengthAttribute       最大文字数および最小文字数を指定します。
 ValidationAttribute         検証属性の基本クラスとして動作します。


http://msdn.microsoft.com/ja-jp/library/dd901590%28v=vs.95%29.aspx
DataAnnotationsの使い方

プロパティに付加する




              setterのコードは後で。
DataAnnotationsの欠点

複雑な検証ロジックは
 カスタム検証メソッドが必要
 – 例えば、IPv4アドレスとかCIDRとか
 – 正規表現でできるかもしれないけど、
   複雑な正規表現はわかりづらい
複数プロパティ間の検証がしづらい
 – 開始日は終了日より前とか
 – プロコトル一覧の選択がTCPなら
   ポート番号が入力必須とか
カスタム検証メソッドの定義

検証メソッドは下記の条件を満たすこと
 – publicなクラスで定義
 – public staticなメソッド
 – 返り値はValidationResult
   成功時はValidationResult.Success
 – 第一引数は検証対象の値を表すオブジェクト
 – 第二引数は任意
   検証要求についての追加情報を提供する
   ValidationContext
カスタム検証メソッドの例

IPv4アドレスをチェックする
 – IPAddress.TryParse メソッドを使用
 – ValicationContextは使っていないので省略可
INotifyDataErrorInfo
の使い方
IDataErrorInfoと
INotifyDataErrorInfoの違い

MSDNにはこう書いてます
  – 一般に、Silverlight の新しいエンティティ ク
    ラスでは、IDataErrorInfo を実装するのでは
    なく、INotifyDataErrorInfo を実装して、柔
    軟性を高める必要があります。
IDataErrorInfoの特徴
  – オブジェクトにつき1つのエラーメッセージ
  – 検証のタイミングはBinding時のみ
INotifyDataErrorInfo メンバ

HasErrors プロパティ
  – オブジェクトの検証エラーが発生しているかどう
    かを示します
GetErrors メソッド
  – 指定されたプロパティまたはオブジェクト全体の
    検証エラーを含む IEnumerableを返します
  – IEnumerableの要素はToStringメソッドでエ
    ラーメッセージを返す
ErrorsChanged イベント
  – IEnumerable が変更されるたびに、ユーザー イ
    ンターフェイス (UI) スレッド上で発生させる
INotifyDataErrorInfoの実装例

ViewModelに実装させたいことが多い
そこで、ViewModelの基底クラスとして
 INotifyPropertyChangedと一緒に実装
使用するMVVMインフラに合わせて
 実装しておくと便利
  – Prismの場合、 INotifyPropertyChanged を
    実装したNotificationObjectを継承し、
    検証結果を格納するErrorsContainerを使い
    ます
INotifyDataErrorInfoの実装例

                ViewModelBaseクラス
                ValidateProperty,
                 ValidateObject メソッド
                 を呼ぶと検証する
                検証するとその結果を
                 ErrorsContainerに格納
                検証結果に変更があると、
                 ErrorsChanged イベント
                 ハンドラを呼び出す
この実装の注意点

初期化時の値のままだと、
 検証は起きません
 – 最初から検証すると、
   入力画面がいきなり真っ赤でやな感じ
なにも入力せずに送信する事があるので、
 TryValidateObjectを必ず行う
プロパティの実装

コードスニペットにしておくのがお手軽
  <Code Language="csharp">
       <![CDATA[#region $property$
 private $type$ $var$;
 public $type$ $property$
 {
    get { return $var$; }
    set
    {
       if ($var$ == value)
       {
           return;
       }
       $var$ = value;
       RaisePropertyChanged("$property$");
       ValidateProperty("$property$", value);
    }
 }
 #endregion
 $end$]]>
      </Code>
複数プロパティの関連の検証
複数プロパティの関連を検証

DataAnnotationでは単一プロパティしか
 検証できない
方法は2つ(もしくはそれ以上)
 – ValidationContext経由で検証に必要な
   ほかのプロパティを渡す
 – ValidatePropertyメソッドなどを継承して、
   そのオブジェクト特有の検証処理を追加する
ValidationContextを使う方法

ValidationContext.Items
 に必要な値をキーを指定して渡す

検証メソッドでは必要な値を取り出す
UIコンポーネントの使い方
使えるUIコンポーネント

入力系UI
  – 検証時にポップアップ
Label
  – 必須入力時にVisualStateが代わる
  – Display要素でLabelのContentを指定できる
DescriptionViewer
  – メッセージを表示
ValidationSummary
  – メッセージを一覧表示
入力系UIでの設定

ValidationSummary使用時には
 Bindingオプションを指定します
Windows Phone 7 では

入力UIの検証属性は存在する
検証系のUIは非サポートとの記述
実際に検証属性を使っても何も起きな
 かった

要はUI側のデータ検証は使えない
 – 画面が小さいので
   そんな面倒な入力はさせるなってこと!?
ロジック内でのデータ検証には使えそう
+α 非同期の検証が必要なとき

検証はクライアントサイドのみで完結が原則
 – この場合の検証は同期処理でOK
しかし、例えば・・・
 – SNSの入会フォームで
   ユーザーIDの存在チェックは
   それだけ先にチェックしたい!
 – 検証している間に他の項目を入力できる
この場合非同期の検証が必要
 – Silverlightだと通信がからむので必須
+α 非同期の検証の実装

INotifyPropertChangedを実装している
 場合、
 非同期処理の最後でGetErrorsの結果を変
 更してErrorsChangedを呼べばよい
今回のViewModelBaseの場合は、
 ErrorsContainerに追加しさえすればOK
+α 非同期の検証の実装サンプル




 おなじみ(?)のRx使ってます
 実際は、3秒待ってではなく、
  通信してWebResponseなりを見て検証する
 LTで面白い話があるそうなのでそれも期待
ご清聴
ありがとうございました
111008 silverlight square_datavalidation

More Related Content

What's hot

xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
Takuto Wada
 
Code Contracts in .NET 4
Code Contracts in .NET 4Code Contracts in .NET 4
Code Contracts in .NET 4信之 岩永
 
HttpClientModule
HttpClientModuleHttpClientModule
HttpClientModule
Kentarou Takeda
 
DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話emorins
 
ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)libpanda
 
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFXUnit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
Shinya Mochida
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
Ken Morishita
 
今からでも遅くないC#開発
今からでも遅くないC#開発今からでも遅くないC#開発
今からでも遅くないC#開発
Kazunori Hamamoto
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
 
C#coding guideline その2_20130325
C#coding guideline その2_20130325C#coding guideline その2_20130325
C#coding guideline その2_20130325Yoshihisa Ozaki
 
Apexデザインパターン
ApexデザインパターンApexデザインパターン
Apexデザインパターン
Salesforce Developers Japan
 
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
信之 岩永
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
 
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
a know
 
Laravelとテストについて
LaravelとテストについてLaravelとテストについて
Laravelとテストについて
Takeo Noda
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
信之 岩永
 
Interaction channel
Interaction channelInteraction channel
Interaction channel
信之 岩永
 

What's hot (20)

xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
 
Mvpvm pattern
Mvpvm patternMvpvm pattern
Mvpvm pattern
 
Code Contracts in .NET 4
Code Contracts in .NET 4Code Contracts in .NET 4
Code Contracts in .NET 4
 
HttpClientModule
HttpClientModuleHttpClientModule
HttpClientModule
 
DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話
 
ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)
 
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFXUnit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
 
今からでも遅くないC#開発
今からでも遅くないC#開発今からでも遅くないC#開発
今からでも遅くないC#開発
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
 
C#の書き方
C#の書き方C#の書き方
C#の書き方
 
C#coding guideline その2_20130325
C#coding guideline その2_20130325C#coding guideline その2_20130325
C#coding guideline その2_20130325
 
Apexデザインパターン
ApexデザインパターンApexデザインパターン
Apexデザインパターン
 
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
 
T93 com入門
T93 com入門T93 com入門
T93 com入門
 
Laravelとテストについて
LaravelとテストについてLaravelとテストについて
Laravelとテストについて
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
Interaction channel
Interaction channelInteraction channel
Interaction channel
 

Viewers also liked

敏捷产品研发
敏捷产品研发敏捷产品研发
敏捷产品研发
Tianshuo Hu
 
Scrum培训
Scrum培训Scrum培训
Scrum培训
Tianshuo Hu
 
Scientific Writing Task 3
Scientific Writing Task 3Scientific Writing Task 3
Scientific Writing Task 3Ikhsan Assaat
 
Powerpointforslideshare
PowerpointforslidesharePowerpointforslideshare
Powerpointforslideshare
Jeff King
 
quest diagnostics 2008ProxyCard
quest diagnostics 2008ProxyCardquest diagnostics 2008ProxyCard
quest diagnostics 2008ProxyCardfinance34
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...Ontico
 
Erlang kansai01
Erlang kansai01Erlang kansai01
Erlang kansai01
Takayuki Kurosawa
 
Predigtpräsentation 2008 11 16, H G, Heilung
Predigtpräsentation 2008 11 16,  H G,  HeilungPredigtpräsentation 2008 11 16,  H G,  Heilung
Predigtpräsentation 2008 11 16, H G, Heilungwusternberg
 

Viewers also liked (9)

敏捷产品研发
敏捷产品研发敏捷产品研发
敏捷产品研发
 
Scrum培训
Scrum培训Scrum培训
Scrum培训
 
Scientific Writing Task 3
Scientific Writing Task 3Scientific Writing Task 3
Scientific Writing Task 3
 
Powerpointforslideshare
PowerpointforslidesharePowerpointforslideshare
Powerpointforslideshare
 
About me
About meAbout me
About me
 
quest diagnostics 2008ProxyCard
quest diagnostics 2008ProxyCardquest diagnostics 2008ProxyCard
quest diagnostics 2008ProxyCard
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
 
Erlang kansai01
Erlang kansai01Erlang kansai01
Erlang kansai01
 
Predigtpräsentation 2008 11 16, H G, Heilung
Predigtpräsentation 2008 11 16,  H G,  HeilungPredigtpräsentation 2008 11 16,  H G,  Heilung
Predigtpräsentation 2008 11 16, H G, Heilung
 

Similar to 111008 silverlight square_datavalidation

jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハックjQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
Jun-ichi Sakamoto
 
CruiseControl.NET設置
CruiseControl.NET設置CruiseControl.NET設置
CruiseControl.NET設置
Kuniaki Igarashi
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
normalian
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
Sho A
 
iOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱いiOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱い
niwatako
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSAyumi Goto
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
Yuya Matsushima
 
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Masaki Yamamoto
 
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
ShuheiUda
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)Takuya Tsuchida
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
Yuji Takayama
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーAyumu Kawaguchi
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発Kazuki Nakajima
 
20120507 zendform
20120507 zendform20120507 zendform
20120507 zendform
Yusuke Ando
 
ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テスト
Toru Tamaki
 

Similar to 111008 silverlight square_datavalidation (20)

jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハックjQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
 
CruiseControl.NET設置
CruiseControl.NET設置CruiseControl.NET設置
CruiseControl.NET設置
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
継続的8章
継続的8章継続的8章
継続的8章
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
iOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱いiOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱い
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話
 
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
 
20120507 zendform
20120507 zendform20120507 zendform
20120507 zendform
 
ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テスト
 

More from Takayoshi Tanaka

deep dive distributed tracing
deep dive distributed tracingdeep dive distributed tracing
deep dive distributed tracing
Takayoshi Tanaka
 
202202 open telemetry .net handson
202202 open telemetry .net handson202202 open telemetry .net handson
202202 open telemetry .net handson
Takayoshi Tanaka
 
202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers
Takayoshi Tanaka
 
20210129 azure webapplogging
20210129 azure webapplogging20210129 azure webapplogging
20210129 azure webapplogging
Takayoshi Tanaka
 
20201127 .NET 5
20201127 .NET 520201127 .NET 5
20201127 .NET 5
Takayoshi Tanaka
 
Unity(再)入門
Unity(再)入門Unity(再)入門
Unity(再)入門
Takayoshi Tanaka
 
最近のQ#について
最近のQ#について最近のQ#について
最近のQ#について
Takayoshi Tanaka
 
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
Takayoshi Tanaka
 
20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET
Takayoshi Tanaka
 
New Relicで始める、.NET Applications on AWSのObservability
New Relicで始める、.NET Applications on AWSのObservabilityNew Relicで始める、.NET Applications on AWSのObservability
New Relicで始める、.NET Applications on AWSのObservability
Takayoshi Tanaka
 
C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)
Takayoshi Tanaka
 
20190806 Q# Measurements
20190806 Q# Measurements20190806 Q# Measurements
20190806 Q# Measurements
Takayoshi Tanaka
 
C#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオンC#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオン
Takayoshi Tanaka
 
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
Takayoshi Tanaka
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
Takayoshi Tanaka
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
Takayoshi Tanaka
 
Try! Visual Studio 209 git feature
Try! Visual Studio 209 git featureTry! Visual Studio 209 git feature
Try! Visual Studio 209 git feature
Takayoshi Tanaka
 
Q#基礎 ver1.1
Q#基礎 ver1.1Q#基礎 ver1.1
Q#基礎 ver1.1
Takayoshi Tanaka
 
(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0
Takayoshi Tanaka
 
ゼロから始めるQ#
ゼロから始めるQ#ゼロから始めるQ#
ゼロから始めるQ#
Takayoshi Tanaka
 

More from Takayoshi Tanaka (20)

deep dive distributed tracing
deep dive distributed tracingdeep dive distributed tracing
deep dive distributed tracing
 
202202 open telemetry .net handson
202202 open telemetry .net handson202202 open telemetry .net handson
202202 open telemetry .net handson
 
202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers
 
20210129 azure webapplogging
20210129 azure webapplogging20210129 azure webapplogging
20210129 azure webapplogging
 
20201127 .NET 5
20201127 .NET 520201127 .NET 5
20201127 .NET 5
 
Unity(再)入門
Unity(再)入門Unity(再)入門
Unity(再)入門
 
最近のQ#について
最近のQ#について最近のQ#について
最近のQ#について
 
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
 
20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET
 
New Relicで始める、.NET Applications on AWSのObservability
New Relicで始める、.NET Applications on AWSのObservabilityNew Relicで始める、.NET Applications on AWSのObservability
New Relicで始める、.NET Applications on AWSのObservability
 
C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)
 
20190806 Q# Measurements
20190806 Q# Measurements20190806 Q# Measurements
20190806 Q# Measurements
 
C#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオンC#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオン
 
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
 
Try! Visual Studio 209 git feature
Try! Visual Studio 209 git featureTry! Visual Studio 209 git feature
Try! Visual Studio 209 git feature
 
Q#基礎 ver1.1
Q#基礎 ver1.1Q#基礎 ver1.1
Q#基礎 ver1.1
 
(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0
 
ゼロから始めるQ#
ゼロから始めるQ#ゼロから始めるQ#
ゼロから始めるQ#
 

Recently uploaded

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 

Recently uploaded (16)

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 

111008 silverlight square_datavalidation