プログラマーですが何か?まだプログラマーですが何か?プログラマーネタとアスリートネタ中心。提供されているマネージド・ブロックチェーン・サービスを使う手順を紹介しています。カードファイルを使ってセットアップしました。今回の後編ではこのインスタンスに実際にビジネスネットワークをデプロイして動かすまでの手順を紹介します。ベータ版であり、今後の仕様変更等により以下の内容は正しい情報ではなくなる可能性もあります。時点での情報であることをご了承ください。Archive)ファイルの準備】まずはデプロイするビジネスネットワークを用意します。Archive)ファイルとして比較的簡単に定義することができるので、今回はこの方法を使います。ファイルをお持ちであれば、そのファイルを使っていただいても構いません。して開発・公開したものです。サンプルアプリケーションが含まれています。簡単に言えば「ブロックチェーン開発の雛形キット」として開発したものです。一連のファイルを手元に用意してください。用のビジネスネットワーク定義ファイルになっています。アプリケーションを動かすために設定する内容を記載しておきます。中でカード名を指定していて、ここで指定したカード名でビジネスネットワークにアクセスできるよう設定されている前提でアプリケーションが作られています。ファイルで定義されています。このファイルを指定してデプロイします。コマンドを順次実行して設定していきます。ファイルを指定してデプロイ)【アクセス用カードファイルの準備とインポート】ここまでの作業が成功すると、ブロックチェーンサービス上でビジネスネットワークが稼働している状態になります。このままでも使えないことはないのですが、一般的には個別のビジネスネットワークにアクセスするための個別のユーザー(カード)を作って利用します。なればデプロイされたビジネスネットワークを使う準備が整ったことになります:【ブロックチェーンアプリケーションの利用】ここまでの準備が整っていればアプリケーションからビジネスネットワークを利用することができます。含まれているので、これを動かしてみましょう。フォルダ内にあります。フォルダ内でアプリケーションを実行するのですが、一部設定項目があります。いうメッセージが表示されます。ファイルをテキストエディタで開きます。値をアプリケーションサーバー名に書き換えて保存してください。サーバーのインタラクティブドキュメントになっているので、実際に動かすことが可能です。一例としていくつかの処理を実行してみましょう。書かれた項目をクリックして展開します。管理ユーザー(admin)のパスワードを生成します。クリックします:実行結果や実行内容が画面下部に表示されます。コマンドで実行する場合のコマンドなども表示されます。いう本文が戻されました。実行コマンドは成功して、このアプリケーションの管理者をブロックチェーン内に作成することができたようです:では作成したユーザーでログインしてみましょう。ログイン処理を行うことができます。ログインパラメータを渡します。実行されて、結果が出力されます。一応期待通りの結果といえます:改めて正しい内容でログインしてみます。実行時に必要になります(実際のアプリケーションではセッションなどに保管して使うことを想定しています)。定義するアプリケーションがデプロイ/実行できることが分かりました。興味があればこれらも使ってみてください。最後に、何回かブロックチェーンに対してトランザクションを実行した後でブロックチェーンサービス側がどのようになっているかをダッシュボードから確認する方法を紹介します。ダッシュボード画面でチャネルメニューを選択すると、利用中のチャネル一覧が表示されますが、その中の「ブロックの高さ」という数値がブロックチェーン上に記録されているブロックの数を表しています(前回の画面ではここは2でしたので、いくつか積み重なっていることがわかります):該当行をクリックして先に進むと、更に詳細な情報を見ることが出来ます。クリックして展開します:「アクション」メニューから「詳細の表示」を選択すると:このブロックで実行された内容や実行結果を確認することもできます。マネージド・ブロックチェーンサービスの使い方を紹介してきました。最後にこのサービスを使ってみた上での感想に触れておきます。ベースのブロックチェーン環境やアプリケーションを構築・開発・運用してきました。慣れもあって構築作業(正確には「開発用途での構築作業」)そのものはあまり苦にならないレベルの作業になっています。起動や停止、再起動といったプリミティブな作業も含めて、構築したブロックチェーン環境のインフラを管理するのはやはり面倒で、本来の目的(この場合は開発用途)を考えると苦痛を伴うものでした。その点から開放されて、開発やテストに注力できる意味や意義は小さくないと感じています。「ブロックチェーン内の各ブロックの様子を確認する」というよくある要望に対する機能もサービス内に標準装備されています(これまではそのための参照アプリを別途用意する必要があった)。これによってデバッグの効率も上がりました。このあたりは「マネージドサービスらしい」機能が提供されていると感じます。一方で、個別アプリケーションをデプロイするまでの手順についてはもう少し簡略化できるのではないかとも考えます。時点での)現状の「空の管理者ユーザーを一度作って、ファイルをダウンロードしたら、ユーザーを消してまた管理者ユーザーを作り直してアップロードし直して・・・」という作業は改善の余地があるようにも感じています。この辺りは時間が解決してくれることを期待します。このようなブロックチェーンのマネージドサービスが(ベータ版とはいえ)無料で提供されていることは素晴らしいです。興味ある方は是非使ってみていただきたいです。提供されているマネージド・ブロックチェーン・サービスを使う手順を紹介しています。作成手順を紹介しました。今回の中編ではこのインスタンスに実際にビジネスネットワークをデプロイする直前までの、管理者カードを作成する手順を紹介します。ベータ版であり、今後の仕様変更等により以下の内容は正しい情報ではなくなる可能性もあります。時点での情報であることをご了承ください。この中編で行う内容は大きく以下の4つあります。・接続プロファイルのダウンロード・管理用カードの作成と証明書のアップロードまず現時点でのダッシュボードの概要画面がこちらです。オーダラー(orderer)、CA、そしてピア(org1-peer1)が1つ動いていることが確認できます:(↑前回はここまで)なお、今回紹介する手順は基本的にはこちらのドキュメントの内容をベースにしています。向けのものになっています。導入されている必要があります。いうチャネルが初めから追加されるようになりました。以下のチャネル追加作業は行わなくてもよくなりました。引き続きチャネルの追加作業から行う必要があります。追記)最初にチャネルを追加して、ピアに結合する必要があります。チャネルに参加するメンバー組織を指定する必要もあります。いうわけでまずは現在のメンバーを確認しておきます。B)が作成されていることがわかります。A)だけを使うことにします:あらためてチャネルメニューを選択します。ここに現在作成済みのチャネル一覧が表示されますが、まだ1つも作っていないので何も表示されません。新規に作成するために「チャネルの要求」をクリックします:新規に作成するチャネルの情報を入力します。"mychannel1")と(必要であれば)その説明文を入力して、「次へ」ボタンをクリックします:次にこのチャネルに最初から参加するメンバー組織を指定します。参加させることも可能です)。「次へ」:ポリシーを指定して、内容を確認して「要求の送信」ボタンをクリックします。チャネルに参加させるための要求が送信された状態になり、「通知」メニューに保留状態として登録されていることがわかるようになります。チャネルに参加するための同意を行います。(この時点では「拒否」も可能ですが)保留中の内容を「承認」します:すると承認され(ポリシーが満たされ)、状態が「同意」になります。チャネルに追加されました:この状態で「チャネル」メニューを選択すると、作成したチャネルが一覧内に表示されているはずです。どのピアにも結合されていません。結合するため、一覧からチャネルをクリックします:するとピアをチャネルと結合するためのダイアログが表示されます。ブロックチェーンサービスインスタンスから、接続に必要なプロファイル情報(の元になるファイル)をダウンロードします。この手順は上記のチャネルのピアとの結合を行った後に実行する必要があります(チャネルが結合された状態での接続プロファイルをダウンロードする必要があります)。フォーマットで接続情報が記載されたテキストが表示されます。いう名称になります)。ファイルをテキストエディタで開きます。ファイルを接続プロファイルにコンバートします。いうツールを使って行います。インストールできたら、同ツールを使って接続プロファイル(connection.json)を作成します。いうファイルが生成されていれば成功です。失敗する場合、上記のチャネル結合が正しく行えていない可能性があるので再確認してください。ツールが一部正しく動かない現象を確認しています。値が正しく含まれないケースがあるようです。値が含まれている必要があるのですが、上記例のようにこれらの値が含まれていないケースがあることを確認しています。その場合は以下のようにテキストエディタで直接編集して、これらの値を記入してください。ピアが複数ある場合はすべてのピアについて同様の転記を行う必要があります。(↑注意)これで接続プロファイルの準備ができました。ファイルのデプロイするための管理者向けカードを用意する必要がありますが、そのための準備として一時的な管理者権限や各種証明書ファイルをサービスから取得してカードを作り、その証明書をサーバーにアップロードする、という手順を行う必要があります。(↑証明書ファイルをダウンロード。作成して、システムにインポートすることができました:最後にここで使った公開鍵(admin-pub.pem)の内容をサーバーにもアップロードしておく必要があります。ダッシュボード画面に戻り、「メンバー」の「証明書」タブを選択します。ここには証明書の一覧が表示されますが、この時点では何も表示されていません。まで)コピー&ペーストして入力し、「送信」ボタンをクリックします:ピアの再起動を確認するメッセージが表示されたら「再起動」をクリックしてピアに再起動をかけます:正しく再起動が行われると、先程まで空だった証明書一覧に指定した証明書が表示されるようになります:この証明書をチャネルに同期します。"mychannel1")のアクションメニューを開き、「証明書の同期」を選択します:証明書を同期する確認ダイアログが表示されるので「送信」をクリック:証明書の同期が行われました。ファイル)をデプロイしてビジネスネットワークを開始することができるようになりました。環境で行おうとするとこちらで紹介するような作業が必要になり、その上起動や停止、再起動といった管理・運用を自分で行う必要があるわけです。環境の導入手順(2018/2月版)実際に個別のアプリケーションをデプロイする手順についてはまた次回に。ベースとしたマネージドなブロックチェーン環境が提供されています。いう、名前の通りに小規模向けの比較的安価なプランも提供されるようになりました。時点ではベータ版で、通常プランと比較していくつかの制約はありますが、無料で利用できます。今回のブログエントリではサービスを選択して利用可能にする所までの手順を紹介します。ベータ版であり、今後の仕様変更等により以下の内容は正しい情報ではなくなる可能性もあります。時点での情報であることをご了承ください。ベータ版は無料ですが、ライトプランのアカウントからはサービスを選択することはできません。実際に試す場合はクレジットカードを登録するなどしてスタンダードプラン等に移行してからご利用ください。これを選択します:次の画面でリージョンやプランを選択します。時点では米国南部リージョンからのみ提供されています。そのためロケーションを選択する箇所で「米国南部」を選ぶようにしてください:画面を下にスクロールすると利用プランの選択画面になります。場合、以下のような制約事項があります。シングルピア環境なので多数決をとるようなスマートコントラクトを実装することはできませんが、アプリケーションとしての実装はほぼ変わらないものを動かすことが可能になります:・組織は2つまで・各組織ごとに1ピアまでサービスが作成されるとダッシュボード内のサービス一覧内にブロックチェーンサービスが表示されるようになります:作成したブロックチェーンサービスを選択するとブロックチェーンサービスの概要が表示されます(この辺りはプランによる違いはないと思われます)。ここから実際にブロックチェーンを操作したり管理するためのダッシュボードを開いてみます。「管理」タブの「起動」ボタンをクリックします:すると別ウィンドウでブロックチェーン環境のダッシュボードが表示されます。環境を構築しようとすると、サーバー環境を用意した上でこれらの各種サーバーを自分で作って運用する必要がありました。任せて、実際のアプリケーション開発・実行やユーザー登録といった実務に集中できる環境として提供されていることが分かります。上にサービスを作る作業までを紹介しました。次回以降でこのサービスにビジネスネットワークアプリケーションをデプロイして動かせるようになるまでの手順を紹介する予定です。使うと、インスタグラムの写真を使ったアプリケーションを開発することができます。その開発例を準備段階から説明します。モードを使ったサンプルを紹介します。【アプリケーション登録】まず大大大前提としてインスタグラムのアカウントが必要です。こちらは取得済みとした上で以下を記載します。使うには、インスタグラムデベロッパーであらかじめアプリケーションを登録しておく必要があります。使って作るアプリケーションを最初に登録しておく必要がある、という意味です。クリックします:すると現在登録済みのアプリケーションの一覧が表示されます(まだ1つも登録していない場合は何も表示されません)。タブに移動し、必要な項目を入力します。いった文字列は使えない、という規約があるようです。Name(会社名)は個人名でも空でもいいようです。指定する必要があります。ここで指定する値は後から編集することも可能です:すべて指定したら下にスクロールして「私はロボットではありません」の横をチェックします:自動化されたロボットでないことを証明するための質問に答えます。「アクセストークン」と呼ばれる文字列を使って利用します。このアクセストークンは上記手順で指定した情報を知っている(指定できる)人だけが取得できます。モードの場合、1つの登録アプリケーションにつき、アクセストークンが取得できるユーザーは20人までという上限がありますが、以下で紹介するアプリケーションの場合は本人だけが使う想定なので問題ないと思っています。値にそれぞれ置き換えて指定します。利用することができるようになります。手元に用意してください。動くように転送/コピー/デプロイします。これで準備は完了です。使って自分の画像をカルーセル表示する、というサンプルでした。正しく動いて画像を取得できていることも確認できました。年6月に用意されたモードです。アカウントと(上記の)アプリケーションの登録をするだけで使えるようになるというメリットがあります。一方で、その利用には制約があります。その結果は限られたものだけです。ついては期待通りに動いたのですが、フォローしているユーザーや他のユーザーの検索はできませんでした(実行結果が空だった)。利用する必要があり、そのためにはアプリケーションの申請が必要になります。個人的に正式な申請をした経験はないのですが、ウェブ上にはそういった情報もあるようです。APIの審査を通した人に話を聞いてみた。便利にデータの流れを定義することができるビジュアルデータフローエディタです。多くのプロトコルにも対応しており、これまでプログラミングを記述しないと実現できなかったようなデータの流れを、個別の機能を持ったノードを組み合わせることで、ほぼコーディングレスで実現できるという点が画期的なツールです。このブログでも何度か紹介してきました。(このエントリで紹介した時のデータフロー。(一般的なプログラミングと比較して)処理が複雑になるケース」もあります。多くの現場で使われていく上での適材適所を考える上では必要になってくると思っていることもあり、そんな例を紹介しようと思いました。記述することもできるという点で、比較対象としては相応しいのではないかと思っています。分岐処理だと自分の拙い経験上で思っています。基本的とは言えない内容だと感じています。例を挙げて説明します。こんな処理を行うケース:・気温(temp)と湿度(humid)という2つの変数値から「不快」か「不快ではない」かを判断する。・それ以外は不快ではないよくあるレベルのシンプルな分岐処理ですよね(湿度は%単位で与えられるものとします)。それぞれ温度と湿度の値が入っているという前提で作ることを考えてみます。ノードをダブルクリックして、処理内容を設定する画面に切り替えます:このノードでは温度(msg.payload.temp)に関する条件分岐を行うことにします。今回は30度以上か、30度未満かで処理を分岐する必要があります。して、その条件を指定する部分では「30以上の数値」となるように指定します。未満の場合」の2つの条件に分岐する必要があります。前者は上記で指定したので後者を追加します。この画面内の「追加」ボタンをクリックします:すると条件部分が1行追加され、もう1つの条件を指定できるようになりました。未満の数値」となるような条件を指定します(下図のようにするか、または後述のように"otherwise"(その他)という選択肢でも同じ結果になります)。行く、という分岐処理が定義できたことになります。ノードに指定した名前が表示されるのと同時に、ノード右側の出口が2つに増えていることが分かります。上側の接続子が1、下側の接続子が2を意味しており、ここから条件を分岐して処理できるようになりました:続けて湿度の条件を追加します。ノードをダブルクリックして編集ダイアログを出し、以下のように設定します。以上の数値」か「otherwise(それ以外)」として、最後に「完了」をクリックします:この時点でキャンバス上は以下のような2つのノードが設定されているはずです。3は温度が30度以上で、湿度は50以上なので「不快」、4は温度は30度以上ですが、湿度は50未満なので「不快ではない」という分岐がされたことになります:では続けて2のノードの続きの処理を追加します。ノードの2と接続します。ノードの設定内容を以下のようにします。ノードが用意されているはずです。実現することはできました。以下のような超シンプルな分岐処理だった割にはフローが複雑になってしまっている面は否めません。ノードは単一のプロパティに対する条件分岐しか行えないため、複数の値を元に条件を分岐するようなケースではどうしてもノードを多用する必要が出てきてしまいます。文による分岐処理は必ずしも簡単ではないということだと思います。ブログ検索」ブログパーツは、サービスを終了しました。