ドメイン移管: Google DomainsからCloudflare Registrarへ

バグと戦うエンジニア

2023年9月7日にGoogle DomainsがSquarespaceに買収されてしまった。重い腰を上げてCloudflare Registrarに移管する。

Google Domainsは安くて使いやすくて好きなサービスだったので買収されたのはとても残念だが仕方ない。

ドメインサービス選定

Google Domainsに変わるサービスとしてはAmazon Route 53やさくらインターネットなど多くのサービスがある。今回は次の4つのことを考えてCloudflare Registrarを選んだ。長期的に使えそう・人気がある(ググって記事が見つかる)・海外サービス・安い。

海外サービスを使うことを当たり前にしたいのであえて今回は海外サービスにした。日本に住んでいることなどを考慮せず対等に比較して日本のサービスが良ければ日本のサービスを使うが、日本に住んでいるという理由だけで日本のサービスを使うのは長期的によくない気がしている。

変更したいこと

  • DNS設定
  • ドメイン管理
  • メール管理

やること

whoisで現状確認

すでにRegistrarはSquarespaceになっていた。

$whois example.com
...
Registrar: Squarespace Domains II LLC
Name Server: NS-CLOUD-B4.GOOGLEDOMAINS.COM
...

Cloudflareのアカウント作成

アカウント作成ページからアカウントを作成する。メールが来るので認証する。

DNSの移行

CloudflareとGoogle Domainsの設定を行う。cloudflareは無料プランを選択した。

Cloudflareでサイトを追加してDNSレコードを追加する。DNSレコードが全て反映されない時はGoogle DomainsからBIND形式でエクスポートしてCoudflareでインポートする。

Google DomainsでCustom name serversを設定する。これらの設定に切り替えるをクリックする。

Googleの設定をしたらすぐにcloudflareからメールが届いた。whoisで確認するとName Server:がcloudflareに変わっている!

サイトとcloudflareのProxy statusで二重にsslの設定をしているとおかしくなる。cloudflareのProxy statusはオフにすれば直る。

ドメインの移管

google domainsで移管を許可する。登録の設定からドメインの登録のドメインロックをオフにする。許可ができるまで数時間待つ場合もあるみたい。今回は2時間くらい待ったら先に進めた。

Cloudflareで支払い方法を設定する。

確認コードを入力して届いたメールから承認をすると移管が完了する。メールが届くのは数分待つこともある。

whoisコマンドで確認するとRegistrarがCloudflareになっている。

$ whois example.com
Registrar: Cloudflare, Inc.

メールの転送設定

カスタムドメインのメールアドレスをgmailで受信で可能にする。

Email Routingからカスタムアドレスを追加する。googleの設定がある場合はcloudflareの管理画面から削除する。

Google Domainsからはドメインが消える。

gmailから送信ができることを確認する

Google Domainsで送信ができていればCloudflareに移管した後でもそのまま送信することができた。

終わりに

ドメインの移管は初めてて心配だったが調べながら実行していけばそこまで難しくはない。

時間がかかるかもしれない箇所もあるので半日くらいは余裕を持っていた方が良さそう。

参考サイト

Googleカレンダーの予定をGoogleフォームから入力する

バグと戦うエンジニア

イベントの予約などをGoogle Formsでお客さんにしてもらい、その結果をGoogle Calendarに自動で入力する方法。Googleカレンダーをお客さんにも見えるようにすることで埋まっている予定を伝えることもできる。

Googleカレンダーの作成

Googleカレンダーから新しいカレンダーを作成する。

一般の人もアクセスができるようにカレンダーの設定からアクセス許可を一般にする。設定のPublic URLにアクセスすれば誰でもカレンダーを見ることができる。

Googleフォームの作成

Googleフォームで新しいフォームを作成する。日付の項目は必須にしてDate型を選択する。

回答保存時にApps Scriptを使ってカレンダーに登録する

フォームの回答を保存したときにApps Scriptを発火する。Apps Scriptで回答内容を取得し、カレンダーに保存する。

回答保存しにApps Scriptを発火する

フォームの詳細からScript Editorを開く。

適当な関数を用意する。

Apps Scriptの左のメニューからTriggerを追加する。event sourceはFrom form, event typeはOn form submitにする。

定期等な回答を送信して、Apps Scriptのoverviewを見るとイベントが発火していることが確認できる。Executionsからログを確認できる。

permissionエラー

Exception: You do not have permission to call FormApp.getActiveForm. Required permissions:

のようなエラーが出ることがある。Apps Scriptの設定からShow “appsscript.json” manifest file in editorにチェックを入れる。
以下のようにoauthScopesを追記する。

{
  "timeZone": "Asia/Tokyo",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "oauthScopes": [
    "https://www.googleapis.com/auth/forms.currentonly",
    "https://www.googleapis.com/auth/forms"
  ]
}

Apps Scriptでフォームの回答を受け取る

トリガーする関数でeventを受け取る。以下サンプルコード。

function receiveResponse(e) {
  const itemResponses = e.response.getItemResponses();
  for (const itemResponse of itemResponses) {
    // Logs the items' questions and responses to the console.
    console.log(`Response to the question '${itemResponse.getItem().getTitle()}' was
      '${itemResponse.getResponse()}'`);
  }
}

カレンダーに登録する

eventから必要な情報を抜き出してカレンダーに予定を登録する。以下サンプルコード。

function registCalenderEvent() {
  const calendarId = '****@group.calendar.google.com';
  const myCalendar = CalendarApp.getCalendarById(calendarId);
  let date = new Date();
  const options = {location: '東京', description: '詳細情報'}
  myCalendar.createAllDayEvent('新規イベント', date, options);
}

終わりに

やり方がわかれば2,3時間でサクッと実装できる。他にもいろいろできることがありそう!

参考サイト

ドメイン管理サービス まとめ

バグと戦うエンジニア

インターネットに詳しい人なら一人一つは持ちたいドメイン。ドメインを管理するサービスを実際に使ってみた感想も踏まえて比較する。

ドメインとは

ドメインはインターネットの住所と言われることが多いです。個人でドメインを取得することでインターネット上に個人の住所を持つことができます。例えばGoogleのドメインはgoogle.co.jpやgmail.comなどがあります。会社は会社ごとに一つ以上のドメインを取得することが多いです。Googleなどの大きな会社だとサービスごとにドメインを取得することが一般的です。

ドメインを取得してできること

ドメインを取得するとホームページ・ブログ・Webサイトなど公開することができます。Amebaブログなどのブログサービスを使えばドメインを取得せずにブログを書くこともできます。この場合はAmebaの住所にあるブログを賃貸しているイメージです。ドメインを取得することはその住所を所有することになります。

ドメインを取得すると個人のメールアドレスを作ることができます。キャリアのメールアドレスを使用するとドメインは固定されており、多くの人が同じサービスを使っているためメールアドレスもすでに使われている可能性が高く自由なメールアドレスを取得することは困難です。ドメインを個人で取得すると自分だけしか利用者がいないため他のユーザーを意識せず自由にメールアドレスを作成することができます。

ドメイン管理サービス

ドメイン管理システムはたくさんあるので海外で有名なサービスと国内で有名なサービスに分けてまとめます。ブログなどを書くために必要なレンタルサーバーとドメイン管理サービスが一体となっていることも多いですが、今回はドメイン管理サービス単体で比較します。

海外ドメイン管理サービス

海外のサービスを使うことに抵抗がなければ価格が安く機能も充実しているためおすすめです。日本語のドキュメントが不足している可能性もありますが、翻訳は簡単にできるのでそこまで困ることはないと思います。海外のサービスは全世界に向けて展開している場合が多いので日本だけのサービスより価格も品質も良いことが多いです。

国内ドメイン管理サービス

参考サイト