스크립트
00:00:00Epic Gamesが独自のバージョン管理システムを構築したのは、Gitにうんざりしたからでした。
00:00:05彼らはそれをRustで構築し、無料で公開しました。それが「Lore」です。そう、
00:00:10『フォートナイト』の運営会社がGitの代替品を開発したのです。ですがGitは依然として素晴らしく、
00:00:15言うまでもありません。ただGitはコード用に構築されたものです。主にテキストファイルや小さなファイルが多く、
00:00:21変更も一度に数行程度です。ゲームはその正反対といえます。では、
00:00:26LoreはGitとどう違うのか、どう使うのか?見ていきましょう。
00:00:35現在、膨大なテクスチャ、オーディオファイル、動画、3Dモデルがあり、
00:00:41数百メガバイトや数ギガバイトに及ぶあらゆる種類のバイナリ資産が存在します。そして、
00:00:47それらのファイルに変更が加わると非常に厄介なことになります。リポジトリは肥大化し、クローンは遅くなり、
00:00:53履歴は巨大になります。そして誰かが「Git LFSを使うべきじゃないか」と言い出します。Git LFSは役立ちますが、
00:01:01このようなデータのために設計されていないシステムに対する回避策のように感じられます。
00:01:06それにクォータや帯域制限、履歴に残り続ける古い資産の問題もあります。そこで、
00:01:12多くのスタジオがPerforceを使用しています。公平に見て、Perforceは機能します。多くのゲームスタジオが
00:01:18使用するのには理由がありますが、高価です。複雑になることもあります。そしてシステムが大きくなると、
00:01:24管理を維持する専任の担当者が必要になるのが常です。これこそがLoreが
00:01:29解決しようとして設計されたものです。ワークフローを高速化するツール作りが好きなら、ぜひチャンネル登録してください。
00:01:35動画は常に公開しています。さて、Loreについて語るだけでなく、
00:01:39実際に動かして、どう機能するかお見せしましょう。デモは一つのインストール
00:01:44コマンドとデモフラグで始まります。これで終わりです。数秒後には、
00:01:51Loreサーバーがローカルで起動します。クラウドのアカウントも、キーも、証明書の設定も不要。ここで動いています。
00:01:57これらのポートで動作中です。本当に生きていることを証明するために、ヘルスエンドポイントに
00:02:03アクセスしてみましょう。このターミナルで実行します。はい、生きています。動いています。
00:02:08手動で紐付けるバックグラウンドサービスはありません。生成すべき認証トークンもありません。
00:02:14セットアップウィザードもありません。ただ始まるだけです。リポジトリを作成しましょう。フォルダを作ります。
00:02:22いいですね?リポジトリを作成します。次に大きなバイナリファイルを作成して
00:02:27コミットします。これはただのダミーファイルです。もっと大きなファイルを作りましょう。DDコマンドで
00:02:32データ複製を行います。100メガバイトのファイルを一つの巨大なオブジェクトとして扱うのではなく、
00:02:40Loreは小さなチャンクに分割します。それらのチャンクはハッシュ化され、Zstandardで圧縮されて
00:02:47コンテンツアドレス指定されたマークルツリーに格納されます。ファイルの大部分が変わらなければ、Loreは全体を
00:02:52丸ごと保存する必要はありません。既存のチャンクを再利用し、変更された部分だけを保存します。
00:02:58これは巨大なバイナリ資産にとって非常に適しています。コミット完了直後、ディスク上に作成された
00:03:04ローカル状態が確認できます。設定とメタデータを含むLoreディレクトリがあります。
00:03:10さて、ブランチを作成しましょう。Lore branch createで名前を付けます。
00:03:17Gitとほぼ同じように動作します。では切り替えて、小さな変更を加えましょう。
00:03:24手早くテキストファイルを作成してこのブランチにコミットします。修正して、ステージングして、
00:03:31コミットします。流れはGitとほぼ同じです。さて、元に戻しましょう。
00:03:37一瞬でした。もう一つ重要なことは、どれもサーバーへの接続が不要だということです。
00:03:44ステージング、コミット、ブランチ作成、切り替え、差分表示、すべてがローカルで発生します。Loreは
00:03:50中央サーバーを持っていますが、日常業務は高速で、オフラインでも作業を続けられます。
00:03:56軽量に感じられるのです。では、「すべてのデータはどこへ行くのか?」という問いが生まれます。
00:04:02このデモではすべて一時的なものです。サーバーを停止すると、
00:04:08データは消えます。これはデモモードだからです。実運用では、設定ファイルと永続ストレージで
00:04:15Loreサーバーを動かします。CLIコマンドやローカルのワークフローは全く同じです。
00:04:21一時フォルダを捨てるのではなく、サーバーを実際のディレクトリやオブジェクトストレージに向けるだけです。
00:04:27Gitはプロジェクトのスナップショットの履歴を提供します。内部的には賢い最適化を
00:04:34たくさん行っていますが、Loreは最初からチャンク化と重複排除を中心に設計されています。
00:04:40そのため、資産の多い巨大なプロジェクトでは、ファイルの新しいバージョンごとに
00:04:47完全に別個の巨大なオブジェクトとして扱う必要がありません。Loreは必要に応じてファイルをハイドレート(取得)できるため、
00:04:53初日からすべてのアセットをダウンロードすることなく、大量のデータを含むリポジトリで作業できます。
00:04:59実際に取り組んでいるプロジェクトの一部に必要な分だけをプルするのです。
00:05:03Loreがローンチされた際、中央集権的か分散型かという点が少し混乱を招きました。
00:05:08これは中央集権的です。記録用のサーバーは一つですが、作業のほとんどは
00:05:15ローカルで行われます。実際にはPerforceとGitの中間に位置します。中央での制御と
00:05:22アクセス管理はできますが、ローカル操作は高速で、サーバーが常に利用可能である必要はありません。
00:05:28良い違いもいくつかあります。LoreはMITライセンスで、プロトコルは
00:05:34オープンソースであり、複数の言語用のSDKがあるため、スクリプト作成や
00:05:39ツール構築がはるかに容易です。現実的な話をすると、明日から
00:05:45本番環境のPerforce環境をLoreに置き換えるようなことはしません。まだバージョン1.0未満です。Epic Gamesは
00:05:52最初の安定版リリース前にAPIが変更される可能性があると述べており、明らかにまだ進化中です。Gitとの
00:05:58互換性も現状ではなく、既存のGitリポジトリをLoreにポイントして完全な履歴を
00:06:03移行することもできません。セルフホスト型です。アカウントを作成して
00:06:09リポジトリをプッシュすれば完了、というホストサービスはありません。デスクトップアプリが
00:06:15出回っているかもしれませんが、オープンソースリリースには含まれていません。手に入るのはコアライブラリ、サーバー、CLI、SDKです。GUIは
00:06:22含まれていません。それから当然、パフォーマンスです。性能はどうでしょうか?EpicはLoreなら巨大な
00:06:28リポジトリでも他のシステムのように遅くならないと言っています。Epicには明らかに
00:06:33大規模プロジェクトの経験があります。しかし現状、これらの主張のほとんどはEpic自身によるものです。
00:06:39確固たる独立したベンチマークはまだありません。期待はできますが、実際に
00:06:45テストし始めるまでは判断が難しいところです。使うべきでしょうか?いじってみるのは楽しいです。
00:06:50ゲームを作っていますか?巨大なプロジェクトを構築していますか?新規プロジェクトなら、ありかもしれません。
00:06:56大きなバイナリ資産のためのバージョン管理がどこへ向かうのか見たいなら、試す価値はあります。
00:07:01重要でないものでテストし、触ってみて、性能を確かめ、流れを見てみてください。
00:07:07ここで重要なのは、LoreがGitやPerforceをすぐに置き換えるかどうかではありません。より大きな問題は、
00:07:14プロジェクトが大量のバイナリデータとともに出荷されるようになり、バージョン管理が
00:07:19解決済みの問題ではなくなったということです。Gitはテキストや小さなファイルで勝利しました。Loreはその次にくるものを解決しようとしています。
00:07:27正直なところ、成功するかどうかは別として、非常にクールな方向性です。このようなコーディングの
00:07:32ヒントやコツが気に入ったなら、Betterstackチャンネルを登録してください。次の動画でお会いしましょう。