Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

appengine ja night #25 Google App Engine for PHP

15,349 views

Published on

appengine ja night #25で発表したGoogle App Engine for PHPのスライドです。
(後から書き直して追記した英語版の方がやや詳しいです)

・appengine ja night #25
http://googledevjp.blogspot.jp/2013/07/appengine-ja-night-25.html

- English Version
http://www.slideshare.net/vierjp/ja-night25-en

I rewrote in English.
And I added some contents which I spoke in the event to English version.
Therefore, the English version is written in more detail than Japanese version.

Published in: Technology
  • Be the first to comment

appengine ja night #25 Google App Engine for PHP

  1. 1. Google App Engine for PHP appengine ja night #25 Ryo Yamasaki @vierjp 1 http://goo.gl/mTyMK
  2. 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. 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. 4. Google App Engine for PHP 4 概要
  5. 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. 6. Google App Engine •  制限 •  ローカルファイルシステムへのアクセス不可 •  代わりにCloud Storageに対して読み書きする •  PHPの標準的な方法でファイルのダイレクト アップロードが不可 •  そのままでは「$_FILES」が使えない •  Cloud Storageに対してアップロードする •  ProcessやSystemを操作する関数は使用不可 •  PHPの拡張モジュールを追加できない •  まだ使えないApp Engineのサービスがある 概要 6 http://goo.gl/mTyMK
  7. 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. 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. 9. Google App Engine for PHP 9 GAE/PHPで使えるIDE http://goo.gl/mTyMK
  10. 10. Google App Engine for PHP •  PHP開発者に人気のPHP用IDE •  GAE/PHPに対応 •  IDE上でデバッグ・デプロイが可能 •  1ヶ月は無料で利用可能 PhpStorm 10 http://goo.gl/mTyMK
  11. 11. Google App Engine for PHP PhpStorm デバッグ 11 http://goo.gl/mTyMK
  12. 12. Google App Engine for PHP PhpStorm デプロイ 12 http://goo.gl/mTyMK
  13. 13. Google App Engine for PHP 13 既存アプリを動かしてみた
  14. 14. Google App Engine phpinfo 14 •  PHPの環境情報を表示 •  サーバー設定 •  拡張モジュール http://phpinfo.vier-test.appspot.com/
  15. 15. Google App Engine Word Press Ver.3.5.1 日本語版 15 http://vier-test.appspot.com/ •  日本語の投稿・表示は問題なし •  専用プラグインが公開されてい る
  16. 16. Google App Engine for PHP •  ファイルのアップロードが可能になる •  メールの送信が可能になる •  問題のあった一部のUIが修正される Google公式の GAE/PHP向けWordPressプラグイン 16 http://goo.gl/mTyMK
  17. 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. 18. Google App Engine phpMyAdmin Ver.4.0.3 18 •  MySQLの管理ツール http://goo.gl/mTyMK
  19. 19. Google App Engine for PHP •  WordPress •  記事一覧 •  記事詳細 •  記事の投稿 •  プラグイン •  スマートフォンからのアクセス デモ 19 http://goo.gl/mTyMK
  20. 20. Google App Engine for PHP 20 既存アプリを動かす際の注意点
  21. 21. Google App Engine •  GAE/PHPの制限 •  ローカルファイルシステムへの書き込み不可 •  代わりにCloud Storageに対して読み書きする •  PHPの標準的な方法でファイルのアップロード が不可 •  そのままでは「$_FILES」が使えない •  Cloud Storageに対してアップロードする •  ProcessやSystemを操作する関数は使用不可 •  PHPの拡張モジュールを追加できない 既存アプリを動かす際の注意点 21 http://goo.gl/mTyMK
  22. 22. Google App Engine for PHP 1.  ファイルシステムに対するI/O 2.  ファイルアップロード機能 3.  ログ出力 4.  セッション管理 5.  メール送信 6.  必要な拡張モジュール 既存アプリを動かす際の注意点 22 http://goo.gl/mTyMK
  23. 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. 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. 25. Google App Engine for PHP 25 GAE/PHPで使えるフレームワーク
  26. 26. Google App Engine for PHP 1.  一時ファイルをGAEのファイルシステム に書き込まない 2.  ログ出力はsyslog関数を使う GAE/PHP上で動かすフレームワークの条件 26 http://goo.gl/mTyMK
  27. 27. Google App Engine for PHP •  デフォルトはアプリ内のtmpディレクトリにいろいろ書き込む Cake/PHPを試してみた 27 •  それが原因でエラーになる •  tmpディレクトリを CloudStorageにしてもダメ http://goo.gl/mTyMK
  28. 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. 29. Google App Engine for PHP •  CakeEmail標準のコードでは送信不可 •  送信部分の処理だけMailServiceを使うクラス (Transport)を作成してそれに切り替えることで一応送 信可能 •  アプリ内に含まれる静的なファイルは添付可能 •  Cloud Storage上のファイルを添付するにはCakeEmail 本体の修正が必要になりそう (前述のrealpath関数が原因)   Cake/Emailも試してみた 29 http://goo.gl/mTyMK
  30. 30. Google App Engine for PHP 1.  「一覧・登録・編集・削除」を行うシンプルなCRUD処理   2.  GAEのUserServiceを使った認証処理 3.  投稿者と管理ユーザーのみが編集・削除可能 Cake/PHP の動作デモ 30 http://cake2.vier-test.appspot.com/
  31. 31. Google App Engine for PHP •  ポータビリティ •  既存アプリがそこそこ動く •  フレームワークも物によっては動くっぽい •  一部機能が透過的に動くようになればさらに良い •  ファイルのダイレクトアップロード •  Cloud Storageに対するファイル・ディレクトリ操作 •  メール送信 •  スケーラビリティ •  他の言語同様にDatastoreを使えるとさらに良い まとめ 31 http://goo.gl/mTyMK
  32. 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. 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
  34. 34. ご清聴ありがとうございました @vierjp http://blog.vier.jp/ Google App Engine for PHP

×