     [file version-ja.texi not included]

This file describes Riece.

Copyright (C) 2003,2004,2005,2006,2007,2008,2009,2010 Daiki Ueno.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the license is included in the section entitled "GNU Free Documentation License".

Riece user's manual
*******************

このマニュアルでは、Riece バージョン VERSION について解説します。このマニュアルで扱う範囲を越えた情報は Riece の公式ホームページ http://www.nongnu.org/riece/ から得られるかもしれません。

Overview
********

Riece は IRC (Internet Relay Chat) の世界でチャットを楽しむためのユーザインターフェースです。Riece は「りーす」と読みます。

Riece の主な特長は以下の通りです。

  * 複数の IRC サーバに同時に接続可能

  * アドオンにより機能の追加や取り外しが容易

  * 他の elisp パッケージに依存しないため、インストールが簡単

  * 設定が簡単で、前回起動時の設定を記録・復元する仕組みを提供

  * 段階的な操作説明書が附属

  * 最新の IRC のクライアントプロトコル (RFC2812) に準拠

Getting started
***************

Riece を起動する手順は次の通りです。

 1. M-x load-library riece

 2. M-x riece

もし (1) で Cannot open load file: riece のエラーが発生する場合にはインストールに失敗しています。自分でソースからインストールした場合には README をもう一度読み直してください。OS・ディストリビューションのパッケージからインストールした場合には、パッケージに含まれる文書をご確認ください。

Riece を起動すると、IRC サーバの名前を聞かれます。公共に利用可能な IRC サーバの一覧は Web ページなどから得ることができます。

  * http://www.ircnet.jp

  * http://freenode.net

また、以下のようなメッセージが表示されるかもしれません。

     Nickname "ueno" already in use.  Choose a new one:

IRC では、参加者を表すのにニックネームと呼ばれる短い呼称が使われます。もし希望のニックネームが他の誰かに使用されている場合、別のニックネームを選ぶ必要があります。

IRC サーバに接続できたら、次は会話をしてみましょう。IRC ではチャンネルと呼ばれる仮想的な会議室に参加して会話を行ないます。チャンネルに入るには C-c j とタイプします。参加するチャンネル名を尋ねられたら、適切なチャンネル名を入力しましょう。IRCnet には #Riece というチャンネルがあるので、テストをしたい場合には自由にお使いください。

チャンネルに入ると、下の図に示すような 5 つのウィンドウ (まぎらわしいですが、Emacs の世界ではバッファを表示する領域をウィンドウと呼びます。)からなる画面に切り替わります。

     +-----+-----------------+
     |     |                 |
     |     |                 |
     | (1) |       (2)       |
     |     |                 |
     |     |                 |
     +-----+-----------------+
     |     |       (4)       |
     |     +-----------------+
     | (3) |                 |
     |     |       (5)       |
     |     |                 |
     +-----+-----------------+

(4) のウィンドウに表示されるバッファに文章を入力してリターンキーを押すと発言できます。他の参加者の発言は (2) のウィンドウに表示されます。

Basic usage
***********

Windows
=======

     +-----+-----------------+
     |     |                 |
     |     |                 |
     | (1) |       (2)       |
     |     |                 |
     |     |                 |
     +-----+-----------------+
     |     |       (4)       |
     |     +-----------------+
     | (3) |                 |
     |     |       (5)       |
     |     |                 |
     +-----+-----------------+

各ウィンドウに表示されるバッファの役割は以下の通りです。

 1. ユーザリストバッファ ( *Users*)。チャンネルに参加しているユーザのニックネームの一覧が表示されます。

 2. チャンネルバッファ ( *Channel:XXX*)。チャンネル内の会話が表示されます。

 3. チャンネルリストバッファ ( *Channels*)。自分が参加しているチャンネルの一覧が表示されます。

 4. コマンドバッファ (*Command*)。文章やコマンドを送信するために使います。

 5. アザーズバッファ ( *Others*)。現在選択中のチャンネル以外の会話が流れます。

Indicators
==========

モードラインの左端には、現在の自分の状態を示す印が表示されます。 (もし画像を表示できる Emacs をお使いなら、左端に "R" のアイコンが表示されます。)

     Riece: ---- ueno #Riece [n]

