Yumeville

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

数秒でhAppのソースコードを生成

令和2年6月26日

概要

Holochainの新しい高速アプリ開発(Rapid Application Development通称RAD)ツールは、Holochain開発者環境であるhttps://holochain.loveにて使用可能になりました。これは、読者のために多くの退屈なボイラープレートコードを生成することによって開発の時間を節約します。 このツールは、DNAコード自体だけでなく、フロントエンドコードも生成してくれます。このデベロッパーパルスでは、このツールの概要を説明し、簡単なチュートリアルを紹介してから、このツールで次に予定していることと、このツールを構築した理由を説明します。

トピック

  1. `hc-happ-scaffold`を使用して、hAppのソースコードを数秒で生成しましょう
  2. Holonix v0.0.79がリリースされ、https://holochain.loveにて使用可能になりました
  3. macOS CatalinaとWindows 10開発者に朗報:開発ツールのインストールが簡単になりました

`hc-happ-scaffold`を使用して、hAppのソースコードを数秒で生成しましょう

約束どおり、我々の開発チームは高速アプリ開発(RAD)ツールの2番目のイテレーションを開発しました。最初のイテレーションは、読者が試しに使用できるノートhAppを構築した概念実証でした。このツールの次のステップとして、この新しいツールを使用すれば、独自のデザインのhAppを直ぐに開発できます。

`hc-happ-scaffold`ツールは、hAppが生成する必要のあるデータのタイプと、それらを操作またはアクセスする方法を記述したファイルを受け取ります。そのファイルから、DNA(hAppの「Holochain」部分、つまり読者のアプリのルール」を定義するソースコード)と、ユーザーがそのデータを作成、取得、編集、削除できるサンプルのUIを生成します。

DNAを自動生成できるのは、とても便利です。もちろん、ボイラープレートのコードを書くのが好きな人はあまりいないですし、DNAのエントリータイプの定義には多くのボイラープレートが含まれる傾向があります。しかし、著者である私は個人的に、UIの自動生成も同様にワクワクする要素があると思います。これは、開発者でない方に難解なターミナルコマンドを使用しなくても、ほんの数分でDNAの有効性を試すことができるということです。

UIは基本的なものが生成されますが、それでも便利です。このツールの共同作成者であるLisa Jetton氏との会話で私は、「ホロチェーン用の一種のSwagger UI(APIドキュメンテーションとライブテストツール)のようなものですか?」と聞いたら、彼女は、「はい、まさに!」 といいました。Swagger UIでHTTP APIを使用すると、実行中のインスタンスに対して呼び出しを行い、それらがどのように動作するかを確認できるため、テスト中のAPIに慣れるための優れた方法の1つと言えます。Zomeのパブリック関数はまさにZomeのAPIであるため、このRADツールで生成されるUIはほぼ同じことを行います。CRUDフォームのインターフェースの背後にある詳細の一部を非表示にしますが、Swaggerと同じような即時性をこのツールは提供します。

チュートリアル:hAppを数分で起動して実行する

まず、Holochain開発環境であるHolonixをインストール(MacOS/Linuxはこちら、Windowsはこちら)してください。

1. Holochain開発環境に入ります。

nix-shell https://holochain.love

2. hAppを作成するフォルダーに移動します。(まだ作成していない場合は作成してください)

cd ~/my-holochain-projects

3. 「型スペック」ファイルを作成します。これは、すべてのエントリタイプを記述した人間が読みやすい形式のファイルです。ここで、このファイルのフォーマットについて更に詳しく読んだり、サンプルのファイルを見つけたりすることができます。

4. このツールをタイプスペックファイルに向け、RADツールに型ファイルを元にした新しいhAppを生成してもらいます。

hc-happ-scaffold my-type-spec.json my-new-happ/

5. 新しいディレクトリに移動して、hAppを実行しましょう。 コンダクター(Holochainランタイム)をDNAの開発インスタンス、sim2hスイッチボードサーバー、UIアセットを提供するWebサーバー、そして、UIを含むWebブラウザーウィンドウと一緒に開始します。

cd my-new-happ
npm start

生成されたコード:

このRADツールは、アプリが実行されるために必要なすべてのものを生成します。

  • Rustで記述されたDNAソースコード
  • JavaScriptで記述された基本的な統合テスト
  • ReactApollo GraphQLで構築された基本的なフォームベースのUI
  • アプリスタック全体(コンダクター、sim2hサーバー、UIサーバー)を起動するスクリプト

DNAのZomeは非常に単純なものです。Rustでの、データ型のstructとエントリー型の定義に加えて、各タイプのエントリのCRUDに相応するzome関数だけです。 (これらのZome関数は、どれをRADツールに生成させるかを指定できます)また、自動生成されたバリデーションは、エントリーの作成者のみがエントリーを編集または削除できることにしています。

Reactを使用してUIを構築することを選択したのは、Reactが非常に人気のあるフレームワークであるためです。 Holochainを初めて使用する開発者でも、すでにReactの経験者である可能性があると思います。一方、Apollo GraphQLは、バックエンドの実装を簡単に入れ替えることができる使いやすい抽象化ツールであるため、コミュニティーと我々のhAppyチームの間でお気に入りになりつつあります。 UIですでにApolloまたはGraphQLを使用している場合は、RADツールで生成されたソースコードで、我々の使用例を確認できます。

次のステップ

今後数か月で、このRADツールにさらに多くの機能を含める予定です。

  • リンクアンカーパターンの自動生成。この2つのパターンはグラフデータベースとしてのDHTを最大限に活用できます。
  • きめ細かなコンフィグが可能な編集/削除権限の付与などを可能にするより高度なバリデーションルール
  • 複数のZomeから成るhAppを生成する機能(現在、複数のZomeから成るDNAを生成できるのは、リポジトリから直接ツールをダウンロードした場合のみです)
  • UIとDNAを別々に生成する機能(繰り返しになりますが、現在これを行うことができるのは、ツールをリポジトリから直接ダウンロードした場合のみです)

