CodeIQ MAGAZINECodeIQ MAGAZINE

bitFlyer CTOとC#のRedCoderに「ビットコインとブロックチェーン技術の魅力」を聞いてみた

2018.01.29 Category:インタビュー Tag: , , , , ,

  • 29
  • このエントリーをはてなブックマークに追加

最近注目のビットコイン。単に投資対象としてだけでなく、暗号化やPeer to Peerネットワークによる分散処理などの技術が、最先端を追うITエンジニアの興味と関心を引き寄せている。
国内最大の仮想通貨取引所として成長を続けるbitFlyerを訪ね、ブロックチェーン技術や技術者にとってのビットコインの魅力を聞いた。
by 馬場美由紀 (CodeIQ中の人)

本質を知るためには、ソースコードや論文を読むのが手っ取り早い

2009年、サトシ・ナカモト氏が論文に書いたプロトコルとそれを実装したBitcoin coreによって始まったビットコイン。中央銀行が存在せず、Peer to Peer(ピア・トゥ・ピア)のネットワークに分散されたコンピュータよって管理され、決済されるという仮想通貨の仕組みは瞬く間に世界に伝播していく。

ビットコインは法的には通貨ではなく支払い手段の一つだが、取引所や販売所で取引されており、需給を反映して価格が付いている。2016年1月に日本円換算で1BTC=10万円前後だった相場は、その後、世界の個人投資家を呼び寄せ、激しい乱高下を繰り返しながらも17年末には急騰し、200万円前後を推移した。

世界のビットコインの時価総額は33兆円を超え、トヨタ自動車の株式時価総額をはるかに抜き去った。

ビットコインに魅せられているのは投資家ばかりではない。ITエンジニアの間では、以前からマイニングに参加し、仮想通貨取引をする人が多かった。投資対象としてはもちろんこと、エンジニアを惹きつけるテクノロジーの魅力がそこにあるからだ。

ビットコインのすべての取引履歴を記録するブロックチェーンがその一つだ。ブロックチェーンはネットワーク上のノードに分散的に記録される。簡単な計算で取引の整合性を誰もが検証することができる。

「ブロックチェーンは分散ネットワークと暗号学を活かした新しい仕組み。とりわけ、個々のトランザクションが暗号によってある程度の整合性を担保し、それに直行する別の方法で全体としてデータを統合できている点がすごいと思います。

ブロックチェーンは一見複雑そうですが、WebサーバーやRDBを新たに作るのに比べればはるかに簡単な技術です。ただ1台のコンピュータシステムだけで完結せずに動的なチェーンを意識して理解する必要があるので、一見するとわかりにくいかもしれません。

仕組みの本質を知るためには、ソースコードや論文を読むことが手っ取り早いです。というかそれくらいしかまとまった情報はないです。しかし、世界の経済の仕組みを民主化するという理想がそこには込められていますし、FinTechという観点で見ても技術的に新しいものなので、技術者としてはわくわくするような面白さがあるのです」

株式会社bitFlyer 取締役 CTO 小宮山氏

そう語るのは、国内最大(※)のビットコイン販売・取引所「bitFlyer」の取締役CTO小宮山氏だ。

ゴールドマン・サックス証券の決済システム開発などを経て、現CEOの加納裕三氏と共に、2014年にbitFlyerを設立。仮想通貨の販売・取引所、決済システムを一から手がけ、2017年12月にはbitFlyerを短期間でユーザーが100万人超、月間取引量9.5兆円という国内最大規模のプラットフォームにまで育て上げた人物である。

※シード・プランニング社(2017年2月仮想通貨取引所のビットコイン取引量シェア調査)、およびbitFlyer社調べ

仮想通貨の取引所運営とブロックチェーンの研究開発を組み合わせる

bitFlyerからは、ビットコインを利用したクラウドファンディングサービス「FundFlyer」や、秒速でビットコインが交換できる「bitWire」、法人向けビットコイン決済ソリューション「bitWire SHOP」など先進的なサービスが次々に誕生している。

それだけではない。小宮山氏は社内に設けられたブロックチェーン研究所の所長も兼任し、ナカモト論文にインスパイアされた、同社オリジナルのプライベートブロックチェーン・プロダクト「miyabi」の開発もリードする。

同社は仮想通貨の取引所販売所の運営主体であると同時に、ブロックチェーン技術の研究開発集団でもあるのだ。両者は技術的に密接につながっており、エンジニアの人的交流も盛んに行われている。

