こんにちは。エンジニアのmickey-STRANGEです。 前回は めんどくさがりによるめんどくさがりのためのスマホアプリ開発についてお話したいと思います。
なんて言いながら、全てをJSでごりっと無理やり解決する方法をご紹介しました。
はい、タイトル詐欺です、すみません。冷静に考えて、この作りのWebページが世の中にない現状、これよりも簡単な方法が必ずあるはずなんですよね (当時サンプル書きながらコレめんどくさいな、なんて思ってないです) 。
今回はタイトル詐欺ではなく、Herokuというサービスを用いてWeb アプリ開発 の環境構築が本当に簡単に出来てしまう方法をご紹介いたします。
Heroku(へろく)とは Herokuとは、PaaS(Platform as a Service)の1種で、アプリケーションの底にあるプラットフォームそのものを、Webを通じて提供してくれるサービスです。 今回の記事では、Heroku上で php +postgresをプラットフォームとするWebアプリの構築、が目的となります。
Herokuで環境構築 Herokuを用いて、ということなのでHerokuのアカウント登録は完了している前提で説明を始めます。使用するのは以下の2サービスですので、アカウント登録まだだよ、という方はご準備ください。
・ GitHub
php +postgresアプリの作成
まず最初に、Heroku上にアプリケーションを作成します。ログインして右上 New
から Create New App
、もしくはアプリケーションが1つもない場合は画面真ん中にある Create New App
をクリックします。
アプリ名を入力し、 Create app
をクリックします。これでアプリケーションが作成できました。 といっても、名前と枠組みだけの状態なので、これから php +postgresで動くアプリケーションだという設定をします。
アプリケーションのページから Settings
→ Add buildpack
の順にクリックします。
立ち上がったポップアップの中で php
を選び、 Save changes
をクリックします。
これで作成したアプリケーションは php で動きますよ、という設定が出来ました。
続いてpostgresを設定します。 Resources
→ Find more add-ons
から Heroku Postgres
を探してクリックし、 Install Heroku Postgres
をクリックします。
Heroku Postgres
はアドオンですので、料金プランの選択があります。というと身構えてしまうかもしれませんが、 Hobby Dev
という無料プランがありますので、これを選択します。そしてpostgresを追加するアプリケーションを選択し、 Provision add-on
をクリックします。
以上で作成したアプリケーションを php +postgresのアプリケーションであるという設定が完了しました。あとはソースをデプロイすればWebアプリケーションとして稼働する状態です。
デプロイソースの指定
続いて、ソースのデプロイ元の設定をご説明します。 ソースのデプロイ元として使用するのが GitHub
になります。 GitHub にデプロイ用 リポジトリ を作成し、直下に index.php
をpushします。
今回作成したファイルは以下のものです。 php +postgresが稼働していること、 php からpostgresに接続できていることの確認が目的なので簡単なものです。
今回も GitHub へのpushは GitHub Desktop
を使用しました。直感でぽちぽちできるデスクトップアプリはやはり強いですね。 GitHub Desktop | Simple collaboration from your desktop
とはいえ、これで GitHub 側の操作は終わりです。Herokuの画面に戻ります。 Deploy
→ GitHub
→ Search
とクリックし、上記 index.php
をpushした リポジトリ の隣にある Connect
をクリックします。
これで GitHub リポジトリ からデプロイする設定が完了しました。Herokuから GitHub への接続が初めての場合は、連携をするかどうかの確認が出ますので、表示されるとおりに進めていけばOKです。
最後に、 Enable Automatic deploys
と Deploy Branch
をクリックしましょう。 Enable Automatic deploys
は自動デプロイの設定です。ブランチを指定して自動デプロイを有効にすることで、そのブランチにpushされるたびに自動でアプリケーションを最新のソースに置き換えてくれます。 Deploy Branch
は手動デプロイのボタンです。アプリケーションの設定とデプロイ元の指定をしただけで、まだデプロイはされていません。自動デプロイを有効にしたとしても、初回だけは手動で行います。
ブラウザからアクセス!
これまでの手順で全ての準備が完了しました。実際に作成したアプリケーションにアクセスしてみましょう。 アプリケーションのページの右上に Open app
というボタンがあるのでクリックしてみましょう。
作成した index.php
の通りに表示されました! postgresのバージョンも php から取得出来ているので getAttribute
の代わりに SQL を発行して動きをつけていけば立派なWebアプリケーションになりますね。
個人的な感想として、postgresが10.3と最新に対してphp5.6がツッコミどころに思えて仕方がなかったのですが、 php のバージョンを指定する方法がちゃんと用意されています。画面から作っただけではデフォルト設定で作られる、といった感じでしょうか。 composer.json
に改めて指定することで php のバージョン変更が可能です。 Heroku PHP Support | Heroku Dev Center
【補足】 php からpostgresの接続
ここまでアプリケーション稼働までの手順をご説明いたしましたが、1つだけ補足があります。
最初、 php からpostgresに接続するにあたって、接続情報の取り方に詰まりました。Herokuの画面上から確認は出来るのです。ですが、これだけ環境構築が簡単なのに接続情報はまったく関係ないサービスである GitHub 上のソースにべた書きで持つ、というところが引っかかりました。 GitHub 上のソースを見れば他の人のアプリのDBにアクセス出来てしまいます。 調べたところ、postgresをアプリケーションに追加したときに、 環境変数 に追加されているようで、そこから取得する方法が、上記の index.php
の記述になります。 Heroku Postgres | Heroku Dev Center
終わりに 今回はタイトル詐欺ではなく、めんどくさがりでもすぐにWeb アプリ開発 が出来る手順の記事になっていると思います。
Herokuを初めて使ったのですが、とても簡単で驚きました。調べるにも公式ドキュメントが多いので、詰まってどうしようもなくなるということはありませんでした。 タイトルの30分というのも嘘ではなく、「よし、やるか」と思い立ってHerokuのアカウントを作成してから、特に調べるでもなく直感でぽちぽち画面を操作して、 phpinfo()
を画面に出すまでの時間がそれぐらいでした。本当に簡単です。 コマンド要らずの設定の簡単さも素晴らしいのですが、特にpushからの自動デプロイがめんどくさがりの心にかなり響きました。
気を付けないといけないところは、前回の記事で作成したアプリはアクセス者本人の画面にのみデータが表示されるのに対し、Herokuは通常のWebアプリになりますので、 脆弱性 のあるサービスを公開してしまうと攻撃の踏み台として使われてしまう可能性があります。アプリの作成、公開は気を付けて行いましょう。
さて、これにて今回の記事は終わりとしますが、前回のタイトル詐欺の汚名を返上できたでしょうか。 最後までお読みいただきありがとうございました。