「人工知能で雇用が無くなる」論文をどう読むか(続)

前回、「人工知能で雇用が無くなる」論文をどう読むか、について書いた。よく日本でも引用されるオックスフォード大学の研究(Frey and Osborne論文)は、職業の内生的な特性に立脚した分析であり、実際に職業が無くなるかどうかは外生的な要因にも左右されるのではないかと述べたところである。

そこで、人工知能で雇用が無くなるかどうか、今回は少し外生的な要因についても考えてみたい。外生的な要因にはいくつかあると思うが、ここでは政治的要因、安全面の要因、機械の普及に関する経済合理性の3つの側面から考えてみたい。

1.政治的要因

「人工知能で雇用が無くなる・減る」という問題は、古くから知られている「技術的失業(Technological Unemployment)」と呼ばれるトピックである。Frey and Osborne論文も、技術的失業の歴史について多くのページを割いて記述している(実際のところ、この論文で私が最も感心したのは、技術的失業に関する豊富な先行研究のまとめ方だった)。

この中にも紹介されている面白いエピソードがある。ウイリアム・リーという人が、1589年にストッキングを自動で織る機械を発明した。彼はこの発明によって、手作業で織っていた多くの労働者を解放できると考えた。この機械への特許を求めて、エリザベス女王I世に機械を見せたところ、女王は雇用への影響を懸念し「私の哀れな国民がどうなるのか考えよ」と述べ、特許を認めなかったという。

雇用の確保はいつの時代も政治的なプライオリティが高い領域である。失業者が増えれば社会保障コストも跳ね上がり、社会不安が増し、政権へのダメージともなる。雇用への悪影響が顕著となれば、政府は様々な方法で雇用を守るか、あるいはソフトランディングさせる方法を探すことになるだろう。とりわけ、対象の職業が労働組合や、法規制、あるいは業界団体によって強い影響力を持つ場合はなおさらである。

もっとも、全く生産的ではない職業を政治力で守り続ければ、社会全体が極めて不効率になるという場合もある。また、古典的な経済学の考え方で見れば、非生産的な職種から、生産的な職種に移行することが望ましいとされる。

しかし、一人の人間がそうそう簡単に、全く新しい職業に必要なスキルを身に付けることができるとは限らない。馬車の御者が必要ないからといって、来年からプログラマーとして働くといっても難しいのではないだろうか。

こうした場合はソフトランディングが必要になるだろう。20~30年かけて調整してくことができれば、世代が変わるタイミングで職業構成も変わっていく。こうした舵取りは政治的にも重要なテーマだと思われる。

2.安全面の要因

技術的に可能だからと言って、すぐにその技術が社会に応用されるわけではない。安全面で懸念があれば、法規制等の対象となり、認可されることはないだろう。安全面の中にも、いくつかの側面がある。

完全性
正常系だけでなく、様々な異常パターンにも対応できるか。異常発生時の処理が滞りなくできるかが一つの課題である。人間と人工知能を対比して、人間は少ない経験をもとに、新たな事象に対して対応することができる能力に優れると言われる*。対して人工知能は、ある解決策を学ぶのに大量のデータが必要である。何らかの異常が発生した場合に、臨機応変に適切な対応ができるかどうかも、社会への普及においては重要だろう。

納得性
実は上記の完全性は、人間が行う場合でも満たされているとは限らない。むしろ、人間だからミスをする、異常が発生するという場合もあり得る。しかし、その異常が機会に起因するものか、人間に起因するものか、どちらであれば人間が納得できるかというは別問題である。この辺は機械化による安全の考え方やその合理性について、社会的な合意形成を図っていく必要があるだろう。

制度との整合性
自動運転車における保険制度のあり方が議論になっているように、新しい製品やサービスの普及に伴って開発しなければならない法制度や周辺サービスが存在するだろう。制度補完性という言葉があるように、制度自体も互いに依存しあっているため、一つの制度だけを変えることが難しい場合もあるかもしれない。

3.機械の普及に関する経済合理性

人工知能や人工知能を搭載した機械が社会に普及するためには、それらに誰かが投資し、誰かが買わなければならない。技術的に可能だからと言って、それが市場でニーズがあるか、売れるかというのは全く別問題である。

例えば、自動で調理してくれる機械ができたとしよう。しかし、その機械の値段が1台1,000万円だとすれば、どれくらいの人が買うだろうか?その機械を買うよりも、弁当屋からの配達の方を選ぶ人の方が多いかもしれない。

また、もし人工知能の普及で生産年齢人口の半分が失業したとしよう。その状況で自動運転車は投資を回収するほど売れるだろうか?買える人がいなければ、機械の普及もままならないのである。経済は、仕事をしてお金を稼ぎ、そのお金で投資をしたり消費をしたりして回っている。そのサイクルやバランスの中で、人工知能なり機械がどのように普及していくのかを考える必要があるだろう。

