de:code 2018レポート:新機能「Azure Blockchain Workbench」のデモを披露
AzureやWindows 10上でブロックチェーンアプリを手軽にデプロイ
2018年06月01日 11時00分更新
日本マイクロソフトは2018年5月22日から23日の2日間、都内で開発者向けカンファレンス「de:code 2018」を開催した。本稿ではその中から、「Blockchain WorkbenchとAzureを使った分散アプリケーションの構築」セッションの概要をレポートする。日本マイクロソフト インテリジェントクラウド統括本部 テクノロジーソリューションスペシャリスト 廣瀬一海氏(デプロイ王子)、米マイクロソフト シニアソフトウェアエンジニアのDavid Burela氏、米マイクロソフト プリンシパル エンジニアリング リードのEric Maino氏の3人が登壇した。
「スマートコントラクト」で広がるブロックチェーンの利用シーン
今やブロックチェーンは、国会の予算委員会でも「公文書の保持・管理にブロックチェーンを活用すべき」などと言及されるほどに認知度が高まった。ブロックチェーンは、トランザクション(取り引き)に電子署名(我々が日常的に用いるハンコに類するもの)を付与し、取引記録(台帳)をP2Pネットワークで分散管理する技術だ。P2Pネットワークに参加するすべてのノード(コンピューター)が同じ台帳を保持することで、データが改ざんされていないことを保証する。
仮想通貨の基盤技術として始まったブロックチェーンは、現在、通貨以外の取引にも活用できるテクノロジーへと移行している。仮想通貨のブロックチェーンは1.0、仮想通貨以外に取引に応用できるように進化したブロックチェーンは2.0と位置付けられる。ブロックチェーン2.0は、「本人確認やIDはもちろん、通貨やポイント、購入履歴の担保、医療記録や貴金属の証明など利用シーンは多岐にわたる」(廣瀬氏)。
ブロックチェーン2.0の大きな特徴は、「スマートコントラクト」と呼ばれる仕組みが用意されている点だ。スマートコントラクトは、契約をプログラムで再現し、取引の実行・決済による価値移動を自動化する。つまり、ブロックチェーンにプログラミング実行環境を用意したと捉えると分かりやすい。データベースに詳しい方なら、一連の処理をまとめた手続きにしてRDBMSに保存するストアドプロシージャに類似すると述べるとピンとくるはずだ。
スマートコントラクトにより、例えば、「賃貸物件を借りる際、賃貸契約書を不動産に送付するだけで、契約締結後の書類受取やハウスクリーニングの依頼までも、P2Pネットワーク上で自動化することが可能になる」(廣瀬氏)。
ここに例示したような賃貸契約のワークフローなど、様々な個別ケースでブロックチェーン2.0のスマートコントラクトを使った取引を実行するためには、ケースごとにアプリケーション開発が伴う。ブロックチェーンアプリケーションをWebアプリケーション開発の「3層アーキテクチャ」(利用者にUIを提供するプレゼンテーションレイヤー(第1層)、データを受け取って処理を行うビジネスレイヤー(第2層)、データソースの管理や制御を行うデータレイヤー(第3層)の多層構造でアプリケーションを説明するキーワード)に当てはめてみると、Webやスマートフォンが第1層、スマートコントラクトが第2層、台帳が第3層になる。
同セッションでは、Build 2018で発表された「Azure Blockchain Workbench」を使ってイーサリアムネットワーク向けのブロックチェーンアプリケーションを開発する手順、およびWindows 10環境でVisual Studio Codeを用いてブロックチェーンアプリケーションを開発する手順が披露された。
「Azure Blockchain Workbench」とは
「Azure Blockchain Workbench」は、複数のAzureコンポーネントを組み合わせたソリューションで、ブロックチェーンアプリケーション開発を容易にするツールだ。スマートコントラクトのフレームワークを提供し、ユーザーに割り当てるロール(役割)など実行ワークフローを管理する。「P2Pノードやマイニングノードを起動し、これらのノードを内包している状態ですぐにアプリケーションが開発可能。現状はプレビュー版だが、すべての(ブロックチェーン開発にまつわる)ノウハウを集約していると述べても過言ではない」(廣瀬氏)。
上図に示したのはAzure Blockchain Workbenchのアーキテクチャだ。中央左側にある「Azure Service Bus」は、時間がかかるトランザクションのクッション材として、メッセージのバッファリングや管理を行う。「Azure IoT Hub」や「Azure Event Hub」、「Azure Functions」など各サービス経由のデータ投入が可能で、例えばコントラクト実行時のトリガーを用いたアクションや、Azure Logic Appsによるサービス連携もできるようになっている。「Application Insights」や図にはない「Azure Monitor」で、リソースやアプリケーションのモニタリングを行う。
その下の「Azure Active Directory」で、ユーザーとブロックチェーンのIDを関連付けて管理する。これによって、複数の企業が参加するコンソーシアムブロックチェーンを想定したアプリケーション開発を可能にしている。「Azure Key Vault」はノードキーを格納するために利用し、万が一ハッキングを受けた際も秘密鍵は担保される仕組みだ。
Azure Service Busの左側にあるAPIは、一般的なRESTゲートウェイAPIを指す。コントラクト実行メッセージの投入や、REST APIの記述標準であるSwaggerを使ったWeb/スマートフォン用クライアントコードの自動生成に用いる。DLT Services APIの先にはイーサリアムが存在する。
Azure Service Busを経たデータは、ブロックチェーン(DLT Services API)に格納する前に「Off-Chain DB」「Off-Chain Storage」に格納する仕組みだ。Off-Chain DBの実態はAzure SQL Database、Off-Chain StorageはAzure Storageである。Azure SQL DatabaseとAzure Storageに同じデータを用意しておくことで、データが改変された際のワークフローも定義可能だという。
このように、Azure Blockchain WorkbenchはMicrosoft Azureが供える数々の機能をブロックチェーン用に組み合わせた1つのソリューションだ。
環境準備からアプリケーションのデプロイまで40分程度
Azure Blockchain Workbenchのデモを担当したのは、米マイクロソフトのEric Maino氏。
まず、Azure上でAzure Blockchain Workbenchを有効化(有効化手順はドキュメントを参照してほしい)し、GitHub上で公開中のサンプルコード「Simple Marketplace Sample Application for Azure Blockchain Workbench」を使って、マーケットプレイスの所有者と購入者の間での取引を実現するブロックチェーンアプリケーションを構築。有効化からデプロイまでに要する時間は40分程度である。
出来上がったアプリケーション上で、Maino氏は、各ユーザーにロールを割り当て、あるユーザーが売り出したチケットを別のユーザーが購入する簡単な取引が完結する様子を紹介した。「シンプルなスマートコントラクトと設定ファイルを使えば、ステートマシンでアクションを実行できる。Swagger UIを使用したREST APIでUIのカスタマイズも簡単」(Maino氏)。
Visual Studio Codeを使えばWindows 10でアプリ開発が完結
Visual Studio Codeのデモを担当したのは、米マイクロソフトのDavid Burela氏だ。Windows 10環境のVisual Studio Codeで開発言語「Solidity」を使い、イーサリアムネットワーク向けのブロックチェーンアプリケーションを編集、コンパイルする開発手法を解説した。
まず、開発環境の準備から。初めに、Windows 10でWSL(Windows Subsystem for Linux)を有効にし、LinuxディストリビューションとしてUbuntuをMicrosoft Storeなどから展開する。次に、Solidity、ブロックチェーンアプリケーションの統合開発環境「Truffle」をnpmでインストールする。Solidityは、Visual Studio Codeの拡張機能「EVM Code(Ethereum Virtual Machine Code)」上で実行可能なバイナリを開発する言語だ。このあたりの手順はBurela氏の個人ブログでまとめられているので参照してほしい(リンク1、リンク2、リンク3)。
この開発環境を使って、Burela氏は、Truffleでプロジェクトを作成→プロジェクト作成時に自動生成されたSolidityのサンプルコードをVisual Studio Codeで開く→Visual Studio Code上でコードを編集・コンパイルする、というコーディングの手順をデモンストレーションした。Visual Studio Codeの利用を推奨する理由は、「ターミナル機能を使って、Windows 10上でテンプレートの編集や、WSLのbashを使ったテストなどが完結する」(Burela氏)ためだ。
* * *
Azure Blockchain WorkbenchやVisual Studio Codeを使うと、ブロックチェーンアプリケーションの開発は非常に手軽になる。最後に廣瀬氏は、「(ブロックチェーン2.0の活用は)PoCのフェーズを終えてすでに実用段階にある。今後、半年から1年程度でブロックチェーンアプリケーション開発案件が増加する可能性があるので、今から“ブロックチェーン準備完了”と言える開発者を目指してほしい」と呼びかけた。