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

Share
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

個人開発と生活

個人開発と生活

朝、娘をバス停まで送り出す。前にちらっとみかけた田村淳の相槌術が面白そうだったので、ママ友との雑談で早速実践してみたら効果てきめんだった。その方法は単純に、職業病で癖になっている批判的思考を完全オフにし、相槌に全神経を注ぐ、というものだ。「へぇ」「うん」「うーん」「なるほど〜」と、相手の話にどんなバリエーションで返そうかという所に集中する。騙されたと思って試してみて欲しいんだが、このお陰で相手の話がよく理解できて、自然なフォローアップの質問やリアクションが浮かぶようになる。こちらから頑張って面白い話をひねり出す必要が無いので、気が楽になった。話の結論も何もいらなくて、「そうなんですね」「いいですね」「ほんじゃお疲れ様です〜」みたいな感じで締めくくる。反応に困ったらとりあえず「いいですね」まじで便利!男相手の会話でも有効。インタビューにも応用が利きそうだ。 天気が悪くてだるいので、やる気が出るまで部屋でレシートの撮影などの単純作業をして過ごした。レシートを撮ったら事務代行さんに投げる。そのうちAIに代替させたい。レシートは基本カフェばっかりである。 ユーザフォーラムをチェックしたら、

By Takuya Matsuyama
個人開発で日本から海外へ、10年間の歴史 — ひろしさんとの対談(前編)

個人開発で日本から海外へ、10年間の歴史 — ひろしさんとの対談(前編)

数週間前、ひろしさんのポッドキャストにゲストで出演しました。お互いの長い個人開発の経験について語り合いました。英語版を作成する過程で、日本語でも綺麗に整形した書き起こしが出来たので、こちらに掲載します。お楽しみください。 ※ギアアイコンをクリックして、音声と字幕を日本語に変更できます。 00:00 イントロ:TAKUYAさんようこそ 01:32 TAKUYAさんの自己紹介:WalknoteからInkdropまで 04:54 独立への踏み切り方:慎重派と勢い派 06:51 個人開発がフリーランス案件につながった 09:17 Inkdropで食えるようになるまで 12:15 なぜ最初から海外市場を狙ったのか 14:54 AI登場前、英語コピーに苦戦した話 16:18 AIバイブコーディング時代をどう見ているか 17:24 全てのコードを一行ずつレビューする使い方 21:06 AIは新幹線:速さの先にあるもの 25:53 AI時代に「感性」が大事になる 27:

By Takuya Matsuyama
「一汁一菜」にAI時代の生き方が詰まっている

「一汁一菜」にAI時代の生き方が詰まっている

どうも個人アプリ作家のTAKUYAです。 今回は、AI時代を開発者・クリエイター・表現者としてどう健やかに生きるか、について考えていることをシェアしたいと思います。ここでの「健やかに生きる」とは、心身の健康を保ちながら、ものづくりを楽しみ続けるという意味です。 読者の中にも、最近のAIの急速な進化の中でどう生き残り、さらに活躍していくかを悩んでいる方は多いのではないでしょうか。正直、すべてに対する正解はわかりません。未来を正確に予測できる人はいないからです。 でも自分は、ソフトウェア寄りのアーティストとして生きる上で大事なのは、「戦略」や「堀(moat)」を築くことよりも、「生きる方向性」 だと思っています。 人生とは速度ではなく方向である – ゲーテ 自分はどこに行きたいのか?何を見たいのか?それが大事です。戦略は状況に合わせて柔軟に変えればいいからです。 今回は、日本の文化からいくつかの生き方の原則を探ってみたいと思います。 最近、料理研究家の 土井善晴 さんの 「一汁一菜でよいという提案」 を読んで、日々のリズムを健やかに保つためのヒントがたくさん詰まっていると感じまし

By Takuya Matsuyama
Claude Codeをtmuxのポップアップウィンドウで継続的に走らせる方法

Claude Codeをtmuxのポップアップウィンドウで継続的に走らせる方法

💡本記事は英語ブログの日本語訳です。 どうも、TAKUYAです。 AIコーディングでは専らClaude Codeを使っています。最初はtmuxでターミナルの右側にペインを分割して使っていたのですが、幅が狭すぎてメッセージやdiffがまともに表示できず、使いづらかったです。 <Prefix>+zでペインを最大化すればいいのですが、毎回やるのは面倒でした。 そこで、ポップアップウィンドウでClaude Codeを起動するようにしました。キーバインドを押せばセッションが開き、閉じてもバックグラウンドで動き続けるので、すぐに再開できます。 この記事では、それを実現するためのtmuxの設定方法を紹介します。 動画で見る(英語): ポップアップウィンドウはサブプロセスを維持できない tmuxのdisplay-popupコマンドを使うとポップアップウィンドウを表示でき、ちょっとしたツールにすぐアクセスするのに便利です。 僕はlazygitでgitの状態をサッと確認するのに使っています: bind -r g display-popup -d '#{pane_current_path}'

By Takuya Matsuyama