PCで苔を育てる人

自作シミュレーションゲームPraparatを作っています。 人工生命をシミュレーションするゲームです。https://www.nicovideo.jp/watch/sm41192001

【後編】仮想通貨の仕組みについて勉強したのでアウトプットしたい

前回 の続きです。

4. 「ブロックチェーン」〜さいきょうのノート〜

 ここまでは安全に取引内容を書き込む方法を紹介してきたが、それを書き込むノートについては何も言ってこなかった。

 ここではどのようなノートに書き込みを行うのが良いかを考えていこう。

4.1 すでに最強では?

 とは言えだ。先程導入したデジタルなハンコのおかげで、既に取引の改ざんや偽造は誰でも検証可能になっている。とすれば、それを何に書き込もうかあまり問題ではないのではないだろうか?

 しかし、実はここには大きな落とし穴がある。先程のデジタルなハンコは、改ざんの検証は出来るが取引内容をまるごと消してしまうことに対しては無力なのだ。

 例えば私があなたに100Sを支払い、その対価として私があなたからリンゴを受け取ることを想定する。

改めて述べておくが、ここでの「支払う」というのは、"支払った"と電子ノートに書き、デジタルなハンコを押すことであって、実際に紙幣などの実体をやり取りするわけではない。

あなたはこの取引内容を検証し、ちゃんと両者のハンコが押されている(取引内容のハッシュ値と、暗号化されたハッシュ値の解読結果が一致する)ことを確認し、今後改ざんされないことを確信してリンゴを渡すのである。

 一見何の問題もないように見えるこのやり取りだが、もし私に悪意があればこの取引自体をなかったことにすることが出来る。つまり、あなたが安心しきってしばらくした後で、しれっとこの取引内容を消してしまえば良いのだ。そうすれば私は100Sを支払ったという事実を消し去り、リンゴのみを手に入れることができる。

4.2 鎖になったノート

 これは困ったことになった。デジタルなハンコは取引内容の削除については無力であった。これを解決するのが、実は先程も活躍したハッシュ関数なのである。

 ここで新たにブロックという概念を導入する。ブロックというのはいくつかの取引をまとめて文字通りブロックにしたものである。それではブロックを使ったノート作成の流れを見てみよう。

 まず、ある程度取引が溜まってきたら、それらをまとめてブロックを作る。

そして、このブロック全体のハッシュ値を計算する。

そしてさらに取引が溜まってきたら、新たなブロックを作るのだが、そのブロックにこのハッシュ値を加える。

これを繰り返して行くことで、ブロックをどんどん数珠つなぎにしていくのだ。

 先程最初に書いたブロックが一番最初のブロックでないなら、これも当然前のブロックのハッシュ値を含んでいる。

このようなブロックが連なったっものを「ブロックの鎖」という意味でブロックチェーンと呼ぶ。

「それで?」

そんな読者の声が聞こえてくる。それでは続きをお話しよう。実はこのようなチェーンを作ることで、先程問題となった取引内容の削除が簡単に検出できるようになるのである。

 例えばCさんがBさんに20S送金した後で、Cさんがその20Sを惜しくなったとする。そこでCさんはその取引自体を削除してしまうことを考える。しかしそんなことをしてしまうと、その取引を含むブロックのハッシュ値が変わってしまい、次のブロックに書かれているハッシュ値と食い違ってしまうのである。

つまりブロックチェーンは、このような取引の削除を誰でも検出できる仕組みなのだ。

「次のブロックに書かれたハッシュ値を書き換えれば良くない?」

仰るとおりである。何度も言うようにこのハッシュ値の計算は誰でもすぐにできるのだ。そうであれば、取引を削除した後でそのブロックのハッシュ値を再計算、その次のブロックに書かれているハッシュ値をこれに置き換えてしまえばいい。

 しかし、このブロックチェーンの素晴らしいところは、これが連鎖しているということである。つまり、次のブロックに書かれているハッシュ値を書き換えてしまうと、次のブロック自体のハッシュ値も変わってしまい、さらにその次のブロックに書かれているハッシュ値と食い違いが生まれるのである。

つまり、チェーンの途中のブロックから取引を削除してしまうと、その後に続く全てのブロックを書き換えなければならないのである。

「じゃあ全部書き換えれば?」

あ、はい、その通りです。

 そう、全て書き換える必要があるなら、本当に全部書き換えてしまえば良いのだ。ハッシュ値の計算は一瞬で出来てしまうので、この作業は実はそんなに大変なものではない。

 そこでこれを防ぐために、何かしらの工夫を施す必要がある。

4.3 時間稼ぎで書き換えを不可能に

 容易にハッシュ値の書き換えが行われてしまうとどうしようもない。そこでこれを阻止するために最初に思いつくのが、先程導入したデジタルなハンコである。前のブロックのハッシュ値をブロックに書き込んだ後でこれにハンコを押してしまえば、誰でも書き換えられるという状況を打開することができる。

 しかしここで、この仮想通貨の前提が牙をむく。

誰も信用できないコミュニティで
信頼されることを目指した通貨 

そう、このコミュニティは誰も信用できないのだ。

 例えばグループのリーダーや国家の大統領、総理大臣のように、何かしらの基準で信頼にたる存在があれば、その人のハンコを押すことでしか前のブロックのハッシュ値が承認されないようにしておけば良い。もちろんその場合でも、その信頼に足ると思われていた人物が不正にハッシュ値の書き換えを行ってしまう可能性は残る。しかし今はもっと状況が悪いのであり、そのような都合の良い存在がいないため、ハンコによる書き換えの阻止が不可能となってしまっている。

 そこでここでは時間稼ぎによって書き換えを不可能にすることを考える。

 結局のところ、先程の問題はハッシュ値の計算と書き換えが一瞬で行われてしまうことが問題であった。そこで、このハッシュ値の計算を時間がかかるようなものに変更したい。そのためにはどうするのかと言うと、生成されるハッシュ値に制限を設けるのである。具体的には「ブロックのハッシュ値として許されるのは、先頭の文字が0のものだけ」というようなルールを作ってしまうのである。

 記憶力の良い読者は次のように思うかもしれない

「え?同じデータからは同じハッシュ値しか得られないんじゃないの?」

その通りである。最初に話したハッシュ関数の特徴の1つ目

  1. 同じデータをハッシュ関数に入力すると必ず同じハッシュ値が得られる。

が問題となる。つまり、取引が集まってきてブロックを作った段階で、そのハッシュ値はただ1つに決まってしまうのである。

 そこでハッシュ値をいじれるようにブロックにてきとうな数を加えることを考える。これをナンスという。

「先頭が0のハッシュ値しか許されない?」

ハッシュ値をいじれるようにナンスという数をブロックに加える??」

正直何がなんだか分からないと思う。これに一体どんな効果があるのか、実際にブロックを作る過程を追うことで確認していこう。

 まず、ある程度取引が溜まってきたら、それらをまとめてブロックを作る。

そしたらここに、てきとうな数、ナンスを加える。これは本当に何でもいいので、例えば0とかにしておく

そして、このブロック全体のハッシュ値を計算する。

もしこのとき、このブロックのハッシュ値の先頭が0でなければ、それはハッシュ値として認められないので、ナンスを変更する。

 例えば今度は1にしてみる。そして再度ハッシュ値を計算する。

新しいハッシュ値の先頭を確認し、それが0になっていなければ再度ナンスを変更し、先頭が0になるまでこれを繰り返す。ハッシュ値の先頭が0になるようなナンスを見つけたら、それをブロックに加えてブロックの完成とする。次のブロックには、この先頭が0のハッシュ値が追加されることになる。

要は時間稼ぎである。ハッシュ関数の性質から、先頭が0になるようなハッシュ値からナンスを逆算することは出来ないし、またデータを少し変えるだけで全く違うハッシュ値が得られるので、あるナンスでハッシュ値の先頭が1になったからといって、そのナンスが目的のナンスに近いわけでもない。このハッシュ値の先頭を0にするような「正解のナンス」を探す最も効率的な方法は、さっきの例のように0から順番に試すことである。したがって、誰であろうと一瞬でブロックを作ることが出来なくなる。こうすることによって、チェーンの途中のブロックから取引を削除して、その後に続く全てのブロックのハッシュ値を書き換える作業にめちゃくちゃ時間がかかるようにできるのである。

 この正解のナンスを探す時間を調整したい場合には、先頭の文字にもっと強い制限をかけたり、あるいは制限を緩めたりすればいい。例えば先頭の2文字が00であるようなナンスしか認めないようにすれば、先頭の1文字が0であれば良い場合に加えて、より探索時間がかかるようになる。ビットコインの場合には、このナンスの探索に10分程度の時間がかかるように制限を調整している。

4.4 誰がそんな面倒な作業をするのか

 誰がそんな面倒な作業をしてくれるのだろうか。この正解のナンスを探して新たなブロックを追加するのは別に誰が行っても良い。誰がやったとしても、バレないように改ざんを加えることは不可能だからだ。しかし、この作業は計算資源や電力といった膨大なリソースを消費する。何の旨味もないのにこんなことをしてくれる物好きはいないだろう。そこで、ここに報酬を与えるのだ。つまり、「正解のナンスを見つけてブロックの追加に貢献してくれた人に1Sプレゼントしますよ」ということを約束するのである。

 この計算資源を使って正解のナンスを探し出し報酬を得る作業をマイニングと呼び、それを行う人達のことをマイナーと呼ぶ。

 これは「作業による証明」という意味でProof of Work、通称PoWと呼ばれる仕組みである。また、この作業でしか仮想通貨を発行しないようにすれば、仮想通貨の総量が無意味に増えたりすることはなくなる。マイナーは、本当の意味で、通貨を掘り出して流通させる役割を担っているのだ。

5. 「P2P」〜さいきょうのうんよう〜

 もういい加減に最強なのではないだろうか?いやしかし、実はまだ問題が残っている。ここまでの方法ではノートをまるごと消してしまうような攻撃に対して無力である。そう、最後はノートの保管方法が問題となるのだ。

5.1 2つの方針

 「ノートを安全に保管する方法」と聞いて最初に思いつくのは、パスワードがなければアクセスできないようなファイルサーバに保存しておくことである。

 しかし、しかしだ仮想通貨の大前提

誰も信用できないコミュニティで
信頼されることを目指した通貨 

