Yumeville

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

開発者のエコシステムが本格的に始動

令和3年6月18日

私が住んでいるカナダでは、春が終わり、夏が始まっています。私はこの時期が大好きです。素晴らしい夏の花火のようにはじける花々、毎晩食卓を彩るレタスの咲き具合、まだ熟してもいないのに口に詰め込みたくなるイチゴ。

ホロチェーンの開発者エコシステムも、同じような成長を遂げていると思います。正直に言うと、私たちはまだ若くて小さいのですが、その分、開発者同士がお互いをよく知っていて、サポートし合っているので、私たちも彼らをよくサポートすることができています。これは、裏庭にある2つの小さなガーデンボックスのようなもので、個人的に世話をするのに十分な大きさであるがゆえに繁栄しているのだと思います。

最近、私が気になったことをいくつか挙げてみましょう。あなたが開発者であれば、きっと役に立つことでしょう。

Holochain Gym: hApp開発者のための「筋肉」トレーニング

ホロチェーンジムは、ホロチェーンの基礎を学ぶことができる素晴らしいエクササイズです。これには、2つのセクションがあります。

  • Conceptsセクションでは、ホロチェーンの基礎知識を学ぶことができます。Guillem Córdoba氏のHolochain Playgroundシミュレーターを使ったインタラクティブな視覚化が気に入っています。非常に抽象的な概念を、見たり触ったりできるようにしてくれます。特に好きなのは、マイナーやコンセンサスなしに、ホロチェーンが恐ろしい51%攻撃(またはそれ以上の攻撃)をどのように処理するかを示すものです。
  • Developersセクションでは、データ構造、ホストAPIコール、組み込みパターンなど、hApp開発の構成要素を紹介しています。また、DNAコードを書くためのコーディングエクササイズも用意されています。

Animated DHT simulation: see caption for description

このプロジェクトは、数人のアクティブなコミュニティメンバーの共同作業であり、まだ初期段階にあります。もし、あなたがすでにhAppの開発に精通していて、貢献したいと思っているなら、彼らはとても感謝してくれると思います。

Holochain Open Dev: 自分のhAppsで使用できるライブラリ

Holochain Open Dev GitHubについては、Holochain Reduxの頃から私はレポートしています。Holochain RSMが急速に成熟し、たくさんのhAppsが作られている今、新しいモジュールが増え、既存のモジュールもリファクタリングされています。その中で、面白そうなものをいくつか紹介します。

  • https://github.com/holochain-open-dev/profilesでは、ユーザーがニックネーム(別名スクリーンネーム、ユーザー名、ハンドル名)を選択し、プロフィール情報をキー/バリューのペアで保存することができます。また、フロントエンドでの使用方法を示すサンプルUIが付属しています。このモジュールの面白いところは、ニックネームは排他的なものではないということです。現実の世界と同じように、2人の人が実際の名前が yamada_taroであっても、ニックネームとしては全く問題ありません。これは、エージェント中心のコンセンサスのないシステムの美しさと奇妙さを示しています。
  • Kizunaチームhttps://github.com/holochain-open-dev/contactsは、ソーシャルメディアやコミュニケーションアプリのように、ユーザーが友人のリスト(連絡先リスト)やブロックしたユーザーのリストを保存することができます。ドキュメントはまだ見当たりませんでしたが、モジュールのAPIはかなりセルフドキュメント化されているようです。
  • Perspect3vismとJuntoチームによるhttps://github.com/holochain-open-dev/holochain-time-index(詳細は後述)は、時間範囲でデータを取得するための1つのソリューションです。これは、ソーシャルメディア、ブログ、財務記録、その他の時間ベースのデータに適しています。また、1つのアンカーに何十億ものリンクを貼ることで発生するDHTのホットスポットを解消することができます。このレポは絶妙にドキュメント化されており、デザインの根拠も示されています。
  • https://github.com/holochain-open-dev/calendar-eventsは、基本的なカレンダーを実装したものです。個人のカレンダーやイベント、リソースの予約などを共有するのに適しています。プロフィールZomeと同様に、UIのサンプルが含まれています。
  • https://github.com/holochain-open-dev/file-storageは、一般的なblobストレージモジュールです。これにより、DHTのホットスポットを防ぎ(32GBのスマートフォンしか持っていないピアが、あなたの1時間の休日のビデオを自分のDHTシャードに保存しなければならないことを想像してみてください)、また、ストリーミングビデオを実装することも可能になります。(さらに、DHTのエントリーには16MBの制限があります)。
  • https://github.com/holochain-open-dev/reusable-module-templateは、まさにその名の通り、他の開発者に使ってもらいたいモジュールを作るためのテンプレートです。

