Hatena::ブログ(Diary)

335g memo Twitter

2011/08/21

FTU技術開発 〜 GAE main.py

今日何件ブログ更新する気なんだろww

ということで、今日はGAEアプリの中枢main.pyの中身について


main.pyの中身はこんな感じですね。

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util

class MainHandler(webapp.RequestHandler):
    def get(self):
        self.response.out.write('Hello world!')

def main():
    application = webapp.WSGIApplication([('/', MainHandler)], debug=True)
    util.run_wsgi_app(application)

if __name__ == '__main__':
    main()

うーん、なんか文字小さくない?まあ、ハイライトしないよりはマシですか。


確認するべき箇所は
4行目 class MainHandler(we ... っていうとこと
9行目 application = webapp.WSGIA ... っていう所

まず9行目。
webapp.WSGIApplicationの引数第1項目はリストになってます。

[('/', MainHandler)]

中身はタプル1つで、タプル内は

    • '/'
    • MainHandler

です。

まず '/' ですが、これはアドレスです。今、アプリ名はtestとします。
前回、FTU技術解説 〜 GoogleAppEngine - 335g memo でアプリがtestであれば
アドレスは ://test.appspot.com/ であると書きました。ここでの '/' は これを表します。
つまり、'/test' となっていれば ://test.appspot.com/test を意味します。

次の2項目はMainHandlerです。これは4行目のクラス名と同じです。
つまり、://test.appspot.com/ と MainHandler がここで紐付けられている事になります。

まとめると、

://test.appspot.com/ にアクセス → MainHandlerのgetメソッドを呼び出す → Hello worldと表示

という流れです。


という事はですね、処理毎にアドレスを変えて、その分だけClass作ってやるというわけです。
そして、先ほどのwebapp.WSGIApplicationの引数第1項目タプルにリスト追加していくわけです。
FTU的には、オンオフ情報を調べるときはこのアドレス、試合結果を取るときはこのアドレス、
という感じにしています。


あ、self.response.out.write()の部分でHello World表示しているのはいいですよね。
これはよく使うので一応確認を。

次回はJSONの説明にします。

FTU技術解説 〜 GoogleAppEngine

勉強しなきゃいけないんだけど、気分的に前向いてるんで書いてみます。

Google App Engine

Googleが運営するwebアプリケーションサーバでいいんでしょうか。
略称がGAE。ただし、GAEでググってもあまり情報は出てこないようです。


特徴は、

  • スケーラブル
  • ある程度まで無料
  • 使用言語は
    1. Java
    2. Python
    3. Go

という感じ。

以下に、何したか流れを書きますが、基本抜けてると思いますので、
適当に調べてください。

  • 使用言語の選択

自分の使用言語はObjective-Cのみだったので、まずは使用言語を選ぶとこから始まりました。
型定義とかあるみたいですし、どちらかといえばJavaの方がObjective-Cライクだとは思ったのですが、
LL言語を勉強してみたかったのでPythonを選択。(業務で使えるかもしれないってのもありましたが)

  • googleアカウント登録

次にやることといったらアカウント登録ですか。
基本、googleアカウントがあれば特に問題無し。

ちなみに私はMacユーザですので、Google App Engine SDK for PythonのMacOSXのやつを。
MacだとAppLancherも付いてくるし楽です。(Windowsでは無かったような気がします)

Googleアカウントでログインした状態でここにアクセスすると、appengineのページに飛ぶと思います。
すると、下に[Create Application]ボタンがあるのでそこからアプリケーションを作ります。
f:id:actionstar:20110821175104p:image
そこでは以下2つ入力します。

    • Application Identifier
    • Application Title

Identifierの方は後々アドレスに含まれることになるので、ユニークである必要があります。
そのため、使えるかどうかのチェックがあります。

作成できれば準備は半分終わりです。
次にローカル側の準備

  • Application Lancherの設定

Application Lancherを起動し、左下の +ボタンを押してローカル側にアプリを作ります。
f:id:actionstar:20110821174337p:image

ここではApplication NameとFolderの入力。
Nameは先ほど作ったアプリのIdentifierとそろえた方が手っ取り早いです。

そうしますと、Application Lancherの画面にアプリが作られているのがわかると思います。
先ほど入力した作成場所(Folder)にはディレクトリが1つできており、中には

    • app.yaml
    • index.yaml
    • main.py

ができているのがわかります。

基本的には、main.pyをいじってDeployする感じ。
Application Lancherの上側にDeployボタンがあるので、ApplicationLancherのアプリを選択してからDeployボタンを押してみます。
f:id:actionstar:20110821180448p:image

するとLogウィンドウが開いて、何やら怪しい挙動を示しますw。
しばらく待つと、最後にこんな感じのメッセージが出て完了。
f:id:actionstar:20110821175722p:image
異常がある場合、最後の数字が1になります。(意味はよくわかっていません)

ここまでできればアプリケーションを作ってアップロードまでが終わり。
最後に確認してみましょう。

  • Webアプリケーションの確認

googleでアプリを登録した際に、Identifierを入力しましたが、これがアドレスになります。
具体的には、

    • http://[ID].appspot.com/

上の[ID]の部分を適宜変えてください。
すると、Hello World文がブラウザに表示されると思います。表示してればおk。



長かったですが、基本はこんな感じ(だったはず)。
次回はmain.pyを説明していきます。

はまぞう 〜 商品紹介機能 を使ってみた

商品紹介機能らしいです。
はてな自体今日使い始めたので、初めて知ったのですが。

ということで、個人的オススメ本(思い出本)の紹介です。


詳解 Objective-C 2.0 改訂版

詳解 Objective-C 2.0 改訂版

まず始めがObjective-C全体の俯瞰説明本です。
熟読したというわけでも、全体を完璧に理解したというわけでも無いのですが、
あると助かります。

ちなみに、バージョン違いで買ってたら3冊にもなってしまいましたww

iPhone Core Audioプログラミング

iPhone Core Audioプログラミング

iOSに特化したCore Audio本です。
これも完璧に理解した訳ではありませんが、無いと厳しいです。
次回以降はオーディオ関係のアプリを考えているもので。

個人的には、iOS5を盛り込んで最新版を希望します。
何について追記希望かはNDAなので語れませんが、これ読んでる方ならわかりますよね〜w。

たのしいCocoaプログラミング[Leopard対応版]

たのしいCocoaプログラミング[Leopard対応版]

これは思い出の1冊。
これ読んでプログラムというものを始めたんです。
初めて作ったのが、MacmotoというDocomo着うた生成ソフト。
Windowsでは着もとというソフトがあったのですが、Macでは無かったので。
今では放置してますが...(苦笑)。



はまぞうってこんな感じなんですね。
意外に良い感じなので、ちょくちょく使ってみようかな。
ちなみに、アフィリエイトやってないのでココから買い物しても私には一銭も入ってきません。
気軽にお買い物くださいww。

FTU技術解説 〜 必要技術

目次を書こうとも思ったのですが、後で気が変わるかもしれないのでやめておきます。

ただし最初でもあるので、全体の雰囲気や必要技術を挙げておきます。


用いたもの
  1. GAE with python 〜 Google App Engine (サーバ側処理)
  2. BeautifulSoup (スクレイピング用ライブラリ)
  3. ASIHTTPRequest (ネットワーク用ライブラリ)

といってもこれだけですね。ライブラリ様々♪
iOS基礎に関しては他をご覧ください。FTUでやっている事はUITabViewControllerを普通に使ってるだけですから。


全体の雰囲気(構図?)は以下のような感じです。

  • データをEAのサイトから抽出(スクレイピング) → GAE & BeautifulSoup
  • iOSからはGAEにアクセスしデータ抽出 → ASIHTTPRequest & GAE
  • クラブコメントはGAEで管理 → ASIHTTPRequest & GAE

これだけ見ればわかる人はOKなんでしょうね。
まあ、個人メモの意味が強いのでまあ良いのですが。

所詮初心者があがいて完成させたものですから、これが万全な方法というわけでは無いと思います。
アドバイス等あればいただきたいです。

FTU 〜 FIFA11クラブ Frientie Uniteメンバー専用アプリ

最近こんなん作ってました。
趣味アプリ FTU です。

FTU for iOS
View more presentations from 335g


PS3のサッカーゲームFIFA11では、オンラインのクラブに入団しチームを組む事ができるのですが、
このアプリはクラブ(FTU)メンバーに取って知りたい(と思われる)情報が確認できるアプリです。

できる事
  • 試合結果を確認
  • 相手クラブのポイントを確認 (ver1.1)
  • 相手クラブへのコメント
  • 自クラブメンバー オンオフ状況
  • 個人データの確認(試合数、得点数、アシスト数、...)
  • 試合ビデオ

今回は、というか次回以降ですが、アプリのプログラム内部解説をしようと思います。
プログラムを(本格的に)始めて早2年ぐらい(?)
初めてネットワークを絡めたアプリを作ったもので、一度きちんとした形にしてみようと思いました。

サンプルプログラムをgithub等にアップする事は予定していません。
ただし、このブログを読めば一連の流れが全て理解でき、プログラムを組めるように気をつけて書いていこうと思います。

ブログを始めてみました

前にもかすかにやってたのですが、気分一新はてなで。
不定期で個人用のメモ目的です。