はじめまして、昨年末に入社した浅井と申します。
先日行われたde:codeに乙黒とともに2日間参加してきましたので、早速そのレポートをしたいと思います。
乙黒のレポートは別の記事として上がっておりますのでそちらも閲覧して頂ければ幸いです。
de:codeとは?
「Developer build the Future」を掲げた、日本マイクロソフト主催の大規模イベントで、以前定期開催されていたTech Edに代わるイベントとして来年以降も定期的に開催されるとの発表がありました。
副題の通り、デベロッパ、アーキテクトを中心としたマイクロソフトのテクノロジに関するセッションが盛り沢山なイベントです。
公式サイトはこちらです。
http://www.microsoft.com/ja-jp/events/developer/
参加セッション
以下のセッションに参加してきました。いずれも非常に濃い内容で、また開催された際にはまた参加したいです。
- Vision Keynote エンジニアの力を無限大に
- Technical Keynote Developers build the Future
- TL-001 この 10 年をキャッチアップ ! .NET 開発者のための技術選択と「いま」
- TL-010 Web アプリケーション パターンの進化 ~ One ASP.NET の今とこれから ~
- AR-009 クラウドアプリケーション設計の王道:デザインパターン 20 連発! 其の一 パフォーマンスとスケーラビリティ編
- AR-010 クラウドアプリケーション設計の王道:デザインパターン 20 連発! 其の二 回復性と管理とセキュリティ編
- TL-006 アプリ構築のための次世代 .NET テクノロジ
- TL-008 Azure DevOps の未来 ~ 次世代 Azure ポータルと Visual Studio Online で実現するクラウド アプリのライフサイクル管理 ~
- SV-004 Azure IaaS 自動構成ツールの交通整理 ~ Chef, Puppet, PowerShell DSC ~
- SN-007 PowerShell DSC による クラウド時代の IaaS 環境構築の自動化の実例
- TL-002 TypeScript 1.0 詳説
- AR-006 マルチデバイス アプリ開発における設計戦略 ~ Webか? ネイティブか? あるいは両方か?
- TL-009 Visual Studio Online “Monaco” の全貌 ~ あのエリック・ガンマが作った最新開発環境のすべて ~
- DE-007 iOS / Android アプリを C# / .NET で開発 – Xamarin で実現するクロスプラットフォーム対応 –
全体を通して
私は.NET系のテクノロジを中心にセッションを周ってきました。
初日は全てRoom Bだったため、力の入ったプロジェクションマッピングを見ながらの観覧となりました。(撮影許可の出たセッションでの写真を一枚だけ掲載します)
その中で、「Mobile First, Cloud First」、「Openness」という言葉を多くのセッションで耳にしました。
Mobile First, Cloud Firstに関してはde:codeの概要にも記載されている通り、現在マイクロソフトが掲げている戦略です。Windows Runtime(WinRT)、.NET Nativeによるモバイル端末向けのネイティブコンパイルや、Microsoft Azure(旧Windows Azure)の機能強化などが進められていることが確認できました。
Opennessについては、WinJSやRoslynのオープンソース化など、最近のマイクロソフトでは特に顕著だと感じます。これら以外にもVisual Studio OnlineでGitが利用できたり、AzureのIaaS構築自動化のためのPuppetやChefが用意されていたりと、オープンソースとの連携が強まっています。
今回のイベントを通して、Azure周辺はもちろんの事.NET周辺でも進歩が加速している印象を受けました。ASP.NET vNext、OWIN Katana Project、Helios Project、Roslynや.NET Native等々、Web、クライアント問わず、新しい概念やサービス、フレームワークが次々と生まれていて、聞いているだけでもワクワクしました。
また、マイクロソフトと先日正式にパートナーシップを結んだXamarin社のXamarinについても面白い発表がありました。これについては後述します。
どのセッションも魅力的な内容でしたが、ここではいくつかピックアップして詳細を載せていきたいと思います。
Xamarin
今回、数々のセッションの中で最もタイミングがよかったのがこちらでした。
私はXamarin周辺を積極的には追いかけていないので、de:codeのセッション内でその旨が発表されたことで初めて知りましたが、実はde:codeの開催前日2014/05/28にXamarin3が発表されていました。
発表された中で特にインパクトが強かったのが「Xamarin.Forms」です。
今までのXamarinではロジック部分の共通処理をC#で書いてUI部分はiOS, Android, Windows Phoneと別々に定義する必要がありました。今回発表されていたXamarin.Formsではクライアントアプリケーションを作成しているエンジニアにはお馴染みのXAMLによってUIを記述することが可能になります。
これによって全てが置き換えられるわけではないとは思いますが、これによってAndroidアプリとiOSアプリの並行開発がこれまで以上に実施しやすくなるのではないでしょうか。
これからの発展に夢が広がります。
(本日iOS8が発表されましたがXamarinのオフィシャルサイトによると公開後すぐにサポートされるようです)
IaaS構成の自動化
以前から気になっていたものの殆ど手を付けていなかった分野でしたが、いい機会なので2つの関連セッションに参加してみました。
オンプレでも仮想マシンでも比較的よくあることだとは思いますが、複数のサーバを管理している場合サーバを建ててから時間が経過するにつれ、各サーバで設定がバラバラになった経験があることと思います。
少なくとも私にはそのような経験があります。(自信を持って言うようなことでもありませんが)
この現象のことをConfiguration Driftと表現するそうです。直訳すると設定の漂流でしょうか。
PuppetやChef、PowerShell DSCを使うことで、インフラの設定をコードで書くことが出来るようになり、Configuration Driftを防ぐ運用が出来るといった説明がセッションでは行われていました。
この中でも今後特に注目していきたいと思ったのがPowerShell DSCです。
その理由ですが、Windows用のChefも実はPowerShell DSCが利用されているとセッション内で耳にしましたので、Chefを使うにしてもPowerShell DSCを知っておいて損は無さそうという点と、今後の発展に期待できると考えるためです。
Windows Server 2012 R2以降であればデフォルトでインストールされているため、最新のWindows Server を使う場合はインストール不要で利用することが出来るようです。
試しにセッション内で見たIISをインストールするためのコードを書いてみました。
とても簡単です。宣言的に記述するので後で見た時にも何をしたいのかがわかります。
従来のコードでは「IISはインストール済みか」「インストールされていなかった場合はどうするか」「されていた場合はどうするか」等、考えることが多く複雑で読みにくくなりがちだったことを考えるとかなりシンプルに記述出来るようになるのではないかと思います。
実際の運用では必要なものを記述しておき、PUSHやPULLで定期的に回しておくことで、Configuration Driftを起こさないよう運用を進めることになります。
これから先サーバを構築する機会は増えていくと思いますので、不要な苦労を避けるためにも身につけておきたい技術でした。
ASP.NET
ASP.NET vNextについて少しだけ触れておきます。
上記で公開されている、ASP.NETの次期バージョンの事です。
Roslynを使ったコンパイル不要のデプロイ(ソースコードをそのままデプロイ)が可能となるようです。また、従来の用にコンパイルしてからのデプロイも可能とのことでした。ケースバイケースで選択していく形ですね。
またSystem.Web非依存として動作を軽量にし、非依存となったことでIIS以外でも(Monoを使って対応したWebホストさえあればLinux上でも)ホスト出来るようになったり、設定ファイルもXMLではなくJSONになるなどの変化がありました。これまでのASP.NETから大きく変わっていくようです。
正式なリリースはまだ先の話だとは思いますが、今のうちから追いかけて行きたい内容でした。
TypeScript
マイクロソフトにより作成された静的型付け言語です。AltJSの中ではかなり遅く誕生しました。
先日正式版がリリースされ、現在は1.0.1が最新版です。
TypeScriptの開発にはC#の設計を行ったAnders Hejlsbergが携わっています。C#好きとしては見逃せません。(Azure WebSitesで利用可能な開発環境”Monaco”はTypeScriptで実装されているそうです。)
セッション内でTypeScriptはJavaScriptのスーパーセットであると紹介されていました。実際、殆どの場合において、JavaScriptで記述されたコードをTypeScriptのコンパイラに通すことが出来ます。通らない場合でも変数をany型にするだけで済む場合がほとんどです。
また、Interfaceが柔軟で、既存のJavaScriptフレームワークに後付でTypeScriptの静的な型を持たせ、型安全に操作できるようにすることができます。
これに関してはセッション内で以下のリポジトリが紹介されていました。
https://github.com/borisyankov/DefinitelyTyped
多種多様なフレームワークへの対応が進められています。(日本人のコミッタも!)
TypeScriptを使う際には是非利用していきたいです。
セッションを聞いていて一番驚いたのは、TypeScriptのコンパイラの実態はtsc.exeではなくtsc.jsで、JavaScriptによって記述されているということでした。JavaScriptはWebにおけるアセンブリである、と言った表現をされていましたが、それを体現したカタチなのでしょうか。
Visual Studio 2013 Update 2からはデフォルトでTypeScriptが入っているのでこれから使う機会が増えそうです。
TypeScriptはブラウザ上で試すことができますので、興味のある方は是非下記のURLから試してみてください。
http://www.typescriptlang.org/Playground
総括
セッションに参加することで新しい物事に触れることが出来て、非常に有意義な2日間でした。
Monacoのデモは上記では触れていませんが、50分の間に開発環境の構築、本番環境の構築、開発環境から本番環境へデプロイするためのCI環境を整え、ライブコーディングでサクサク作られていく様は凄いと言う他ありませんでした。
学ばなければならない事は尽きませんが、目一杯追いかけて行きたいと思います。