2009-07-27
as4g - ATNDってメールサービスないから、Google App EngineでATNDサポートサービスを作っちゃいましたw
Python, Myサービス, Google App Engine | |
以前Google App EngineとPythonの勉強がてら中国語メーカーというのを作ったことがある。*1で、今回はデータベースも使って何か作りたいなと思ったので、こんなのを作ってみた。
取り急ぎ、ごめんなさい
Google App Engine上で動くのとは関係ないけど、Googleアカウントを使いたかったので、無い人は使えない。なので、無い人はGoogleサイトからアカウントを発行して利用してね。
やれることは?
ざっくりこんな感じ。
きっかけは?
まずは、作りたいということ。Pythonって楽しいからね。
でもなぜATNDをサポートするようなサービスなのかは、6月に開催された勉強会カンファレンス2009での出来事がきっかけ。勉強会カンファレンス2009に集まった人は全国各地からのべ約110人くらい。勉強会主宰に関心のある人や既に主宰している人、勉強会そのものに興味のある人など色々の人が集まった。で、そのイベントもATNDを使って募集をしていたのだけど、普通の勉強会と違ってみんな所属するグループがもともと違うから、連絡の仕様がなかったのだね。勉強会に参加したい人の多くはGoogleやはてなのグループに所属し、そのグループのMLで開催の知らせを知ったりするのが一番多いのではないかと思うが、最近ではATNDをRSSで読んで見つける人も多いと思う。勉強会カンファレンス2009の参加者がどのように知ったかはここでは解説しないけど、参加者に何かを伝えるということが難しかったみたい。それはやっぱりそうだと思う。メール機能無いんだもん。だから、何か知らせることがあれば、ATNDのコメント欄に内容を書いて、後は参加者が見つけて読んでくれるのを祈るだけ。例えば、補欠から参加者に繰り上がったことさえも通知してくれないから、当日ドタキャンしてしまうかもしれない。(いつかドタキャンをしないようにサポートするサービスを作ってもいいかもしれない。)要するにATND側から何か通知してくれたり、イベント管理者のお知らせを通知できればいいのでけど、その手段がない。小さかったり、GoogleグループMLで事足りたらこのサービスも必要ないけど、大きなイベントになって色々なところから人が集まると必要になるのかと思う。
画面キャプチャと操作の流れ
http://as4g-gae.appspot.com/ がトップになるので、これをアドレスバーに入力し、えいってやると、こんな画面が表示される
未ログインの場合は、次にログインまたはアカウントを作るGoogleサイトに誘導される(たぶん)
で、ログインすると最初のページがこれで、「サポートする」「関係を作成する」「関係を編集する」が選べる。
じゃまずはATNDのユーザと自分のGoogleアカウントを紐付ける作業をする。これをしないと、自分の参加しているATNDイベント宛てにメールが送られても、自分だけ届かなくなっちゃうから。
「関係を作成する」をクリックして、画面を表示しよう。
ATNDユーザのIDとメモ(これは何の用途なのか、自分の好きに登録できるフィールド)を入力してみよう。メモは任意だ。あと、ここにあるATNDユーザのIDは正直誰でもいい。特に制御していないので、本当は自分のじゃないけど、他人のIDを入れても登録は出来る。でも、その人の分までメールががんがんGmailに届くけど。
追加ボタンを押せば、登録完了画面に行って終わりだ。
お次は、作成した関係を変更したり、無効にしたりする作業だ。(無効にするだけなので、削除はしない。)
今まで、登録したATNDユーザのIDとの紐づきが一覧で表示されるか、一度も関係を作っていないなら、「紐付きがないよー」ってメッセージが出るはずだ。ここでできることは、無効にすることと、メモを変更することくらい。メモは適当なフィールドなので、好きに変更してもらっていいが、無効にチェックをいれると、そのATNDユーザが参加しているイベントから発せられたメールは届かなくなる。メールを受け付けたくないときに無効にしよう。で、更新ボタンを押して、完了画面だ。
これは関係の作成と同じで、メッセージがことなるだけ。(作成しましたか、更新しましたかの違い。)
で、最後に「サポートする」だけど、これは単なるメールサービスに近い。ただ宛て先をATNDイベントの参加者一覧(主宰は自動的に送信対象になる)から取得するだけ。だけど、ちょっと違うのが、ATNDユーザがこのサービスに紐付かれていることが送信対象となる条件である。なので、本サービスを利用していない利用者には当然届かないし、使っていても関係を作成していて且つ有効でなければ届かない。だから、サポートをする人が気をつけなければならないのが、送ったつもりになるということだ。実はだれも受信していない可能性もあるから。
画面の説明だけど、ATNDイベントのIDを入力して、件名、本文を入力すれば送信できる。別に件名や本文は必須じゃないから空もでいいけど、一応Alertが聞いてくる仕組みになっている。で、もうひとつ、ATNDイベントのIDを入力してフォーカスを外すと、念のためサポートしたいイベントかどうかを知るために、イベント名をAjaxで拾ってきて表示してくれる。これでご送信は免れるかと思う。
送信を押せば、対象者宛てにメールが届くはずだ。このときの送信者はもちろん自分のGmailになるから、変なことはばれてしまうから送信できないはず。
でも、メールの本文の長さは特に制御していないから、ロングな内容を入れられると落ちるのかも。
サポート完了画面は一応対象のATNDイベントのURLを表示しているので、その場で見ることができる。
ざっと、駆け足だったけど使い方の雰囲気はこんな感じ。
個人で作ったものなので、ちょっとおかしいところはところどころある。まだちゃんとテストもしていないので、とりあえずは自分の所属するGoogleグループ内で試験運用してみようかと。でも、使っちゃ駄目ってことは無いので、どしどし使ってください。
環境系
開発の環境を一応書いておく
- Python2.5
- Google App Engine(最新版)
- django(これはGAE内部で提供されているテンプレート部分のみ利用)
- Google App Engineのデータストアー
- BeautifulSoup(これはATNDのXML解析に利用。かなり楽です!)
くらいだと思う。
変なところ。。。orz
直ぐ気づくと思うけど、画面が一発で表示されないときがある。F5を押したりして画面を再描画させれば表示するけど、なぜ?って感じ。
これがすごく気になって、画面が真っ白になるから、「えっ?」って思う。こうなったらとりあえずF5をお願いします!








