はじめに
だいぶお久しぶりです…筆者です。
前回の投稿からまただいぶ期間が離れましたね…。
C97の準備したり、ふつーに仕事が忙しかったりでなかなかブログ書けない日々が続いてました。
さて、今回はOpenPaaS系サービスとして名高い『Heroku』を少しかじってきたので、色々まとめておこうかと。
jp.heroku.com
ちなみに筆者のHeroku知識はほぼ0でした…が、公式のドキュメントが非常に整っていてあまり困ることはありませんでした。
((まーほとんど英語のドキュメントですが
それでは行きましょ|д゚)
Heroku概要
早速チュートリアルを始める…前に、Herokuとはなんぞやの概要から。
Heroku はアプリの構築、提供、監視、スケールに役立つクラウドプラットフォームで、アイデアを出してから運用を開始するまでのプロセスを迅速に進めることが可能です。
また、インフラストラクチャの管理の問題からも解放されます。
※Heroku公式より
簡単にまとめると、「自分の作ったアプリケーションをクラウド上に公開できるプラットフォーム」と言ったところでしょうか。
レンタルサーバーに「アプリケーションが動くプラットフォーム機能」がくっついたものと考えてもいいかもしれません。
また、Herokuは現在、Official Supportとして下記の8言語の「Build Pack」というモジュールを公開しています。
なお、Build Packとは…簡単に言うと「Heroku上でアプリケーションを構築するパッケージ」のこと。
正確には「デプロイされたコードをdynoで実行可能な形に構築する」ということらしいです…。
dynoについては別記事のHeroku関係余談記事に載っける(つもり)のでそちらを参照に。
また、上記に挙げた以外にもサードパーティ製のbuildPackを使えば、Linux環境下で動く言語ならなんでも使用できるとのこと。
ちなみに上記のように「クラウド、言語、データベースが自由に選べるPaaSサービス」を OpenPaaS というそうです。
Heroku以外だと、RedHat社が提供するOpenShiftとかが有名どころですかね。
※参考記事: クラウドの開発環境と実行環境をオープンにするOpen PaaSの登場 - Publickey
AzureやAWSと異なり、上記のように「自分の好きな言語やフレームワーク、DBを選べる」ってのがOpenPaaSのメリットだそうな…。
なお、Heroku自体は2007年に創業された企業ですが…2010年にはsalceforceに買収されてるみたいです。
概要はこんなところで…早速チュートリアルに沿って、アプリケーションを作ってみましょう!
チュートリアルをやってみる(Node.js)
今回はNode,jsでチュートリアルをやってみることに。
なんだかんだで一番親しみある&使い慣れてる言語がJavaScriptなもので…。
Heroku公式さんが提供されてるこちらの記事を参考にやってみました。
devcenter.heroku.com
英語記事ですが「非常に簡素な英語ですし」「やってることもそんなに難しくない(ターミナルからコマンドを叩いていくだけ)」 なので、ぶっちゃけそんなに難しくなかったです。
具体的にやった事を書くと:
- HerokuアカウントとNode.js、npmをインストール
- Heroku CLIをインストール※要Gitインストール
- Heroku公式が提供するNode.js用チュートリアルリポジトリをclone
- インスタンス?作成〜アプリケーションデプロイ
heroku create
でHerokuインスタンス?作成git push heroku master
でデプロイheroku ps:scale web=1
でWebサーバーに使うリソース量を設定heroku open
でアプリケーションオープンheroku logs --tail
でオープン中のアプリケーションのログも観れる
heroku local web
でローカル環境下でアプリケーションを実行(http://localhost:5000
で見れる)heroku open [指定したページアクション]
で指定したページアクションが開くheroku run bash
でdynoがどのように動いてるかがわかる(個別の1度限りのdynoを作成し、その中でbashシェルを開くコマンドを実行)heroku config:set TIMES=2
で設定値を自由に指定可能heroku config
で現在設定している設定値を見ることができる- 設定値の編集は
.env
ファイルにて可能
npm install pg
やコードを書き換え、PostgresのDBをアタッチ※要Postgresのインストール
他にも:
heroku ps
: アプリを動かすためのdynoがどの位動いているのか確認可能Procfile
: アプリを起動するために実行するコマンドを明示的に宣言できるファイル、ルートディレクトリに配置(詳しくはここ)- Node.jsでHerokuアプリケーションを稼働させると「Heroku側は
package.json
を参照してアプリケーションを構築する」- アプリがデプロイされると「Herokuはこのファイルを読み取り、npm installコマンドを使用して、依存関係とともに適切なノードバージョンをインストール」する
…ということもわかりました。
やってみてわかったのは、「実際に触ってみないと分からない」こと。
そういう意味では、ここまで分かりやすいチュートリアルが公式から提供されているのはいいことですなぁ。
余談: 無料のWeb dynoについて
ちなみに、Heroku無料プランだと「無料のWeb dyno」が付与されるみたいですが…。
「heroku open
でアプリを稼働しっぱなしだと無料枠が食いつぶされる」…なんてこともなく。
dynoが30分間Webトラフィックを受信しない場合、自動スリープしてくれるみたいです。
※参考記事: Free Dyno Hours | Heroku Dev Center
試しに、heroku open
で稼働しっぱなしだったアプリケーションに対しheroku ps
をかけてみると…:
$ heroku ps Free dyno hours quota remaining this month: 550h 0m (100%) Free dyno usage for this app: 0h 0m (0%) For more information on dyno sleeping and how to upgrade, see: https://devcenter.heroku.com/articles/dyno-sleeping === web (Free): node index.js (1) web.1: idle 2020/01/24 21:25:51 +0900
…と、dynoサーバーが「idle」状態になってるのがわかります。
いちいち稼働状態かどうかを気にしたりしなくていいのはすごく楽ですね( ˘ω˘ *)
最後に
今回はこんなところで終わっておこうかと。
これからは…:
- チュートリアルに沿ってHerokuの基礎固め
- Herokuがどのように動いているのかを公式ドキュメントより知る
…とかとかを行い、Herokuのことを知ったり…。
せっかくNode.jsでのWebアプリケーション構築のこともかじれたので:
- Express × Postgresを使ってローカル環境下でWebページを構築してみる
- 作成したアプリをHerokuにデプロイ
…とかとかもやっていこうかと!
あと、それとは別に余談記事も…。
((dynoや本チュートリアルで使用したnpmパッケージについてまとめていく予定です
それでは|д゚)