ApexドメインをALIASレコードで運用してはいけない

ApexドメインをALIASレコードで運用してはいけない

ApexドメインをALIASレコードで運用してはいけない

遅いぞ

English version is here.

ApexドメインはNakedドメインとも呼ばれ、サブドメインがついていないドメインを指す。自分のアプリ「Inkdrop」のウェブサイトを今まで inkdrop.app で運用してきたが、最近 www.inkdrop.app に移動した。Netlifyという、しばしば速いと評判のウェブホスティングサービスにデプロイしている。確かに、多くのNetlifyでホストされているウェブサイトがとても高速に読み込まれているのを目にした。しかしなぜか自分のサイトはそこまで速度が出ていなかった。特にTTFB (Time-to-first-byte)が異常に遅くて、常に200msより大きく、さらに120KBのダウンロードに800msもかかっていた。いったいなぜ?

ALIASレコードはgeo-targetingを無効化する

もしあなたが自分のドメインを持っているなら、Netlifyのドメインに対して CNAME を設定しなければならない。しかしながら、ApexドメインはDNSの仕様上 CNAME が割り当てられない。

NetlifyでApexドメインを使うには、その一つの方法として ALIAS レコードを使えとドキュメントにある:

Custom domains
A domain name is the URL or web address where visitors find your site. By default, any site on Netlify is accessible…

この ALIASレコードを使用するため、自分はNS1というDNSホスティングサービスを使っている。このNS1のドキュメントに ALIAS レコードに関する記述を見つけた:

Disadvantages of an ALIAS record
Geo-targeting information is lost.
Since it is the authoritative server for example.com (issuing the queries for lb.example.net), then any intelligent routing functionality on the lb.example.net record will act upon the location of the authoritative server instead of your location. The EDNS0 edns-client-subnet option does not apply here. This means that you may be potentially mis-routed. For example, if you are in New York and the authoritative server for example.com is in California, then lb.example.net will think you are in California, and will return an answer that is distinctly sub-optimal for you in New York.

まじか。

要するに、 ALIAS レコードはDNS問い合わせ時にNS1のサーバが仲介するので、Netlifyがサイトの訪問者がどの地域からアクセスしているのか分からなくなる、という事だ。厳密には常にNS1のサーバが置かれている地域からのアクセスということになる。なので転送経路を最適化できない。この件に関してNetlifyのフォーラムで質問してみた

という訳で残念ながらそれは真実のようであった。仕方ないので自分のサイトを www サブドメインに移すことにした。Apexドメインは(開発者から見て)美しいが、訪問者にとってはさして大きな問題ではなさそうだ。また、最近のブラウザは www をアドレスバーに表示しないことに気づいた。例えばChromeだと:

iOSのSafariでも表示されない:

Chromiumの中の人によればwww とか m (モバイル用)はGoogleから “trivial (重要でない)” と認識されていて、その理由は多くの人がそこにあんまり注意する必要性が無いからだとしている:

the www and m (for mobile) subdomains are being classified by Google as "trivial" subdomains because they feel most people do not need to be concerned with the information they represent.

自分もそうだなと思い当たるふしがあった。例えば今回の事があるまでNetlifyのウェブサイトが https://www.netlify.com/ だという事なんて気づかなかった。

TTFBが275msから73msに改善した

ご覧の通り、サイトのドメインをwww.inkdrop.app に移動したらめちゃくちゃ速くなった:

ダウンロード速度も申し分ない。Cool.

それでもApexドメインが使いたい?

foolが上記フォーラムで答えているとおり、あなたには2つの選択肢がある:

  1. Netlify DNSを使う。これは “Linked A Record” が使えるので彼らのgeo-targetingが有効にできる
  2. Cloudflareの CNAME flatteningを使う。それだとNetlifyのgeo-に干渉しない

なぜ自分が上記選択肢を取らなかったかと言うと、自分はすでにNS1を使っており、 www に移行するのが最も早かったからだ。

あなたのウェブサイトの速度改善の参考になれば嬉しい。

Read more

貫禄を捨てて愛嬌で生き延びろ!40代オッサンの生存戦略

貫禄を捨てて愛嬌で生き延びろ!40代オッサンの生存戦略

