外部通信なしで動く13作品の設計は、何を保証し、何を保証しないのか
遊びを見つける執筆にClaudeを使用しています。

電車がトンネルに入って電波が途切れた場面を考えてみます。開いていたパズルが固まらず、そのまま遊び続けられるなら、そのゲームは遊びの最中に外のサーバーへ問い合わせていない可能性があります。公式作品13本は、すべて独立したHTMLとして外部通信なしに動く、と確認されています。 ただし「外部通信なし」という言葉は広く聞こえる分、受け取り方がずれやすい言葉でもあります。何が通信しないのか、どの時点の話なのか、通信を使う機能はどう位置づけられるのか。この記事は、確認済みの事実だけを材料にこの問いを分けて整理します。設計の意図や開発の経緯は、確認できないので推測しません。「設計から読み取れること」と「作品を開いて自分で確かめること」を分けて書きます。 最後には、読者がブラウザで確かめるための手順も載せています。結果は書きません。読者が自分の環境で確かめるための設計書として使ってください。
この記事の目次
「独立したHTML」と「外部通信なし」の意味
確認されている事実は次のとおりです。13作品はすべて独立したHTMLで、外部通信なしに動きます。ここから言えることを三つに分けてみます。
一つ目は、ゲームを動かすのに必要なものが作品の中にまとまっているということです。外部のサーバーに置かれたスクリプトや素材を、遊ぶたびに取りに行く作りではありません。
二つ目は、遊ぶ人の環境の影響を受けにくいということです。外部の資源に依存しなければ、読み込み後は通信状況が悪くても遊びが止まりにくくなります。これは設計から読み取れる一般的な性質です。個々の作品でどこまで当てはまるかは、後述の手順で確かめられます。
三つ目は、ゲームの中から外へ出ていく情報の経路を想定しなくてよいということです。保護者や学習者にとって、この点は大きな意味を持ちます。ただし、これはゲームのHTMLについての話です。ログインや履歴といったプラットフォーム側の機能まで含めた話ではありません。次の章で、この境界を見ていきます。
保証の外側にあるもの:保存と対戦
外部通信なしという事実と、一見ぶつかるように見える機能が二つあります。
保存の扱い
保存があるのは「余白の庭」「WAVE / WAVE」「かたちのあいだ」の3作品です。他の10作品では、記録や録音は画面を開いている間だけ残ります。
- 雨音のピアノの録音は、画面を開いている間だけ残ります。
- こだまの森の最高記録は、ゲームを開いている間だけです。
- 月夜の配達の各夜の最少区間数は、プレイ中だけ記録されます。
- 小さな軌道の最速記録も、プレイ中だけです。
この一貫性は、設計から読み取れる事実です。10作品は記録を長く残さない作りで、残す3作品は保存を持つ作りです。保存先がどこか(端末内なのか、別の場所なのか)は、確認済み事項に書かれていません。この部分は作品を開いて確かめる項目です。確認のしかたは後の手順に入れてあります。
プラットフォーム側の説明では、アップロード作品内のlocalStorageやsessionStorageは一時メモリーの互換処理とされています。この説明が公式作品の保存にそのまま当てはまるかどうかも、確認済み事項には含まれていません。ここは断定せず、現在の案内で確認してください。
オンライン対戦の扱い
オンライン対戦ができるのは、「潮目のオセロ」と「灯りのチェス」の2作品だけです。確認済みアカウントで部屋を作り、リンクで友達を1人招待します。手番・合法手・勝敗はサーバーで確認され、再接続、投了、対戦履歴もあります。
ここで素朴な疑問が出ます。13作品すべてが外部通信なしなら、この2作品の対戦はどう実現されているのかという疑問です。確認済み事項には、この点を説明する記述がありません。可能な整理は二つです。
- 対戦はゲームのHTMLとは別に、プラットフォーム側が提供する機能である。
- 対戦を選んだときだけ通信が生じる。
どちらが実態に近いかは、断定できません。通信が発生するのは、対戦を開始したときだけなのか、ひとり対局でも出るのか。この点は、手順の中で確かめられます。
ひとり対局でのヒントと一手戻すは、ひとり対局のみの機能とされています。判定エンジンとしてchess.jsが同梱されている点も含め、ひとり対局が作品内で完結する設計だと読み取れます。ここは次の章でもう少し詳しく見ます。
設計から読み取れる三つの手がかり
確認済み事項の中から、「外から取り寄せない」作りを示唆するものを三つ挙げます。
判定エンジンの同梱
「灯りのチェス」は、判定エンジンとしてchess.jsを同梱しています。チェスの規則(キャスリング、アンパッサン、選択式の昇格、標準の終局判定)は複雑です。それを外部のサービスに問い合わせず、作品の中の部品で判定する設計だと読み取れます。CPUの思考時間が約450msに制限されている点も、端末内で計算する作りと整合します。ただし、これが外部通信なしの理由だと言い切るだけの根拠はありません。
言語切替と拡大で進行が保たれる
13作品は、サイトの日本語/英語設定に合わせて表示を切り替えます。言語変更とプレイ画面の拡大で、進行は保たれます。表示を切り替えても遊びが続くことは、必要な文言が作品の中に入っている作りと合います。
録音・再生や設定の端末内での完結
「雨音のピアノ」は30秒・128音までの録音を、その場で再生できます。「WAVE / WAVE」は16ステップのループ再生、テンポ、スウィング、ミュートを持ちます。これらは入力して、その場で鳴らす種類の機能です。どの仕組みで音を出しているかは確認済み事項にないので、書きません。
外部通信なしで保証できること、できないこと
ここまでを表に整理します。
- ゲームの動作、確認済みの事実:独立したHTMLで外部通信なし、読み取れること:読み込み後の遊びは作品内で完結する可能性が高い、確かめる方法:ネットワーク欄、オフライン操作
- 記録・録音、確認済みの事実:10作品は画面を開いている間だけ、読み取れること:長期保存を前提にしない作り、確かめる方法:再読み込みで残るか
- 保存、確認済みの事実:3作品に保存あり、読み取れること:保存先は不明、確かめる方法:別の端末・別のブラウザで開く
- オンライン対戦、確認済みの事実:2作品のみ、サーバーで確認、読み取れること:HTMLとの関係は不明、確かめる方法:対戦開始前後の通信
- ログインや履歴、確認済みの事実:プラットフォーム側の機能、読み取れること:ゲームのHTMLとは別の話、確かめる方法:現在の案内で確認
保証できるのは、「ゲームのHTMLが外部に通信しない」という、範囲を絞った事実です。「アソバース全体が外部と通信しない」とは言えません。ログイン、プレイ履歴、レビュー、ランキングなどはプラットフォームの機能で、ここでの話の外にあります。
自分で確かめる手順
読者が自分で行えば答えが出る形にします。13作品のうち、まず3本を選んでください。たとえば、保存のある作品、保存のない作品、オンライン対戦のある作品から1本ずつです。
準備するもの
- パソコンのブラウザ(開発者ツールが使えるもの)
- 記録用のメモ(作品名、操作、通信の有無)
手順
- 作品のページを開き、開発者ツールを開きます。一般に、WindowsやLinuxではF12キー、MacではOption+Command+Iキーで開きます。
- 「ネットワーク」の欄を選びます。「キャッシュを無効化」のチェックを入れ、一覧を一度消します。
- ページを再読み込みし、作品が起動するまでの通信を一覧で見ます。リクエスト先の列やドメインの列を、作品を配信しているものとそれ以外に分けて記録します。
- 作品が起動した後で、一覧を消します。次に、その作品の主な操作を3つ選んで行います。たとえば「かたちのあいだ」なら、駒を動かす、ヒントを使う、一手戻す、です。操作のたびに新しい通信が増えたかを数えます。
- 同じ作品で、ネットワークを切ります。機内モードやWi-Fiの停止でかまいません。この状態でも操作が続くかを確かめます。
- 保存のある3作品では、ゲームを閉じて開き直し、状態が残るかを確かめます。別のブラウザでも開き、同じ状態が見えるかを見ます。
- 「潮目のオセロ」か「灯りのチェス」では、ひとり対局とオンライン対戦の準備画面を比べます。通信が出るタイミングを記録します。
記録の取り方
1作品につき、操作ごとに「新しい通信:あり/なし」「オフラインで動いたか:はい/いいえ」を書きます。各操作は2回ずつ行い、2回とも同じかを確認してください。
結果の読み方
- 操作中に新しい通信が出ず、オフラインでも動けば、読み込み後の遊びは端末内で完結していると判断できます。
- 起動時だけ通信が出るなら、作品の読み込みの通信だと考えられます。次に、その通信先が作品の配信元かどうかを見ます。
- 特定の操作で通信が出るなら、その操作の名前を記録します。対戦の準備やログインに関わる操作なら、プラットフォーム側の機能の可能性があります。この場合は「現在の案内で確認する」に進んでください。
- 保存のない作品が再読み込みで状態を失うのは、確認済み事項どおりで、不具合ではありません。
起こりやすい誤り
- ブラウザのキャッシュが効いていると、通信が見えないだけの可能性があります。必ず「キャッシュを無効化」を入れてください。
- ブラウザの拡張機能が出す通信を、作品の通信と取り違えることがあります。拡張機能を切ったウィンドウ(シークレットウィンドウなど)で試すと切り分けられます。
- 作品のページには、ゲーム以外の部分(ページ枠など)もあります。通信の一覧にはそれらも並ぶので、作品の読み込みと区別して読んでください。
- 一度の観察で結論を出さないでください。2回以上同じ結果になるかを確かめます。
作る人が持ち帰れること
投稿を考えている人にとって、この設計は参考になります。アソバースの投稿条件は、独立したHTMLと相性がよい内容です。
- アップロードは20MiB以内で、ZIPは展開後に合計100MiB・1,000ファイル以内、1ファイル30MiB以内です。
- 入口は直下のindex.htmlで、素材は相対パスで指します。
- サーバー用コード、サービスワーカー、SharedArrayBufferを使うマルチスレッドは対象外です。
素材を相対パスで同梱し、サーバーを前提にしなければ、これらの条件の範囲に収まりやすくなります。13作品の設計と共通する考え方です。ただし、13作品がこの条件を意識して作られたかどうかは確認できません。ここは相性の話にとどめます。
ゲームは、sandbox付きのiframeで実行されます。アップロードされたコードは、メインサイトと別のオリジンから配信されます。外部通信なしに作ることは、この実行環境の中で動かす条件を満たしやすくもします。
もし記録を残したくなったら、プラットフォーム側にはSDKを使ったクラウドセーブ(作品ごとにJSONで128KiBまで)があります。アップロードしたゲームにはSDKが自動で追加され、URL投稿のゲームは作者がSDKを読み込むと使えます。外部通信なしの設計と、クラウドセーブを使う設計は、別の選択肢として並べて考える必要があります。その場合も、ゲームにFirebaseのUID、認証トークン、メールアドレスを渡さないことが前提です。
次の行動
まず、気になる作品を3本選び、ネットワーク欄で起動時と操作中の通信を数えてみてください。その後、保存のある作品と保存のない作品を、再読み込みで比べます。対戦の仕組みなど、確認済み事項にない点は、現在の案内で確認してください。

