Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@kent3515

【ブロックチェーン】ゼロ知識の人がSAP Cloud Platform上のブロックチェーンサービスを体験する方法

More than 1 year has passed since last update.

はじめに

SAP Advent Calendar 2019 の12月4日の記事として投稿しています。

対象
・SAP界隈の人(SAP Cloud Platformを触ったことがあると良い)
・経験や知識は無いけど、取り敢えずブロックチェーンに触れてみたい人

この記事で書かれていること
今回は「ブロックチェーンとは?」「Hyperledger Fabricって何?」についてはほとんど触れていません。

正直、ブロックチェーンは手を付けるまでのハードルが非常に高いと思います。
仕組みを理解するにも、その仕組のメリットを理解するにも時間が掛かるからです。
そして取り敢えず触ってみようにも、必ずと言って良いほど環境構築の過程で一度は躓いてしまいます。

本記事ではまず、「SAP Cloud Platform」のブロックチェーンサービス(BaaS)を利用することで、本来は自力で行わなければならない環境構築をすっ飛ばし、兎にも角にもまず「ブロックチェーンに触れてみよう」というところにフォーカスしています。

最終的には以下のようなアプリケーションを動作させ、アプリケーションから登録されたブロックチェーン上のデータをGUIから確認するところまでを解説していこうと思います。
アプリケーションは既にサンプルとして用意されているので、ノンコーディングでブロックチェーンを体感することができます。
スクリーンショット 2019-12-04 22.17.21.png
スクリーンショット 2019-12-04 22.19.41.png

ブロックチェーン基盤は正直何でも良いのですが、今回は国内でも良く耳にする「Hyperledger Fabric(以下、HLF)」を取り上げてみたいと思います。

HLFについて詳しく学びたい方は、以下のサイトがおすすめです。
・Hyperledger Fabric 入門, 第 1 回「基本的な構成」
https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-1/

少し長くなりますが、興味ある方は是非読んでみて下さい。

SAP Cloud Platform上のブロックチェーンサービスを試してみる

1.トライアル環境からHLFサービスプランを確認する

まずはSAP Cloud Platform(CF版)のトライアル環境を準備しましょう。
今回使うHLFサービスは、現状AWSでのみ使えるということで、リージョンはアメリカ東海岸(VA)を選択しました。

最初にクォータから2つのHLFサービスプランを確認します。
スクリーンショット 2019-12-04 20.30.49.png
大まかなサービスプランの概要は以下になります。
・dev:ノード、チャネル※の作成などが可能
・channel:チャネルに所属するノードに対して、チェーンコードのデプロイ・管理などが可能
※チャネルとは、ノード(参加者)をまとめるグループのようなもの。同じチャネルに所属するノードには同じルール(チェーンコード)が適用されます。

2.領域を作成する

「dev」「channel」それぞれのサービスプランに対して領域を作成します。

(1)devサービスプラン用の領域を作成する

ここでは「nodes」という領域名を付けています。
この領域でノードとチャネルを作成します。
ノードとはブロックチェーンネットワークの1構成要素のことで、「参加者」くらいに考えておけば良いでしょう。

(2)channelサービスプラン用の領域を作成する

ここでは「hlf-apps」という領域名を付けています。
この領域で、該当チャネルの各ノードに対してチェーンコード※をデプロイします。
アプリケーションのデプロイも行うことができます。
※スマートコントラクトと大体同じ意味。ブロックチェーンネットワーク内のルールのこと。平たく言うとビジネスロジック。

このように作成できました。
スクリーンショット 2019-12-04 21.11.19.png

3.ノードを作成する

先程作成した「nodes」領域に入ります。
ノードを作成するために、まずはHLFのDevサービスインスタンスを作成しましょう。
サービスマーケットプレイスから「Hyperledger Fabric」を検索して選択します。
スクリーンショット 2019-12-04 21.03.45.png
「インスタンス」メニューから「新規インスタンス」を押下し、サービスプランでは「dev」を選択します。
オプションのパラメータ指定、アプリケーション割当は何も設定せずに、ノード名を適当につければ作成完了です。
スクリーンショット 2019-12-04 21.19.45.png
インスタンスの中を覗いて、ダッシュボードを開いてみましょう。
スクリーンショット 2019-12-04 21.23.18.png
それっぽい画面が表示されたと思います。
componentに表示されている「Orderer」「Peer」「CouchDB」などのワードは、聞いたことがある人もいるでしょう。

これで1つノードを作成することができました。
今回はチェーンコードを動かすことが目的なので、ノードは1つで十分でしょう。

4.チャネルを作成する

