今週のレシピは先週 に引き続き、twittering-modeをより使いやすくカスタマイズする方法を紹介します。
twittering-modeのカスタマイズ
プロキシサーバを利用する
学校や企業などでは、インターネットアクセスにプロキシを経由する必要がある場合があります。twittering-modeはプロキシに対応していますので、このような環境でも安心です。もちろん認証を必要とするプロキシサーバでも大丈夫です。
プロキシサーバを設定した後であれば、tキー(またはM-x twittering-toggle-proxy)でプロキシサーバのON/OFFをトグルすることができます。手軽にプロキシの有無を切り替えられるこの機能は、ノートPCなどでプロキシの内側とモバイル環境を渡り歩くような場合に便利です。
プロキシサーバとポートの設定
(setq twittering-proxy-use t)
(setq twittering-proxy-server "プロキシサーバのアドレス")
(setq twittering-proxy-port プロキシサーバのポート)
;; プロキシサーバが認証を必要とする場合は以下を設定する
(setq twittering-proxy-user "ユーザー名")
(setq twittering-proxy-password "パスワード")
タイムラインの自動更新間隔
twittering-modeはデフォルトで90秒ごとにタイムラインを更新します。本連載73回 ではこの自動更新を無効にする設定を紹介しました。これは当時のtwittering-modeの仕様が、ツイートをミニバッファで入力する方式だったことに起因します。ミニバッファでツイートを入力している最中に更新処理が走ってしまうと、その後の入力がうまくいかないことがあり、当時の筆者は自動更新を無効にしていました。現在のtwittering-modeは、ウィンドウを分割して専用のバッファ(editモード)でツイートを編集する仕様になっていますので、入力中に更新処理が走っても問題ありません。そこで現在は、デフォルトの90秒のまま運用しています。
twittering-timer-intervalの値を変更することで更新のインターバルを調整することができますが、API制限の面からも60秒以上の値を設定するのがよいでしょう。さらに自動更新機能は a キーでON/OFFをトグルすることができます。また g キーを押せば、タイムラインをその場でリロードします。
自動更新する間隔(秒)の設定。これは120秒に設定してみた例
(setq twittering-timer-interval 120)
タイムラインにアイコンを表示する
タイムライン上の発言が誰のものなのか、アイコンが表示されていれば一目で判別できて便利ですね。X上でEmacsを使用しているならば、twittring-icon-modeを有効にすることでアイコン画像が表示できます。デフォルトでは無効になっていますので、iキーを押して有効にしましょう。また.emacsに以下の設定を追記しておけば、起動時からすべてのバッファで有効になります。ダイレクトメッセージやMentionsなど、複数のバッファそれぞれでiキーを押すのが面倒な場合は、あらかじめ設定しておくと便利です。
デフォルトでアイコンを表示する
(setq twittering-icon-mode t)
タイムラインの表示をカスタマイズする
デフォルトでタイムラインには、ユーザのアイコン、スクリーンネーム、ツイートした時間(改行) 、ツイートの内容、使用したクライアント、位置情報、( リプライの場合は)リプライ先のユーザ、というフォーマットでツイートが表示されます。このフォーマットは変数twittering-status-formatで定義されており、この変数の内容を変更することで、タイムラインの表示をカスタマイズすることができます。たとえば次のようにすると、スクリーンネームの後にユーザのフルネームが表示され、さらに鍵つきのユーザの場合はスクリーンネームの前にマークが表示されるようになります。他のフォーマットの詳細はM-x describe-variable twittering-status-formatを実行して、表示されるHelpを参照してください。
タイムラインにユーザ名と鍵つきマークを追加する
(setq twittering-status-format "%i %p%s (%S), %@:\n%FILL[ ]{%T // from %f%L%r%R}\n ")
図1 鍵つきアカウントを表す[x]マークと、括弧の中に名前が表示されている
タイムライン上のツイートをコピペする
タイムラインに流れてくるツイートを、コピペして利用したいことはよくあります。特に筆者はEmacsの中で生活していますので、ツイートを別のバッファへコピペできればと思います。そんなときに便利なのが、ツイートの発言者と内容をキルリングへpushするtwittering-push-tweet-onto-kill-ringと、ツイートのURIをpushするtwittering-push-uri-onto-kill-ringです。
これらはそれぞれ、C-mouse-3(右クリック)と、Uキーにバインドされています。この機能は、本連載118回 で紹介したbrowse-kill-ringと組み合わせるとより使いやすくなります。筆者はURIをコピペすることはあまりないため、twittering-push-tweet-onto-kill-ringがキーボードから使えるよう、両者のバインドを入れ替えています。
図2 browse-kill-ringでキルリングの内容を見てみた。名前:ツイートの形式で、ツイートがコピーされている
push-tweetとpush-uriのキーバインドを入れかえる
(add-hook 'twittering-mode-hook
(lambda ()
(mapc (lambda (pair)
(let ((key (car pair))
(func (cdr pair)))
(define-key twittering-mode-map
(read-kbd-macro key) func)))
'(("U" . twittering-push-tweet-onto-kill-ring)
("C-<mouse-3>" . twittering-push-uri-onto-kill-ring)))))
全員へリプライする
あるツイートへリプライする際、リプライ元に複数の @ が含まれていた場合、その全員への @ を含めて返信したいというのは自然な要求でしょう。TwitterのWebインターフェイスをはじめ、多くのクライアントではこのような挙動をするのですが、twittering-modeはあくまで「リプライ元の発言者ひとり」へのリプライを作成します。この挙動を変更するには、twittering-edit-skeletonを設定します。
twittering-edit-skeletonでは、ツイートを作成する際にどのような文字をあらかじめ入力しておくか、という挙動を決定します。設定できる値はtwittering-edit-skeleton-alistとして定義されています。たとえばここで定義されているinherit-mentionsは、元ツイートに含まれるすべての @ を返信のツイートに自動的に含むようになります。またinherit-hashtagsはその名の通り、元ツイートに含まれるハッシュタグを自動的に返信のツイートに含むようになります。独自のスケルトンを定義することも可能なので、腕に覚えのあるユーザは、twittering-mode.elの中を覗いて見るのもよいでしょう[1] 。
twittering-edit-skeletonにinherit-mentionsを設定して、全員へリプライする
(setq twittering-edit-skeleton 'inherit-mentions)
ハッシュタグを自動で付加する
自分の発言に特定のハッシュタグを自動で付加することもできます。C-c C-t(あるいはM-x twittering-set-current-hashtag)を実行すると、ハッシュタグを入力するためのミニバッファが開きます。ここで設定したハッシュタグは、変数twittering-current-hashtagに格納され、新規発言時にはバッファにこの変数の内容が自動的に入力されるようになります。イベントや勉強会などで、特定のハッシュタグをつけて実況を行うような場合に便利な機能です。
新着ツイートをNotify-OSDで表示する
Ubuntu標準のTwitterクライアントであるGwibberなどは、新着ツイートを受信するとNotify-OSDを利用して通知してくれます。twittering-modeには新着を受信した際に実行されるtwittering-new-tweets-hookというフックが用意されており、ここに任意の処理を書くことができます。ここからnotify-sendコマンドを呼び出せば、Notify-OSDを利用することも可能です。
図3 Notify-OSDを利用して、新着ツイートの数が通知される
libnotify-binパッケージのインストール
$ sudo apt-get install libnotify-bin
Nofity-OSDを利用して新着ツイートを通知する
(if (locate-library "notify-send" nil exec-path)
(add-hook 'twittering-new-tweets-hook (lambda ()
(let ((n twittering-new-tweets-count))
(start-process "twittering-notify" nil "notify-send"
"-i" "/usr/share/emacs/23.2/etc/images/icons/hicolor/48x48/apps/emacs.png"
"New tweets"
(format "You have %d new tweet%s"
n (if (> n 1) "s" "")))))))
おわりに
このようにtwittering-modeは、Twitterにおいて必要と思われる機能をほぼ供えている、本格的なTwitterクライアントです。普段からEmacsで生活している人や、キーボードでTwitterを操作したいというような人は、ぜひ一度試してみてはいかがでしょうか。