VScodeのAzureFunctions拡張機能を使って、サーバレスでPython関数を実行してみた

はじめに

HTTPリクエストに応答するPython関数を、VSCodeを利用して作成します。
作成した関数をローカル環境でテストした後、Azure Functionsのサーバレス環境にデプロイして、HTTPリクエストができるかどうか試してみます。

概要

Azure Functionsとは、Microsoft Azureのサービスのひとつで、
Web APIをとても簡単に作れるフレームワークです。

こちらの記事がとても詳しく解説されています。

Azure Functionsでサーバーレスアーキテクチャが何かを理解する:
https://qiita.com/yuhattor/items/f7b2aec5211951dd7622
Azure公式ドキュメント:
https://azure.microsoft.com/ja-jp/services/functions/

ゴール

  • Azure Functions環境をセットアップ
  • Python関数作成
  • ローカル環境で関数を実行
  • Azureにデプロイ

こちらの4項目についてやっていきたいと思います!

1. Azure Functions環境をセットアップ

まず、以下の環境が必要になります。

  • Azureアカウントの作成

こちらから作成できます。

  • Azure Functions Core Tools のインストール

こちらを参考にして Azure Functions Core Tools をインストールします。

  • Pythonをインストールします。

※Azure Functions Core Tools で Python3.9 がプレビューになっているので今回は Python3.8.9 をインストールしています。

  • VSCodeをインストールします。
  • VSCodeにPython拡張機能と、Azure Functions拡張機能をインストールしてください。

上記セットアップが完了しましたら、さっそくPython関数を作成していきます!

2. Python関数作成

セットアップがすべて完了したなら、Python関数を作成していきます。

ディレクトリ作成

  • コマンドプロンプトを起動し、次のコマンドを実行してプロジェクトとローカルのGitリポジトリを作成します。
  • プロジェクト名を入力すると、そのプロジェクト名のフォルダの作成と初期化を実行します。 プロジェクト名がすでにある場合は、フォルダの中身を初期化します。
[crayon-60988db30420e052001630/]
  • ランタイムを選択します。
[crayon-60988db30421a340139535/]
  • 今回はPythonを選択します。 上/下方向キーを使用してPythonを選択し、Enter キーを押します。 終わったらVSCodeに移ります。

VSCodeで関数作成

  1. アクティビティバーのAzureアイコンをクリックし、FUNCTION から [Create New Project] を選択します。
  2. 今回作成する Python関数をどのディレクトリに格納する / 新規ディレクトリを作成するか選択します。今回はコマンドプロンプトから作成した MyFunctionProj のディレクトリを選択しました。
    image.png
  3. 今回利用する言語、Pythonを選択します。Python以外にもC#、Java、TypeScriptなどにも対応しているようです。
    image.png
  4. プロジェクトのテンプレートを選択します。今回はHTTPリクエストの応答をやりたいので HTTP Trigger を選択します。
    その他にも、 Azure Blob Storage Trigger、Azure Queue Storage Trigger などが選択できます。
    image.png
  5. 関数の名前を決めます。
    image.png
  6. この関数の権限を決めます。
    今回は Anonymous を選択します。
    すべてのユーザーが関数のエンドポイントを呼び出すことができるようになります。
    image.png
  7. 関数作成が終わると、左のメニューバーのAzureアイコンから
    作成した関数のフォルダが見られるようになります。
    (赤枠で囲った部分)
    image.png

3. ローカル環境で関数を実行

Azure へのサインイン

作成したPython関数を発行するにはAzureにサインインが必要になります。
Azureのアカウントにサインインすると、サイドバーにアカウントとサブスクリプションが表示されます。
image.png

Azureに作成したコードをデプロイ

Azure上に作成したPython関数をデプロイします。
下記画像の赤枠部分をクリックします。
image.png

  1. アカウントにサインインしていると、サブスクリプションが表示されます。
    今回使用するサブスクリプションを選択します。
    image.png
  2. デプロイ名を決めます。
    image.png
  3. 使用するランタイムを決めます。
    今回はPython3.8を使用します。
    image.png
  4. 作成したPython関数をデプロイするリージョンを決めます。
    基本的に一番近いリージョンを選択するので今回は東日本を選択します。
    image.png
  5. デプロイが完了するとサイドバーに表示されるようになります。
    image.png