ダッシュボードの「Channels」メニューから作成できます。
当然、ノードを1つしか作成してないので、Channelに含めるPeerの数も1つしか表示されません。
スクリーンショット 2019-12-04 21.37.29.png
チャネルが作成できたら、チャネルにアクセスするためのサービスキーを生成します。
スクリーンショット 2019-12-04 21.44.25.png
スクリーンショット 2019-12-04 21.44.38.png

これでサービスキーの生成は完了です。
サービスキーは、次のステップで作成する「channel」サービスインスタンスと、先ほど作成したチャネルを紐付けるために使用します。

5.channelサービスインスタンスを作成する

今度はchannelサービスプラン用の領域「hlf-apps」に入ります。
さっきと同じ要領でサービスマーケットプレイスからHLFサービスを選択し、インスタンスを作成します。
※今度は「channel」プランを選択することに注意して下さい。
スクリーンショット 2019-12-04 21.51.38.png
パラメータ指定で先程生成したチャネルのサービスキーを貼り付けて下さい。
サービスキー入れるやつ.png
インスタンスの作成が終わりました。
スクリーンショット 2019-12-04 21.54.41.png
先程と同じようにインスタンスを選択して、ダッシュボードにアクセスします。
先程サービスキーを指定したチャネルに紐付いてることが確認できます。
スクリーンショット 2019-12-04 21.58.32.png

6.サンプルチェーンコードを動かしてみる

ここまで来れば、後少しです。
ダッシュボード「Chaincode」メニュー > 「Example Chaincodes」
スクリーンショット 2019-12-04 22.00.11.png
「Hello World」を選択します。
スクリーンショット 2019-12-04 22.01.31.png
「Deploy Chaincode」で確定。

これでサービスで既に用意されているサンプルのチェーンコードを試せるようになりました。
早速、チェーンコードを動かしてみましょう。
スクリーンショット 2019-12-04 22.04.12.png

スクリーンショット 2019-12-04 22.05.33.png
はい。ここまで来れば、後はAPIを叩くだけですね。
サンプルチェーンコードの中身は2つのメソッド(登録・取得)です。
それをデプロイすることでREST APIとして使用することができるようになったということです。

POST:IDをキーにメッセージを登録する
GET:IDをもとにメッセージを取得する

スクリーンショット 2019-12-04 22.07.40.png
登録しました。
スクリーンショット 2019-12-04 22.08.59.png
取得できました。
ここで、ダッシュボードの「Explore」メニューを見てみましょう。
スクリーンショット 2019-12-04 22.10.58.png
ブロックチェーンっぽさが少し滲み出ていませんか。
チェーンコードにより登録されたメッセージの履歴は「ブロック」として繋がれて行き、過去の分まで遡ることができます。
そして、このブロックはPOSTで登録処理を行うたびにどんどん増えていきます。(通常、1トランザクションで1Blockということはあまり無いように思いますが。)

7.サンプルアプリケーションを動かしてみる

いよいよ最後です。
ダッシュボード「Chaincode」メニュー > 「Example Application」
サンプルとして車の走行距離をブロックチェーン上で読み書きするアプリケーションが用意されているようです。
スクリーンショット 2019-12-04 22.11.56.png
デプロイ後、URLが表示されるのでアクセスします。
スクリーンショット 2019-12-04 22.14.48.png
はい。後は先程と同じですね。
スクリーンショット 2019-12-04 22.17.21.png
ブロックももちろん追加されていきます。
スクリーンショット 2019-12-04 22.16.30.png

これでSAP Cloud Platform上のブロックチェーンサービスの体験は終了です。
ここではサンプルアプリケーションを使用しましたが、もちろん自前のチェーンコードをデプロイすることも可能です。
Go言語とチェーンコードのお作法(Init,Invoke関数など)をある程度抑えていれば、意外とスムーズに開発ができるはずなので、興味ある方は試してみてはいかがでしょうか。

おわりに

もはや幻滅期に入ったブロックチェーン。
一向に実用化が進まない現実を見て、しばらく興味が離れていた人も多いのではないでしょうか。

しかし、きっと数年後(もっと先かも知れません)ブロックチェーンが当たり前に使われる場面は出てくると思っています。
ブロックチェーンの本質は「技術」ではない。
既存業務の置き換え検討や、RDBとの比較など、いくらやっても大して意味を成さないと思います。

ブロックチェーンに関して、こんな言葉を聞いたことがあります。

ブロックチェーンは、新しい星を見つけてそこに自分たちだけの国をつくる、そんなイメージを具現化する手段だ。

もしこれが本当だとしたら、ワクワクしますよね。

それでは。

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kent3515
SAP Leonardo関連の技術要素を中心に投稿します。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?