こいつが問題となる。誰も信用できないのだ。安心してデータを保存できるファイルサーバなど存在しないのである。

 そこで現れるもう1つの方針が「みんなで同じノートを持つ」である。みんなが常に同じノートをコピーして持っておけば、それら全てを同時に消してしまうことは困難になる。

 ここで重要になってくるのがPeer to Peer、通称P2Pと呼ばれるアーキテクチャである。

5.2 長いものが正義

 P2Pというのは、言うなれば参加者のPCネットワーク全体が、ファイルサーバとして機能するような仕組みであり、どこか一箇所にデータを置くのではなく、みんなで同じデータを持つようにするものである。参加者全員のPCにP2P用の領域を作っておき、常に全員分のデータを同期しておくというわけだ。したがって、どのPCからでも同じデータにアクセスできるのである。これは通常のファイルサーバと比較したとき、ユーザーが増えてもアクセスが集中して回線が遅くなるような事態が発生せず、また参加しているいくつかのPCが壊れても、同じデータを持っている人は他にもいるので、障害に非常に強いというメリットがある。日本ではWinny事件の影響でP2Pに悪い印象を持つ人も多いが、上手に使えば素晴らしい仕組みなのだ。

 そして、これは仮想通貨のノートを保管する方法としては大変優れている。

 このP2Pを利用したブロック追加の流れは次のとおりである。

  1. 取引を行いたい人は、署名した取引内容をP2Pに流す。
  2. 報酬が欲しい人は、P2Pに流れている署名済みの取引内容を集めブロックを作り、正解のナンスを探し、ブロックを追加する。
  3. 正解のナンスを探している人が同時に複数人いた場合には、最も早くナンスを探しだした人のブロックが追加され、その人だけが報酬を受け取る。

ここまでの話で、勘の良い読者は気づいたかもしれないが、取引内容に署名をしただけでは、取引内容としてはまだ未確定の状態であり、誰かがそれを含めたブロックを追加するまでは承認されない。

「ナンスを探しだした人が同時に複数人現れた場合にはどうするのか?」

やはり、勘が良い。

 そう、実際そういった事態も起こりえるのである。その場合には、なんとブロックチェーンは分岐するのである。さらに厄介なことに、新たに作成するブロックに含める取引は、マイナーが好きに選んで良いので、全く異なる取引を含む分岐が生じる可能性が高いのである。

また、同時にナンスが見つかる場合以外にも、分岐が生じることがある。例えば、通信にはどうしてもタイムラグが生じるため、アメリカと日本ではブロックチェーンに違いが生まれたりすることがあるのだ。そのような場合でも当然ブロックチェーンは分岐する。そういったわけで、実はブロックチェーンにはいろんなバージョンが存在してしまうのである。そんなとき、どのブロックチェーンを信じたら良いかと言う問題が発生する。

 先にこの問題に対する解決策を言ってしまうと、一番長いチェーンを信用することにすれば良い。つまりブロックチェーンが分岐したらしばらくそれを放置し、ある程度泳がしたところで、より伸びた方の分岐を採用して、他の分岐については消してしまうようにする。こうして常に長い1本が残るようにするのである。これは単に、複数あるブロックチェーンのせいで混乱が生じることを防ぐという目的以外にも、不正な取引を自動的に削除するという効果もある。

「おいおい、ハンコのおかげで不正な取引はできないんじゃないのかよ?(笑)」

そう思うのも無理はないが、実はこれは重要な点を見落としている。私は「ハンコのおかげで不正な取引を検証できるようになる」とは言ったが、「不正な取引が書き込めない」とは言ってないのである。つまり、取引内容を改ざんしてそれをP2Pに流してやることも可能ではある。もちろん、参加者はその取引内容が改ざんされているかどうかを確認することができるので、マイナーもわざわざ改ざんを含んでいるような取引内容はブロックに取り込まないだろう。しかし、その改ざんを行った人間がブロックを追加することだってできるのである。したがって、改ざんされた取引が含まれるブロックが追加されることはありえるのである。

「でもその改ざんされた取引は検出できるので、
追加したところで意味ないのでは?」

確かにそうなのだが、えーと、誰が検出してくれるのだろうか?

 繰り返しになるが、今は誰も信用できないコミュニティにいるのだ。他の人が「検証してみたけど、このチェーンは不正がないから安全だよ!」といったところで信じられない。もちろんあなた自身が自分で検証を行うということも出来るが、他の人だってあなたのことを信用できないのだ。このような状況で誰もが「あ、このチェーンは信用できるな」と思える方法を探さなければならない。

 実は先程の「しばらく泳がせてから長く伸びた方を採用する」がその方法なのである。マイナーはブロックを追加する際にブロックに含める取引内容を選ぶだけではなく、どのチェーンに追加するかも選ぶ必要がある。そのとき、全てのブロックを検証することができるし、これは一瞬で完了する。時間がかかるのはあくまで正解のナンスを探す過程であり、既にナンスが与えれらているブロックを全て検証するのは造作もないことなのだ。そうすると、多くの参加者は改ざんの含まれるチェーンを信用しないため、そんなブロックにわざわざ膨大な計算資源を投じてブロックを追加しようとは思わない。そうなると、改ざんを含むブロックは全然伸びなくなるのである。この仕組みによって、この改ざんを含む分岐は勝手に消滅してくれるのだ。改ざんを含むブロックを伸ばし続ける唯一の方法は、改ざんした本人が、そのチェーンにブロックを追加し続けることである。しかし、ご自慢の計算資源を携えたマイナー達が犇めき合う戦場で、彼らに勝ち続けてブロックを追加していくのは現実的に考えて非常に難しいし、わざわざそんなことをしようとする人はいないと考えられる。というのも、これを可能にするためは、参加者の半分以上に相当する計算資源を保有する必要があり、もしそんな資源を持っているのであれば、大人しくマイニングで稼いだほうがお得だからだ。だいたい、そんな力技で改ざんを含むチェーンを伸ばしても、みんながその仮想通貨を信用しなくなるだけであり、自分の持っている通貨の価値を落とすようなことはわざわざしないだろうということである。参加者の過半数分に相当する計算資源を使って、改ざんを含むチェーンを伸ばす攻撃を「51%攻撃」という。

5.3 現実世界との接点

 ここまでの話は、全て仮想通貨内で完結していたものであり、現在国が発行しているような円やドルといった通貨との接点については何も述べてこなかった。というか本来接点などないのである。もしあなたが仮想通貨が欲しければ実際にマイニングなどを行うことで仮想通貨を集めるのが正当なやり方である。しかし実際には、マイニングを行えるような立派な計算機を持っていない人がほとんどだ。そんな人が仮想通貨を手に入れるためには、既に仮想通貨を持っている人から送金してもらうしかない。あなたは仮想通貨を持っている人と交渉し、国が発行する円やドル、もしくは物と引き換えに仮想通貨を送付してもらうのである。これは完全にこの仮想通貨の仕組みの外側の話であることに注意したい。そういったやり取りを行ってくれるのが、コインチェックbitFlyerなどの取引所である。

5.4 成功した攻撃

 ところで、この「さいきょうのつうか」は本当に最強なのだろうか?一見すると、もはやこれを改ざんしたり勝手に削除したりする術は残されていないような気がする。しかし実は、仮想通貨が攻撃を受けて不正にお金を引き出されてしまった例が存在するのである。ここでは、その実例を紹介することにする。

 実際に攻撃を受けてしまったのは「モナコイン」と呼ばれる日本の2ちゃんねるで生まれた仮想通貨である。

 犯人の手口はこうだ。まず、取引所を利用して自分の保有しているモナコインを日本円として出金する。このときの仮想通貨の流れは、

"犯人が口座に????MONA送金した"

である。取引所は、ブロックチェーンの新たなブロックにこの取引内容が加えられていることを確認した後、登録されている口座に日本円で相応の金額を送金するわけである。犯人は自身の口座に日本円が振り込まれたのを確認した後、予め分岐させておいたチェーンを高速で伸ばしていったのである。この「予め分岐させておいたチェーン」というのは、先程の"犯人が口座に????MONA送金した"という取引内容を含まないものである。このチェーンが他のどの分岐よりも長くなってしばらく経つと、他の分岐は全て消えてしまい、犯人が高速で伸ばしたチェーンが正しいチェーンとして君臨するのである(5.2参照)。この犯人が伸ばしたチェーンには口座に送金した事実が含まれていないため、犯人はモナコインを失うことなく日本円をゲットできてしまうのである。ポイントは、犯人は一切改ざん等は行っていないという点である。では問題はどこにあるのかというと、取引所が、まだ消えてしまう可能性のあった1つの分岐を早々に信じてしまい、日本円での出金を行ってしまった点にある。ブロックがどの程度伸びたら信じてもよいか(消える心配がないか)という目安は仮想通貨ごとに異なり、また実際にどのタイミングで日本円やドルとの交換を確定させるかというのは、取引所ごとで独自に決めている。もし素早い取引を売りにする取引所を作りたかったら、まだブロックがそんなに伸びていない状態でも取引を確定させてしまうという方法もあるわけだが、このようなリスクも当然生じるのである。実際、犯人が目をつけた取引所は比較的短い長さで取引を確定していたのである。

 先に述べたように、取引所における日本円などとの交換というのは、完全に仮想通貨の仕組みの外の話であり、今回の例は仮想通貨自体の信用を落とすものではない。しかし、まだ仮想通貨が既存の通貨の代わりとなりきれていない以上、取引所の使用は不可避であり、我々はその最強の外側の存在に常に注意を払わなければならないのだ。

6. 「まとめ」〜さいきょうのつうか〜

 如何だっただろうか。ノートの落書きから始まった「さいきょうのつうか」であったが、実に立派なものになった。

 ここで紹介した仮想通貨はPoWを使ったものだったが、このPoWは、取引にかかる時間が長いことや、電力消費による環境への悪影響が指摘されている。ここまで読んだ読者ならそれが何故起こるのかを理解できるだろう。そこで、これに代わる方法としてPoS(Proof of Stake)やPoB(Proof of Believability)などの承認システムが提案されている。

 本当の意味で「さいきょうのつうか」を目指す戦いは、まだまだ始まったばかりなのだ。

 それでは、この「さいきょうのつうか」に対して想定される攻撃と、それが何故防げるのかを箇条書きにして、本ブログのまとめとしよう。

  • [考えられる攻撃]
    何故それを防げるのか
  • 取引内容の改ざん
    デジタル署名によって誰でも検証可能であり、改ざんを含む取引内容はマイナーに無視されるか、仮にチェーンに追加されても伸びないため自然に消える。
  • 取引内容の削除
    次のブロックのハッシュ値と食い違いが生じるため検出可能。そのようなチェーンは伸びなくなるため自然に消える。
  • 取引内容を削除し、後ろに続くブロックのハッシュ値も全て書き換える
    後ろに続く全てのブロックについてナンスを探し直さなければならないため、実行するためには全体の51%以上の計算資源を保有する必要がある。そんなことをするよりマイニングした方が確実だし、やったところで通貨の価値が下がってしまい旨味がないので誰もやらない。
  • ブロックチェーンをまるごと消してしまう
    P2Pに流しているため実質不可能。参加者全員のPCをハッキングするか物理的に破壊する必要がある。

 

 

 