関数の実行

作成した関数を F5 キーで呼び出し / 実行→デバック をクリックすると、
ターミナル画面に関数の実行が表示されます。
image.png

[crayon-60988db30422c112831311/]

URLがターミナルに表示されます。
URLを開いて以下の画面が表示されたら成功です!
image.png

Azure上で作成したPython関数が登録されているかチェック

Azure portal上でコードが登録されているかチェックします。

Azure portalにログインし、関数アプリをクリック
登録されていると以下の画面が表示されます。
image.png

さいごに

今回VSCodeのAzure Functions拡張機能を使ってみて、簡単に関数が実行できました。
サーバの構築や保守管理なしでコードのビルド・デバッグ・デプロイができるのは楽ですね。
自動スケーリングや決まった時間にコードを処理するバッチ処理の機能なども備わっているので効率よく開発できるのが、プログラマー的に便利だなと思いました。

参考HP

Azure公式ドキュメント
https://docs.microsoft.com/ja-jp/azure/azure-functions/create-first-function-vs-code-python

https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-run-local?tabs=windows%2Ccsharp%2Cbash#install-the-azure-functions-core-tools


Live Share Extension Packの始め方

はじめに

Live Share Extension Packは、VScodeで複数人で共同編集(コード編集・デバック)ができる拡張機能です。リモートワークでの使用はもちろん、エラーの修正を複数人でフィードバックしながら行う際にも有効です。

Live Share Extension Packに含まれる拡張機能は以下になります。

拡張機能 概要
Live Share 使用しているプログラミング言語や作成しているアプリの種類に関係なく、他のユーザーとリアルタイムで共同で編集・デバックを行うことができます
Live Share Audio 別のツールやサービスを使用せず、VScode内から直接音声通話をすることができます

料金は無料なので、VScodeをインストールした際には最初に入れておくのが良いかもしれません。

ゴール

今回はLive Share Extension Packを導入し、実際に使用するところまで行いたいと思います。

手順

手順はざっくり以下の3つです。

1.インストールする
2. 設定
3. 共同編集

1. インストールする

Live Share Extension Pack

上記のリンクをクリックすると以下の画面が表示されますので、インストールをクリック。

2021-04-23_13h46_40.png

VScode内に下記のアイコンが表示されれば正常に完了しています。

2021-04-23_13h55_57.png

2.設定

Live Share Extension Packを使用するには、アカウントの設定が必要になります。

先ほどのLive Share Extension Packアイコン(画面左)をクリック。
セッション詳細の項目が出てきます。

2021-04-23_14h05_36.png

共有(読み取り/書き込み)をクリックすると、画面上部に「Sign in するアカウントを選択してください」と表示されます。

2021-04-23_14h17_06.png

アカウントは、「Microsoftアカウント」または「GitHubアカウント」の2つから選べるのでお好きな方をお選びください。
(筆者はMicrosoftアカウントを使用します)

2021-04-23_14h23_35.png

アカウントの選択画面に移ります。(MicrosoftならMicrosoft、GitならGit)

2021-04-23_14h24_14.png

下記の画面が表示されればアカウントの設定は完了です。

2021-04-23_14h24_36.png

3. 共同編集

それでは、実際に共同編集を行ってみます。
まずは、編集を一緒にしたい方に招待を送る必要があります。

先ほどのLive Share Extension Packアイコン(画面左)をクリック。
セッション詳細の項目が出てきます。

2021-04-23_14h05_36.png

共有を選択すると今度は共有の招待URLが発行されます
※画面右下に下記が表示されていれば発行されています。

2021-04-23_14h32_27.png

後は発行されたURLをお相手に送れば完了です。

受け取り側はURLをクリックすると以下の画面に移ります。

MicrosoftTeams-image.png

「Live Share for VS codeを開く」をクリック。

MicrosoftTeams-image (1).png

共同編集可能なVScodeに移行しました!
こちらで全ての準備が完了です。

4.便利な機能

コメント

コメントは共有されたVScode内で行えるチャット機能です。
リアルタイムでチャットが可能なので、編集していても他のチャットサービスを使う必要がありませんね!!