Holochain-In-Action:共同学習のコミュニティ

私は少し前から、「Holochain in Action」というグループの活動を追いかけていますが、彼らがやっていることに興奮しています。このグループは毎週火曜日に集まり、共に学び、教え、共有し、開発を行っています。Holochainに適したデザインパターンを探り、実装することに大きな焦点が当てられていて、これは重要な仕事だと思います。

もしあなたが開発者で、このグループに参加したいのであれば、フォーラムにアクセスして、応募フォームに記入してください。また、YouTubeでは過去のビデオを見ることができます。良いプレゼンテーションがたくさんあるようです。

最後に、彼らが開発しているPeer Shareというアプリのコードを確認することもできます。このアプリは、あらゆる種類のコンテンツを人々が互いに共有できるようにするものです。彼らはこのアプリを使って、JSON-Schemaパターンと呼ばれる興味深いものを含む様々なパターンを探求しています。DHTの管理者は、コンパイル時にエントリータイプを定義する代わりに、JSON-Schemaのボキャブラリーを使って新しいタイプをその場で作成し、そのタイプに準拠するはずのコンテンツを検証することができます。

Ad4mとPerspect3vism:アプリケーション開発のユニークな試み

このプロジェクトは非常に興味深いものです。まだ十分に理解できていませんが、私たちのオンライン体験の構築方法に大きな影響を与える可能性があると感じています。これは、開発者にとってではなく、ユーザーにとってという意味です。これは、オンラインライフを構築するためのエージェント中心のアプローチで、「言語」(ツイート、ToDoリスト、チェスの一手など、自分を表現する方法)と「視点」(参加したい空間)で構成されており、人は自分に合った方法で組み合わせることができるようです。

建築的なアプローチはHoloscapeを、語彙はソーシャルアプリのJuntoを思い起こさせますが、これはHoloチームのメンバーであるNicolas LuckJuntoのリードデベロッパーであるJosh Parkinのコラボレーションによるものです。

協同組合経済学のためのツールキット「Holo-REA」

私は、強制的でない、適切な規模の再生可能な経済にかなり情熱を注いでいます。私がホロチェーンに参加した最大の理由は、ホロチェーンがこの種の取り組みのプラットフォームになる可能性があると考えたからです。

だからこそ、Holo-REAが成熟に近づいていることに感激しています。Holo-REAは、経済アプリケーション、特にプレイヤーがオープンに会計を行うようなアプリケーションのためのツールキットです(ただし、多少のプライバシー保護も確保しています)。Holo-REAは、真のコスト会計、つまり商品の生産やサービスの提供にかかるすべてのコストを考慮するという、大きなビジョンをサポートするために構築されています。これは現在の経済システムが苦手とするところです。

Holo-REAは、ValueFlowsというビジネスオントロジーを実装しています。一見複雑そうに見えますが、実際には人が普段から行っていることを形式化しただけです。このことは、Holo-REAやその上に構築されるアプリケーションに期待を持たせるものです。

Holo-REAのソースコードと、このプロジェクトの立ち上げ理由や実装方法に関する多くの優れた文献は、https://github.com/holo-rea/holo-reaにあります。Holochainをベースにしている多くの人々は、すでにワクワクしており、自分のプロジェクトで使用することを計画しています。

Dev Campは9月に延期されたが、それまでに色々なチャンスがあります!

次回のコミュニティ運営の開発キャンプへの反応は、圧倒的に良いものでした。

700人以上の人が登録してくれたので、主催者は計画を変更しました。
開催時期は6月から9月に変更され、Holo社と協力して、開催中も開催前も、より多くの学習機会を提供する予定です。登録はまだ可能で、主催者から最新情報がメールで送られてきますので、何が起こっているのかを知ることができます。