【前編】仮想通貨の仕組みについて勉強したのでアウトプットしたい

 仮想通貨の仕組みについて勉強したのでアウトプットしたい。タイトルの通りである。

 BLUE BACKSから出ている「ブロックチェーン 相互不信が実現する新しいセキュリティ」という本を読んだのだが、これが大変に分かりやすかった。ぜひ皆さんも読まれることをお勧めする。ブロックチェーンや仮想通貨という言葉は良く聞くが、それが結局何なのか、よく分からない人も多いのではないだろうか。かく言う私も全然分かっておらず、特に、企業の発行するポイントなどとどう違うのかが全く判然としていなかった。

 この本を読了した私は、いわゆる「完全に理解した」という思いあがった状態になっており、本ブログの内容も勢いに任せて筆を走らせている。こういうものは得てして、後から見直したときに勘違いが散見されたり、論理の飛躍があったりして恥ずかしいものであるが、今この状態でしか書けない文章というものも存在すると思うので、貴重な記録として残しておこうと思う。

 最初に断っておくが、本ブログの構成は先述の種本とは全く異なり、私の理解を通した文章であるので、内容の信ぴょう性については保証できない。特に私は経済について全く無知であるので、その辺りは注意されたい。また、これを読んだからといって仮想通貨で儲けられるわけでもないので、そういう内容を期待する人は読まない方が良いだろう。

 タイトルにもあるように、これは前編である。すでに全文は書き上げているのだが、長くなったので分けることにした。そして、残念ながら今回はブロックチェーンの話は出てこない。

 

1. ぼくのかんがえたさいきょうのつうか

「最強の通貨を作ろう!!」
開発者は高々にそう叫んだ。

ということがあったのかどうかは分からないが、仮想通貨というのはある意味で最強の通貨なのだ。仮想通貨を一言で説明するなら次のようになる。 

誰も信用できないコミュニティで
信頼されることを目指した通貨 

この「誰も信用できないコミュニティ」というのが非常に重要である。我々はそのようなコミュニティにあまり慣れていないので、この前提を忘れがちである。本ブログでは、実際に最強の通貨を作り上げていく様子を追体験することで、その仕組を知ることを目的とする。「ぼくのかんがえたさいきょうのつうか」を目指して、いざ参ろう。

2. 「価値の宿るもの」 〜さいきょうのらくがき〜

2.1 実体は必要か?

 ではさっそく通貨を作っていこう。単位は「さいきょうのつうか」の頭文字から「S」としておこう。「このリンゴは100Sです」という感じだ。ところで、「作る」という言葉を聞くと、紙を短冊状に切って紙幣を作ったり、あるいは金属を加工して硬貨を作ったりすることを想像するかもしれないが、ここでは敢えて問うてみよう。「果たしてそのような実体が必要だろうか?」例えば、1000Sに相当する紙幣を作り、それを私があなたにあげることを想像する。紙幣という実体があれば、確かにこのやり取りはわかりやすいが、別に実体がなくてもいい。

"私はあなたに1000Sあげた"

とノートに書いておけばいい。「1000Sに相当する紙幣を実際にやり取りすること」と、「やり取りをノートに書いておくこと」に本質的な違いはない。そのやり取りが紙幣という実体に担保されているか、ノートに書かれているという事実に担保されているかの差である。というか面倒だろう。わざわざ紙幣を作るのは。邪魔でしかない。国家間を跨ぐような長距離でのやりとりを考える上でも、何かしらの実体を担保としてしまうと足かせになってしまう。そういった意味では実際のノートに書いているのも不自由だ。データとしてネットワーク上に置いておく方が良いだろう。実体がないということに不安を感じる気持ちも分かるが、実は我々は既にそのような暮らしを送っている。会社からもらう給料は銀行振込で、それはATMなんかで残高参照をすることで確認できる。そしてその口座と結びついたカードを使って買い物をすると、口座の残高が減り、その値段に相応だと自分が判断した商品を受け取ることができる。これらは全て数字のやり取りでしかない。我々は紙幣や硬貨という実体を目にすることなくやり取りを完遂するシステムを既に使いこなしている。今後キャッシュレス化進み、全ての人間が、完全にお金を持ち歩かなくなったとき、世界中の紙幣や硬貨をこっそり消してしまっても誰も気づかずにシステムは回るだろう。ということであれば、この「さいきょうのつうか」にわざわざ実体を設ける必要はない。電子ノートに書かれたやり取りこそがその本体なのだ。それではとりあえず1億Sくらい発行しておこう。

 え?どうやって発行するのかって?ノートに

"1億S発行した"

と書くだけだが?そしてとりあえず持ち主は私にしておこう。

"発行した1億Sは私に送金された"

もしあなたがリンゴをくれるというのなら、私の100Sをあげよう。

"私はあなたに100Sあげた"

こうやってノートにやり取りを書いておくだけで必要なものは揃っている。残高を知りたければ、このノートを最初っから読んでいって、全ての取引内容から計算すればいい。
 さて、ここまでの話を読んでいると、多くの人が次のように思うのではないだろうか。

「それで、そのノートの落書きに何の価値があるの?」

ごもっともな疑問である。しかし、よく考えてほしいのだが、みんなが大事そうにお財布に入れているお札だって、ただの紙だぜ?(笑) みんながその紙切れに価値があると感じているのは、それをお店で出せば、相応の対価を得られることを知っているからだ。というわけでお金の価値というのは、それが何と交換できるかということで決まってくる。よく仮想通貨と混同される、企業が出しているポイントは、その企業の商品と交換できるという価値を付与しているのである。しかし今のところ、この「さいきょうのつうか」は何とも交換できない。交換できることが保証されていない。もちろん、どこかの物好きが何かしらの交換に応じてくれるかもしれないが、所詮その程度の代物である。ではどうしたらこのノートの落書きの価値を上げることができるのだろうか。

2.2 どうやったら価値が上がるのか

 正直この「さいきょうのつうか」の問題は山積みである。例えば、このノートをどのように保管するかについては何も言っていない。そこが確立されていない以上、誰でも好き勝手に取引を書けてしまう可能性があるし、嘘の取引を書かれても確かめる術がない。既に成立した取引を消してしまうこともできるし、さっき私がやったように、いきなり1億S発行して自分に送ってしまうこともできる。最悪の場合、ノートがまるごとなくなってしまうかもしれない。こんなものが信用できるはずがない。

 でも逆に、もしこれら全てを解決することができたら?そこに嘘の取引を書こうとしても絶対にバレてしまい、また過去の取引を改ざんすることも不可能、ノートがなくなってしまうことも決しなく、好き勝手に通貨を発行することもできない。そんな通貨だったらどうだろうか。

 まとめると、この通貨で可能にしたいのは下記の3つである。

  • 取引の偽装・改ざんを検証可能にする。
  • ノートが書き換えられたときにそれを検証可能にする。
  • ノートを安全に運用する。

これらが一体何を保証してくれるのかと言えば、仮想通貨の希少性である。人は希少性の高いものに価値を見出す習性がある。そういった意味では、金属の金(きん)なんかが素晴らしい希少性を持つ。埋蔵量が限られており、他の物質から作り出すことが極めて困難であるためだ。しかし、実際に金を使って物との交換を行おうと思うと、金は重く持ち運びの面で最悪であるし、また交換の中で徐々に消耗してしまう。そこでその金の代わりとして実際に通貨として使われ始めたのが、金の預り証である。つまり、金自体はどこかの金庫に預けておき、その金庫を運営しているところが発行する「確かに金を預かっています」という預り証を、金の代わりとして物との交換に使うのである。これが紙幣の始まりと言われている物語なわけであるが、しかし電子データでこれを再現するのは非常に困難である。というのも普通に考えれば、電子データはコピーが容易であるためだ。そのため、ソフト会社やゲーム会社などは簡単にコピーが出来ないように高度なプロテクトを施し、クラッカーは文字通りそれを突破しようと試みることで、目下のところイタチごっこが繰り広げられているのである。したがって、「電子データを通貨にする」というのは非常にナンセンスに聞こえてしまう。自分が1万円で手に入れた仮想通貨100Sが、クラッカー達によってコピーされ「え?そんなのいくらでも同じの作れるけど?(笑)」みたいになってしまったら、そんなものに価値を見出すのは難しいだろう。仮想通貨で可能にしたいこととして掲げた3つの目標は、そのような電子データの持つ弱点を克服し、希少性を担保するために必要なことなのである。

3. 「デジタル署名」〜さいきょうのはんこ〜

 ここでは取引の偽装・改ざんを検証可能にするためにはどうしたらよいかを考える。先に方針を述べておくと、デジタルなハンコを作ろうというのである。つまり

"AさんがBさんに100S送金した"

という書き込みはAさんにしか行えないようにしたいのである。もしこの書き込みがデータではなく実際にノートに書き込まれたものであれば、この書き込みの上からAさんのハンコを押せば良い。ちゃんとした実印ならそのハンコの偽装は非常に困難であるので、その書き込みは確かにAさんが行ったとわかるのである。このようなものをデジタルな世界でも作ることができれば、でたらめな取引は全て検証可能となる。

3.1 ハッシュ関数

 ハッシュ関数というのはデータをでたらめな文字列に変換するものであり、様々なハッシュ関数が提案されている。有名なものだと「SHA-256」という関数があり、「さいきょうのつうか」という文字列をこの関数に入力すると、

57986e6806ff8fd2bd39ab02e00d34dff54a7b6f1b90de3ef69931656ebf6cbe

という文字列に変換される。この変換された後の文字列をハッシュ値と呼ぶ。

「え?なになに?ハンコの話じゃないの??」