それにしても、なぜ自分たちでブロックチェーン・プロダクトを作ってしまうほどの研究開発が必要なのか。

「ビットコインには、オープンソースのbitcoin coreというクライアントがありますが、それをナマで使うだけでは、いくつかの制約があります。例えば、自分のアドレスにいまビットコインがいくらあるかはわかるが、それ以外の世界中のアドレスにいくらあるかはわからない。理論的にはわかることになっているが、bitcoin coreのデフォルト実装ではそれを現実的な時間内にインデックス化するのは容易ではないのです」

ブロックチェーンやビットコインがどのような仕組みで動いているかを本質的に理解するためにも、OSSに頼らず、同社独自のクライアントを作成することが不可欠だった。安心・安全の仮想通貨取引を支える上でも本質を見極めることが欠かせないのだ。

そうした技術を集大成したのが、2016年末に発表された「miyabi」だ。同社が独自に設計した合意アルゴリズムやスマートコントラクト環境を実装し、.NET Frameworkを開発環境にして、すべてC#で書かれている。

半端ないC#へのこだわり。コードを読めば誰が書いたかがわかる

C#へのこだわりは、bitFlyerの技術的特徴ともいえるものだ。

「僕自身はこれまでのエンジニア生活でいろんな言語を使ってきました。しかし、4年前にbitFlyerを始めるときは、C#しか選択肢がなかった。現在はbitFlyerのシステムはすべてC#で書かれています」と、小宮山氏は言う。

選択肢がなかったというのはどうしてか。金融業界ではむしろJavaエンジニアが多いはず。C#はラムダ式を使えるようになったC#3.0からはその進化がめざましい。

「まずPHPとかRubyなど静的型付けができない言語よりも、C#の方がシステムを組む言語に向いていると僕は考えています。

そうなると選択肢は限られるわけですが、C#は洗練度が高く、VisualStudioという優れたIDEもあり、あれこれと迷うことなく開発環境を選択できる点もプラスに働く」

小宮山氏には経験上「プログラムが大好きな人は、C#も好きという印象」があるという。一見、マイナーと思える技術への執着も、その背景には技術全般への広汎かつ貪欲な関心が存在している。いわば「ギーク」だからこそ、C#を選択するということがあるのだ。

エントランスに展示されているビットコイン採掘(マイニング)の専用機。採掘に特化したASIC(集積回路)が搭載されている。

bitFlyer設立にあたって、小宮山氏はエンジニアを集める必要があった。そこで求められたのは、フロントエンドからバックエンドまで、Webアプリケーションサイドからサーバーサイドまで一貫して理解し、さらにはFinTech領域のテクノロジーについても高い関心を示す“フルスタック”のエンジニアだった。

最初期のメンバーは約10人。「この10人については、コードを見ただけで誰が書いたかわかる」と、小宮山氏は言う。

その10人をコアに、現在のエンジニアは30人まで増えた。未踏クリエータ、元Microsoft MVP、スタートアップでCTOを経験したこともあるエンジニアもいる。

メンバーの前職は金融業界だけでなく、ゲーム業界、SIerとさまざまだが、全員に共通するのは「プログラムを書くことが三度のご飯よりも好きなこと」だという。

精神としてのアジャイル。変化を恐れない自己成長型組織

bitFlyerのCTOとして小宮山氏が大切にしているのは、「プロセスやツールよりも個人と対話を」「包括的なドキュメントよりも動くソフトウェアを」「計画に従うことよりも変化への対応を」と述べるアジャイルソフトウェア開発の精神だ。

bitFlyer社内でアジャイルが開発手法として導入されているわけではないが、この精神はどんな開発プロジェクトでも重要だという。

とりわけ、地球上に登場してからまだ10年足らずのビットコイン、設立されてからわずか4年のベンチャーbitFlyerにとっては、最後の「変化対応力」が最も肝心である。

「そもそも、エンジニアというのは誰かに指示されて仕事をする人たちではないと、僕は思うんです。作業を指示できるということはすでに設計ができているということ。設計ができているのなら、つべこべ言わずにプログラムを書いたらいい。

指示命令ではなく、一人ひとりが目となって手足となって、力量と責任感をフルに発揮して、プロジェクトに参画する。そういう組織であってほしいと思っています」

たとえるなら、一つひとつの神経細胞が自己増殖しながら、左右上下に突起を延ばして他の細胞と自在につながっていく組織。CTOはその全体系を見わたしながら、時には突起を延ばすのを手伝ったり、右と左を入れ替えたり、組織全体に栄養を供給したりする、そんな役目を担うというわけだ。