ここで、---- の部分には左から順に以下の意味があります。

 1. 離席状態 (離席していれば A)

 2. IRC オペレータ状態 (IRC ネットワークの管理者権限を持っていれば O)

 3. ウィンドウの自動スクロールの禁止 (完全に禁止していれば F、自分の次回の発言まで禁止しているのであれば f)

 4. チャンネルオペレータ状態 (チャンネルの管理者権限を持っていれば @)

Commands
========

Basic usageで文章を入力したバッファはコマンドバッファと呼ばれます。コマンドバッファからは文章を送信する以外に、様々なコマンドを発行することができます。以下に一部を挙げます。

最初はなかなか覚えにくいですが、C-h b (M-x describe-bindings) で使用可能なキー操作の一覧が表示されるので少しずつ覚えていくと良いでしょう。

IRC commands
------------

RET
     文章を送ります(riece-command-enter-message)

C-RET
     文章を NOTICE として送ります(riece-command-enter-message-as-notice)

C-c j
     チャンネルに参加します(riece-command-join)

C-c C-p
     チャンネルから離脱します(riece-command-part)

C-c p
     宛先を指定して現在の行を送ります(riece-command-enter-message-to-user)

C-c q
     IRC をやめます(riece-command-quit)

C-c n
     自分のニックネームを変更します(riece-command-change-nickname)

C-c f
     ユーザの情報を調べます(riece-command-finger)

C-c C-k
     ユーザをチャンネルから蹴り出します(riece-command-kick)

C-c i
     ユーザをチャンネルに招待します(riece-command-invite)

C-c l
     パターンに対して LIST を発行します(riece-command-list)

C-c C-n
     パターンに対して NAMES を発行します(riece-command-names)

C-c w
     パターンに対して WHO を発行します(riece-command-who)

C-c t
     チャンネルのトピックを設定します(riece-command-topic)

C-c C-m
     チャンネルのモードを設定します(riece-command-change-mode)

C-c o
     ユーザにチャンネルの管理者権限を与えます。C-u C-c o では逆に、ユーザからチャンネルの管理者権限を奪います(riece-command-set-operators)

C-c v
     ユーザにチャンネルでの発言権を与えます。C-u C-c v では逆に、ユーザからチャンネルでの発言権を奪います(riece-command-set-speakers)

C-c V
     Riece のバージョンを表示します。(C-u C-c V) で、より詳細な情報を表示します。

C-c /
     IRC コマンドを直接送ります(riece-command-raw)

Window manipulating commands
----------------------------

C-c r
     フレーム全体を再描画します(riece-command-configure-windows)

C-c C-j または C-c >
     チャンネル一覧で次のチャンネルを選択します(riece-command-next-channel)

C-c <
     チャンネル一覧で前のチャンネルを選択します(riece-command-previous-channel)

C-c ^
     アドオンの一覧を表示します(riece-command-list-addons)

C-c 数字
     チャンネル一覧で N番目のチャンネルを選択します(riece-command-switch-to-channel-by-number)

C-c C-c 数字
     チャンネル一覧で N + 10番目のチャンネルを選択します(riece-command-switch-to-channel-by-number)

C-c Home
     チャンネルバッファ、またはダイアログバッファを上端までスクロールします(riece-command-beginning-of-buffer)

C-c $
     チャンネルバッファ、またはダイアログバッファを下端までスクロールします(riece-command-end-of-buffer)

C-c SPC
     チャンネルバッファ、またはダイアログバッファを上方向にスクロールします(riece-command-scroll-up)

C-c DEL
     チャンネルバッファ、またはダイアログバッファを下方向にスクロールします(riece-command-scroll-down)

Status toggle commands
----------------------

C-c C-t c
     チャンネルバッファの表示・非表示を切り替えます(riece-command-toggle-channel-buffer-mode)

C-c C-t C
     チャンネルリストバッファの表示・非表示を切り替えます(riece-command-toggle-channel-list-buffer-mode)

C-c C-t u
     ユーザリストバッファの表示・非表示を切り替えます(riece-command-toggle-user-list-buffer-mode)

C-c C-t f
     チャンネルバッファ、またはダイアログバッファの自動スクロールを禁止します(riece-command-toggle-freeze)

C-c C-t o
     チャンネルバッファ、またはダイアログバッファを、自分が発言するまで、自動スクロールを禁止します(riece-command-toggle-own-freeze)

