Yumeville

Holochain デベロッパーパルス No.96

見かけよりも近くに迫っている

令和3年5月07日

英語圏の一部(アメリカやカナダ、インドなど)の車のサイドミラーには、「鏡に映る物体は見た目よりも近くにあります」という言葉が書かれていますよね。そんな警告があるにもかかわらず、遠くにいると思っていた車がいきなり通り過ぎていくと、いつもちょっとびっくりしてしまいます。
昨日の朝、そんな経験をしました。Holoホスティング開発チームのAlastair氏との週1回のチェックインの際、彼は席で跳ねているように見えました。彼の言葉を借りれば、「Holoの準備が整った」というのが、彼の興奮の理由です。アラステアは普段、批判的で分析的な思考を持って(彼はエンジニアなので、勿論そうすべきですが)仕事をしています。だから、彼が興奮しているのを見て、それにはちゃんとした理由があるのだと思いました。

読者の皆様が盛り上がる前に言っておきたいのですが、Holoは明日からベータ版になるわけではありません。彼は単に、ホスティングとルーティングのインフラ全体のテストを開始する時期が来たということです。

この半年間には、いくつかの大きな節目がありました。しかし、次のマイルストーンであるホスティングされた「Elemental Chat」は、すべてのパズルピースをまとめるものです。

  • ホロチェーン
  • EnvoyサービスとChaperoneブラウザライブラリ(下記で紹介していきます)
  • ホストが家庭のファイアウォールを確実に突破するためのネットワーク設備(プロキシサーバなど)
  • ホストをネットワークにオンボードさせるための登録フロー
  • ウェブユーザとホストを結びつける「仲人」の役目をこなすリゾルバサービス
  • Webユーザーのリクエストを選択したホストに安全に届けるための集中型および分散型のルーティングインフラ
  • HolochainとEnvoyをHoloPortsにまとめるためのオペレーティングシステム

Alastair氏は、これらの基盤はすべて強固なものになったと話してくれました。ルーティングのインフラはずっと前から整備されていますし、ホロチェーンの大きなバグ(ホストがウェブユーザーのためのアプリケーションインスタンスの作成に失敗したときのロックアップなど)は根絶され、プロキシサーバーとゴシッププロトコルはパフォーマンスが向上し、ユーザーがすぐにブラウザを閉じてしまうような奇妙なエッジケースにも対処されています。

私のように、年明けからのHoloPortの急速なアップデートに慣れてしまった方は、その後の数ヶ月間のペースダウンに不安を感じていたのではないでしょうか。その理由もAlastair氏が説明してくれました。以前のリリースサイクルでは、できるだけ早い段階でテスターに協力してもらっていましたが、これによって開発チームは何がうまくいっていて、何がうまくいっていないのかを知ることができました。プレリリースのテスターの方々は本当に素晴らしい方ばかりで、彼らは自由時間を使ってバグを追いかけてくれました。しかし、彼らにとっては大変な作業であり、コミュニケーションや調整には、小さなチームである我々にも多くの負担がかかりました。

そこで、今回のリリース(および前回のマイナーリリース)では、ホロとホロチェーンの開発チームは、社内のQAに到達する前に、より厳しいテストを実施しました。このテストを無事クリアすると、すべてのHoloPortに提供されるまでのプレリリースの回数が大幅に減ることになります。そして、すべてのHoloPortのオーナーがウェブユーザーを招待して、このピアツーピアのチャットアプリを初めて試すという楽しみが始まるのです。

また、将来的にはこのプロセス全体を効率化するために、QAおよびソフトウェア・デリバリー・マネージャーを採用する予定です。QA、コミュニティテスター、デプロイメントをこなした経験のある方は、ぜひご応募ください

Alastair氏は、Holo開発の将来についてリラックスしている様子が伝わってきました。この強固な基盤があれば、HoloFuelやService Loggerアプリ(リソースの使用状況を追跡し、アプリのパブリッシャーに請求をするアプリ)のような新機能の開発と提供が、より簡単かつ迅速にできるようになると彼は言います。

「Envoy」と「Chaperone」とは?

Envoyは、すべてのHoloPortに常駐するサービスで、ホロチェーンのランタイムを中央のHoloルーティング・インフラストラクチャに接続し、最終的にはウェブ・ユーザーに接続します。Envoyは、ユーザーのためにhAppインスタンスを用意し、ホロチェーンが保存・公開しようとしているデータへの署名をユーザーのブラウザに依頼します。

一方、Chaperoneは、ユーザーのブラウザ上で動作するライブラリです。Chaperoneは、登録とサインアップを処理し、暗号技術を使ってユーザーの秘密(パスワードと秘密鍵)がブラウザから出ないようにします。つまり、大規模なデータベースのハッキングで盗まれることはないし、HoloPortがユーザーの望まないことをする力を持つこともないのです。

Holoの開発者たちは、ウェブブラウザやHTTPプロトコルに組み込まれた中央集権的な前提条件にしばしば反発してきました。多くの課題は、中央集権的な世界では安全のためであっても、暗号的に安全なP2Pの世界では意味をなさない、セキュリティ上の制限に起因するものでした。

これらの課題を解決する過程で、Holoの開発者たちは、よりユーザーにとって使いやすい最終的なデザインを考えました。これまでは、Holoがホストするページにアクセスするたびに、たとえ以前にアクセスしたことがあったり、別のブラウザタブですでにサインインしていたとしても、再度サインインする必要がありました。今回のデザインでは、ブラウザのタブをまたいでも、またブラウザを終了して再起動しても、セッションは有効なままとなります。これは従来のウェブアプリにとっては特別なことではありませんが、これがHoloで出来ることは素晴らしいことです。これは、dAppsがようやく使いやすくなることを意味しています。

技術的な詳細がお好きな方は、ChaperoneとEnvoyに関するこの古いブログ記事をお読みになるとよいでしょう。この記事は、開発者たちがまだこれらのコンポーネントの作成とデバッグに没頭していた頃に書かれたものです。

これから

現在は、内部のQAテストを行っています。プレリリースのテスターを、ホストされたElemental Chatに近々招待することを期待しています(おそらくこれをお読みになる頃にはそうしているでしょう)。大きなバグは見つからないと思いますが、開発中には見つけられなかったエッジケースを発見できることを期待しています。もし致命的なエッジケースが見つからなければ、ホスト型のElemental Chatをすべてのホストにリリースし、ウェブ上で試してもらう予定です。

近いうちにそちらでチャットできることを楽しみにしています。(もちろん、招待コードがあればですが😉)

(写真提供者:hang niu on Unsplash)