1. HOME
  2. ブログ
  3. IT技術
  4. 【後編】Blockchain Data Managerを使ってみた~データ送信編~

【後編】Blockchain Data Managerを使ってみた~データ送信編~

後編~Blockchain Data Managerとは~

「Azure Blockchain Service」は、Azure上でブロックチェーン技術を使うためのプラットフォームです。

「Blockchain Data Manager」は、「Azure Blockchain Service」のトランザクションデータについて、キャプチャ」「変換」「配信」という3つの連続した操作を統合します。

今回は、前回に引き続き、Blockchain Data Managerを使ってみたいと思います!

前編をご覧になってない方は、まずはそちらからお読みください。

こちらの記事もオススメ!

Ⅵ.データベースにデータを送るイベントの設定

ロジックアプリとは

「Azure Logic Apps(ロジックアプリ)」 は、Event Grid の機能拡張アプリです。

ロジックアプリを使用すると、システムとサービスを統合する際に、ビジネスプロセスやワークフローをスケジュールして自動化することができます。

本項では、ロジックアプリにより、Event Grid を Azure Cosomos DBに接続する手順を説明します。

Event Gridについて

「Event Grid」は、Azure Blockchain Service にメンバー追加後、管理者設定およびBlockchain Datamanager とデータベースの設定が終了すると、使用可能になります。

「Event Grid」には、データベースへのイベントトリガーを設定できる様々な機能拡張があり、「Azure Logic Apps」 もその一つです。

「Azure Logic Apps」は、Marketplace から導入できます。

データベースのデータの取得方法を選択し、クエリドキュメント、ストアドプロシージャー、全てのドキュメントを取得、作成、更新、削除出来るイベント設定やトリガー設定ができます。

設定が完了すると、Visual Studio Code の機能拡張からも DB に接続することができるようになります。

空のロジックアプリの追加

Azure Cosmos DBへ接続するため、空のロジックアプリを追加します。

ロジックアプリの作成の詳細については、以下のページも参考にしてください。

【Microsoft Docs:Azure Logic Appsを使用して自動化されたワークフローを作成する】
https://docs.microsoft.com/ja-jp/azure/logic-apps/quickstart-create-first-logic-app-workflow

イベントグリッドトリガーを追加する

全てのロジックアプリは、トリガーから起動されます。

トリガーは Logic Apps デザイナーから、Azure Event Gridトリガーで設定します。

Cosmos DBアクションを追加する

トランザクションごとにドキュメントを作成する Cosmos DB アクションを追加します。

トランザクションメッセージの種類を、パーティションキーとして分類します。

Visual Studio Code の機能拡張「Logic Apps」からも見ることができます。

(1) アクションの追加

(2) API接続の作成

「Ⅴ.Azure Cosmos DBの作成」で生成した、データベースIDとコレクションIDを使用します。

(3) ドキュメント設定

ドキュメント設定を選択し、[動的コンテンツの追加]で式の項目に以下のコードを入力します。

このコードによってメッセージのデータを取得し、IDをタイムスタンプ値に設定できます。

(4) パラメータの追加

[新しいパラメーターの追加]を選択し、[パーティションキーの値]を選択します。

Ⅶ.Event Gridトピックの作成

Azure Event Gridトピックとは、イベント操作でデータベースにデータを送信するための、サブスクリプションエンドポイントを設定する機能です。

この機能を設定することで、「トピックエンドポイント」を「Event Grid トピック」のトップページから確認できるようになります。

Event Grid トピックの作成

[すべてのサービス]ー[すべてのリソース]ー[Event Gridトピック]を検索し、作成します。

Event Grid サブスクリプションの作成

Event Grid サブスクリプションは、データベースにデータを送信するためのイベントハンドラーやエンドポイントを設定する機能です。

(1) イベントサブスクリプションの追加

(2) イベントハンドラーの選択

選択できるイベントハンドラーは、以下の7種類です。

  1. Azure 関数
  2. Web hook
  3. ストレージキュー
  4. Event Hub
  5. ハイブリッド接続
  6. Service Bus キュー
  7. Service Bus トピック

今回は「Relay」を使用したハイブリッド接続を使用します。

(3) ハイブリッド接続の設定

ハイブリッド接続は、Node.js 接続と WebSocket 接続の両方をサポートしています。

今回は Visual Studio Code と NPM で接続確認します。

Ⅷ.データベースへの送信と確認

トランザクションでメッセージを送る