C-c C-t a
     自分の離席状態を切り替えます(riece-command-toggle-away)

Advanced usage
**************

この章では、もっと進んだ使い方を解説します。

Startup file
============

Riece の設定は Emacs の設定ファイルに書いても良いですが、Riece に固有の設定はなるべく ~/.riece/init に書くことを推奨します。

また、Riece を起動して終了すると ~/.riece/save というファイルが作成されます。このファイルには前回起動時の設定の一部が自動的に保存されます。

起動時には、最初に ~/.riece/save を、次に ~/.riece/initを読み込みます。つまり、前回起動時に ~/.riece/save に保存された内容は、~/.riece/init の内容で上書きされます。

Server settings
===============

起動時に接続する IRC サーバは変数 riece-server で指定します。

riece-server は文字列で、その形式は次のいずれかです。

 1. IRC サーバのホスト名

 2. IRC サーバのホスト名:ポート番号

 3. IRC サーバのホスト名:ポート番号:パスワード

 4. 詳細設定の名前

4. の場合には、riece-server の値をキーに riece-server-alist を検索します。riece-server-alist は次のような形式の連想配列です。

     (setq riece-server-alist
           '(("foo" :host "irc.example.com" :coding shift_jis)
             ("bar" :host "irc.example.net" :nickname "baz")))

この設定の意味は以下の通りです。

  * foo という名前の設定では、IRC サーバのホスト名に irc.example.com、使用する文字コードに Shift_JIS を使う

  * bar という名前の設定では、IRC サーバのホスト名は irc.example.net、このサーバではニックネーム baz を使う

指定できるキーワードの一覧は以下の通りです。

:host
     サーバのホスト名または IP アドレス

:service
     サーバのサービス名またはポート番号 (既定値は 6667)

:nickname
     接続時のニックネーム (既定値は変数 user-real-login-name の値)

:username
     接続時のユーザネーム (既定値は変数 user-full-name の値)

:password
     接続時のパスワード

:function
     接続用関数 (既定値は open-network-stream)

:coding
     文字コード (既定値は riece-default-coding-system の値)

riece-server-alist を対話的に設定するには次のコマンドを使うと便利です。

     M-x load-library riece
     M-x customize-variable riece-server-alist

Multiple servers
================

同時に複数のサーバに接続する手順を以下に示します。

既に特定のサーバに接続している状態で、別のサーバに接続するには C-c O (riece-command-open-server) を使います。

別のサーバ上のチャンネルに参加するには、C-c j (riece-command-join)でチャンネル名に @ に続いてサーバ名を続けます。

たとえば、サーバ irc.freenode.net 上の #Riece は次のように表記します。

     #Riece@irc.freenode.net

チャンネル名とサーバの区切り文字 @ は変数 riece-alias-alternate-separator で変更できます。

または、空白文字でも代用できます。この時には、C-q SPC と入力する必要があります。

複数の接続を操作するコマンドを以下にまとめます。

C-c O
     別のサーバに接続します(riece-command-open-server)

C-c C
     サーバとの接続を切断します(riece-command-close-server)

C-c M
     特定のサーバに対して、続くコマンドを発行します(riece-command-universal-server-name-argument)

Add-ons
=======

Riece では、雑多な機能を選択的に利用できるよう、アドオンと呼ばれる機構を用意しています。アドオンは通常の elisp モジュールを拡張したもので、安全な取り外しや、アドオン間の初期化処理の依存関係などの面倒をみます。

アドオンには次の四種類の状態があります。

unloaded
     読み込み前。アドオンの elisp モジュールが読み込まれていない状態

insinuated
     組み込み済み。アドオンの elisp モジュールが読み込まれ、初期化処理が完了した状態

enabled
     有効。アドオンが動作中

disabled
     無効。アドオンの動作が停止中

Add-on browser
--------------

Riece の動作中にアドオンの一覧を眺めるにはアドオンブラウザを使うと便利です。コマンドバッファで C-c ^ とすると、次のように表示されます。

     + riece-alias         Define aliases for IRC names.
       riece-async         Connect to IRC server via async proxy.
       riece-biff          Be notified if messages arrives.
     + riece-button        Display useful buttons in IRC buffers.
     + riece-ctcp          CTCP (Client To Client Protocol) support.
     + riece-ctlseq        Mark up control sequences in IRC buffers.