2021-04-23_16h43_20.png

参加者をフォローする

共同編集に参加したゲストは、何もしなければホストがフォーカスしているウィンドウに自動的に切り替わり、ホストのカーソル位置や入力を許可できます。
特定の誰かをフォローしたい場合は、Live Share ビューの「Participants」からユーザーを選択し、〇アイコンをクリックするか、コンテキストメニュー(右クリックで表示)の「参加者をフォロー」をクリックしてください。

2021-04-23_16h51_50.png

参加者との音声通話

「Live Share Audio」を使用すると、メンバー同士で会話が可能です。

Live Share ビューの「Start audio call」を選択することで、音声通話の参加や開始が可能になります。

2021-04-23_17h03_37.png

コラボレーションセッションの退席・終了

共同編集を終了したい場合は、Live Share ビューのセッション詳細の書きアイコンをクリックします。

2021-04-23_17h09_19.png

さいごに

実際に使ってみると便利な拡張機能というのが理解いただけるかと思います!

・作業を分担したいとき
・ペアプロをしたいとき
・編集しながらチャットでやり取りしたいとき

などなど活躍する場面は多いと考えられます。
ぜひ、ご活用ください。


【実機あり】MRTK ver2.6.1 の Example を一通り試してみた 2

はじめに

前回の続きです。
実機でないと確認できない部分をまとめました。

MRTK ver2.6.1 の Example 実機なしで確認できない部分を実機で行いました。

環境

  • Windows 10 Enterprise
  • Unity 2019.4.1f1
  • MRTK 2.6.1

Boundary

BoundaryVisualization

VR用の機能です。
プレイエリアの可視化ができるようです。

ハンドトラッキング

HandMenu

LeapMotionHandTracing

Leap Motion Controller が必要です。
持っていないので試せませんでした。

PulseShader

PulseShaderHandMesh

ハンドメッシュをパルスで確認できます。
FPSが下がって動画が取れなかったです。、、、

ReadingMode

Solvers

SurfaceMagnetismSpatialAwareness

SpatialAwareness

SpatialAwarenessMesh


【実機なしで出来る】MRTK ver2.6.1 の Example を一通り試してみた

はじめに

MRTK ver2.6.1 の Example の実機なしで出来る部分をまとめました。
続き
https://qiita.com/h_koya/items/b5924b030b15ce496f3e

環境

  • Windows 10 Enterprise
  • Unity 2019.4.1f1
  • MRTK 2.6.1

Audio

AudioLoFiEffect

AudioOcclusion

Dianostics

アイトラッキング

Target Selection

Navigation

TargetPositioning

Visualizer

Gltf

GLB-Loading

Gltf-Loading

上と同じ感じでGltfを表示できます。
StreamingAssets が必要です。

ハンドコーチ

ハンドトラッキング

HandInteraction

HandInteractionGestureEvent

HandInterasctionRecordArticulatedHandPose

HandInteractionTouchables

NearMenu

Input

Dictation

DisablePointers

InputActions

InputData

PointerResult

PrimaryPointer

SpeachInput

HandJointCharser

PulseShader

PulseShaderSpatialMesh

ScrollingObjectCollection

Solvers

DirectionalIndicator

FollowSolver

Solver

TapToPlace

StandardShader

Clipping

ClippingInstanced

HoverLight

MaterialGellery

Outline

StandardMaterialComparison

StandardMaterials

Utilities

InspectorFields

[InspectorField]属性の説明をしているシーンです。
この属性をつけるとインスペクターから値を編集できるようになります。
[SerializeField]を便利にした感じです。

MixedRealityCapability

プラットフォームとデータプロバイダーによって提供されている複合現実機能の状況が表示されます。


HoloLensマルチユーザーチュートリアルをやりました

はじめに

HoloLens2のマルチユーザー機能のチュートリアルをやりました。

実機がない環境だったのでAzure Spatial Anchorsは行っていません。

開発環境

  • Windows 10 Enterprise
  • Unity 2019.4.1f1
  • MRTK 2.5.3
  • PUN 2 Free 2.29

1章 はじめに

環境設定等を行います。
Azure Spatial Anchors は今回使用しないのでimportしませんでした。

2章 Photon Unity Networking の設定

