Node.js アプリを無料でデプロイ出来る Glitch を試してみた
Node.js アプリをデプロイ出来るサービスといえば、Heroku だったり、Azure App Service なんかの PaaS が有名であろう。しかし、Azure は有料だし、Heroku の無料枠は起動時間に制限があったりして少々使いづらい。
GitHub Pages は静的ページのみでサーバサイドを持てないし、Netlify も静的ページのみ。一応 Lambda ベースの FaaS は持てるが、常時起動のサーバとしては使えないし、Lambda 的な書き方で実装しないといけない。
無料の IaaS (VPS) もなくはないが、そこに Node.js サーバを立てて HTTPS 化したりするのはしんどい。もっと楽に、サクッと Node.js サーバを公開したいんじゃ。
そこで見つけたのが Glitch というサービス。「Joel On Software」で知られる Joel Spolsky 氏が立ち上げた Fog Creek が前身の会社・ウェブサービスだ。Trello なんかも作っているところだ。
目次
- Glitch に登録する
- Glitch でアプリを作る
- 自分が作ってみたアプリ
- Node.js サーバを公開するための注意
- GitHub からソースコードをインポートする
- 無料でどこまで出来るか
- 以上
Glitch に登録する
Glitch への登録は GitHub アカウント連携だけで良い。他のアカウントでの連携も対応しているし、メールアドレスで登録したりもできるが、後述の GitHub 連携も考えると、GitHub アカウントでサインインするのが良さそう。
登録後に有料版への申込みもできるが、設定しなければずっと無料で、クレジットカードも要らず使い続けられる。
Glitch でアプリを作る
Glitch はブラウザ上に独自の IDE が開き、そこに自由にファイルを追加してウェブアプリを公開できる。
雛形プロジェクトも揃っているので、とりあえず Express ベースの Node.js サーバプロジェクトを立ち上げてみて、様子を確かめてみると良いかと。
ファイルは書いている最中から自動的に保存されていくのが嬉しい。
なんとターミナルも扱えるので、軽く npm
コマンドを叩くとか、git
同期してファイルを取り込んでみたりしても良いだろう。
プロジェクト名は最初はランダムで決まるが、任意に変更可能。HTTPS で https://【アプリ名】.glitch.me/
という URL が発行される。
自分が作ってみたアプリ
自分が Glitch を使って公開してみたアプリがあるので紹介する。
コレは WebRTC でビデオチャットが行えるアプリで、シグナリングサーバを動かしたかったために、Express サーバがホスティングできる場所を探していて、Glitch に辿り着いたというワケ。ちなみにソースコードは以下。
Node.js サーバを公開するための注意
package.json
を書いていくと自動的に npm install
が行われる。npm-scripts
で start
スクリプトだけ定義しておこう。
完全に静的なコンテンツを配信する際も、package.json
の start
スクリプトだけは必要になるので、serve
あたりを使って静的コンテンツを配信できるようにしておこう。
それから、Heroku 同様に engines
プロパティを使って Node.js のバージョンを指定できる。
Express でサーバを公開する時は、process.env.PORT
でポート番号を注入するようにしておけば、.env
ファイルがなくともうまいこと処理してくれる。
GitHub からソースコードをインポートする
プロジェクトを新規作成する際、およびプロジェクト編集画面で、「Import from GitHub」を選ぶと、GitHub リポジトリの資材をプロジェクトに持ち込める。
ファイル群は常に同期されるワケではないので、Glitch 上で編集していくと GitHub 上と差異が出ていくことになる。
ターミナルを使って git
コマンドを叩いて同期しても良いし、GitHub 側の変更を Glitch に投げられる sync-glitch-cli
などもあったりするので、上手く組み合わせてみよう。
無料でどこまで出来るか
先程有料版もあると書いたとおり、無料で出来る範囲には制限がある。
一番大きいのは、アクセスがないとインスタンスが停止してしまい、再アクセス時に少し待たされるところ。Heroku と同様の作りだが、Heroku よりも断然起動時間が速いので、Glitch に軍配。
また、メモリや CPU リソース、1時間あたりのアクセス数なんかにも制限があるので、より高負荷なサーバを常時絶えず動かしたい場合は、有料版にするか、他のサービスを使う必要があるだろう。
とはいえ、無料版で困ることもなく、プロジェクトもホイホイ新規作成できるので、全然なんとかなりそうだ。
以上
無料にしてはかなり高速で、サクサク使えるので、Glitch とてもオススメ。