今回は上記3つの観点を考えてみたが、技術の普及には、それ以外にも様々な外生的要因があるかもしれない。そういった外生的要因も含めて、「人工知能で雇用が無くなるか」を考えていくことで、バランスの取れた議論ができるようになるだろう。

短期か長期か?

ここまでの議論で、「これらは短期の話であって、長期的に見れば技術進化には抗えないのではないか?」と思われる人もいるかもしれない。確かにそのような面もあるが、その辺についてはまた追って書いていきたいと思う。

 

*松尾豊・塩野誠『東大准教授に教わる「人工知能って、そんなことまでできるんですか?」』にも詳しい。

「人工知能で雇用が無くなる」論文をどう読むか

少し前から、人工知能の発達で将来、人間の仕事がなくなってしまうのではないかという話が話題になっている。

これが話題になったきっかけは、二つあるだろう。一つは、MIT教授のブリニョルフソンらが執筆した『機械との競争』。コンピュータの発達により、単純作業ではない仕事すら機械に置き換わっているのではないかと警鐘を鳴らした書籍である。今は続編の『セカンド・マシン・エイジ』も発売されている。

もう一つが、「オックスフォード大学の調査」である。

この論文はいろいろなところで引き合いに出されているが、結果だけが一人歩きしている感じもあるので、ここで私なりに少し解説してみたいと思う。

まず、この論文はFrey and Osborne (2013) “The Future of Employment: How Susceptible are Jobs to Computerisation?“である。「オックスフォード大学の研究」と紹介されることが多いが、研究者としてはFrey and Osborne論文と呼んでほしいかもしれない(笑)。ただし、オックスフォード大学のマーティン・スクールという社会課題を扱う研究所のプロジェクトとして執筆されたものであるようなので、オックスフォード大学の研究といっても、あながち間違いではないだろう。

この論文はどこかの学会に投稿されたり、査読を通ったものではなく、上記の研究所のHPにアップされているもので、誰でも無料でダウンロードすることができる。言って見ればフリーペーパー論文であるが、だからといって問題というわけではない。

タイムリーで重要なインパクトを持つ論文であれば、査読に出して1年、2年かかって通った後に発表するより、すぐに誰でもダウンロードできる形で発表することは意味があるし、実際に社会的に与えたインパクトを見ると、研究論文の発表の仕方として、こういうのもありだなと思える面もある。

前置きが長くなったが、肝心の中身を少し説明したい。この研究の手順は以下の通りである。

①米国の職業別の特性を表すデータを入手する。

なぜ米国かといえば、細かい職業別(元データは903分類)に、それぞれの職業の特性を表すデータが揃っているからである。その特性は9つあり、以下の通りである。

・手先の器用さ
・体の器用さ
・環境の複雑性への対応
・オリジナリティ
・芸術性
・社会性
・交渉力
・説得力
・他者のケア

このデータと、別のデータベースから持ってきた職業別の賃金や雇用数のデータを接続したため、対象の職業数は最終的に702となった。

②上記のうち70の職種について、コンピュータで置き換えられるかどうか、主観に基づき1か0で判定する

なぜ70かといえば、これは後の分析のためのサンプルであるのと、研究員が自信を持って判定できるのがこれくらいだったということである。この時の「1」は、「ビッグデータが使えると仮定して、その職業のタスクが、最新のコンピュータで制御された機器で実行されることが可能か」にYesと考えられる場合である。実際に置き換えられると想定されるのではなく、「可能か」を問われているのに注意が必要である。

③上記の仮判定(0,1)と9つの職業の特性の関係を分析する

④上記の9つの特性と0,1の関係を使って、改めて職業別に0〜1の数値を算出する。

ここでは、probabilistic classificationという手法が用いられるが、複雑なので省略します。

これで、0.7以上の数値になった職業が、雇用数で見ると全体の47%に該当するのである。これを見ると、「約半数の雇用がコンピュータで失われる!」と読む人もいるかもしれない。

ただし、論文内にもはっきりと書かれているが、この0〜1は「職業が将来のいずれか未定のタイミングでコンピュータ化されうる」という意味であり、時期は未定である。また、最初に見たように、仮に結果が「1」だとしても、それは「確実にコンピュータ化されると思われる」という意味であり、現実にすでにコンピュータ化されているわけではない。もしそうだったら、職業分類には出てこないだろう。

従って、0.7だからといって今すぐ、あるいは近い将来に機械に置き換わると考えるのは早計だろう。著者自身も、「いくつの雇用が実際に自動化されるかを推計するつもりはない」と述べている。

この論文の特徴を改めて言えば、それぞれの職業の特性から、コンピュータとロボットに置き換えられる可能性を分析しているものだ。いわば内生的なファクターのみを考慮している。しかし、実際に雇用が失われるかどうかは外生的なファクターに大きく左右される。例えば以下のようなものである。

①政治的な要素
②安全面からの配慮
③社会的なニーズ・コンピュータ化の経済合理性

この辺については、また改めて書いていきたいと思う。

 

 

いまさら聞けないブロックチェーン(3)

