Nowはzeitの提供するPaaSでサーバのことを何も考えずWebアプリを作成できます。
npm i -g now
でCLIコマンドをインストールできますが、nowコマンド一つでアップロード&公開することが出来るのは便利な反面、ちょっと怖い。
別ディレクトリを開いてるときにコマンド履歴から誤操作とか普通にしそう。
GitHub連携でPushされるたびに更新ができるので、CLIインストールせずに利用してみたいと思います。
GitHub連携
zeit.co/signupからGitHubアカウントでログインできます。
サインアップ自体はメールアドレスだけでも可能で、とりあえずは住所やクレカなんかの登録はいらないです。
この辺からはGitHubのページと行き来します。
連携を認証したらリポジトリの選択へ。
すべて認証することはないと思うのでSelect Repositoriesで対象のリポジトリを選択します(複数選択可)。
また、プライベートリポジトリも対象にできます。
この辺の設定はGitHubのSettings > Applicationsからinstalled GitHub Appsタブで後からでも参照、変更できます。
プログラムの作成
Golangでプログラムを書いていきます。
go modulesを使うようなのでgo mod init xxx
でgo.modを作成しておく。
index.goという名前のファイルを作成します。
1 2 3 4 5 6 7 8 9 10 |
package handler import ( "fmt" "net/http" ) func Handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "<h1>index.go Only!</h1>") } |
対象のリポジトリにプッシュします。
Zeitのほうでダッシュボートを見るとビルドされて公開URLができています。
するとファイル内容が表示されました(ブラウザによってDLが始まる)。
htmlのような静的ファイルとして認識されたようです。
now.jsonという名前で設定ファイルを作ります。
1 2 3 4 5 |
{ "name": "narumium-now-test-n", "alias": "narumium-now-test-a", "builds": [{ "src": "index.go", "use": "@now/go" }] } |
これをプッシュしてちょっと待つとちゃんとページが表示されました。
ソースを送るだけでビルドして公開してくれます。
このページは様々なURLでアクセスできます。
- [リポジトリ名]-[ハッシュ].now.sh
- [リポジトリ名]-git-[ブランチ名].[ユーザ名].now.sh
- [alias].now.sh
- [リポジトリ名].[ユーザ名].now.sh
設定でルーティングもしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
//sub.go追加 package handler import ( "fmt" "net/http" ) func Handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "<h1>sub.go</h1>") } //now.json変更 { "name": "narumium-now-test-n", "alias": "narumium-now-test-a", "builds": [ { "src": "*.go", "use": "@now/go" } ], "routes": [ { "src": "/", "dest": "index.go" }, { "src": "/sub", "dest": "sub.go" } ] } |
now.jsonをいじることでキャッシュを設定したりドメイン設定やSSL化もできるみたいなので、無料のままでも負荷の小さなサイトならそのまま運用できそうです。
ただ、どこまで無料で使えるのかはプランを見てもいまいちわからないので実際に試してみる必要はありそう。
所感
とりあえずサーバー設定を全くせず遊べるのはとても良いです。
ホスティングが一瞬で用意できるし、AWSのLambda+API Gatewayのようなことをワンプッシュでできる。herokuのようにスリープ状態にもならないから完全なストレスレスになります。
GCPのGAEやFunctionsと比べるとどうなんだろう。
1つ不満があるのは名前です。調べにくい。
「go now」とかググっても情報が出てこないので「golang zeit now」のように色々単語を組み合わせつつ調べなくてはいけないのがちょっとだるい。
公式ドキュメントをちゃんと隅々まで読めば調べることも少なくて済むかもしれないです。