今回のDev Campのテーマはとても面白いものです!

DevCamp 8では、”ホロコモンズの悲劇”というマルチプレイヤー・ゲーム作る予定です。経済学者が大好きなゲームを、ホロチェーンのアプリとして実現するのです。このゲームの核心は、最終的に一貫性のある環境での合意形成のデモンストレーションであり、これは分散型アプリケーションを構築する上で非常に重要な部分です。もちろん、その他のホロチェーンアプリの基本的な構成要素についても、より楽しくなるように少しずつ調整していきます。

グローバルなコンセンサスに頼らずに合意に達することは、理解するのが難しいことですが、ホロチェーンをホロチェーンたらしめている核心部分です。これは、ハンズオンでそのことをより深く理解する絶好の機会となるでしょう。

Dev Campへの参加登録はこちらから!そして、もしブロックチェーンに幻滅しているプログラマーの友人がいたら、彼らにもシェアしてあげてください。もしかしたら、彼らは何か新鮮なものを求める準備ができているかもしれません。

HolochainやHoloの最新情報も!

もちろんです! ここでは最新のアップデート情報をご紹介します。

  • Holochainは、ストレステストにおいて深刻なパフォーマンスの問題を抱えていました。その原因は、hApp DNAを実行する仮想マシンであるWasmerのメモリリークにあるようです。Wasmerチームは、このバグを追跡し、回避策を提供してくれています。
  • DHTシャーディングの開発活発行われています。多くのマルチユーザーマシンを含むDHTでゴシップを効率化するために多くの作業が行われてきました。また、そもそもパフォーマンスの高いゴシップを可能にしたストレージバックエンドをLMDBからSQLiteに移行するという以前の作業も行われてきました。
  • 両開発チームは、あらゆる面でパフォーマンスの向上に注力しています。データベースへの書き込みをバッチ処理するなどの改善は、今後も継続されるものもあれば、DHTをシャーディングできるようになれば、不必要になるものもあります。
  • 新しいスタンドアロンのブートストラップサーバがあり、Holoの使用やCloudFlareへの独自のデプロイを必要としません。これはテスト用に作成されたものですが、独自のインフラを実行したいアプリケーションには便利かもしれません。なお、再起動時にピアの情報を永続化することはなく、すべてインメモリで行われます。(ブートストラップサーバに慣れていない方のために説明しますと、ブートストラップサーバーはピア間の導入を行い、ピアがお互いに通信を開始できるようにするものです)
  • ホロチェーンの開発チームは、2月に行われた第1回目のリリース以降の変更点をすべて含んだ、ホロチェーンRSMの第2回目のパブリックリリースの準備を進めています。多くの開発者がdevelopブランチの変更点を追跡しています。これは、もう少し安定したものを好む開発者や、Holonixでの作業を好まない開発者をサポートするものです。
  • BREAKING CHANGE: すべてのDHT検索関数は、must_get_entrymust_get_headermust_get_valid_element3つの新しい関数を除いて、バリデーションコールバックでは無効になりました。これには2つの目的があります。第一に、検証関数は常に決定論的であるべきであり、これにより、非決定論の原因であるDHTを取り除くことができます。第二に、DHTデータの一部が取得できなかった場合に、すべての異なるエラータイプを手動で処理する必要がないため、多くの定型文を取り除くことができます。DHTデータを取得する関数の最後に?オペランドを使用するだけで、検証は自動的に正しい種類のエラーをホストに返します。注:この変更はdevelopブランチにはなく、ホロチェーンの次のバージョンがリリースされるまでは融合されません。
  • Holoチームは、ホロポートをテストチャンネルに切り替えたり、戻したりすることが簡単にできるように、dev-opsのインフラを整備してきました。これは、ホロチェーンの開発が急速に進んでおり、異なるコミットに対してアプリをテストする環境を確実に再現する必要があるためです。読者の皆さんにはあまり関係ないかもしれませんが、これによりHoloのテストのスピードが上がり、次のアルファ版のマイルストーンに少しでも早く到達できるようになります。

(写真提供者: Sven Brandsma on Unsplash)