Chaintope 中城元臣氏インタビュー #1 イーサリアムの開発環境に感じた危機感

Chaintope 中城元臣氏インタビュー #1 イーサリアムの開発環境に感じた危機感

Tsuyoshi Kaji / 編集長
Tsuyoshi Kaji / 編集長
2019/04/10

はじめに

本インタビュー企画では、次のインタビュー先をインタビュイーが指名する「数珠つなぎインタビュー」として、ブロックチェーン周辺領域で活躍される方々にお話を伺っています。

第一回のインタビューでお話を伺ったCryptoeconomics LabのCEOの片岡拓氏から指名していただき、株式会社Chaintopeのイーサリアムリサーチャー中城元臣氏にインタビューを行いました。

以下、インタビュー内容。

飯塚の地をアジアのシリコンバレーに

Chaintopeでイーサリアムの研究開発を始める以前はどんなことされていたんですか?

中城:以前は主にBtoBのWebアプリケーションやモバイルアプリケーションの開発を行なっていました。もう少し遡ると、そもそもChaintopeはHAW Internationalという会社からブロックチェーンのチームがスピンアウトしてできた会社なんですが、HAW International自体もChaintopeの社長の正田が1999年に福岡の飯塚に立ち上げたITベンチャー企業で、僕がまだ九州工業大学に在学している時に入社しました。

僕はもともとプログラマーになりたかったので、サークル活動で付き合いのあった正田にバイト代もいらないから働かせてくださいと頼み込んで実際に仕事をやりながらプログラマーとして勉強させていただきました。本当に初期のHAW Internationalは正田もほとんど社会人経験がない状態で学生だけが集まったような会社だったので、お金をいただいてはいたものの、右も左も分からない中、今では到底仕事とは言えないような仕事を自分たちなりに色々試しながらやっていました。

一番簡単な仕事だと講演会のテープのデジタルデータへの書き起こしであったり、市町村のアンケートの集計をデータとしてまとめてレポートとして提出したりというようなこともありました。

 

それから約20年でどのように今のHAW InternationalとChaintopeに成長したのでしょうか?

中城:近くでITの会社を長年やっている会社の方や地元の影響力のある方々に非常に協力していただいて、仕事のやり方を教えてもらったり出資していただく中で少しずつ大きくなっていきました。

当時はまだ2000年代でJavaという言語は認知こそされていたものの今のように流行ってはいませんでした。ちょうど仕事のやり方を覚え出した時期に大きいシステムのCOBOLからJavaへのリプレースが色々なところでありました。正田は技術に関して先見の明があり、Javaが流行っていないときから「これからの時代はJavaだ」と言っていたため、社内にJavaの知見があり、大きな案件をいただきました。

次はスマートフォン以前の携帯電話でiモードでWebを見られるようになったり携帯電話用のアプリを開発できるようになりました。それがJavaをベースとした環境だったので、Javaの強みを生かしてWebとモバイルの両輪でやっていこうと定めました。地元や福岡にはそういうことをやっている企業は多くはなかったので規模は小さいながらも仕事には困らない程度でした。

正田はずっと「飯塚をアジアのシリコンバレーに」と言っていて、元々HAW Internationalも正田が技術によって地域を活性化するために始めた会社です。そのころはちょうど就職氷河期世代だったので、暗いニュースばかりでした。これを打開するには「自分たちが世の中をよくしていかなければいけない」という意識を持った若い力が必要だということで、ベンチャー精神を養うサークルを起こしていました。そういったサークルなどの活動の中で地域の人たちにお世話になったので地元に恩返しをしたいというのが会社の目的で、真摯な姿勢を評価していただいていました。そういうこともあり、これまで何度か会社が潰れそうになった際も出資などの支援をいただき、徐々に今のHAW InternationalとChaintopeに成長してきました。

VMの開発経験を生かしたEVMへのアプローチ

イーサリアムの研究開発以前にやっていたにBtoBのWebアプリケーションやモバイルアプリケーションというのは具体的にどういうものですか?

中城:色々やっていて、既存の業務をWebアプリでリプレースするようなものや、特殊なものだとPC用ホームページから携帯電話用ホームページへの自動コンバートシステムの一要素として画像のコンバート機能を作ったこともありました。

スマホが出る少し前くらいに携帯電話で画像や音楽であったりショート動画やフラッシュが動くようになり携帯でホームページを見る人が増えていたため、カスタマー向けの会社はエンドユーザーにアプローチするために携帯用のホームページを作る必要がありました。ですが大きな会社だとページ数が非常に多く、当時は携帯用のページは別で作る必要があったので莫大なコストがかかっていました。そういう経緯で大きな画像を小さい画像に劣化なくコンバートする機能を作りました。

当初はimagemagickというC言語で書かれている有名な画像の編集系のツールを使っていたんですが、全体のシステムはJavaで作られていて、imagemagickがJavaのVMを巻き込んで落ちるという原因不明の問題が発生していました。それに対処するためにJavaで全て置き換えてくれという案件でした。僕は社内で自称天才だったので、営業の人にこれくらいできないと天才とは言えないんじゃない?と言われ、引き受けました (笑)。

