デベロッパーツール、そしてそれがInternet Computer にとって重要な理由(日本語訳)
Medium の DFINITY 公式の記事 Developer Tooling, and Why It Matters for the Internet Computer(2022/7/23) の日本語訳です。
By Matthew Beekman and Dan Ryan
Internet Computer のおかげで、ビザンチン耐障害性、直交永続性、チェーンキー暗号、閾値署名などに対する評価が高まったのは確かです。これらがなかったら、Internet Computer は存在せず、我々は他のことで忙しくなっていたでしょう。
しかし、これらの要素は、より基本的なものに集約されます。開発者がインフラではなく、自分たちが作るものに集中できるようになるということです。Internet Computer は 非中央集権型クラウド である、という基本的なコンセプトは、必ずしも理解されていないように思われます。確かに指摘されていることですし、至極当然のことのように思えるかもしれません。しかし、多くの人々、特にブロックチェーン分野では比較的新しい人々にとって、この言葉は鐘の音のようなものなのです。そしてそれは、私たちが思っているよりも、彼らにとっては自明ではないかもしれません。
確かに、学習曲線は存在します。新しい概念や用語、根本的に異なるアーキテクチャなどです。同様に、現代の開発チームが慣れ親しんでいるものもあれば、まだここにはないものもあります。しかし、興味をもって取り組むだけの価値はあります。Internet Computer では、今日、実際のアプリケーションを構築することができます。ビッグデータスタック、ソーシャルプラットフォーム、トランザクションコマースソリューションなど、あらゆるものがあります。Web 2.0 の方法よりもはるかに少ないオーバーヘッドでそれを行うことができるため、多かれ少なかれ、何でも構築できます。
そのため、開発者の創造性を、ベストプラクティスやワークフローを概ねそのままに、シームレスにこの新しい領域に移行できるようなツールが不可欠になります。私たちはもともとアーリーアダプターであり、チームの成功と繁栄を支援する環境を構築してきました。そのため、ギャップを埋めるための方法を総合的に考えるという思考プロセスは、私たちの集団的な考え方の中に徹底的に組み込まれています。実際、私たちのツールは、Web2.0 の人たちが Web3 の金を採掘(というより検証)するために使う橋、バケツ、シャベルのようなものだと話しています。
あなたが見たもの、それがあなたの手に入れたものだ
手始めに、クラウドではコンソールが必要です。コンソールは、いくつかのショートカットを提供し、コマンドラインの手間を省く以上の役割を果たす必要があります。コンソールは、すべてのツールを見つけることができる中心的な場所であり、コンテキストとクリックで利用可能です。AWSのメインストリームへの導入は、親しみやすく、使いやすい UI によって大きく促進されました。特に相互接続、ハイブリッド化、オンプレミスの DC からの移行に関連するツールは、見落とすことのない場所に配置されました。また、導入に際しての苦労を可能な限り少なくするための工夫も随所に見られました。また、詳細なホワイトペーパーからチートシート的なクックブックまで、膨大な量の技術ドキュメントを作成し、キュレーションし、配信してくれました。IC の今後の優先順位については、別のトピックに譲るとして、私たちもそこに貢献したいと思っています。
もう一つの歴史的な類似点は、RedHat のオリジナルの Linux デスクトップであり、これはエンタープライズ用に Linux をアップストリームで提供する上で極めて重要なものでした。私たちの多くは、Microsoft Server 20XX のような牙城がある中で、そこからどのように展開したかを知っています。
非線形のメニュー駆動型の UI は、馴染みのない領域への大きな窓のようなものです。文脈に沿って提示される情報は、急な学習曲線を経てメンタルマップを描くのに役立ちます。また、新しいユーザーも既存のユーザーも、自分では気づかなかったような解決策や方法、実装を知ることができる場所でもあります。このレベルのコミュニケーションには、開発者が慣れ親しんだ方法で回答やガイダンスを得られる場が必要です。
ここからそこへの道のり
Jack Dorsey は、明らかに頭が良く、進むべき道を真に考えている人です。しかし、彼の Web5 のコンセプトは、Internet Computer とほとんど同じに聞こえます。それはもう、現存しています。このような見解を示したのは、私たちだけではありません。
しかし、Web5 タグには、2+3=5 という、私たちにとって非常にピンとくる考え方があります。私たちは、Web3 がメインストリームレベルで本当に普及するためには、周囲の世界にプラグインする必要があると考えてきました。Web2.0 のツールやプラットフォーム、ソリューションを Web3 空間への橋渡しとして採用することで、Web2.0 を Web3 のために有効に活用し、その部分の総和よりも大きなものを構築できるのです。Web5 がそれを意味する限り、私たちはただ同意するのみです。私たちは、bridges-not-walls(壁ではなく橋を)という考え方が、それがどのように呼ばれ、誰によってなされようと、私たちの集団的思考を促進すべきだと考えています。なぜなら、長い目で見れば、ブロックチェーンシンギュラリティ への道は、統合によって導かれると予想されるからです。私たちは、これは単なる可能性ではなく、必要なことだと考えています。望ましいことでさえあります。
ハイブリッド、プラグイン、コネクター、そして過渡的な状態など、誰も予想できないようなことが起こるでしょう。そして、そのどれもが美しいものばかりではないでしょう。しかし、歴史と経験は、それで良いのだと教えてくれています。ごく最近、クラウドコンピューティングが登場しましたが、ノストラダムスでなくともその可能性を見出すことはできました。私たちは、実際にそこに到達するのが決して容易ではないことを忘れがちです。
崖から飛び降りるのではなく、橋をかけよう
もしかしたら、あなたは、きれいなホワイトボードから始めることができれば、どんなに良い人生になるだろうと考えたことがあるかもしれません。しかし、一般的に人生はそううまくいくものではありません。そして、スタックがすでに大きく、多様で、広大で、実際のビジネスが危険にさらされ、些細な事でさえ高コストである場合は、全く異なる話となります。そして、どの企業にもそれぞれの(とても深い)理由があるのです。私たちはこのような問題に直面してきましたが、根本的な問題は同じでも、シチュエーションはそれぞれ異なっています(データ、データ、そして・・・)。
前述の通り、商用クラウドプロバイダーは、物事を解決するためのツールを提供するために、身を粉にして賢く立ち回ってきました。そしてそこには、Web3 の成熟とメインストリーム化のカーブを乗り切るために必要な、学んできた知恵があるのです。異種プラットフォームソリューションへの深い統合?そうです。一過性の一時的な橋は、一旦渡ったら燃やすべき?はい、そうです。私たちは、Web2.0 のリソースがゴールに近づいたときに、それを掴むべきだと考えていますし、それはあらゆる形や大きさでやってくるでしょう。
Amazon が、あるいは他の誰かが、実質的にインターネットになることは許されない
はっきり言うと、私たちは非中央集権の理念をすべて捨てろと言ってるわけではありません。そんなことは 絶対に 言っていません。ここ数年、中央集権的でレバレッジの効いたビッグデータのダークサイド(暗黒面)について、次々と教訓を得ることができました。非中央集権によって魔法のようにすべてが良くなるわけではありませんが(実際、あるレベルでは事態をさらに複雑にしています)、総合的には非中央集権はより良い方法だと考えています。私たちの本能や衝動を結集した成果は、たとえ不完全であっても、Gordon Gecko にキーを渡すよりはましでしょう。私たちは、ここからどうやってそこにたどり着くかを考えているだけなのです。
Web3 は、良い意味での変化の象徴です。第一世代のクラウドとは異なり、デジタル製品の構築とデプロイメントに関わるフットプリントを大幅に削減する方法を提示しています。大規模なデプロイメントを行う場合は、さらにその効果が高まります。これは、仮想化、コンテナ化の後に来るレベルです。これは数字の上では非常に大きなことですが、その反面、効果があり、反響を呼ぶかどうかがはっきりしないケースでもあります。
私たちは、このコミュニティで仲間たちが本当に素晴らしいものを作っているのを目の当たりにしています。IC のエコシステムは、優秀で賢い人々で溢れており、共有し、手を差し伸べてくれるのです。また、問題領域が非常に広いので、お互いの邪魔をしないようにするのは比較的簡単です。しかし、そのような状況だからこそ、私たちは互いの努力を推進し、最大化し、倍加すべきでしょう。私たちはこのエネルギーを利用し、コードリンター から テストフレームワーク、ID ストア、HA/DRソリューションまで、あらゆるものの配布と配信チャネルとして機能させたいと考えています。ICPipeline は、コミュニティ全体で作成されたツールを配信し、また、それらの間のオーケストレーションロジックに貢献したいと考えています。
では、ICPipelineの目的は何でしょうか?
私たちは基本的なこと、つまりはチームワークをより良くすることに重点を置いており、集中的に取り組んでいる特定の領域があります。
私たちは、誰でも簡単に IC レプリカ環境を立ち上げることができるようにしたいと考えています。数回クリックするだけで、あなたの IC プロジェクトは、専用の、完全にネットワーク化された、永続的で可用性の高いプラットフォームに、クローンされ、ビルドされ、デプロイされるのです。また、下層の Linux VM への sudo アクセスにより、アクセスや制御のレベルも最大化されています。
もう一つの大きな目標は、キャニスターのステートデータをオンデマンドでアーカイブし、スナップショットを作成することです。ディザスタリカバリ、moment-in-time ロールバック、開発/QA 環境での 本番 データの生成機能などです。これは本当に価値のあるもので、コミュニティにも気に入ってもらえると思います。
それは、環境に関するものであり、オンデマンドでそれらを起動させる機能を備えています。これは言うは易く行うは難しで、それは、あらゆる場面で言えることだと思います。新しく設立されたチームから、時には既に設立され十分なリソースを持つチームまで。いわば、QA 環境があり、QA チームはそこでテストを行うよなものです。しかし、本番で問題が起きるのは、たいてい QA が悪いからで、その責任を負った人がもうここで働いていないことが原因でしょう。真面目な話、これらのシステムは、物事を良くすることはほとんどなく、悪くすることが多いのです。
そのため、IC の本来の良さを生かして、ICプロジェクトのあらゆるレポのあらゆるブランチのクローンを、ユーザーが瞬時にデータ制御しながら、作成できるようにしたいと考えています。これは私たちにとって非常に魅力的なアイデアであり、他のチームも同意してくれると思いますし、私達はすぐ実現させるつもりです。
CI/CD Pipeline にはチームが遊べるサンドボックスが必要です
Internet Computer に関連する 環境 について参考までに書きます。現在、Internet Computer のテストネットはありません。そのため、ラップトップまたはデスクトップでローカルに展開する以外には、メインネットの IC が唯一の選択肢となります。そのため、セキュリティなど意図しない問題が発生した場合、世界中に公開されることになります。ICPipeline は、hub と spoke という独自の自律システムを構築しています。hub は ICPipeline Manager コンソール、つまり ICPM です。ICPM はキャニスターの Dapp としてオンチェーンで動作し、React フロントエンドによりブラウザで表示されます。ICPM では、Replicator と呼ばれる環境を管理しています。各 Replicator は、Linuxコマンドライン、Webpack 開発サーバーフロントエンド、ローカルDFXレプリカへの直接の IC プロキシ、へアクセスできる、完全に機能する Internet Computer 開発用レプリカです。Replicator は、Internet Identity バックエンドのレプリカ と/または 独自の台帳キャニスターを備えることができ、ボックスをチェックするだけで、どちらもすぐに利用可能です。
開発チームがテスト済みのビルドをデプロイできるようになったら、そこからのプロセスは一貫している必要があります。リグレッションテストを実施し、すべてのデプロイメントについて「誰が」「何を」「いつ」行ったかを記録し、ヒューマンエラーの発生する機会を最小限に抑える必要があります。チームが大きくなるにつれ(プロジェクトの規模が大きくなるにつれ)、開発者からデプロイマネージャとドキュメントマネージャへとデプロイメントを完全に移行させ、責任を分離できるようにする必要があります。
私たちは、これらの各転換点を行動への呼びかけと捉えており、ICPipeline にそれらすべてに答えてもらいたいと考えています。パイプラインにブルーグリーンデプロイメントを実装するには?リグレッションテストをパイプラインに統合するには?データマイグレーションをパイプラインに統合するには?手始めに、まずパイプラインを用意する必要があります。ICPipeline の登場です ;)
データ、データ、データについて
上記で言及したように、私たちは、あらゆる IC キャニスター Dapp のために、堅牢なキャニスターステートのスナップショット機能を追求しています。ICPipeline を使えば、どんなコードブランチでも簡単に Replicator にデプロイできます。まもなく、本番用キャニスターから取得したデータのスナップショットを、その時点のものまで含め、ワンクリックで起動できるようになります。これは非常に強力な機能ですが、十分なリソースを持つ企業でさえ、これを実現するのに苦労しています。大惨事を起こさず、時間を無駄にせず、バグを本番で表面化させず、士気を下げず、人材が不満を抱いて離職しないことに苦労しています。これらはすべて、お得なクーポンが付いてない期待外れの出来事です。しかし、大きな視点で見て、その結果を伝えると、それが一体となって美しいものになります。
したがって、Replicator をセットアップして、プロジェクトをデプロイすることができます。そして、スナップショットを取り、変更を加え、テストを行い、スナップショットに戻し、さらに変更を加え、テストを行い、満足いくまで繰り返し、本番環境へデプロイします。これはゲームチェンジャーです。
まとめ
ICPipeline のチームは、数十年にもわたってソフトウェアを構築し、エンタープライズアプリケーションプラットフォームとチームを運営してきました。私たちは、Internet Computer が開発者、チーム、組織にもたらす利点に非常に興奮しています。企業レベルでは、DevOps、SecOps、CloudOps などに投資されている資金はありますが、そのほとんどは UX や製品開発に回される可能性があります。私たちは、IC がもたらすインパクトに興奮しています。非中央集権型クラウド はそれを説明するのに便利な言葉ですが、その真の可能性は実際にはそれ以上です。
私たちは、このような記事でコラボレーションを続けていきます。私たちの頭の中では、多くの作品が駆け巡っており、また進行中ですが、中にはもっと説明が必要なものもあります。ICPipeline は、Internet Computer と同様に、間違いなく価値ある提案であると信じています。そのため、その理由をお伝えできるよう最善を尽くしながら、できる限り迅速に進めていきます。