ここではPhoton2を導入します。
チュートリアル通りに行うことで問題なく導入することができました。

3章 複数のユーザーの接続

この章では複数ユーザーの場所を同期します。
チュートリアル通りに行うことでユーザーの同期ができました。

HierarchyViewの説明

SharedPlayground

GenericNetworkManager.cs で ゲーム開始時にPhotonServerに接続する関数を呼び出しています。

NetworkLobby

PhotonLobby.cs にコールバック用の関数が定義されており、
接続成功時にランダムなRoomに入室するように設定されています。

NetworkRoom

PhotonRoom.cs ゲーム開始時にプレーヤーを表すGameObjectを作成し、入室時にそれを共有しています。

ドキュメント
https://doc-api.photonengine.com/ja-jp/pun/v2/index.html

4章 複数のユーザーとオブジェクトの移動を共有する

この章ではユーザーに加えて初級チュートリアルで作ったプロジェクトの共有を行います。

5章 Azure Spatial Anchors の共有エクスペリエンスへの統合

保留


【実機なしでも出来る】HoloLens 2 チュートリアル の Azure Cloud Services やってみた

はじめに

HoloLens2のAzureCloudServecesチュートリアルをやりました。
ただし、実機がない状態で行ったのでAzure Spatial Anchorsはできていません。

開発環境

  • Windows 10 Enterprise
  • Unity 2019.4.1f1
  • MRTK 2.5.3

1章 HoloLens 2 用の Azure Cloud Services

Unity プロジェクトの作成と準備

チュートリアル通りに行いました。

組み込みの Unity パッケージのインストール

今回 Azure Spatial Anchors は使用しないのでここは飛ばしました。

チュートリアルのアセットのインポート

AzurespatialAnchors SDK のImportは行わず

  • AzureStorageForUnity.unitypackage
  • MRTK.Tutorials.AzureCloudServices.unitypackage

上記二つのImportだけ行いました。
ただ、このままだとエラーが出て先に進めないので以下の作業が必要です。

  1. Project>Assets>MRTK.Tutorials.AzureCloudServices>Scripts>Managers>AnchorManager.cs の削除
  2. Project>Assets>MRTK.Tutorials.AzureCloudServices>Scripts>UX>AnchorCreationController.cs の削除
  3. Project>Assets>MRTK.Tutorials.AzureCloudServices>Scripts>Managers>SceneController.cs 21、28、29行目 のコメントアウト
  4. Project>Assets>MRTK.Tutorials.AzureCloudServices>Scripts>Controller>ObjectEditController.cs 171、172、201行目 のコメントアウト
  5. Project>Assets>MRTK.Tutorials.AzureCloudServices>Scripts>Controller>ObjectCardViewController.cs 115行目、95~109行目(StartFindLocation関数の中身)のコメントアウト

シーンの作成と準備 & シーンの構成

チュートリアル通りに行いました。

プロジェクト ビルド パイプラインを準備する

実機がないので設定だけ行い、ビルドはしていません。

2章 Azure Storage の統合

ここでは1章で作ったシーンの動作確認を行いました。

Azure Storage との通信は DataManager が担ってるようです。
DataManager.cs の理解には下記のドキュメントが役立ちました。
クイックスタート: .NET 用 Azure Blob Storage クライアント ライブラリ v12

3章 Azure Custom Vision の統合

保留

4章 Azure Spatial Anchors の統合

保留

5章 Azure Bot Service の統合

保留


【実機なしでも出来る】HoloLens 2 のチュートリアル 初級レベルの MRTK チュートリアル やってみました

はじめに

MRTKチュートリアルを行ったので情報をまとめました。

間違っている部分があればご指摘いただければ幸いです。

開発環境

  • Windows 10 Enterprise
  • Unity 2019.4.1f1
  • MRTK 2.5.3

1~2章 はじめに&プロジェクトの初期化と最初のアプリケーションの配置

この章ではプロジェクトを始めるための準備+プロジェクト作成を行います。
チュートリアル通りに進めていれば特に引っかかる部分はありませんでした。

3章 プロジェクトの初期化と最初のアプリケーションの配置

