はじめに
・ささっとモックアップを作りたい
・ちょっとした検証用のサイトを作りたい
・簡単にプッシュ通知できるアプリを構築したい
そんなことございませんか?
そのような場合以下のような選択肢があると思います。
・社内にある環境を利用する
→外部に公開するにはなかなか抵抗がありますね。
・AWSなどでEC2を利用したりLambda/S3のサーバーレス環境を構築
→クレジットカードの登録やら、組織に属している場合はその許可をもらったり。。。
もっと簡単にデプロイしてすぐにチェックできるやりかたはないものか。
そんなとき私は以下の3つを使いまわしております。
・now
・heroku
・firebase functions/hosting
主観で比較記事を作成しますが、他にもあったらコメントお待ちしてます。
まだ完璧にフィットしたサービスを見つけていませんので。
(無料でつかっているのに何文句言っているんだって感じですね・・・)
ちなみに普段はMacを使用しています。
サービスの比較
先人の知恵を拝借してサービスの説明をしたいと思います。
nowとは
https://qiita.com/nkzawa/items/8bf62549f79ebbcaafd8
https://qiita.com/high-u/items/2dcef131002db3036291
herokuとは
https://qiita.com/Arashi/items/b2f2e01259238235e187
https://qiita.com/daisukeoda/items/42e802c498ca8a78b8f2
firebaseとは
firebaseはmBaasと呼ばれてますが、
functionsとかhostingとかもはやなんでもありです。
https://qiita.com/kohashi/items/43ea22f61ade45972881
https://qiita.com/gupuru/items/25a6722f6f802d3a5250
どんな時に使い分けたらいいの?
iOS/Androidアプリと連携したものを作りたい
Firebase一択です。
Firebase functionsとCloudMessagingなどを活用することで、
プッシュ通知をとても簡単に実装することができます。
それだけでなく、特定のグループやトピックなどへの通知の出しわけも可能です。
RealTimeDatabaseという機能も使えたり、これ本当に無料か!?というレベルですね。
ただし無料で利用するに当たって大きく1つ問題点があります。
Google以外のAPIやURLへリクエストを送ることはできません。
例えばこんなケースです。
・Line bot/notifyのサンプルをサクッとつくりたい
・IFTTTのMakerへリクエストしたい
・AWSのApiGatewayやLambdaへデータを送りたい
そんなことは(無料環境では)不向きです。
ちょっと他の2つのサービスと違って土俵が違う感じはありますが、
似たようなことを実現できます。
機械学習系のデモサイト構築
これはherokuを選択しています。
nowでもDockerFileを利用することでPython環境などを構築できるらしいのですが、
面倒なので試してません。
herokuの場合はstaticフォルダ配下に学習済みモデルファイルを配置して、
予測などに使っています。
とはいえ無料環境だとメモリが足らずにエラーが起きることが多いです。
1から学習させたMNIST的な文字予測モデルを構築した時はエラーもほぼおきなかったのですが、
Kerasでファインチューニングしたモデルを組み込んでみたのですが、5割くらいはエラーがでていました。
とにかく素早くwebアプリを公開したい
nowです。名前の通り「今すぐ!公開したい!」そんな時はnowを選択します。
無料アカウントでデプロイできる数がherokuは5個に対してnowは原則無いです。
上のサービス紹介のページのURLでは20という情報もあるようですが、今のところ困ってはいないですね。
1つのプロジェクト単位で複数デプロイができます(履歴のように残っている感じです)がそれは3個までとなってますので、
ちまちま不要となったら消したりしています。
そんな状況を踏まえても便利ですね。
なおherokuとnowの無料プランでは一定時間アクセスがないとアイドル状態になります。
これは例えばモックといえども自分の手の届かない人たちがチェックする時につらみがありますので、ご注意ください。
個人的なまとめ
・アプリのデモ作りたい → Firebase
・アイドル時間は無しがいい! → Firebase
・認証/解析とかも簡単にやりたい → Firebase
・機械学習系サクッとデモ → heroku
・Paasになれてない。検索して情報が多いのがいい! → heroku
・すぐデプロイ/すぐチェックしたい → now
・5個だとちょっと少ないな → now
・AWSとかと連携を! → heroku/now
結果としてどれも好きです!いつもありがとうございます!