読者です 読者をやめる 読者になる 読者になる

Google App Engineでよくある質問

質問形式でとりあえずApp Engineの情報を整理しようと思います。

  • 開発時にローカルで登録したDatastoreのデータはどのようにすれば確認できますか?
    • http://localhost:8888/_ah/adminからDatastore Viewerにアクセスすればデータ内容の確認ができます。(いま[SDK1.3]は残念なことに編集はできません。)
      • また、/_ah/adminの管理コンソールからは実行中のTask Queue、XMPPやInbound Mailのテストが出来ます。
  • 開発中にローカルのDatastoreのデータを全て削除したいのですがどのようにすればいいですか?
    • war/WEB-INF/appengine-generated/local_db.binがDatastoreのデータファイルです。これを削除してlocal_db.binというファイル名で再作成すればデータが削除されます。
  • 開発中にローカルのDatastoreのデータが突然きえてしまいました。
    • App-ID(appengine-web.xmlのapplication値)を変更しませんでしたか?DatastoreのデータはApp-IDとひもづいています。App-IDを元に戻してみて下さい。
  • AppEngineではバージョン毎にDatastore(データベースの値)は異なるのですか?
    • バージョンが異なってもDatastoreの値は同じです。データを追加するテストなどは新たにApp-IDを取得するなどしましょう。
  • DataStoreを使わないアプリなら、バージョンを分ければいくつでもデプロイできる?
    • バージョンは10個まで作成可能です。また、バージョン番号は数字だけでなく"dev"など文字列も可能です。
  • JDOで開発しているとたまにClassNotPersistenceCapableExceptionが発生します。The class "The class "model.User" is not persistable. This means that it either hasnt been enhanced
    • JDOではコンパイル時にエンハンサーと呼ばれる処理が実行されます。この仕組みを使ってJDOは永続化処理を行います。その処理ができなかった場合に当該エラーが発生します。
  • http://localhost:8888/_ah/admin/でデータを確認したら値が『?????』になっている
    • ローカルの管理コンソールでは日本語が文字化けします。ローカルの管理コンソールは文字化けするのでログなどで確認しましょう。
  • ファイルのアップロード数に制限はありますか?
    • 以前は1000ファイルでしたが現在は3000ファイルです。
  • ログレベルの設定を変更しても反映されません。
    • ログの設定ファイルはwar\WEB-INF\appengine-web.xmlで指定されます。よくある間違いとしてEclipseのpluginで新規にWebアプリケーションプロジェクトを作成した場合にプロジェクトで使用されるloggingはwar\WEB-INF\logging.propertiesです。src\log4j.propertiesが自動で作成されていますが、これは設定されていませんので注意しましょう。
  • サーバにあるDatastoreのデータを削除したいのですがDropTableはできないのですか?
    • SQLを実行してデータを削除することはできません。削除するコードを書く必要があります。こちらを参照ください。
  • web.xmlでコメントを日本語入力したらエラーになりました。日本語は入力できないのでしょうか?
  • セッション変数を扱いたいです。(または、 Session support is not enabled in appengine-web.xml. To enable sessions, put trueというエラーが出ました。)
    • appengine-web.xmltrueを追加してください。
  • セッションを有効にしたらDataViewerに_ah_SESSIONというKindが作成されました。これはなんですか?
    • セッション情報はDatasotreに_ah_SESSIONというKindで保存されます。また、このデータは定期的に自分で削除する必要があります。削除方法はこちらを参考にして下さい。
  • サーバのログをローカルにダウンロードしたいのですができますか?
    • できます。詳しくはこちらを参考にして下さい。
  • XMLXPath解析したいのですができますか?
    • できます。詳しくはこちらを参考にして下さい。
  • TaskQueueでエラーが発生した場合にリトライされますが、リトライ回数やタスク名を取得することはできますか?
    • できます。詳しくはこちらを参考にして下さい。
  • Counterを作りたいのですが。。。
  • AppEngineでは最大1000件までしか取得できない制限がありますが、。。。
    • 現在のAppEngineでは最大1000件の制約はありません。
  • ローカルでメール送信のテストをしていたのですがメール送信されません。
    • ローカルでは実際のメール送信は行われません。ログで確認しましょう。
  • UserServiceFactory.getUserService().createLoginURL(uri)を使って認証した場合に出てくる認証画面の「○○ではログインに Google アカウントを使用します。」の○○はどこで設定すればいいですか?
    • 管理画面の[Application Settings]-[Application Title]から変更して下さい。
Message msg = new Message();
msg.setSender(fromAddress);
msg.setTo(toAddress);
msg.setSubject(subject);
msg.setTextBody(body);
MailServiceFactory.getMailService().send(msg);
  • 開発環境で他のPCから接続できません。
    • 開発サーバ起動用の実行構成のプログラム引数に 「--address 0.0.0.0」の値を設定することで自分のマシン以外からも自分のマシン上で起動したアプリケーションに接続することができます。
  • eclipseのAppEngineプラグインは開発サーバ起動時にSDKのバージョンが最新になっているかをチェックします。このチェックを外すことは出来ますか?
    • 開発サーバ起動用の実行構成のプログラム引数に「--disable_update_check」を設定する事でバージョンをチェックしないようにすることができます。

(随時追加/随時更新予定)

おすすめGoogle App Engine

Google App Engine for Java [実践]クラウドシステム構築 (WEB+DB PRESS plus) (WEB+DB PRESSプラスシリーズ) (WEB+DB PRESS plusシリーズ)

Google App Engine for Java [実践]クラウドシステム構築 (WEB+DB PRESS plus) (WEB+DB PRESSプラスシリーズ) (WEB+DB PRESS plusシリーズ)

  • 日本で始めてGoogle App Engineについて書かれた本。ちょっと今は情報が古くなってきてる


Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

  • GoogleBigtableについて知りたくなったらこちらです。※AppEngineのDatastoreについては書いてありません。


クラウド大全

クラウド大全

プログラミング Google App Engine

プログラミング Google App Engine

  • 遂に翻訳でました!

オープンソース徹底活用 Slim3 on Google App Engine for Java

オープンソース徹底活用 Slim3 on Google App Engine for Java

  • Datastoreを理解するために必読です。

すっきりわかるGoogle App Engine for Javaクラウドプログラミング

すっきりわかるGoogle App Engine for Javaクラウドプログラミング

  • 各種APIの説明やOpenIDでのログイン方法など網羅的に記載されている良書です。