ブロックチェーン技術は、優れたソフトウェア品質を自然に提供可能なソリューションの構築に使用することができる。ブロックチェーンを使うことで、コントラクトにすべてを格納する、コンパクトなシステムへの移行が可能になるのだ。ただしそれには、データのニーズについて理解し、チェーン内に格納するものとしないものを判断した上で、要件、障害、テストといった履歴をコントラクトモデル内に構築する方法を検討する必要がある。
Craig Risi氏はAgile testing Days 2021で、ブロックチェーンにおけるテストについて講演した。
あらゆるブロックチェーンアプリケーションにおいて重要な設計原則として、Risi氏は、データの整合性、データの透過性、拡張性、信頼性、可用性の5つを挙げた。これらすべての属性を設計の初期段階からチェックしておくと同時に、設計プロセス全体を通じて定期的に確認することが重要だ、とRisi氏は言う。
講演の中で氏は、ブロックチェーンを扱うアーキテクチャ設計に関するヒントをいくつか提供した。
小規模なサービスとAPIを開発し、必要に応じてシステムをスケールアップ可能にすることによって、単一障害点(single point of failure)を回避すること。特定のサービスがダウンしても高い可用性を維持できるような、冗長性を備えたシステムを構築すること。この2つが重要です。
システムがこれらの要件を確実に満足するためには、ソリューションにおけるデータのニーズ — チェーンに格納するものは何か、しないものは何か、格納する必要のあるデータ要素の規模はどれほどか、暗号処理はどのように行うのか、といったことの理解に多くの時間を掛ける必要があります。
要件を明確にすることによって、効率的にモックやテストを行う上で必要な情報が手に入り、テスト環境においてデータ整合性を検証する自動テストの実行が可能になります。このような機能面のテストに加えて、スマートコントラクトによるインタラクションを行うエンドポイントの高い安全性を保障するために、セキュリティにも注力する必要があります。
ブロックチェーン技術はソフトウェア設計へのアプローチ方法をよりよいものにする、とRisi氏は述べた上で、高品質のソリューション構築にブロックチェーン技術を利用するための提案をした。
今後、数百万行のデータを処理する大規模システムから、コントラクトに必要なものをすべて格納する小規模なシステムへのシフトが起きるでしょう。フォーカスが小さくなることには、それ自体の問題もありますが、ソフトウェア開発とテスト自動化がよりシンプルになることによって、機能をより早く提供できるようになる可能性があります。
要件や障害やテストの履歴をコントラクトモデル内に構築できるようになり、テストコントラクトへのエビデンスの組み込みが容易になることによって、トレーサビリティの向上が期待できます。すべてのエビデンスがコントラクトに格納されればデバッグも容易になりますし、コードがシステム全体に与える影響をより明確に把握できるようにもなります。
最後に、分散データベース、偽名性とレコードの不可逆性による透過性など、ブロックチェーン技術の基本原則のいくつかは、ミスの影響をこれまでになく広範なものにします。これがソフトウェアの品質に直接影響することはありませんが、チームはその影響を十分に考慮し、検証により重点を置くことを余儀なくされるとともに、ソフトウェアソリューション全体の品質にも間接的な影響を及ぼします。
ブロックチェーンシステムにおける品質構築について、Craig Risi氏に話を聞いた。
InfoQ: ブロックチェーンソリューションの開発を望む企業に対して、何かアドバイスはありますか?
Craig Risi: 重要なのは、ブロックチェーンが人気であることを理由に飛び付いてはいけない、という点です。資金調達を目的としてブロックチェーンソリューションを構築しようとする企業がたくさんありますが、付加価値をもたらさない、単なる代替品として新たにブロックチェーンソリューションを開発しようとしているのならば、おそらく何のメリットも得ることはできないでしょう。
例えば、健康記録をブロックチェーンに移行するために現在行われている開発は、このデータをより合法的かつ広く公開されたものにする手段としての意義も持ち合わせています。これがもし、医療データベースからブロックチェーン技術への単なる置き換えであって、消費者にコントロールを渡すことがないのであれば、ただデータを不適切な形式に移行したのみだということになります。
ブロックチェーンやデータ処理に関しては、さまざまな国際的な規制や規則に留意することも重要です。世界がブロックチェーン技術に対して好意的であるとは言え、データに関しては国ごとにさまざまな規則があるので、最終的なソリューションではそれらに対応することが重要です。
これは暗号通貨で見られます。暗号通貨に関しては、国別のさまざまな規則がその処理や課税に影響を与えるだけでなく、一部の国ではその使用が完全にブロックされているのです。医療情報を対象に行われている開発は、まさに今、この問題に直面しています。特定の国では、医療従事者自身がデータを保管するように義務付けたり、データの保存場所を制限していたりするため、法律の適用によってブロックチェーンソリューションの効率が制限されることになります。
InfoQ: ブロックチェーンは今後のソフトウェア開発にどう影響するでしょうか?
Risi: ブロックチェーンがもたらす重要かつ根本的な変革のひとつは、データの使用方法に関するものです。すべてのデータ操作が巨大なデータベースシステムではなく、コントラクト上で直接行われるようになることで、データベースに事実上の終焉をもたらす可能性があります。これはソフトウェアアーキテクチャに広く影響する大きな複雑性のひとつがなくなった、ということであり、データの扱い方が変わる、ということでもあります。さらに、データに関する懸念がほぼ解消されたことで、インフラストラクチャ・アズ・コードあるいはクラウドコンピューティングの積極的な導入を後押しすることにもなります。
データ収集やマシンラーニングなどにも影響します。企業としては、特定のデータをブロックチェーンに置いて、他はAI/ML用に従来のデータストアに配置するようなモデルの構築が必要になるかも知れません。
ブロックチェーンのデータオーナシップモデルは、ハイテク産業全体を変革する可能性を持っています。世界中の医療アプリケーションが情報を取得するために、患者用の共通ブロックチェーンにアクセスすることを考えてみてください。患者のデータのコントロール権は患者自身に与えられていて、自分の情報や履歴に対する必要なアクセスを提供するのです。
ブロックチェーン技術をさらに強化して、すべての個人情報や銀行口座情報の保管、商取引、さらには選挙投票にも使用できるようなディジタルIDドキュメントのソースとして使うことも考えられます。事実として、ブロックチェーンのコントラクトをソーシャルメディアサイトに統合すれば、自分自身のデータを格納して、共有するタイミングや相手を選択することも可能になります。
この技術がメインストリームになるにはまだまだ時間を要しますが、データのある側面とプライバシに関する私たちの考え方や、技術と対話する方法を大きく変える可能性を秘めていることは間違いありません。