4時間耐久 php on heroku

Post on 15-Jan-2015

13.148 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

PHP on Herokuのワークショップ資料です。

TRANSCRIPT

8時間耐久PHPUnitの教室 / Yusuke Ando (@yando)

PHP on Herokuの教室4時間耐久

4時間耐久PHP on Heroku / Yusuke Ando (@yando)

PHP on Heroku / Yusuke Ando (@yando)

テキスト

PHP on Heroku / Yusuke Ando (@yando)

http://tech.a-listers.jp/

PHP on Heroku / Yusuke Ando (@yando)

本日の対象者

PHPを使っているFacebookアプリを作りたい

Herokuを使いたいそんな皆さん

PHP on Heroku / Yusuke Ando (@yando)

Herokuを使ってFacebookアプリを

作ってみよう!

PHP on Heroku / Yusuke Ando (@yando)

本日のメニュー

HerokuでPHPDBの使い方

Facebookアプリ開発

PHP on Heroku / Yusuke Ando (@yando)

HerokuでPHP

PHP on Heroku / Yusuke Ando (@yando)

PHPサポート?

公式のリストには存在しないFacebook連携の頃から動作実際にはかなり稼働している技術的には問題なし

PHP on Heroku / Yusuke Ando (@yando)

事前に必要なもの

HerokuアカウントFacebookアカウントtoolbelt (heroku & git)

PHP on Heroku / Yusuke Ando (@yando)

developers.facebook.com

開発者アプリへ

PHP on Heroku / Yusuke Ando (@yando)

開発者アプリ

PHP on Heroku / Yusuke Ando (@yando)

メニュー画面

作成済アプリが出る場所

アプリの作成

PHP on Heroku / Yusuke Ando (@yando)

アプリの命名

チェックを入れるとHerokuアプリ化

PHP on Heroku / Yusuke Ando (@yando)

言語とメアド設定

PHP on Heroku / Yusuke Ando (@yando)

これでデプロイ完了

アプリへ

PHP on Heroku / Yusuke Ando (@yando)

テンプレが動作中

PHP on Heroku / Yusuke Ando (@yando)

ログイン時に権限確認

ここが大事!

PHP on Heroku / Yusuke Ando (@yando)

ログイン成功

各種情報を取得

PHP on Heroku / Yusuke Ando (@yando)

ソースは何処に?

•ソースはHerokuのgitに存在•Herokuはからcloneして編集•commitしてpushすると反映

PHP on Heroku / Yusuke Ando (@yando)

gitの状況gitリポジトリ

コード

pushでコードを反映する

修正

修正修正

修正修正 dyno

Herokuローカル

PHP on Heroku / Yusuke Ando (@yando)

Herokuにログイン

PHP on Heroku / Yusuke Ando (@yando)

アドレスを確認

gitリポジトリのアドレス

PHP on Heroku / Yusuke Ando (@yando)

ソースの修正

•Herokuで確認したURLをクローン•修正コードをcommit•Herokuにpush

PHP on Heroku / Yusuke Ando (@yando)

練習 PHPをデプロイ

•Facebookの開発者ページから作成•動作を確認•リポジトリをクローンしてコード修正•修正した内容の確認 (Hello World等)

PHP on Heroku / Yusuke Ando (@yando)

ローカルで動く?

PHP on Heroku / Yusuke Ando (@yando)

ローカル動作の要件

•hostsを書き換えるなど•該当のホストをapacheに設定•App ID / Secretを環境変数に設定•開発用は別アプリ、ドメインが無難

PHP on Heroku / Yusuke Ando (@yando)

Herokuの基本技

•heroku config•heroku ps•heroku logs [-t]•heroku run bash•heroku open

PHP on Heroku / Yusuke Ando (@yando)

Herokuの制限事項

•ローカルファイルが永続化されない•mbstringが標準では使えない•index.phpの存在が必須•ネットワークが遠い•ServerLimit 1 / MaxClients 1

PHP on Heroku / Yusuke Ando (@yando)

ローカルファイル

一応、書き込める

PHP on Heroku / Yusuke Ando (@yando)

再起動すると

さようなら、データ

$ heroku restartRestarting processes... done

PHP on Heroku / Yusuke Ando (@yando)

index.phpが無い$ git mv index.php index2.php$ git commit -m "move"[master 65b0921] move 1 files changed, 0 insertions(+), 0 deletions(-) rename index.php => index2.php (100%)$ git push heroku masterCounting objects: 3, done.Writing objects: 100% (2/2), 228 bytes, done.Total 2 (delta 0), reused 0 (delta 0)

-----> Heroku receiving push ! Heroku push rejected, no Cedar-supported app detected