各行の左端のマークはアドオンの状態を表わしています。+ は組込まれて有効なアドオン、空白はロードされていないアドオンです。

ここで、riece-button を無効にしたい場合、四行目の先頭で - とします。すると、先頭のマークが + から - に変化します。

     + riece-alias         Define aliases for IRC names.
       riece-async         Connect to IRC server via async proxy.
       riece-biff          Be notified if messages arrives.
     - riece-button        Display useful buttons in IRC buffers.
     + riece-ctcp          CTCP (Client To Client Protocol) support.
     + riece-ctlseq        Mark up control sequences in IRC buffers.

さらに、u とすると、riece-button をアドオンの設定から除外します。さらに、U とすると、riece-button を完全にアンロードします。

この状態で、s または M-x riece-command-save-variables とすると、設定を保存します。

~/.riece/init でアドオンを組み込むには riece-addons を設定します。たとえば riece-alias を組み込む場合には、以下のように記述します。

     (add-to-list 'riece-addons 'riece-mini)

Available add-ons
-----------------

利用可能なアドオンは次の通りです。これらのうちの多くは標準で組み込まれています。

riece-alias
     チャンネル名やニックネームの別名を定義

riece-async
     Emacs が busy or suspend 状態になることに備え、 PING に応答する local proxy 経由で IRC サーバに接続

riece-biff
     他のバッファにいる時に発言があるとモードラインに印 ("[R]") を表示

riece-button
     ボタンやポップアップメニューの表示

riece-ctcp
     CTCP (Client To Client Protocol)

riece-ctlseq
     コントロールシーケンス (^B など) による強調表示

riece-desktop-notify
     メッセージの到着をデスクトップに通知

riece-doctor
     doctor.el と連携して精神科医になりすます

riece-epg
     EasyPG http://www.easypg.org による会話の暗号化

riece-eval-ruby
     入力された文字列を Ruby の式として評価

riece-eval
     入力された文字列を Emacs Lisp の式として評価

riece-foolproof
     チャンネルミスを防ぐ

riece-google
     キーワードを Google で検索

riece-guess
     色々な方法で移動先のチャンネルを推測

reice-hangman
     チャンネル内で hangman で遊ぶ

riece-highlight
     バッファの色付け

riece-history
     チャンネル移動の履歴管理

riece-icon
     バッファ中にアイコンを表示

riece-ignore
     指定したユーザの発言を無視

riece-kakasi
     日本語の通らない端末で、日本語をローマ字で表示

riece-keepalive
     IRC サーバとの接続を保持

riece-keyword
     キーワードの強調表示

riece-log
     会話のログをファイルに保存

riece-lsdb
     アドレス帳 LSDB (Lovely Sister Database) http://lsdb.sourceforge.jp と連携

riece-mcat
     メッセージカタログ

riece-menu
     メニューバーにメニューを登録

riece-mini
     ミニバッファのみで IRC をする

riece-ndcc
     DCC (Direct Client to Client protocol) によるファイル転送 (Emacs 22 でのみ動作)

riece-rdcc
     DCC (Direct Client to Client protocol) によるファイル転送

riece-shrink-buffer
     メモリ確保のため、バッファを定期的に切り詰める

riece-skk-kakutei
     SKK 使用時に変換モードの印を発言から取り除く

riece-toolbar
     ツールバーを表示

riece-twitter
     CTCP ACTION (C-c C-c a) と同時に Twitter に状態を送信

riece-unread
     発言のあったチャンネルに!マークをつける

riece-url
     会話に現れた URL の収集

riece-xface
     ユーザリストバッファにユーザの X-Face を表示