どうもTAKUYAです。 つい先週(11月19日)に誕生日を迎え、41歳になりました。40代と言うのは若い頃には想像もしなかった年代で、どう生きれば良いのかというイメージがあまり具体的に湧かない、曖昧な年齢ではないでしょうか?自分の父親を想像するも、日中はいつも仕事でいなかったのであまり参考になりません。 自分は個人開発で生計を立てていて20代、30代で積み上げて来たものが上手く実を結んだおかげで今の生活があります。育児にも、いわゆるサラリーマンよりかは柔軟に参加できていて、子供との時間も沢山取れています。ママ友も出来ました(迷惑かけっぱなしですが)。 本記事では、そんなライフスタイルを送る自分が40代で大事にしたいことについて書きたいと思います。タイトルにもある通り、結論から言うとそれは「愛嬌」だと思います。以下、中年男性の愛嬌の重要性について説明します。 TL;DR * 「貫禄が出てきたね」と言われたら注意 * 笑顔を作れ。オッサンがムスッとしてたら普通に怖い * 謙虚に振る舞え。実績を積むと周りが萎縮する * ギャップ萌えを活用しろ 「貫禄が出てきたね」と言わ

By Takuya Matsuyama
過集中を避けるための働き方とルーティン(二児の父ver.)

過集中を避けるための働き方とルーティン(二児の父ver.)

どうもTAKUYAです。 先日書いた通り、最近個人開発を頑張りすぎて体を壊してしまいました。 その原因の一つが過集中癖です。自分はもともと何かに集中すると周りが見えなくなる傾向があり、それがたまに私生活にも影響を及ぼします。同じ失敗を繰り返さないためにも、ちょっと働き方を再設計したいと思います。 働き方に対して他人の指摘をアテにしない 自分のようなフリーランサーまたは自作サービスで生計を立てている人は、時間の使い方を自分で自由に決められます。その反面、どこまでも極端な働き方が出来てしまい、それを指摘したり止めてくれる人がいないという欠点もあります。自分には妻がいますが、全く違う業界なので自分の作業ペースがどのようなものか具体的に把握できません。 「疲れた!」と言えば「休んだら?」と言ってくれますが、働き方やペース配分などにまで口は出しません。なので、他人のストップサインはアテに出来ません。 (心理カウンセラーの可能性を別途検討中) 最近子供が生まれたので厳密なルーティン実行は出来ない 一日を時間単位・分単位で区切ってルーティンを組むのは気持ちがいいですよね。僕もそうしたい

By Takuya Matsuyama
なぜ体を壊してまで個人開発を頑張るのか?自尊心の欠如や過集中癖と向き合う

なぜ体を壊してまで個人開発を頑張るのか?自尊心の欠如や過集中癖と向き合う

どうもTAKUYAです。最近、個人開発を頑張りすぎて体調を崩してしまいました。アトピーが猛烈に悪化して、QoLが著しく下がってしまいました。まだ療養中ですが、毎日1万歩以上歩いて、徐々に回復しつつあります。 この過ちを繰り返さないためにも、自分は一体何が原因で頑張りすぎてしまうのか?という事について深堀りして考えてみたいと思います。また、個人開発におけるメンタルヘルスはあまり語られていないトピックだと思います。本記事が、同じように仕事を頑張りすぎてしまう人の助けになれば幸いです。 TL;DR * なんとなく続けていたソフト開発が自分を救った * 原体験が歪んだモチベーションを生んでしまった * 親が引くほどの過集中癖がある * 生得的な直せないバグと考えることにする * アプリの成功に関係なく、自分をあるがままに受け入れる * 挫折しないのは、なんだかんだで前向きだから * ユーザさんから「休め!」と叱咤された * 人生は長い。個人開発なんかで死ぬな 自己の原体験について振り返ってみる 個人開発だけで生活するようになって、かれこれ8年ぐらいが経ちます。こう

By Takuya Matsuyama
ユーザサポートの問い合わせを装った攻撃が怖すぎた

ユーザサポートの問い合わせを装った攻撃が怖すぎた

どうもTAKUYAです。個人開発をしていてアプリの知名度が上がってくると、作者個人(あるいはサイト管理人)を狙った攻撃というのをたまに受けます。つい先日も、怖すぎるメールを受け取ったのでシェアします。 件名: Cookie consent prevents platform access Hello, I cannot access use the store. The cookie consent notice keeps appearing and nothing happens once I approve or try to close it, so I’m unable to interact with the website. Please provide guidance on

By Takuya Matsuyama