xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

2014-01-01から1年間の記事一覧

DeclarativeSql

本記事は C# Advent Calendar 2014 最終日向けの記事です。なんとか間に合わせようと心底努力しましたが、業務上年末にシステムリリースがある関係で忙殺されていて全く余裕がなく、結局最終日に穴を空ける結果になってしまいました。ここまで繋いで下さった…

Friendlyエバンジェリストはミニスカサンタ

2014 年 12 月 20 日 (土) に日本マイクロソフト品川本社で開催された CLR/H in Tokyo 第 7 回に参加してきました 。ドレスコードが仮装というカソウ化デーということで、主催者 (@naoki0311) とその一味 (@miso_soup3) のご要望にお応えしてミニスカサンタ…

Room metro #28 資料

先日 2014 年 11 月 29 日 (土) に大阪で開催された Room metro #28 に参加してきました。「XAML Day」ということで、我こそは!という屈強な XAMLer 達が集結し、濃密なセッションが繰り広げられました。僕はと言うと ROM (Read Only Member) としてのほほ…

挿入文字列

C#

string.Format メソッドは大変汎用的で便利です。しかし、ちょっとばかり煩雑で、かつ書式文字列内のプレースホルダーの数が合わなかったりするエラーが発生しやすいという傾向にあります。 var p = new Person("xin9le", 30, Sex.Male); var t1 = string.Fo…

インデックス初期化子

C#

バージョン 5.0 現在の C# には「初期化子」と呼ばれる機能が 2 つあります。ひとつはオブジェクト初期化子で、インスタンス生成時にコンストラクタ引数を利用せずにフィールドやプロパティの値を設定するものです。もうひとつはコレクション初期化子で、こ…

Microsoft MVP ComCamp – Webcast 1st round. 資料

もう一か月以上も前になりますが、Microsoft MVP がお届けする参加自由の ICT 勉強会「Microsoft MVP Community Camp」の第1回 Webcast が開催されました。2014年9月22日 (月) ~ 2014年9月26日 (金) の一週間、アジアの MVP が日替わりで、各々のテーマに沿…

.NET Framework 4.5.3でのTask型への機能追加

しばらく前になりますが、2014/10/6 に Visual Studio 14 CTP 4 がリリースされました。そのリリースの中で .NET Framework も更新され、バージョン 4.5.3 となりました。少し触っていたら、Task 型 (System.Threading.Tasks 名前空間) に新しいプロパティと…

AutoMapperで特定の命名規則で変換する

WebアプリケーションやMVVMに則ったクライアントアプリケーションを作っていると、ModelとViewModelの相互変換がよく行われます。設計におけるレイヤーの違いを埋めるこの型変換ですが、基本的に同じような名前/型のプロパティが並ぶため、変換コードの実装…

Hokuriku.NET vol.15 資料

2014年8月30日 (土)、我らがHokuriku.NET主催の定期勉強会Hokuriku.NET vol.15に参加/登壇してきました。今回は小島さん (@Fujiwo) と一緒にC# MVPsとしてC# vNextの新機能を紹介し、ひとつひとつ解説していきました。参加者のみなさんとの緩いディスカッシ…

Web APIでリクエスト単位のキャッシュを利用する

ASP.NET Web APIで開発している際、パフォーマンスを上げるためにリクエスト中で取得/生成した値をキャッシュして使い回したいケースがあります。特にWeb APIにはHTTP Message Handlerという機構があるので、外側のレイヤー (Handler) で共通処理として認証…

Azure Web SitesチームのWordPress利用者判定アプローチ

Azure Web SitesチームがWeb Sites上でWordPressを利用者している人をどのように判定しているのか、Azure Web Sitesプログラムマネージャーの Erez Benari さんに教えて頂きました。そんなちょとしたドキュメンタリー。 コトの発端 先日、Azure Web Sitesチ…

Add拡張メソッドによるコレクション初期化子

C#

C# 3.0で導入されたコレクション初期化子をご存知の方は多いと思います。要素を追加した状態でコレクションを生成する機能です。以下のようなものです。 var languages = new List<string> { "C#", "Visual Basic", "JavaScript", }; これは次のコードの糖衣構文です</string>…

nameof演算子

C#

これまでC# vNextの新機能についていくつか紹介してきましたが、個人的にラムダ形式プロパティよりも、null伝搬演算子よりも、catch/finally句で利用できるawait演算子よりもずっと ×2 興奮したのが今回取り上げるnameof演算子 (nameof operator) です。簡単…

ラムダ形式メソッド

C#

前回ラムダ形式プロパティを紹介しました。ラムダ式チックなメンバー (Expression-bodied members) は、Visual Studio 14 CTP 2まではプロパティしか実装されていませんでしたが、一昨日 (2014/08/19) リリースされたVisual Studio 14 CTP 3にはメソッド版も…

ラムダ形式プロパティ

C#

