async/await と SynchronizationContext (1)

前回の記事に続き、非同期処理シリーズの第 2 弾。
今回は SynchronizationContext について。

SynchronizationContext は、.NET Framework 2.0 から登場したクラスです。「同期コンテキスト」と訳される場合もあります。
これが何かと言うと、誤解を恐れずに大雑把に言えば、「スレッドをまたがる際の問題をいい感じに処理してくれるクラス」です。
いやまぁ、ふわっとしすぎているのは分かっているんですが、実際にどういう処理をするかは派生クラスによるので、こういう言い方しかできないんです。

続きを読む

ASP.NET 5 で Azure API App

ASP.NET 5 はまだプレビュー、Azure API App もプレビューなので、Visual Studio にはそれらを組み合わせたプロジェクト テンプレートが用意されていません。
今回、いくつかのエラーに阻まれながらも、試行錯誤して、なんとか動かすことができたので、手順を報告したいと思います。
ただ ASP.NET 5 の Web API を動かすだけであれば、普通に Azure API App にデプロイすれば一応動くのですが、API App としてはいくつかのお約束事がありますので、その辺りを中心に解説します。*1

なお、開発環境は、Visual Studio 2015 上に ASP.NET 5 Beta7 の開発環境を整えた状態になっています。
とりあえず最新の ASP.NET 開発ツールはインストールしておいてください。

*1:ASP.NET Web API そのものについては割愛します。

続きを読む

ASP.NET MVC で formValidation を使う

formValidation

ASP.NET MVC のプロジェクトを作ると、デフォルトで jQuery ValidationjQuery Unobtrusive Validation がインストールされます。
しかし、これ、どうもイケてないと思いませんか?
bootstrap も一緒にインストールされるわけですが、デフォルトでは、エラーのあるフィールドを赤くすることもできません(少々 JavaScript を書けば実現できます)。

というわけで今回は、jQuery Validation に代わって、高機能なバリデーション ライブラリである formValidation を使ってみることにしました。
有料ですが、多数のバリデーターを持ち、足りなければバリデーターを自作することもできます。
また、bootstrap 以外の、あるいは、bootstrap を拡張するような、様々なライブラリと組み合わせることも可能です。

まずは一度、公式サイトのデモを触ってみてください。

続きを読む

CodeEmbed

MSCC

もう終了してしまったのですが、昨年の 11 月から今年の 3 月まで、マイクロソフト(のインターン社員)が Microsoft Community Champion (MSCC) というコンテストを開催していました。
Windows Store アプリ、Windows Phone アプリ、Microsoft Azure アプリのいずれかを作って応募すると、賞品や賞金がもらえるというものでしたが、個人的には、参加賞として(と言うより、アプリ開発環境を持たない人にもコンテストに参加してもらうため)、BizSpark の利用権が 3 年分もらえるというのが大きかったです。
BizSpark は本来、スタートアップ企業向けのプログラムですが、それを個人で利用できます。
3 年の期限付きとはいえ、なんと Visual Studio Ultimate が使えてしまうのです! これは申し込まない手はない!

というわけで作ったのが CodeEmbed というサービスです。

正直なところ、BizSpark が欲しかっただけなので、アプリはテキトーに作ればいいや…という感じでやる気がなかったのですが*1、まさかの 10 位入賞を頂きまして、賞品として Xbox One がもらえることになったようです。
MSCC 事務局の皆さんと審査員の方々に、この場を借りて御礼申し上げます。売って PS4 買うぞー。

CodeEmbed

読んで字のごとく、Web サイトにコードを埋め込むためのサービスです。
と言っても、現在は GitHub からコードを文字列で取ってくる機能しかないので、埋め込みは jQuery でも使って適当にやってください…という代物なのですが。
コンテストは終わってしまいましたが、今後も開発はちびちびと続けていく予定です。
あまり先のことを言うと実現できなかったときに恥ずかしいので控えたいですが、一応

  • BitBucket への対応
  • 使いやすくするタグジェネレーター
  • シンタックス ハイライター

の開発は視野に入れています。

というわけで、このサービスを開発していく上で得た知見なども、ブログで綴って行きたいと思います。

なお、コンテスト出展作品という性質上、審査期間中はバージョンアップができませんでしたので、Unstable 版として別サイトを立てています。
こっちの方が更新頻度は高いです。

コードは GitHub で公開しています。容赦ないツッコミをお待ちしております。

更新履歴

v0.1

コンテストに出展したバージョンです。
リポジトリには GitHubClient がありますが使われておらず、GitHub へのアクセスは Octokit を利用しています。

v0.2

Octokit が気に入らなかったので GitHub クライアントを独自実装したバージョンです。

v0.3

現在開発中のバージョンです。
主にフロントエンド部分の強化を行う予定です。

*1:作り始めたのは正月明けてからでしたしね!