Blogger で作ったブログの記事一覧を作成するプログラムを、まず Ruby で書き、次にそれを単純なフィルタをつなげたフィルタとして書き直し、さらにそれを Python で書き直した。すべてはこのプログラムを Google App Engine (以下、GAE) に載せるためにやったことだ。
Python はまだ勉強を始めたばかりなので、いまはまだ、たとえ短いプログラムだとしてもいきなり Python で書き始めることは難しい。まずは Ruby で書いて動くようにした上で、それを Python に書き直す、という段階を踏む必要があったのだ。
今回は、まずウェブアプリとしての概要を考えてみる。アプリ名は Blogger Glass になる予定(アプリ ID は bloggerglass)。予定というかすでに GAE の管理コンソールでアプリを作ってある。アプリ ID は先に決めておかないとメンドウだからね。
アプリのデザイン(意匠と設計)
外観
最初の版では iPhone や iPad 等のデバイスのことは考慮しない。まずは、Mac(や PC)で動くものに仕上げる。
外観はごくシンプル。ただ記事一覧のリストが出てくるだけ。Google の検索結果のような感じにしたい。というより、まんま Google をパクってみよう。つまり、(a) 1 ページに表示する項目数は制限しておき、(b) 記事数がそれを超えるなら複数ページに分割し、(c) 各ページの下部には後続ページへのリンクを置く。
Google に怒られたら、よくある「[1][2][3]...」という数字によるリンクに変えよう(いやまあ怒られなくても最終的には変えるつもりだ)。
iPhone/iPad 用では「Prev」「Next」ボタンによるナビゲーションになる。その場合、いま何ページが表示されているかをどうやってユーザにフィードバックするか。それは作ってみてから考えるよう。
リクエストの形式
いまのところアプリを構成する画面は 1 種類しかない。違いはリストが分割されている場合、リストのどのページを表示するか、という点だ。よって、リクエストの形式は 1 つで良いが、パラメータで表示するページを指定できなければならない。
http://bloggerglass.appspot.com/?page=10
リクエストに埋め込まれたパラメータは、GAE のリクエストハンドラでは以下のようにして読み取ることになる。上のリクエストでこのハンドラが呼び出されると、page
には 10
が代入される。また、default_value
を指定してあるので、パラメータなしでリクエストされたときは page
には 0
が代入される(ページは 0 から数えることにする)。
(リクエストハンドラのサンプル) 1: class MainHandler(webapp.RequestHandler): 2: def get(self): 3: page = int(self.request.get("page", default_value="0"))
ストレージは使わない方向でやってみる
前回の記事でも書いたように、最初のバージョン(プロトタイプというべきか)では取得したフィードのデータは使い捨てる。このため、リクエストごとに Blogger からフィードを取得することになる。さすがに毎回全記事分のデータを取得するのは無駄なので、ページ当たりの項目数を Blogger のフィードにデフォルトでふくまれている記事数(= 25)に一致させる。こうすれば、Blogger へのリクエスト時に start-index
として page * 25 + 1
を指定すれば、ちょうど必要な数の記事データを取得できる。
次回は?
デザイン(意匠と設計)はこれぐらいにして、次回はコードを書き始めよう。フィードの取得から HTML を生成する部分はすでにできているのだから、あとはページ自体の生成とページ間遷移の仕組みだけだ。まずはページを作るところから。GAE 標準で使えるテンプレートを使って作ってみたい。この程度のアプリには大袈裟だけど、何事も練習だからな。
参考文献
Oreilly & Associates Inc ( 2009-11-15 )
ISBN: 9780596522728
買ったのはこれの eBook 版。それも iPhone 用のアプリとして販売されているもの。アプリ版から ePub ファイルを取り出す方法はこちら(→ たった600円でオライリー本をiPadやKindleで読む。すてき。)を参照のこと。
0 件のコメント:
コメントを投稿