プロファイルの設定を行います。
プロファイルは入れ子ツリーで構成要素を保持しており、defaultプロファイルは編集することができません。
なので設定を変えたい場合は一番上の階層のプロファイルから順番に新しいプロファイルを作成しなければいけません。

例: 3-5 空間認識メッシュの可視性を変更する

[crayon-60988db304ec0044568581/]
[crayon-60988db304ecd515142039/]
[crayon-60988db304ed1756430662/]
[crayon-60988db304ed4731174130/]

詳細 Mixed Reality Toolkit プロファイル設定ガイド

4章 シーンへのオブジェクトの配置

オブジェクトの配置、整列を行います。
整列にはGridObjectCollectionを使用します。

GridObjectCollection

子オブジェクトを3D空間に整列する機能を持っています。
MR用アプリではUIを3D空間に配置する必要があるため、このコンポーネントがよく使用されます。
詳細 Object Collection (オブジェクト コレクション)

5章 ソルバーを使用した動的なコンテンツの作成

ソルバーを使用して視点誘導、オブジェクトの操作を実装します。
視点誘導にはDirectionalIndicator、オブジェクトの操作にはTapToPlaceを使用します。

詳細 Solver

DirectionalIndicator

追跡対象に設定したオブジェクトの方向を向くようにGameObjectの回転と位置を自動で調整してくれます。
ViewOffsetプロパティで追跡対象オブジェクトと視点がどれくらい離れたら誘導を表示するのかを設定することができます。
詳細 DirectionalIndicator

TapToPlace

オブジェクトを3D空間にそって操作できるようになります。
On Placing Started() はオブジェクトが選択されたときに登録された関数を呼び出します。
SurfaceNormalOffsetプロパティはオブジェクトを3D空間上に配置する場合の、地表とオブジェクトの距離を設定することができます。
詳細 Tap To Place

6章 ユーザー インターフェイスの作成

3D空間上で固定されたボタン、ユーザーに追従するメニュー、ヒントを作成します。

ボタンにはGridObjectCollectionとInteractableを使用します。

Interactable

オブジェクトに対する様々な入力に対してイベントを設定できます。
OnClick() はポインターでクリックされたときに登録している関数を実行します。
詳細 Interactable

追従するメニューの作成にはRadialViewを使用します

RadialView

追跡対象に設定したオブジェクトに追従します。
詳細 Solver

ヒントにはToolTipSpawnerとTooltipPrefabを使用します。

ToolTipSpawner

タップまたはフォーカスで設定したPrefabを作成します。
詳細 ToolTip ToolTipSpawner

7章 3D オブジェクトの操作

3Dオブジェクトの操作、3D領域の操作を行います。
3Dオブジェクトの操作にはNearInteractionGrabbable、Object Manipulatorを使用します。

NearInteractionGrabbable

コンポーネントしたオブジェクトを掴めるようにします。
詳細 NearInteractionGrabbable

Object Manipulator

片手または両手を使ったオブジェクトの移動、スケール変更、回転を可能にします。
Two Handed Manipulation Typeプロパティで両手操作の移動、スケール、回転の有効・無効を切り替えることができます。
多関節ハンド入力に反応するようにするにはNearInteractionGrabbableが必要になります。
詳細 Object Manipulator

3D領域の操作にはBoundsControl、NearInteractionGrabbable、Object Manipulatorを使用します。

BoundsControl

対象オブジェクトをボックスで操作できるようにします。
詳細BoundsControl

8章 視線追跡の使用

ラベルに視線が向いている間。フォントサイズを大きくする機能を実装します。
EyeTrackingTargetを使用します。

EyeTrackingTarget

オブジェクトに視線が向いた時のイベントを設定できます。
On Look At Start () は視線が向いたときに登録している関数を呼び出します。
On Look Away () は視線が外れたときに登録している関数を呼び出します。
詳細 EyeTrackingTarget

9章 音声コマンドの使用

音声入力でメニューが使用できるようにします。
MixedRealityToolkitを使用して音声コマンドを作成し、SpeechInputHandlerでイベントを設定します。
詳細 Speech

まとめ

初級チュートリアルを行うことでMRTKの基本的な操作を学ぶことができました。
これから他のチュートリアルも進めていき、知識をより深めていきます。

参考