いまさら聞けないブロックチェーン(1)(2)で、ブロックチェーンの概要を解説したが、全体像を掴むためにあえて端折った個所がいくつかある。しかし、この端折った部分で、非常に面白くかつ重要な部分があるので、それらをここで補論として取り上げたいと思う。

ブロックチェーンの概要説明に、以下の図を使用した(以前は省略していた「ナンス」を追加してあある)。

全体像(新)

ここでは、前のブロックのハッシュと、各取引(トランザクション)を集約した「ハッシュ木のルート」を組み合わせて、新しいブロックを作るという話をした。後ほど詳しく説明するが、一つのブロックを作成するのには平均で10分かかるように設定されている。

そこで、以下のような疑問が生じるかもしれない。

  • 1つのブロックには、いくつの取引が入っているのか?
  • 1つのブロックを作成するのになぜ10分かかるように設定されているのか?もっと短くできないのか?

そこで、今回はこの2点について考えてみたい。

1つのブロックには、いくつの取引が入っているのか?

答えは「いくつでもよい」である。では、1つの取引でもよいのだろうか。実は1つの取引でもブロックを作成することは可能であるし、極端な場合には一つも取引を含めずにブロックを作成することも可能である(参考)。ただし、そのようなブロックはP2Pネットワークからは相手にされず、フォーク(分岐)して立ち消えとなるだろう。

「それなら、少数のトランザクションを束ねたブロックをどんどん作って、採掘で得られるビットコインを稼げばいいじゃないか」と思うかもしれない。

ところが、組み込む取引数が少ないからといって、早くブロックができるという訳ではない。一つのブロックを作る作業のほとんどは、前のブロックのハッシュを作る作業で占められる。一つのブロック作成に約10分がかかるよう、自動的にハッシュ値の閾値(その1参照)が設定されるようになっている。

その1でも述べたが、Bitcoin.orgのディベロッパーガイドによると、2,016ブロックごとに、ネットワーク側でどのくらいの時間がかかっているかを測定しており、理想的には1,209,600秒(2週間)かかるように閾値が設定される。1ブロックあたりに換算すると1,209,600÷2016=600秒=10分である。

ハッシュ値が求められている難しさ(閾値)に収まるかどうかは運次第なので、場合によっては、これよりずっと早くブロック作成ができる場合もある。平均して1ブロックあたり10分かかるように設定するというわけで、平均値を出すためにわざわざ2016ブロックという長いスパンを取って所要時間を計算しているのだ。

===(以下の説明を修正しました。2016/6/26)===

ブロック作成手順に戻ると、下記の図にブロックヘッダーの詳細を示してある。バージョン情報、前のブロックヘッダーから作成したハッシュ値、ハッシュ木のルート、タイムスタンプ、難易度、ナンスである。ブロック作成開始にあたり、バージョン情報から難易度までのデータをまず整える。ここでハッシュ木のルートを作成するわけだが、これは前のブロックが作成される間、すなわちおよそ10分間の間に世の中で取引されたときに生成された取引データから作成する。この10分がなぜ、どのようにかかるのかはこれから見ていく。

上記で整えたデータにナンス(0からスタート)という意味のない数値を足して、ハッシュ処理を行う。難易度に指定された閾値より大きければナンスを変えて再度ハッシュ処理を行う。もし閾値より小さいハッシュ値が出来れば、ハッシュ処理が終了したことになる。閾値より小さくなるナンスが見つかれば、それでブロックが完成したことになり、新ブロックとして世の中にブロードキャストする。そして、この10分間に新たにたまってきた取引データは次のブロックに入ることになる。

 

PoW

 

===(修正ここまで)===

だから、最初の質問「一つのブロックにはいくつの取引が入っているか?」に戻ると、一般的には前のブロックでヘッダーのハッシュ値を作る約10分の間に世界で行われた取引数ということになるだろう。実際、Blockchain.infoを見れば、一つ一つのブロックに含まれる数はまちまち(100個くらいの場合もあれば、2000個の場合もある)で、所要時間も40分かかったり1分でできたりしているのである(但し、1ブロックあたりのファイル容量は1メガバイト以内という制限がある)。このような意味で、1ブロックあたりの取引数は「いくつでも良い」である。

1つのブロックを作成するのになぜ10分かかるように設定されているのか?

上記でみたように、1つのブロックを作成するためには平均で10分かかるように設計されている。このことがビットコインでも一つの制約となっており、取引が確定されるまでには次のブロックが作成されるまで待たなければならない。証券取引のように、売って得たお金で次の株を買うという操作をミリ秒単位で行わなければならない場合、この制約は非常に重大だ。

そのため、なぜ10分なのか。10秒や10ミリ秒に設定することはできないのかという疑問が沸くかもしれない。それに対する回答を先取りすると、「短くするとフォークが増える」である(参考)。