そう思われたかもしれないし、実際そう思うのも無理はない。しかし、このハッシュ関数が、実はデジタルなハンコに必要な技術なのだ。しかもこのもっと後に出てくる「ノートの書き換えを不可能にする」話でも重要となってくるのである。そういうわけで仕方なくここでハッシュ関数の話をしておく。もう少しだけ我慢して話を聞いてほしい。
 さて、このハッシュ関数には次のような性質がある。

  1. 同じデータをハッシュ関数に入力すると必ず同じハッシュ値が得られる。
  2. どんな長さのデータも同じ長さのハッシュ値に変換される。
  3. ハッシュ値から元のデータを復元することはできない。
  4. 入力のデータを少し変えるだけで全く違うハッシュ値に変換される。

ハッシュ関数の特徴として覚えておく必要があるのはこれだけだ。我慢して話を聞くほどのことでもなかったな。

3.2 デジタルなハンコ

 さて、さっそくハッシュ関数を使ってデジタルなハンコを考えていこう。デジタルなハンコに求めるのは下記の2点だ。

  1. そのハンコは本人にしか押すことができない。
  2. ハンコの押された文章が改ざんされた場合にはそれを検知することができる。

そしてハンコを押す対象となるのは、言わずもがな取引内容である。つまり

"AさんがBさんに100S送金した"

という取引内容をAさんが記し、そこにAさんのハンコを押したいのである。そして実は、先程説明したハッシュ関数が、このハンコの役目を果たすのである。

 先程の取引内容をハッシュ関数に通すと次のようになる。

"AさんがBさんに100S送金した"

→0847a012ba1f52ec015960bbbfafea23d2bfa81edc27955e679fbb9361a534d5

そして、先程の取引内容に加えて、このハッシュ値をハンコとして添えてノートに記載するのである。

ここでもし、悪意のある第三者がこの取引内容を次のように改ざんしたとする。

もしあなたが、この取引内容が改ざんされたかどうかを確認したければ、この取引内容をハッシュ関数に通してみればいい。

 この改ざん後の取引内容をハッシュ関数に通すと次のようになる。

fb890bb4e7f6342e9edf4fa37e58a7b5254cf57d41cf35982137b2e14effa6f7

これはノートに記載されているハッシュ値と明らかに異なっている!!

もう一目瞭然、全然違う。つまり、書かれている取引内容のハッシュ値を計算して、ノートのハッシュ値と比較することで、改ざんがあったかどうかが確認できるようになるのである。これは最初に述べたハンコに求めることの2番目、改ざんの検知が実現できていることになる。

 しかし、賢明な読者であれば、すぐさま次のように思うだろう。

「え?そのハッシュ値とやらも改ざんされたらどうすんの??」

非常に鋭いご指摘である。実際、このハッシュ値は誰でも計算できる(だからこそ誰でも検証できる)ので、悪意のある第三者は取引内容を改ざんした後で、その改ざん後の取引内容のハッシュ値を計算し、ノートのハッシュ値をそれに置き換えてしまえばいい。つまり、ハンコに求めることの1つ目「ハンコは本人にしか押すことができない」が実現できていないことが問題なのだ。

3.3 2種類の暗号

 先程のデジタルなハンコでは、求められている仕様のうち2つ目、「文章が改ざんされた場合にはそれを検知することができる」は実現できていたが、1つ目の「本人にしか押すことができない」が実現できていなかった。そこで、この1つ目を可能にするために暗号技術を使うことを考える。しかし、ここで使われる暗号技術は普段我々がイメージするものと少し違うので注意が必要だ。

3.3.1 自分にしか解けない暗号

 我々が暗号を使う場面として思い浮かぶのは、他の人に見られたくない文章なんかを相手に送るときだろう。個人情報の書かれた履歴書や社内の機密文書、恋人に送るメッセージなど、途中で傍受され中身を見られてしまってはたまらない。そういうときに、それらの内容を一度暗号化し、それを本当に読んでもらいたい人だけが解読できるようにしておくのだ。このとき問題となるのは、如何にして解読方法を相手に教えるかである。注意して解読方法を送らなければ、それすらも傍受されてしまい、せっかく暗号化した意味がない。そうすると「解読方法も暗号化して送る必要があるのか?」と思われるかもしれないが、これでは堂々巡りである。ではどうすればいいのかと言うと、実はちょっとした工夫でこの問題を解決できるのだ。

 ここまで考えてきた暗号を使った通信は下記のステップである。

やりたいこと : AさんからBさんに秘密の文章を送りたい。

  1. Aさんが文章を暗号化しBさんに送る。
  2. Aさんが解読方法をBさんに送る。
  3. 受信した暗号とその解読方法をもとにBさんが解読する。

これを次のように変更する。

やりたいこと : AさんからBさんに秘密の文章を送りたい。

  1. Bさんが暗号方法をAさんに送る。
  2. Aさんは送られた方法で文章を暗号化しBさんに送る。
  3. 受信した暗号をBさんが解読する(暗号方法を教えたのはBさんなので解読できる)。

どうだろうか。この方法であれば、解読方法をやり取りする必要はない。さっきまで存在した「解読方法のやり取り」を「暗号方法のやり取り」に置き換えたのである。

すると、先程から非常に鋭い指摘をする読者は次のような疑問を持たれるかもしれない。

「その暗号方法が傍受されたら、結局解読されてしまうのではないか?」

まさにそこがこの方法の肝である。

 簡単な暗号方法としてよく知られているのが、現れる文字を別の文字に置き換える、いわゆるシーザー暗号という方法である。「『あ』を『ひ』に、『い』を『か』に、...」というように全ての文字を変換するわけだ。この対応表さえあれば、解読も容易である。しかし、この方法では、解読方法が分かれば逆に暗号化もできるし、暗号化の方法が分かれば解読も出来てしまう。つまり、先の方法で安全なやり取りを行うためには、「暗号化の方法がわかっても解読方法は分からない暗号」というものを用意する必要がある。こうした考えのもと生み出されたのが、世にも有名なRSA公開鍵暗号技術である。これは大きな数の素因数分解には非常に時間がかかるという事実を利用したもので、その技術の詳細についてはここでは割愛させてもらう。ともかく、暗号方法が分かっても解読できないような方法があるのだということだけ覚えておいてくれればよい。この方法は南京錠とその鍵に例えられる。あなたが暗号化された文章を受け取りたい場合には、まず、南京錠とその鍵を自作し、南京錠の方を街にバラまくのである。その南京錠は非常に精密に作られており、その南京錠からでは鍵を作ることが不可能(作ろうとすると1万年かかるとかでもいい)であるようなものだ。あなたに秘密の文章を送りたい人は、その文章を頑丈なケースに入れて、街で拾ったあなたの南京錠で閉じてあなたに送ればよいのである。この南京錠は別に誰に見られても構わないので「公開鍵」と呼ばれ、それを開けるための鍵を「秘密鍵」というふうに呼ぶ。

3.3.2 誰でも解ける暗号

 前節では我々が通常イメージする暗号、すなわち「自分にしか解読できない暗号」を紹介した。しかし、今作ろうとしているハンコにはその技術は使えない。というか何か逆の技術のような気がしてくる。先程のは「みんなには見られたくない、だから誰でも暗号化はできるけど相手にしか解読できない方法を使う」というモチベーションだったが、ハンコの場合は寧ろみんなに見てほしいのだ。そのハンコを押したのが確かにハンコの持ち主以外ありえないと、みんなが認めなければならない。というわけでさっきの技術を逆に使う。つまり「みんなに見てほしい、だから誰でも解読できるけど自分にしか暗号化できない方法を使う」というわけだ。
 話がやや込み入ってきたので具体例で話そう。今書き込みたい取引内容は先と同じように次のようなものだ。

"AさんがBさんに100S送金した"

Aさんはこれを書き込み、この取引内容のハッシュ値を計算する。先程はこのハッシュ値をそのまま書き込んでいたが、今回はAさんにしか出来ない方法で暗号化を施し、暗号化済みのハッシュ値を書き込むことにする。

もしあなたが、この取引内容が改ざんされているかどうか確かめたければ、公開されているAさんの鍵を使ってこれを解読し、それが現在書かれている取引内容のハッシュ値と一致しているかを確かめれば良い。この暗号化はAさんにしか出来ないものなので、暗号化されたハッシュ値を他の人が偽造することは不可能である。

「でもこの方法だとAさんは改ざんが可能なのでは?」

その通りである。このままでは、例えばAさんが自分で送金した100Sが惜しくなり、後でこっそり10Sとかに書き換えることも出来てしまう。書き換えた後のハッシュ値を計算して、再び自分の鍵で暗号化して書き換えてしまえば良いからだ。そこでここには、Bさんのハンコも押しておく必要があるだろう。つまり、Bさんにしか出来ない方法で暗号化したハッシュ値も書いておくのである。

どうだろうか。この方法ならば、取引の当事者にしかハンコを押すことが出来ず、また改ざんがあった場合には誰でもすぐにそれを検出することが可能である。

3.4 デジタルなハンコ(改)

 さあ、ついにデジタルなハンコに必要なものが全て揃った。つまりデジタルなハンコというのは、「誰でも解読は出来るが本人にしか出来ない方法で暗号化された取引内容のハッシュ値」になるわけである。このデジタルなハンコのことをデジタル署名という。
 改ざんを行いたいクラッカーの質問に答える形で、この章をまとめておこう。

Q) 取引内容を改ざんすればいいのでは?
A) 改ざん後の取引内容のハッシュ値と、一緒に書き込まれている暗号化されたハッシュ値の解読結果が異なるためバレる。

Q) 取引内容改ざん後にハッシュ値を再計算すれば?
A) 改ざん後のハッシュ値は計算できるが、ハッシュ値の暗号化は当事者にしか出来ない。もちろん、誰でも自分の鍵を作ることができるので、自分の方法で暗号化することはできるが、自分の暗号化は当事者の鍵(公開されている)で解読できないのでバレる。

 

 

後半に続く

親にして欲しかったこと

私は「何不自由なく育ててもらった」と言って良い人間の一人であると思う。両親は私に色んな体験をさせようと努めてくれたし、私の願いも可能な範囲において叶えてくれた。やりたいことを尊重し支えてくれたし、私の将来について何かを強制することもなく、しかしそれでも、間違ったことをしたときにはちゃんと叱ってくれた。