MRTK チュートリアルの概要 - Mixed Reality

What is the Mixed Reality Toolkit | Mixed Reality Toolkit Documentatio...

https://hololabinc.github.io


【Azure Cognitive Searchで始めるTwitter分析】Part3. Power BI レポートの作成

はじめに

この記事はPart1. 検索インデックスの作成Part2. デモアプリの作成 の続きです。
まだ見ていない方は、遡って見ていただければと思います。

↓ 今回は下図のようなPower BI レポートの作成手順についてまとめていきます。
image.png
image.png

手順

「スキルセット」を開きます。
image.png

「ナレッジストア」タブを開きます。
「Power BIテンプレートを取得する」からテンプレートをダウンロードすることができます。
「Power BIパラメーターのコピー」の情報は、後ほどテンプレートに接続する際に使用します。

image.png

Power BI Desktopを開きます。
「ファイル」→「インポート」→「Power BI テンプレート」をクリックし、ダウンロードしたテンプレートを選択し開きます。

image.png

先程ポータル上で確認した「Power BIパラメーターのコピー」の情報を入力後、「作成」を押します。
image.png

アクセスキーを要求された場合は以下の手順でキーを取得し、入力します。
ストレージアカウントを開き、使っているストレージアカウントに移動→「アクセスキー」→「キーの表示」で表示されたkey1を入力します。
image.png

しばらく待つとレポートが表示されます!

image.png
image.png
image.png

おわりに

今回はPower BIテンプレートをナレッジストアに接続し、ツイートの分析結果を可視化しました。
Part1. 検索インデックスの作成 で分析した結果が、多種多様なビジュアルで見られて面白かったです。
これを Part2. デモアプリの作成 で作成したアプリと組み合わせるなどすると、より高度な検索アプリが出来そうです。

参考リンク

https://docs.microsoft.com/ja-jp/azure/search/knowledge-store-connect-power-bi


【Azure Cognitive Searchで始めるTwitter分析】Part2. デモアプリの作成

はじめに

この記事はPart1. 検索インデックスの作成 の続きです。

今回は下図のようなデモアプリの作成手順についてまとめていきます。
image.png

手順

Azure Portalにログインし Search Service を開いたら、「インデックス」に移動します。

image.png

「デモアプリの作成」を押します。

image.png

「CORSを有効にする」にチェックを入れ、「デモアプリの作成」を押します。

image.png

検索結果の表示をカスタマイズします。

「縮小版」:サムネイル画像を選択します。今回は画像データを使用していないため無視します。
「タイトル」:タイトルを選択します。今回はユーザーネームを使用します。
「説明」:タイトルの下に表示するものを選択します。今回はツイート本文を使用します。

image.png

インデックス作成時、「フィルター可能」「ファセット可能」の両方にチェックを入れた項目がデフォルトでサイドバーに構成されます。
「デモアプリの作成」をクリックすると、HTMLファイルが生成されます。

image.png

HTMLファイルを開くとデモアプリの初期画面が表示されます。
上部の検索ボタンをクリックするとサイドバーと一覧が表示されます。

サイドバーで絞り込み検索ができます。
image.png

次に、「緊急事態宣言」で検索してみます。
検索するキーワードを上部の検索ボックスに入力し、検索ボタンをクリックします。
下図のように、表示される結果が変わります。
512ツイート中18個に「緊急事態宣言」というキーワードが含まれていることが分かります。

image.png

おわりに

今回はAzure Cognitive Search を使用して、デモアプリを作ってみました。
次回はPower BI テンプレートを使用し、ナレッジストアを接続して感情分析・キーフレーズ抽出などの分析結果を可視化していきます。
数ステップでとてもグラフィカルなレポートが作成できますので、宜しければそちらも併せてご覧ください。

次回:Part3. Power BI レポートの作成

参考リンク

https://docs.microsoft.com/ja-jp/azure/search/search-create-app-portal


【Azure Cognitive Searchで始めるTwitter分析】Part1. 検索インデックスの作成

構成

全部で3部構成にする予定です。

Part.1
検索インデックスの作成 (今回)

Port.2
デモアプリの作成(次回)

Port.3
Power BI 1 レポートの作成(次々回)

はじめに

