Google App Engineの使い道、tiny web service
なんか多少つまらない話になる予定。
ブラウザのJavaScriptだけでCSV保存するの、できるといいとおもって、調べたけど、やっぱできないよね。Flashまで入れてもだめそう。Firefoxとか限定ならdataスキームでできそうだけどね。つまり、クロスブラウザ前提なら、何かサーバが必要。普通のWebアプリの開発はサーバプログラムがあるのが前提だからいいんだろうけど、今回はそうじゃない開発をやりたい。
何のことはない、CSVの文字列作るとこまではJSでできるから、あとはそれをtext/csvでechoして返してくれるサービスさえあれば終わりだ。そんなサービス、きっと探せばいろいろ落ちていそうだけど、普通に探したら見当たらなかったのと、あったとしてもサービスの継続性に疑問があるので、ちょっと作ってGoogle App Engineにのっけてみた。初python, 初google app engine はまあこんなもんでいい。
サーバ
http://echo-service.appspot.com/
http://echo-service.appspot.com/src/echo.py.txt
CSV保存してみる例(このサイトにはHTML+JSのみ)
http://stomita.sakura.ne.jp/lab/csvdownload/
データがインターネットを通っていくから、顧客情報のリストとか機密データのCSV保存については注意する必要がある。サーバ側でデータをストアしてる訳じゃないので通信路がSSLでさえあれば大丈夫かもしれないけど。Google App EngineはSSLに対応してないみたい。
ともあれ、Google App Engineのこういう使い方について。それ自体では何の役にも立たなさそうな、単機能のWebサービスをホストする、という使い方。ただし、いろいろなサービスから再利用できるようにする。
通常Webサービスが一般に公開されるためにはそれが公開によって何らかの利益をもたらすことが前提となっているとおもうけど(ボランティアもあるだろうけど継続性に難がある場合が多い)、コスト0のプラットフォームサービスがあればほぼそこに丸投げできるので、こんなようなそれだけで儲かるようなことはほぼないサービスみたいなのがいくつあっても構わない。Googleから見ても別にこのサービス程度が全体に影響するとも思えないし、そもそも全体に影響しないためのsandboxでなければならない。
もちろん、可用性に対する責任とか考えたら、自前のサービスでCGIをホストするのが当たり前、という意見は、確かに今はそうかもしれない。でも将来はそうじゃないかもしれない。
そういえばJSONP変換サービスをningにホスティングしていたこともあった。今はPipesがあるから特にいらない。ところでNingはどうしちゃうのだろうね、アメリカではSNSプラットフォームとして生きてるみたいだけど。当時はphpのホスティングサービスとしてしか使ってなかったのでちょっと申し訳ない感じ。