そんなわけで、私は両親に大変感謝しているが、しかし何も思うところがないわけではない。直截に言えば、「本当はこうして欲しかった」と思うことがいくつかあるのである。小さなものだと、例えば、父親は私を車でどこかに連れて行くとき、必ずと言って良いほど寄り道をしていた。何もない日は良かったが、友達と約束をしていた日や見たいテレビがあったときには予定が狂うので正直やめて欲しいと思っていた。

そういった取るに足らない些細なものがいくつかあるだけなのだが、その最たるものが「自転車の乗り方を教えて欲しかった」というものである。

いや、この表現はあまり正確ではないかもしれない。誤解のないように付け加えておくと、私の父親は自転車の乗り方を教えてくれてはいた。そしてその教え方は別に変わったものでもなく、ごくごく一般的なものだった。まだ幼かった私を、休日に広い公園に連れていき、補助輪を外した自転車を手で支えながら練習をしてくれていたのである。

しかし、私の父は非常に厳しく「転けると思うから転けるんだ」というわけのわからない指導しかしてくれなかった。私は、転んだときの痛さも相まって、どんどん自転車が嫌いになっていった。

当時私の自転車は庭先にポツンと置かれていたが、できるだけそれが目に入らないようにしていたし、日常会話で「自転車」という単語が出ることを恐れていた。それで思い出したように「そうだ、自転車の練習をしないとな」と言われるのが怖かったのである。

私は「大人の乗る自動車だって四輪なのだから、補助輪の付いた自転車だって何も恥ずかしくはない」という持論を展開し、補助輪が笑われない時代の到来を切に願った。そして、それが叶いそうにないことが分かると、今度は自転車に乗らずに生きていく方法を模索した。生きていく上で本当に自転車は必要なのかと、自転車に乗れないことで失うものを数え始めたのである。ドラマや映画では、少年達が自転車で冒険に出かけたり、恋人と二人乗りをして青春を謳歌している。少なくともそのような経験は諦めなければならないなと覚悟を決めていた。

しかし、そんな生活を続けていると、ある日急に自転車に乗れるようになった。「一度乗れたらずっと乗れる」とは良く言うが、昨日まで乗れなかったのは何だったのかと思うあの感覚をついに体験したのである。

そういった意味では、父親の教え方は何も間違っていなかった。何も間違ってはいなかったが、そう、教え方には不満があった。改めて私が父にして欲しかったことを正確に言い直そう。

私は「ジャイロ効果を教えて欲しかった」のである。

この記事のタイトルから何かエモい話を期待していた人には申し訳ないが、私の言いたかったことはこれである。私はジャイロ効果を教えて欲しかったのだ。

ジャイロ効果とは、回転している物体の軸に力を加えた時に、加えた力の向きとは垂直の方向に軸が移動する現象のことである。より簡単に「回転している物体が姿勢を保とうとする現象」と言われたりもする。コマが倒れずにいるのもこの効果のおかげである。このジャイロ効果についてはネット上に面白い実験動画がいくらでもあがっているので、もし見たことがなければ見てみてほしい。直感に反する奇妙な動きが楽しめるはずだ。

さて、話を戻して。何故私がこのジャイロ効果を教えて欲しかったのかと言うと、これが自転車に乗れない子供を騙すのに丁度良い代物だからである。

そもそも自転車が何故倒れないのかと言うと、実はこれが大変に奥深い問題なのだ。私の知る限り一番良くまとまっている論文は、2011年にScienceから出た「A Bicycle Can Be Self-Stable Without Gyroscopic or Caster Effects」という論文である*1。残念ながらこの論文は無料で読むことはできないが、Supplementary Material (論文に付いている補足資料) はただで読めるので、興味があれば見てみて欲しい*2。自転車の安定性に関する方程式が丁寧に解説されている。これによれば、自転車の安定性というのは、ジャイロ効果やステア角、自転車の質量分布などによって複合的に決定されるものであり、そのどれか1つを持ってきて「これのおかげで安定しています」と言えるものではない。したがって、こんな説明を当時小学生だった私にしても理解できるわけがないので、私は単に「自転車はジャイロ効果のおかげで倒れないんだよ」と言って欲しかったのである*3

「いやいや、ジャイロ効果だって分からんだろ」

と思う人もいるかもしれないが、ジャイロ効果については、いくらでも体感する方法があるのである。例えば、コマが倒れないのは紛れもなくジャイロ効果であるので、子供でも分かりやすい。他にも、地球ゴマのようなおもちゃを用意して、色んな実験を見せてあげることもできる。地球ゴマが重力に逆らったように奇妙なバランスをとる様を見せれば、ジャイロ効果の威力を嫌でも実感できるだろう。

そしてここからが重要な点であるが、ジャイロ効果は回転が速ければ速いほど効果が大きくなるのである。

自転車に乗れなかった当時の私は、自転車が倒れない仕組みを根本的に勘違いしており、あれは人間の驚異的なバランス感覚によって成立しているのだと思いこんでいた。そのため、まずは前進しない状態で倒れない練習をするべきだと思っており、それができるようになってから徐々にスピードを上げていくべきだと考えていた。しかし、これは完全に間違いであった。自転車は、その構造上ひとりでにバランスをとる仕組みになっており、そしてそれは自転車が前進することで初めて機能するのである。

これについては、先程紹介した論文の著者がTEDで話している動画が分かりやすい。そのリンクを貼っておくことにする。

www.youtube.com

 

しかしだ、そんな仕組みを説明したところで、やはり当時の私が理解できるはずがない。そこでジャイロ効果による嘘の説明である。

先程話したように、ジャイロ効果は回転の速度が速いほど大きな効果を持つ。これは回り始めの勢いのあるコマが安定しているのに対して、時間が経って速度の落ちてきたコマがどんどん不安定になっていくことからも分かりやすい。この現象を目の当たりにすることによって、小学生でも「なるほど、速く漕げば漕ぐほど自転車は安定するんだな!」と勘違いできるのである。

私がもっと早くこの勘違いをしていれば、前進しない自転車に跨ってバランスをとるようなアホみたいな練習はせずに済んだし、いざ走り出すときもジャイロ効果に身を任せるつもりで思いっきりペダルを漕げたはずである。そしてそれは、結果的には自転車の自己安定機能を働かせることに繋がり、自転車にもっと早く乗れるようになったはずなのだ。

 

私は年末に帰省したタイミングで、この積年の思いを父親にぶつけてみた。ジャイロ効果を教えてくれれば、もっと早く自転車に乗れたはずだと。

車を運転していた父親は、助手席の私の方を見ることなく「そうだな」とだけ言って笑っていた。

久々にドライブする地元には、知らない建物が増えていた。

「ちょっとあそこに寄ってみるか」

私の父親は、いつもかならず寄り道をする。

思えば、自転車に乗れるようになった私は一人でどこへでも遊びに行くようになってしまい、休日に父親と公園で遊ぶことも少なくなっていた。

自転車の乗り方を教える父親が、上達の近道を秘密にしていたのは、そんな日が来てしまうまでに、少しでも寄り道をしておきたかったからなのかもしれない。

 

 

*1:論文のリンクはこちら

*2:上のリンク先からダウンロードできるkooijman-som-rev1.pdfというファイル。ちなみに私は全然理解できていない

*3:ちなみにさっきの論文は「ジャイロ効果を無くしても自転車を安定させることはできるよ」と言っている論文なので混乱するかも知れないが、一般的な自転車の安定性にジャイロ効果が寄与していることを否定している訳ではないので安心して欲しい。

ポケモンの模写をしていたら髪がごっそり抜けた話

2021年10月30日、Amazonの出しているタブレットFire HD 8を購入しました。元々興味があったところにタイムセールの3000円OFFが背中を押した形です。その他、タブレット用のペンやmicroSD、保護フィルムなど諸々を買い足したところ2万円くらいになったのですが、iPadなどと比べると破格の安さです。

私はタブレットで絵を描いてみたかったのです。

元々絵を描いたりしていた訳ではないのですが、YouTubeなどでお絵描きタイムラプスを見るのが好きだったということもあり、漠然とした憧れがありました。自分も描いてみたいと思うのは必然だったと言えるでしょう。

そんなわけで安めのタブレットを購入して、何はともあれ描いてみようと思ったのです。飽きれば趣味の読書にでも使おうと考えていました。

 

その三ヵ月後。洗面台で顔を洗っていた私は、鏡を見て愕然とします。

頭の左側、握り拳程度の広さで、髪の毛がごっそり抜けていたのです。

 

時は遡って2021年11月1日。念願のタブレットを手にした私は、さっそくお絵描きの準備を始めました。

必要なアプリをインストールし、一緒に購入したペンのセットアップを行いました。この段階で、ペンの反応がめちゃくちゃに悪いことに気がついたのですが、「弘法筆を選ばず」を捻くれて解釈していた私は、絵が描けないのを道具のせいにするのは恥ずかしいことだと思い込んでいたため、特に問題視はしていませんでした。

さて、準備は整いましたが、いざ描くとなると題材を何にしようかと迷います。

私は初めて買ってもらったゲームがポケモンだったということもあり、ポケモンの模写をしてみようと決めました。

模写の対象としたのは、下記の「ポケモンずかん」のページです。

zukan.pokemon.co.jp

 

この図鑑のNo.0001から1匹ずつ描いてみようと思ったのです。

ポケモンを描くにあたって私の決めたルールは次の通りでした。

  • トレースはしない(あくまで模写)
  • 色のスポイトもしない
  • 毎日少しだけでも描く

 

また、モチベーション維持のために、描いたポケモンInstagramのストーリーズにあげることにしました。この段階では、1日1匹が目標でした。

 

最初に描いたのは図鑑No.0001のフシギダネです。

 

最初に描いたポケモン : フシギダネ

初めてにしてはよく描けていると思いますが、まだレイヤーの使い分けも出来ていませんでした。

その後、フシギソウフシギバナを描き上げます。

フシギソウフシギバナ

相変わらずレイヤー分けは特に行っておらず、とりあえずはペンに慣れようと思って描いていました。

しかしここで、思わぬことに気がつきます。絵を描くのには予想以上に時間がかかるのです。

プロの方々がすらすらと絵を仕上げる様をタイムラプスで見ていたため、ポケモン1匹描くのに1時間もかからないだろうとたかをくくっていました。しかし、素人の私が「ラフ」→「線画」→「色」と絵を仕上げていくためには、それはもう果てしない時間がかかってしまうのです。実際フシギバナを描いた時には3時間以上の時間がかかっていました。

