Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • Developer Tools
    • コマンドライン
    • Heroku VS Code Extension
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Working with Node.js
      • Node.js Behavior in Heroku
      • Troubleshooting Node.js Apps
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Python でのバックグランドジョブ
      • Python Behavior in Heroku
      • Django の使用
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Maven の使用
      • Spring Boot の使用
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Migrating to Heroku Postgres
    • Heroku Data For Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Working with AI
    • Heroku Inference
      • Inference API
      • Quick Start Guides
      • AI Models
      • Inference Essentials
    • Vector Database
    • Model Context Protocol
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • Heroku のアーキテクチャ
  • ネットワーキングと DNS
  • アプリのカスタムドメイン名

アプリのカスタムドメイン名

日本語 — Switch to English

この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。

最終更新日 2024年04月30日(火)

Table of Contents

  • 手順の概要
  • サブドメインを使用してカスタムドメインを追加する
  • カスタムルートドメインを追加する
  • ワイルドカードドメインを追加する
  • カスタムドメインを削除する
  • 既存のドメインを表示する
  • ドメインの追加に関するルール
  • ドメイン名用語集

デフォルトでは、Heroku アプリは、アプリの Heroku ドメイン (APPNAME-IDENTIFIER.herokuapp.com​ という形式) で利用できます。たとえば、example-app​ という名前のアプリは、example-app-1234567890ab.herokuapp.com​ でホストされています。アプリはサブドメインで利用できますが、本番環境のアプリにはカスタムドメインを追加することを強くお勧めします。

Heroku ではサブドメインへの識別子の追加を 2023 年 6 月 14 日に開始しました。この日より前に作成されたアプリケーションは、サブドメインがアプリ名と同じである古いサブドメインスキームに従います。

Heroku DNS は、DNSSEC を使用して、すべての herokuapp.com​ および herokudns.com​ ドメインへのリクエストを認証します。DNSSEC は、DNS サーバーで受信する情報が信頼できるものであることを確認できるようにするセキュリティシステムです。

Heroku 以外のドメイン (たとえば、www.yourcustomdomain.com​ など) でアプリを利用できるようにするには、アプリにカスタムドメイン​を追加します。

すべての Heroku アプリにカスタムドメインを追加できます。ドメインを追加しても、追加料金は発生しません。セキュリティ上の理由から、アプリにドメインを追加するには、Heroku アカウントを確認する​必要があります。

Heroku では、ドメイン登録サービス (カスタムドメイン名の登録を行う) や DNS プロバイダーサービス (カスタムドメイン名をアプリに対応付ける DNS サーバーをホストする) は提供していません。

手順の概要

以降、この記事では、次の手順について詳細に説明します。

  1. カスタムドメイン名を所有していることを確認します。カスタムドメイン名は、ドメイン登録サービスで購入できます。
  2. heroku domains:add​ コマンドでカスタムドメインをアプリに追加します。
  3. heroku domains​ コマンドを使用して、Heroku から提供される DNS ターゲットを調べます。
  4. アプリの DNS プロバイダーを設定して、Heroku から提供される DNS ターゲットに対応付けます。
  5. カスタムドメインでアプリにアクセスできることを確認します。DNS の変更が伝播するまで、時間がかかる場合があります。

サブドメインを使用してカスタムドメインを追加する

サブドメインを使用してカスタムドメインを追加するには、domains:add​ Heroku CLI コマンドを使用します。

$ heroku domains:add www.example.com -a example-app
Adding www.example.com to ⬢ example-app... done
 ▸    Configure your app's DNS provider to point to the DNS Target
 ▸    whispering-willow-5678.herokudns.com.
 ▸    For help, see https://devcenter.heroku.com/articles/custom-domains

The domain www.example.com has been enqueued for addition
 ▸    Run heroku domains:wait 'www.example.com' to wait for completion

アクセント文字などの非 ASCII 文字が含まれるドメイン名は、Punycode​ を使用して追加する必要があります。たとえば、éste.com​ というドメインは、先に xn--ste-9la.com​ に変換​する必要があります。

 

