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

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
Keychron K2 HEを無刻印化する手順

Keychron K2 HEを無刻印化する手順

どうもTAKUYAです。KeychronさんにK2 HEをお願いしたら音速で送ってくれたので、無刻印化してみました。どうやったのか過程をシェアします。 Unboxing 上はKeychron Q1です。これは3年間ぐらい使ってきました。キーキャップが若干くたびれていますね。でも問題なく今まで使えていました。そろそろ飽きてきたので新しいキーボードを試したいと思い、前から気になっていたK2 HEを試すことにしました(写真下)。 Amazon | 【国内正規品】Keychron K2 HE ラピッドトリガー ワイヤレス カスタムキーボード、ホールエフェクトGateronダブルレール・マグネットスイッチ、2.4GHz・Bluetooth無線対応、QMKプログラム可能、アルミ+ウッドフレーム、USレイアウト、RGBライト、Mac Windows Linux対応 (ブラック) | Keychron | パソコン用キーボード 通販【国内正規品】Keychron K2 HE ラピッドトリガー ワイヤレス カスタムキーボード、ホールエフェクトGateronダブルレール・マグネットスイッチ、

By Takuya Matsuyama
ノート駆動AIコーディング術の提案

ノート駆動AIコーディング術の提案

どうもTAKUYAです。みなさんはAIエージェントを普段のコーディングで活用されていますか。ちょっと面白いワークフローを思いついたのでシェアします。それは、ノート駆動のエージェンティック・コーディング・ワークフローです。最近Claude Codeのプランモードを使っていたら、ターミナル内で生成されたプランを読むのが辛かったんです。それで、じゃあMarkdownノートアプリであるInkdropをプランの保存先バックエンドとして使えば解決するんじゃないかと思って、 試してみました。こちらがそのデモです(英語): こちらがClaude Codeの設定ファイル群です: GitHub - inkdropapp/note-driven-agentic-coding-workflow at devas.lifeComplete Claude Code configuration collection - agents, skills, hooks, commands, rules, MCPs. Battle-tested configs from an Anthropic hackathon w

By Takuya Matsuyama
2025年個人開発活動の振り返り

2025年個人開発活動の振り返り

どうもTAKUYAです。もう1月も半ばに差し掛かっているけど、2025年の自分の活動の振り返りをしたい。去年を一言で言うなら、本厄を満喫した年だった。 厄年とは、人生の節目にあたって、体調不良や災難が起こりやすいと経験的に言われる年齢のこと。数え年で42歳、確かにもう若さに任せた事は出来ないなと痛感した年だった。(ところであなたの国ではこのような年はありますか?) 夏に体調を崩して2~3ヶ月動けなくなった 暖かくなり花粉が飛び出した頃に、持病のアトピーが悪化しだして、まともに生活出来なくなってしまった。酷さで言うと、2019年に脱ステした時と同じぐらい。 脱ステに無事成功したから、この地獄は二度と味わうことはないだろうと高を括っていたが、まさか7年後にまた味わうとは思わなかった。当時の独身時代と違い、妻も子供もいる中で、周りに多大な迷惑をかける事となった。夏の子供との思い出が全く無い。悲しい。 現在はQoLもほとんど元の状態まで復活できた。写真を撮って症状の変化を記録したので、機会があればシェアしたい。食事療法など色々試したが、結局歩くのが一番自分に効いた。それ以来、一日一万歩

By Takuya Matsuyama