1日1匹を目標としていましたが、普通に会社員として働いている私にとって、毎日3時間以上の時間をかけることは難しいものでした。そこで、ラフ、線画、色、それぞれで1日として、3日で1匹を描きあげるペースに変更することにしました。

次に描いたのは、ヒトカゲリザードリザードンです。

ヒトカゲリザードリザードン

この段階で、YouTubeなどでお絵描き入門の動画を見ながら、レイヤーを分ける方法を学びました。ヒトカゲはレイヤーの使い分けに意識がいっていて、デッサンが微妙ですが、その後は割と安定しています。

次に描いたのはゼニガメカメールカメックスです。

ゼニガメカメールカメックス

レイヤー分けを含めたアプリの操作に慣れてきて、真っ白な背景を寂しいと感じ始めた頃です。

ここまで続けてきて、高校卒業以来連絡を取っていなかった友人からInstagramを通して絵の反応をもらうようになっていました。

次はキャタピートランセルバタフリーです。

キャタピートランセルバタフリー

いよいよちゃんと背景を描くようになってきました。キャタピーはアニメ「ポケットモンスター」でサトシが最初に捕まえたポケモンということもあって、私の中でも思い入れ深いポケモンです。アニメのキャタピーが月を見上げていた記憶があったので、それをイメージして背景を描きました。この頃から、模写するポケモンに対して違和感のない背景を描くことにハマっていました。

次はビードルコクーン、スピアーです。

ビードルコクーン、スピアー

この時は、ポケモンを如何にして背景に馴染ませるかを追求していました。コクーンあたりから、周りの風景からの反射を意識したカラーリングを行い、スピアーでは羽を透けさせることで、背景から浮かないようにしています。

次はポッポ、ピジョンピジョットです。

ポッポ、ピジョンピジョット

ここでは、奥行きを感じさせる背景に挑戦しています。「ハリボテ」という言葉はネガティブな意味で使われることが多いですが、私は好意的な印象を持っていて、本当は中身がないのに、そこに奥行き、広がりを持った世界を感じさせる技術は素晴らしく価値のあるものだと思っています。これを描いていたときも、絵の中に広がりを感じさせることはできないかと考えていました。

この頃には、友人たちから多くの反応をもらうようになっていました。それは大変嬉しいものだったのですが、同時にプレッシャーでもありました。私は「昨日よりも上手な絵を描かなければ」と思うようになり、睡眠時間を削って絵を描いていました。

次はコラッタ、ラッタです。

コラッタ、ラッタ

ここでは、光の表現でどんなことを伝えられるかを考えていました。コラッタの場合は、日陰の寒いところから日向に出たときの温かさを表現したかったのですが、あまり上手くはいきませんでした。ラッタでは、水たまりに映った光に挑戦していますが、思ったようには描けていません。

次はオニスズメオニドリルです。

オニスズメオニドリル

ここでも引き続き、光の表現に挑戦していました。オニスズメトランセルのときのリメイクであり、光にメリハリをつけています。また、オニドリルでは夜景にトライしています。

これまでよりも難しいことに挑戦すれば、当然、すぐには上手くいかないものですが、一度絵を褒められてしまった私は、自分の納得いっていない絵を公にすることを躊躇うようになっていました。

コラッタから始めた光の表現に関する試行錯誤も、今思えば何も恥じることはないのですが、当時の私は人に見せるレベルに達していないと感じていました。

次はアーボ、アーボックです。

アーボ、アーボック

このときは、初代ポケモンの水彩チックな塗りに挑戦しようとしていました。これまでのようなくっきりとしたハイライトはやめて、色を塗るブラシも変えています。

しかし、やはりこういった新しい挑戦は、私にとって非常にプレッシャーとなっていました。目だけは肥えてしまっていたので、自分の絵の悪い部分は分かるのですが、どう直したら良いのか分からず、何度も描き直すうちに午前4時を回るようになっていました。

そして冒頭の話に戻ります。

ある朝鏡を見てみると、髪の毛がごっそり抜けていたのです。

病院での診断結果は円形脱毛症でした。

正直なところ原因の特定は難しいのですが、私個人としては、お絵描きで睡眠時間を大幅に削っていたことが一因なのではないかと考えています。

脱毛に気が付いたのは、奇しくも、No.0025のピカチュウを描いていたときでした。

描きかけのピカチュウ

 

今回の試みで学んだことは多くあります。まず、何かを作り、そしてそれを人に見せるというのは想像以上に神経をすり減らす行為だということです。一度褒められてしまうとなおさらです。また、いつの間にか目的が変わっていたことにも当時の自分は気が付きませんでした。初めの頃は純粋に楽しんで描いていたはずなのですが、途中から周囲の反応を気にするようになっていたのです。こういった話はよく聞くものではありますが、実際に体験してみると非常に恐ろしいものでした。徐々に視野が狭くなり、目的の変化に気づかず、誰も責めはしないのに、謎のプレッシャーを感じるようになるのです。世の絵師さん達も同じような悩みを抱えているのか、それとも私の性格の問題なのかは分かりませんが、クリエイターと呼ばれる方々への私の見方は大きく変わったように思います。

彼らの営みはロウソクに灯る火のようなものです。それは、身を削りながら辺りを明るく照らしますが、その炎は、絶えず周囲の反応で揺れ動いており、誰かの何気ない一言がその灯を消してしまうこともあります。

友人たちの声援に気を大きくした私は、身の丈以上の炎を舞い上がらせようとして、結果的に多くの蝋を溶かし、最終的には燭台から転げ落ちてしまいました。

 

ポケモンの模写をやめてしばらくすると、髪は何事もなかったかのように生えてきました。それがプレッシャーから解放されたおかげなのか、睡眠時間を元に戻したおかげなのか、はたまた、単に病院でもらった薬のおかげなのか、今となってはもう分かりません。

 

最後になりますが、私は今でもポケモンと絵が大好きです。

この気持ちが変わらなくて本当に良かったと思っています。

そして次に絵を描くときは、最後まで楽しんで描けると信じています。

あのとき溶けた蝋が、今では私の足元を支えてくれている気がするので。

 

「英語喋ってみてよw」という呪いとその対処

「しばらく海外(英語圏)に行ってました」

という話をしたときに一番困るのは

「え、じゃあ何か英語で喋ってみてよw」

という反応である。

 まず前提として、海外に行く理由は人それぞれだ。観光を楽しむ人もいれば、仕事や勉強のために行く人もいるだろう。そこで得られた経験は代えがたいものであり、一生の財産になる人もいるに違いない。したがって、英語が話せるかどうかというのは、あくまで副次的なものであり、上記のような反応は、何か関係のないテストが急に始まったような気がして居心地が良くない*1

 「富士山に行ってきた」という話をしたときに「え、じゃあ足腰強いんだ、スクワットやってみてよw」と言われるくらいの意味の分からなさがある。

 もちろん、英語が話せなくて、特にこだわりもないのであれば正直にそう言えばいい

「いやそれが、話せなくても何とかなってさ」

といって、どうやって海外を切り抜けたかを面白く語れば良いのだ。問題は、それなりに努力して英語を勉強してきたという人たちである。彼らは決して短くない時間を英語の学習に投じている。渡航の目的が英語学習ではなかったにしても、ここで「話せない」と開き直ってしまうのは、自分で自分の努力を否定するような感じがして気がひける。

 しかし、何の対策も考えずに、「英語喋ってみてよw」に応えてしまうと、十中八九ろくなことにはならない。その理由は、この問いかけが持つ呪いのごとき厄介さにある。聞いた本人も別に悪気があったわけではないのだろう。単に最初に気になったのがそこだったというだけだ。しかし、この返答に間違えてしまえば、その場には微妙な空気が流れ、悔しい思いをし、本当に話したかった海外で得た経験の話をするどころではなくなってしまうのだ。

 努力してきたのだ、せっかくなら「すごい!!」と言われたいではないか

 今回は、これが如何に面倒な問題なのかの解説し、そして「すごい!!」と言われるためにはどうしたらよいかを紹介する。

 

 本記事の内容は至って不真面目だ。冒頭では意識の高そうなことも言っていたが、要は英語を使って「すごい!!」と言われたいという不純に満ちたモチベーションである。こんなものを読んでも英語の能力は上がらないので、真面目に英語を勉強したい人は退出することをおすすめする。

 

 

何がそんなに面倒なのか

「大して英語が話せないから面倒なの?」

と思う人もいるかもしれない。

 実際私は英語がそんなに得意ではないので*2、そもそも話すこと自体が困りごとではあるのだが、面倒さのポイントではそこではなく、仮にそこそこ話せたとしても、これは結構面倒な問題なのである。

とっさに出てくる文章の貧弱さ

何故面倒なのかをイメージしてもらうために、次のような場面を考えてみよう。

 この記事を読んでいる人の多くは日本人で、そうでないにしても、それなりに日本語が堪能な人間だと思われるが、もし日本に興味のある外国人に

「え、日本語話せるの?何か喋ってみてよw」

と言われたら何を話すだろうか?

特に準備していなければ

「え、こんにちは、いい天気ですね?」

とか

「えーっと、こんにちは、私は〇〇です...」

とかそんなことを言ってしまう人が大半なのではないだろうか?

しかしだ、そんな日本語を話したところで

「え?そんなもん?」

みたいな反応がない返ってくるに決まっているのだ。

つまり、この面倒さの根本には "何を話したら良いのかが分からない" という英語の能力以前の問題が存在するのである。

 特に日本人は、義務教育で少なからず英語を勉強しているため、上記のようなとっさに思いつく簡単な文章を英語にしたところで

「いや、こっちもそのくらい言えるけど?」

となってしまうのだ。

 挙げ句の果には「海外に行っておいてその程度?w」みたいな、訳のわからないいちゃもんをつけられてしまい、自分の海外経験そのものを否定されるような悔しい思いをするはめになる。

単なる準備はむしろ逆効果

ここまで読んだ人の中には

「じゃあ予め適当な文章を考えておいたら?」

と思った人もいるだろう。

 しかし、実際のところこれはあまりうまく行かない。何故なら、覚えておいた文章を急に発したとしても、圧倒的"準備感" が出るだけだからである。それでは暗記能力を披露しているに過ぎない。「がんばって覚えたんだな」と思われるのが関の山である。

英語に慣れすぎている日本人