riece-xfaceb
     ユーザリストバッファにユーザの X-Face を表示 (BBDB http://bbdb.sourceforge.net が必要)

riece-yank
     C-c y で kill-ring から文字列を送信

Tips
****

この章では、よく聞かれる質問に対する答えと便利な設定例を紹介します。

直前に選択していたチャンネルに移動したい
====================

以下の行を ~/.riece/init に追加することで、C-c g で履歴を辿りつつ移動できます。riece-guess アドオンは、チャンネル選択の履歴や未読メッセージの有無などから次に選択するチャンネルを推測してくれるアドオンで、標準で組み込まれています。

     (add-hook 'riece-guess-channel-try-functions
               'riece-guess-channel-from-history)

発言があるとバッファがスクロールするのを止めたい
========================

C-c C-t f です。toggle freeze と覚えると良いでしょう。

装飾を抑制したい
========

riece-addons から装飾のためのアドオンを除外します。通常有効になっている装飾のためのアドオンは次の通りです。

  * 色付け (riece-highlight)

  * ボタン表示 (riece-button)

  * アイコン画像の表示 (riece-icon)

たとえば色付けをやめたいのであれば、以下の行を ~/.riece/init に追加します：

     (setq riece-addons (delq 'riece-highlight riece-addons))

特定の文字列を受信したら音を鳴らしたい
===================

以下の設定を ~/.riece/init に加えます。riece-keywords アドオンを使うと特定の文字列を受信した際の動作を指定できます。

     (setq riece-keywords '("ほげ" "ふが"))
     (add-hook 'riece-keyword-notify-functions
               (lambda (keyword message) (ding)))

SKK を使っていて、変換中の印 (▽) を送信してしまうことがある
==================================

以下の行を ~/.riece/init に追加します。

     (add-to-list 'riece-addons 'riece-skk-kakutei)

チャンネル一覧の並び順を固定したい
=================

以下の行を ~/.riece/init に追加します。

     (setq riece-default-channel-binding
          '("#Riece" "#emacsen" nil "#debianjp"))

この設定例では、チャンネル一覧の並び順は次のようになります。

 1. #Riece

 2. #emacsen

 3. なし

 4. #debianjp

3 番目のチャンネルが空席となっていることにご注意ください。新たなチャンネルに参加した場合、そのチャンネルが 3 番目の位置に割当てられます。

起動時に自動的にチャンネルに参加したい
===================

変数 riece-startup-channel-list を設定します。

     (setq riece-startup-channel-list
          '("#Riece" "#public"))

この設定例は、#Riece と #public に参加することを意味しています。チャンネルに参加する際にパスワードが必要な場合には次のように設定します。

     (setq riece-startup-channel-list
          '("#Riece" "#public" ("#private" "password")))

起動時に自動的に複数の IRC サーバに接続したい
=========================

変数 riece-startup-server-list を設定します。

     (setq riece-server "ircnet"
           riece-server-alist '(("ircnet" :host "irc.tokyo.wide.ad.jp")
                                ("freenode" :host "irc.ipv6.freenode.net")))

この設定例では、起動時に接続するのは "ircnet" だけです。 riece-startup-server-list を以下のように設定すると、 "freenode" にも接続するようになります。

     (setq riece-startup-server-list '("freenode"))

HTTP プロキシを介して IRC サーバに接続したい
===========================

relay.el と connect.c を使うと、 HTTP プロキシを介して IRC サーバに接続することができます。

relay.el
     http://www.taiyo.co.jp/~gotoh/lisp/relay.el

connect.c
     http://www.taiyo.co.jp/~gotoh/ssh/connect.html

たとえば、proxy.example.com:8080 経由で irc.tokyo.wide.ad.jp に接続する場合には、以下の行を ~/.riece/init に追加します。

     (require 'relay)
     (setq relay-command-alist (cons '("^irc\.tokyo\.wide\.ad\.jp$"
                                       "connect" "-H" "proxy.example.com:8080"
                                       host service)
                                     relay-command-alist)
           riece-server-alist (cons '("proxy-tokyo" :host "irc.tokyo.wide.ad.jp"
                                      :function relay-open-network-stream)
                                    riece-server-alist))

会話のログをファイルに保存したい
================

riece-log アドオンを使うと、会話のログをファイルに保存し、再起動時に参照できます。riece-log アドオンは標準で組み込まれています。

通常は ~/.riece/log の下に IRC サーバの名前、チャンネル名のディレクリが作成され、その中に日にち毎に分別されて保存されます。

ディレクトリ名が文字化けする場合には、 file-name-coding-system の値を適切に設定するか、あるいは riece-log-directory-map を使ってチャンネル名を US-ASCII 文字列に変換する必要があります。

     (setq riece-log-directory-map '(("#りーす" . "riece")))

ウィンドウ間を自由に移動したい
===============

GNU Emacs に附属の windmove.el を使うと便利です。詳細は windmove.el のコメントを参照ください。windmove.el は作者のページ (http://hovav.net/elisp/) からも取得できます。