一般的なProof-of-workの説明では、ブロックを作成するには一定のCPUパワーを提供しなければならず、過去のブロックを改ざんするには、以降の誠実なチェーンを追い越すペースでブロックを作成しなければならないとする。それが不可能であることを確実にするためにハッシュ値の閾値が設定されていると考えられる。しかし、時間は相対的なものであり、ましてやコンピューターが行うことなので、10分でなければならないことの説明には十分とは言えないかもしれない。

ビットコインの原典であるサトシ・ナカモト論文では、「Proof-of-workは1つのCPUが1つの投票権を持っているようなもの」であり、「CPUパワーの大多数が誠実なノードでコントロールされていれば、誠実なチェーンが最も速く成長し、それ以外のチェーンよりも速く長くなる」と表現されている。おそらくは、最も誠実なチェーンを効率的に参加者間で共有するには、10分程度の時間を取ったほうが良いということであろう。

ブロック作成はP2Pで行われるため、フォーク(分岐)が起きる。そのため、最後(最新)のブロックというのは、複数あるという状態があり得る。次のブロックを作成しようとするマイナーは、最も正統(長い、中身が信頼できる)と思われるブロックを選択し(もちろん自動で)、ハッシュ作業に入る。この10分の間に、他の参加者も含めて信頼性が高いブロックを確認することができる。

ところが、この所要時間が短すぎると、十分な確認が行えないまま分岐が多くなる、あるいはそれぞれの分岐先が長くなってしまい、どの分岐を選べばよいか判断するのに時間がかかってしまうというという(参考)。そのようなわけで、利用に制約はあるものの、今のところ平均10分に設定されているとされているということのようだ(これに対して、平均2.5分に設定されているLitecoinなども存在する)。

以上のような理由から、ブロックチェーンの取引の確定には速くても数分を要するのが現状である。もっとも、ブロック作成による確認は最終確認であり、商用サービスではこれを待たずに業務を実行しても良いのではないかとする考え方もある。

以上、今回はブロック作成にまつわる論点を見てきた。P2Pで行うことに由来する「フォーク」「正統性の確認」「改ざん防止」がブロックチェーンの特徴でもあるが、同時に制約の源でもある。この辺がどのように今後解決されていくのか、あるいはすでに解決されつつあるのか、今後も注目である。

 

いまさら聞けないブロックチェーン(4)へ

更新履歴
細かい表現を微修正(2/13)
ナンスに関する説明を追加(3/9)
ヘッダーのハッシュ処理の対象に関する記述を修正(6/26)

いまさら聞けないブロックチェーン(2)

前回に続いてブロックチェーンの解説を行いたい。今回はブロックチェーンを使った取引方法を具体的に説明したいと思う。前回同様に、Bitocoin.orgのディベロッパーガイドをベースに、情報を私なりに付加してある。

前回説明したブロックチェーンの全体像では、全ての取引を凝縮するためにハッシュ関数という仕組みが中心的な役割を果たした。

一方で、個別の取引となると凝縮することが重要なのではない。取引は、何かのリソース(資産)をある主体から別の主体へ確実に引き渡す必要がある。そこで、ハッシュではなく別の方法が必要になる。それを可能にするのが「公開鍵暗号方式」である。まずは予習として、公開鍵暗号方式を簡単に説明しよう。

公開鍵暗号とは

普通の家の鍵は、一本の鍵で開けたり閉めたりする。通常は右に回すと締まり、左に回すと開く。暗号の世界でも同じコンセプトの方式がある。共通鍵暗号方式だ(下図)。

共通鍵

 

共通鍵暗号方式では、一つの鍵が生成される。鍵といっても文字列の入った電子ファイルである。この鍵一つで、任意の電子ファイルや情報を暗号化したり、復号したりすることができる。右に回すと暗号化、左に回すと復号するようなイメージである。この一つの鍵で復号できてしまうので、鍵は秘密裏に保管しておく必要がある。

これに対して、公開鍵暗号方式は暗号化用の鍵と復号用の鍵が別々になる。二つの鍵で一セットである。暗号化用の鍵は誰にでも渡して良い。なぜなら、ある情報を暗号化されても誰も困らないからだ(秘密鍵を持っている人は復号できる)。そのため、暗号化用の鍵は「公開鍵」と呼ばれる。一方、秘密鍵を公開してしまうと、誰でも暗号化した情報を復号できてしまう。従って、復号用の鍵は、通常自分以外には渡さず「秘密鍵」と呼ばれる。公開鍵方式のイメージは下図の通りだ。

公開鍵

 

公開鍵を使って右に回すと暗号化される(左図)。しかし、これを左に回しても元には戻らない。復号するには、別の鍵を差し込んでさらに右に回し、一回転して元に戻るイメージだ(右図)。

ところで、これは逆回転の処理もできるのが面白い。秘密鍵を使って、左に回す。そこから、公開鍵を使ってさらに左に回して一回転すると、元の情報に戻るのだ。この仕組みを使うと「電子署名」というものができる(下図)。

署名

 