日本人は義務教育で英語を勉強しているという話をしたが、日本人が英語に触れる機会はそれだけではない。

 映画や音楽といったエンタメで英語を耳にすることも多いし、街なかのポスターや平積みの雑誌などには英単語がふんだんに使われている。それらの意味する内容は分かっていなくとも「英語ってこんな感じだよね」という感覚が、日本人の中には形成されているのである。そのせいで、日本人は先程の例のような簡単な英文ではいまいち驚いてはくれないし、また何故か発音についてはめちゃくちゃに厳しい目を向けてくる。

 これがもし、中国語やドイツ語などのような「聞いたことはあるがよく知らない言語」であれば話は別である。先程のような簡単な文章でも、その異質さから「おぉ」となってくれるに違いない*3

 つまり、この面倒さの一旦は、相手が "英語に慣れすぎている日本人" であるという分の悪さにもあるのである。

 

どう対処すれば良いのか

それではいよいよこの対処方法をお話することにしよう。

 最初に断っておくが、これから紹介するのは、怠惰な私がたどり着いたインチキ紛いの小手先のテクニックであり、一歩間違えば非常に胡散臭い印象を与えてしまう諸刃の剣である。その点を承知した上で、取り扱いには十分注意して欲しい。

対処方法① : 特定フレーズの発音を極める

これまでの話と矛盾しているように思うかも知れないが、ここで提案するのは「フレーズを用意しておく」というものである。しかし準備するのは文章だけではなく、発音もセットで準備する必要がある。

 単に文章を用意しておくことの何が問題だったかと言えば、それがただの暗記であり、覚えれば誰でもできるものだったからだ。そこで、暗記ではどうにもならない技能の方でも入念な準備を行い、それを披露するのである。この世の全ての英単語について、その発音を完璧にする必要はない。何フレーズかだけ入念に練習しておけば良い。そしてこのフレーズは、「This is a pen.」のように日本人なら概ね皆知っているようなものが望ましい。あるいは、日本人が発音を苦手とする「water」とか「happy birthday」とか、そんなほとんど単語だけでも良い。つまり、聞き手が「何を言っているのか意味は分かるが発音が良すぎて真似できない」と思える状況を作るのである。

 実際、他人の発したたったワンフレーズの英語を聞いただけで「あ、この人英語話せるんだ」と思ってしまうことは多い。

 また実際のところ、この方法を使う際に発音が完璧である必要はないでのある。日本人は発音に厳しいという話をしたが、それは必ずしも発音が分かっていることを意味しない*4。多くの人が感じる"英語らしさ"に到達できるレベルであれば良いのである。

 これを成功させるには、もうひたすら練習するしかない。まずはフレーズを決め、Youtubeなどで正しい発音を聞き、それを繰り返し真似して、ネイティブに確認してもらう。ネイティブと話せる環境になければ、発音をチェックしてくれるアプリがいくつかあるので、それを利用する。私の場合は、とにかくたくさん話して英語っぽさを習得しようと思っていたので、森沢洋介さんの出している音読パッケージ(初級と中級)をやったりしていた。

対処方法② : 相手の日本語を英訳する

これは文字通り、相手の日本語をその場で英訳するというものであり、私の一押しの方法である。

つまり、

「え、じゃあ何か英語で喋ってみてよw」

と言われたら

「じゃあ英訳するから何か日本語の文章言って」

と返し、その後相手が言ってきた文章を英語で言ってあげれば良いのである。

 これは一見高度な技に見えるため、難しいと思うかも知れないが、安心して欲しい。どうせ相手も大した文章は言ってこないのだ。

 最初に話したように、この面倒さの根本には、そもそもとっさに出てくる文章が貧弱であるという英語以前の問題があったわけだが、それは相手も同じである。ここではそれを逆手にとり、相手の提案した簡単な文章を英語に訳そうと言うわけだ。これであれば、先程見たような「いや、こっちもそのくらい言えるけど?」という批判は飛んでこない。何故なら、その文章を寄越したのは、そもそも相手の方だからである。むしろ相手は、瞬時に英語にするという瞬発力を評価してくれる。細かい文法は気にする必要はない、勢いで押し通す度量が必要である。

 この方法の練習をするためには、常日頃、身の回りのことを英語で何というかを考えるようにすれば良い。自分のしている動作を英語で言ってみたり、とりあえず目に入ったものを英語で言ってみたりするのである。実際に相手に日本語の文章を言ってもらうときも、相手は自分の動作や目に入ったものから文章を作成する可能性が高いので、これは非常に有用な練習方法である。あるいは、自分の好きな歌詞をワンフレーズずつ訳してみるというのも割と楽しい。歌詞であれば、自分の貧弱な作文能力に囚われることなく、幅広い例文が大量に得られるのである。もっと偏りのない例文が欲しければ、同じく森沢洋介さんの出している瞬間英作トレーニングのシリーズが非常に便利である。

 

さいごに

 留学経験のある友人や、帰国子女の知り合いなども、この「英語喋ってみてよw」の呪いを受けたことがあるらしい。どうやら、この呪いの効力はその人の英語能力とはあまり相関がないようである。

 日本中の似たような悩みを持つ人の参考になればと思う。

 

 

 

 

*1:語学留学などの場合は話は別だが

*2:センター英語はぎりぎり半分の点数だったし、初めて受けたTOEICは270点だった

*3:一昔前のドラマやアニメでは、その登場人物が天才であることを示すために英語を話させていたが、日本人が英語に慣れすぎているためか、最近では別の言語を話させるケースが多い気がする

*4:ちなみに私も全然分からない。中学の時に、持っていた電子辞書の「Thursday」と「Saturday」が全く同じ発音に聞こえてバグってるんじゃないかと思ったことがある

19世紀半ばの

(本小説は2015年の第3回星新一賞に応募して見事落選したショートショート作品です)

 19世紀半ばの画家が、現在の、コンピュータを使って絵を描く人々を見たらなんというだろうか。
 ある人は、その充実した機能と使いやすさに称賛の声をあげるかもしれないが、一方で批判も大きいに違いない。
 コンピュータ上で描く絵など、現実の真似事でしかない。コンピュータでは、実際の繊細な筆遣いや絵具の微妙な変化は再現できない。それに、失敗しても少し戻って描き直せたり、後から色合いに手を加えられたりするのであれば、誰だって上手な絵が描けるのは当然だと。
 絵に何を求めるかでも話は変わってくると思うが、どちらかが良いのではなく、それもまた"絵"または"美術"の一つの形なのだと認めることが大事なのではないだろうか。19世紀半ばの画家だって、洞窟の壁に絵を描いている初期の人類に
「そちらのように絵を描くための上質な筆や平らなキャンパスが用意されれば、我々だってより美しい絵を描くことができる」
と言われたら同じ答えをするに違いない。時代とともに、新しい手法が生まれるだけの話である。
 ところで、これは小説にも言えることで、昔の小説家に今のコンピュータを見せれば、その編集能力に感動しすぐさま購入を決意するかもしれないが、漢字が自動で出てきたり、また資料がすぐに検索、閲覧できるインターネットの存在に嫌悪し、そんなもので書いたとしてもその人の作品とは言えないという人も現れるかもしれない。
 しかし、現在の考え方からすればそれは立派なその人の作品である。
 すっかり前置きが長くなってしまったが、要はどの時代の何を使おうと、それはその人の作品に他ならないということだ。
 私の使っている小説を書くための道具には、この時代で言うところの人工知能が搭載されている。これは21世紀の人間がコンピュータと呼ぶものとは似ても似つかない形をしているのだが、ともかくその道具の正当性を説明するためにもこの諄い前置きが必要だったのだ。
 イメージとしては現在多くの人間が使っているスマートフォンなどの予測変換の延長だと考えるとわかりやすいかもしれない。「のど」まで入力すれば「のどが渇いた」と、その人の普段の行動から推測して補完してくれる。そういった機能が今後さらに発展する。
 最終的に現在では、ちなみにここでいうところの「現在」というのは、この時代の人にとってすれば遥か未来のことなのだが、ともかくその頃には、たった一言で言いたいこと、書きたいことの全てを補完してくれる技術が生まれる。
 そんなことあるはずがないと思うだろうか。しかし、非常にショッキングかもしれないが、これを読んでいるあなたはすでにその技術を目の当たりにしている。
 実は私は「19世紀半ばの」までしか入力していないのだ。残りの全ての文章は人工知能による補完である。
 これに対して次のような質問が期待される。つまり「19世紀半ばの」から予想される文章は無限に存在し、それらの中から人工知能はどのようにしてたった一つの文章を決定しているのかという疑問である。
 ここが「人工知能」という言葉を使ってしまったがために生じる食い違いであり、この時代にそれしか該当する言葉がないのだから仕方ないのだが、この時代の人工知能と我々の使う人工知能とでは少々事情が異なるのである。
 この時代の人工知能と言えば、例えばそれ専用のソフトを立ち上げて、それに向かって「こんにちは」と言うと向こうがその言葉を理解して「こんにちは」と返す。そういうものを想像するかもしれない。
 しかし私の言う「人工知能」はそうではない。常にマイクとカメラがオンで随時情報を取り入れてる機械を想像するといいかもしれない。
 しかもそのマイクやカメラは機械についているのではなく、私の耳や目を使っている。少し離れたところにあるその装置が私の脳波から私の五感を読み取って、私と同じ体験をしているということになる。「脳波」などという語弊の生じそうな言葉をまた使ってしまったが、それが一番わかりやすいと思う。
 高度な人工知能と言うと、その装置の中には複雑で精密な回路が大量に詰め込まれているものを想像するかもしれないが、装置自体の処理能力的には、この時代のコンピュータとさほど変わらない。ではどのようにして高度な論理演算や数値処理を行っているのかと言うと、実はそれには私の脳を使っている。
 例えば21世紀の人間は大きな数の掛け算を行うとき、コンピュータに数字を打ち込んでキーを押し、モニタに映った結果から計算の答えを得るという経験をしていると思う。このとき人間が行っているのは疑問の入力と結果の読み取りだけで、計算自体は電卓に委託しているという状態にあるが、未来ではそれが逆転している。
 つまり人工知能は私の脳に疑問を投げかけ返ってきた信号から答えを得ているわけだ。
 ここまで説明してやっと先ほどの質問に答えることができる。つまり人工知能は私の脳を使って思考しているために、私が書きたいであろう一文を何の迷いもなく選び出すことができるのである。
 すると次に期待される質問として「それは普通に本人が書くのと何が違うのか」というものがあるかもしれない。そう考えてくれると私としても非常に嬉しい。つまりこれは紛れもなく私の作品だということになる。
 では普通に書くのと何が違うのかと言えば、一言で言ってしまうと単純に手間がかからないということだ。それにこの人工知能は、私以上に私の脳を使うのが上手なのである。
 さて、最後に期待される質問として「どうやってこの時代に小説の残すことができたのか」というものがあるだろう。ここが今回私が一番工夫したところで、ぜひ聞いていただきたい。
 時代を超える装置が開発されたのは意外かもしれないが最近の出来事で、まだ一部の研究機関しか所持していない。私の研究室では小型のものを1台保有しているのだが、とても人を送れる程のものではない。
 この時代でも、例えばメールを出すときに写真なんかを添付すると、容量が大きすぎて送信できないなんてことが起きると思うがそれと状況は似ている。二次元の写真ならまだしも三次元の人間は容量が大きすぎる。
 そこで考えた、人工知能が私の脳と交信するときに使っている信号なら過去に送ることが容易だ。そこで過去の、つまりこの時代の適当な人間の脳をジャックして今これを書いている。
 今後"時間超越"に関する法が整備されれば、おそらくこうしたことはできなくなるだろうと思い、今、深夜の研究室でこっそりと実験を行っていると言うわけだ。時代を越えてオリジナルの作品を残すというのがどういう感覚かは体験してもらわないとわからないだろうな。
 また、これを今書いている本人は、未来から送られてくる信号によってこれを書いているなどとは露程も思わないだろう。おおかた自分でSFでも書いているつもりになっているはずだ。平凡な人間を選んだためこの文章が世間に広まることはないだろうから、今後私が罪に問われることはない。
 さて、そろそろ通信を切らないと痕跡が残りそうだ。それでは今回の実験はこの辺にしよう。
 
 
 <<あらすじ>>
 時代とともに新しい道具が生まれて、その度に芸術活動というのは幅を増す。それは時に、昔であれば大変だった作業を簡単にしてしまうが、それによって生まれる芸術が芸術であることに変わりはない。
 人工知能で小説を書いたって、それはその人の作品だ。
 未来の人間がこの時代の人間の脳をジャックし、現代に人工知能を使った作品を残そうとする。脳をジャックされている本人はそのことに気付かず、自分で作品を書いていると思い込み作品を書き上げた。