RADツールを開発する理由

以前に書いたように、我々は以前からHolochainアプリを簡単に作成できるようにしたいと常に思っていました。これは我々のビジネスにとって有益なだけでなく、私たちの根本的なビジョンの一部でもあります。私たちは、色々なグループに、サードパーティによる制御なしに、オンライン上での生活を自分たちのやり方で行う力を与えることを目指しています。 Holochainとプラグアンドプレイであるホロポートは、あるユーザーが使用するアプリを簡単に自己ホストできるようにすることで、すでに我々のビジョンを実現させる可能性を秘めています。これは、様々なコミュニティーが、Webサーバーのセットアップ、保守、保護の方法を習得する必要無しに、独自でアプリをホストできるようになることを意味しています。

しかし、それは全体像の半分にすぎません。残りの半分は、あなたのアプリが何をしているかを知ることであり、それをあなた自身の目的に合わせて修正することができるようにすることです。オープンソース運動は非常に我々のビジョンの後押しとなっています。オープンソース運動により、コードを監査または変更できるアプリを巨大なアプリ市場から選択できるようになりました。 Holochain開発コミュニティも同様にオープンソースの魂を宿しています。読者がプログラマーであればこれがどれだけ素晴らしいことが感じられるはずです。

しかし、私たちはこれだけで止まりたくありません。人々は、自分たちの環境に適した、「ゲームのルール」(アプリをゲームのルールと例えるなら)を記述し、他の人たちと共有しながら、アプリを進化させられるようになるまで、様々な人が使用するであろうソフトウェアの十分な力を発揮することはできません。様々なグループのニーズと規範を具体化するアプリを簡単に作成できる必要があると我々は感じています。これは、主に未知の土地を渡り通る大きな旅であり、遠回り、挫折、驚きに満ちている旅であることに気づきました。そして、プログラマー、研究者、UXデザイナー、ユーザーの総力を結集して、私たちの小さなプロジェクトの領域を超える必要があります。しかし、あるhApp開発者の言葉を借りれば、人々のエージェンシーが「本物の同意主導のテクノロジー」によって守られている世界を実現したければ、ホロチェーンコミュニティだけでなく、同じビジョンを持つ者同士での努力は必須だと思います。

正直に言います。このRADツールを最大限に活用するには、おそらく読者がプログラマである必要があります。しかし、このツールは、カスタムなロジックの構築をより早く開始できるようになるための開始点です。また、Holochainの開発に不慣れな場合は、機能するアプリの有用なデザインパターンも示しています。そして、このツールはエンドユーザーのエンパワーメントへの道のりの更なるステップであるのです。

Holonix v0.0.79がリリースされ、https://holochain.loveにて使用可能になりました

このリリースには新しいRADツールが含まれているので、手間をかけずに使い始めることができます。 Holochainバージョンを含むその他すべては、Holonix v0.0.75と同じです。

また、含まれているコンダクターv0.0.49に既知の問題があることを思い出してください。修正を含む新しいバージョンがまもなくリリースされる予定です。これらの問題は、RADツールが使用しない機能に関連しているため、RADツールで構築されたhAppには影響しません。

macOS CatalinaとWindows 10開発者に朗報:開発ツールのインストールが更に簡単になりました

オペレーティングシステムの領域には2つの進展があり、たまたま、両OS(Windows & MacOS/Linux)での進展がほぼ同時に起きたため、macOSおよびWindows開発者がHolochainを使い始めるのがはるかに簡単になりました。

macOS 10.15 (Catalina)

Holonix開発者用環境を構築するために使用するNixパッケージマネージャーの開発者は、macOS Catalinaでの長期にわたるインストールの問題修正しました。ご存じかもしれませんが、CatalinaはOSを不正な改ざんから保護するために読み取り専用のみのシステムボリュームを導入しました。これにより、そのボリュームにファイルを保存するNixが壊れてしまいました。今回の修正により、巧妙な回避策は必要ありません。次のコマンドを使用してNixをインストールするだけです。

sh <(curl https://nixos.org/nix/install) –darwin-use-unencrypted-nix-store-volume

次に、通常どおりHolonixのインストール(MacOS/Linuxはこちら、Windowsはこちら)を続行します。

Windows 10

Windows 10の2020年5月の更新には、ついにLinux 2用のWindowsサブシステム(WSL2)が含まれています。この新しいバージョンのWSLはまったく異なります。 VMで完全なLinuxカーネルを実行し、明らかに高速で、Nixを含むさまざまなLinuxツールと互換性があります。このアップデートをインストールすると、VirtualBoxとVagrantをインストールしなくても、シームレスにHolonixを使用できるようになります。 (Webブラウザーからのコンダクターへのアクセスに問題があった場合は、これは歓迎すべきニュースです。)Windows向けのHolonixインストールガイドで、手順が簡略化され説明しています。

最新版

Holochain Coreリリース: 0.0.49-alpha1| 変更ログ 

Holonixリリース:v0.0.79 | 変更ログ

Try-o-rama(エンドツーエンドテストツール)リリース:v0.3.4

hc-happ-scaffold: 0.1.0 (https://holochain.loveにて使用可能) | Project

Holoscapeリリース:v0.0.9-alpha (Holochain Core 0.0.47-alpha1を使用中)|ダウンロード

https://holochain.loveにて使用可能なバージョン

  • Holonix: 0.0.79
  • Holochain Core: 0.0.49-alpha1
  • hc-happ-scaffold: 0.1.0

出典:Generate Your hApp’s Source Code in Seconds