Aさんしか知らない秘密鍵で、ある情報を暗号化する(これを暗号化と呼ぶと紛らわしいので署名という)。それを、誰もが知っているAさんの公開鍵で復号すると、元の情報になる。ということは、確実にAさんがその情報に処理を加えたということが保証できる(同様にこのプロセスを署名検証とも言う)。これによって、情報が確実にAさんが処理したこと、その情報が改ざんされていないことを証明することになる。これが電子署名の方法だ。

ちなみに、公開鍵暗号方式にはRSAなど様々な方式があるが、ビットコインではECDSA(楕円曲線暗号)というのが使われている。

以上が公開鍵方式の予習だ。公開鍵による暗号化と秘密鍵による復号。秘密鍵による署名と公開鍵による署名検証。これだけ覚えておいて、中身に入っていこう。以下では、太郎が花子にビットコインを支払い、次にその受け取ったビットコインを今度は花子が次郎に払う場面を想定する(太郎→花子→次郎の順でお金を受け渡す)。

事前準備

まず、受け取り手の花子は、自分の公開鍵と秘密鍵のペアを作成する。次に、公開鍵のハッシュ値を作成し、太郎へ提供する。実はこの公開鍵のハッシュ値がビットコインのアドレス(宛先)の役割を果たす。よくビットコインの宛先をQRコードで示すことがあるが、このQRコードには宛先(ここでいう花子)の公開鍵のハッシュ値が含まれている。この状態で、花子は自分の公開鍵と秘密鍵を持ち、太郎は花子の公開鍵ハッシュを持っていることになる。これで準備完了だ。

取引方法

さて、いよいよ太郎が花子にお金を送ることになるが、実はビットコインあるいはブロックチェーンでは、お金にせよ、それに代わる電子データにせよ、リソースを直接的に送り手から受け手へ渡すことは無い

ブロックチェーンの本質を先取りして言ってしまうと、「このリソースは花子さんのものですよ」と宣言されたファイルが世界中で共有された状態を実現するものである。

例えるなら、電子的な土地の登記簿のようなものである※。実際にその土地に誰が住んでいようが、その占有状態とは関係なく、その土地が誰の所有であるかを宣言する管理簿のようなものだ。ただし、登記簿と異なり、花子さんと名前が書いてあるわけでは無い。どうやって受け手だけが使えるようにするかといえば、宛先となっている公開鍵ハッシュに対応する秘密鍵を持っている人だけが使えるのである。秘密鍵は本人しか持っていないので、宛先となっている本人しか使えない仕組みである。

なお、花子さんの名前が書いてないとはいえ、長年同じ公開鍵を使い続けていると、いずれは、これが花子さんの公開鍵であるということが知れ渡ってしまう。そこで、通常は1セットの取引(お金を受け取り、支払う)の単位で公開鍵ペアを新しくすることが推奨されている。

話を戻すと、何かの電子ファイルを太郎から花子に送るわけではなく、世界中に宣言するという前提で、以下の話を読んでいただきたい。

まず、ブロックチェーンで概観した時と同じように、古い取引と新しい取引の関連性を持たせるところに特徴がある。ブロックチェーン全体の場合は、前のブロックのヘッダーのハッシュ値を次のブロックのヘッダーに含めるというものだった。今回の場合は、一つ一つの取引を対象としているが、前の取引で受け取ったお金と、これから支払おうとするお金を紐づけるものである。

下図を見ていただきたい。

取引データ

 

まず、太郎が花子に支払うための取引データが上段に、また花子が次郎に支払うための取引データが下段に示されている。それぞれの取引データには、InputとOutputがある。Inputは、そのお金がどこから来たものか、すなわちお金の出所を示すものだ。Outputは、そのお金を誰にあげたいのか、すなわち宛先を示すものだ。

下段で花子が次郎に支払う際には、お金の出所を示さなければならない。この場合は太郎から受け取ったお金だ。太郎は、上段の取引で宛先を花子に指定している。この指定はPubkey Script(公開鍵スクリプト)と呼ぶ。Pubkey Scriptには花子の公開鍵ハッシュが含まれており、この公開鍵に対応する秘密鍵を持っている人だけがこのお金を使える仕組みだ。なお、どのようにこの仕組みを実現しているかは「いまさら聞けないブロックチェーン(4)」で解説する。

事前準備で花子は太郎に公開鍵ハッシュを渡していたことを思い出していただけるだろうか。太郎はこの時受け取った公開鍵ハッシュをPubkey Scriptに含めていたので、それに対応した秘密鍵を持っている花子だけが上段の取引で受け取ったお金を使うことができる。

花子が下段の取引で次郎に支払う際も、同様に今度は次郎の公開鍵ハッシュを含むPubkey Script、そして金額をOutputに指定する。こうすることで、そのお金は次郎が使えるようになる。

ところで、下段で花子が支払を行うと、上段のOutputは既に利用済みとなり、二度と使うことはできない。このようにして、二重払いを防止している。問題は、上段のOutputの方が、下段で必要な額よりも大きい場合、すなわち余り(お釣り)がでてしまう場合だが、このような場合には新たな取引データを作成して、自分宛に送金しておけばよい。