みなさんもGetterだけのプロパティを作った経験があるかと思います。例えば以下のようなものです。 using System.Math; using System.Windows; namespace CSharpVNext { class Circle { public double Radius{ get; }; public Point Origin{ get{ return new…

null条件演算子

C#

三項演算子はひとつの式の中で条件式を表現できて非常に便利です。言うまでもないかもしれませんが、例えば以下のような書き方ができます。 var name = "じんぐる"; return name == null ? "不明" : name; /* //--- 以下と同じ意味 var name = "じんぐる"; i…

例外フィルター

C#

例外処理はtry句でスローされる例外の型に応じて処理を書き分けます。また、ひとつの例外の型でエラー条件が分かれる場合はcatch句の中にif文を書いて分岐します。例えば以下のような感じです。 try { //--- SQL Serverへの何らかのアクセス } catch (SqlExc…

catch/finallyでのawait

C#

C# 5.0で搭載された非同期メソッド (async/await) は、非同期処理を非常に簡単に記述できる言語機能として大変重宝し、愛されています。await演算子は通常のメソッドだけでなくラムダ式内でも利用できるなど、かなり広範囲への適用が可能です。しかし例外処…

変数宣言式

C#

これまで、以下のようなコードを面倒に感じたことはありませんか? static void Main() { try { Console.WriteLine(int.Parse("123")); //--- intに変換できなかったら例外発生! } catch { //--- 失敗したとき } } 絶対失敗しないと保証されているなら例外…

静的メンバーへの簡易アクセス

C#

C#で提供されているusingキーワードは「usingステートメント」と「usingディレクティブ」の2種類あります。このうちusingディレクティブは以下の2つの場合に利用できました。 名前空間の省略 (= 指定された名前空間内の型は名前空間を修飾しないで使用可能) …

プライマリコンストラクタ

C#

今回取り上げるのは「プライマリコンストラクタ」です。テキトーな日本語に直すと「一次コンストラクタ」などといった感じになるのでしょうか。この機能を簡単に説明すると、コンストラクタをひとつだけ定義する機能です。それでは順番に見て行きましょう。 …

自動実装プロパティ初期化子

C#

「Try! C# vNext」ということで、次期C#の新機能を少しずつ試していきたいと思います。まず最初は自動実装プロパティ初期化子 (= Auto-property initializers) です。これまではメンバー変数の初期化はクラス宣言と同時にできたのですが、自動実装プロパティ…

Try! C# vNext

C#

次期バージョンの C# に搭載される予定の新機能を簡単にご紹介

Visual Studio 14 CTPでC# vNextを試す

2014年6月3日にVisual Studio 14 CTPがリリースされました。次世代コンパイラサービスであるRoslyn、クラウド最適化や大幅なライブラリ統合が進んでいるASP.NET vNextが搭載されています。これらだけでも十分お腹いっぱいになりそうですが、我らがC#にも新し…

非同期勉強会 資料

2014年5月10日 (土)、VSハッカソン倶楽部さん主催の非同期勉強会に参加/登壇してきました。大阪に行くのは3月に開催されたRoom metro #23以来、2カ月ぶり2回目。このように呼んで頂けるのは大変ありがたいことです。参加者が70人近くと大盛況だった上に自分…

IIS Expressを64bitモードで動かす

Visual StudioでWebアプリ開発をするときによくお世話になるIIS Express、これは既定では32bitモードで動作します。これまでのWebアプリ開発では特に何事もなかったのですが、最近業務で以下のような環境下での開発をしていてハマりました。 Windows 7 x64 V…

Azure Web Sitesの仮想ディレクトリにWeb Deployする方法

Azure Web Sitesには仮想アプリケーション/仮想ディレクトリという機能があります。wwwrootなどのルートディレクトリでなくても (その他のサブフォルダでも) 仮想的なルートディレクトリとして認識させ、アプリケーションを動作させることができます。設定は…

各サービスのメアド変更UXを比較してみた

UX

今の世の中、個人で登録しているサービスの数と言ったらもはや数えるのがイヤになるくらいあると思います。みなさん、これらのメールアドレスやパスワード、全部管理できていますか?私はというとパスワード管理ツールを使って全部登録しており、それに頼り…

Room metro #23 資料

2014年3月1日 (土) に開催されたRoom metro #23 大阪 & Windows Phone Arch特別編に参加してきました。関西方面の勉強会は初めて。これまでの勉強会ではお会いすることがなかったMVPさんや初めてお会いするエンジニアさんばかりで、とても刺激的でした。勉強…

Azure Web Sites地域別速度計測

本記事はWindows Azure アドベントカレンダー、2月28日(金)への投稿です。Windows Azure Japan Geoが本日2014年2月26日 (水) から正式稼働開始しました。東は埼玉県、西は大阪府にデータセンターを構え、低レイテンシを実現しています。本件に関しては、Micr…