SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
Azure入門
ハンズオン
2017年9月20日
山ノ内祥訓
自己紹介
名前
年齢
住まい
お仕事
山ノ内 祥訓(よしのり)
0x26
熊本県
現在は某大学病院の特任助教で臨床研究
のデータマネージャとして主に臨床研究
データに関する設計及び開発と運用を
やっています。
某SIerで医療情報システムの導入及び開発を10年
ぐらいやっていました。
SNS Facebook
https://www.facebook.com/yoshinori.yamanouchi.12
Github https://github.com/eolla1013
資格等 修士(医科学) 現在博士課程
医療情報技師
Yoshinori Yamanouchi
ハンズオンの内容
1)Webアプリケーション
2)仮想ネットワークインフラ
3)コグニティブサービス
Webアプリケーション
Webアクセス
リリース
DBアクセス
開発
Azureポータル
WebApp+SQLの作成
1.App Serviceの「追加」からWeb App + SQLを選択
2.WebAppの情報を入力
• アプリケーション名入力
• サブスクリプション選択
• リソースグループはhandson20170920を作成
• AppServiceプラン作成
• プラン名入力
• 西日本リージョン
• F1 Free
WebApp+SQLの作成
3.SQL Databaseの作成
4.SQL Databaseサーバの作成
• サーバ名入力
• 管理者ユーザ/パスワード入力
• 西日本リージョン
• データベース名入力
• データベースサーバ作成
• Feeeレベル
• 照合順序はJapanese_XJIS_100_CS_AS_KSを指定
Visual Sdudioでの開発
1.「新規プロジェクト」でWebアプリケーションを作成
2.必要なライブラリのインストール
• .Net Framework4.5 MVC構成
• 認証なし
• AzureのAppServiceにホスト
• AppServiceの構成ウィザードはキャンセル
• NuGetでEntityFrameworkを選択
Webアプリケーション開発
1.テスト用のDB環境作成
2.単純なCURD画面を作成
• Code FirstでADO.NET Entity Data Modelを追加
• App_DataにSQLデータファイルを追加
• Web.Configの接続文字列をSQLデータファイルに変更
• PONOでモデルクラスを作成
• データコンテキストクラスにPONOのプロパティを追加
• 新規スキャンフォールディングでEntityFrameworkを使
用したViewのあるMVC5コントローラを作成
• Views/Shared/_Layout.chtmlに作成したコントローラ
のメニューを追加
• デバッグ実行して動作を確認
Webアプリケーションのリリース
1.AzureのAppServiceに発行
2.動作確認
• 作成したWebAppを選択
• App_Dataは除外、他各種コンパイル設定
• データベースの接続先が作成したSQL Databaseになってい
ることを確認
• アプリケーションをブラウザで開いて動作確認
• SQL Databaseの参照はローカルのSQLServerと同じ
• ただし、ファイヤウォールがあるので自IPのみ解除する
こと
Webアプリケーションの拡張
1.スケールアップ
2.スケールアウト
• F1 Freeは最小機能なので開発テスト時のみがよい
• 本番の負荷に耐えるには価格レベルの変更が必要
• 価格レベルの変更は再作成の必要なし
• 1台のWebサーバで耐えきれなくなったときに使う
• 事前に最大最小台数と初期台数を指定できる
• 再作成の必要なくアプリケーションも自動展開される
• ロードバランサは組み込み済み
仮想ネットワークインフラ
Webアクセス
RDPアクセス
双方向アクセス
192.168.0.0/16
192.168.1.0/24 192.168.2.0/24
仮想ネットワークの作成
1.Virtual networks(VNet)の追加
2.サブネットを作成
• 192.168.0.0/16でアドレス範囲を設定
• リソースグループは先ほど作成したものを選択
• サブスクリプションを選択
• リージョンは西日本を指定
• サブネット1(public subnet)
• 192.168.1.0/24
• サブネット2(private subnet)
• 192.168.2.0/24
セキュリティグループの作成
1.Public subnet用のセキュリティグループ(NSG)の追加
2.Private subnet用のセキュリティグループ(NSG)の追加
• VNetと同じサブスクリプション、リージョンを選択
• Inbound security rulesにRDPプロトコルの許可を追加
• サブネットに割り当て
• VNetと同じサブスクリプション、リージョンを選択
• Outbound security rulesにInternetへの全接続拒否を追加
• サブネットに割り当て
確認用仮想マシンの作成
1.作業用VMの作成(1台)
• Windows Server 2016 Datacenter
• A2 Basic
• 管理者ユーザ名/パスワードは自由に設定
• Public subnetに割り当て
• グローバルIP付与
• セキュリティグループはなしを指定
2.確認用VMの作成(2台)
• Ubuntu Server 16.04 LTS
• A1 Basic
• ログインはユーザ名/パスワードを指定内容は自由に設定
• Public subnetに1台、Private subnetに1台割り当て
• グローバルIPは付与しない
• セキュリティグループはなしを指定
作業用マシンへの接続
1.作業用VMへの接続
• 仮想マシンの概要からRDPファイルをダウンロード
• 作成時に決めたユーザ名とパスワードでログイン
2.作業用VMの環境設定
• 適当なSSHクライアントをインストール
• Teraterm
• Putty
3.確認用VMへのログイン
• SSHクライアントを使って作業用VMから確認用
VMに接続
ネットワーク疎通の動作確認
1.作業用VM
• Internet Explorerで外部のWebサイトが見えるか
• 確認用VM2台にSSH接続できるか
2.作業用VM(public subnet)
• Curlコマンドで外部Webサイトが見えるか
3.作業用VM(private subnet)
• 作業用VM(public sunet)にSSH接続できるか
• Curlコマンドで外部Webサイトが見えないか
コグニティブサービス
文字認識リクエスト
コグニティブサービスの作成
1.Cognitive Serviceの追加
• Computer Vision APIを使用
• リージョンは米国西部(日本国内
リージョンはまだ未対応)
• リソースグループは今回作成したも
のでよい
• データ二次利用の同意取得
Visual Studioのプロジェクト
1.Windowsフォームアプリケーションを作成
• .NET Framework4.5
• 下記のような画面を作成
Picturebox Textbox
ライブラリの取得
1.NugetからCongnitive Serviceのライブラリを取得
• Microsoft.ProjectOxford.Vision
必要なコードを追加
1.クリップボードの画像を取得
if (Clipboard.ContainsImage()) {
this.PicSourceImage.Image = Clipboard.GetImage();
} else {
var data = Clipboard.GetDataObject();
StringBuilder msg = new StringBuilder();
msg.Append("クリップボードにあるデータは画像データではありません。");
foreach (string itm in data.GetFormats()) {
msg.Append(itm);
}
MessageBox.Show(msg.ToString(), "クリップボードからの画像読み込み",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
必要なコードを追加
2.Congnitive Serviceへのリクエスト
VisionServiceClient OcrService=new VisionServiceClient("XXXXXXXXXXXXXXXXXXXX");
OcrResults result = null;
try {
using (System.IO.MemoryStream stm = new System.IO.MemoryStream()) {
this.PicSourceImage.Image.Save(stm, System.Drawing.Imaging.ImageFormat.Bmp);
stm.Seek(0, System.IO.SeekOrigin.Begin);
Task<OcrResults> tsk = OcrService.RecognizeTextAsync(stm, "ja");
result = tsk.Result;
}
} catch (AggregateException ex) {
StringBuilder msg = new StringBuilder();
msg.AppendLine(ex.ToString());
foreach (Exception inex in ex.InnerExceptions) {
if (inex is ClientException) {
msg.AppendLine(((ClientException)inex).Error.Code + ":" +
((ClientException)inex).Error.Message);
}
}
MessageBox.Show(msg.ToString(), "Congnitive Service Vision APIエラー",
MessageBoxButtons.OK, MessageBoxIcon.Error);
} catch (Exception ex) {
MessageBox.Show(ex.ToString(), "OCR変換エラー", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
必要なコードを追加
3.出力結果をテキストボックスに表示
if (result != null && result.Regions != null) {
StringBuilder restext = new StringBuilder();
foreach (var reg in result.Regions) {
foreach (var line in reg.Lines) {
foreach (var word in line.Words) {
restext.Append(word.Text);
}
restext.AppendLine();
}
restext.AppendLine();
}
this.TxtOutputText.Text = restext.ToString();
}
シークレットキー設定
1.作成したVisionAPIのシークレットキーをコピー
2.CongnitiveServiceのコンストラクタにキーを設定
• 2つあるがどちらを使ってもよい
実行して動作確認
1.適当な文章を画像にしてコピーしておきOCR変換
ハンズオン後の後始末
今回作成した環境は全て同じ
リソースグループになっているはず
リソースグループを消せば全部消せます
以上でハンズオンは終わりです
お疲れ様でした。
全体を通して質問などがあれば
できる限りお答えします。
改めて告知!!
9月22日(金) AWS DB Day
9月20日(水) オトナのプログラミング勉強会
9月30日(土) わんくま同盟 熊本勉強会#5
→AWSの概要とDB移行について
→デザインパターン入門
→ASP.NET、Bot、コンテナ、WebAPI
https://otona.connpass.com/event/66425/
https://pages.awscloud.com/awsdbdaykumamoto20170922.html
https://fukuten.connpass.com/event/63612/
http://www.wankuma.com/seminar/20170930kumamoto05/
10月21日(土) Fukuoka.NET Conf 2017

Weitere ähnliche Inhalte

Ähnlich wie Azureミニセミナー(ハンズオン編)

物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜
物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜
物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜Takashi Kaneda
 
JP_Stripes Kumamoto #1 Stripeハンズオン資料
JP_Stripes Kumamoto #1 Stripeハンズオン資料JP_Stripes Kumamoto #1 Stripeハンズオン資料
JP_Stripes Kumamoto #1 Stripeハンズオン資料Yoshinori Yamanouchi
 
Webシステムプログラミング20161003
Webシステムプログラミング20161003Webシステムプログラミング20161003
Webシステムプログラミング20161003義広 河野
 
20130916第3回テキストマイニングシンポジウム資料(浅野)
20130916第3回テキストマイニングシンポジウム資料(浅野)20130916第3回テキストマイニングシンポジウム資料(浅野)
20130916第3回テキストマイニングシンポジウム資料(浅野)Hirosuke Asano
 
Webシステムプログラミング20150413
Webシステムプログラミング20150413Webシステムプログラミング20150413
Webシステムプログラミング20150413義広 河野
 
介護医療業界におけるマイクロソフトテクノロジー動向
介護医療業界におけるマイクロソフトテクノロジー動向介護医療業界におけるマイクロソフトテクノロジー動向
介護医療業界におけるマイクロソフトテクノロジー動向Daisuke Masubuchi
 
教育領域への人工知能活用の現状と、それを支えるデータ環境について
教育領域への人工知能活用の現状と、それを支えるデータ環境について教育領域への人工知能活用の現状と、それを支えるデータ環境について
教育領域への人工知能活用の現状と、それを支えるデータ環境について静厳 萩原
 
実用としての深層学習 ~深層学習の利用事例と展望~
実用としての深層学習 ~深層学習の利用事例と展望~実用としての深層学習 ~深層学習の利用事例と展望~
実用としての深層学習 ~深層学習の利用事例と展望~Hirono Jumpei
 
医用画像情報イントロダクション Ver.1 0_20160726
医用画像情報イントロダクション Ver.1 0_20160726医用画像情報イントロダクション Ver.1 0_20160726
医用画像情報イントロダクション Ver.1 0_20160726Tatsuaki Kobayashi
 
副業推奨とオープンソース @ 俺聞け4
副業推奨とオープンソース @ 俺聞け4副業推奨とオープンソース @ 俺聞け4
副業推奨とオープンソース @ 俺聞け4Oishi Yuichi
 
オープンデータプラグイン紹介資料
オープンデータプラグイン紹介資料オープンデータプラグイン紹介資料
オープンデータプラグイン紹介資料Naokazu Nohara
 
パーソナルデータ利活用を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータ利活用を変える!オープンソース分散型PDS「Personium」を使ってみよう!パーソナルデータ利活用を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータ利活用を変える!オープンソース分散型PDS「Personium」を使ってみよう!泰史 栃折
 
みんなのPython勉強会#21 澪標アナリティクス 井原様
みんなのPython勉強会#21 澪標アナリティクス 井原様みんなのPython勉強会#21 澪標アナリティクス 井原様
みんなのPython勉強会#21 澪標アナリティクス 井原様Takeshi Akutsu
 
シラサギ紹介20161119
シラサギ紹介20161119シラサギ紹介20161119
シラサギ紹介20161119Naokazu Nohara
 
データ活用を進めるために必要なこと
データ活用を進めるために必要なことデータ活用を進めるために必要なこと
データ活用を進めるために必要なことYoshinori Yamanouchi
 
ビジュアルプログラミング20161118
ビジュアルプログラミング20161118ビジュアルプログラミング20161118
ビジュアルプログラミング20161118義広 河野
 

Ähnlich wie Azureミニセミナー(ハンズオン編) (20)

SORACOM CLIを使ってみよう
SORACOM CLIを使ってみようSORACOM CLIを使ってみよう
SORACOM CLIを使ってみよう
 
初めてさわるEC2ロール
初めてさわるEC2ロール初めてさわるEC2ロール
初めてさわるEC2ロール
 
物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜
物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜
物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜
 
JP_Stripes Kumamoto #1 Stripeハンズオン資料
JP_Stripes Kumamoto #1 Stripeハンズオン資料JP_Stripes Kumamoto #1 Stripeハンズオン資料
JP_Stripes Kumamoto #1 Stripeハンズオン資料
 
IoT LT 大阪 20160406
IoT LT 大阪 20160406IoT LT 大阪 20160406
IoT LT 大阪 20160406
 
Webシステムプログラミング20161003
Webシステムプログラミング20161003Webシステムプログラミング20161003
Webシステムプログラミング20161003
 
20130916第3回テキストマイニングシンポジウム資料(浅野)
20130916第3回テキストマイニングシンポジウム資料(浅野)20130916第3回テキストマイニングシンポジウム資料(浅野)
20130916第3回テキストマイニングシンポジウム資料(浅野)
 
Webシステムプログラミング20150413
Webシステムプログラミング20150413Webシステムプログラミング20150413
Webシステムプログラミング20150413
 
介護医療業界におけるマイクロソフトテクノロジー動向
介護医療業界におけるマイクロソフトテクノロジー動向介護医療業界におけるマイクロソフトテクノロジー動向
介護医療業界におけるマイクロソフトテクノロジー動向
 
教育領域への人工知能活用の現状と、それを支えるデータ環境について
教育領域への人工知能活用の現状と、それを支えるデータ環境について教育領域への人工知能活用の現状と、それを支えるデータ環境について
教育領域への人工知能活用の現状と、それを支えるデータ環境について
 
実用としての深層学習 ~深層学習の利用事例と展望~
実用としての深層学習 ~深層学習の利用事例と展望~実用としての深層学習 ~深層学習の利用事例と展望~
実用としての深層学習 ~深層学習の利用事例と展望~
 
医用画像情報イントロダクション Ver.1 0_20160726
医用画像情報イントロダクション Ver.1 0_20160726医用画像情報イントロダクション Ver.1 0_20160726
医用画像情報イントロダクション Ver.1 0_20160726
 
副業推奨とオープンソース @ 俺聞け4
副業推奨とオープンソース @ 俺聞け4副業推奨とオープンソース @ 俺聞け4
副業推奨とオープンソース @ 俺聞け4
 
オープンデータプラグイン紹介資料
オープンデータプラグイン紹介資料オープンデータプラグイン紹介資料
オープンデータプラグイン紹介資料
 
パーソナルデータ利活用を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータ利活用を変える!オープンソース分散型PDS「Personium」を使ってみよう!パーソナルデータ利活用を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータ利活用を変える!オープンソース分散型PDS「Personium」を使ってみよう!
 
みんなのPython勉強会#21 澪標アナリティクス 井原様
みんなのPython勉強会#21 澪標アナリティクス 井原様みんなのPython勉強会#21 澪標アナリティクス 井原様
みんなのPython勉強会#21 澪標アナリティクス 井原様
 
医療×AIシンポジウム -医療×AI推進人材を考える- 報告書
医療×AIシンポジウム -医療×AI推進人材を考える- 報告書医療×AIシンポジウム -医療×AI推進人材を考える- 報告書
医療×AIシンポジウム -医療×AI推進人材を考える- 報告書
 
シラサギ紹介20161119
シラサギ紹介20161119シラサギ紹介20161119
シラサギ紹介20161119
 
データ活用を進めるために必要なこと
データ活用を進めるために必要なことデータ活用を進めるために必要なこと
データ活用を進めるために必要なこと
 
ビジュアルプログラミング20161118
ビジュアルプログラミング20161118ビジュアルプログラミング20161118
ビジュアルプログラミング20161118
 

Azureミニセミナー(ハンズオン編)