Python を使って twitter クライアントをつくってみる。

ことの発端は twitter クライアント tween の画面をみなみさんにみせてもらったことだった。 それはタスクトレイに常駐して、新着メッセージがあるとバルーンが表示されていた。 うらやましくおもったが、ぼくの PC は Linux だった。 Linux で tween は動かなかった・・・。

てなことで、ないものはつくる精神。 ひろまさはバルーン好きだった。

notify00

これね。 なんかにょーんってでてくるのが好きです。(XP ツアーはいらないが・・・)

で、Linux でもアップデートマネージャとかで同じようなバルーンがでてきていたので、ツールキットとして存在していることは分かっていました。

実は何を隠そう、バルーンできる Linux 向け twitter クライアントは既にいくつかありまして、

TwitterNotifier: バルーンで更新を通知するTwitterクライアント

アイコン付きバルーン(notification)としてユーザーに更新を通知するタイプのTwitterクライアントです.

こちらは、そのまんまOK。

SimpleTwitterScreenlet GNOME-Look.org

A Simple Twitter Screenlet for posting and checking for messages.

デスクトップガジェットの screenlets にもあって、こちらも notify 表示ができます。

TwitterNotifier さんをありがたく使わせていただけばよいのですが、ちょっと表示のイメージが違うのと、あとクライアントは IM (Jabber) 経由でとろうと思っていて、その修正するのがちょっと難しそうだったので(待ちうけスレッド立てなきゃいけない)、今回はソースの参考用にさせてもらっています。(ありがとうございます)

したの SimpleTwitterScreenlet は、(あとで気がついたのですが)日本ロケールで動かすとメッセージ notify が動作しません。 strptime という関数が ja_JP UTF-8 ロケールで動かすと、解釈を日本の月名とか曜日でしてしまいおちてしまうようです。

clear = (None , None)
locale.setlocale(locale.LC_ALL, clear)

とか先頭にいれておくと動くかもです。

さて、何を隠そうぼくは Python 言語も GTK ツールキットもまったくわかりません。。 Python というのはいわゆるスクリプト言語。 GTK というのは、主に Linux などでウインドウを描くためのライブラリです。

何はなくても公式ドキュメント。

Python 2.4 ドキュメント – June 27, 2006

チュートリアル (ここから読み始めてください

Python から GTK を呼ぶには PyGTK というのを使えばよいようです。

satolog: PyGTK と Glade を使った GUI の作り方

Tkinter を使って GUI の作成をしてきて、それはとても簡単にできたんだけど、Tkinter が僕のコードと GUI をリンクするやりかたに不満があって、他のツールキットを使って GUI を作ることを検討することにした。いろんなオプションを調べた後、僕は PyGTKGlade を使うことに決めた。

PyGTK 2.0 Reference Manual

This reference describes the classes of the Python PyGTK module.

・・・。 よし。(←なにがよしだ

Python はまったくわからないので、Python を Python らしくつかうことなぞ、到底できませんが、、動かすくらいはできるでしょう。 スクリプト言語ってことは JavaScript みたいなもんでしょ。(←相当誤った解釈

で、いろいろライブラリなどをあつめ、かくと同時に言語仕様につまるなどし、試行錯誤。。 実行。 ぴ。

notify01

ぎゃー。

ですぎ(笑)

もうちょっといじって。。 あぁ、ひさしぶりに GUI のツールキットさわるね、などと思いつつ、部品が visible になるまえにイベントが発生してうまくでないとか、「懐かしいなぁ」などとおもいつつ・・・。

ぴ。

notify02

うむ、満足。 🙂

ほんとは API でなく Jabber 経由でひろいたいので、あとは IM が復活して dsub の差し替えをすればいけるはずなのですが、はたして。。

さて、今では普通なんでしょうけど、スクリプト言語で GUI つくれるのは、なかなか不思議な感覚をうけます。 gtk.main() でイベントループするんだーみたいな。そりゃそーなんですが。

ちなみに、PHP も GTK とのバインディングがあるのでやればできるみたいですね。

PHP-GTK

PHP-GTK is an extension for the PHP programming language that implements language bindings for GTK+. It provides an object-oriented interface to GTK+ classes and functions and greatly simplifies writing client-side cross-platform GUI applications.

GTK は Glade というライブラリをつかうと、XML により GUI コンポーネント定義と、イベントシグナル定義ができて、プログラムから簡単に扱えるようです。

notify03

Glade 用のデザイナーもあります。

今回、自分でかいたのは 100ステップ未満。 もちろん多彩なライブラリのおかげもありますが、こんだけで twitter の GUI がつくれてしまうのは、お手軽感が非常に高いです。

プログラミングって結構楽しいですが、いま全盛の Web におけるプログラミングというのは、あるいみ敷居が高くて、言語自体の仕様のほかに、HTTP ネットワーク、HTML の構造とか、周辺環境の知識とか言語自体にも覚えなければいけないことがたくさんあります。

しかも、Webプログラミングは、方式の目的外使用して無理やりやっている事柄も多くみられることから、とっかかりの難易度としては高いような気もします。 クライアントアプリケーションから、クラサバになって、Web になってとか順をおってやっていると大して難しくないのですが、いきなり Web ってなるとなかなか。 いつもどこから説明していいか分からなくなります(笑)

てなわけで、5行くらいのコードで、画面に GUI をだせちゃったりする Python + GTK はプログラミングの勉強環境としてはよいかなと、ふと思ったりもしました。 最初はなんか派手に画面でたほうが面白いもんね。 🙂

ちなみに、この環境は Windows でもちゃんと動くようです。 サンプルうごかして、ソース見るだけでも楽しいかもですヨ!

このエントリーをはてなブックマークに追加
  • moblin011.png
    Moblin 2.1 の研究
    アプリ, Moblin, UI, ネット, 起動, ブック, ベース, 画面, Linux, 対応, コンピュータ, データ, ブラウザ, 動画, 縦列, Clutter, Fedora, GTK, IdeaPad, MID
  • mono03.png
    Linux で GUI アプリケーションをつくる
    GTK, Glide, Linux, XML, using, Mono, NET, mono, アプリ, コントロール, イベント, Develop, GUI, Glade, System, UNIX, バインディング, ライブラリ, 定義, 環境
  • geany05.png
    軽快なテキストエディタ Geany
    エディタ, テキスト, Geany, gedit, ぼく, 機能, Scintilla, 表示, Linux, Windows, grep, ソース, タブ, バージョン, ファイル, ワンショット, 日本語, 標準, 0.18, IDE
  • jface05.png
    マルチプラットフォームの GUI アプリケーション
    SWT, import, JFace, eclipse, org, jface, ApplicationWindow, GUI, window, Linux, Windows, public, Java, swt, Eclipse, File, GTK, JFaceSample, MenuManager, Override
  • dbview.png
    Firefox 禁止令と Eclipse のプラグイン
    Eclipse, イン, プラグ, Web, DBViewer, ER, 図, 起動, Amateras, Firefox, コンピュータ, 勉強, 可能, AmaterasERD, Java, PC, emacs, エディタ, クライアント, 禁止令

コメントを残す

メールアドレスが公開されることはありません。