HerokuでPHPのココが便利 #phpcondo2016 #heroku #php version 15

2016/04/11 00:30 by hiro_y hiro_y
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
# 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/) ➡ 会社設立

# 合同会社テンマド

![10mado](https://mimemo.s3-ap-northeast-1.amazonaws.com/attachment/a29444a2-52a6-42d7-a33c-a34429dbd1da.png)

- 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月から

# Herokuの特徴

- アプリケーションを作成して`git push`すればdeployできる
  - Docker 🐳 のコンテナごとdeployすることもできるようになった
    - そもそもHerokuがDynoというコンテナ単位で動いている
  - GitHubやDropboxなどと連携しての自動deployもできる
- Dashboardからサーバー台数を柔軟に変更できる
  - 調整が極めて容易
- Docker 🐳 のコンテナごとdeployすることもできるようになった
  - そもそもHerokuがDynoというコンテナ単位で動いている
- GitHubやDropboxなどと連携しての自動deployもできる

# Herokuの弱点

- レイテンシ…でしたが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を単体で使うよりやはりお高い)

# 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なら次回リリース時に勝手に上がります

```json
{
  "require": {
    "php": "^5.6.0"
  }
}
```

# スケールの調整が簡単なこと

![スクリーンショット 2016-04-11 0.28.12](https://mimemo.s3-ap-northeast-1.amazonaws.com/attachment/02e8523b-1852-48c0-b5bb-5ea988c5746c.png)

# 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)

# 何より簡単に始められること

TBW
      

HerokuでPHPのココが便利

〜 PHPカンファレンス北海道 2016 〜
合同会社テンマド・山岡広幸

自己紹介

合同会社テンマド

10mado

📝 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

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に従う

使える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)

PHPサポートの歴史(2)

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なら次回リリース時に勝手に上がります
{
  "require": {
    "php": "^5.6.0"
  }
}

スケールの調整が簡単なこと

スクリーンショット 2016-04-11 0.28.12

Twelve-Factor Appの思想に則ること

何より簡単に始められること

TBW