ROMANCE DAWN for the new world

Microsoft Azure を中心とした技術情報を書いています。

2018 年振り返り

今年も、しばやんさんが作った 2018 年の人気記事ランキング生成 を使わせてもらい、1年を振り返ってみます。

  1. ASP.NET でクライアントの IP アドレスを取得する
  2. HttpClient を使って同期で通信する
  3. ASP.NET Web API で multipart / form-data を使ってファイルをアップロードする
  4. プロキシ環境下で Web API を呼び出す
  5. ASP.NET MVC の Ajax 通信で例外を処理する
  6. ASP.NET MVC で JSON の一部として PartialView を返す方法
  7. ASP.NET Web API で返す JSON のプロパティを指定する
  8. ASP.NET Web API を経由して Azure Blob Storage にアクセスする
  9. ファイルをアップロードする API の Swagger ドキュメントを書く
  10. Entity Framework Core 1.0 で SQLite を使ってみる

例年通り、ASP.NET 関連の記事が、多く読まれているようです。Azure の記事が少ないというか、そもそも今年に書いた記事が少なめでした。
その代わり、Azure Kubernetes Service が 6月に GA したこともあり、コミュニティやイベントで登壇する機会を多く頂いて、これまでの知見を活かしてアウトプットできたかなとは思います。

あと、先日のAzureもくもく会@新宿では AKS のハンズオンっぽいこともやりました。2時間だと時間が足りず、基礎的な部分だけになってしまいましたが。会場はネクストスケープさんの会議室なのですが、セッション形式とは違った良さがあっていいなと思います。

今年の出来事としては、Microsoft MVP Global Summit 2018 に初めて参加できたことが印象に残っています。たくさんの刺激を受けたし、楽しかった。内容については NDA なので書けないのですが、記事にまとめておけば良かったなと思いました。英語が話せたら何倍も楽しいはずなので勉強しようと思いながらも、ほとんど何もしなかった・・・
でも、次回も参加したい思いがモチベーションにもなり、7月には Microsoft MVP を無事に更新できたので、また来年の3月に参加できそうです。

f:id:TonyTonyKun:20181231162654j:plain

あとは、Microsoft の寺田さんによる AKS ハッカソンに2日間参加できたことも良かったです。いろいろな分野のエキスパートである MVP の方々でさえ苦労される Kubernetes は、やはりハードルが高いと実感しました。多少なりとも知見をもつエンジニアとして、適用エリアは広くないものの今後も重要なテクノロジーとなってくるので、良いところも悪いところも広く伝えていきたいと思いました。ハッカソンには初めて参加しましたが、参加者全員で1つのことに向かって取り組めるし、スキルや経験も合わせて底上げできて楽しかったです。このハッカソン形式は仕事でも使えそうかなとも思いました。

昨年の課題だった仕事とコミュニティ活動とのバランスは、転職して2年が経って慣れてきたこともあり、そこそこ改善できたかなと思います。来年は自分でやりたい提案を書いて、それで仕事ができるようにしていきたいです。
MVP や仕事で多くの方々と出会う機会に恵まれ、新しいことにも挑戦することができ、充実した1年だったと思います。

本年もお世話になりました。よい年をお迎えください。

Microsoft Tech Summit 2018 で登壇しました

先月の話になりますが、Microsoft Tech Summit 2018 のブレイクアウトセッション「.NET 開発者のためのマイクロサービス 入門」に登壇しました。
セッション資料と動画が一般公開されているので、イベントに参加していない方でも視聴できます。

www.youtube.com

共同登壇というスタイルだったので、後半部分の説明とデモを担当しました。
マイクロサービス というと Kubernetes がトレンドで、Java を使って開発するイメージがありますが、.NET Core でも開発できるし、.NET 開発者の皆さんにマイクロサービス開発の世界観を伝えたかったです。
でも、実際にはマイクロサービス に向かないシステムもあるので、何でもかんでもマイクロサービスにするのは止めましょう。

f:id:TonyTonyKun:20181224141952j:plain