こうした取引データの一つ一つが、お金(リソース)を誰かから誰かに移転させたことを示している。公開鍵暗号方式を使って、宛先となっている人だけしかそれを受け取ることができない。また、過去に受け取ったお金と紐付けることで、二重使用を防止する仕組みとなっている。

さて、以上の解説でブロックチェーンの概要を理解する一助となっただろうか。ビットコインの場合は、管理する対象は仮想通貨であり、金額が指定された。しかし、別にここは金額だけでなくともよいことは想像が付く。あらゆる資源について排他的な占有・利用を管理する上で、このブロックチェーンは良くできた仕組みである。

しかし、課題もある。P2Pで管理されていることは面白いところだが、不特定多数の人が参加したいインセンティブが無ければこれは成り立たない。ブロックチェーンが仮想通貨でまず成功したのは、何といっても採掘という作業に対して通貨による支払いが期待できるからだ。これが、対象が通貨ではなくなった場合、どのようにP2Pのインセンティブを設計するのか、あるいはP2Pの仕組みを若干モディファイする必要があるのか。その辺も含めて今後のブログで取り上げて行きたいと思う。

※野口悠紀雄先生も、「仮想通貨革命」で同様に不動産の登記簿のようなものだと述べている。

いまさら聞けないブロックチェーン(3)

更新履歴
図を微修正(2/13)

いまさら聞けないブロックチェーン(1)

これまで、このブログでも何度か取り上げているブロックチェーン。特に最近はその応用可能性が高まっており、注目度も上がっている。つい先日も、エストニア政府がブロックチェーン技術を、公共サービスの様々な場面で活用すると発表したところだ。

「イー・レジデントはどこに住んでいても婚姻証明書や出生証明書、事業契約などを、ブロックチェーンを通して証明する事ができる。」(Coin Portalより)

ブロックチェーンはもともとビットコインの基盤技術として出てきたので、「なんでビットコインが公共サービスに?」と疑問を思われる方もいるだろう。また、暗号技術を駆使していることから、とっつきにくい印象を持っている方もいらっしゃるかもしれない。

そこで、ここでは今更ながらではあるが、ブロックチェーンについてその概要を整理しておきたいと思う。なぜ情報経済学が専門の私がブロックチェーンの解説を書くのか?と思われる方がいらっしゃるかもしれないが、その理由は以下の通りである。

第一に、ブロックチェーンの技術は社会のあらゆるリソースの移管・移転に活用できる上、その管理を完全分散型でできるため、社会経済的に大きな可能性を持っている。これは、情報経済学的にも大きな関心事である。今後の研究に役立てられるよう、自分なりに理解を深めるためにここで整理しておきたいと思った。

第二に、世の中にある書籍や解説記事は概念的な概要にとどまっているものか、あるいは詳細な開発者向けの情報が多い。概念的な理解でも良いが、もう少し詳しいことが知りたいという人に丁度良い解説はなかなか無いようにも思う。私はかつてエンジニアだった時代もあるので、概念解説と開発者向け情報の中間くらいの解説が書けるのではないかと思った次第である。

第三に、ビットコインやブロックチェーンの仕組み自体、結構複雑で難しいのは事実である。そのため、どのような解説でも一つで全てを完璧に表現できるのは難しいだろう。幾つかの解説をつまみ食いしながら読むことで、全体像が見えてくるかもしれない。そんなつまみ食いの一つとして読んで頂ければ、役に立つところもあるのではないかと思う。

といっても、ブロックチェーンの深い知識は開発者には遠く及ば無いし、間違っている部分が多々あるかもしれません。間違いを発見されましたら、こっそりと、かつ、どしどしとContactページよりお寄せください。超速で修正させていただきます(笑)

なお、対象としては営業SEやコンサルタントなどを想定しております。コーディングできるエンジニアの方はBitcoin.orgのディベロッパーガイドをご覧になったり、各所で開催されているハンズオンセミナーなどに参加された方が楽しめるかもしれません。なお、初めての方には野口悠紀雄先生の「仮想通貨革命」(ダイヤモンド社)も大いに参考になると思います。

ブロックチェーンはバージョンもいろいろあるし、どの部分をどのくらい深く説明するかによっても変わってくると思いますが、以下ではBitcoin.orgのディベロッパーガイドのP2PKH方式をベースとして、私なりに情報を付加して整理しています。では、早速内容に入っていきましょう。

ブロックチェーンとは

ブロックチェーンを一言で言えば、過去のあらゆる取引が凝縮された電子ファイルである。あらゆる取引を凝縮しているので、過去の取引を改ざんしようとすると、その時点から現在まで全てのファイルを全て改ざんしなければならない。そのような労力をかけることが事実上不可能であるのがポイントだ。

