思考実験:Peach乗り放題チケットを手に入れるのにエンジニアの知識は役立つか？

LCCのPeachが約二万円で1ヶ月全路線乗り放題チケットを先着でオンライン発売するという。
**二万円で買える先着の枠は１００人ちょいであり、販売スタート時には全国の猛者たちが、我ぞばかりに競い合うだろう。**

https://www.jiji.com/jc/article?k=2021101200893&g=eco


しかし、一瞬で埋まってしまう枠を取るのに、**エンジニアとしての知識を応用**すれば、狭い枠を取ることができるのではないか？

あくまで**思考実験**ですので、ぜひコメント欄や記事などで反論や意見などお願いします。
まあ、こんな記事を書くと**先着順の枠を、全てQiitaのガチ勢エンジニアが埋めてしまうかも**なので怖いですが。

# TL;DR

- サーバに距離的に近い東京に一時的に出張する
- Tier1に近いNTTの光回線にパソコンを有線接続する
- 高速なMicrosoft Edgeを用いて予約サイトで戦う
- 予約サイトを直前に巡回しておき、ブラウザに画像などをあらかじめキャッシュさせておく

という手法がベストなのでは？という結論に至る。

とはいえ、さまざまな要因があるので、**コメント欄でぜひとも粗探しをしていただきたい。**


# ルータからパソコンまでのボトルネックになるうるものは？

どんなにプロバイダのネットワークのスピードが早くでも、家のルータからパソコンまでの遅延が律速になる可能性がある。

## WIFIの干渉問題

### 理論的に無線は干渉しやすいので、有線を使おう
WIFIは電波が干渉するとパケットロスなどが有線よりも発生しやすい。これも情報系の必修の授業で出てくる話題だ。このため、パケットの再送信が何度も起これば、予約時のスピードで不利になるかもしれない。**現代はご近所さんもWIFIをガンガン飛ばしてくる**ので、これは問題である。 特に無線の規格では、パケットロスの検知にタイムアウトが関わってくるので、タイムアウトの時間分だけ明らかに不利である。

![denjiha.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614389/19a15b1b-e04e-0adf-38be-888a33892771.png)


また、私の家のWIFIは2Gの規格だが、これは**電子レンジと干渉する**。言い忘れていたが、Peachの乗り放題チケットの予約は**正午**に始まる。自宅だと**昼ごはんを作るのに家族がガンガンに電子レンジをかまして、ネットが頻繁に遅くなる**ことが日常茶飯事である。ですので、電子レンジと干渉しにくい5G規格のWIFIに変える必要がある。

**いや、そもそも有線で接続するのが良くね？**
パケット衝突や輻輳に関しても、有線と無線では衝突の解決にかかる時間が有線の方が理論的に早い。

## ブラウザの種類 - Microsoft Edgeを渋々使う

IT界の巨人たちが日々切磋琢磨しているおかげでスピードテストの結果は日々変動するが、現時点ではMicrosoft Edgeが最速のようである。Chromeユーザーの私としては悔しいが、EdgeはChrominum basedなので、プライドを捨ててEdgeを予約時には使うのがいいだろう。

https://www.avast.com/c-fastest-web-browsers


# サーバーの位置に関する考察


### そもそもサーバはどこにあるのか？

まずは、公式サイトのサーバの位置を知る必要がある。

まずはターミナルから`nslookup`を用いてサーバのIPアドレスを特定する。

```
>> nslookup www.flypeach.com 
Server:		ZZZZ
Address:	ZZZZ

Non-authoritative answer:
Name:	www.flypeach.com
Address: XXXX
Name:	www.flypeach.com
Address: YYYY
```

注意：諸事情により上では各種アドレスを隠しました。

GeoLite2というAPIでIPアドレスの対応する地球上の場所を確認できる。

https://dev.maxmind.com/geoip/geolite2-free-geolocation-data?lang=en

しかし、準備が面倒なので、今回はGeoLite2を内部で動かしているという以下のサービスを用いた。

https://rakko.tools/tools/11/

XXXX, YYYYは筆者のいる大阪のある地域に該当するらしい。
また、ホスト名には`static.akamaitechnologies.com`が含まれている。
Peachの各種サブドメインなどを`nslookup`してもAkamaiが出てくる。

**とりあえず、Akamaiのサーバを用いていることが示唆された。**

### いま出てきたのはあくまでCDNの位置では？
そう思い、こちらのサイトから再度ドメインを検索すると、東京を示すIPアドレスが得られた。

https://www.cman.jp/network/support/ip.html

**やはり、Akamaiの力を借りてサーバーは日本各地に分散されているのだろう。**
**少なくとも大阪に中央サーバをおく理由はとくにないだろうから、本命は東京付近にあるのだろう**、と考えた。

# インターネットの回線の種類について考察
ということで、本命サーバも東京にあるのではないかという推測にいたった。
Akamaiを利用しているのであれば、どのようなプロバイダのインターネットを利用すると、レイテンシの面で速度的に優位なのか？

結論から言うと、予約時にはTier1に近いNTTの回線を使うのがいいのではないだろうかと言うことになった。

### Tier1に近いプロバイダを利用すればいいのでは？

インターネットの仕組みは大変難しいので、ここでは説明しないが、もちろん情報学生の授業では必修である。
インターネットのレベルも低位のプロバイダから、バックボーンと呼ばれる高位のネットワークがある。とりわけ、　**Tier1というネットワークは、インターネット界隈の中でもガチ中のガチ勢のネットワークである。**

日本でTier1に最も近いのはNTTの提供するネットワークだそうだ。調べた限り、先ほど出てきた**AkamaiはNTTと提携している**とのことである。

https://www.ntt.com/business/case-studies/global/network/akamai.html

>同社のコンテンツ配信プラットフォームで幅広く採用されているのが、NTTコミュニケーションズ(以下、NTT Com)が提供する「グローバルIPネットワーク トランジットサービス」である。NTT ComはグローバルTier1キャリアであり、アジア太平洋地域では最大級のIPバックボーンネットワークを運用している。このため、広帯域を求めるユーザーの要求にも迅速に対応可能であることが採用の大きな理由だ。

もしCDNはAkamaiで、**予約に関わる本命のサーバが仮にAkamaiでない場合にも**、AWSやGCPなどのサービスもTier1に迅速にアクセスできるプロバイダを好むはずなので、おそらくNTTプロバイダが妥当だろう。

一方で、**他のプロバイダの場合は、Tier1に繋がるまでのネットワークの混雑状態や仕組みなどが律速段階になる可能性**がある。

以上をまとめると、**東京近辺のTier1に迅速にアクセスできるNTTの光回線を用いる**のが現時点で必要だろう。

とはいえ、実際のネットワークの経路設定は複雑なので、Tier1に近くても他のネットワークを遠回りに経由してしまうこともあるかもしれない。違うASでは経路設定のアルゴリズムも違うだろうし。その辺はコメントで反論Welcomeです。

# その他のアイデア

- 予約サイトを直前に巡回しておき、ブラウザに画像などをあらかじめキャッシュさせておく

なお、予約サイトがどんなものになるか分からないので、NodeのPupeteerでHeadless Chromeから自動で色々入力させるとかは難しそうだ。。。

https://github.com/puppeteer/puppeteer


他にいいアイデアなどありましたら、コメント欄か別記事などで教えてください。。。