News ZERO さんがTwitterで新型コロナ「陽性」の経験談を募集されており、使われたハッシュタグはトレンド入りしました。

そこで今回は、「#感染したから伝えたい」を含むツイートを約500件取得し、Azure Cognitive Search で人物・感情・キーフレーズなどを抽出 → デモアプリを作成→Power BI テンプレートでワードクラウドの表示をさせてみました。

↓ こんな感じのワードクラウドが簡単に得られます。
image.png
image.png

Azure Cognitive Search とは

Azure Cognitive Search (旧称 Azure Search)は、Web、モバイル、エンタープライズの各アプリケーション内のプライベートな異種コンテンツに対する豊富な検索機能を提供する、クラウド検索サービスです。
公式ドキュメント:https://docs.microsoft.com/ja-jp/azure/search/search-what-is-azure-search

今回はテキストデータのみ使いますが、Cognitive Searchでは画像、映像、音声などの非構造化データも検索可能です。
また、Cognitive ServicesやPower BIとの連携も容易です。

手順

ざっくりと以下の5つの手順でやっていきます。

  1. Twitter API を使用してデータを用意する
  2. BLOB ストレージにツイートデータアップロード
  3. Cognitive Search で検索インデックスの作成
  4. デモアプリの作成(Part2. デモアプリの作成 で説明します。)
  5. Power BI テンプレートでワードクラウド表示(Part3. Power BI レポートの作成 で説明します。)

1. Twitter API を使用してデータを用意する

1-1. Twitter APIの利用申請→APIトークン取得

Developerサイトにて英語で申請→うまくいけば1日で使えるようになります。
申請内容が不十分だと、メールが来て改めてAPIの使用用途を聞かれます。

APIの申請方法、APIキーの取得方法については、以下リンクが参考になるかと思います。

参考リンク:https://www.itti.jp/web-direction/how-to-apply-for-twitter-api/

1-2. Pythonで 「#感染したから伝えたい」 を含むツイートを収集

以下の記事を参考にし、1月13日~1月21日までの 「#感染したから伝えたい」 のハッシュタグを含むツイートを約500件集め、CSVファイルに出力しました。

参考リンク:https://qiita.com/nomotom/items/de1bc00ef350edc21624

2. BLOB ストレージにCSVファイルをアップロード

Azure Blob Storageでストレージアカウントを作成→コンテナー作成→CSVファイルのアップロードをします。

まずストレージアカウントを作成します。

image.png
image.png

次にコンテナーを作成します。

image.png
image.png

最後に先程用意したCSVファイルをコンテナーにアップロードします。

image.png
image.png
image.png

これでデータの準備ができました。

3. Cognitive Search で検索インデックスの作成

3-1. Cognitive Search リソースの作成

Azure Portalにログインし、Search Serviceを開きます。
「Search サービスの作成」をクリックします。
スクリーンショット 2021-01-26 14.45.31.png

サブスクリプション~価格レベルまでを設定し、「確認および作成」でリソースを作成します。

価格レベルについての詳細:https://azure.microsoft.com/ja-jp/pricing/details/search/

これらを設定後、「確認および作成」で作成。
スクリーンショット 2021-01-26 14.46.15.png

3-2. インデックス作成

作成したリソースに移動し、「データのインポート」をクリックします。
image.png

3-2-1. データに接続

image.png

データソース:Azure BLOBストレージ
データソース名:任意
抽出されるデータ:コンテンツとメタデータ
解析モード:区切りテキスト
最初の行にヘッダーが含まれています:チェックを入れます。
区切り記号文字:,
接続文字列:「既存の接続を選択します」をクリック→データをアップロードしたコンテナーを選択します。

「次:コグニティブスキルを追加します」で次に進みます。

image.png

3-2-2. スキルの追加

3つの項目「Cognitive Servicesをアタッチする」、「エンリッチメントの追加」、「ナレッジストアへのエンリッチメントの保存」を設定していきます。
それぞれクリックで設定項目が開かれます。

スクリーンショット 2021-01-27 11.52.13.png

「Cognitive Servicesをアタッチする」

「無料」を選択すると、スキル適用できるドキュメント数が20個に限定されます。
スクリーンショット 2021-01-27 11.52.16.png

