💻 ん? 何かメールが届いてる。▲ からだけど……ん!?
「ZEIT is now Vercel」「ZEIT は今 Vercel」ですって!!? 😲

ZEIT is now Vercel

▲ZEIT が ▲Vercel になったのです。 🎉
ドメイン名も zeit.co から vercel.com になってます。
あえて .com で運用できるブランド名に変えたのでしょうか?
最近 ブランド名.com を使用する傾向がまた増えてきている感じがしています。

Now はそのまま継承しています。 now.sh とか、 Now CLI とか。
もしかしたら、ZEIT という名前より、Now で覚えている人がいるかもしれません。
GitHub とかと連携できるようになったので、Now CLI を使う必要がなくなったので、
最近は Now よりも ZEIT を表にだしていた感触があります。


ちょうど良いので、他にも変わったところに触れておきます。

少し前にプランが変わりました。個人利用は基本的に無料使用となりました。
有料月 $20 を選択する場合は、チームで開発をする場合や、
サーバレス機能を複数の CDN サーバから提供したい場合などになります。
プロジェクト(ドメイン)登録数無制限・転送量無制限になりました。
Vercel・Now で全ての Web サイトを管理しても良さそうな状況ですが、
特にサーバレス機能付でデプロイする時に短時間に連続デプロイしようとすると、
数分待つように表示が出るようになっています。


自分は Hugo をよく使っていますが、
Vercel へは Hugo プロジェクトをまるごと管理できます。
Vercel は Hugo のデプロイを行って、公開してくれるのです。
だから now --prod と入力するか、GitHub などへコミットすれば良いのです。
わざわざ hugo する必要がありません。

自分が GitHub 公開しているプロジェクトだとこれが Hugo 使ってますが、
本当にコミットしているだけです。あとは Vercel がビルドしてくれます。

Hugo 以外にもいろいろ対応してあります。

Import Template | Vercel

もちろん HTML などになっている静的ファイルをそのまま公開する事もできます。

単に index.html を表示させています。中で JS・JQuery 使ってますけどね。

{
  "routes": [
    { "src": "/(.*)", "dest": "/$1" },
    { "handle": "filesystem" },
    { "src": "/.*", "status": 404, "dest": "404.html" }
  ]
}

Vercel ではエラー表示が独自のものになるのですが、
now.json をこのようにすると、Not Found を 404.html で表示できます。


過去触れていなかったのですが、サーバレス機能があるんですね。

api フォルダを作って、その中にファイルを入れるだけ。拡張子で決まります。

  • Node.js (.js・.ts)
  • Go (.go)
  • Python (.py)
  • Ruby (.rb)

https://ドメイン/api/ファイル名 で実行できます。
インターネットを長く使っている人だと、
「Apache の cgi-bin みたいな使い方」って言うとわかるかも。😆

/api 以外で参照するようにしたければ、now.json で……

{
  "routes": [
    { "src": "/(.*)",  "dest": "/api/server.js" }
  ]
}

こんな感じに実行するファイルを指定できます。

静的ファイルは全世界の CDN サーバへ浸透するのですが、
動的ファイルは無料プランの場合 1 ヶ所だけです。
Vercel は東京にサーバがあります。hnd1 が東京サーバです。
日本向けであれば now.json にこれを入れておくと良いですね。

{
  "regions": ["hnd1"]
}

Now に触れていた経験があるのであれば、
おそらくこれだけで、使える人は使えると思うのですが……


さて、先ほど公開していたサーバレス機能には
PHP がないんですね~。😭
使えないのか?……いいえ。

コミュニティで PHP を使える仕組みが公開されています。

now.json での記載が若干変化して、
api フォルダ内に .php ファイルを置いて実行する場合は……

{
  "functions": {
    "api/*.php": {
      "runtime": "[email protected]"
    }
  }
}

とします。簡単に apt/info.php で phpinfo を表示するとか。

<?php
phpinfo();

phpinfo を Vercel・Now で動作

URI 関係なくすべて /api/index.php で処理する前提であれば、
now.json をこうします。

{
  "functions": {
    "api/index.php": {
      "runtime": "[email protected]"
    }
  },
  "routes": [
    { "src": "/(.*)",  "dest": "/api/index.php" }
  ]
}

0.0.10 は更新されている可能性があるので、
GitHub リポジトリの README.md は確認しておいて下さい。

実際に使っているプロジェクト。WHOIS サーバを参照するのに PHP を使っています。
実は HTML などと PHP を別サーバにしていたのですが、
Vercel で PHP が動く事が分かって 1 プロジェクトで完結できるようにしました。
これで GitHub で公開できて、そのままビルドができます。


無料プランでのビルド制限も無制限になったので、
用途次第では Vercel・Now でまともに運用できる状況になりました。
実際、サーバレス機能が使えるようになってからは、
それを目的に使う人が多い気がするので、制限をゆるくしたのでしょう。
この仕様変更に気がついて、
自分は最近 Vercel へいくつかプロジェクトを置くようになってきています。

簡単な使い方などはこちらでまとめてあります。