To git@heroku.com:stark-warrior-3088.git ! [remote rejected] master -> master (pre-receive hook declined)error: failed to push some refs to 'git@heroku.com:stark-warrior-3088.git'

pushできない

PHP on Heroku / Yusuke Ando (@yando)

東海岸は遠い 1 10.200 ms 2.443 ms 10.540 ms 2 * * * 3 14.313 ms 11.478 ms 12.616 ms 4 10.042 ms 12.934 ms 12.804 ms 5 12.451 ms 14.936 ms 17.440 ms 6 te4-4-403.gw2.nrt2.asianetcom.net (203.192.150.125) 13.373 ms 16.648 ms 18.423 ms 7 gi0-0-0.cr1.nrt1.asianetcom.net (202.147.1.62) 17.052 ms 34.160 ms 16.097 ms 8 te0-0-0-4.gw1.lax3.asianetcom.net (202.147.61.169) 129.748 ms 132.160 ms 129.538 ms 9 be1.gw2.lax3.asianetcom.net (202.147.61.162) 124.365 ms 123.194 ms 123.215 ms10 equinix02-iad2.amazon.com (206.223.115.35) 182.967 ms 192.914 ms 187.884 ms11 72.21.220.45 (72.21.220.45) 200.332 ms 72.21.220.43 (72.21.220.43) 193.632 ms 205.251.245.5 (205.251.245.5) 197.197 ms12 205.251.245.47 (205.251.245.47) 192.199 ms 195.086 ms 72.21.222.155 (72.21.222.155) 367.567 ms13 216.182.224.71 (216.182.224.71) 193.768 ms 216.182.224.203 (216.182.224.203) 188.929 ms 216.182.224.207 (216.182.224.207) 204.856 ms14 * * *15 * * *16 * * *17 * * *

PHP on Heroku / Yusuke Ando (@yando)

mbstringを使う

•改良されたbuildpackを使う →この方法が理想

•ダメな場合は自力解決 heroku用のmbstring.so アプリ内に php.ini を作り読み込む

PHP on Heroku / Yusuke Ando (@yando)

buildpack

•cedarスタックの構築キット•Linux上での構築ノウハウが使える•github上でフォークしてさまざまな構成を自力で作成して、利用できる•heroku製、コミュニティ製が存在

PHP on Heroku / Yusuke Ando (@yando)

buildpack

PHP on Heroku / Yusuke Ando (@yando)

Third-party

PHP on Heroku / Yusuke Ando (@yando)

Third-party(2)

PHP on Heroku / Yusuke Ando (@yando)

改良されたbuildpack

•新規アプリの場合 

•既存アプリの場合は変更

$heroku create --buildpack https://github.com/winglian/heroku-buildpack-php -s cedar

$heroku config:add BUILDPACK_URL=https://github.com/winglian/heroku-buildpack-php

PHP on Heroku / Yusuke Ando (@yando)

自力で解決

•mbstring.soを配置 https://github.com/wuputah/heroku-libraries

•php.iniを記述extension=/app/www/mbstring.so

PHP on Heroku / Yusuke Ando (@yando)

Herokuのコツ

•環境面での制約は受け入れる•日本語の問題などはクリアできる•単純にアプリを載せてはいけない•静的コンテンツを外に逃す

PHP on Heroku / Yusuke Ando (@yando)

DBの使い方

PHP on Heroku / Yusuke Ando (@yando)

利用できるDB

•Shared DB(PostgreSQL)  5MBまで無料  20GBまでで$15•その他の各種アドオン  MySQL MongoDB

まずは無料のPostgreSQL

PHP on Heroku / Yusuke Ando (@yando)

アドオン

PHP on Heroku / Yusuke Ando (@yando)

addons.heroku.com

PHP on Heroku / Yusuke Ando (@yando)

ClearDB

PHP on Heroku / Yusuke Ando (@yando)

無料版もある

PHP on Heroku / Yusuke Ando (@yando)

要クレジットカード

PHP on Heroku / Yusuke Ando (@yando)

無料のshared db

•Facebookからのアプリは未設定•必要な場合は別途コマンドで追加 heroku addons:add shared-database

•接続先は heroku configで確認する heroku config•スキーマ管理は db:migrate が想定

PHP on Heroku / Yusuke Ando (@yando)

DBの管理

•PHPではdb:migrateが使えない•接続元制限があるのでコンソール不可•フレームワークの機能も使える•Webアプリから行うと特に簡単https://github.com/yandod/phppgadmin-heroku

PHP on Heroku / Yusuke Ando (@yando)

練習 DBを使ってみる

•heroku addons:add shared-database•phppgadminをgit submodule add•デプロイしてWebからの管理を確認

$git submodule add git://github.com/yandod/phppgadmin-heroku.git

PHP on Heroku / Yusuke Ando (@yando)

Facebookアプリ

PHP on Heroku / Yusuke Ando (@yando)

FBアプリ開発の基礎

App ID / App SecretPHP SDK

graph API / scopesocial plugin

PHP on Heroku / Yusuke Ando (@yando)

FBアプリとは?

Facebookが提供するAPIを利用したWebやアプリ

該当範囲は広大

PHP on Heroku / Yusuke Ando (@yando)

Website

認証などにFacebookを利用

PHP on Heroku / Yusuke Ando (@yando)

Facebook内アプリ

Canvasで動作

PHP on Heroku / Yusuke Ando (@yando)

モバイル

Facebookのモバイルアプリ内で動作

PHP on Heroku / Yusuke Ando (@yando)

アプリの種類•Webサイト 自由だが、Facebook外になる•Facebook内アプリ レイアウト、モバイルに制限あり•モバイルアプリ 今後の成長株になると思われる

PCとモバイルで違いがある点に注意

PHP on Heroku / Yusuke Ando (@yando)

App ID / Secret•FacebookのAPIの利用に必要•開発者アプリから確認可能•1クリックで作成されたアプリでは環境変数を使って受け渡している

$ heroku config=== Config Vars for vivid-rain-6470FACEBOOK_APP_ID: 425865070767611FACEBOOK_SECRET: c50346e471016be2fbd3572fd2de1f11

PHP on Heroku / Yusuke Ando (@yando)

ソース内からの取得

PHP on Heroku / Yusuke Ando (@yando)

php-sdk•APIを利用するPHPクライアント•facebookが公開している•2012年4月からリポジトリが変更に

PHP on Heroku / Yusuke Ando (@yando)

基本的な利用例

PHP on Heroku / Yusuke Ando (@yando)

認証処理の例

ログイン済みならID取得

APIをコール

ログインURLの生成

PHP on Heroku / Yusuke Ando (@yando)

認証処理の例

Facebookに遷移して戻る

PHP on Heroku / Yusuke Ando (@yando)

練習 apiを使ってみる

•ザッカーバーグの情報を画面に表示•ログインして、自分の情報も表示•index.phpは変更しないで別ファイル•SDKのサンプルを参考

https://github.com/facebook/facebook-php-sdk/blob/master/examples/example.php

PHP on Heroku / Yusuke Ando (@yando)

Graph API

様々なAPIを /me のように使える

PHP on Heroku / Yusuke Ando (@yando)

scope / permission•APIを経由した情報のアクセス範囲•APIを経由した機能の提供範囲•要求した権限は必ず承認が必要

PHP on Heroku / Yusuke Ando (@yando)

デフォルトの状態誕生日やemailが無い

PHP on Heroku / Yusuke Ando (@yando)

permissionは膨大

https://developers.facebook.com/docs/authentication/permissions/

PHP on Heroku / Yusuke Ando (@yando)

scope指定の例

カンマ区切りで指定

権限付きログインURLの生成

PHP on Heroku / Yusuke Ando (@yando)

scope指定の例

確認事項が増える!

PHP on Heroku / Yusuke Ando (@yando)

悪魔の実験

PHP on Heroku / Yusuke Ando (@yando)

まさに外道!

PHP on Heroku / Yusuke Ando (@yando)

秘密主義な人の自衛策

PHP on Heroku / Yusuke Ando (@yando)

実装は簡単だが、規約違反に注意

PHP on Heroku / Yusuke Ando (@yando)

練習 誕生日リスト•2ヶ月以内に誕生日の友人を表示•友人の誕生日を取得する権限追加•APIの利用方法を工夫する

PHP on Heroku / Yusuke Ando (@yando)

social plugin•Facebookの機能を使う埋め込みタグ•ブログパーツ的な物•タグを貼れば良い

PHP on Heroku / Yusuke Ando (@yando)

夢が広がる

•もはやなんでも実装できる•facebookでログインする掲示板•友達が登場する昔話•診断アプリ•ソーシャル○○で資金調達!(棒読)

PHP on Heroku / Yusuke Ando (@yando)

まとめ

PHP on Heroku / Yusuke Ando (@yando)

PHP on Heroku

•手軽に利用できるPaaS•いくつかのコツと制限•結局、なんでも出来る

PHP on Heroku / Yusuke Ando (@yando)

Facebookアプリ

•情報はWebからゲット•英語でもメゲない•進化が早いので継続が大事

top related