【レポ】PowerAppsでローコーディングなハッカソンに参加してきました
概要
なおかつ、東京と福岡の2拠点同時開催というお得感満載でした。
セッション&ワークショップ
テーマ:「アイデアをデジタル変革させるには」
・情報の収集
・情報の共有(部門をまたぐ業務など
・情報のデジタル化(紙の申請書など
今回はHeathrow空港の例を拝見しました。
他にも事例がたくさんあるようです。
また、PowerAppsでのアプリ開発は従来の開発方法とは異なります。
イメージとしてはアジャイルをさらにスーパーアジャイルにしたもので、一週間で1サイクルの目安。
【計画→設計→作成→テスト→改善】
ローコーディングなので、極端な話だとお客さんの目の前で動かしながら認識のすり合わせをすることもできるようです。
午後のハッカソンの下地になるものでした。
2.アプリを使う人のペルソナを書き出す。
3.ペルソナに基づいてOKR(目的と結果)を書き出す。
4.業務フローとペルソナをもとにタスクを洗い出す。
5.アプリの画面スケッチを書き出す。
6.アプリの機能に優先順位をつける。
個人でアプリを作る際にもこのワークショップの流れを意識して作れば
目的を見失わずに丁寧なものが作れる気がしました!
(作ることに夢中になり目的を見失いがちなので...
ハッカソン
午後からいよいよハッカソンです。
テーマ:ボランティア、介護、教育、子育て
チーム:HappyBirthday王者(東京)、NPOハック四(東京)、QBSLab(福岡)(1チーム当たり4~5人)
制限時間:約2時間
アカウント:PowerApps用に1人1つMSアカウントを割り振っていただきました。
ユーザー:被災地の役所の人、ボランティア参加の人
概要:
役所の人が被災地の写真をメインに被災状況の情報を集める
→集めた情報をもとに役所の管理者が支援の優先順位を決める
→ボランティア参加の人の情報を集め、適正によって仕事を割り振る
ポイント:
被災現場で使うものなので、極力自由入力の少ないものにする。
幅広い年齢層が使えるようにUIを簡潔なものにする。
災害ごとに使えるように汎用性の高いものにする。
オフラインでも使えるものにする。
[データから開始]という機能を使うとエンティティのデータをもとにアプリの大枠を作ってくれます。
・被災状況収集アプリ
・管理者操作アプリ
・ボランティア情報アプリ
PowerBIで被災地が地図上ですぐに確認できる機能も作成しました。
コンポーネントの使い方
複数人で開発する環境で、ヘッダーなどアプリ内で統一したいものはコンポーネントを使用すると便利ということで、まだプレビュー機能ですがレクチャーいただきました。
メモとして簡単に記載しますので、詳細は吉田さんの記事をご覧いただくのが良いです。
PowerAppsのアプリが10倍速く作れるキャンバスコンポーネントとは? - Taiki's Memorandum
アプリ作成開始後、
[アプリの設定]>[詳細設定]>[コンポーネント]オンにする。
アプリ編集画面に戻り、
[挿入]>[カスタム]>[+新しいコンポーネント]
にて必要なコンポーネントを作成します。
アプリ画面にて
[挿入]>[カスタム]で先ほど作ったコンポーネントが表示されて使えるようになります。
アプリの紹介と結果発表
テーマ:災害ボランティア支援アプリ
審査員評価:ボランティア情報の登録にて、大量の人がPowerAppsを利用するにはライセンス問題に懸念がある。
テーマ:災害ボランティア支援アプリ
概要:災害支援の依頼電話を受けたNPOのボランティアの人向けのアプリ。
アピールポイント:NPOの人の拠点が散在していることで、情報の受け渡しに問題があることを解消したい。
審査員評価:受電だけで依頼を回す場合、捌ききるにはそれなりの人のリソースが必要なため、ライセンスの運用に問題はないか。
テーマ:実績登録システム
概要:社内の工数や実績などをリアルタイムで入力できるアプリ。
アピールポイント:実際の業務で困っていることを取り上げた。題名のUIにこだわった。
審査員評価:工数や実績の入力項目が自由記入のため、手間と感じ記入しない人が出るのではないか。
<結果>
優勝:NPOハック四チーム!!!
個人的にNPOハック四チームのアプリでいいなと思ったところはUIのきれいさでした!
短時間でも色味やボタンなどにもこだわって作られていているところが素敵でした。
・競合の既存製品にどう勝てるか
・PowerAppsじゃないとできないことを見せる(誰が何をだれのために)
そちらの知識や背景、前提なども知っているとより良いとのことでしたので
ちゃんと勉強していこうと思います。
感想
案の定、スキル的には全く追い付かずでしたが、PowerAppsの使い方を学べたとてもいい機会でした!
今後も何かしらのハッカソンに参加したいと思っているので、貢献できるようなスキルや立ち居振る舞いを身に着けます。
全体としては、コミュニティ運営の方々の仲の良さが際立っていて、居心地のいい雰囲気のアットホームな会でした。初めてのハッカソンが今回のような優しい雰囲気のもので心底よかったです。
また、福岡とのTeamsを使ったリモートなやり取りも新鮮でした。
【レポ】Japan Azure User Group 9周年イベントに参加してきました
JAZUG9周年イベントに参加したレポート記事になります。
JAZUGとは?
Microsoft Azureを学び、楽しみ、活かす、日本のユーザーグループです。
月に1度、定期的な勉強会を開催しています。
今回は9周年イベントということで特別なプログラムのイベントを開催しました。
また、7月から開催されていたてらだよしおさんの「Japan Tour in Summer: Java & k8s on Azure まつり」もここでファイナルを迎えられました!すごい!
セッション
今回はRoom C+DとRoom Bで同時に別々のセッションが開催されました。
ここではRoom C+Dで行われていた9周年イベントの方のセッションについて書いていきます。
Room Bで開催されていた「てらだよしおまつりファイナル」については
女子部の時のレポート記事が参考になればと思います。
【レポ】Java & k8s on Azure まつり@女子部に参加してきました - オンプレ系インフラエンジニアがAzureを勉強する
私は受付をしていたため、1つ目のセッションは聞けなかったので、2つ目以降のセッションからになります。
「Azure DevOps × スクラム で実現するプロダクト開発のポイント」
スピーカー:関 満徳さん(@fullvirtue)
資料:
Azure DevOps × スクラム で実現するプロダクト開発のポイント #dotnetlab #jazug
AzureDevOpsで開発したときに誰が何をどの粒度で書けばよいかわからない
というよくある疑問についてのお話でした。
Azure DevOps、スクラム、プロダクト開発についての説明から始まり、
それぞれの歴史についてもお話があり大変興味深かったです!
個人的には歴史と同じくらい具体的に少し未来の話もあったのが面白かったです。
題になっているAzure DevOps × スクラムで実現するプロダクト開発については
具体的な参考事例をお話しくださったので、ポイントがわかりやすかったです。
エピック、フィーチャー、ユーザーストーリー、タスクを対応表に示すのが良さそうです。
「AzureでIoTって実際どうなの?皆さまに知っていただきたい 東京エレクトロンデバイスによるAzure IoT関連事例とその裏側」
今回のイベントのスポンサーである東京エレクトロンデバイスさんのセッションです。
スピーカー:茂出木さん
Windows EmbeddedとIoTへの愛があふれているお話でした。
現在の形のAzure IoT Plug and Playまでの道のりは長いものだったそうです。
昔のAzure IoTはPaaSとの組み合わせで、デバイス側とクラウド側両方の技術が必要であったり、シナリオを利用してもカスタムが大変だったりと一筋縄ではいかなかったそう…
現在はユーザーの希望に合わせて進化しているため、どんどんシンプルに、誰でも使えるようになっています。
現在のAzure IoT Plug and Playではデバイスのほうにすでに必要なものが埋め込まれていて
jsonファイルをダウンロードしてIot Hubに入れればすぐに動かせるらしいです!
これはぜひやってみたいです!
ちなみに、茂出木さんはお掃除ロボにラズパイを載せて自由に操縦したりするほど組み込みもお好きなようでした笑
デモ動画がおもしろかったです。
スピーカー:野崎さん
東京エレクトロンデバイスさんについて軽快な話口でご説明くださいました。
IoT,PoCは爆発的に伸びる可能性のある市場であること、
具体的にはコインランドリーなどで有効活用されていることなど興味深いお話が聞けました。
また、IoTだけでなくAzure関連も手広く携わられているようで、Azure×Veeamもされているとか!あらゆるバックアップをAzureに移行できますって!
東京エレクトロンデバイスさんでは、IoTビジネス共創ラボという勉強会も開催されています。
「Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について」
スピーカー:山口 真也さん(@izuru_yamarara)
資料:
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
togetter:
JAZUG 9 周年 イベント 「Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について」登壇時のまとめ。 - Togetter
AzureADとSSO、SAMLについてのお話で、図解を交えた大変わかりやすいお話でした。
いつ調べてもいまいちピンとこなかったAzureADとSSOについて今までで一番わかったような気がします。
とにかく図がわかりやすいので、是非togetterと合わせて資料を見てください!!!
山口さんはサポート担当の方ということで、実際にあった問い合わせへの回答等をご紹介くださいました。
エラーを再現して解消するまでのデモが本当にスムーズで見ていて気持ちがよかったです。
SSO関連のエラーはエラー画面がすべてを物語っているそうなのでエラーはちゃんと読みましょうね…
LT大会
セッションの後はLT大会でした。
おひとり5分という短さかつ様々なジャンルのお話ということで密度の高い時間でした。
アジェンダのご紹介と簡単な感想になります。
(アジェンダはほぼconnpassから引用してきたので実際の題名と異なっていると思います。すみません。
1.「Azure Sentinel でどこまでログを集められるのか(仮)」
スピーカー:Shinsuke Saitoさん
実際にお家で稼働させているAzure Sentinelがどんな感じを見せてくださいました。
1人分の稼働でも結構なログがたまっていて、お金もそれなりにかかるというのが印象的でした。
2.「航空機事故から学ぶアーキテクチャとモニタリング」
スピーカー:しばやんさん
飛行機事故の事例から学べるアーキテクチャが多くてびっくりしました。
ベースは飛行機事故のお話でしたが、ITの現場でも同様の事故が起きるのが容易に想像できる内容でした…
人はミスするものなので、そもそも操縦ミスや整備ミスのせいにしないような仕組みづくりをするというのが心に刺さりました。
3.「今日から始めるARMテンプレート」
スピーカー:dz_さん
資料:
Azureリソース管理はどうする?→Azure Resource Managerテンプレートを使おう!
というお話でした。
5分という短い中でも華麗にテストデモまで披露してくださいました。
dz_さんはこの日「DevRel/Japan Conference 2019」のイベントで登壇した後にこちらでも登壇というハードスケジュールでした!(私もDevRelも行きたかった…泣
4.「IntuneとWSUSを使ってWindows Updateやってみた。」
スピーカー:ShotaYmmrさん
IntuneとWSUSを使ったWindows Updateが題材ということで
ヘイシャとも親和性が高い内容でびっくりしました。
ITエンジニアになった最初のころに実際に検証された内容ということで真に迫るものがありました。
5.「Micronaut on Azure試してみた」
スピーカー:ひらりんさん
資料:
題名の通りMicronaut on Azureを試してみたお話で、簡単なコードでWebAPIが作れていました。
現段階では厳しいようなところも言及されていて勉強になりました。
6.「Microsoft Learnにコンテンツはどこまでマージされたか?(仮)」
スピーカー:akiyoshiさん
Microsoft Learnには現在676のモジュールがあるそうです!
私もお世話になっています。
コンテンツの統廃合などが激しいようで、リダイレクトされたコンテンツの紹介時のakiyoshiさんがあまりに寂しそうだったのが印象的でした。
常に進化しているMS Learnですので新鮮なうちに触っておきましょう!
7.「社内でnon azure勢から脱却をした話」
スピーカー:morihayaさん
AWS/IDCFからAzureに移行している中で感じたことのお話でした。
今回のJAZUGイベントがとても楽しかったようです!
8.「新しいAzure資格の体系と内容」
スピーカー:d-takadaさん
MS Learnの話に続き、Azure周りの資格も変化が激しいようです。
私もAzureの資格を取ろうかと思っているのですが、
変化があまりに怒涛過ぎて、勉強しているときや取った直後に廃止とかだと少し悲しいなと思って二の足を踏んでしまいます…ちゃんと更新すればいいんですけどね笑
懇親会
スポンサーの東京エレクトロン デバイスさんよりたくさんの食べ物飲み物をご提供いただきました!
ありがとうございます!
懇親会の最中もLT大会が開催され、飛び入りで何名かの方がお話しくださいました。
LTを聞きながらの懇親会は話が弾むのでとても好きです。
ノベルティ
今回もノベルティがたくさん用意されてました!
ステッカー、飴、Tシャツ、etc…
なんといっても目玉は東京エレクトロン デバイスさん提供の
イベントオリジナルサーモボトル!!!
素敵デザインはMS MVPの松本典子さんのものです!
Japan Azure User Group 9周年イベントのノベルティデザイン制作を担当しました。 | nrjlog
感想
初めてコアメンバーとしてJAZUGに参加させていただき、もうずっとドキドキでした。
朝の集合の時には誰に声をかけてご挨拶したらいいのか全くわからず途方に暮れてたら、足利さんが見慣れない人一人一人にお声をかけていて、そこで救われました。
また、受付の準備や懇親会の準備、撤収作業でもコアメンバーの方々、参加者の方々にお世話になりました。
皆様本当にありがとうございました。
今回のイベントもとても楽しく、学びが多かったので、
今後もJAZUGイベントを盛り上げるお手伝いをしていきたいと思います!
Azure Container Instancesで複数WebAPIを扱う
はじめに
Azure Container Instancesを使って
複数のWebAPIをコンテナグループで管理しようとしたときに
ポートを分ける方法でつまずいたので書いておきます。
目的
複数のWebAPI(コンテナ)をコンテナグループでまとめて、
IPアドレスやDNSnameは一つで、ポートを分けて各WebAPIにアクセスできるようにすることです。
<参考>
Azure Container Instances のコンテナー グループ | Microsoft Docs
使う環境
- Azureアカウント
- VisualStudio2019(WebAPI用)
- Docker for Windows(version 19.03.1)
全体の流れ
Container Registryの作成(Azureポータル)
↓
Dockerfileの作成(ローカル)
↓
Dockerイメージのpush(ローカル)
↓
Container Instancesの作成(Azureポータル)
手順
Container Registryの作成
Container Registryを作成します。
APIのDcokerイメージを置いておくところになります。
<詳細>
Azure Container Registry のドキュメント - チュートリアル | Microsoft Docs
Azureポータルにログインします。
新規リソース作成から[コンテナー]>[ContainerRegistry]をクリックします。
簡単にパラメータを設定します。
完成したら、アクセスキーを確認します。
後ほどDockerイメージをpushするのに使います。
Dockerfileの作成
今回WebAPIはVisualStudio2019で用意しました。
ローカルで起動させるとこんな感じです。
それぞれ別のポートでアクセスします。
詳しいコードのついては省略します。
このAPIそれぞれにDockerfileを作成します。
VSにてプロジェクトを右クリックし、[追加]>[Docker サポート...]をクリックします。
ターゲットOSは[Linux]で[OK]をクリックします。
Dockerfileが作成されます。
この中の「EXPOSE 80」の部分を今回使いたいポートに変更します。
今回はDeleteApiを5000、GetApiを5001にします。
これはローカルで実行したときとは異なるポートですが、問題ありません。
Dockerイメージをビルドします。
作成したDockerfileを右クリックし、[Dockerイメージのビルド]をクリックします。
これでDockerのイメージが作られます。
コマンドプロンプトで確認します。
ちゃんと作られてますね。
>docker images
Dockerイメージをレジストリにpushする
作成したイメージにタグをつけます。
Azure上のレジストリ内でバージョン管理するための認識です。
APIを編集更新するたびにDockerイメージをビルドしなおして
レジストリにあげる必要があるので、
タグを分けておくと、古いバージョンに戻すのも楽だと思います。
>docker tag <対象イメージのIMAGE ID> <接続先レジストリサーバー名>/<対象イメージ名>:tag
レジストリにpush
Azure上で作成したレジストリにpushします。
まずAzure上のレジストリにログインします。
>docker login <レジストリサーバー名> -u <ユーザ名> -p <パスワード>
その後にpushします。
>docker push <レジストリサーバー名>/<イメージ名>:tag
Azureポータル上で確認します。
ちゃんとpushされてますね。
Container Instancesの作成
いよいよ本題のContainer Instancesを作成します。
今回は複数のサービスがあるコンテナグループになりますので
下記手順を参考にしています。
チュートリアル - Azure Container Instances に複数コンテナー グループをデプロイする - テンプレート | Microsoft Docs
テンプレートの作成
Container Instances用のテンプレートを用意します。
参考サイトをもとにazuredeploy.jsonを作ります。
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "containerGroups_ContainerInstancesTest_name": { "defaultValue": "ContainerInstancesTest", "type": "String" } }, "variables": {}, "resources": [ { "type": "Microsoft.ContainerInstance/containerGroups", "apiVersion": "2018-04-01", "name": "[parameters('containerGroupsName')]", "location": "japaneast", "properties": { "containers": [ { "name": "deleteapi", "properties": { "image": "containerregistry0824.azurecr.io/deleteapi:1.0.0", "ports": [ { "protocol": "TCP", "port": 5000 } ],
"resources": { "requests": { "memoryInGB": 0.5, "cpu": 0.25 } } } }, { "name": "getapi", "properties": { "image": "containerregistry0824.azurecr.io/getapi:1.0.0", "ports": [ { "protocol": "TCP", "port": 5001 } ], "resources": { "requests": { "memoryInGB": 0.5, "cpu": 0.25 } } } } ], "imageRegistryCredentials": [ { "server": "レジストリサーバー名", "username": "レジストリユーザー名", "password": "パスワード" } ], "restartPolicy": "Always", "ipAddress": { "ports": [ { "protocol": "TCP", "port": 5000 }, { "protocol": "TCP", "port": 5001 }, ], "type": "Public", "dnsNameLabel": "ContainerInstancesTest" }, "osType": "Linux" } } ] }
編集する箇所としては各種名前、image、port、imageRegistryCredentials、各コンテナの設定あたりでしょうか。
各種名前:defaultValueがContainer Instancesの名前。dnsNameLabelがURLになるホスト名。nameが各コンテナの名前。
image:コンテナグループに入れるサービスのイメージ。
レジストリからコピーしてくると間違いないです。
port:VSで作成したDockerfileに記載したportを指定します。
imageRegistryCredentials:レジストリのアクセスキーの情報。
(補足)
リージョンによってCPU等の使用に制限があります。
最小値は1ではないので、動作に影響さえなければ0.5とかでも動きます。
Azure Container Instances リソースの可用性 | Microsoft Docs
テンプレートのデプロイ
AzureのCloudShellに接続し、作成したテンプレートをアップロードします。
アップロードしたファイルをコマンドでデプロイします。
>az group deployment create --resource-group <リソースグループ> --template-file <テンプレートファイル>
テンプレートに間違いがあればエラーが表示されます。
問題なく実行されればしばらく待った後にContainer Instancesの情報が表示されます。
デプロイが終わったらポータル上で確認します。
コンテナが二つできてますね。(でも一つ動いてない…?
接続してみます。
つながらない…なぜ…
よくよく設定を見てみます。
プロパティではちゃんとポートが指定されてます。
ログを見ると…むむむ。
なぜかポート80の表記が。
これはデフォルトが変わってないのでは?
と思い調べるとやはり環境変数を変える必要がありました。
asp.net - Why does aspnet core start on port 80 from within Docker? - Stack Overflow
ということで、テンプレートの"containers"配下に以下の部分を追記します。
"environmentVariables": [ { "name": "ASPNETCORE_URLS", "value": "http://+:5000" } ],
もし一つのコンテナに複数のポートを割り当てたい場合は;で仕切ります。
"environmentVariables": [ { "name": "ASPNETCORE_URLS", "value": "http://+:5000;http://+:5002" } ],
Container Instancesを再デプロイします。
確認します。
うんうん、ちゃんとポートが割り当たってますね。
接続します。
ちゃんと各ポートで接続されますね。めでたし。
おわりに
初めはDockerComposeを使いたかったのですが、
DockerOSがLinuxの場合、APIは一つまでしか対応していないようで断念…
API一つとDB等を組み合わせるには良いようです。
Preview版でなくなったときは複数APIも使えるようになってると嬉しいです。
【レポ】Java & k8s on Azure まつり@女子部に参加してきました
てらだよしおさん(@yoshioterada)の
Japan Tour in Summer: Java & k8s on Azure まつり@女子部に運営として参加したレポート記事になります。
今回はJava女子部さん(@java_women)との共催で、
コンテナ、Docker、Kubernetesについての
座学とハンズオン(モブプロ)というプログラムでした。
本記事では女子部のイベントがどんな雰囲気だったかを中心に書いていきます。
ハンズオンの詳細な内容はちゃんと復習してから別途書きたいと思います。
午前の部 座学
コンテナの基礎についての座学でした。
1人で参加されている方が多く、初めは皆さん緊張している様子でした。
それでも参加者の方から質問も出ていたので、質問はしやすい雰囲気だったのかと思います。
座学の内容については
イベントページに資料がありますのでご覧ください。
Japan Tour in Summer: Java & k8s on Azure まつり@女子部 - connpass
前回のJazug女子部の勉強会もコンテナ編でしたので
こちらの資料もあわせてご覧いただくと
よりコンテナについてのイメージがしやすいと思います。
この時はMicrosoftの真壁さんがお話ししてくださいました。
こちらの資料も初学者向けでとてもわかりやすいので是非!
当日、参加者の方から出た質問で個人的に印象に残ったものを記載します。
Q.Dockerのセキュリティ周り(脆弱性対策など)はどうしたらいいですか?
A.極力オフィシャルのイメージを使ってください。
最近はセキュリティチェックツール(Aqua SecurityやTwistlockなど)もあるのでそれを活用するのも一つの手です。
Q.コンテナの下側のマシンについては意識したほうがいいですか?
A.意識することは大事です。
コンテナは基盤になるマシンのリソースを借りて動いているので、
コンテナの設計は基盤のマシンのリソースを使い切らないように設計しないといけません。
Q.コンテナの利用シーンとは?
A.いろんなところで使われています。
特に開発やテスト等、統一された環境を用意する必要がある場面で有効です。
また、スケールアウトのものはコンテナ向きですが
スケールアップのもの(DB等)はあまりコンテナ向きではないです。
午後の部 ハンズオン
1チーム6人ほどに分かれてモブプロ形式のハンズオンをしました。
私のチームはJava女子部の方が多く、女子部の勉強会に参加されるのが初めての方も何人かいらっしゃいました。
皆さんLinuxコマンドなどの基礎知識をお持ちで、比較的スムーズに進められました。
他のチームも和気あいあいとした様子で、
時には拍手も起こるような盛り上がりでした笑
Microsoftさんのご厚意でお菓子もあったので、
おやつを食べながらできたのもよかったです。
(女子部イベントではおやつがある率が高い気がします笑
ハンズオン全体の流れ
<事前準備>
- チーム内の共有メールアドレスを一つ作成
-
共有のAzureアカウント作成
-
情報共有のためのツール設定
(私のチームはTeamsを使いました。初めてTeamsの画面共有など使いましたが、使い勝手もなかなか良かったです。
<Docker&Kubernetesハンズオン内容>
- 踏み台のLinux仮想マシン作成
- 踏み台LinuxにDockerのインストール
- Dockerイメージの作成、実行
- Azure Kubernetes Service(AKS)のインストール
- YAMLの作成適用、実行
- Kubernetesの基本操作
持ち回りでオペレーターを交代しながらやりました。
自分のオペレーションをみんなに見られるというのは緊張しましたが、
わからないところなどをみんなで相談しながらできたので心強かったです。
また、手順で詰まった時もすぐに寺田さんが丁寧に説明してくださるので
ストレスフリーなハンズオンでした。
モブプロは激しい意見のぶつかり合いをする怖いものだと思っていたので
かなり印象が改善されました笑
その他感想
運営側で丸一日イベントに参加するのは初めてだったので、前日からずっとドキドキしてました…
運営として参加した反省としては、もっと会場の様子を写真に撮っておけば良かったと思いました。
女子部のイベントの様子がわかることで来てみようと思える人がきっといると思ってるので、今後はイベントの様子がわかるような写真を撮ります!
(私は初めてJazug女子部のイベントに参加したときは、どんな感じか知りたくて事前にめちゃくちゃ調べたタイプなので笑
今後のイベント情報
てらださんのJapan Tour in Summerはまだまだこれからですので
各会場でご都合会う方はぜひ!
会場ごとにプログラムも異なるようなのでできることなら全通したいくらいです笑
詳細は、後ほどブログ等で別途書きますが、7月下旬から8月下旬にかけて「Japan Tour in Summer: Java & k8s on Azure まつり」
— 寺田佳央@クラウド・アドボケイト (@yoshioterada) June 26, 2019
通称:てらだよしおまつり by #てらだよしおがんばれ ツアーを開催します。 pic.twitter.com/JWAn3Oi8S3
JAZUG (Japan Azure User Group) - connpass
ツイッターのハッシュタグ【#てらだよしおまつり】で検索いただくと
参加者の方の生の声や現地の様子がよりわかると思います。
おわり
朝から夕方までという長丁場でしたが、
暑い中ご参加いただいたみなさま、共催いただいたJava女子部のみなさま、本当にありがとうございました。
また女子部のイベントでお会いできると嬉しいです。
【レポ】Red Hat Certified Professional Day 2019に参加してきました
Red Hat Certified Professional Day 2019に参加してきたレポート記事になります。
Red Hat Certified Professional Day 2019とは
Red Hat認定資格者向け特別企画です。
私もいくつか資格を持っていたので今回ご招待いただきました。
今回のテーマは「学び」ということでラーニング周りの話を中心に
8名のRed Hat社員の方々から日々の学習方法についてお話を伺いました。
Red Hat Certified Professional Day 2019
密度の濃い時間でしたので、印象に残っているところをかいつまんで書いていきます。
セッション1:「エンジニアの価値を上げるためのLinux+1」
スピーカー:平さん(KVMやAnsibleについての書籍を出されています。
- エンジニアの付加価値について
意外にもビジネスの分野を兼ね備えているエンジニアというのはなかなかいないそうです。
- 情報ソースについて
様々な情報ソースがありますが、それぞれの特性を理解して活用する必要があるそうです。
純粋な情報収集としてはあまり向かないというのが印象に残ってます。
セッション2:「Global Learning Service プレゼンターセッション」
スピーカー:Vikramさん(シンガポールからいらした。日本人に配慮した聞き取りやすい英語でした。
IBMの市場の強さを味方にして、より強い企業になるとの意気込みで安心しました。
- トレーニングプログラムに自信あり
私もRHCSAのための講座でLinuxの基礎を学んでものすごく役に立ちました。
- ラーニングコミュニティ
Home - Red Hat Learning Community
スピーカー:Arunさん(デリバリのマネージャー。Linuxに長く携わっている模様。
- Linuxの歴史について
それもやっぱりOSSにかかわる人たちの頑張りがあってのことなのかなぁとも思います。
- RHCEの認定が始まったのはいつ?
なんと今回は2000年にRHCE試験に合格したレジェンドもいらっしゃてました!すごい!
- RHEL8に対応したRHCEについて
RHCE取得後のAnsible関連の試験はこちら↓
RHEL8
Advanced Automation: Ansible Best Practices (DO447)
RHEL7
Automation with Ansible I(DO407)
ちなみに、資格の最高峰はRHCAレベル21という鬼のように強い資格になるそうです。
RHCE+5つの試験を受けるとRHCAレベル1になるので、
Red Hatが出しているほぼすべての試験に受かるようなものですね笑
これからクラウドやコンテナも意識した試験がどんどん広がるので
RHCEだけで満足しちゃだめだな…と本当に思いました。
セッション3:「エンジニアとして学び続けることの意義」
スピーカー:鈴木さん(Twitter:@tomoya_su)
- 今日の目標
みなさんの学ぶ時間が1分以上増えること!
- なぜ我々は学ぶのか?
学ぶ習慣。大事。
- どうやって学びを続くようにするか?
厳密にやりすぎない:何度失敗してもよい。完璧にやろうとすると続かない。
- 鈴木さんの学習法
成果の用意:やりたい会社に転職できるなど。
全体的に身近でわかりやすいお話しでした。
私は最近資格勉強に疲れた?飽きた?感があるので、
手を動かす構築とアウトプットに注力してます。
セッション4:「自分戦略 ー効果的な学習アプローチについて考えるー」
スピーカー:荒木さん(おしゃれなRed Hatポロシャツをお召しになっていました。
- おすすめの学習方法
検証、勉強会、トレーニング…
それぞれのメリットデメリットも教えてくださいました。
先にセミナーは情報に偏りがあると書きましたが、
直接質問ができるというメリットがあるようです。
- 目標設定が大切
私は完全にこのタイプです。。。
- DX時代を生き抜くために
「LeanとDevOpsの科学」という書籍がおすすめだそうです。
- ワークショップについて
まったくの初耳でした!これは嬉しい!
Red Hat OpenShift 4 Hands-on Workshop 基礎編 Basic-2
セッション5:「テックブログのすすめ」
スピーカー:森さん(Twitter:@mosuke5)
- 学習するということについて
→どうやって効率化して身につけていくか?
- SECIモデルというプロセスモデルのご紹介
SECIモデル(せきもでる) - ITmedia エンタープライズ
要約すると、暗黙知と形式知を繰り返すことで人も会社も強くなるということで
その方法のひとつとしてテックブログをおすすめされていました。
テックブログのメリット:知識の理解度も向上する。やったことを思い出しやすくなる。
- テックブログを書くコツ
楽しみを見つける:PV数の変遷だったり広告収入だったり。ブログ運用自体が楽しいこともある。
弊社でもテックブログを開設したいと思っているのですが、
企業として社外に向けてやるのはいろいろな面で大変だそうです…
まずは社内向けのテックブログあたりから始めてみようかと思います。
セッション6:「趣味だから継続できる学習」
スピーカー:杉村さん(Ansibleのサポートエンジニアの方。サポートの方のお話を聞ける機会は滅多にないそう!
- これまでの取得資格について
大抵のエンジニアがまずほしいと思う資格ばかりでした。
- 勉強方法について
アウトプット:人に説明する。構築してみる。評価されるのはこれ。
- 視野を広げる
- 続けるコツ
継続は力ですね…!
セッション7:「新米Red Hatterの振り返り」
スピーカー:長嶺さん(前職ではサーバー構築やNW運用をされていたそうな
- お仕事での失敗からの教訓
私も目先のことでいっぱいになってしまって大本の目的を知らないまま進めてしまうことがよくあります…反省。
- 資格は何のためにあるのか
私は頭でっかちのタイプなので初学のために資格を取る派です。
- 資格を取った後、そこで得たものをどう活かすか?
いつもの慣れた作業でも知識が増えた状態で見るとちぐはぐな手順があったりするかも
自己の体験に基づく具体的なお話が多くて面白かったです。
JTPさんのお話
各種トレーニングについてのご紹介。
2019年下期にはRHEL7とRHEL8の差分を学ぶためのトレーニングもあるらしい!受けたい!
私もRHCSAとRHCEはJTPさんのところでお世話になりました。
懇親会
大変豪華な立食パーティでした!
1人参加だったのでお話できるかドキドキしていましたが、
皆様フランクにお話しくださって大変楽しい時間を過ごせました。
アワードがあると伺っていましたが、まったく関係ないだろうと思っていたところ
保有資格数が最も多い人ということでRed Hat印のリュックをいただきました!
予想もしていなかったのでびっくりしました。ありがとうございます。
その他感想
・何人ものRed Hat社員さんのお話を伺いましたが、皆さんそれぞれ色々な経歴をお持ちでした。そしてポテンシャルが高い…!
今年の12月にもイベントを予定されているそうなので絶対参加します!
おまけ(ノベルティについて)
ずっと憧れてたRed Hat印のグッズをたくさんいただきました!
リュック、帽子、水、スピーカー、升…
Red Hatファンとしてはむせび泣くほどうれしいです;;この夏はRed Hat帽子で出かけます笑
世界一簡単なFAQチャットボットの作り方
※2019/11/30更新
Microsoft Ignite 2019でPower Virtual Agentsが発表されました。
もしかしたら世界一簡単の称号を明け渡さなければいけないかもしれないので
こちらの記事もご参照ください。
Power Virtual Agentsでチャットボットを作ってみる - オンプレ系インフラエンジニアがAzureを勉強する
はじめに
MicrosoftのCognitive Servicesというサービスが手軽にできるAIで面白そうということで軽く触ってみようと思います。
Cognitive Servicesとは
Microsoftが提供するAIの人工知能パーツ群です。
画像認識や自然言語処理、音声処理などのサービスが用意されています。
今回はその中で言語の分野の「QnA Maker」というサービスを使って
Teamsのチャットボットを作ります。
今回つくるもの
Azureのサポートについて回答してくれるTeamsのチャットボットを作成します。
もちろん日本語対応です。
参考サイト様
QnA ボット - Azure Bot Service - QnA Maker - Azure Cognitive Services | Microsoft Docs
「QnAMaker」とは?Microsoftの自動チャットボット会話生成サービスを試してみた | Ledge.ai
準備するもの
- Azureアカウント
- チャットボットにするFAQサイト
作り方
KBの作成
QnA Makerにアクセスします。
[GET STARTED]をクリックし、Azureのアカウントでログインします。
新規でナレッジベースを作るので[Create a knowledge base]をクリックします。
STEP1
AzureポータルにQnA Makerのリソースを作ります。
[Create a QnA service]をクリックすると、Azureポータルに飛びます。
必要事項を入力します。
価格レベルは今回は最安にします。
STEP2
作成ができたらQnA Makerの方に戻ります。
先ほど作った情報を選択します。
STEP3
KBの名前を設定します。
QnA MakerサイトのマイページにKBの一覧が表示されますが、その時の表示名になります。
STEP4
参考にするFAQサイトのURLを入力します。
今回はAzureのサポートに関するFAQのサイトにします。
補足
[Chit-chat]という欄ではチャットボットの性格が指定できますが、
最低限の会話テンプレート(挨拶等)が登録されるだけで
特に口調が変わるとかではないようです。
STEP5
[Create your KB]をクリックします。
しばらく待つとKBが作成され、FAQサイトの質問と回答が登録されているのが確認できます。
もちろんここで質問と回答をカスタマイズすることもできます。
Botの作成
作成したKBをbotとして出力します。
[PUBLISH>Publish]をクリックします。
[Create Bot]をクリックするとAzureポータルのWeb アプリ ボット作成のページに飛びます。
必要項目を入力します。
ここでも価格レベルは最安にします。
作成が完了したらテストします。
Teamsに接続する
作成したbotをTeamsで使えるようにします。
Webアプリボットの[チャンネル]をクリックします。
チャンネルの追加でTeamsを選択します。
[保存]をクリックします。
特に設定は不要です。
チェックボックスにチェックを入れ、[Agree]をクリックします。
保存が完了したら、
[チャンネルに接続]のページからTeamsに接続します。
Microsoft App IDをTeamsで検索して表示させることもできます。
チャットボットができています!やったー
おまけ
アイコンと表示名を設定してチャットボットらしくします。
Webアプリボットのページで[設定]をクリックします。
アイコンを設定します。pngの画像をアップロード。
表示名もボットらしくします。
Teamsで確認します。
名前とアイコンが変わって、チャットボットらしくなりました。
おわり
こんなに簡単にチャットボットが作れると思ってなかったのでびっくりしました。
仕事中に癒してくれるようなチャットボットとかも作りたいですね…
他のCognitive Servicesも触ってみたいと思います。
GoogleHomeとAzureを使っておうちの小物の住所を決めよう!
テーマ
GoogleHomeに話しかけると、おうちの無くしがちな小物の片づけ場所(定位置)を教えてくれるものを作ります。
例)
人「メガネはどこにある?」
GoogleHome「メガネの置き場所は洗面所の棚の上です」
目的
今回はTableStorageの読み込み機能を使うことがメイン目的です。
ついでにGoogleHomeとAzureFunctionsを組み合わせます。
全体の流れ
- TableStorageの設定
- AzureFunctionsの作成
- DialogflowとGoogleHomeの設定
TableStorageの設定
ストレージアカウントの作成
Azureポータルにログインします。
ストレージアカウントを作成します。
この辺は検索するといろんなわかりやすい記事が出てくるので詳細は割愛します。
ゼロからはじめるAzure(2) ストレージの種類と概要 | マイナビニュース
Table作成
ストレージアカウントができたら、テーブルを作成します。
ひとまず名前だけ設定します。
Microsoft Azure Storage Explorerの初期設定
上記で作成したテーブルを管理するためにMicrosoft Azure Storage Explorerをインストールします。
Azure Storage Explorer – クラウド ストレージ管理 | Microsoft Azure
インストールしたら起動させ、Azureのアカウントと紐づけます。
左サイドバーの人型をクリックします。
[Add an account...]をクリックします。
[Add an Azure Account]を選択し、[Sign in...]をクリックします。
上記でAzureポータルにログインしてたアカウントでログインします。
追加されたアカウントが表示されます。
Tableにデータを入れる
左サイドバーのToggleExplorerのアイコンをクリックすると、さっき作ったストレージアカウントと空っぽのテーブルが表示されます。
ここに.csvファイルをインポートして中身を入れます。
[Import]をクリックします。
事前に作っておいた.csvファイルを選択します。
対象の小物と置き場所をここで決めます。
インポートする項目が確認されます。
[Insert]をクリックします。
データが入ります。
TableStorageの設定はこれでOKです。
ちょっと補足
.csvファイルの用意について。
.csvファイルがどんなものかいまいちわからなかったので
最初はMicrosoft Azure Storage Explorerから直接テーブルに適当な値を入れて、
Exportして.csvファイルを手に入れました。
それをちょっと改変してImportさせました。
PartitionKeyとRowKeyが必須項目ですが、項目さえあればよくて空欄でもインポート自体はできます。
Excelファイルからデータをインポート、エクスポートができるのはかなり助かります。
AzureFunctionsの準備
今回の動作の本体になるAzureFunctionsの設定をします。
コード自体はGitHubを参照ください。
TableStorageの読み込みが、Microsoftの公式ドキュメントを参照してもなかなかうまくいかず苦戦しました。
(書き込みはドキュメント通りにすぐできました。
GitHub - kgnk-hkr/AddressManagement: TableStorage読み取りのためのFunctions
DialogflowとGoogleHomeの設定
GoogleHomeとやり取りをするキーワードの設定をします。
この辺りは過去記事と重複するので詳細は省きます。
Google HomeとAzure Functionsを連携させる - オンプレ系インフラエンジニアがAzureを勉強する
Entitiesは[items],[where]の二種類。
Intentsは問いかけのテンプレートを登録します。
今回は追加で終了の文言を追加してみたのでそこだけ追記します。
[finish]というIntentsを作ります。
終わりにするときの言葉を登録します。
今回は「ありがとう」です。
[Responses]に終了の時にGoogleHomeが言う言葉を設定します。
今回は「どういたしまして」です。
[Fulfillment]は何も設定しません。
あとはAzureFunctionsのURLを登録して完成です!
デモ
シミュレーターで実行してみるとこんな感じです。やったー。
これで何をどこにしまうか決められますね!
決めた場所に片づけられればあわあわと探すこともなくなるはず…
改善点
- 今は読み込みしかできないので、書き込みもできるようにして置き場所を変えたときに情報を音声でアップデートできるようにしたいです。
- 逆引きができるようにしたいです。
- コードがごりごりの力業のようになっているのでもう少しスマートにしたいです。
参考サイト様
Azure Functions における Azure Table Storage のバインド | Microsoft Docs
Google HomeにRSSを読み上げさせよう:完成編 (1/3):特集:Google Homeプログラミングを始めよう - @IT