読者です 読者をやめる 読者になる 読者になる

世界のやまさ

SEKAI NO YAMASA

de:code Day2 に参加した #decode14

de:code 二日目。技術セッション漬け。

ちょっと朝は調べ物してて遅刻したんだけど、この日も内容の濃いセッションばっかりだった。

全体を通してのまとめ

大分長くなりましたので、結論を先に書くと本当に楽しい二日間でした。 Microsoftの今後の方向性として、モバイルファースト・クラウドファースト。オープンソースオープンソースについてはTypeScript等で徐々に浸透してきていますが、悪い印象を変えるには10年ぐらいかかるかなぁと思います。 今まではMicrosoft主導でいろいろな技術が導入されましたが、今後はコミュニティ主導に変わりつつあります。私も一開発者として、応援していきたいと思います。

また、今回はいろんな人と出会えたのが本当によかったです。特に同じ地方から参加したGrapeCityの皆様には大変お世話になりました。ありがとうございました。

では各セッションの内容は次に続きます。

ジニアス流。プレゼンには楽しみを。

SQL Server 2014は大して興味はなかったんだけど、ジニアス平井さんのセッションは是非見た方がよいということで見たら本当に良かった。SQL ServerのインメモリDBで性能100倍とか基本的なポイントは押さえつつ、所々のデモアプリで文字を書いたり地球をミラーボールにしたり遊び心にあふれていた。
最後はアプリで1分間に何回タップできるか競争。AzureとSQL Serverの構成で秒間数万リクエストまで耐えられるそうな。

自分もこんなふうに楽しませるセッションが出来ると良いなぁと感じた。

Microsoft Azure や IaaSの自動化はコンテキストをそろえる

次に、Azure IaaS 自動構成ツール Chef, Puppet, PowerShell DSC。自動化は大変人気があって、満席でした。みんな苦労しているのかな。

ということでコンテキストをまず合わせることが重要。

若干駆け足で範囲が広かったので、細部まではあまり理解できなかったけど概要はなんとなくつかめた感じ。Chefはちょろちょろ使ってるけど、ChefServerは立ち上げず、knife soloを使っているのであまりピンと来なかったところもある。

ChefからWindowsのサービスをいじると、結局PowerShellでゴリゴリのスクリプトを書かなくてはいけないので、うーんって感じだった。Puppetがお勧めと言われても独自DSLが嫌でChefを好んでつかっているので、こちらもうーんって感じだった。

AskTheSpeakerでいろいろ聞きたかったんだけど、次のランチセッションが満員になりそうだったので、聞けずじまいになってしまった。

PowerShell DSC をつかった Infrastructure as Code

Chefから離れて、ランチセッションはPowerShell DSCのお話。PowerShell DSCについてはPowerShell DSCで始めるWindowsインフラストラクチャ自動化の基本を参照。

スピーカーの @guitarrapc_tech さんの発表がとてもわかりやすかった。さすがグラニさんだなぁと思いました。

PowerShell DSCも結局独自DSLになるんだけど、Puppetと異なり自前で拡張を書かなくて良いので、準備は楽。PowerShell DSCのIIS Installのサンプルコードはこんな感じ。(PowerShell DSCで始めるWindowsインフラストラクチャ自動化の基本より引用)

Configuration IISInstall
{
    Node localhost
    {
        WindowsFeature IIS
        {
            Ensure               = "Present"
            Name                 = "Web-Server"
            IncludeAllSubFeature = $true
        }  
    }
}

良いことをたくさんいってたので、箇条書きで。

  • クラウドでインフラがソフトウェアになったんだら、構成もソフトウェアに。コードで書けばいいじゃないか。
  • PowerShell DSCから Azure Resource Manager, Azure Automation等を呼び出す。コードはc#でもPowerShellでも良い。
  • PowerShell DSC の守備範囲はインスタンスを起動してから、アプリケーションデプロイ前まで。
  • PowerShell v5 にて OneGet でソフトウェアのインストールが出来るようになる。
  • 自動化が楽しくなるとついついコードを書きすぎるが、目的は自動化じゃなくてサービスを成功させることなので、バランスをとること。
  • PowerShell4.0が含まれるWMF4.0が必要。
  • WMI, MOF, WSMan, HTTPを使っている。
  • .mofファイルを使って、CIM経由で構成する仕組み。特定言語に依存していない。Chef, PuppetもDSCを利用可能。
  • PushとPullを比べると、Pullのほうが楽。Resourceをサーバーに置くだけで済むので。
  • ノードがPushモードになっていると、Pullを受け付けないので、Pullに設定する必要がある。
  • 構成管理をコードで書いたなら、バージョン管理すればいいじゃないか。