「過去のあらゆる取引を凝縮する」ための鍵となるのが「ハッシュ関数」である。ハッシュ関数とは、長い文字列や電子ファイルなどを一定の決まった手順に従って処理をすると、短い文字の羅列に置き換えられるものである(置き換えられた後の文字列をハッシュ値と呼ぶ)。

ハッシュ関数には、SHA-1とか、MA5など、手順によって様々なタイプがある。同じ情報からは同じハッシュ値が作成されるが、元の情報が少しでも違うと、ハッシュ処理を行ったあとの情報も違ったものになる。また、一度短くなったものから元の情報に戻すことはできない(元に戻せないので、一方向関数と呼ぶ)。ハッシュ関数のイメージは以下の図の通りだ。

ハッシュとは3

ハッシュ関数の特性として、どのような文字列に置き換えられるかを事前に予測することはできない。だから、「こんなハッシュ値でなければならない」という制約があれば、何度も少しづつ元の情報を変えながら、繰り返して試してみるしかない。ここが重要な点で、ブロックチェーンでは通常、「○○以下の数値でなければならない」といった閾値が設けられる。

その閾値を越えないハッシュ値が生成されるよう、何度も何度も試さなければならない。そのため、改ざんも容易ではないのだ。試す際に、少しづつ元の情報を変える必要があるが、このときにnonce(ナンス)と呼ばれる任意の数値を付加してハッシュ値を再作成する。このとき、偶然ハッシュ値が閾値内に収まるような結果になるnonceを見つければ完了だ。

ちなみに、コンピュータの性能の向上でハッシュの計算が高速になることが考えられるが、この閾値を調整することで、一定の時間がかかるように工夫されている。通常は2016ブロックのハッシュ作成に2週間かかるように設定される。この「何度も試すしかない」性質を用いて、ブロックチェーンは改ざんを防止しているが、これをProof of work(労力による担保)と呼ぶ。

ブロックチェーンの全体像:2段階処理

「過去のあらゆる取引を凝縮する」ためにこのハッシュ関数を使うが、ブロックチェーンでは大きく分けてハッシュ関数の出番が2回ある。第1段階は個別の取引を集約して、あるかたまり(ブロック)を作成する段階である。そして第2段階はブロックの情報を次のブロックに引き継ぐために使う。ブロックチェーンを理解するには、この「2段階処理」を頭に置いておく方がわかりやすいと思う(下図参照)。

ブロックチェーン全体像

第一段階:個別取引の集約

第一段階は、図の下半分であるが、個別の取引を集約する作業である。一番下に一つ一つの取引データがある(この取引データの詳細については後述する)。ちなみにCoinbase TとあるのはCoinbase Transactionで、ブロックを作成するための手数料などに関する取引を示したものである。TX2-1からTX2-nが任意の数のトランザクション(取引)データである。

いくつの取引を単位としても良いが、一定数をまとめてハッシュ値を作成する。これがトランザクションID(txid)となる。さらに、このtxidとtxidからハッシュ値を作成し、そこでできたハッシュ値同士を掛け合わせてさらにハッシュ値を作成し・・・と続けていって、最後に一つだけ残ったものが「ハッシュ木(hash tree)」のルートとなり、ブロックヘッダーに組み込まれる。

第二段階:ブロックの連結

===
第二段階は、上記で作成したハッシュ木のルートと、以前のブロックの情報をもとに、新しいブロックを作成する作業である。最後のブロックヘッダーのハッシュ値と新しい「ハッシュ木ルート」を組み込んで新しいブロックヘッダーを作る。こうして、既存のブロックチェーンにつながる新たなブロックを作るのだ。

新しいブロックヘッダーが出来たところで、先ほどの「閾値」が登場する。ブロックヘッダーのハッシュ処理を行い、閾値より小さな値となるようなnonceを見つければ、新しいブロックとしてネットワークに流すことができる。

上記の記述を修正しました(2017/1/26)
===

このブロックを作成する人をマイナー(採掘者)と呼ぶ(ビットコインの場合)。ハッシュ値の計算に貢献してくれたので、その報酬をビットコインの形で受け取るからだ。この手数料は上記で述べたCoinbase Transactionから出てくる。加えて、採掘者は新ブロックを作成した報酬として新規発行されるビットコインを取得することができる(参考)。

ちなみに、誰でもこの採掘作業(=新ブロック作成作業)に参加することができる。P2P(Peer to Peer)と呼ばれるゆえんだ(但し、これはビットコインの場合であり、ブロックチェーン一般についてはどこまで公開性を持たせるかは選択の余地がある)。中央管理者がいるわけでもなく、指揮命令をする人がいるわけでもない。ハッシュなどの数学的ロジックをベースにしたインセンティブが設計されているため、各自が自分達の利害に基づいて行動することで、全体の整合性が保たれている。この辺は、私の本来の専門の一つである組織経済学から見ても面白いところだ。

ブロックのフォーキング