コミュニティでの登壇は何度かありましたが、有償イベントでは初めての登壇でした。前日まではいつものお店に飲みに行くぐらい余裕な感じでしたが、当日の朝になって緊張してきて2回もリハしたことはいい思い出です(笑)

ちなみに、他のセッションについても資料や動画が一般公開されているので、冬休みを使ってキャッチアップしてみるのも良いと思います。

Microsoft Tech Summit 2018 | インフラエンジニア、アーキテクト、IT IT 戦略にかかわる皆様の為の技術カンファレンス - Microsoft Events & Seminars

Azure SignalR Service で ASP.NET SignalR を使ってみる

この記事は、Azure Advent Calendar 2018 の 8 日目 の記事です。
qiita.com
Ignite 2018 で GA が発表された Azure SignalR Service ですが、ASP.NET Core SignalR だけでなく、まだプレビューですが ASP.NET SignalR にも対応しています。
今回は、Core ではない ASP.NET SignalR を使って試してみました。

Azure SignalR Service とは

Azure SignalR Service は、SignalR を使って開発したアプリケーションのコネクションやスケーリングを管理してくれるマネージドサービスです。
build 2018 のセッションから引用したスライドです。
f:id:TonyTonyKun:20181118124127j:plain
アプリケーションの規模が大きくなると、バックエンドで Redis や Service Bus を使ったコネクションやスケーリングの管理が必要になります。このような面倒なところを Azure SignalR Service に任せることができます。
Azure SignalR Service の使い方は、こちらの公式ドキュメントにある通りですが、早速試していきます。
github.com

Azure SignalR Service を作成する

Azure Portal から、Azure SignalR Service を作成します。

f:id:TonyTonyKun:20181118142922p:plain

Standard プラン以外の他に、20 コネクションまでの Free プランもあります。東日本リージョンもあるので、安心して使えます。

ASP.NET SignalR のコードを変更する

ASP.NET SignalR のプロジェクトに対して、Azure SignalR Service に対応するための変更を加えていきます。

NuGet ライブラリのインストール

まず、Azure SignalR Service 用の NuGet ライブラリの Microsoft.Azure.SignalR.AspNet をインストールします。

PM> Install-Package Microsoft.Azure.SignalR.AspNet -Version 1.0.0-preview1-10259

NuGet ライブラリをインストールしたら、HTML ファイルで指定されている JavaScript のパスを変更します。

<script src="Scripts/jquery.signalR-2.4.0-preview2-20181018-02.min.js"></script>

Startup クラスを変更する

Startup クラスで呼び出している MapSignalR メソッドを MapAzureSignalR メソッドに置き換えます。引数には、他のアプリケーションと区別する一意な名前を渡します。

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        //app.MapSignalR();
        app.MapAzureSignalR(this.GetType().FullName);
    }
}

接続文字列の追加

Web.config に Azure SignalR Service の接続文字列を設定します。接続文字列は、Azure Portal から取得できます。

<connectionStrings>
  <add name="Azure:SignalR:ConnectionString" connectionString="Endpoint=xxx;AccessKey=xxx;Version=1.0;"/>
</connectionStrings>

動作確認

ASP.NET SignalR のサンプルとして、クリスマスなので懐かしい Fireworks のアプリケーションを Azure Web Apps にデプロイしました。

f:id:TonyTonyKun:20181208094616p:plain

自分で打ち上げた花火を、他のブラウザでもリアルタイムに観ることができます。
試してみたい方は、こちらの URL からどうぞ。

ブラウザの開発者ツールで確認すると、Azure SignalR Service に接続されていることがわかります。

f:id:TonyTonyKun:20181208103828p:plain

まとめ

ASP.NET SignalR は、チャットやダッシュボードなどのリアルタイムな Web アプリケーションを開発できるフレームワークです。
今から開発するなら ASP.NET Core SignalR を選択すべきですが、それが難しい場合でも Azure SignalR Service を使うことができます。
本番運用では、バックエンドでコネクションやスケーリングの管理が必須となるので、 Redis や Service Bus を使わずに Azure に任せられる嬉しいサービスだと思います。