Logo
    Logo

    Search

    R3-Solana連携

    Blockchainトレンド

    Corda活用事例

    Corda技術

    おすすめ記事

    記事を探す

    その他

    お客様サポート

    SBI R3 Japan HP

    お問い合わせ

    Cordaの始め方

    公開日
    Dec 7, 2024
    カテゴリ
    Corda技術を知る
    タグ
    🔰Corda入門⭐Corda5
    筆者
    image
    icon
    この記事で学べること

    企業向けブロックチェーン基盤「Corda」を触ってみたい初学者に向けたクイックスタートガイドです。

    icon
    目次
    • はじめに
    • 参考ドキュメント:R3 公式Doc - CorDapp Template
    • 本記事で導入する環境
    • 手順の全体像
    • A. Corda5環境の構築手順
    • B. CorDappの操作手順
    • A. Corda5環境の構築手順
    • A-1. Javaのインストール
    • A-2. サンプルコードのダウンロード
    • A-3. Corda Templateに必要なツール2点
    • a. Docker Desktopのインストール
    • b. Corda-CLIのインストール
    • A-4. InteliJの導入
    • a. インストール
    • b. 各種設定
    • B. CorDappの操作手順
    • B-1. Corda起動とCorDapp導入
    • B-3. 仮想ノードの情報を取得
    • B-4. Swaggerにアクセス
    • B-5. REST APIでFlowを実行
    • さいごに
    • 付録:よくある質問集
    🎄

    2024年「ブロックチェーンビジネス・アドベントカレンダー企画」7日目の記事です。 関連企業の皆様にも記事を書いていただく予定ですので、是非お立ち寄りください!

    企業向けブロックチェーンビジネスについてあれこれ語ろう! - Qiita Advent Calendar 2024 - Qiita

    Calendar page for Qiita Advent Calendar 2024 regarding 企業向けブロックチェーンビジネスについてあれこれ語ろう!.

    qiita.com

    企業向けブロックチェーンビジネスについてあれこれ語ろう! - Qiita Advent Calendar 2024 - Qiita

    はじめに

    本記事では「Corda上の分散型アプリケーション(CorDapp)を動かせること」をゴールとし、Cordaの環境構築とアプリ操作の手順をまとめました。

    試しにCordaを触ってみたいという方は、是非チャレンジしてみてください!! 非エンジニアの方でも、動かせるようになるはずです!!

    参考ドキュメント:R3 公式Doc - CorDapp Template

    Prerequisites - Corda 5.2

    Discover the prerequisites for the CorDapp template.

    docs.r3.com

    Prerequisites - Corda 5.2
    本記事では、こちらを構築手順のベースにしております。

    本記事で導入する環境

    ソフトウェア
    バージョン
    Corda
    Open Source 5.2.0
    OS
    - Mac OS (intel and ARM) - Windows 10/11 (Linuxも対応していますが本記事では割愛)
    Java
    Java Azul Zulu JDK 17.0.11
    IntelliJ
    v2021.3.3 Community Edition
    Docker
    Docker Desktop v4.25.0
    Corda-CLI
    ver.5.2(事前にJava 17の導入が必要)

    手順の全体像

    Cordaの2024年時点の最新版であるver.5.2では、手軽にCordaの動作を確認できる「CorDapp Template」というツールが備わっています。

    本来はAWSなどのクラウド上で様々なコンポーネント(Kafka, k8s等)を構築していく必要がありますが、Corda Templateを用いるとローカルPCなどでCorda環境を簡易的にデプロイでき、開発やテストが効率よく行えるようになっています。

    本記事では、Corda Templateを前提としたA.Corda5環境構築手順およびB.CorDappの操作手順をまとめます。OSによっては挙動が異なる可能性がありますので、本記事の手順で問題や不明点があれば、弊社までお問い合わせください。

    A. Corda5環境の構築手順

    1. Javaのインストール
    2. サンプルコードのダウンロード
    3. Corda Templateに必要なツール2点
      1. Docker Desktopのインストール
      2. Corda-CLIのインストール
    4. InteliJの導入
      1. インストール
      2. 各種設定

    B. CorDappの操作手順

    1. Corda起動とCorDapp導入
    2. 仮想ノードの情報を取得
    3. Swaggerにアクセス
    4. REST APIでFlowを実行

    A. Corda5環境の構築手順

    青文字が実践していただく手順を示しています。

    A-1. Javaのインストール

    Corda5の実行環境はJava17です。今回はAzulの提供しているものを使います。

    • こちらのページから、お使いのOSに合わせて、「バージョンが17.0.11以上のJava17(LTS)」をダウンロードし、インストーラーの指示に沿ってインストール
    • OSに合わせて、環境変数JAVA_HOMEを設定します。
    ‣
    Windowsの場合の環境変数の設定方法
    ‣
    Mac(zsh)の場合の環境変数の設定方法

    A-2. サンプルコードのダウンロード

    本記事では、R3のGitHub上にサンプルコードを使います。kotolin版のサンプルコードはこちら。

    ※「release-V5.2」を使用してください。執筆時点ではこのブランチがデフォルトです。

    contract, flowのフォルダ配下にはCorDappのソースが書かれています。
    contract, flowのフォルダ配下にはCorDappのソースが書かれています。
    • Macの場合はターミナル(Windowの場合はpowerShell)を開き、ローカルPCの任意のディレクトリにダウンロード
    • git clone https://github.com/corda/cordapp-template-java.git <任意ディレクトリパス>
      gitを利用していない場合、「GitHubページ → <> Codeボタン → Download ZIP」からzipでもダウンロード可能です。また、本記事ではjava版を使用していますが、kotolin版を使用したい場合は、Pathを変更してください。

    A-3. Corda Templateに必要なツール2点

    a. Docker Desktopのインストール

    Docker DesktopはCorda内で立ち上がるコンテナの管理ツールとして自動的に使われます。

    Cordaを立ち上げる際には、Docker Desktop起動状態にしておきますが、Docker Desktop内での操作は特にありません。
    Cordaを立ち上げる際には、Docker Desktop起動状態にしておきますが、Docker Desktop内での操作は特にありません。
    • 「バージョン4.25.0のDocker Desktop」のダウンロードリンクは以下の通り
      • For Mac OS → Docker Desktop v4.25.0 for Mac OS のダウンロードリンク
      • For Windows → Docker Desktop v4.25.0 for windows のダウンロードリンク
    • ダウンロードしたら、インストラーの指示に従ってインストール
      • 詳細な導入方法については、公式ページを確認
      • (Dockerアカウントが必要なため、新規の方はDockerアカウントを準備)

    b. Corda-CLIのインストール

    Corda-CLIはCordaに関する様々なタスクをサポートするコマンドラインツールです。Corda TemplateもこのCLIに含まれています。(参考:R3公式Doc)

    • (手順に進む前に、Java17がインストール済みであることを確認)
    • こちらのページから「corda-cli-installer-5.2.0.0.zip」をダウンロードして任意の場所に配置
    ‣
    Windowsの場合のCorda-CLIインストール手順
    ‣
    Mac OSの場合のCorda-CLIインストール手順

    A-4. InteliJの導入

    CordaはJavaベースであることやGradle(自動ビルドツール)を用いていることなどから、Cordaの開発では「InteliJ」を用いることを推奨しています。

    JavaやKotolinの統合開発環境(IDE)として有名なエディター
    JavaやKotolinの統合開発環境(IDE)として有名なエディター

    a. インストール

    • こちらのページから、OSに合わせた「IntelliJ IDEA Community Edition 2021.3.3」をダウンロードし、インストーラーの指示に沿ってインストール
      • 参考:Mac OSのインストール手順   参考:Windowsのインストール手順

    b. 各種設定

    次に、InteliJを開き初期設定を行います。

    • インストールしたInteliJのアプリケーションを開く
    • 「Open」を押し、‣ にて取得した「cordapp-template-java(kotolin)」フォルダを指定
      • ※ Mac OSでうまくいかない場合は、 フォルダ内の「build.gradle」を選択
      • ※「Trust and Open Project <ファイル名>?」と警告が出た場合は「Trust Project」を選択
    • サンプルコードを開くと自動的にプロジェクトのImportが開始するのでしばらく待機
      • 「Found invalid Gradle JVM configuration」と表示された場合は次手順の初期設定①を実施し、再起動することで解消されます
      • image
    • 初期設定①:プロジェクトで使用するJDKの設定
      • File > ProjectStructure > Project > ProjectSDK にてJDK(Java17)を選択し、Apply
      • Apply後、Gradleのインストール作業が始まった場合は完了するまで待機
        Apply後、Gradleのインストール作業が始まった場合は完了するまで待機
    • 初期設定②プロジェクトで使用するビルドツールの設定
      • File > Setting > Build,Excution,Deployment > Build Tool > Gradleにて、設定画面のGradle JVMの項目が、初期設定①で指定したJDKと同じものを選択
      • image
    • 初期設定①②が完了後、File > Invalid Caches > Invalidate and Restartを実行しInteliJを再起動

    環境構築手順は以上です。お疲れ様でした。

    B. CorDappの操作手順

    青文字が実践していただく手順を示しています。

    サンプルコードを立ち上げた後のInteliJ画面。右側メニューのGradleタスクを使ってCordaを立ち上げていきます。
    サンプルコードを立ち上げた後のInteliJ画面。右側メニューのGradleタスクを使ってCordaを立ち上げていきます。
    CorDappや運用など様々な操作が可能なSwagger画面。
    CorDappや運用など様々な操作が可能なSwagger画面。

    B-1. Corda起動とCorDapp導入

    • InteliJで右側のGradle(象のアイコン)を押しメニューを展開
    • Corda起動:corda-runtime-plugin-local-enviroment > startCordaを押す
    • image
      ⚠️

      注意1:起動する前に、Docker Desktopが稼働状態であることを確認してください。 注意2:Mac OSの場合、事前にAirplay Receiver(Macの機能)のオフにして、5005ポートを手動に解放する必要があります。詳細はこちら

      image
    • Cordaが起動が完了するまでしばらく待機
    • ログに[kafka-producer 〜〜 SCHEDULER_WAITER]が1分おきに表示されるようになれば、Cordaの起動は完了です。(PCスペック次第ですがおよそ4~5分です。)
      ログに[kafka-producer 〜〜 SCHEDULER_WAITER]が1分おきに表示されるようになれば、Cordaの起動は完了です。(PCスペック次第ですがおよそ4~5分です。)
    • CorDapp導入:corda-runtime-plugin-network > vNodeSetupを押す
    • image
      「BUILD SUCCESSFUL」と表示されればCorDappの導入は完了です。
      「BUILD SUCCESSFUL」と表示されればCorDappの導入は完了です。
    📌

    Corda5基盤の停止したいときは、startCordaの下にあるstopCordaを押すと一時停止します。さらにstartCordaを押すと稼働が再開します。

    また基盤のリソースを含めて削除する時は、StopCordaAndCleanWorkspaceを押します。さらにstartCordaを押すと環境が再構築されます。

    B-3. 仮想ノードの情報を取得

    次に、CorDappを操作するために必要な仮想ノードの情報を取得します。

    💡

    Corda5では1つのCorda基盤の上で複数のノードを動かす「仮想ノード」という仕組みがあり、サンプルコードではデフォルトでAlice, Bob, Charlie, Daveの4ノードが準備されています。 ここでは、CorDappを操作する上で「複数の仮想ノードのうち誰がアプリを起動する側なのか」を明示的に扱うために、仮想ノードの情報をあらかじめ取得しておきます

    • ノード情報取得:corda-runtime-plugin-queries > listVNodes を押す
    image
    • ログ内の赤枠のノード情報をメモしておく
    次の手順から「Holding identity short hash」を用いて、誰の操作なのかを示しています。
    次の手順から「Holding identity short hash」を用いて、誰の操作なのかを示しています。

    B-4. Swaggerにアクセス

    Corda5では、運用の操作やアプリの操作など含めほぼ全ての操作がREST APIベースに統一されており、Swaggerというフレームワーク上で操作できます。

    • Webブラウザからローカルホストの8888ポートにアクセス
      • https://localhost:8888/api/v5_2/swagger
      • 警告が出た場合は、「localhostにアクセス」を選択してください。
        警告が出た場合は、「localhostにアクセス」を選択してください。
    • Swaggerにアクセスできたら「Authorize」を開き、ID: admin, PW: adminで承認する。
    • image

    B-5. REST APIでFlowを実行

    企業同士による送金、売買、承認、また商品の追跡など一つ一つの機能がFlowであり、これらによってCorDappが構成されています。ここでは、実行可能なFlow一覧を確認して、試しにFlowを一つ実行してみます。

    • 特定のノードが操作可能なFlow一覧を確認(GET)
      • Swagger > Flow Info API > GET: /flowclass/{holdingidentityshorthash}に遷移
      • 「Try it out」を押すと、パラメータが入力可能になる
      • B-3.でメモした特定のノードのholdingidentityshorthashを入力
        • 例:Aliceの仮想ノードのショートハッシュ:9E63A920455E
      • Executeボタンを押す
      • Server responseを確認
      • ‣
        操作・結果例(スクリーンショット)
    • AliceからBobへチャットを送るFlowをAlice側から実行(POST)
      • Swagger > Flow Management API > POST: /flowclass/{holdingidentityshorthash}に遷移
      • 「Try it out」を押すと、パラメータが入力可能になる
      • Aliceの仮想ノードのショートハッシュをパラメータに入力
      • requestBodyを以下のように入力
      • {
            "clientRequestId": "create-1",
            "flowClassName": "com.r3.developers.cordapptemplate.utxoexample.workflows.CreateNewChatFlow",
            "requestBody": {
                "chatName":"Chat with Bob",
                "otherMember":"CN=Bob, OU=Test Dept, O=R3, L=London, C=GB",
                "message": "Hello Bob"
                }
        }
        各flowにおけるrequestBodyの入力項目は、サンプルコードの各flowのコードの最下部に記載しています。(参考URL)
      • Executeボタンを押す
      • Server responseを確認
      • ‣
        操作・結果例(スクリーンショット)
    💡

    サンプルコードのREADMEには、このサンプルチャットアプリの使用例が記載されていますので、アプリ内でチャットを取得したり返事をする操作も余裕があれば色々試してみましょう。

    💡

    また、こちらにはより多くのサンプルCorDappを集めたリポジトリもあり、ユースケース適用例やCorda実装のヒントが多く含まれています。

    CorDapp操作手順は以上です。お疲れ様でした。

    さいごに

    クイックスタートガイドとしてCorda5構築手順を解説しましたが、無事、起動できましたでしょうか。企業向けブロックチェーンがどのようなものなのか、実際に立ち上げてみて感触を確かめていただけると幸いです。

    次回は、今回立ち上げたCorda基盤をベースに、ローコードツールを用いた簡易的なフロントエンドの実装を解説していきます。(Cordaはあまり関係ないですが・・)

    UIのあるCorDappを操作することで、ノード同士がどのようなやり取りを行なっているのかをより実感を持って確かめられるようになっています。

    付録に「よくある質問集」も乗せておりますので、何かお困りの場合はご一読ください。

    ➡️

    次のフロントエンド実装編の記事はこちら

    DAppsのフロントエンドをノーコードで作ってみた

    📬
    最後までお読みいただきありがとうございます。当社へのご質問・ご要望がございましたら、📪SBI R3 Japan お問い合わせフォーム📪よりお気軽にお問い合わせください!

    <ご質問・ご要望の例>

    • Corda Portalの記事について質問したい
    • ブロックチェーンを活用した新規事業を相談したい
    • 企業でのブロックチェーン活用方法を教えて欲しい 等々
    📢
    また、厳選されたCordaに関する最新情報をお伝えるするメールマガジンやX、当社主催のイベントコミュニティを運営しております。ぜひご登録ください。
    • Cordaメールマガジンに登録
    • X(旧Twitter)をフォロー
    • 弊社イベントコミュニティ(Connpass)に参加

    付録:よくある質問集

    本記事の手順で問題や不明点があれば、弊社までお問い合わせください。

    以下に追記する形でFAQを更新していきます。

    ❔

    Q1. InteliJのコンソールのログが文字化けします。 A. 以下の日本語化設定をしてみてください。(参考URL)  ①Help > Edit Custom VM Optionsを開く  ②以下内容を追記して、InteliJを再起動

    -Dfile.encoding=UTF-8
    ❔

    Q2. M1 Macなのですが、処理がかなり重い気がします。 A. 以下の設定をしてみてください。(参考URL) ①Help > Edit Custom VM Optionsを開く ②以下2項目を追加して、InteliJを再起動

    -Dsun.java2d.opengl=TRUE
    -Dsun.java2d.opengl.fbobject=FALSE
    ❔

    Q3. PCのスペックが足りていない気がします。 A. Corda Templateにスペック要件は特にありませんが、参考までに本記事で検証したPCのスペックを記載します。

    Windows

    デバイス名	 SR19-006
    プロセッサ	 Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz   1.80 GHz
    実装      RAM	8.00 GB
    OS      Windows 11
    システム種類	64 ビット オペレーティング システム、x64 ベース プロセッサ
    2017年登場のPCで、スペック不足を懸念しましたが、動作しました。

    Mac

    デバイス名  Mac Book Air
    チップ    Apple M1
    メモリ    16 GB
    macOS    Sonoma 14.6.1
    ❔

    Q4. Windowsで、「stopCorda」を押すと以下のエラーが出ます。

    Failed to delete C:\Users\imoto\corda5\Cluster02-PoC03-main\workspace\CordaPIDCache.dat, please remove before starting Corda again.

    A. windowsで稀に発生するエラーです。StopCordaAndCleanWorkspace →startCordaの順で再構築を何度か繰り返しお試しください。

    Logo

    © copyright SBI R3 Japan 2025

    GitHubYouTubeXFacebookLinkedIn