「フルスタックエンジニア集団から始まった当社のエンジニアリングも、事業の成長に伴い、今後はそれぞれの専門に特化する形で分化していくようになると思います。

求めるのは、必ずしもブロックチェーンを作れるようなエンジニアだけではない。Webアプリケーション開発のスペシャリスト、Azureのインフラエンジニア、データベースプログラムの開発者など、さまざまな技術が必要になります。

金融業界の経験は必須ではありませんが、FinTechで使われる基本用語は理解していてくれれば嬉しいですね」と、小宮山氏は求める人材像を語っている。

RedCoderプログラマがビットコインに描く夢を語る

黄檗(きわだ)氏は、埼玉大学大学院在学中にACM-ICPC(国際大学対抗プログラミングコンテスト)世界大会に日本代表として出場した実績を持つ。

Google Code Jam、TopCoderといった競技プログラミングにも参加しており、TopCoderでは世界で600名程度しかいない、RedCoderとしてランクされていた。

前職のWebシステム開発企業で小宮山氏と働いた経験があり、その頃からbitFlyerのシステム開発に従事してきた。bitFlyer設立後の2015年にサーバーサイド、ブロックチェーン担当エンジニアとして正式にジョインした。

黄檗氏にビットコインに描く夢を語ってもらった。

株式会社bitFlyer 黄檗(きわだ)氏

暗号学的な要素が技術的に面白い

ビットコインはお金の流通の仕組みを根本から変えるもので、世界を変える技術の一つだと確信しています。だからこそ、bitFlyerでその技術の一端を担えているという自覚を持つようにしています。

ビットコインの仕組みは、最初はよくわからなかったのですが、ナカモト論文を読んで概念は理解できるようになりました。

しかし、実装に関する情報は少ない。そもそもドキュメントがなかったりします。仕様も膨大で、それを説明しようとすると一日では足りない。それでもなんとかWebで情報を集めるうちに、暗号学的な要素をふんだんに取り入れているところが、技術的に面白いなと思うようになりました。

最初は、ビットコインの取引状況がWebでわかりやすく可視化できる自社サービス“chainFlyer”の開発に従事していました。その後、ブロックチェーンのドキュメントの制作、ビットコインの監視ツールの開発にも携わっています。

bitFlyerは最初の頃はエンジニアが5人ぐらいしかいなかったので、フルスタック的に仕事をしました。そこで、スキルを広げていったのですが、ブロックチェーンやビットコインの技術領域は幅広く、私もまだ全貌を理解しているとは言えません。

Bitcoin coreに反映すべく提案されたものの、実装が進んでいない技術も多く、これからも進化し続ける技術だと思います。

セキュリティもその一つです。仮想通貨はビットコインの他にも多数あります。中にはチェックサム機能が弱い通貨もあるし、通貨につけられている符号が似ているために、通貨交換の際にミスが起こる可能性を否定しきれません。

他にもサイバーアタックからどうシステムを防御するか、暗号鍵の安全性をどう担保するかなど、セキュリティ上の課題は多く、そうした発展途上にあるところがエンジニアにとっては魅力です。

ビットコイン技術を深めるためには、Peer to Peer、楕円曲線暗号、公開鍵・秘密鍵などのセキュリティ技術、さらにはソースコードを読むためのC#やC++の知識など、たくさんの知識が求められます。自分でアグレッシブに技術を追いかけるタイプのエンジニアにとっては、飽きることのない技術領域だと思います。

最近は監視作業も多いのですが、そこでデーモンがちゃんと稼働していないなど問題を発見し、その原因を解明してバグフィックスするのは好きな作業です。

必ずしも自分のコードのバグとは限らず、ライブラリーのバグだったりすることもあるので、それを発見したときはワクワクしますね。このあたりは、もともと競技プログラミングが好きだったという自分の性格が反映されているのかもしれません。

今後、bitFlyerが企業として大きくなっても、生涯、一プログラマとして過ごしていきたいと思っています。もちろんそのためには、より快適にプログラミングができる環境整備が必要となります。テストの自動化など開発環境の改善はこれからの自分のテーマの一つです。

(執筆:広重隆樹 撮影:刑部友康)

【PR】ブロックチェーン経験不問!プログラミング好きエンジニア募集

