.NETエンジニアのための定期勉強会(Sansan主催)レポート
きっとAzureを使いたくなる、超絶便利な新機能群一挙紹介
― 第7回 勉強会:MSエバンジェリスト&TOPスペシャリストが語る 『Azure』の最新事情![1]―
最新のMicrosoft Azureの全体像と、特に便利な個別の機能をコンパクトに紹介する。Machine Learning、Search、Batchなどの機能概要も説明する。
「Azure最新事情」をテーマにした勉強会(Sansan主催の「第7回 .NET勉強会」)が2014年11月21日に開催されました。本稿では、そのセッション内容を詳しく紹介します。この勉強会では、下記の2つのセッションがありました。
- 1[本稿]きっとAzure使いたくなる 超絶便利な新機能群一挙紹介
- 2今から機械学習やるならAzureMLがいいと思うよ
本稿では、このうち1のセッションの内容をそのまま書き起こしました。
Sansan主催の「.NET勉強会」について
Sansan株式会社は、スキルアップを目指す.NETエンジニアのための勉強会を定期的に開催しています。本稿で紹介する「第7回 MSエバンジェリスト&TOPスペシャリストが語る 『Azure』の最新事情!」では、日本マイクロソフト株式会社よりテクニカルエバンジェリストマネージャー 砂金信一郎氏、株式会社マイニングブラウニーより得上竜一氏を迎え、Microsoft Azureに関するセッションを行いました(開催:2014年11月21日、モデレーター:Sansan株式会社 渋木宏明)。最新の開催情報は、こちらの「.NET勉強会- connpass」ページでご確認ください。
きっとAzure使いたくなる 超絶便利な新機能群一挙紹介 ― 日本マイクロソフト株式会社 テクニカルエバンジェリストマネージャー 砂金 信一郎
セッションスライド
本セッションでは、Azureの全体像、便利な機能などを紹介します。
Microsoft Azureの全体像
――Azureが提供するサービス
Microsoft Azureは次のようなサービスを提供しています。
仮想マシン、クラウドサービス、ホスティング用のWebサイトといった構成を基本として、ソフトウェア部品を数多く提供しています。
インフラエンジニアや自分流のフレームワークがある人にはあまりメリットが感じられないかもしれませんが、自分でコードを書く場合にはあったら便利だと思われるソフトウェアがそろっています。
例えば、キャッシュサービスには、Redis CacheやManaged Cache Serviceがあります。
また、キューを使えば自動でスケールする仕組みを作れます。
Service Busや通知ハブは、サービスをつなぐための機能です。業務系アプリでさまざまなサービスを複雑につなぐ際に利用できます。
Active Directoryの認証処理など、自分で作り込むのは面倒な機能もAzure上で利用可能です。
ネットワークでは、ExpressRouteというサービスが便利です。クラウドとオンプレミスを接続し、クラウド上のリスクを意識せずに利用できます。
Azureは、AWSと比べると、技術的に最先端だからという理由ではなく、業務に安心して利用できるという理由で使う人が多いように思います。
――Azureとオープンソース
Microsoftは、この数ヵ月くらいで、AppleよりGoogleよりIBMよりオープンソースフレンドリ―な会社になってきています。.NETのオープンソース化を進めていますし、Azure上で動作するオープンソース技術には、商用ベンダーとしてできる限りサポートします。
これは、Windowsだけがオープンソースから取り残されると、Microsoftにとって損失になるからではなく、開発現場にいる皆さんにとって不利益になるからです。デファクトスタンダードの技術があるならそれに合わせようという考えです。
――Azureのデータセンター
ニーズがあるところにデータセンターを作るように頑張っています。日本でも2ヵ所開設しています。
申請すれば、データセンターの見学も可能です。
Azureの仮想マシン
――ポータルから仮想マシンを作成
仮想マシンを作成するには、ポータルでイメージを選択します。Windows、Linuxの各種ディストリビューションなど、さまざまなイメージが提供されています。
例えば、Visual Studioの新しいバージョンやテクニカルプレビューが次々と公開され、SDKのバージョンも頻繁に変わる場合には、Azure上で事前に構成されたVisual Studioのイメージを利用するとよいでしょう。リモートデスクトップで開発環境を使うことに少し抵抗があるかもしれませんが、手元の開発環境をきれいに保つためには多少の不便さは許容できます。
――仮想マシンサイズ
Azureでは、さまざまなサイズの仮想マシンを選択できます。AWSのC3シリーズに対抗するDシリーズはCPUが高速で、SSDを使っています。クラウドではディスクアクセスが遅いと感じている人には、Dシリーズがお勧めです。
――仮想マシンの課金
仮想マシンは分単位で課金されます。動作させた後、シャットダウンして、という使い方であれば、MSDNの特典の範囲でちょっとした実験に利用できるでしょう。
――オートスケール
デフォルトでオートスケールのためのメトリクスを選択できます。CPU使用率に応じて稼働する仮想マシンの数を増減するといった柔軟な運用が可能です。
――ディスク領域
OS、テンポラリ、データの各ディスクをマウントして領域を確保できます。
――ネットワーク負荷分散
Azureでは、クラウドサービスに対するアクセスを、LB(ロードバランサ)により複数の仮想マシンに振り分けることができます。オートスケールで仮想マシンを増減したい場合は、簡単にこのような構成を取ることが可能です。
さらに、内部LBを構成したり、仮想マシンに直接パブリックIPアドレスを割り当てたりすることもできます。
――ExpressRoute
Azureと専用線で高速に通信できるサービスです。
Azureの便利な新機能
――RemoteApp(プレビュー版)
Azure上で実行しているアプリケーションを手元で利用できるようにする機能です。
例えば、OS X環境でWindows版PowerPointを開きたいときなどに利用できます。独自の企業内アプリにも対応しています。
向き不向きはありますが、アプリの実体をAzure上で実行しておき、外出先からiPadで利用するといった運用が可能です。
――メディアサービス
コンテンツの配信、エンコーディング、ライブストリーミング、オンデマンド配信といった機能を提供しています。
1つのデータソースをiOSやAndroidなど複数のデバイス向けに配信する場合、それぞれに応じたエンコーディングが必要になります。あるコンテンツ配信サービスでは、大量のコンテンツの一括変換や日々増加するコンテンツの変換を自動的に処理するために、Azureのメディアサービスを利用しています。
メディアサービスでは、ライブストリーミングでIndexerという機能を利用し、動画から音声部分を抜き出して英語のキャプション(字幕)を入れることも可能です。
――Azureストア
Microsoftでは、必要に応じてサービスを買収し、Azureで提供しています。それ以外にも、サードパーティ製のサービスを利用することが可能です。
例えば、AzureのコアとなるデータベースはSQL Serverですが、サードパーティ製のMySQLデータベース、ClearDBも利用できます。
――Azure Intelligent Systems Service
Machine Learningを利用するときには、事前にデータを収集する必要があります。Azure Intelligent Systems Serviceは、収集したデータをイベントドリブンで振り分けたり、リアルタイムでカウントアップしたりといった処理を可能にします。
例えば、IoTで機器から大量のデータを収集して送るときなどにAzure Intelligent Systems Serviceを利用すれば、データ処理を行ってからストレージに保存できます。
――Visual Studio Online Application Insights
Visual Studioでは、クラウドへのデプロイ機能が強化されています。それ以外にも、本番環境で動いているアプリケーションの稼働状況を監視し、パフォーマンスや障害の改善につなげることができます。
Machine Learning、Search、Batch
――Azure Machine Learning
Machine Learningは、Azure上でデータの分類、パターン認識、予測などを行う機能で、データマイニングなどで利用されます。
Machine Learningで作業を行うには、ブラウザベースの管理ツールであるML Studioを使います。
ML Studioでは、統計計算で使うサンプルのデータセットをドラッグ&ドロップして、前処理、データのクレンジング処理、予測モデルをつなぎます。さらに、計算レイヤーを作り、処理結果のアウトプット部分に線でつなげることで、基本的にはコードを書かずにMachine Learningの処理を実行できます。
Machine Learningには、大きく分けると、
- データを学習させる
- 学習によって出来上がったモデルで本番データを処理する
という2段階のプロセスがあります。
R言語
ML Studioでは、アルゴリズムの変更やパラメーターの調整の際に、統計に特化した「R」というスクリプト言語を利用します。R言語のモジュールを登録して利用できるだけでなく、モジュール開発のためのSDKが提供される予定です(2015年2月20日の正式サービス開始に合わせたアップデートでRのカスタムモジュール作成機能が提供されました)。
scikit-learn
scikit-learnは、機械学習の処理をPythonで書くためのライブラリです。
Pythonで書くため、R言語を使うよりコードが見やすくなります。ネイティブで書かれた科学技術計算処理をPythonで呼び出す形式なので、パフォーマンス上の問題もありません。
オープンソースで提供されており、コミッタ―としてMicrosoft Researchのメンバーが参加しています。
オライリー刊行『実践 機械学習システム』は、scikit-learnベースでサンプルスクリプトを掲載しています。学習書としてお勧めです。
――Azure Search
Azure Searchは、Elasticsearchをベースとし、日本語対応にkuromojiを使用しています。Azure Searchを利用することで、Azure上で日本語での全文検索が可能な検索機能を提供できます。
――Azure Batch
Azure Batchは、大量のデータを並行して一括で処理するためのサービスです。
そのような処理は、オンプレミスの世界ではWindows HPC Serverで実現します。代表的な事例が東京工業大学のクラスタ型スーパーコンピュータ、TSUBAME2.0です。
ジョブの実行
Windows HPC Serverでは、GUI画面でクラスターを構成するコンピューターのノードを管理します。管理画面でノードを指定してジョブを実行します。
一方、Azure Batchではそのような管理画面がなく、プログラムを書いてジョブを実行します。例えば、100台の仮想マシン上で一斉にコマンドを実行したい場合には、プログラムでコマンドをサブミットすると、Azure Batchが仮想マシン上で実行します。
オートスケール
Windows HPC Serverでは、オンプレミスシステムのスケジューラなので、ジョブが終了して不要になったノードがそのまま残ります。
しかし、クラウドを利用する場合には、コストがかからないように不要なノードが残らないようにしたい。そのため、Azure Batchは、投入されたジョブの量に応じて仮想マシンをデプロイし、不要になったらすぐに縮退させるオートスケールの機能を備えています。Azure Batchを利用すれば、自分でスケジューラを書かずに、簡単にスケールする処理を実行できます。
さいごに
MSDNには特典としてAzureの利用料が付属しています。ぜひ、使ってみてください。
■
次回は、株式会社マイニングブラウニーの得上竜一氏による「今から機械学習やるならAzureMLがいいと思うよ」のセッション内容をご紹介します。
※以下では、本稿の前後を合わせて5回分(第2回~第6回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
2. 10分間で人に説明できるまで分かるCompiler as a Service“Roslyn”
Visual Studio “14”の新機能として搭載予定の次期コンパイラープラットフォーム“Roslyn”について、簡単に話せるレベルになるまで、ほんの少しだけ踏み込んで解説。
3. C#&.NETの進化と、次期版でできること(2014年版)
さまざまなプラットフォーム向けのプログラムを開発できるまでに進化してきたC#。その内容と特徴を、プラットフォームごとにまとめる。また今後のC#/.NETがどのように進化するかも紹介する。
4. 破壊的に進化する.NET技術のトレンド変化に立ち向かう
数年で根本から大きく変更される.NET技術。そんなトレンド変化に追随するにはどうすればよいのか? gloopsで実践されている手法を具体的に説明する。
5. Xamarinで今日から始めるクロスプラットフォーム開発
クロスプラットフォームアプリ開発の戦略についてまとめ、Xamarinによるアプリ開発の特徴を説明する。また、Xamarinに関する情報収集や、Xamarin.Forms×MVVMによる開発のポイントを紹介する。