PowerShell DSCがChefと競合するので、WindowsはChefから離れた方が良いかなぁという気がする。

TypeScriptはVisualStudioとの統合されており、ブラウザーデバッグに対応している

午後一のセッションは @chack411 さんのTypeScript詳説を聞いた。

ブラウザはTypeScriptを実行できない。なので、TypeScriptはコンパイルされるとJavaScriptが自動生成されて、ブラウザーJavaScriptとして実行する。しかし、ブラウザーの開発者ツールJavaScriptデバッグしようとすると、mapファイルを読み込んで、TypeScriptのソースコードデバッグできる。

この仕組みはChromeとかでjquery.js.minとかと同じで、TypeScriptに各ブラウザーが対応しているところをみると、MicrosoftOSS戦略も徐々に浸透しつつあるのかなぁと感じた。

この辺は注意が必要と感じました。ECMAScript6が早く使えるようになるといいなぁ。

古いIEの対応だけの知識ではない。Fiddlerの実践的な使い方は現場のWeb開発には必須の知識

続いては物江さんのセッションで、IEの互換性に関する話だけと思いきや、Fiddlerの使い方も紹介されており、これは他の人にも是非教えてあげたいなぁと思いました。

ちなみにエンタープライズモードはIE11のサポート期間まで使えるので、IE8向けのサイトは2024年近く(おぼろげな記憶なので不正確)まで使えるとのことです。やったね(白目

Fiddlerは本当に便利です。SSL通信の中身も見られますし。スニペットのリンク切れはおそらく後日フォローがあるはずです。

COMは死なない。asyn/await は万能ではない。

Windows Runtime DeepDiveを途中から聞いた。ストアアプリは.NET, JavaScript, C++で書いて、Windows Runtime を共通的に呼び出すんだけど、その呼び出し方の仕組みはそれぞれ違う。

Microsoftの技術はロングラン!でも、コアな部分ってそんなそんな変えられないですよね。パッチの積み重ねだし。*nixのカーネルもしかり。

Azureを支える技術。初期の頃からパフォーマンスは飛躍的に向上。

最後はいろいろ迷ったんですが、Azureのセッションを今までまったくうけてなかったので、佐藤 直生 さんの「Microsoft Azure インターナル ~ ファブリック コントローラーを理解して、正しい設計を!」を聞いてみました。さすがにレベル400(専門)ということでほとんど理解できなかったw

このように要所要所でMicrosoftの独自テクノロジーが導入されており、ネットワーク構成もメッシュ化に構成を変更することで当初と比べると飛躍的に向上したとのこと。

私は Microsoft Azure モバイルサービス の記事をよく書いていますが、内部的にはPaaSのCloud Servicesが使われている。これはWebSiteも同様。モバイルサービスが実際どのような仕組みかは Ask The Speakerでも伺いましたが、モバイルサービスは結構ブラックボックス化されているとのことで、Kuduを使用してゴニョゴニョしていくとわかるのかなぁという感じでした。

見たかったけど見れなかったセッションたくさん。。。

どれも興味深いセッションばかりで泣く泣く見れなかったセッションがあった。例えば「パワフル モバイル アプリ開発 ~ 最新 Azure Mobile Services をフル活用しよう!」や「Azure Mobile Services & Notification Hubs で WindowsiOSAndroid 等、すべてのデバイスにプッシュ通知を送る」Azure関連がほとんど見られなかった。 後日動画が公開されるのと、フォローアップ記事が公開されているので、おさらいしておきたい。