bitFlyerでは、C#、ASP.NETでの開発経験を持つエンジニアはもちろん、Javaなど、C#以外での開発経験者でプログラミングが大好きだというエンジニアを募集しています。以下の志向性やスキル・経験がある方は、ぜひこちらから詳しい求人情報をご覧ください。

【C#エンジニアの必須スキル・経験】

  • .NET Framework、ASP.NET(C#)等での開発経験5年以上
  • SQL Server経験5年以上
  • Web API開発経験

【C#エンジニアに歓迎するスキル・経験】

  • データベース・SQL基礎知識、モバイルアプリ開発に関する基本的な理解
  • 大規模トランザクション処理経験
  • サーバーサイドからクライアントサイドまで幅広くカバーできる広範な技術知識

【C#未経験者の必須スキル・経験】

  • C++、Javaなどでの開発経験3年以上
  • データベース経験3年以上
  • データ構造やアルゴリズムについての知識
  • 並行/非同期処理プログラミングに関する知識

⇒ 国内最大のブロックチェーン企業bitFlyerが【C#エンジニア】募集!

アルゴリズム問題に挑戦!bitFlyerがあなたの解答を見てスカウト

ITエンジニアのための実務スキル評価サービス『CodeIQ』で出題されているスキルチェック問題を解いてみよう!

☆☆☆☆☆☆☆☆☆☆☆挑戦は【こちら】から!☆☆☆☆☆☆☆☆☆☆☆

☆☆☆☆☆☆☆☆☆☆☆挑戦は【こちら】から!☆☆☆☆☆☆☆☆☆☆☆

あなたの解答を見て、bitFlyerまたはbitFlyerから代行委託を受けたCodeIQ運営事務局からのスカウトメールが届きます。ぜひ、チャレンジしてくださいね♪

  • 29
  • このエントリーをはてなブックマークに追加

■関連記事

ロボットやIoTで、保育園や幼稚園の課題を解決――家族を笑顔にするユニファのサービスとは?... 多忙な保育士や幼稚園の先生の負担を軽減したい 女性の社会進出を支援するために欠かせない保育園や幼稚園。しかしその園を運営する側は、大きな負担がかかっている。中でも子どもを預かる時間が長い保育の現場では、事故をいかに起こさないようにするかは大きな課題である。 保育士は多忙だ。保育園によって異なるが...
多言語対応の商品検索アプリ「Payke」の見る未来【#TechスタートアップPR特集】... 言語を超えて「モノ」に情報を与え、価値を最大化する ――Paykeのビジネスについて教えてください。 古田:「Payke」は、商品のバーコードにスマホをかざすだけで、商品のあらゆる情報を、ユーザーの母国語で閲覧できるアプリです。Paykeに情報を登録すれば、日本中どこでも「低コスト」で「手軽」に...
ドローンにデータ活用―農業×IoTで革命を起こす笑農和の挑戦【#Techスタートアップ 特集】... IoTの力で、「遠隔稲作」を可能に ――笑農和(えのわ)のビジネスについて教えてください。 下村:スマート水田サービス「paditch(パディッチ)」の開発をメインに行っています。水田の水位調整を目的としたIoT水門機器です。 水田は水の管理がすごく大変で、日照時間や雨の有無に合わせて毎日細か...
「インフルエンサーが活躍できるインフラ」をBitStarが創る!【#TechスタートアップPR特集】... インフルエンサーとテクノロジーの力で新しい産業を創出する ――BitStarさんのビジネスはどういったものなのでしょうか? 渡邉:「インフルエンサーが活躍できるインフラを作る」というビジョンのもと、3つの事業を運営しています。一つ目がインフルエンサーと企業のマッチングプラットフォーム「BitSt...
及川卓也氏がグッドパッチのアドバイザリーボード就任―エンジニアリングとデザインの垣根を越える... デザインに興味を持ったきっかけ ひらい:私は大学生のときからJavaを使っていて、新卒で入社したSIerで、JavaやLinuxを使った業務システムやインフラの構築をしていました。ずっとエンジニアをやっていたのですが、美術館巡りをしたりフォントについて調べたり、アートやデザインは好きでした。 た...
プログラミング不要のチャットボット開発ツール「hachidori」の強みとは?【#Techスタートア... AIとifのハイブリッドチャットボット ――hachidoriさんのビジネスについて教えてください。 伴:プログラミング不要のチャットボットツール「hachidori」を提供しています。おかげさまで開発実績3,300件を突破し、2018年1月現在、国内最大級のチャットボットツールです。この躍進は...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