かれこれ1か月間、仮想通貨のイーサリアムと格闘してきた。もちろん本物ではなく、自分で作ったプライベート・ネットワーク上で動かして勉強(遊び?)しているのである。その経緯は7月初めのコラム「本質的な問題解決には程遠いのだが」で書いている。あの時点で、教科書通りにイーサリアムのプログラムを仮想マシン上で動かして、マイニングしたり送金したりはできていた。問題はそこからである。せっかくなのでブロックチェーンの仕組みを勉強しようと、コントラクトというプログラムを作ってブロックチェーンにデプロイ(登録)しようとして進まなくなった。
コントラクトはSolidityという独自の言語で書く。書いたプログラムはコンパイラでコンパイルしてできたコードをイーサリアムの動いている世界に送り込まなければならない。教科書でも様々なサイトでも、Solidityのプログラムを作るツールがすでに提供されていて、それを使えば簡単だと言う。使う方法としては、ツールをダウンロードして使う、ウエブサイトにあるツールを利用する、自分のパソコンの仮想環境の中にツールを作りこむ、の3種類がある。結果としてすべて失敗だった。ダウンロードする方法とウエブサイトのツールを利用する方法は、どちらもコントラクトをイーサリアムに送り込もうとして通信のエラーで失敗した。その原因究明に何日もかけたがネットで紹介されている解決策のいずれも効果がなかった。ツールの作りこみはもっとひどい状況で、インストールの途中で鬼のようにエラーが出て、ネットで紹介されているその解決策もすべて効果がなかった。結局、ツールと仮想環境のバージョンが合わないからだろうと結論づけて終わりになった。
しかし、このままで終わっては女が廃る、と最後の手段を取ることにした。自分の仮想環境の中に、Solidityのコンパイラを入れ、コンパイルしてできたコードを直接イーサリアムのブロックチェーンに送り込む方法である。その一連の操作をJavaのプログラムで行う。もちろんこの方法のお手本はネット上で見つけた。SolidityもJavaも実は初めて使う。何しろ40年前のプロラマなので最後に使ったC言語すら覚束ない。それでも、授業や学生指導の合間を縫っては、英語で大量に出るエラーメッセージと格闘しつつデバッグを進めた。そして遂に、2つのコントラクトがブロックチェーンに登録され、イーサリアムの実行中にそれが確認できたのである。まあ、それだけのことなんだけど。
さて、この最後の時点でなぜ私にデバッグなどする時間があったのかと言うと、丁度、学生の研究発表用のポスターの印刷が行われており、次の日まで私が預かることになっていたからである。一人の学生が自分の荷物を私の部屋に置いたまま印刷に出ていた。プログラムのデバッグに夢中になっていて気づかなかったが、もう3時間も経っている。他の学生のポスターは全て届いている。あれ、どうしたのだろう。と思ったら息せき切って戻ってきた。プリンタと自分のパソコンのインタフェースの問題か、資料のサイズの変更が必要になりそれに手間取っていたとのことである。私は満面の笑みで迎えた。心の中で、「時間をありがとう。お蔭でコントラクトのデプロイ大成功だったよ」とつぶやいていた。
自分の信念に従って行動する「高い志を持つ、市場価値の高い技術者」を育成します。
「市場価値の高い技術者の育成」を目指して、
コンサルティングと研修のサービスを提供します。
所長:石田厚子 技術士(情報工学部門)博士(工学)
コンサルティングと研修のサービスを提供します。
所長:石田厚子 技術士(情報工学部門)博士(工学)
トップページ > コラム
時間をありがとう
2018.07.22