example.com is currently in use by another app​ というエラーメッセージが表示される場合は、「ドメインの追加に関するルール​」セクションを参照してください。

DNS にサブドメインを設定する

heroku domains:add​ コマンドでドメインを追加したら、DNS プロバイダーに、Heroku から提供される DNS ターゲットを対応付ける必要があります。この DNS ターゲットは、heroku domains​ コマンドで表示できます (詳細は、「既存のドメインを表示する​」を参照)。

通常は、DNS プロバイダーで新しい CNAME​ レコードを設定して、DNS プロバイダー に Heroku を対応付けます。次の表に、一般的な CNAME​ レコードのパターンを示します。

​レコード ​名前 ​ターゲット
​CNAME ​www ​ whispering-willow-5678.herokudns.com.​
​CNAME ​othersubdomain ​autumn-sunset-1495.herokudns.com.​
​CNAME ​examplesecure ​example-12345.ssl.herokudns.com.​

ターゲットドメインの末尾に .​ が必要かどうかは、ご使用の DNS プロバイダーによって異なります。

CNAME​ レコードの作成に関する具体的な手順については、ご使用の DNS プロバイダーのドキュメントを参照してください。

DNS の変更が伝播しているという前提で、DNS が正しく設定されているかどうかを host​ コマンドで確認できます。

$ host www.example.com
www.example.com is an alias for whispering-willow-5678.herokudns.com.
...

DNS の変更は、有効になるまでに数分~数日かかる可能性があります。事前に DNS の TTL を短くしておくと、この伝播時間を最小限に抑えることができます (なくすことはできません)。

 

カスタムドメインを設定しても、アプリの Heroku ドメインは常にアクティブなまま維持されます。ユーザーがカスタムドメインのみ使用するようにする場合は、アプリから HTTP ステータスコード 301 Moved Permanently​ を送信して、Web ブラウザにカスタムドメインの使用を指示する必要があります。HTTP リクエストの Host​ ヘッダーフィールドに、ユーザーがアクセスしようとしているドメインが表示されます。そのフィールドが example.herokuapp.com​ の場合は、リダイレクトが送信されます。

 

DNS レコードと Heroku リソースの同期を保つよう注意してください。Heroku アプリを削除したが、対応する DNS レコードの削除も更新も行わない場合、サブドメインの乗っ取り​攻撃に対して脆弱になります。

カスタムルートドメインを追加する

サブドメインに加え、ルートドメインを追加する必要があります。ルートドメインの追加手順は、同じように Heroku CLI で行います。

$ heroku domains:add example.com -a example-app
Adding example.com to ⬢ example-app... done
 ▸    Configure your app's DNS provider to point to the DNS Target
 ▸    whispering-willow-5678.herokudns.com.
 ▸    For help, see https://devcenter.heroku.com/articles/custom-domains

The domain example.com has been enqueued for addition
 ▸    Run heroku domains:wait 'example.com' to wait for completion

DNS にルートドメインを設定する

DNS プロバイダーへのルートドメインの設定​は、DNS プロバイダーへのサブドメインの設定と同様です。ただし、サブドメインの場合は設定するレコードのタイプが常に CNAME であるのに対し、ルートドメインの場合、レコードのタイプは DNS プロバイダーによって異なります。

  • DNSimple では ALIAS
  • DNS Made Easy では ANAME
  • easyDNS では ANAME
  • PointDNS では ALIAS
  • CloudFlare では CNAME​。また、「Configure Cloudflare and Heroku over HTTPS​」 (HTTPS 経由で Cloudflare と Heroku を構成する) ドキュメントも参照してください。
  • Namecheap の ALIAS
  • DreamHost では ALIAS

