Google App Engine for Python 6アプ目
■ このスレッドは過去ログ倉庫に格納されています
日本語書籍
Google App Engine for Java [実践]クラウドシステム構築 (WEB+DB PRESS plus) (WEB+DB PRESSプラスシリーズ) (WEB+DB PRESS plusシリーズ)
http://www.amazon.co.jp/dp/4774139858/
Google App Engineプログラミング入門
http://www.amazon.co.jp/dp/4048676938/
Google App Engine 実践リファレンス
http://www.amazon.co.jp/dp/4774141275/
入門 Google App Engine for Java
http://www.amazon.co.jpdp/479802452X/
新人プログラマのためのGoogle App Engineクラウド・アプリケーション開発講座―JAVA PYTHON対応
http://www.amazon.co.jp/dp/4899772483/ 最近の人気エントリ
Google APP Engine Python入門(2010年2月版)
ttp://d.hatena.ne.jp/kagigotonet/20100209/1265726225
> Google APP Engineについては初期のころのまとめはあるのですが、Pythonですとリリースからそろそろ2年近くになり内容も大きく様変わりしています。
> 最速マスターシリーズでもGoogle APP Engineについてのまとめが無く、そろそろアップデートの必要があると思いまとめてみました。
> 基本的にwindows環境中心です。
Google App Engineを使って無料でサイトを立ち上げる方法
http://techblog.ecstudio.jp/tech-tips/freewebsite-with-google-app-engine.html
> このGoogle App Engine(以下 GAE)、アプリケーション開発だけでしか使えないと思われがちなのですが、実は設定を工夫すれば通常のHTMLによるサイトを作って運用することも可能です。
> 多少初期設定の手順は複雑ですが、このスペックのサーバーを無料で使用出来ることを考えれば試してみる価値はあるのではないかと思います。
> Webサイトを立ち上げるまでの手順をまとめてみましたので、公開したいと思います。
【特集】Google App Engineで開発するためのフレームワーク × 16 + α
http://coolcoding.com/2010/01/frameworks_for_gae/
> いざGAEで開発をはじめるとしても、素のままで書き始める必要はありません。
> すでに多様なフレームワークが提供されており、そうしたフレームワークを活用することでより素早くGAE上での開発ができるようになります。
> 今回はGAEで開発を行う際にチェックしたいフレームワークを紹介したいと思います。
Google App Engineで開発するスケールするアプリケーション(前編)
http://codezine.jp/article/detail/4591
> 本稿の前編では、主にGoogle App Engineの概要と特徴、そしてWebシステムをスケールするための手法、考え方について説明します。
> 中編・後編では、Google App Engine上で動作する、twitterと連携したアプリケーションを紹介し、Google App Engine上でのアプリケーション構築方法について説明します。 続き
約半月で 4,000,000PV を華麗にさばく Google App Engine
http://www.1x1.jp/blog/2010/02/gae_twirate_sppspot_com.html
> このサイトはGoogle App Engine(GAE)+Pythonで構築しているのですが、このアクセス数ならではのGAE上で体験できたことをざざっと書いていきます。
第1回 Google App Engine上でLL+RDBアプリを作ろう
http://www.atmarkit.co.jp/fcoding/articles/gaephp/01/gaephp01a.html
> Web アプリケーション開発者にとって、魅力的な環境に映るGoogle App Engineだが、データの永続化などで落とし穴が存在する。
> これまでの開発手法を変えずに使えないだろうか(編集部)
Life is beautiful: Google App Engine上のベスト・プラクティス、その1: Datastore
http://satoshi.blogs.com/life/2010/02/app_engine.html
> Google App Engine上でアプリを作りはじめて約二ヶ月。いろいろと分かって来たこともあるので、自分へのメモも含めてまとめてみる。
> まずは、Datastore の話から。
GoogleAppEngine + JRubyでクリスマスまでに彼女をつくる方法
http://tech.kayac.com/archive/gae-jruby-twitter-bot.html
> というわけで彼女を作ってみました。...まさに僕だけのボット彼女です。
> 今回はこれをGoogleAppEngine+JRubyで実装したので、環境をつくるところか実際に動かすところまで説明します。
Google App Engineで独自ドメインを使う
http://www.1x1.jp/blog/2010/01/google_app_engine_my_domain.html
> GAEに設置したアプリケーションはデフォルトでは、[アプリケーションID + .appspot.com]というドメインでアクセスすることができます。
> また、これとは別に独自ドメインをアプリケーションに割り当てることもできます。
> 独自ドメインを割り当てる方法は知っていないと嵌りやすいので手順を書いておきます。 その他
Python基礎文法最速マスター
http://d.hatena.ne.jp/dplusplus/20100126#p1
> ↓に便乗してPython版も書いてみました。
appengine ja night #6
http://atnd.org/events/3228
> Google App Engine (Python/Java)の勉強会です。利用者同士で実践的ノウハウを共有しましょう!
Python Hack-a-thon #4
http://atnd.org/events/2906
> 予定は未定です。日程も未定です。定員も未定です。
Python東海・Ruby東海 合同勉強会
http://atnd.org/events/3204
> PythonとRuby言語について理解を深めるのと同時にお互いの勉強会の交流のために合同勉強会を開催します。
■推奨フレームワーク
kay 圭
http://code.google.com/p/kay-framework/
日本語ドキュメント
http://kay-docs-jp.shehas.net/index.html
あとKayにバンドルしているWerkzeugのデバッガはけっこう使いやすいですよ。使い方なんかはこのあたりを見てください
http://kay-docs-jp.shehas.net/debugging.html
Google App Engineプログラミング入門 (kay の解説本)
http://www.amazon.co.jp/dp/4048676938 サーバー側コーディング不要のGoogle App Engine開発環境「jsonengine」(2/2):CodeZine
http://codezine.jp/article/detail/5690?p=2
もうPythonのマイクロフレームワーク「Flask」でもApp EngineのTwitter Botは15行じゃ書けない -
http://d.hatena.ne.jp/ambasa/20110317/p1
FlaskならApp EngineのTwitter Botが15行で書ける ? TRIVIAL TECHNOLOGIES 2.0
http://coreblog.org/ats/making-app-engine-twitter-bot-in-15-lines-by-using-Flask
microneを使ったらApp EngineのTwitter botが14行で書けた |TRIVIAL TECHNOLOGIES on CLOUD
http://coreblog.org/ats/writing-app-engine-twitter-bot-in-14-limes-with-aha-microne
gaesynkit - Google App Engine Datastore/Client Storage Synchronization
ttp://www.reddit.com/r/AppEngine/comments/gspqf/gaesynkit_google_app_engine_datastoreclient/ ■事例紹介
サービス | 株式会社CA Beat
http://www.cabeat.co.jp/service
海外展開も好調なアプリボット、Google App Engineによってインフラを考えずに済む開発体制に
http://www.gamebusiness.jp/article.php?id=7253
Developer Insights: Building scalable social games on App Engine(15,000over/sec Query = 1億/day!!)
http://googleappengine.blogspot.jp/2012/10/building-scalable-social-games-on-app_18.html
事例は、最近ので良いのがあったら教えて ■紹介・Tips
01.Google App Engine 最近の動向
http://ameblo.jp/cabeat-e/entry-11394475313.html
03.Google App Engineで独自ドメイン&SSL(1/2)
http://ameblo.jp/cabeat-e/entry-11395844646.html
06.Google App Engineのデータストア バックアップとリストア
http://ameblo.jp/cabeat-e/entry-11396018265.html
「作ればわかる! Google App Engine for Java プログラミング」本をPythonで書いてみる (1)
http://d.hatena.ne.jp/thinkAmi/20120819/1345357405
Google App EngineのTwitter BotをFlaskとTweepyで作る
http://d.hatena.ne.jp/emergent/20120422/1335076686
Google App EngineのdatastoreをMaster/SlaveからHRDに変更するには?という記事を書こうと思ったんですが…
http://d.hatena.ne.jp/furyu-tei/20120909/1347130062
こんなとこかな
フレームワークの紹介とか要る? サービス開始から結構時間経ってて
古い情報を元に始めると損する場合が結構あるから
まずこの記事ぐらいはざっと眺めた方が良い
01.Google App Engine 最近の動向|CA Beat エンジニアのブログ
http://ameblo.jp/cabeat-e/entry-11394475313.html
無料で使える!ってだけで群がった当初の情報だと
Hello World程度の浅い紹介とかしか無いけど
アプリケーションやサービスにどう適用するのかが本題
色々揃ってきてようやくライブラリやノウハウも出てきた
HRDの理解とDatastoreのバックアップ・リストア
Warmup等含めたインスタンスの管理
極力Queryを減らすKey志向の設計
memcache, Frontend Cacheによるキャッシュコントロール
辺りは押さえとくべき
NDBは使いやすいし自然とキー志向になるし
自動キャッシュがとてもありがたく
DBで微妙だったプロパティとか整理されてるんでおすすめ NDBは辞めちゃったけどGvR謹製だし
StructuredProperty, JsonProperty, PicklePropertyとか
楽できるプロパティが嬉しい
Searchは今後Appengineで欠かせないサービスになる
早めにインデックスやドキュメントの管理と
使いどころを把握しとくと良い
まだ価格が公開されてない上日本語対応は微妙だけど
DatastoreのQueryで困るケースが色々解決できる
Geo検索もできるし モバイルAdSenseをどうにかPythonに埋め込む方法は無いですかね? その問題クリティカルすぎないか?
mobile adsense使えないとマネタイズ成り立たないサービスには使えないじゃないか… 色々ググったら英語の資料に
「独自ドメインじゃないとカウントされない」
とあったが本当かね?
appspot.comはgoogle管理だからカウント除外されるのか
(売上に含めちゃったら面倒だから?) 誰か独自ドメインでmobile adsenseを正常動作出来てる人いる? 前スレのスレッドセーフの件は誰も触れてないけど
このスレには分かる人いないのか 言いだしっぺの法則
君が全力で調べてその調査結果を是非世に公表してくれたまえ いや俺も全然わかんなくて気になってるのよ
スレッドセーフなプログラムになってないと
事故が起こるかもよ?っぽいんだけど
どうやったらスレッドセーフにできるのかとか
どういう時どういう書き方したらいいのかとか
探したんだけどさっぱりわからん 日本語の情報が無いってことは
調べている人自体が少ないのだろう
◯◯を調べたけど◯◯がわからない、的な情報でもいいから
誰かがどこかにblogか何かで書いていくしかないね 日進月歩でグーグル側が更新しちゃうから追いつかないんだよな
linux関係でググるといまだに古い資料が出てきちゃう現象 俺の調べたThreadsafeに関係ありそうなこと
・マルチスレッドプログラミングでの最大の問題点は
スレッド間で誤って同じデータを触ってしまうこと
・Pythonはそもそもグローバルインタープリタロック(GIL)という仕組みで
インタプリタでは同時に複数のスレッドが動かない
・GAEのThreadsafeはインスタンスを有効活用するためのもの
(単一のインスタンスで複数のリクエストを捌ける?)
・わけがわからん
GILがあるから原則スレッドセーフというかマルチスレッドできない??
2.7環境だとGILが無くなった??
それともThreadingモジュールを使う場合だけ関係ある話??
たすけて プログラミング初心者ですが質問です
Pythonを利用してWebサイトを作りたいと思っています
必要なツールや知識は何がありますか?
Python、GAE、HTML←この3つの知識があれば作れますか?
足りない知識やツールなどがあれば教えて下さい フロントエンド向けキーワード:
HTML5
CSS3
SassとCompass(Scout)
jQuery
CofeeScript
バックエンド向けキーワード:
python2.7
webapp2
flask
その他(バージョン管理):
Mercurial または Git 普通にサーバー向け
クライアント向けって書いても良かったんじゃないかと フロントエンド向けキーワード: 追加
TypeScript
WebGL
backbone.js
node.js
バックエンド向けキーワード: 追加
node.js
wsgi
django
werkzeug SearchのGeoPoint試してるやついない? MapReduceの価格表が見当たらないんだけどどこにある? 今のGAEで可能なMapReduceは似非で
Quotaとかも用意されてない力技じゃなかったっけ? 普通のfrontend instancesとして課金されるのかな。
それともbackendsとして? Frontendじゃなかったっけ?
それ以外に当然Datastoreやその他の割り当ても使う 始めたばっかりなんだが
上げようとしたらアプリ固有のパスワード入れろって怒られて、そんなん設定したっけ?と思ったが、二段階認証のほうのアレねw
紛らわしい名前w
あ、もし公式以外で良さげなサンプル集サイト知ってたら教えて下さい。 >>43
とりあえずgithubが鉄板
https://github.com/search?l=Python&p=1&q=appengine&ref=commandbar
https://github.com/search/advanced
からだったらスター数とかfork数で絞れるし
どのサンプルにせよ古いコードはフレームワーク周りが鬼門
ndb使ってるなら比較的最近だから判断材料になるね
ndb使ってるプロジェクトはリポジトリ検索だと探しにくいから
コード検索で"appengine ndb"とかやると良いよ >>44
ああ、なるほど!そこでのgithubなのか
名前は見かけるけど、プログラミング自体初心でgithub使ったこともなく、頭がそこまで回りませんでした
gae sampleとかで検索しても良いの出ないんで、普通はどうしてるのだろうと思ったら、そういうサイトを活用してるんですね!
仕様も結構変わってるみたいですもんねえ
色々と為になる助言ありがとうございます。 GAEのmapreduceはmapperで登録するkey value pairが
datastoreに記録されるの・・・・? Datastoreのindexedってどうしてる?
インデックスのみでクエリ行けるようにすべきなのか
なるべくインデックス作らずkey -> memcacheにすべきなのか
答えは無いだろうけど方針とかある? 俺は後者だな
ndb使ってるとkeyonlyからget_multi()で引っ張れば
キャッシュが自動で効いて手軽だし さすがにHRDに移行しようと思うんですが
リハーサルとかできますか?
ツールを使うと問答無用で移行してしまいますか?
ツールで移行したデータを削除して
最初からやり直すことはできますか? いつまでたってもApple Push Notoficaton 送れないし、Google Compute Engine使えないしマジなんなのこの糞サーバー この間Socketのクローズテスト募集してたから
Notificatonなり任意の接続もその内できそうだけどね GAEjaのフォーラムに痛いおっさんが赤っ恥な投稿してんな
ろくに英語も読めないのにクレーム風の物言いとか凄い感覚だわ すごく基本的なこと質問します
課金は1週間ごとですよね?
メールの100通制限は最初の支払いが終われば解除されるとあるけど
1. 最初の支払いって課金有効にしてから一週間目?
2. もしその1週間の間に無料枠超過しなかったら支払い発生しないからずっと100通制限?
という二点がきになってます
というのもサービスを公開すると絶対に100通でおさまるわけがないし
メール配信以外では負荷がすくないのでテスト段階では無料枠に収まってるので
毎月最低$9は取られるはずだけどこれは月末まで待たないとダメ→メールの制限は月末までとれないだとマジ困るし
なにがなんだかもう 1.は多分そう
2.は超過云々じゃなく課金有効後一定時間経過だったはず
> Note: it may take 15-20 minutes for resource allocation changes to take effect.
そもそも毎月$9じゃなく毎週$2.1だよ
課金有効にした時点で毎週取られる
あくまで全部多分の話
金が絡むことをこんな場所できいちゃだめ
公式フォーラム行きなさいな そう言えば3月から月払い対応するって連絡もきてたな >>55
ありがとう
> Note: it may take 15-20 minutes for resource allocation changes to take effect.
は多分認証中ステータス?のことだと思う
https://developers.google.com/appengine/docs/quotas#Mail
ここに「100 messages daily until first charge cleared」ってあるから最初の引き落としだと思ったんだ
今5日たってるけどまだなので2日まってみる
あまりかかるようなら公式で聞いてみます ここ最近で読んだほうがよさそうな情報
appengine ja night #23 #ajn23 に行ってきました - @thorikiriのてょりっき
http://d.hatena.ne.jp/t-horikiri/20130123/1358958603
appengine ja night #23 が終わりました - スティルハウスの書庫
http://d.hatena.ne.jp/kazunori_279/20130209/1360394339
Blog @vierjp : Google App Engineパターン (appengine ja night #23)
http://blog.vier.jp/2013/02/google-app-engine-appengine-ja-night-23.html
老人Zの毎日更新ブログ Google App Engine Billing Migration Notice
http://peracola.blog90.fc2.com/blog-entry-1655.html
採用事例:ソーシャルイントロクイズ 『SongPop』
http://gae-p.blogspot.jp/2013/02/songpop.html
Google App Engineでデータストアに保存したエンティティーのキーを取得する方法 | Tech Booster
http://techbooster.org/gae/15069/#more-15069
今日のPython: Google App Engine のアップロードを2段階認証プロセスに対応させる
http://blog1.erp2py.com/2012/02/google-app-engine-2.html 最近GAE始めたばかりなので
offsetの事とか全然知らなかった
危ない危ない
その他の事はちょっと難しすぎて手に負えない感じだなあ GAEのページングは地味に苦労する
cursor使うと
|< |<< [1][2][3][4][5]…..[20][21][22] >>| >|
こういう飛ばし飛ばしページング出来ないのがね
まぁ自分の経験上、ページングみるときに飛ばしながら見ることはないので
「次へ」と「戻る」だけでナビゲーションは事足りるんだけどね なんだ、調べてみると cursor はそういう仕様なのか・・・
アンチパターンだの書いてあったが限定的すぎるわ ああ、でも cursor 使わないと今度は
大量のデータのページングが行えないのか
どっちつかずだ 単純なトレードオフだと思うけどな
件数やページ指定必須のページングしたいなら
offsetでコスト高
TwitterやFacebookみたいに順次次のページが得られれば良いなら
cursor使ってコスト低
cursorがまだ無い頃に紹介されてた独自のcursor的設計とか
offsetとcursorを上手く組み合わせれば
もうちょっとバランスよくなるかも知れんが
結局使える範囲が狭くなるな >>66
自分で実装すればいいじゃん
適当な形態素解析ライブラリで検索対象の文章を分かち書きして
それをリストプロパティにぶっ込んでデータストアに保存(Create)
検索時(Read)は検索クエリを同様に形態素解析ライブラリで分かち書き
複数個の単語が帰ってくるから、それを元にリストプロパティから等価クエリ(=)で引っ張ってきてKeyリストを取得
得られたKeyリスト(複数)をAnd集合演算、最終結果のKeyリストをもとに
データストアから実態を取得でおk
Javaのほうだと実際にこれをやってる人何人かいる Google Cloud Endpointというのを使うと
サーバ側でコードをあまり書かずに
クライアント側で結構完結できてしまう
ということなのかな? >>67
全文検索の独自実装なんてとっくにやっとるのよ
それが高コストすぎるからSearch APIに期待してるわけで
Datastoreでアホみたいな高コスト要因になるクエリも
Searchなら多分そんなややこしいもんじゃない筈だしね
>>68
Endpointsはスマホアプリとかのバックエンドを
最低限のコードで実現できる仕組みだな
テスト版がJavaしかなくて残念だったけど
Pythonも対応したのでその内評価してみるわ どなたかアイデアいただけませんか。
以下の様な MyModel があったとします。
class MyModel(ndb.Model):
message = StringProperty()
date = ndb.DateTimeProperty(auto_now_add=True)
MyModel.message には None 状態のデータが入る事があり、
message 内文字列が存在する MyModel を取得するために
以下の様な記述を行なっています。
q = Model.query(Model.message > None)
ここで、更に MyModel にデータが登録された日付で検索を行う条件を加えたい所ですが
不等号による検索を行なっているため
date での order は不可状態。
よって、message を登録する際は文頭に 日付の時間を必ず追加するようにしています。
これで解決できてはいるのですが、もっとスマートな方法はないでしょうか。 >>70
booleanのnone_flagを新設
文字列がNoneだったらCreateやUpdate時にTrueを入れる
デフォルトはFalse
None以外のエンティティを取得したい時は
none_flag=Falseと日付orderを使う おれも質問
ずっとPHPでCakePHP使ってきたんだけど
PythonというかGAEではコマンドでひながた作ったり
モデルデータを自動で作ってくれるフレームワークってないの? 公式からダウンロードできるGAEランチャーの左下の+を押せばひな形出来る(GUI)
デプロイもワンクリック
ぶっちゃけCUIでダラダラコマンド入力するよりこっちのほうが楽でしょ
モデルデータは知らん web2py使ってたけどやめたわ。
全然標準でいける。 スレッドセーフで悩んでたやつは何でなやんでたんだ。
前スレみれないからわからんわ。 >>75
標準ってwebappのほう?
生産性的にはどうなんかね >>77
webappだな。
生産性はビューまわりは悪いな、やっぱ。
作るものによっては、ビューエンジンだけ、Djangoのとか使ったほうがいいかもな。
他は変なストレスがなくてよい。
データストアとかは、変にラップされたもの使うより、自分で実装したほうが精神衛生上よいし、
認証周りも、フレームワークで用意してくれてるごっついもの使うより、自分で1から実装したほうが、
フレームワーク独特の仕様でイライラするようなことはないな。
まぁGAEにかぎったことじゃないがな。webappはシンプルでいいよ。 >>76
どうやったらスレッドセーフなものが書けるの?
みたいな話だったと思う
俺の理解はこのスレの >>32 と変わんないから
もし知ってるならなんかヒントだけでもほしいよ
>>78
俺も同意
素直だけどGAE前提だから扱いやすいね
webappは2の方がいろいろ楽になってるから
英語しかないけど2使ったほうがいいな k = db.Key('Entity', 'test')
db.delete(k)
みたいにフェッチしないで削除したほうが、よけいなREAD発生せずにすむのかね? date型って、○月○日とか3日以内とかの条件で使えるのか?
年月日時間、別々で持った方がいいかなぁ。まぁじっくり設計して考えろって話だが。 試してみて結果報告を頼む
できない場合
dateを数値に変換したものを別に持たせとけば良さそう >>85
両方できる
ただ比較演算子を温存するために定点からの日数や年数を持たせておくといいと思う >>86
あぁ別で持つって手もあるのか。
なんか気づいたら報告する。
>>87
d
ほぅ。例えば日数だけで検索したい場合は、stringとかで持ってたほうが早いってことかな。 >>598
これを安全というか危険というか
今の放射能の議論は扱ってる数字は同じなので解釈問題になってしまってる dat2 = address2. all()
dat2.filter( "shikutyosonmei =",u '名古屋市千種区' )
dat2.order( "todofukenmei ")
dat2.order( "shikutyosonmei ")
dat2.order( "ooazatyotyome ")
ローカルではエラーが出ないがサーバーではエラー
dat2.get("ooazatyotyome","")
dat2.get("ooazatyotyome")
正解
dat2.ooazatyotyome
まえからそうだっけ? あ、ちがう
ローカルではエラーが出ないがサーバーではエラー
dat2[0].get("ooazatyotyome","")
dat2[0].get("ooazatyotyome")
正解
dat2[0].ooazatyotyome あれ 何が起こってるんだろ
今度はローカルで
AttributeError: 'dict' object has no attribute 'ooazatyotyome' あ、わかった
データが取れない所でDict入れてた
スレ汚しすみません ReferenceProperty持ってるエンティティ取得した時点で、
親エンティティの検索も発生しちゃうのか?
もしそうだとしたら、とりあえずキーだけ欲しくて条件によっては親エンティティも
取得したい場合は、ReferenceProperty使わないほうがいいのかね。 Appstatsなるものがあるのか。自分で調べるわ。 特定のGoogleアカウントにだけアクセスを許可するページってどうやって作るんですか?
以下のコードでそれっぽいことできたんですが、もっと良い方法ないですかね。
if users.user_id() == 'アクセスを許可したいGoogleアカウントのID':
<ページを表示>
else:
<403ページヘリダイレクト> ■ このスレッドは過去ログ倉庫に格納されています