再生医療の最前線のさらにその先。Fintech拠点「FINOLAB」にてNEM/mijinに興味のあるエンジニア向けに「第1回プライベートブロックチェーンmijinハンズオンセミナー」を開催した。同社のプライベートブロックチェーン製品「mijin」の基本機能の解説に続き、実際にNEMLibraryを利用してmijinの基本機能を使用してみるワークショップを体験する。希望者は事前登録が必要だが、誰でもブロックチェーン開発の基礎を学ぶことができる。Line・チーフエンジニアの松田晋一氏。Line社は、歩数計と連動し歩くことでお店のサービスと交換可能なトークンを獲得できるNEMブロックチェーン活用のヘルスケアアプリ「FiFiC」の開発・提供を行うなど、ブロックチェーンに関する知見と実績を持つ会社だ。mijinの特徴セミナーでは、ハンズオンを行う予備知識としてプライベートブロックチェーン「mijin」について、その概観と基本機能を分かりやすく解説する。「mijin」はNEMブロックチェーンのプライベートチェーン版であり、特定の企業や団体のみが使えるブロックチェーンであると、松田氏は解説する。企業300社以上の導入実績を持つという。「mijin」はNEM同様ブロックチェーン上にプログラムをデプロイする機能はなく、用意された機能を組み合わせてサービスを作成していくのが特徴であるという。NEMはブロックチェーンに関する強力なAPIが標準機能として備わっているため、ブロックチェーン初心者のエンジニアでもすぐに使えるのが特徴だが、「mijin」もまた同様であるという。基本機能の解説にあたり、「mijin」の代表的な導入事例が紹介された。mijin導入事例1(セミナー配布資料より引用、以下同)最初に紹介されたのは、日本ジビエ振興協会のジビエ食肉トレーサビリティー管理のためのシステム。狩猟で捕獲したシカやイノシシなど野生鳥獣の食肉の流通を管理する行程に「mijin」が使われているという。mijin導入事例2ゲーム情報サイト「インサイド」「Game*Spark」を運営する株式会社イードでは、ブロックチェーンを活用したトークンエコノミープロジェクト「GameDays」を立ち上げたという。ゲームのプレイ時間に応じてトークンをユーザーに付与するほか、ゲームの購入や、情報をシェアするといった行動にもトークンを付与していくという(一部予定)システムに「mijin」を活用しているとのこと。「イード、mijinによるブロックチェーン活用のトークンエコノミー「GameDays」向けアプリ配信開始」mijin導入事例3また、テックビューロHDはナレッジオンデマンド株式会社と株式会社翻訳センターの3社共同でリートワーカー管理の実証実験を実施している。「働き方改革」でリモートワーカーが増えることを視野に入れた取り組みとして、在宅勤務者や個人事業主などによる情報漏洩を、mijinブロックチェーンを活用し軽減する実験を行っている。mijin活用セミナー」にて詳細が報告されるそうだ。弊誌でも報告記事を予定しているので乞うご期待。mijinの基本機能についてここからは、具体的にmijinでできる基本機能についての解説となる。mijinには、プラットフォーム型のブロックチェーンとして次の機能が組み込まれているという。転送トランザクションメッセージ機能ネームスペースモザイクマルチシグネチャアポスティーユ転送トランザクションmijinの基軸通貨XEMやその他のモザイク(mijinで生成可能なトークンやアセット)を他の誰かに転送(送金)する機能。転送トランザクションにメッセージを付与できる機能。メッセージは平文・HEX文字列・暗号文を送ることができるそうだ。平文では、1024byteまで送ることが可能で、暗号文はその半分となる。ちなみに平文の場合は、誰でも閲覧できてしまうので要注意とのこと。メッセージ領域にファイルのハッシュ値を入れ、ファイルの存在証明として使用する応用例もあるそうだ。ネームスペースmijinのトークン発行には、NEM同様、ネームスペースというインターネットでいうドメインのようなものが必要になる。ネームスペースは、トップレベルのネームスペースとその下にサブネームスペースとして2階層持つことができ、親、子、孫の最大3階層まで設定することができる構造になっているという。ちなみに、ネームスペースを1件作成するには100XEM(年間)、サブネームスペースの作成については1サブネーム10XEM(年間)の費用がそれぞれかかるという(NEMブロックチェーの仕様)。してmijinでは、ネームスペースを取得し、モザイクと呼ばれるトークンを発行する。モザイク独自のアセット・トークンを生成する機能であり、モザイクを取得するには、前述のネームスペースを取得しておく必要がある。モザイクの作成費用は10XEMとのこと。モザイクでは、モザイク名(トークン名)およびモザイクの説明、モザイクの供給量(最大90億まで設定可能)、供給量の変更可否、可分性(小数点の有無)小数点0桁から6桁まで設定可能、モザイクの譲渡許可(人にあげることができるか否か)、手数料徴収の可否を設定することができる。ちなみにモザイクの譲渡許可について、譲渡不可のモザイクに向いている用途としては、発行者が流通の管理をする必要があるものであるという。Webサイトの閲覧権などがそのケースだという。譲渡不可のモザイク(トークン)については、日本の現時点における法律では(少なくとも2019年1月現在)は仮想通貨の要件からは外れるが、前払い式などの場合は留意すべき点はあるとしている。譲渡許可モザイクに向いている用途は、転売可能な電子チケットやポイント、電子マネー、商品券、トレーディングカードといった用途に利用可能だという。送金時に複数人の署名が必要となる機能。複数人の署名が必要になるためセキュリティを高めることができるという。署名人の数、最低署名者数とも1から32の間で設定が可能とのこと。アポスティーユいわゆる公証機能。ブロックチェーン上にファイルの情報とタイムスタンプを刻むことによって公証を作成し、ファイルの信頼性が監査できる機能だ。第三者を介さずにブロックチェーンでファイルの公証できる。契約書や不動産登記の書類等を残すことが可能となる。ちなみにアポスティーユは、APIではなくNEMが公式にリリースする「NanoWallet」から作成可能とのこと。ここまで解説でNEMブロックチェーンを知っている人なら、どの機能もNEMと同じだということに気がつくのではないだろうか。NEMとmijinとの違いは、mijinはプライベートブロックチェーンであることから、ブロック生成間隔や転送手数料の有無、ノード毎にアクセス可能なAPIを制限するなど、各種パラメータを調整できる点にあると、松田氏は解説する。CatapultについてNEM/mijinの次期バージョンと言われている「Catapult」は、NEMに先行し、mijinについては、2018年5月に一般公開されている。2019年には、オープンソースとエンタープライズ・ライセンスのデュアルライセンスを提供開始予定とし、待望のバージョンとなっている。現在、mijinでは申請することで利用可能となるディベロッパープレビューを実施中とのこと。v1、v2のレイヤー構造CatapultによってNEM/mijinは、処理性能が向上する。ちなみに、現行のバージョンでの秒間トランザクションは、NEMは2、mijinで数百程度となる。Catapultになると、mijinは4000トランザクションまで処理が向上する。新機能として「マルチレベル・マルチシグチャ」「アグリゲート・トランザクション」「クロスチェーン・トランザクション」が追加されるそうだ。マルチレベル・マルチシグチャマルチシグネチャについては、これまでは1階層までしか設定できなかったがCatapultになると、最大3階層まで設定できるになる。具体的には、プロジェクトメンバー全員が署名したものを、次に部長が承認し、最後に社長が承認し決済するというようなことが可能になる。アグリゲート・トランザクションアグリゲート・トランザクションは、複数のトランザクションを1つにまとめて処理できる機能。お店のポイントシステムの場合、これまでは「利用者が代金を支払う」で1トランザクション、「お店がポイントを発行する」で1トランザクションと、1トランザクションずつステップを踏んで処理をしなければならなかったが、アグリゲート・トランザクションでは、互いの署名が揃った瞬間、同時に1トランザクションとして処理することができるそうだ。Swap」という方法でプライベートであるmijinとパブリックであるNEMの両者のメリットを使い分けて利用することが可能だという。それにより、NEMとmijinや管理者の違うmijin間で互いのモザイクの交換が可能になるという。一通りの解説を聞き、かなりmijinについて詳しくなったと思う。ここからは、いよいよmijinを使ってみる、今回のメインイベントとなる。ハンズオンセミナーは技術者向けということで、それなりのスキルが必要とされる。今回、筆者は単なる編集者であるため、それを痛感した。どの程度のスキルが必要なセミナーなのか、そのあたりも伝わるといいのではと思い、あえて技術者ではない自分が苦労した点についても報告したいと思う。今回のセミナーでは、参加者と講師の松田氏のコミュニケーションは、チームコミュニケーションツールともビジネスチャットアプリとも呼ばれる「Slack」を介して行われることになった。最初に、セミナーで使用するSlackのワークスペースURLが提示された。mijinセミナーのワークスペースにアクセス幸いにも筆者も日々Slackを使用しているため、mijinセミナーのワークスペースに参加する方法やその使い方には問題がない。これも1つのスキルになるのではないだろうか。ちなみに、必要な情報や資料の場所などはスライドでも紹介されるが、実際に自分のパソコンで操作するには、いちいちURLを打ち込んだりしていては時間がもったいない上に、間違いも生じやすい。何らかのチームコミュニケーションツールが使われることは必須だろう。ここで情報の伝達を行うことで、スムーズにことは進行していく。開発環境について続いて必要なのが、自分のパソコン上での開発環境。ちなみに言い遅れたが、自分のパソコンの持ち込みもまた必須だ。Windows、Macとどちらが必要かはセミナーによると思うが(今回はどちらでも可、Linuxという場合もあるだろう)、そのあたりは要チェック。ここで筆者がうかつだったのは、自身のパソコンにまったく開発環境がインストールされていなかった点だ。これもセミナーによると思うが、今回は次の環境があらかじめ必要だったのだ。ちなみにバージョンは、講師である松田氏の環境の参考値。バーションについては、この限りではない(安定した新しいものが望ましい)。node.js(v10.15.10)nem-library(v2.0.0-RC4)typescript(v3.2.2)ts-node(v7.0.1)これが、痛感したポイント。技術者向けのセミナーであることから、当たり前の環境については、いちいち時間をかけないことが鉄則。今回のセミナーでは、mijinを利用するために必要とされるNEM-libraryのインストールからの説明となる。よって、「node.js」や「TypeScript」環境については、あることが前提だ。「Git」や「GitHub」が使えることも前提と思っていたほうが良いだろう。あわててNode.jsをインストールTypeScriptもインストールやっとスタートラインに立ったという印象だ。mijinを使った開発について今回、利用するライブラリはNEMLibrary。TypeScript/JavaScriptでmijin/NEMのAPIを実行することが可能な状況にしておくことが必須。その上で、セミナーで用意されたソースを実行していく。ちなみに、今回、体験したのは「アカウント情報を確認する」「XEMを送金する」「送金トランザクションを確認する」を実行。それぞれ用意されたソースがあるので、その動作を確認するといった作業を行った。実行結果セミナーでは実行方法と共に、ソースや結果についても解説が行われた。一通り実行したところで、約2時間のセミナーは終了となった。技術者ではない編集者か参加し、ドタバタとしながらも、どうにかこうにか理解することができたのは、NEM/mijinが初心者に優しいということと、会場では講師の松田氏のほかにも、わからないことがある場合に聞くことができる人がそばにいるということが大きい。筆者ができるのであれば、技術者なら上級者でなくても「できそう」と思っていただけたら幸い。NEM/mijinに興味がある人は、参加してみてはいかがだろうか。