一部の DNS プロバイダーでは、ルートドメインには A レコード​ しか使用できません。A レコードには静的 IP が必要なため、残念ながら、A レコードでは Heroku にルートドメインを対応付けることができません。A レコードには、オンプレミスのデータセンター、クラウドインフラストラクチャサービス、Heroku のようなプラットフォームなどの環境で使用する場合に、重大な可用性の問題があります。Heroku では動的 IP アドレスを使用しているため、ルートドメインを別のドメインに対応付けられるように、CNAME のようなレコード (ALIAS レコードや ANAME レコードとも呼ばれる) を使用する必要があります。下記の例を参照してください。

どのプロバイダーを使用している場合でも、CNAME レコードと同じように、ルートドメインの ALIAS/ANAME/CNAME エントリを DNS ターゲットに対応付けます。

DNS プロバイダーによっては、「名前」の値が空または @​ の場合は、ルートドメインを示します。

​レコード ​名前 ​ターゲット
​ALIAS​ または ​ANAME ​<empty> または ​@ ​hidden-sierra-7936.herokudns.com.​

ワイルドカードドメインを追加する

ワイルドカードドメインを使用すると、1 件のレコードで、あらゆるサブドメインをアプリにマッピングすることができます。ワイルドカードドメインは、一般的に、ユーザーやアカウントごとにパーソナライズされたサブドメインを使用するアプリケーションで使用します。すでに同じトップレベルドメイン (TLD) を使用している既存アプリをすべて所有している場合は、ワイルドカードドメインを追加できます。たとえば、あるアプリがすでに www.example.com​ を使用している場合、*.example.com​ を追加するには、そのアプリを所有している必要があります。

ワイルドカードドメインは、*​ というワイルドカードサブドメインの表記を使用する点以外は、ほかのドメインの場合と同じようにアプリに追加します。

$ heroku domains:add *.example.com -a example-app
Adding *.example.com to ⬢ example-app... done
 ▸    Configure your app's DNS provider to point to the DNS Target
 ▸   encircled-magnolia-9265.herokudns.com.
 ▸    For help, see https://devcenter.heroku.com/articles/custom-domains

The domain *.example.com has been enqueued for addition
 ▸    Run heroku domains:wait '*.example.com' to wait for completion

アプリのいずれかにワイルドカードドメインが使用されていても、同じトップレベルドメイン (TLD) の特定のサブドメインをほかのアプリに追加できます。リクエストのルーティング時に、特定のサブドメインは、ワイルドカードドメインの前に評価されます。

ワイルドカードドメインを使用する場合は、ご使用の DNS プロバイダーの設定で Heroku に同意していることを確認することが重要です。特に、example.herokuapp.com​ に対応付けるために *.example.com​ を DNS に設定した場合は、必ず heroku domains:add *.example.com​ も実行してください。このコマンドを実行しないと、悪意のある人が自分の Heroku アプリに baddomain.example.com​ を追加して、あなたのアプリケーション宛てのトラフィックを受信してしまう可能性があります。

DNS にワイルドカードドメインを設定する

DNS プロバイダーで encircled-magnolia-9265.herokudns.com.​ に CNAME レコードを追加するには、*​ というワイルドカードサブドメイン表記を使用します。

​レコード ​名前 ​ターゲット
​CNAME ​* ​encircled-magnolia-9265.herokudns.com.​

カスタムドメインを削除する

domains:remove​ でドメインを削除します。

$ heroku domains:remove www.example.com -a example-app
Removing www.example.com from ⬢ example-app... done

アプリを破棄すると、そのアプリに割り当てられているカスタムドメインは解放されます。その後、解放されたカスタムドメインをほかのアプリに割り当てることができます。

既存のドメインを表示する

アプリの現在の Heroku ドメイン、カスタムドメイン、DNS ターゲットを表示するには、heroku domains​ コマンドを使用します。

$ heroku domains -a example-app
=== example Heroku Domain
example.herokuapp.com

=== example Custom Domains
Domain Name      DNS Target
---------------  --------------------------
example.com      hidden-sierra-7936.herokudns.com
www.example.com  whispering-willow-5678.herokudns.com

