Ubuntu Weekly Recipe

第187回 Ubuntuで使うTwitterクライアント(1)EmacsでTwitter

この記事を読むのに必要な時間:およそ 3 分

本連載第71回Twitterクライアント7種徹底レビューでは,Ubuntuで使えるTwitterクライアント7種類を紹介しました。しかしそれから2年以上が経過し,Twitterの仕様変更をはじめ,Twitterをとりまく状況は大きく変化しています。そこで今週のレシピは,昨今の事情にあわせた(?)Twitterクライアントとして,twittering-modeを紹介ます。

図1  twittering-modeの画面

図1  twittering-modeの画面

EmacsでTwitterを楽しもう

Twitterのようなテキストの読み書きといえば,当然Emacsの出番ですよね。EmacsでTwitterをする時の定番が,本連載73回でも軽く紹介したtwittering-modeでしょう。もちろん筆者も愛用しています。

twittering-modeをインストールするには,プロジェクトのページからリリース版のアーカイブを取得して展開するか,gitリポジトリから開発版をチェックアウトします。そうして得られるtwittering-mode.elを,ロードパスの通ったディレクトリに配置して,必要であればバイトコンパイルしてください。また,Ubuntu 11.10にはtwittering-modeパッケージが用意されていますので,apt-getなどからインストールすることが可能になります※1)⁠

twittering-mode.elがインストールできたら,.emacsに設定を追記しておきます。

gitをインストールしてリポジトリから開発版をチェックアウトする

$ sudo apt-get install git
$ git clone git://github.com/hayamiz/twittering-mode.git

Ubuntu 11.10ならば,パッケージからインストールができる

$ sudo apt-get install twittering-mode

.emacsに以下を追記する

(require 'twittering-mode nil t)
※1
ただし本稿執筆時点ではバージョン1.0.0+git20110327-1と,少々古いパッケージになっています。DebianのBTSには既にアップデートの要望が上がっておりメンテナであるTakayaさんも認識しておられるので,近いうちにアップデートされるでしょう。sidにパッケージが入り次第,筆者がUbuntuにsync requestする予定です。Syncが間に合えば,Ubuntu 11.10では2.0.0が使えるようになります。

OAuthを使った認証とトークンの保存

本連載73回では,.emacsにユーザ名とパスワードを記述して認証を行う方法を紹介しました。これはすべてのクライアントアプリに言えることですが,現在ではTwitterの仕様変更によりベーシック認証は使用することができません。そこで認証にはxAuthかOAuthを利用する必要があるのですが,xAuthを利用して認証を行なったクライアントアプリからは,ダイレクトメッセージ機能を利用することができなくなりました。そのため現実問題として,認証にはOAuthを利用するしかないでしょう。OAuthを利用するには,twittering-auth-methodにoauthを設定します※2)⁠

認証にOAuthを利用する

(setq twittering-auth-method 'oauth)

twittering-modeを起動すると,指定されたブラウザでアプリケーション認証用のページを開きます。ユーザ名とパスワードを入力すれば,認証用のPINコードが取得できます。取得したPINコードをミニバッファへ正しく入力して認証を完了してください。

さて,デフォルトのtwittering-modeは認証で得たトークンを保存しません。つまり再起動する度にブラウザを開いてOAuth認証を実行する必要があり,非常に面倒です。ところが,twittering-modeが得たアクセストークンはtwittering-oauth-access-token-alistに保存されています。試しにM-x describe-variableを実行してみましょう。英数字の混った文字列がトークンとして保存されているのがわかるはずです。つまりこの値を保存しておき,.emacsで設定してやれば二回目以降の認証をパスすることが可能になります。

M-x describe-variableを実行して,twittering-oauth-access-token-alistの内容を調べる

twittering-oauth-access-token-alist is a variable defined in `twittering-mode.el'.
Its value is 
(("oauth_token" . "自分のユーザID-英数字の列")
 ("oauth_token_secret" . "英数字の列")
 ("user_id" . "自分のユーザID")
 ("screen_name" . "自分のスクリーンネーム"))

.emacsでトークンを設定する例(非推奨)

(setq twittering-oauth-access-token-alist
       '(("oauth_token" . "トークン文字列")
         ("oauth_token_secret" . "トークン文字列")
         ("user_id" . "自分のユーザID")
         ("screen_name" . "自分のスクリーンネーム")))

しかしこのトークンを使えば,そのアカウントを使ってTwitterにアクセスできてしまうのですから,.emacsにプレーンなテキストで記述しておくというのは不用心でしょう。そこで利用したいのが,トークンを暗号化して別ファイルに保存する機能です。この機能を有効にするには,twittering-use-master-passwordにnil以外の値を設定します。暗号化にはEasyPGかalpaca.elが使用できますが,Emacs23ではEasyPGが標準搭載されていますので,EasyPGを使うのがよいでしょう。もちろん,追加のパッケージインストールなどは必要ありません。

図2 初回認証時にマスターパスワードを設定する

図2 初回認証時にマスターパスワードを設定する

マスターパスワードを用いてトークンを保護する

(setq twittering-use-master-password t)
(setq twittering-private-info-file "/home/mizuno/.emacs.d/elisp/twittering/twittering-mode.gpg") (※3

この設定を行なっておくと,初回認証時にマスターパスワードの設定が要求されます。以後はtwittering-mode起動時にマスターパスワードを入力するだけで,必要なトークンが読み込まれます。

※2
実はデフォルトでoauthが指定されており,このように明示的な設定を行なわなくてもOAuthによる認証を試みます。ですが筆者は以前ここでxauthを指定していた名残で,明示的にoauthを指定しています。
※3
twittring-private-info-fileは暗号化したトークンを保存するファイルの位置を指定します。デフォルトでは~/.twittering-mode.gpgが指定されています。

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。株式会社インフィニットループ所属。

コメント

コメントの記入