※Cognitive Servicesリソースを新規で作成する場合
価格レベルはS0を使うことができます。
スクリーンショット 2021-01-27 11.37.20.png
スクリーンショット 2021-01-27 11.37.27.png
数秒待ちます。
スクリーンショット 2021-01-27 11.37.37.png

「エンリッチメントの追加」

スキルセット名:任意
ソースデータフィールド:text(感情分析などのスキルを適応させる列を指定します。今回はツイート本文の列である"text"を指定しています。)
エンリッチメントの粒度レベル:ページ(5000文字チャンク)

必要なスキルにチェックを入れます。
image.png

「ナレッジストアへのエンリッチメントの保存」を開きます。

これを設定することにより Power BI との連携が可能になります。
ストレージアカウント接続文字列:「規定の接続を選択します」をクリックします。
image.png

ナレッジストア用のコンテナーを選択します。
コンテナーを用意していない場合は、「+コンテナー」を押して作成します。
image.png

設定ができたら「次:対象インデックスをカスタマイズします」で次に進みます。

3-2-3. インデックスをカスタマイズ

インデックス名:任意
キー:AzureSearch_DocumentKey

フィールドには、データ型と属性があります。 上部に並んだチェック ボックスは、フィールドがどのように使用されるかを制御する "インデックスの属性" です。

引用元:https://docs.microsoft.com/ja-jp/azure/search/search-get-started-portal

取得可能:検索結果で取得したい項目かどうか
フィルター可能、ソート可能、ファセット可能:フィルタリング、並べ替え、ファセットのナビゲーション構造にフィールドを使用するかどうか
検索可能:フルテキスト検索の対象かどうか

アナライザー:

デモアプリのサイドバーに表示させたい項目には、「フィルター可能」「ファセット可能」いずれもチェックを入れます。

「」で次に進みます。

image.png
image.png

3-2-4. インデクサーの作成

インデクサー名:任意
スケジュール:一度

これらを設定し、「送信」でインデクサーが実行されます。

image.png

3-3. 言語設定

このままだと言語設定が英語のままスキルが実行されてしまうため、一旦実行中のインデクサーを止め、言語を設定してからインデクサーを再度実行する必要があります。

「インデクサー」を開きます。
image.png

インデクサーをリセットします。
image.png

「スキルセット」を開きます。
image.png

言語を英語→日本語に変更します。
"@odata.type": "#Microsoft.Skills.Text.SplitSkill" 以外の defaultLanguageを、enからjaに書き替え、「保存」で変更を保存できます。
image.png
image.png
image.png

再度「インデクサー」を開きます。
image.png

インデクサーを再度実行します。
image.png

インデックスが作られました。
512個のツイートで1分少し要しました。

image.png

3-4. 検索エクスプローラーでクエリを実行

インデックスを開きます。
image.png

「検索」をクリックすると、下に検索結果の一覧が表示されます。

image.png

次は簡単な検索クエリを書いて結果をみてみます。
$search=コロナ&$select=created_at,text,sentiment,keyphrases,locations,people
これで”コロナ”を含むツイートを検索し、日時・本文・感情・キーフレーズ・場所・人物 の項目のみ結果に表示させることができます。
image.png

クエリパラメーターの詳細については、以下公式ドキュメントにてご確認いただけます。
https://docs.microsoft.com/ja-jp/azure/search/search-explorer
https://docs.microsoft.com/ja-jp/azure/search/search-query-overview

おわりに

本記事では、データの準備~検索インデックスの作成 までの手順をまとめました。
次回、Part2. デモアプリの作成 で検索アプリを作成し、
Part3. Power BI レポートの作成 で最初に示したワードクラウドなどを表示させていきます。
簡単なステップで試せるものですので、ぜひご覧ください。

次回:Part2. デモアプリの作成

参考リンク

https://docs.microsoft.com/ja-jp/azure/search/search-create-service-portal
https://docs.microsoft.com/ja-jp/azure/search/search-get-started-portal
https://docs.microsoft.com/ja-jp/azure/search/cognitive-search-quickstart-blob
https://docs.microsoft.com/ja-jp/azure/search/knowledge-store-create-portal
https://docs.microsoft.com/ja-jp/azure/search/search-explorer