第29話

 二海はデベロッパーツールで、地図を見るときにどんな通信が行われているのかの一覧を調べた。


(んん?)


 一覧の中には、地図の情報をやりとりしているものが見当たらなかった。二海のはずらずらと地図情報のレスポンスが並ぶと予想していたのに、それが無かった。


(んん……)


 二海はしばらく悩んでから、一旦ノートパソコンから離れた。学校用のカバンからルーズリーフを取り出し、地図の絵を描いた。


(Webなんだから、この地図とかコメントの情報とかは、絶対にサーバーから来てるんだよね)


 サーバー、と書いて丸で囲んだものをルーズリーフの上に追加する。


(それをブラウザが受けて、やりとりする……)


 四角をブラウザのつもりで書き、サーバーとの間に矢印を引いた。


(でも、さっきブラウザのデベロッパーツールの一覧には載ってなかった……)


 二海はかちかちとシャーペンをノックした。やりとりは確かに発生しているのだ。それは何なのだろう?


(……そしたら、やりとりを全部記録して、それを調べればいいんだ)


 二海は再びノートパソコンに向かい、Wiresharkを立ち上げた。先程Networkの問題で使ったのがそのままになっていたので、それを一旦消す。それから、今から発生する通信をすべて記録するように設定してから、地図の問題のページをもう一度開いた。


 Wiresharkは流れてくるパケットをどんどん記録していく。適当なところで二海は記録を一旦止め、中身を調べにかかった。


(これはJavaScriptのコードを取りにいってるやつ、これは画像、それでこれは……ん?)


 Wiresharkが記録したパケットの中には、見慣れないプロトコルのものがあった。『WebSocket』というものだ。しかも数が多い。


 WebSocket、というプロトコルについて二海は検索した。『WebSocketはブラウザとサーバーの双方向通信のための規格です。チャットやオンラインゲームなど、リアルタイムなやりとりを行うのに適しています。HTTPとは違い、一度コネクションを確立するとその後もそのコネクションを用いて通信ができます』という解説が出てきた。そう言えば読んだことがある気がする、と二海は本棚にしまってあった『ネットワークの基礎がわかる』を取り出した。後ろの索引からWebSocketを探す。『WebSocket(双方向通信のプロトコル。RFC6455)』という、おまけのような一文があるだけだった。


 RFCという言葉は、前に桃に教わったことがある。確か、HTTPとかIPとかのプロトコルなどについて詳しく定めているものだ。そこで二海はひらめいた。このRFC6455を読めば、WebSocketの仕組みが書いてあるにちがいない。仕組みがわかればこの地図サービスとブラウザが何をどうやりとりしているのかわかるから、解き方もそこから導き出せるはずだ。


 二海はRFC6455を検索した。そしてトップに出てきたページは、見事にすべて英語で書かれていた。


「英語かあー」


 しかも長い。下までのスクロールがなかなか終わらない。最後のページには『Page 71』とあった。七十一ページも英語を、しかもこの時間制限のある中で読むのはかなり厳しい。


(そうだ、翻訳……)


 二海は右クリックして、『日本語に翻訳』を選択した。英語は無事消えたが、しかしたとえ日本語であっても、RFCを読むのはなかなか骨が折れることがすぐわかった。『プロトコル全体を改革することなく専用ポート。この最後の点は、対話型メッセージングのトラフィックパターンが標準のHTTPトラフィックと厳密に一致せず』という箇所など、何がどうなっているのかさっぱりだった。


 WebSocketの仕組みが知りたい。桃なら知っているかもしれないが、チャットにはいまだに桃からの書き込みがない。問題に集中しているのなら、話しかけて邪魔はしたくなかった。


 いつのまにか、二海の手のひらはべたべたになっていた。冷房はつけているのだけれども、問題に夢中になっていると、知らないうちに手に汗をかいているようだった。


 二海は立ち上がり、洗面所に行って手を洗った。鏡の中の自分は、口を引き結んでいる。二海は少しの間それを見つめた後、思い切ってざぶざぶ水をたくさんつかって顔を洗い、タオルでふいて化粧水と乳液をつけた。


 部屋に戻って椅子に座った。何も進んではいないが、それでもさっぱりとはしていた。二海はノートパソコンには向かわず、天井を見ながら考えた。


 まず、簡単にでもWebSocketについて知る。それからWiresharkで記録したログをもう一度調べて、何を、どうやって、やりとりしているのかを確認する。例えば、『あああ』というコメントをどう取っているのか。それがわかったら、富士山に埋まっているというコメントも同じ方法で取れるかもしれない。


 検索を繰り返し、日本語でWebSocketの仕組みを解説しているページは見つかった。それからWiresharkでWebSocketでやり取りしているデータの中身を見る方法も。左にブラウザ、右にWiresharkのウィンドウを開きながら、二海はデータの中身を見ていった。


「ええー?」


 検索で見つかったページでは、Wiresharkでデータの中身を見るのはとても簡単なように書かれていた。パケットの行をクリックし、詳細を開いて『Unmask Payload』というところに受信したデータ、『Hello』という文字列が入っている。


 二海のWiresharkの『Unmask Payload』にあるものは違った。『cP4hTTe5mj761yC3yAMArFKcDPDRaXcyecKGQ3ekB3AGUAJoVdhpPScKJbjTTpMupBpxrLAW7wn2obRXH5saL5jvVZ6vcDpjNXHw2』という、意味のない文字の並びなのだ。


「ふうーぅん……」


 肺から息を吐き出し、二海は新しいルーズリーフを取り出した。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る