SlideShare a Scribd company logo
1 of 34
Download to read offline
Google App Engine for PHP	
appengine ja night #25
Ryo Yamasaki @vierjp
1	
http://goo.gl/mTyMK
•  Blog
•  http://blog.vier.jp/
•  Twitter
•  @vierjp
•  仕事
•  Javaでサーバーサイドの開発がメイン
•  前職はスマホ向けサービス事業者の技術リーダー
•  Google App Engineを中心にCloud StorageやBigQuery等、
Google Cloud Platformのプロダクトを利用していました。
•  個人でAndroidアプリを公開しています
•  WiFi Tunes Sync
Ryo Yamasaki	
自己紹介	
2	
http://goo.gl/mTyMK
Google App Engine for PHP	
3	
アジェンダ	
1.  GAE/PHPの概要
2.  Google I/O後のアップデート
3.  GAE/PHPで使えるIDE
4.  既存アプリを動かしてみた
5.  既存アプリを動かす際の注意点
6.  GAE/PHPで使えるフレームワーク
http://goo.gl/mTyMK
Google App Engine for PHP	
4	
概要
Google App Engine for PHP	
•  Python、Java、Goに続きPHPが追加
•  Google I/O 初日の2013/5/15 に発表
•  現在 Limited Previewで申し込み受付中
•  PHP Version 5.4.8
•  Cloud SQLを利用可能
•  Cloud Datastore APIを利用可能
概要	
5	
http://goo.gl/mTyMK
Google App Engine	
•  制限	
•  ローカルファイルシステムへのアクセス不可
•  代わりにCloud Storageに対して読み書きする
•  PHPの標準的な方法でファイルのダイレクト
アップロードが不可
•  そのままでは「$_FILES」が使えない
•  Cloud Storageに対してアップロードする
•  ProcessやSystemを操作する関数は使用不可
•  PHPの拡張モジュールを追加できない
•  まだ使えないApp Engineのサービスがある
概要	
6	
http://goo.gl/mTyMK
Google App Engine for PHP	
•  App Engine Ver.1.8.1
•  mbstring (マルチバイト関連) の追加
•  mcrypt (暗号化関連) の追加
•  iconv (文字エンコード変換・多言語等) の追加
•  Cloud Storageに配置したPHPスクリプトを
include可能になった。
Google I/O後のアップデート (1)	
7	
http://goo.gl/mTyMK
Google App Engine for PHP	
•  PHPスクリプトのinclude例
Google I/O後のアップデート (2)	
8	
<?php
require_once "gs://my_bucket/file.php";	
http://goo.gl/mTyMK
Google App Engine for PHP	
9	
GAE/PHPで使えるIDE	
http://goo.gl/mTyMK
Google App Engine for PHP	
•  PHP開発者に人気のPHP用IDE
•  GAE/PHPに対応
•  IDE上でデバッグ・デプロイが可能
•  1ヶ月は無料で利用可能
PhpStorm	
10	
http://goo.gl/mTyMK
Google App Engine for PHP	
PhpStorm デバッグ	
11	
http://goo.gl/mTyMK
Google App Engine for PHP	
PhpStorm デプロイ	
12	
http://goo.gl/mTyMK
Google App Engine for PHP	
13	
既存アプリを動かしてみた
Google App Engine	
phpinfo	
14	
•  PHPの環境情報を表示
•  サーバー設定
•  拡張モジュール
http://phpinfo.vier-test.appspot.com/
Google App Engine	
Word Press Ver.3.5.1 日本語版	
15	
http://vier-test.appspot.com/
•  日本語の投稿・表示は問題なし
•  専用プラグインが公開されてい
る
Google App Engine for PHP	
•  ファイルのアップロードが可能になる	
•  メールの送信が可能になる	
•  問題のあった一部のUIが修正される
Google公式の GAE/PHP向けWordPressプラグイン	
16	
http://goo.gl/mTyMK
Google App Engine for PHP	
1.  WP Multibyte Patch
2.  Memcached Object Cache
3.  Batcache
4.  Wptouch
5.  FancyBox
6.  WP Social Bookmarking Light
7.  Secure WordPress
8.  Crazy Bone
WordPressのプラグインもいくつか試してみました	
17	
http://goo.gl/mTyMK
Google App Engine	
phpMyAdmin Ver.4.0.3	
18	
•  MySQLの管理ツール
http://goo.gl/mTyMK
Google App Engine for PHP	
•  WordPress
•  記事一覧
•  記事詳細
•  記事の投稿
•  プラグイン
•  スマートフォンからのアクセス
デモ	
19	
http://goo.gl/mTyMK
Google App Engine for PHP	
20	
既存アプリを動かす際の注意点
Google App Engine	
•  GAE/PHPの制限	
•  ローカルファイルシステムへの書き込み不可
•  代わりにCloud Storageに対して読み書きする
•  PHPの標準的な方法でファイルのアップロード
が不可
•  そのままでは「$_FILES」が使えない
•  Cloud Storageに対してアップロードする
•  ProcessやSystemを操作する関数は使用不可
•  PHPの拡張モジュールを追加できない
既存アプリを動かす際の注意点	
21	
http://goo.gl/mTyMK
Google App Engine for PHP	
1.  ファイルシステムに対するI/O
2.  ファイルアップロード機能
3.  ログ出力
4.  セッション管理
5.  メール送信
6.  必要な拡張モジュール
既存アプリを動かす際の注意点	
22	
http://goo.gl/mTyMK
Google App Engine for PHP	
•  基本的にはPathをCloud StorageのPathに変更すれば
PHP標準の関数でファイルを読み書きできる
•  Cloud StorageのPathに対する操作はPHPのStream
Wrapperを使って処理している
•  ディレクトリに対する操作の挙動が怪しい (Issue 9368)
•  ディレクトリの存在チェック
•  ディレクトリ作成
•  既存コードが特定の関数を使っていると問題になる
•  realpath (Stream Wrapperがサポートしていない関数)
ファイルシステムに対するI/Oの補足	
23	
http://goo.gl/mTyMK
Google App Engine for PHP	
•  標準のmail関数を使えない模様
•  The function ‘mail’ is not implemented. というエラーになる	
•  WordPressプラグインでは以下の方法
メール送信についての補足	
24	
require_once 'google/appengine/api/mail/Message.php';
use googleappengineapimailMessage;
// App EngineのMailService用クラスを使用する
$mail = new Message();
// 現状Fromの表示名をサポートしていないらしい。(WordPress Pluginのコメントより)
//$mail->setSender(' Ryo Yamasaki <eins@vier.jp>');
$mail->setSender( 'eins@vier.jp’ );
$mail->addTo( ’test@vier.jp’ );
$mail->setSubject( 'Test Subject' );
$mail->setTextBody( 'Test Message' );
// 送信	
$mail->send();	
http://goo.gl/mTyMK
Google App Engine for PHP	
25	
GAE/PHPで使えるフレームワーク
Google App Engine for PHP	
1.  一時ファイルをGAEのファイルシステム
に書き込まない
2.  ログ出力はsyslog関数を使う
GAE/PHP上で動かすフレームワークの条件	
26	
http://goo.gl/mTyMK
Google App Engine for PHP	
•  デフォルトはアプリ内のtmpディレクトリにいろいろ書き込む
Cake/PHPを試してみた	
27	
•  それが原因でエラーになる
•  tmpディレクトリを
CloudStorageにしてもダメ
http://goo.gl/mTyMK
Google App Engine for PHP	
•  CakePHPにはI/Oの対象を切り替える仕組みがある
1.  一時データの格納先をAPCかMemcacheに変更
2.  ログ出力をsyslog関数に変更 (CakePHP 2.4に含まれている)
3.  Sessionの格納先をCloud SQLに変更
Cake/PHPの設定を変更する	
28	
※詳細は長くなるのでブログで
http://goo.gl/mTyMK
Google App Engine for PHP	
•  CakeEmail標準のコードでは送信不可
•  送信部分の処理だけMailServiceを使うクラス
(Transport)を作成してそれに切り替えることで一応送
信可能
•  アプリ内に含まれる静的なファイルは添付可能
•  Cloud Storage上のファイルを添付するにはCakeEmail
本体の修正が必要になりそう (前述のrealpath関数が原因)	
  
Cake/Emailも試してみた	
29	
http://goo.gl/mTyMK
Google App Engine for PHP	
1.  「一覧・登録・編集・削除」を行うシンプルなCRUD処理	
  
2.  GAEのUserServiceを使った認証処理
3.  投稿者と管理ユーザーのみが編集・削除可能
Cake/PHP の動作デモ	
30	
http://cake2.vier-test.appspot.com/
Google App Engine for PHP	
•  ポータビリティ
•  既存アプリがそこそこ動く
•  フレームワークも物によっては動くっぽい
•  一部機能が透過的に動くようになればさらに良い
•  ファイルのダイレクトアップロード
•  Cloud Storageに対するファイル・ディレクトリ操作
•  メール送信
•  スケーラビリティ
•  他の言語同様にDatastoreを使えるとさらに良い
まとめ	
31	
http://goo.gl/mTyMK
Google App Engine	
•  Google App Engine for PHP Limited Preview申し込みサイト
•  https://gaeforphp.appspot.com/
•  Google App Engine for PHP 公式ドキュメント
•  https://developers.google.com/appengine/docs/php/
•  PHP IDE :: JetBrains PhpStorm
•  http://www.jetbrains.com/phpstorm/
•  Getting Started with PhpStorm as Google App Engine PHP IDE
•  http://goo.gl/1pOS6
•  WordPress › 日本語
•  http://ja.wordpress.org/
•  WordPress › Google App Engine for WordPress « WordPress Plugins
•  http://wordpress.org/plugins/google-app-engine/
•  Google Cloud Datastore 公式ドキュメント
•  https://developers.google.com/datastore/docs/overview
32	
関連URL
Google App Engine	
•  27.Google I/Oで発表されたCloud Platformの新機能
•  http://blog.vier.jp/2013/05/google-iogoogle-cloud-platform.html
•  28.Google App Engine for PHP (GAE/PHP) を早速試してみた
•  http://blog.vier.jp/2013/05/google-app-engine-for-php-gaephp.html
•  29.Google App Engine for PHPで WordPress を動かしてみた
•  http://blog.vier.jp/2013/05/29google-app-engine-for-phpwordpress.html
•  30.Google App Engine for PHPにおけるポータビリティを考える
•  http://blog.vier.jp/2013/05/30google-app-engine-for-php.html
•  36.Google App Engine for PHPで WordPress を運用するためのプラグイン	
•  http://blog.vier.jp/2013/06/37google-app-engine-for-phpwordpress.html
•  39.Google App Engine for PHP で CakePHP を動かしてみた
•  http://blog.vier.jp/2013/07/39google-app-engine-for-phpcakephp.html
•  33.Google Cloud Datastoreを試してみた 概要編 (1/3)
•  http://blog.vier.jp/2013/06/33google-cloud-datastore-13.html
33	
関連ブログURL
ご清聴ありがとうございました
	
@vierjp
http://blog.vier.jp/	
Google App Engine for PHP

More Related Content

What's hot

単機能Twitter クライアント試作のための各種方法の検討
単機能Twitter クライアント試作のための各種方法の検討単機能Twitter クライアント試作のための各種方法の検討
単機能Twitter クライアント試作のための各種方法の検討Akira Niiyama
 
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframeworkSpring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframeworkToshiaki Maki
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニックmiso- soup3
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能kimulla
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイKazuhiro Hara
 
祝 top-level project Apache Geode
祝 top-level project Apache Geode祝 top-level project Apache Geode
祝 top-level project Apache GeodeTomohiro Ichimura
 
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbcSpring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbcToshiaki Maki
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールdcubeio
 
Springを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしようSpringを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしよう土岐 孝平
 
ウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニングウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニングYasuhiro Onishi
 
AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤Godai Nakamura
 
ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99Katsuya Shimizu
 
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugToshiaki Maki
 
Customize CakePHP bake
Customize CakePHP bakeCustomize CakePHP bake
Customize CakePHP bakeKazuyuki Aoki
 
第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編ksimoji
 
JSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めようJSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めようVOYAGE GROUP
 

What's hot (20)

単機能Twitter クライアント試作のための各種方法の検討
単機能Twitter クライアント試作のための各種方法の検討単機能Twitter クライアント試作のための各種方法の検討
単機能Twitter クライアント試作のための各種方法の検討
 
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframeworkSpring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能
 
[jjug] Java と Benchmark
[jjug] Java と Benchmark[jjug] Java と Benchmark
[jjug] Java と Benchmark
 
Yapc fukuoka crust
Yapc fukuoka crustYapc fukuoka crust
Yapc fukuoka crust
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
 
祝 top-level project Apache Geode
祝 top-level project Apache Geode祝 top-level project Apache Geode
祝 top-level project Apache Geode
 
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbcSpring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
Springを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしようSpringを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしよう
 
ウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニングウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニング
 
AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤
 
PWA+TWA
PWA+TWAPWA+TWA
PWA+TWA
 
ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99
 
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
 
Customize CakePHP bake
Customize CakePHP bakeCustomize CakePHP bake
Customize CakePHP bake
 
第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編
 
JSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めようJSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めよう
 
V8 Iginition Interpreter
V8 Iginition InterpreterV8 Iginition Interpreter
V8 Iginition Interpreter
 

Viewers also liked

appengine ja night #24 Google Cloud Endpoints and BigQuery (English)
appengine ja night #24 Google Cloud Endpoints and BigQuery (English)appengine ja night #24 Google Cloud Endpoints and BigQuery (English)
appengine ja night #24 Google Cloud Endpoints and BigQuery (English)Ryo Yamasaki
 
ぼくのかんがえたふつうのあんどろいどかいはつ
ぼくのかんがえたふつうのあんどろいどかいはつぼくのかんがえたふつうのあんどろいどかいはつ
ぼくのかんがえたふつうのあんどろいどかいはつYukiya Nakagawa
 
appengine ja night #24 Google Cloud Endpoints and BigQuery
appengine ja night #24 Google Cloud Endpoints and BigQueryappengine ja night #24 Google Cloud Endpoints and BigQuery
appengine ja night #24 Google Cloud Endpoints and BigQueryRyo Yamasaki
 
Report of Google I/O 2013 Google Cloud Platform
Report of Google I/O 2013 Google Cloud PlatformReport of Google I/O 2013 Google Cloud Platform
Report of Google I/O 2013 Google Cloud PlatformRyo Yamasaki
 
appengine ja night #25 Google App Engine for PHP (English)
appengine ja night #25 Google App Engine for PHP (English)appengine ja night #25 Google App Engine for PHP (English)
appengine ja night #25 Google App Engine for PHP (English)Ryo Yamasaki
 
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectYAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectRyo Ito
 
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜Masaru Kurahayashi
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門Yuichi Ito
 
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へDevelopers Summit
 
Designing Teams for Emerging Challenges
Designing Teams for Emerging ChallengesDesigning Teams for Emerging Challenges
Designing Teams for Emerging ChallengesAaron Irizarry
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesNed Potter
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with DataSeth Familian
 
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 20173 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017Drift
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 

Viewers also liked (14)

appengine ja night #24 Google Cloud Endpoints and BigQuery (English)
appengine ja night #24 Google Cloud Endpoints and BigQuery (English)appengine ja night #24 Google Cloud Endpoints and BigQuery (English)
appengine ja night #24 Google Cloud Endpoints and BigQuery (English)
 
ぼくのかんがえたふつうのあんどろいどかいはつ
ぼくのかんがえたふつうのあんどろいどかいはつぼくのかんがえたふつうのあんどろいどかいはつ
ぼくのかんがえたふつうのあんどろいどかいはつ
 
appengine ja night #24 Google Cloud Endpoints and BigQuery
appengine ja night #24 Google Cloud Endpoints and BigQueryappengine ja night #24 Google Cloud Endpoints and BigQuery
appengine ja night #24 Google Cloud Endpoints and BigQuery
 
Report of Google I/O 2013 Google Cloud Platform
Report of Google I/O 2013 Google Cloud PlatformReport of Google I/O 2013 Google Cloud Platform
Report of Google I/O 2013 Google Cloud Platform
 
appengine ja night #25 Google App Engine for PHP (English)
appengine ja night #25 Google App Engine for PHP (English)appengine ja night #25 Google App Engine for PHP (English)
appengine ja night #25 Google App Engine for PHP (English)
 
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectYAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
 
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門
 
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ
 
Designing Teams for Emerging Challenges
Designing Teams for Emerging ChallengesDesigning Teams for Emerging Challenges
Designing Teams for Emerging Challenges
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and Archives
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
 
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 20173 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 

Similar to appengine ja night #25 Google App Engine for PHP

GDG DevFest Kobe Firebaseハンズオン勉強会
GDG DevFest Kobe Firebaseハンズオン勉強会GDG DevFest Kobe Firebaseハンズオン勉強会
GDG DevFest Kobe Firebaseハンズオン勉強会Yosuke Onoue
 
Backlogでの Perlのつかいかた
Backlogでの PerlのつかいかたBacklogでの Perlのつかいかた
Backlogでの PerlのつかいかたRyuzo Yamamoto
 
Pylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイドPylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイドNozomu Kaneko
 
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...佑介 九岡
 
GitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェアGitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェアAtsushi Matsuo
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニングKiyokazu Kaba
 
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebKensaku Komatsu
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎真哉 杉野
 
CakePHP2 Loading (Japanese)
CakePHP2 Loading (Japanese)CakePHP2 Loading (Japanese)
CakePHP2 Loading (Japanese)ichikaway
 
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法スクリプト言語PHP攻略法
スクリプト言語PHP攻略法Rui Hirokawa
 
12 総合演習Word Pressの利用
12 総合演習Word Pressの利用12 総合演習Word Pressの利用
12 総合演習Word Pressの利用文樹 高橋
 
FuelPHPでSentry導入
FuelPHPでSentry導入FuelPHPでSentry導入
FuelPHPでSentry導入fagai
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
KobeGTUG GAE/Java
KobeGTUG GAE/JavaKobeGTUG GAE/Java
KobeGTUG GAE/Javatakagig
 
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策Salesforce Developers Japan
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーAyumu Kawaguchi
 

Similar to appengine ja night #25 Google App Engine for PHP (20)

BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012
 
GDG DevFest Kobe Firebaseハンズオン勉強会
GDG DevFest Kobe Firebaseハンズオン勉強会GDG DevFest Kobe Firebaseハンズオン勉強会
GDG DevFest Kobe Firebaseハンズオン勉強会
 
Backlogでの Perlのつかいかた
Backlogでの PerlのつかいかたBacklogでの Perlのつかいかた
Backlogでの Perlのつかいかた
 
Pylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイドPylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイド
 
HTML5最新動向
HTML5最新動向HTML5最新動向
HTML5最新動向
 
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
 
GitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェアGitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェア
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWeb
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
CakePHP2 Loading (Japanese)
CakePHP2 Loading (Japanese)CakePHP2 Loading (Japanese)
CakePHP2 Loading (Japanese)
 
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
 
12 総合演習Word Pressの利用
12 総合演習Word Pressの利用12 総合演習Word Pressの利用
12 総合演習Word Pressの利用
 
FuelPHPでSentry導入
FuelPHPでSentry導入FuelPHPでSentry導入
FuelPHPでSentry導入
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimuraAPIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
 
KobeGTUG GAE/Java
KobeGTUG GAE/JavaKobeGTUG GAE/Java
KobeGTUG GAE/Java
 
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 

Recently uploaded

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 

Recently uploaded (9)

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 

appengine ja night #25 Google App Engine for PHP

  • 1. Google App Engine for PHP appengine ja night #25 Ryo Yamasaki @vierjp 1 http://goo.gl/mTyMK
  • 2. •  Blog •  http://blog.vier.jp/ •  Twitter •  @vierjp •  仕事 •  Javaでサーバーサイドの開発がメイン •  前職はスマホ向けサービス事業者の技術リーダー •  Google App Engineを中心にCloud StorageやBigQuery等、 Google Cloud Platformのプロダクトを利用していました。 •  個人でAndroidアプリを公開しています •  WiFi Tunes Sync Ryo Yamasaki 自己紹介 2 http://goo.gl/mTyMK
  • 3. Google App Engine for PHP 3 アジェンダ 1.  GAE/PHPの概要 2.  Google I/O後のアップデート 3.  GAE/PHPで使えるIDE 4.  既存アプリを動かしてみた 5.  既存アプリを動かす際の注意点 6.  GAE/PHPで使えるフレームワーク http://goo.gl/mTyMK
  • 4. Google App Engine for PHP 4 概要
  • 5. Google App Engine for PHP •  Python、Java、Goに続きPHPが追加 •  Google I/O 初日の2013/5/15 に発表 •  現在 Limited Previewで申し込み受付中 •  PHP Version 5.4.8 •  Cloud SQLを利用可能 •  Cloud Datastore APIを利用可能 概要 5 http://goo.gl/mTyMK
  • 6. Google App Engine •  制限 •  ローカルファイルシステムへのアクセス不可 •  代わりにCloud Storageに対して読み書きする •  PHPの標準的な方法でファイルのダイレクト アップロードが不可 •  そのままでは「$_FILES」が使えない •  Cloud Storageに対してアップロードする •  ProcessやSystemを操作する関数は使用不可 •  PHPの拡張モジュールを追加できない •  まだ使えないApp Engineのサービスがある 概要 6 http://goo.gl/mTyMK
  • 7. Google App Engine for PHP •  App Engine Ver.1.8.1 •  mbstring (マルチバイト関連) の追加 •  mcrypt (暗号化関連) の追加 •  iconv (文字エンコード変換・多言語等) の追加 •  Cloud Storageに配置したPHPスクリプトを include可能になった。 Google I/O後のアップデート (1) 7 http://goo.gl/mTyMK
  • 8. Google App Engine for PHP •  PHPスクリプトのinclude例 Google I/O後のアップデート (2) 8 <?php require_once "gs://my_bucket/file.php"; http://goo.gl/mTyMK
  • 9. Google App Engine for PHP 9 GAE/PHPで使えるIDE http://goo.gl/mTyMK
  • 10. Google App Engine for PHP •  PHP開発者に人気のPHP用IDE •  GAE/PHPに対応 •  IDE上でデバッグ・デプロイが可能 •  1ヶ月は無料で利用可能 PhpStorm 10 http://goo.gl/mTyMK
  • 11. Google App Engine for PHP PhpStorm デバッグ 11 http://goo.gl/mTyMK
  • 12. Google App Engine for PHP PhpStorm デプロイ 12 http://goo.gl/mTyMK
  • 13. Google App Engine for PHP 13 既存アプリを動かしてみた
  • 14. Google App Engine phpinfo 14 •  PHPの環境情報を表示 •  サーバー設定 •  拡張モジュール http://phpinfo.vier-test.appspot.com/
  • 15. Google App Engine Word Press Ver.3.5.1 日本語版 15 http://vier-test.appspot.com/ •  日本語の投稿・表示は問題なし •  専用プラグインが公開されてい る
  • 16. Google App Engine for PHP •  ファイルのアップロードが可能になる •  メールの送信が可能になる •  問題のあった一部のUIが修正される Google公式の GAE/PHP向けWordPressプラグイン 16 http://goo.gl/mTyMK
  • 17. Google App Engine for PHP 1.  WP Multibyte Patch 2.  Memcached Object Cache 3.  Batcache 4.  Wptouch 5.  FancyBox 6.  WP Social Bookmarking Light 7.  Secure WordPress 8.  Crazy Bone WordPressのプラグインもいくつか試してみました 17 http://goo.gl/mTyMK
  • 18. Google App Engine phpMyAdmin Ver.4.0.3 18 •  MySQLの管理ツール http://goo.gl/mTyMK
  • 19. Google App Engine for PHP •  WordPress •  記事一覧 •  記事詳細 •  記事の投稿 •  プラグイン •  スマートフォンからのアクセス デモ 19 http://goo.gl/mTyMK
  • 20. Google App Engine for PHP 20 既存アプリを動かす際の注意点
  • 21. Google App Engine •  GAE/PHPの制限 •  ローカルファイルシステムへの書き込み不可 •  代わりにCloud Storageに対して読み書きする •  PHPの標準的な方法でファイルのアップロード が不可 •  そのままでは「$_FILES」が使えない •  Cloud Storageに対してアップロードする •  ProcessやSystemを操作する関数は使用不可 •  PHPの拡張モジュールを追加できない 既存アプリを動かす際の注意点 21 http://goo.gl/mTyMK
  • 22. Google App Engine for PHP 1.  ファイルシステムに対するI/O 2.  ファイルアップロード機能 3.  ログ出力 4.  セッション管理 5.  メール送信 6.  必要な拡張モジュール 既存アプリを動かす際の注意点 22 http://goo.gl/mTyMK
  • 23. Google App Engine for PHP •  基本的にはPathをCloud StorageのPathに変更すれば PHP標準の関数でファイルを読み書きできる •  Cloud StorageのPathに対する操作はPHPのStream Wrapperを使って処理している •  ディレクトリに対する操作の挙動が怪しい (Issue 9368) •  ディレクトリの存在チェック •  ディレクトリ作成 •  既存コードが特定の関数を使っていると問題になる •  realpath (Stream Wrapperがサポートしていない関数) ファイルシステムに対するI/Oの補足 23 http://goo.gl/mTyMK
  • 24. Google App Engine for PHP •  標準のmail関数を使えない模様 •  The function ‘mail’ is not implemented. というエラーになる •  WordPressプラグインでは以下の方法 メール送信についての補足 24 require_once 'google/appengine/api/mail/Message.php'; use googleappengineapimailMessage; // App EngineのMailService用クラスを使用する $mail = new Message(); // 現状Fromの表示名をサポートしていないらしい。(WordPress Pluginのコメントより) //$mail->setSender(' Ryo Yamasaki <eins@vier.jp>'); $mail->setSender( 'eins@vier.jp’ ); $mail->addTo( ’test@vier.jp’ ); $mail->setSubject( 'Test Subject' ); $mail->setTextBody( 'Test Message' ); // 送信 $mail->send(); http://goo.gl/mTyMK
  • 25. Google App Engine for PHP 25 GAE/PHPで使えるフレームワーク
  • 26. Google App Engine for PHP 1.  一時ファイルをGAEのファイルシステム に書き込まない 2.  ログ出力はsyslog関数を使う GAE/PHP上で動かすフレームワークの条件 26 http://goo.gl/mTyMK
  • 27. Google App Engine for PHP •  デフォルトはアプリ内のtmpディレクトリにいろいろ書き込む Cake/PHPを試してみた 27 •  それが原因でエラーになる •  tmpディレクトリを CloudStorageにしてもダメ http://goo.gl/mTyMK
  • 28. Google App Engine for PHP •  CakePHPにはI/Oの対象を切り替える仕組みがある 1.  一時データの格納先をAPCかMemcacheに変更 2.  ログ出力をsyslog関数に変更 (CakePHP 2.4に含まれている) 3.  Sessionの格納先をCloud SQLに変更 Cake/PHPの設定を変更する 28 ※詳細は長くなるのでブログで http://goo.gl/mTyMK
  • 29. Google App Engine for PHP •  CakeEmail標準のコードでは送信不可 •  送信部分の処理だけMailServiceを使うクラス (Transport)を作成してそれに切り替えることで一応送 信可能 •  アプリ内に含まれる静的なファイルは添付可能 •  Cloud Storage上のファイルを添付するにはCakeEmail 本体の修正が必要になりそう (前述のrealpath関数が原因)   Cake/Emailも試してみた 29 http://goo.gl/mTyMK
  • 30. Google App Engine for PHP 1.  「一覧・登録・編集・削除」を行うシンプルなCRUD処理   2.  GAEのUserServiceを使った認証処理 3.  投稿者と管理ユーザーのみが編集・削除可能 Cake/PHP の動作デモ 30 http://cake2.vier-test.appspot.com/
  • 31. Google App Engine for PHP •  ポータビリティ •  既存アプリがそこそこ動く •  フレームワークも物によっては動くっぽい •  一部機能が透過的に動くようになればさらに良い •  ファイルのダイレクトアップロード •  Cloud Storageに対するファイル・ディレクトリ操作 •  メール送信 •  スケーラビリティ •  他の言語同様にDatastoreを使えるとさらに良い まとめ 31 http://goo.gl/mTyMK
  • 32. Google App Engine •  Google App Engine for PHP Limited Preview申し込みサイト •  https://gaeforphp.appspot.com/ •  Google App Engine for PHP 公式ドキュメント •  https://developers.google.com/appengine/docs/php/ •  PHP IDE :: JetBrains PhpStorm •  http://www.jetbrains.com/phpstorm/ •  Getting Started with PhpStorm as Google App Engine PHP IDE •  http://goo.gl/1pOS6 •  WordPress › 日本語 •  http://ja.wordpress.org/ •  WordPress › Google App Engine for WordPress « WordPress Plugins •  http://wordpress.org/plugins/google-app-engine/ •  Google Cloud Datastore 公式ドキュメント •  https://developers.google.com/datastore/docs/overview 32 関連URL
  • 33. Google App Engine •  27.Google I/Oで発表されたCloud Platformの新機能 •  http://blog.vier.jp/2013/05/google-iogoogle-cloud-platform.html •  28.Google App Engine for PHP (GAE/PHP) を早速試してみた •  http://blog.vier.jp/2013/05/google-app-engine-for-php-gaephp.html •  29.Google App Engine for PHPで WordPress を動かしてみた •  http://blog.vier.jp/2013/05/29google-app-engine-for-phpwordpress.html •  30.Google App Engine for PHPにおけるポータビリティを考える •  http://blog.vier.jp/2013/05/30google-app-engine-for-php.html •  36.Google App Engine for PHPで WordPress を運用するためのプラグイン •  http://blog.vier.jp/2013/06/37google-app-engine-for-phpwordpress.html •  39.Google App Engine for PHP で CakePHP を動かしてみた •  http://blog.vier.jp/2013/07/39google-app-engine-for-phpcakephp.html •  33.Google Cloud Datastoreを試してみた 概要編 (1/3) •  http://blog.vier.jp/2013/06/33google-cloud-datastore-13.html 33 関連ブログURL