Shelleyの構築:Duncan Couttsインタビュー
CardanoチーフテクニカルアーキテクトDuncan Couttsと炉辺談義、HaskellとShelley配信について訊いた
2020年4月7日 Eric Czuleger 読了時間6分
Duncan CouttsはCardano Shelleyメインネットへの道のりに欠かせない案内人です。古くからのIOHKサポーターにとって、長髪、髭、そしてホワイトボードの前で分散化について語るときに携えている紅茶といった彼のトレードマークはもうお馴染みでしょう。そんなDuncanが先日、来るByronリブート、Haskell Shelleyテストネット、そしてShelleyに先立つ開発サイクルの結論について、インタビューに応えてくれました。2016年以来IOHKで働くCouttsは、20年近くにわたるHaskellプログラミング言語使用経験とWell-Typedコンサルティングで蓄えた豊かな知識でプロジェクトに貢献しています。
IOHKではどのような役割を担っていますか。
私はCardanoプロジェクトのチーフテクニカルアーキテクトして、主にノードのデザインと実装を担っています。つまり、コンセンサス、台帳、ネットワーキング、その他に取り組む諸チームと協働しています。究極的には、チームリーダーたちと話し合った後、同じデザインに全員を引き込む役割を果たしているんです。Cardanoのデザインはたくさんの人々の協働により生まれたジョイントワークの成果です。
Haskellプログラミング言語はCardanoに何をもたらしますか。
Haskellはイネーブラーです。私たちが正しいと信じる、コンピューター科学に基づいたアプローチが楽に実践できるようになります。私たちには物事を適切に進める方法がわかっています。コンピューター科学がその方法を教えてくれるのです。必要なことは、目的に応じて適切なテクニックを選ぶことだけです。Haskellでこれが簡単になります。
これはCardanoに向いています。というのも、これはブロックチェーンに必須の高い保証性を持つ、仕様をベースにしたソフトウェアに向いているからです。Haskellにより、ミスを避けるための系統的な方法を見つけやすくなります。つまりこれは優れたネズミ捕りですね。
長期間にわたりHaskellに取り組んでこられましたが、関数型プログラミングを取り巻く状況というのはどのように変化してきましたか。
ずいぶん真面目に受け止められるようになりました。1999年に学部生として始めて手がけたとき、Haskellはすごいと思いましたね。他の学生たちにとっては「まったく実践的じゃない。これでどうやって仕事を得るんだよ」というものでしたが。
当時、関数型プログラミングというのは学術的好奇心でした。予め構築されたコードもなければ機械可読でもなかった、すなわちHaskellは幅広い人々が使える代物ではなかったのです。ツールもない、ライブラリーの範囲も経験もない。これが数年をかけて変わっていきました。ツールもライブラリーも向上していったのです。IOHKはオープンソースのHaskellコードを構築、配信し、ライブラリーを拡大させるインフラストラクチャーの開発を補助しました。この結果、教育の普及、そして業界の姿勢が徐々に変化していったことと相まって、Haskellはより真剣に受け止められるようになったのです。Haskell自身は、私たちを取り巻く業界ほど変わっていません。
業界の観点から最大の変化とは何ですか。
2つあります。まず、姿勢が変わりました。徐々に、ではありますが。実用的な言語を選択するといった際に何を考慮するかについて、意見が変わってきました。以前はとにかくC、またはJava、あるいはPythonでしたが、やっと良い考えというものが育ってきました。たとえ時間がかかったとしても。良い考えを良い考えだと認識するだけで、大きく進歩できるものです。重要な開発はメインストリームに引っかかってくるものです。たとえ、10年、15年とかかったとしても。業界は未だに関数型プログラミングを諸手を挙げて歓迎しているわけではありませんが、プログラマーたちは個人的に様々なアイデアを採用しています。このため、Haskellはさほどラディカルには見えなくなっています。
Rustのような言語を見れば、関数型プログラミングの考えはないものの、一部に巧みなHaskellの型システムが導入されています。JavaやC++ですら、今日多少の関数型プログラミングの概念が含まれており、Haskellがかつてのように主流から大幅に離れているわけではないことがわかります。
2つ目の主要な変化はパフォーマンスで、これはずいぶんと向上してきています。パフォーマンスに関しては近年Javaに匹敵しています。これにより、「うわ、Haskell速いじゃん」という人もいますが、これはCよりもむしろPythonやPHPと比較しているからです。つまり別の言い方をすればHaskellもわずかに向上していますが、これを取り巻く業界の環境もまた変化しているのです。
先週配信されたByronリブートにも深くかかわっていますね。この作業はなぜ重要なのですか。
Byronリブートは、IOHKのさまざまな開発チームが18か月以上にわたり懸命に進めてきた作業の集大成であり、ノードのインフラを100%新しいコードで完全にオーバーホールしたものです。リブートは、ノードそのものに拡張可能なモジュラーデザインを採用し、台帳、コンセンサス、ネットワークの各コンポーネントを分離、さらに、ウォレットバックエンドとCardanoエクスプローラーを改良し新機能を追加しています。
Daedalusユーザーは、Byronリブートにより定期更新サイクルへの移行を経験し(詳細は、先日アップされたDaedalus Flightについてのブログを参照)、これを経たDaedalusがスピードと信頼性を増し、メモリー消費が抑えられていることを実感するでしょう。過去にユーザーが経験した不具合の多くは、Daedalus自体よりもノードに原因がありました。Byronリブートで改良の可能性は広がり、ユーザーはDaedalusの同期およびウォレットの復元が、Cardanoブロックチェーン全体をダウンロードしているにもかかわらず数分単位で完了することを目の当たりにするでしょう。
チーフアーキテクトとして、Cardanoの未来の基礎を置く役割を担っていますが、これで達成しようとしていることは何ですか。
フレキシビリティの観点から最も重要な点は異なる機能を分離しておくことです。Byronリブートによる大きな改善点の1つは台帳ルールがコンセンサス実装から完全に切り離される点です。このモジュール性は台帳ルールが完全にクリーンな数学的機能であることを意味していますが、これこそが関数型プログラミングの中核です。
結果として、すべてのテストや変更が現在も将来も簡易化されます。コンセンサスアルゴリズムは台帳ルールと絡み合うことがないため、コンセンサス実装を変更せずに台帳ルールを変えることができます。これにより、Plutusとスマートコントラクト機能の統合が大幅に簡易化され、今後トレジャリー機能やガバナンス機能を追加するときにも役立ちます。
コンセンサスの実装そのものもパラメーター化されているため、Ouroboros Classic(ウロボロスクラシック)コンセンサスプロトコルからBFT、さらにPraos(プラオス)への移行も可能となります。これはまた、まだ開発されていない今後のプロトコルバージョンのためのフレキシビリティも提供します。
ShelleyはCardanoの将来に向けての大きなステップですが、HaskellをJavaScriptとWebAssemblyにコンパイルする重要性とは何ですか。
JavaScriptとWebAssemblyへのコンパイルが興味深いのはPlutusのためです。ユーザーに配信できるPlutusコントラクトやPlutusアプリケーションが欲しいのですが、サーバー内ではなく、ユーザー側にカスタムインターフェイスやカスタムロジックを含みたいのです。JavaScriptへのコンパイルによりこれが可能となります。Plutusコードを一旦コンパイルするとユーザーに異なるプラットフォームで配信できます。
時間を割いてくれたDuncan Couttsに感謝します。チーフテクニカルアーキテクトとして、彼はCardanoプロジェクトの道しるべとなり、進行中であるプラットフォームの成功を支えてきました。今後もチームへのインタビューは続きます。ソーシャルチャネルやIOHKブログのチェックをお忘れなく。