2007-04-13

BloggerPost 0.1.5 Emacs UIの仮実装、更新PING機能などを実装

bloggerpost-0.1.5.tar.bz2

ずっとほったらかしのように見えるBloggerPostだが、実は、ちまちまと手を入れてはいるんだけど、なかなか完成しないので、いったん、ある程度動くようにして、出してみることにした。

んで、UIの実装だが、どうするか悩んだんだけど、

el4r 〜EmacsRubyで楽しいEmacsライフ〜

これを使ってEmacs上で実装することにした。もう一つ考えたのは、ruby-gtkを使ったGTK+の実装なんだけど、完全なGUIになると設定の半自動化とか面倒臭い割にあまり自分で使わない機能に手間が割かれそうだったので、Emacs UIにした。まあ、当初の目的が、Emacsでブログが書きたい、だったしね。

あと、情報の保存にQDBMを使用するので、これもインストールしなければならない。標準で付いてくるGDBMを使っても良かったのだけど、QDBMの方が速いというのと、Rubyの作者のまつもとさんがmorqでQDBM使ってるを見て真似した、というのもある。

el4rは、よくできていて、こいつのおかげでUI部分のコードはかなり短くなったと思う。autoloadもあるので、el4rを使ったパッケージのインストールも今まで通りsetup.rbだけでOK。しかし、まだまだバグや問題もあるのようで、BloggerPostの開発中にもいくつか遭遇した。報告したのもあるし、調査中のもある。今のところ回避コードを入れて対処している。

さて、実際のUIのつくりだが、基本的には、普通のメーラーの動作を参考にしている。もちろん、ブログ投稿ソフトなので、何も受信したりはしないが、過去に自分が投稿したエントリーをメーラーのように見られるようにしている。

まずは、ブログ一覧画面。

BloggerPost ブログ一覧画面

項目の一番左の文字列は、ブログ識別子。config.ymlで指定しているやつだ。ブログを指定するための文字列にもなっている。その右に件数、タイトル、URLの順に情報が並んでいる。一番上のdraftというのは下書きフォルダ。書きかけのエントリーはここに保存される。

次に、エントリー一覧画面。

BloggerPost エントリー一覧画面

ブログ一覧画面でブログを選択すると、この画面になる。赤字になっているのは、消されたエントリー。ブログ上では消されても、ローカルでは消されずに、ステータスが変わるだけ。編集して未送信の状態だと、カーキ色になる。この画面で、'e'を押せばエントリーの再編集、'D' を押せばエントリーの削除ができる。完成版では、ソートと検索の機能も実装予定。

Enterを押すと、エントリー画面。

BloggerPost エントリー画面

この画面は、あまり言うことがないのだが、タイトルがかぶっているのは、コマンドラインからの投稿の場合はh1要素でタイトルをつけるため。Emacsからの投稿の場合は、別のところにタイトルを書く。タイトルの指定の仕方は、コマンドラインでも変えると思う。今の状況はちょっと分かりづらい。

で、その編集画面。

BloggerPost 編集画面

見たとおりメーラーのように項目を埋めるだけなんだけど、ポイントは、BloggerPost側はマイナーモードで実装されているというところ。例えばRDなら、メジャーモードはrd-modeで、マイナーモードはbloggerpost-draft-modeになっている。こうすることで、エントリーを書くときに編集モードの機能を使えるようになっている。これは、howmを見てパクった。

スタイルはあらかじめdefaultstyleで指定しておく。すると、BloggerPost側で適切に編集モードを選択してくれる……はずなのだが、今のところ、RDしか実装していない。それぞれのスタイルでどの編集モードが適切なのか分からんしね。ユーザーに設定させるようにした方がいいのかもしれない。

送信は\C-c\C-c、破棄は\C-c\C-k。\C-x\C-sで保存できる。抜けたいときは、\C-c\C-z。この辺は、愛用のWanderlustを参考にしている。しかし、\C-c\C-zっていうバインドはちょっと嫌だね。\C-zって意外とキーバインドの激戦区なんだよね。本来のサスペンドが発動しても面倒臭いし。

全体的には、まだまだ未完成なので、今回はお披露目という感じかな。

あと、しばらく前の話なのだが、更新PINGの送信機能を実装した。これは、投稿したときに、weblogUpdates.pingというXML-RPCのメソッドを使ってURLを送るだけの単純な仕組みで、更新を通知するというもの。メジャーなブログサービスでは勝手に有名なところに送信するんだけど、Bloggerではweblogs.comにしか送信しないので、作ってみた。まあ、weblogs.comだけで、googleのブログ検索には登録されるので、普通の人はあんまりいらない機能かもしれない。

0 件のコメント: