nirasan's tech blog

趣味や仕事の覚え書きです。Linux, Perl, PHP, Ruby, Javascript, Android, Cocos2d-x, Unity などに興味があります。

メールアドレスとウェブサイトを Google のサービスのみを使って用意する

はじめに

  • アプリを公開するため問い合わせ用のメールアドレスとウェブサイトを用意することにした
  • メールアドレスの用意のためにメールサーバーは管理したくないので Gmail が使えて独自ドメインが使える G suites を使う
  • ウェブサイトは GAE/Go を最近使っていて慣れているので静的ページのみだが GAE を使ってみる

独自ドメインのメールアドレスをつくる

  • Gmail などが独自ドメインで利用できる G suites に契約する
  • 1 アカウントで最安プランで月 600 円、1 年まとめ払いで月 500 円
  • ドメインも一緒に購入できて “.com” で年 1000 円
    • 実際のドメイン管理者は Google ではなく eNom
    • 値段はお名前.comと同じくらいで eNom で直接買うより何故か安い
    • 購入後に eNom 側の管理画面を使って DNS のカスタム設定もできる
  • 購入後にアカウントの設定からメールのエイリアスも登録できる

独自ドメインのウェブサイトをつくる準備をする

  • 作成したメールアドレスで Google Cloud Platform に登録する
    • いまだと新規契約で 300 ドルまでの無料枠が使えた
  • GCP でウェブサイト用のプロジェクトを作成する
  • Google App Engine をつかってウェブサイトをつくる
    • 静的ページのみでも GAE を使うと独自ドメインでの公開が楽
    • 静的ページのみならインスタンスの起動時間あたりの使用料は発生しない
    • GAE の設定ファイルだけで簡単なルーティングをしてくれるので Google Cloud Storage とかに直接静的ファイルを置くよりも便利
  • Google Site Repositories でウェブサイトのソースコードを管理する
    • ウェブサイト用のプロジェクトで GSR のレポジトリをつくる

ウェブサイトを作る

設定ファイルを用意する

  • “/” で “index.html” を表示
  • それ以外は “404.html” を表示
  • それだけだとデプロイ時にエラーになるので参照されない go ファイルの実行パスを追加
runtime: go
api_version: go1

handlers:
- url: /
  static_files: index.html
  upload: index.html
- url: /.*
  static_files: 404.html
  upload: 404.html
- url: /.*
  script: _go_app

HTML ファイルの用意

  • 任意で

Go ファイルの用意

  • 参照されないが置いておかないとデプロイできないので何もしないファイルを置いておく
package main

import "net/http"

func init() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // no op
    })
}

デプロイ

gcloud app deploy app.yaml --project [PROJECT_ID] -v [VERSION]

さいごに

  • 独自ドメインとメールアドレスの方は探せばもっと安いものはありそうな気がするがとりあえず慣れているので Gmail 便利。
  • ウェブサイトの方は使わない Go ファイルを置いたりするのがいけてないが、よっぽどのことがない限り無料枠で収まってれると思うので悪くない気がする。