HerokuでPHPのココが便利 #phpcondo2016 #heroku #php version 18
:追加された部分
:削除された部分
(差分が大きい場合、文字単位では表示しません)
HerokuでPHPのココが便利 #phpcondo2016
# HerokuでPHPのココが便利
〜 PHPカンファレンス北海道 2016 〜
合同会社テンマド・山岡広幸
# 自己紹介
![](https://mimemo.s3-ap-northeast-1.amazonaws.com/attachment/3dc8c04a-503d-40cf-8e6a-89107d337681.png)
- 山岡広幸 [@hiro_y](https://twitter.com/hiro_y)
- [合同会社テンマド](http://10mado.jp/)・代表社員
- PHPとかNode.jsとか書く人
- 大学文学部卒 ➡ SIer ➡ ウノウ ➡ Zynga Japan ➡ [デジタルガレージ](http://www.garage.co.jp/ja/) ➡ [トイロ](http://toyro.net/) ➡ 会社設立
- 山岡広幸 [@hiro_y](https://twitter.com/hiro_y)([合同会社テンマド](http://10mado.jp/)・代表社員)
- おもにPHPとかNode.jsとか書く人
- 大学文学部卒 ➡ SIer ➡ ウノウ ➡ Zynga Japan ➡ [デジタルガレージ](http://www.garage.co.jp/ja/) ➡ [トイロ](http://toyro.net/) ➡ フリー ➡ 会社設立
# 合同会社テンマド
![10mado](https://mimemo.s3-ap-northeast-1.amazonaws.com/attachment/a29444a2-52a6-42d7-a33c-a34429dbd1da.png)
- WebサイトやWebサービスの制作
- Webサイトやサービスの制作
- 技術顧問・コンサルティング、経営サポート
- 技術顧問: [株式会社アスクリード](https://ascreed.jp/)
- 社外CTO: [株式会社イノベーター・ジャパン](http://www.innovator.jp.net/) など
- Webサービス開発・運営
# 📝 mimemo
***書く・読む・見せるをお手軽に。
mimemoはゆるく使えるテキスト置き場です。***
- https://mimemo.io
- Markdown記法
- 個人メモに使ったりテキスト共有に使ったり
- 「あいことば」設定して秘密のメモを見せたり共同編集したり
- もちろんブログのようにも使えます
- **powered by Heroku with Node.js (Express)**
# 🐬 iruca
***オフィスに誰がいるか一目瞭然。
irucaはログイン不要の在席管理ツールです。***
- https://iruca.co
- 無料・ログイン不要、Slack連携あり
- リモート勤務の多い会社などにオススメ
- 行動予定表としてご利用されているケースも
- **powered by Heroku with Node.js (Express)**
# 🍆 conasu
***複数案件かけ持ちしていても安心。
conasuはチームで使うタスク管理ツールです。***
- https://conasu.co
- チームでタスクのやり取りをするツール
- Slackやidobata、HipChatへの通知機能あり
- 複数プロジェクトのタスクを一覧で見られるので今日やることが一目瞭然
- **powered by Heroku with PHP (Silex)**
- Web Dyno x1 + Worker Dyno x1
# Heroku
- https://www.heroku.com
- 2010年にSalesforceに買収される
- PaaS (Platform as a Service)
- Node.js / Ruby / Java / PHP / Python / Go / Scala / Closure
- [The new PHP on Heroku now Generally Available | Heroku](https://blog.heroku.com/archives/2014/7/15/the_new_php_on_heroku_now_generally_available)
- PHPの正式サポートは2014年7月から
- PHPの正式サポートは2014年7月から
# Herokuの特徴
- アプリケーションを作成して`git push`すればdeployできる
- Docker 🐳 のコンテナごとdeployすることもできるようになった
- そもそもHerokuがDynoというコンテナ単位で動いている
- GitHubやDropboxなどと連携しての自動deployもできる
# Herokuの弱点
- レイテンシ…でしたがHeroku EnterpriseでPrivate Spacesを使うと東京リージョンが使えるように!(ただしお高い)
レイテンシ…でしたがHeroku EnterpriseでPrivate Spacesに東京リージョンが!(ただしお高い)
```console
$ heroku regions
ID Location Runtime
───────── ─────────────────────── ──────────────
eu Europe Common Runtime
us United States Common Runtime
frankfurt Frankfurt, Germany Private Spaces
oregon Oregon, United States Private Spaces
tokyo Tokyo, Japan Private Spaces
virginia Virginia, United States Private Spaces
```
- きめ細かなサーバー設定
- 価格(AWSを単体で使うよりやはりお高い)
きめ細かなサーバー設定とかは苦手。あと価格はやはりAWS単体より高い。
# HerokuでのPHPの使い方
- `composer.json`があればPHPアプリケーションとみなされる
- `package.json`とかもある場合は明示的にbuildpackを指定
- `composer.json`に記述されたPHPの環境が用意される
- 拡張(extension)が必要な場合も`composer.json`に書けば入る
- バージョンは`composer.lock`に従う
# 使えるPHP拡張(7の場合)
- 最初から入っている
- bzip2 / curl / fpm / pdo_mysql / mysqli / opcache / openssl / pgsql / pdo_pgsql / readline / sockets / zip / zlib
- composer.jsonで指定すれば入る
- bcmath / calendar / exif / ftp / gd / gmp / gettext / imap / intl / ldap / mbstring / pcntl / shmop / soap / sqlite3 / pdo_sqlite / xmlrpc / xsl
- apcu / blackfire / imagick / mongodb / newrelic / oauth
# PHPサポートの歴史(1)
- 2014年7月15日
- [The new PHP on Heroku now Generally Available | Heroku](https://blog.heroku.com/archives/2014/7/15/the_new_php_on_heroku_now_generally_available)
- PHPの正式サポート開始。
- Updates to support the latest PHP and HHVM versions including PHP 5.5.14 and 5.6.0RC2;
- 2014年9月8日
- [PHP 5.6.0 and miscellaneous PHP updates | Heroku Dev Center](https://devcenter.heroku.com/changelog-items/523)
- PHP 5.6.0が使えるようになると同時にデフォルトのランタイムに
- ちなみにPHP 5.6.0のリリースは8月28日
# PHPサポートの歴史(2)
- 2015年7月10日
- [PHP 7 beta now available on Heroku | Heroku Dev Center](https://devcenter.heroku.com/changelog-items/679)
- ちなみにPHP 7.0.0 Beta 1のリリースは7月10日(同日)
- 2015年12月11日
- [PHP 7 now available on Heroku | Heroku Dev Center](https://devcenter.heroku.com/changelog-items/777)
- PHP 7.0.0正式版が使えるようになると同時にデフォルトランタイムに
- ちなみにPHP 7.0.0正式版リリースは12月3日
# PHPのバージョン管理
- バージョンアップ、面倒くさくないですか
- 7.0.4: 2016年3月3日
- 7.0.3: 2016年2月4日
- 7.0.2: 2016年1月7日
- 7.0.1: 2015年12月17日
- 7.0.0: 2015年12月3日
- Herokuならdeployするタイミングで勝手に上がります
# PHPのバージョン指定例
```javascript:composer.json
"require": {
"php": "^5.6.0"
}
```
PHP 5系の最新版、ただし5.6.0以上のバージョン
```javascript:composer.json
"require": {
"php": "~5.6.0"
}
```
PHP 5.6系の最新版。`~5.5.0`と書くと5.5系の最新版が入る。
# スケールの調整が簡単なこと
![スクリーンショット 2016-04-11 0.28.12](https://mimemo.s3-ap-northeast-1.amazonaws.com/attachment/02e8523b-1852-48c0-b5bb-5ea988c5746c.png)
Dashboardで簡単にスケールアップやスケールアウトの設定ができます。もちろんAPIからの操作も可能。
# メンテナンスモードがあること
# メンテナンスモードの切り替え
```console
$ heroku maintenance:on
```
でメンテナンスモードがONになり、環境ごとに指定されたURLの内容を表示できます。Amazon S3から静的ファイルとして配信するのがオススメ。`off`指定で元の状態に。
# Twelve-Factor Appの思想に則ること
- [The Twelve-Factor App (日本語訳)](http://12factor.net/ja/)
- 移植性、要するに身軽に作るということ
- Herokuで動くように作る=Twelve-Factor Appの思想に則ること
- 結果、将来的なAWSなどへの引っ越しも楽に
- 各IaaSでDockerでdeployできるようになってきている
- 参考: [diary/2016/03/30/インフラの引っ越しを行いました - docs.esa.io](https://docs.esa.io/posts/179)
# Terraformで扱える
# Terraform便利
- [Terraform by HashiCorp](https://www.terraform.io/)
- AWSやGoogle Cloud、Microsoft AzureやDigital Oceansなど、様々なクラウドプラットフォームのリソースを一元的に定義・管理できるツール
- Herokuもプロバイダーとして使用できる
- 設定のコード化が可能
- configとか、add-onとか、ドメイン名とか
# 何より簡単に始められること
1. Herokuのアカウントを作る
2. applicationの名前を決めて作る
3. `git push`する
何より公開できるようになるまでのステップが少なく、
自己紹介
- 山岡広幸 @hiro_y(合同会社テンマド・代表社員)
- おもにPHPとかNode.jsとか書く人
- 大学文学部卒 ➡ SIer ➡ ウノウ ➡ Zynga Japan ➡ デジタルガレージ ➡ トイロ ➡ フリー ➡ 会社設立
合同会社テンマド
- Webサイトやサービスの制作
- 技術顧問・コンサルティング、経営サポート
- 技術顧問: 株式会社アスクリード
- 社外CTO: 株式会社イノベーター・ジャパン など
- Webサービス開発・運営
📝 mimemo
書く・読む・見せるをお手軽に。
mimemoはゆるく使えるテキスト置き場です。
- https://mimemo.io
- Markdown記法
- 個人メモに使ったりテキスト共有に使ったり
- 「あいことば」設定して秘密のメモを見せたり共同編集したり
- もちろんブログのようにも使えます
- powered by Heroku with Node.js (Express)
🐬 iruca
オフィスに誰がいるか一目瞭然。
irucaはログイン不要の在席管理ツールです。
- https://iruca.co
- 無料・ログイン不要、Slack連携あり
- リモート勤務の多い会社などにオススメ
- 行動予定表としてご利用されているケースも
- powered by Heroku with Node.js (Express)
🍆 conasu
複数案件かけ持ちしていても安心。
conasuはチームで使うタスク管理ツールです。
- https://conasu.co
- チームでタスクのやり取りをするツール
- Slackやidobata、HipChatへの通知機能あり
- 複数プロジェクトのタスクを一覧で見られるので今日やることが一目瞭然
- powered by Heroku with PHP (Silex)
- Web Dyno x1 + Worker Dyno x1
Heroku
- https://www.heroku.com
- PaaS (Platform as a Service)
- Node.js / Ruby / Java / PHP / Python / Go / Scala / Closure
- PHPの正式サポートは2014年7月から
Herokuの特徴
- アプリケーションを作成して
git push
すればdeployできる - Docker 🐳 のコンテナごとdeployすることもできるようになった
- そもそもHerokuがDynoというコンテナ単位で動いている
- GitHubやDropboxなどと連携しての自動deployもできる
Herokuの弱点
レイテンシ…でしたがHeroku EnterpriseでPrivate Spacesに東京リージョンが!(ただしお高い)
$ heroku regions
ID Location Runtime
───────── ─────────────────────── ──────────────
eu Europe Common Runtime
us United States Common Runtime
frankfurt Frankfurt, Germany Private Spaces
oregon Oregon, United States Private Spaces
tokyo Tokyo, Japan Private Spaces
virginia Virginia, United States Private Spaces
きめ細かなサーバー設定とかは苦手。あと価格はやはりAWS単体より高い。
HerokuでのPHPの使い方
composer.json
があればPHPアプリケーションとみなされるpackage.json
とかもある場合は明示的にbuildpackを指定
composer.json
に記述されたPHPの環境が用意される- 拡張(extension)が必要な場合も
composer.json
に書けば入る - バージョンは
composer.lock
に従う
- 拡張(extension)が必要な場合も
使えるPHP拡張(7の場合)
- 最初から入っている
- bzip2 / curl / fpm / pdo_mysql / mysqli / opcache / openssl / pgsql / pdo_pgsql / readline / sockets / zip / zlib
- composer.jsonで指定すれば入る
- bcmath / calendar / exif / ftp / gd / gmp / gettext / imap / intl / ldap / mbstring / pcntl / shmop / soap / sqlite3 / pdo_sqlite / xmlrpc / xsl
- apcu / blackfire / imagick / mongodb / newrelic / oauth
PHPサポートの歴史(1)
- 2014年7月15日
- The new PHP on Heroku now Generally Available | Heroku
- PHPの正式サポート開始。
- Updates to support the latest PHP and HHVM versions including PHP 5.5.14 and 5.6.0RC2;
- 2014年9月8日
- PHP 5.6.0 and miscellaneous PHP updates | Heroku Dev Center
- PHP 5.6.0が使えるようになると同時にデフォルトのランタイムに
- ちなみにPHP 5.6.0のリリースは8月28日
PHPサポートの歴史(2)
- 2015年7月10日
- PHP 7 beta now available on Heroku | Heroku Dev Center
- ちなみにPHP 7.0.0 Beta 1のリリースは7月10日(同日)
- 2015年12月11日
- PHP 7 now available on Heroku | Heroku Dev Center
- PHP 7.0.0正式版が使えるようになると同時にデフォルトランタイムに
- ちなみにPHP 7.0.0正式版リリースは12月3日
PHPのバージョン管理
- バージョンアップ、面倒くさくないですか
- 7.0.4: 2016年3月3日
- 7.0.3: 2016年2月4日
- 7.0.2: 2016年1月7日
- 7.0.1: 2015年12月17日
- 7.0.0: 2015年12月3日
- Herokuならdeployするタイミングで勝手に上がります
PHPのバージョン指定例
"require": {
"php": "^5.6.0"
}
composer.jsonPHP 5系の最新版、ただし5.6.0以上のバージョン
"require": {
"php": "~5.6.0"
}
composer.jsonPHP 5.6系の最新版。~5.5.0
と書くと5.5系の最新版が入る。
スケールの調整が簡単なこと
Dashboardで簡単にスケールアップやスケールアウトの設定ができます。もちろんAPIからの操作も可能。
メンテナンスモードの切り替え
$ heroku maintenance:on
でメンテナンスモードがONになり、環境ごとに指定されたURLの内容を表示できます。Amazon S3から静的ファイルとして配信するのがオススメ。off
指定で元の状態に。
Twelve-Factor Appの思想に則ること
- The Twelve-Factor App (日本語訳)
- 移植性、要するに身軽に作るということ
- Herokuで動くように作る=Twelve-Factor Appの思想に則ること
- 結果、将来的なAWSなどへの引っ越しも楽に
- 各IaaSでDockerでdeployできるようになってきている
- 参考: diary/2016/03/30/インフラの引っ越しを行いました - docs.esa.io
Terraform便利
- Terraform by HashiCorp
- AWSやGoogle Cloud、Microsoft AzureやDigital Oceansなど、様々なクラウドプラットフォームのリソースを一元的に定義・管理できるツール
- Herokuもプロバイダーとして使用できる
- 設定のコード化が可能
- configとか、add-onとか、ドメイン名とか
何より簡単に始められること
- Herokuのアカウントを作る
- applicationの名前を決めて作る
git push
する
何より公開できるようになるまでのステップが少なく、