Common Runtime

古いアプリケーションでは、DNS ターゲットの形式が [name of app].herokuapp.com​ の場合があります。SSL を使用していない場合は、Dashboard や CLI の出力に表示される DNS ターゲットに関係なく、[name of app].herokuapp.com​ と <haiku>.herokudns.com​ のどちらの形式でも DNS ターゲットとして機能します。

独自の証明書をアップロード​したり、Automated Certificate Management​ を使用したりするときには <haiku>.herokudns.com​ の形式を使用する必要があるため、<haiku>.herokudns.com​ を使用することをお勧めします。

 

Private Space

Private Space​ アプリの DNS ターゲットの形式は、<haiku>.<haiku>.herokuspace.com​ です。

ドメインの追加に関するルール

すべての Heroku ユーザーが自分のアプリにドメインを追加できます。Heroku では、明示的にドメインの所有権を確認する代わりに、ドメインの権利が複数のユーザーまたはアプリによって主張されないように、次のルールを施行しています。

  • 1 つのアプリには、最大 1,000 件のカスタムドメインを割り当てることができます。
  • 特定のドメインは、1 つの Heroku アプリにのみ追加できます。たとえば、www.example.com​ をアプリ example-1​ に追加した場合、そのドメインをアプリ example-2​ にも追加することはできません。
  • 対応するサブドメインをすでに使用している既存アプリを すべて​所有している場合は、ワイルドカードドメインを追加できます。たとえば、あるアプリがすでに www.example.com​ を使用している場合、*.example.com​ を追加するには、そのアプリを所有している必要があります。
  • 該当するワイルドカードドメインが割り当てられたアプリを所有している場合は、サブドメインまたは Apex ドメインを追加できます。たとえば、www.example.com​ または example.com​ を追加するには、*.example.com​ を使用するアプリを所有している必要があります (そのようなカスタムドメインが存在する場合)。
  • 当該ドメインのワイルドカード SSL 証明書を使用しているすべて​のアプリケーションが同じアカウントに所有されている場合は、サブドメインを追加できます。たとえば、*.example.com​ のワイルドカード SSL 証明書がアップロードされているアプリが別のアカウントにある場合は、something.example.com​ を自分のアカウントのアプリに追加できません。
  • wildcard​ は、Heroku のサブドメインのための予約キーワードです。たとえば、wildcard.example.com​ を使用するとエラーになります。

自分が所有しているドメインを追加できない場合は、サポートチケットを登録​してください。

ドメイン名用語集

  • ドメイン​ または ドメイン名​: アプリにアクセスするための完全な名前 (つまり、IP アドレスを使用せずにアクセス)。たとえば、www.yourcustomdomain.com
  • サブドメイン​: ​www.yourcustomdomain.com​ の www
  • ルートドメイン​ (ネイキッドドメイン、ベアドメイン、ゾーン Apex ドメインともいう): 「www.yourcustomdomain.com」の「yourcustomdomain.com」
  • ワイルドカードドメイン​: すべてのサブドメインに一致するドメインで、*.yourcustomdomain.com​ のように表記される
  • ドメイン登録サービス​: カスタムドメイン名の購入や登録ができる企業
  • DNS プロバイダー​: カスタムドメイン名を送信先 (「DNS ターゲット」) に変換する DNS サーバーを管理している企業。フィールドは、CNAME、ALIAS、ANAME、Aレコードとも呼ばれます。最初の 3 つのみ、Heroku アプリで動作します (A レコードには IP アドレスが必要で、Heroku アプリには固定の受信 IP アドレスがないため)。
  • Heroku ドメイン​: 各アプリに付与されるデフォルトドメインを示す Heroku 用語。APPNAME-IDENTIFIER.herokuapp.com​という形式を使用します。
  • DNS ターゲット​: カスタムドメイン名の送信先を DNS プロバイダーに指定するための Heroku ドメインを示す Heroku 用語。

関連カテゴリー

  • ネットワーキングと DNS

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices