24.コンクリートの耐久性向上仕様書 - mlit.go.jp...24.コンクリートの耐久性向上仕様書 (土木構造物) 1.コンクリート中の塩化物総量規制
4時間耐久 PHP on Heroku
-
Upload
yandod -
Category
Technology
-
view
13.150 -
download
1
description
Transcript of 4時間耐久 PHP on Heroku
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 [email protected]:stark-warrior-3088.git ! [remote rejected] master -> master (pre-receive hook declined)error: failed to push some refs to '[email protected]: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設定の仕組み
•環境変数にDSN文字列が設定される•Rubyが前提となった形式•PHPから利用する場合は適宜、解析
postgres://ajkilbabda:[email protected]
zonaws.com/ajkilbxgca
postgres://[user]:[pass]@[host]/[database]
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からゲット•英語でもメゲない•進化が早いので継続が大事