ところで、前述したように、参加者は一定の閾値に収まるハッシュ値を作成しなければならない。各自が競って新たなブロックを作成しているうちに、同時に複数の人が新ブロックを生成し、既存のブロックチェーンにつなげてしまう場合がある。これをフォーク(フォーキング)と呼ぶ。食器のフォークのように分岐してしまうからだ。この場合は、後の人がどちらかのバージョンを選ぶ権利がある。通常はいずれか一つのバージョンが残っていく。

ここまで、ブロックチェーンの全体像を概観してみたが、いかがだろうか。ハッシュというのは昔からある古典的な情報処理関数であるが、これを駆使して全ての取引を凝縮する仕掛けになっていることがわかる。ここまでを一旦まとめると、ブロックチェーン全体像の特徴は以下のようなものだ。

  • 過去から現在に至る取引を連結することで、過去の取引の改ざんを不可能にしている
  • ハッシュに閾値を設けることで、ファイル作成に労力がかかるようにして改ざん防止を確実なものにしている
  • ブロック作成作業に誰でも参加できるインセンティブが埋め込まれており、完全に分散型で処理が行われる

しかし、今回は取引そのものについては取り上げていない。どうやってリソース(ビットコインであれば仮想通貨)をAさんからBさんへ送るのか。二重使用をどう防止するのか。こうした取引の方法については、次回取り上げたい。

いまさら聞けないブロックチェーン(2)へ

更新情報
採掘における新規発行について追記(1/5)
P2Pの公開性について追記(2/13)
マイニングにおけるハッシュ処理の順序について修正(2017/1/26)

エッジ・イノベーションの時代

IT分野の学生で、就職先として比較的新しく小規模な企業、いわゆるベンチャー企業を選ぶ場面が少しづつ増えているという。もちろん、これまで就職先人気ランキングの上位といえば、日本を代表する大企業の指定席だったし、現在も全体の傾向として、人気ランキング上位をこれらの大企業が占めていることには変わりない。

しかし、ことIT分野に限っては、少しづつ事情が変わっているようである。これらの人材はなぜベンチャー企業を目指すのだろうか?

本人にとっては、やりがいがある、裁量があるなどの理由があるだろう。しかし、もっと大きな視点でみれば、イノベーションの発信地として、新興の中小企業、あるいは個人が台頭しつつあることがある。これらのイノベーションの発信地を、大企業・大組織と対比して「エッジ」と呼ぼう。

エッジにおけるイノベーションが存在感を増している本質的な理由はは、イノベーションにもっとも重要な資産が「情報」になりつつあることである。

「Information wants to be free;情報は自由になりたがる」といったのはスチュワート・ブランドであるが、情報という資産は他の資産、例えば旋盤加工技術やプラントの機械と異なり、社会の隅々まで容易に行き渡る。ソフトウェアを開発する技術(知識)も情報なら、そこで出来上がるプロダクト(ソフトウェア)も情報である。

大組織でなくとも、こうした知識としての情報、財としての情報にアクセスすることは容易である。したがって、エッジにおいても最新の情報にアクセスし、新しいプロダクトやサービスを産み出すことが可能になる。そう考えると、優秀な人材が、自らのスキルをいかして、もっともイノベーションを産み出せる場としてベンチャー企業を選ぶのも一理ある。

一方、大組織のメリットは、規模の経済をいかすことだ。大量に作ることによるコスト削減、大規模な投資や研究開発、大規模・長期間にわたるプロジェクトを引き受けるだけのリスク受容力などが強みである。実際に、IT分野でも巨額の投資が必要になる分野では規模の経済が活かされている。Microsoft, Apple, Google, Amazonなどもそうである。(もっとも、これらの企業はスタートアップから急速に巨大企業に成長した)

ただ、もしこうした規模の経済をいかすための組織が、逆に足かせになるようなら要注意である。固定的な人事制度、過去の成功体験、重層的な意思決定などは、業務によっては有益で実際に機能してきたが、スピーディーなイノベーションにとっては阻害要因となる可能性がある。

しかし、それでは大企業はどうすればいいのか?

いくつかの対処が考えられる。まず、エッジにおいてイノベーションを産み出しているベンチャー企業との連携である。それぞれが持つ強みをいかした事業創造ができるかもしれない。

もうひとつは、エッジにおけるイノベーションに適した人事・組織づくりである。現場・若手への権限移譲、意思決定の簡素化、リーン・スタートアップの採用など、IT業界で生き残っていくためには必要な施策ではないだろうか。(ただし、制度間の相互依存関係などもあり、制度の見直しが用意ではないのは青木昌彦先生が提唱する比較制度分析でも指摘されている)

一方で、大企業にしかできない仕事があるのも事実である。不確実性の高い案件、大量の人員を抱える必要のある案件、長期的な投資が必要な案件など、余力のある大企業でなければできない分野も多々あるだろう。

こうした分野で力を発揮しつつ、「エッジ・イノベーション」時代に合うよう、制度を見直し、ベンチャー企業と大企業双方が強みを発揮していくことが必要ではないだろうか。