今週のプロジェクト: Dat
今週の注目プロジェクトは、データセットを配布するための、助成金付きのオープンソース、分散型ツールであるDatです。Datは、地理的に分散したチームによって構築および維持されており、その多くがこの投稿の執筆を支援しました。
まず、Datとは何ですか?
ピアツーピアおよび分散システムの最高の部分をデータ共有に取り入れたいと考えました。まず科学データの共有から始め、その後、研究機関、政府機関、公共サービス、オープンソースチームにも展開を開始しました。
別の考え方としては、DropboxやBitTorrent Syncのような同期およびアップロードアプリですが、Datはオープンソースです。私たちの目標は、大中小、少量バッチおよび大量バッチデータに対応する、強力でオープンソースの非営利データ共有ソフトウェアになることです。
dat
CLIツールを使用するには、次のように入力するだけです。
dat share path/to/my/folder
すると、Datは、そのフォルダーを他の人に送信するために使用できるリンクを作成します。中央サーバーやサードパーティがデータにアクセスすることはありません。BitTorrentとは異なり、誰が何を共有しているのかを嗅ぎつけることも不可能です(詳細については、Dat Paperのドラフトを参照してください)。
Datが何であるかは理解できました。Dat Desktopはどのように適合しますか?
Dat Desktopは、コマンドラインを使用できない、または使用したくない人がDatにアクセスできるようにするための方法です。マシン上で複数のdatsをホストし、ネットワーク経由でデータを提供できます。
クールなユースケースをいくつか共有できますか?
DataRefuge + Project Svalbard
私たちは、DataRefugeに関連する、Project Svalbardというコードネームのプロジェクトに取り組んでいます。これは、失われる可能性のある政府の気候データをバックアップするグループです。スバルバードは、北極圏にあるスバルバード世界種子貯蔵庫にちなんで名付けられました。これは植物DNAの大きな地下バックアップライブラリがあります。私たちのバージョンは、公開されている科学データセットの大規模なバージョン管理コレクションです。メタデータを理解し信頼できるようになったら、分散型ボランティアデータストレージネットワークのような他のクールなプロジェクトを構築できます。
カリフォルニア州市民データ連合
CACivicDataは、カリフォルニア州の政治資金を追跡するデータベースであるCAL-ACCESSから毎日ダウンロードを提供するオープンソースアーカイブです。彼らは毎日リリースしており、これはzipファイル全体に重複する大量のデータをホストすることを意味します。彼らのデータをDatリポジトリとしてホストすることに取り組んでおり、特定のバージョンを参照したり、新しいバージョンに更新したりするために必要な手間と帯域幅を削減できます。
Electronの更新
これはまだ具体的ではありませんが、興味深いユースケースとして、コンパイルされたElectronアプリをDatリポジトリに入れ、Electron内のDatクライアントを使用して、ビルドされたアプリバイナリの最新の差分をプルし、ダウンロード時間を節約し、サーバーの帯域幅コストを削減できると考えています。
Dat Desktopは誰が使うべきですか?
p2pネットワーク経由でデータを共有および更新したいすべての人。データサイエンティスト、オープンデータハッカー、研究者、開発者。まだ思いついていないクールなユースケースをお持ちの方がいれば、フィードバックを積極的に受け付けています。Gitterチャットにお立ち寄りいただき、何でもご質問ください!
DatとDat Desktopの次のステップは何ですか?
ユーザーアカウントとメタデータの公開。私たちは、datproject.orgに展開されるDatレジストリWebアプリに取り組んでいます。これは基本的に「データセット用のNPM」になりますが、注意点として、私たちは単なるメタデータディレクトリであり、データはオンライン上のどこにでも存在できます(ソースコードは十分に小さく、1つのシステムにすべて収めることができるため、すべてのデータが集中管理されているNPMやGitHubとは対照的です)。多くのデータセットが巨大であるため、フェデレーションレジストリが必要です(BitTorrentトラッカーの仕組みと同様)。Dat Desktopからレジストリを使用してデータセットを簡単に見つけたり公開したりできるようにし、データ共有プロセスを摩擦なく行えるようにしたいと考えています。
もう1つの機能は、複数ライター/共同フォルダーです。私たちは、Gitに似たブランチを使用した共同ワークフローを行う大きな計画を持っていますが、データセットの共同作業を中心に設計されています。ただし、現在、全体的な安定性に取り組み、プロトコルを標準化しています!
Dat DesktopをElectronで構築することを選んだ理由は何ですか?
DatはNode.jsを使用して構築されているため、統合には自然に適合しました。これに加えて、科学者、研究者、政府関係者は、それぞれの機関の設定を強制される可能性があるため、ユーザーはさまざまなマシンを使用します。これは、Macだけでなく、WindowsとLinuxもターゲットにできる必要があることを意味します。Dat Desktopは、これを非常に簡単にしてくれます。
DatとDat Desktopの構築中に直面した課題は何ですか?
人々が何を求めているのかを把握することです。最初は表形式のデータセットから始めましたが、これは解決するのが少し複雑な問題であり、ほとんどの人がデータベースを使用していないことに気づきました。そのため、プロジェクトの途中で、ファイルシステムを使用するようにすべてをゼロから再設計し、それ以来、振り返ることはありませんでした。
また、以下を含むいくつかの一般的なElectronインフラストラクチャの問題にも遭遇しました。
- テレメトリー - 匿名での利用状況統計を収集する方法
- アップデート - 自動アップデートの設定は、ある意味、断片的で魔法のようなものでした。
- リリース - XCode署名、Travisでのリリースのビルド、ベータ版のビルドなど、すべてが課題でした。
また、Dat Desktopの「フロントエンド」コードではBrowserifyといくつかのクールなBrowserify Transformsを使用しています(ネイティブのrequire
があるにもかかわらず、バンドルしているのはちょっと変ですが、それはTransformsが必要だからです)。CSSをより適切に管理するために、Sassからsheetifyに切り替えました。これにより、CSSをモジュール化し、共有依存関係を持つコンポーネント指向のアーキテクチャにUIを移行するのが容易になりました。たとえば、dat-colorsにはすべての色が格納されており、すべてのプロジェクト間で共有されています。
私たちは常に標準と最小限の抽象化を重視してきました。インターフェイス全体は、いくつかのヘルパーライブラリのみを使用して、通常のDOMノードで構築されています。これらのコンポーネントの一部を、低レベルの再利用可能なコンポーネントのライブラリであるbase-elementsに移行し始めています。ほとんどのテクノロジーと同様に、適切になるまで反復を続けますが、チームとして、正しい方向に進んでいると感じています。
Electronはどの分野で改善されるべきですか?
最大の課題はネイティブモジュールだと思います。npmを使用してElectron用にモジュールを再構築する必要があるため、ワークフローが複雑になります。私たちのチームは、プリビルド済みバイナリを処理するprebuild
というモジュールを開発しました。これはNodeではうまく機能しましたが、Electronワークフローでは、インストール後に通常npm run rebuild
というカスタムステップが必要でした。これは面倒でした。この問題に対処するために、最近、npm tarball内にすべてのプラットフォームのコンパイル済みバイナリバージョンをすべてバンドルするという戦略に切り替えました。これはtarballが大きくなることを意味しますが(これは.so
ファイル(共有ライブラリ)で最適化できます)、このアプローチはインストール後のスクリプトを実行する必要がなく、npm run rebuild
パターンも完全に回避できます。これはnpm install
がElectronで初回から正しく機能することを意味します。
Electronの好きなところは何ですか?
APIはかなりよく考えられており、比較的安定しており、アップストリームのNodeリリースに遅れないようにうまく追従しており、これ以上何も求めることはありません!
他の開発者にとって役立つ可能性のあるElectronのヒントはありますか?
ネイティブモジュールを使用する場合は、prebuildを試してみてください!
Datの開発状況をフォローする最適な方法は何ですか?
Twitterで@dat_projectをフォローするか、メールニュースレターを購読してください。