シュレーディンガー方程式を巡る物語 : 序章

この世に原理的に解くことのできない物理方程式が存在することがわかったのは、シュレディンガー方程式が誕生するよりも遥かに前のことだったが、かといって何か対策が打てるわけでもなかった。よくある話だ。100年の眠りにつくことになるその美女は、結局のところ紡ぎ車を見つけてしまうのである。

ともかく、解けば世に溢れる全ての物質の性質が明かされるというその方程式は、ごく簡単な例を除いて解くことが出来ない。いわゆる多体問題というやつであるが、科学者たちがこの問題に出くわすのは、実はこれが初めてではなかった。

1890年、フランスの数学者アンリ・ポアンカレは、3つ以上の天体の相互作用を考えると、もはやその行く末を示す解を得ることは出来ないのだと、当時の王様に報告した*1。解くのが難しいのではなく、解くことが不可能であるというこの主張は、科学者たちに暗い影を落とす。今日、三体問題、ないし多体問題と呼ばれるこの問題は、原理的に解くことのできない物理方程式の存在を世に知らしめたのである。

それから約半世紀後、そらに浮かぶ星々を見上げていた物理学者たちは、ふと、自分たちの足元に未知の世界が広がっていることに気がついた。身の回りに溢れる原子や分子は、宇宙の天体とは全く異なる物理法則で動いていたのである。そんなミクロな世界を記述する量子力学において、シュレディンガー方程式は驚きと期待をもって迎えられた。その方程式を解けば、物質の色や壊れやすさ、温まり易さや冷め易さ、良い磁石、良い電池、良い薬を作るにはどうすれば良いかなど、まさにありとあらゆる性質がわかるのである。しかし同時に、物理学者たちは嫌な予感がしていた。身の回りの物質に適用したシュレディンガー方程式は、ポアンカレが三体問題を扱ったその方程式に良く似ていたのである。シュレディンガー方程式もまた、その中に多体問題を内包していることに研究者達が気がつくまでには、そう時間はかからなかった*2

身の回りの物を構成する元素の中で、最も単純な構造を持つのは水素である。これについてはなんとか解が得られる。さて、これまでのところ118個の元素の存在が知られており、私たちはこれらで構成された物に囲まれて生活している。シュレディンガー方程式が一体どこまでの元素について解を得ることが出来るのか、少し追ってみることにしよう。

何せ118個もあるのだ、長い戦いになるかもしれない。

みな、お弁当の用意は出来ただろうか。

さて、水素は1つの原子核と1つの電子で構成された元素であり、これについては厳密解が得られることについては既に述べた。それでは次のヘリウムについて見てみよう。これは1つの原子核と2つの電子で構成されている。

残念なお知らせだが、元素を巡るこの旅はここで終わりである。お弁当を持参してもらったのに大変申し訳ないが、昼前には家に帰れそうだ。原子核と電子、合わせて3つもの役者を持ち合わせているヘリウムについては厳密解を得ることは出来ないのである。

全てがわかるのだと調子の良いことを言っておいて、蓋を開けてみれば、水素についてしか解けないときた。悪い冗談である。だいたい水素だって、空気中では1人寂しく飛んでいるわけではない。もう1つの水素とくっついて、水素分子を形成しているのだ。そうなると原子核は2つで、電子も2つ、合わせて4つであり、やはり解けなくなるのである。

目の前のコーヒーを御覧なさい。その中では10の23乗個程の水分子*3がひしめき合っているのだと言ったのはアボガドロではなかったかもしれないが、今やそのへんの高校生でも知っている。それを今更、孤立した1つの水素の性質を解き明かす方程式を発表して何になるというのだろうか。

量子力学の教科書を開けば、真空中に浮かぶ1つの電子の話から始まり、それを井戸の中に閉じ込めたり、壁にぶつけたり、縄に結びつけたりと、PTAの苦情そっちのけで、徹底的に1つの電子をこき使う話がつらつらと述べられているのは、物理学者達の性格が捻くれている所為もあるかもわからないが、そうしないと解けないという事情があるのである。そしてその電子を原子核の周りに漂わせ、はいこれが水素だよと言ったところで量子力学(上巻)は、ここ一番の盛り上がりを見せる。

ところで、アポロ11号はどのようにして月に行ったのだろうか。アポロ11号を月まで運ぶには、地球と月、そしてアポロ11号自身の間に働く万有引力について計算し、その行く末について考えなければならない*4。しかし先に述べたように3つ以上の役者が互いに相互作用するとき、その行く末を表す解を求めることは出来ないのだった。これでは到底、宇宙船の制御など出来るわけがない。月面着陸陰謀論の再来であろうか?

ちゃぶ台をひっくり返すようでいささか忍びないのだが、実は3つ以上の天体についても、それらの運動を予測することは可能なのである*5。これまで使ってきた「解けない」という言葉をより厳密に言い直すと「解析的に解けない」ということになる。そして多体問題は、「解析的には解けない」が「数値的には解ける」と一般的に表現される。

キャッチーな出だしにしたいがために、このような曖昧な表現を冒頭からここまで使ってしまったことについて私自身何も思うところがないわけではないが、これは教科書でもなければ論文でもないので、あまり責めないであげてほしい。

ところで「数値的に解く」というのは一体どういうことなのだろう。

ちょっとここで「 \displaystyle x^2 + 2x - 3 = 0」みたいな方程式を考えてみよう。

「あー、なんか中学のときにやったな、解の公式とか使うんだっけ?」

と思った人も多いと思うが、これは別に公式を使って解く必要はないのだ。要はなぞなぞである。

「二乗したやつと、2倍したやつを足して、そこから3を引いたら0になる数はな〜んだ?」

といった具合だ。試しに0でも代入してみよう、そうすると

 \displaystyle x^2 + 2x - 3 \Rightarrow 0 + 0 - 3 = -3

となって、これは0よりも小さすぎる。では、次は3でもいれてみよう。そうすると、

 \displaystyle x^2 + 2x - 3 \Rightarrow 9 + 6 - 3 = 12

となって、今度は0よりも大きくなってしまった。この0から3の間がどうも怪しい。私はこの問題を作った人の性格がそこまで悪くはないと信じたいので、今回の場合それは私であるのだが、ともかく意地の悪い答えではないと期待したい。すなわち1/2とか√2だとか \displaystyle \pi だとか、そういうのが答えだとは思えない*6。そこで次は1を代入してみよう。そうすると、

 \displaystyle x^2 + 2x - 3 \Rightarrow 1 + 2 - 3 = 0

となって、見事0になった。したがって、なぞなぞの答えは1である。これは二次方程式なので、解はもう一つあるのだが、今回はこの辺にしておこう。ともかくこれが、数値的に解くということである。

しかし実際には、こんな当てずっぽうな解き方はしない。多体問題なんて厄介な問題を人間に押し付けるような神様の性格が、そこまで良いことを期待するほど科学者はお人好しではないのだ。

この物語は、「解析的に解けない」その方程式に、なんとか解を見出そうとした人々の挑戦の歴史である。

次回「ハートリー・フォック近似」〜別たれた電子たち〜

 

 

*1:ポアンカレが主張したのは、正確には「制限三体問題を可積分系の摂動で表した際に、それが摂動パラメータに解析的に依存する第一積分を持たない」というものであり[1]、任意の質量を持つ3つの質点の三体問題について、その非可積分性が証明されたのは2011年になってからである[2]

*2:ちなみに、古典力学における多体問題が解析的に解けないという証明については、色々と文献が見つかるのだが、多体シュレティンガー方程式の非可積分性について、その証明を与えた文献は見たことがない。一時期必死に探していたのだがついに見つからず、どの文献も「解くのが困難」程度のことしか書いてないようだった。もしそのような文献の存在を知っている人がいれば教えて欲しい...

*3:コップ一杯分の水分子の数は、より正確には6×10の24乗個程度になる。

*4:NASAの技術覚書[3]

*5:アポロの軌道計算を担当したJack W. Crenshawさんのブログ[4]。残念ながら、この人の出した論文のうちネット上で無料で読めるものはほとんどなかった...

*6:この例にある方程式は有理係数の代数方程式なので、問題作成者の性格に依らず、そもそも \displaystyle \pi を解に持つことはあり得ない。