ゲームファイルのアップロード方法

ゲームファイルのアップロード方法

ringyuki5日前
Shionlib の大容量アップロードシステムのガイド:レジューム、ハッシュ検証、セキュリティスキャンに対応。アップロード枠の仕組みにより、持続可能かつ安全に運用します。

Shionlib の大容量アップロードシステムの紹介

なぜ大容量アップロードシステムが必要なのか?

Shionlib の目標の一つは、あらゆる時代のビジュアルノベル/ギャルゲーの完全でコントロール可能なアーカイブを構築・維持することです。これは容易なことではありません。私たちの経験上、これを実現できるのは コミュニティ主導 のモデルだけです。

そのため、すべてのユーザーに大容量ファイルのアップロード権限を開放するアップロードシステムを設計しました。

アップロードのワークフロー

ローカルファイルを選択すると、システムはファイルを 5 MB 以下のチャンクに分割し、ファイルの SHA-256 ハッシュを計算します。

アップロードが開始されると、ブラウザはすべてのチャンクとハッシュ値を Shionlib のサーバーに送信します。サーバーはアップロード済みチャンクを結合し、再度 SHA-256 を計算してブラウザ側のハッシュと比較します。一致すれば、アップロードは成功としてマークされます。

続いて、Shionlib のサーバーはアップロード済みファイルをスキャンし、要件を満たしているかを確認します(完全性、破損の有無、暗号化の有無、マルウェアの可能性など)。スキャンを通過すると、ファイルは待機キューに入り、Shionlib の S3 バケットへアップロードされるのを待ちます。

最後に、ファイルは Shionlib の S3 バケットへアップロードされ、ダウンロードリンクが生成されます。これでアップロードプロセスは完了です。

課題

システム全体は細心の注意を払って設計する必要があります。もし誰かが何らかの方法で破壊を試みれば、許容できない結果を招きます。

  • 非常に大きなファイルを大量に悪意をもってアップロードする行為。計画を超える大量のストレージを占有し、過大なストレージ費用の発生につながります。
  • マルウェアを含むファイルを悪意をもってアップロードする行為。プロセス中にファイルの展開や実行は行いませんが、ダウンロードしたユーザーに危険を及ぼす可能性があります。

システムを健全かつ持続的に運用するため、アップロード枠(クォータ) を設けています。

各ユーザーは、登録から 15 日後に 5 GB のアップロード枠を付与され、毎月 1 日にリセットされます。その月に適正なファイルを Shionlib にアップロードして枠を使い切った場合、システムが動的に枠を増やします(上限 20 GB)。

より大きなファイルをアップロードする必要がある場合は、管理者に申請して枠の引き上げを受けられます。

次のいずれかに該当する場合、アップロード枠のクリア/減算、あるいはアカウント停止の対象となることがあります。

  • アップロードしたファイルにマルウェアが含まれていると判断された場合
  • 無意味なジャンクファイルをアップロードした場合
  • アカウントが長期間非アクティブな場合
  • 他のユーザーから違反ファイルとして通報があった場合

ファイルのアップロード

形式とファイル名のルール

アップロードするファイルは 単一 の zip/rar/7z/tar/gzip にまとめ、パスワードは設定しないでください

ファイル名はゲームの名称/別名など自由ですが、言語、翻訳グループ/翻訳者、バージョン等の情報を詰め込みすぎることは推奨しません。これらの情報は、後で作成するリソースのメタデータに記載できます(後述)。

アップロードを開始する

ゲームのエントリーページで アップロード をクリックしてアップロードウィンドウを開きます。アップロードしたいファイルを選択し、開始 をクリックするとアップロードが始まります。

アップロード中は、ウィンドウ内の進捗バーで進捗を確認できます。完了するまで、ブラウザと当該タブを前面で開いたままにしてください。

一時停止 ボタンでいつでもアップロードを停止できます。アップロードセッションは保持され、後で 再開 をクリックすると続きからアップロードできます。

アップロード中断を想定し、レジュームに対応しています。中断した場合はアップロードウィンドウを再度開いてください。進行中のアップロード が表示されるはずです。該当セッションの 続行 をクリックし、同じファイルを選択すると続きからアップロードできます。

アップロードを再開

アップロード完了後、下部のメタデータ入力欄で実行プラットフォーム、言語、備考などを記入します。入力後、送信 をクリックしてアップロードを確定します。

メタデータを入力

送信が完了すると、システムはファイルの処理(スキャン、S3 へのアップロード等)を開始します。処理状況は、トップページの 最新のアクティビティ セクションで確認できます。

Command Palette

Search for a command to run...

ゲームファイルのアップロード方法 - Shionlib