次に、トランザクションをブロックチェーン台帳に送信して、作成した内容をテストします。

手順

設定と確認の流れは、以下のとおりです。

  1. Visual Studio Code で Contract フォルダー内の HelloBlockchain.sol を右クリックします。
  2. [Show Smart Contract Interaction Page] を選択します。
  3. [Contract Action] – [SendRequest] を選択します。
  4. [RequestMessage] に「Hello! Blockchain!」と入力し、[EXECUTE] ボタンをクリックします。
  5. [SendRequest] – [RequestMessage] と [ResponseMessage] – [RequestMessage] が同じになったら送信完了です。
  6. CosmosDB – データエクスプローラーからも確認できます。
  7. Visual Studio Code と Node を接続した後に Azure Blockchain 機能拡張から確認できます。

画面イメージ

Ⅸ.トランザクションデータの確認

イベントが正しく動作しているか、トランザクションデータの確認をします。

今回、以下の3種類の確認方法を試してみます。

  1. CosmosDB 上のデータエクスプローラーで確認する場合
  2. Visual Studio Code で確認する場合
  3. Relay を使用し、Node.js で確認する場合

1.CosmosDB 上のデータエクスプローラーで確認する場合

データエクスプローラー上で確認するには、CosmosDB のデータベースアカウントを開き、左の項目から[データエクスプローラー]を選択します。

2.Visual Studio Code で確認する場合

Visual Studio Code で確認するには、Azure Blockchain 機能拡張から[Connect to Network]を選択し、ノードに接続します。

画面イメージ

3.Relayを使用し、トランザクションデータをNode.jsで確認する場合

「Relay」からのメッセージを送信するために、Node.js コンソールアプリケーションを作成します。

今回は「Relay」の Hybrid 接続を利用したため、Websocket での接続も可能です。

手順は、以下のとおりです。

(1) NPMパッケージの追加

Node のコマンドプロンプトから、以下のコマンドを入力し NPM をインストールしてください。

(2) サーバーアプリケーション(リスナー)の作成

listener.js という名前の JavaScript ファイルを作成し、以下のコードを記述します。

なお、{} 内の値には「Ⅳ.(4)共有アクセスポリシーの作成」を参照し、以下のように設定します。

定数
const nsRelay 名前空間
(Ex. {namespace).servicebus.windows.net)
const pathハイブリッド接続の名前
const keyruleSAS キーの名前
const keySAS キーの値

(3) クライアントアプリケーション(センダー)の作成

sender.js という新しい JavaScript ファイルを作成し、以下のコードを記述します。

(4) サーバアプリケーションの実行

Node.js のコマンドプロンプト上で以下のコマンドを入力し、サーバアプリケーションを実行します。

(5) クライアントアプリケーションの実行

Node.js のコマンドプロンプト上で、以下のコマンドとメッセージを入力し、クライアントアプリケーションを実行します。

(6) 結果確認

サーバアプリケーションコンソールに、クラアントアプリケーションで入力したテキストが出力されることを確認します。

さいごに

Azure Blockchain Datamanager を使用してみていかがでしたか?

強固なセキュリティー設定と安価なコストで、Amazon Wab Services(AWS)と接続ができることが特徴だと思います。

エンタープライズ版らしい、使い勝手の良さが光りますね!

Marketplace のアプリの豊富さや Visual Studio Code との親和性により、Blockchain Developer からも人気があります。

また、ビッグデータを扱うエンタープライズと小規模グループでのアプリケーション開発、その両方に対応できるようになっているので、汎用性もあります。

1ヶ月にかかるコストも、2万円以内で納まりそうなくらい安価なのも嬉しい点ですね。

意外だったのは、ロジックアプリです。

暗号資産のイーサリアムやインスタグラムなどのソーシャルメディアプリと、接続し易い環境を作ることができるのは、ひとつの発見でした。

Azure Blockchain にはトークンも作れる機能もあるということなので、今後、Blockchain アプリを活用をして、色々作ってみたいと思いました。

皆さんもチャレンジしてみてください!

(株)ライトコードは、WEB・アプリ・ゲーム開発に強い「好きを仕事にするエンジニア集団」です。
ブロックチェーン関連のシステム開発依頼・お見積もりはこちらまでお願いします。
また、ブロックチェーンエンジニアを積極採用中です!詳しくはこちらをご覧ください。

※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

関連記事はこちら

こちらの記事もオススメ!

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事