結果としては当然100%置き換えることはできませんでしたが、普通の人が見ても遜色がない程度に、自分なりには90%ぐらいは十分な変換効率を持っているものができました。ちなみに、メモリの効率を考えてプログラムを書いたところ、意図せず変換速度が20倍くらい向上していて、非常に喜ばれました。

他にもAndroidが出た当初にニューラルネットワーク的な学習で個人の癖を学習する手書き入力アプリを作ったり、遺伝的アルゴリズムでスタッフのスケジュール管理の入力補助をするアプリを作ったりなど、自称天才だったので他のみんなが受け取らないよくわからない仕事が回ってきてましたね (笑)。

今のブロックチェーンに関わるものだと、docomoとSoftBankとauの3キャリアがそれぞれ携帯電話を出していて、それぞれ別の言語でアプリを動かしていた時代に、3キャリア共通で動くアプリケーションを作るためのちょっとした薄いOSを作りました。XMLでサーバーがデータを受け取った後にXPathを使ってクライアント側でフィルタリングして画面に表示するというものだったのですが、そのXPathの実行エンジンというのをメインで担当していました。

具体的にはXPathをそのまま使うと大変なので一旦中間言語に落としてそれをさらにopcodeのようなバイナリに落としてクライアント側ではそれを実行するための実行エンジンを作るということをやっていて、ちょうど今のイーサリアムのEVMと同じようなものだったので、その時の知識が今活かせていると思います。僕がEVMにアプローチしている原体験としてはそこです。

イーサリアムのコントラクト開発環境に感じた危機感

会社でブロックチェーンをやってねと言われて研究開発を始められたと聞いていますが、会社に言われたとはいえ、今のようにブロックチェーンに惹かれたきっかけはなんだったんでしょうか?

中城:自分なりの役割として、社員教育と開発に困っている人たちへの教育と環境改善というのをずっと意識していて、何か劇的な成果を出せて訳ではありませんが、困っている人がいたら一緒に調べてたり、ちょっとしたツールを作って作業コストを下げたりということは積極的に行なってきました。僕はプログラマーなので開発環境が悪くコストがかかるような環境はあまり好きではなくて、煩雑なことを削ぎ落として本当にやるべきことだけに注力するツールを作ることがエンジニアリングだと思っていますし、そういった環境を用意したいとずっと思っていました。

その中で会社に言われてイーサリアムを勉強しているうちに開発環境があまりにも酷いということを目の当たりにして、しかも書いたら大金が盗まれるかもしれないプログラムをプログラマーの自己責任で開発するというのは酷いと思いました。惹かれたというより、まずこの環境をなんとかしなければいけないという危機感がモチベーションとして一番大きいですね。

それに加えて、僕がちょうど勉強を始めた時に町野さんという方がHi-Etherという開発者コミュニティを作ってお互い質問し合いながら学び続けられる環境があったので、そういったタイミングの良さもあると思います。

 

基本的には開発ツール・開発環境に関心を持って研究開発をされているということで、実際に開発ツールを作ったり、ツールの開発にcontributeするのがメインの活動なんですか?

中城:基本的には会社ではプロダクト開発がメインでイーサリアムは趣味の領域ですね (笑)。会社はイベント活動などは応援してくれているのでプロダクト開発だけに注力しろと言われることはありませんが、基本的にはプロダクト開発チームに入っていて実際にコード書いたり、同僚の谷口とbitcoindの中身を調べたりしています。仕事が終わったらイーサリアムを調べたり、休みの日になったらツールの開発にコントリビュートしたりしています。

代表的なものとしてはsol-traceというツールのコントリビューターとして活動をしています。最近は少し更新が止まってはいますが、ツールの内容としてはSolidityのデバッグツールです。Solidityはrequireというアサーションのようなコードを書くことはできますが、実行されるときはbytecodeにコンパイルされたものが別のノード上で実行されるので、requireのチェックに引っかかったときのエラーは返ってくるもののSolidityコードのどの部分かは返してくれません。

調べようと思えば調べられるだけの情報は用意されていますが、そこまでアプローチしてデバッグトレースを出すツールが今のところないのでそういったものを作っています。今のところTruffleを使ったテスト上でしか実行できませんが、Truffleの環境にsol-traceを入れてテストを実行すればトランザクションがリバートされたときにSolidityのどの行が引っかかったのかがわかります。ちなみにCryptoeconomics Labの部谷さんが熱狂的なファンでTruffleの環境を作ると最初にsol-traceを入れると言っていました。

仕組み上Vyperにも転換はできるので折りを見て対応したり、今はTruffleのテストでしか対応できていませんが、Truffleコンソール上でも実行できるようにできればテストネットに上がっているおかしな挙動をしているコントラクトを簡単に調べられるようになるのでそういったアップデートは予定しています。

開発ツール以外だとEVMのopcode関係のアップデートや新しい提案があったときには自分なりにまとめてブログだったりTwitterで情報発信しています。

 

第一回はここまでになります。第二回では開発について掘り下げ、中城さんの開発・ガバナンス思想や開発者視点のブロックチェーンとビジネス・社会の関係のあり方について語っていただきます。


Chaintope:https://www.chaintope.com/

中城元臣氏 Twitter:https://twitter.com/nakajo

LINE@

LINE@で最新情報をチェック!!

Economies 2.0のLINE@を友達に追加して 最新情報を受け取りましょう

LINE@で最新情報を受け取る