ローマ字ひらがな変換ライブラリ suikyo

suikyo 「水鏡」とは

suikyo は決定性オートマトンに基づいて, 文字列の変換を行うライブラリです. 主には「ローマ字ひらがな変換」に使用されます. 例えば "suikyou" という 文字列から "すいきょう" と変換を行なったり, 逆に "すいきょう" から "suikyou" に変換することが可能です.

変換を行うためのルールを表すフォーマットについての詳細は後述しますが, canna の .kpdef フォーマットとほぼ同様です. そのため .kpdef フォーマットに よる変換ルールをそのまま利用できます.

最新版

各言語用ライブラリ

suikyo は 2004-08-29 の時点で, 以下の言語用ライブラリがあります. 各言語別の説明は以下のリンクからのページにあります.

インストール

パッケージ

Debian, RPM, Gentoo, FreeBSD, Fink, PINEAPPLE, KNOPPIX 等のパッケージを 準備していただきました. 詳しくは PRIME のインストールページをご覧ください.

ダウンロード

http://prime.sourceforge.jp/src/ から suikyo のアーカイブをダウンロードしてください.

CVS 版ダウンロード

SourceForge.jp から, CVS 版のダウンロード が可能です. 以下のように実行してダウンロードしてください. パスワード入力時には, 単純にエンターキーだけを入力してください.

cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/prime login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/prime co suikyo

インストール

configure でファイルパス等の設定を行ったあと, make, make install で インストール可能です. CVS 版では autogen.sh を最初に実行する必要があります.

./autogen.sh (CVS 版のみ必要)
./configure
make
make install

アンインストール

アーカイブを展開したディレクトリで "make uninstall" を実行すれば, アンインストールされます.

configure のオプション

configure では以下の設定が行えます.

--prefix
インストールは指定したディレクトリ以下に行われます.
デフォルト値は /usr/local です.
--datadir
実行環境に依存しないデータをインストールするディレクトリです.
デフォルト値は (prefix)/share です.
--with-rubydir
ruby のライブラリがインストールされるディレクトリです. このディレクトリ以下に suikyo のライブラリがインストールされます.
デフォルト値は Ruby の sitelibdir です.
--with-emacs-sitelispdir
elips ライブラリのインストール先です. このディレクトリの下に サブディレクトリ suikyo を作成してインストールします.
デフォルト値は (datadir)/emacs/site-lisp です.
--with-emacs-initdir
prime-el の初期設定用ファイルが置かれるディレクトリです.
デフォルト値は (emacs-sitelispdir) です.
--with-suikyo-initfile
suikyo の初期設定用ファイル名です.
デフォルト値は init-suikyo.el です.
--with-suikyo-tabledir
suikyo の変換テーブルが置かれるディレクトリです.
デフォルト値は (datadir)/suikyo/conv-table です.
--with-suikyo-docdir
suikyo のドキュメントが置かれるディレクトリです.
デフォルト値は (datadir)/doc/suikyo です.

変換ルールのフォーマット

基本的なルール

基本的な変換ルールは, 以下に示すように, タブまたは空白で区切られた 2つもしくは 3つの項目から構成されます. ( 実際のファイル)

a	あ
ta	た
tt	っ	t

1つ目の項目が「入力データ」, 2つ目の項目が「変換データ」, 3つ目の項目が「保留データ」です. 入力データを変換データに置き換える というのが基本的なルールになります.

3つ目の保留データがある場合, 変換後, 保留データが未変換の文字列の先頭に 追加されます. 例えば "tta" と入力した場合, "tt" が "っ" に変換されて "t" が書き戻されて, 未変換の文字列は "ta" になります. その後, "ta" が "た" に変換されて, 最終的に "tta" が "った" に変換されます.

コメント記号

行頭が '#' で始まる 1行, または行頭が '/*' で始まり '*/' を含む行までを コメントとして扱います. '/*' も行頭で始まる必要があり, また '*/' 以降の 文字列もコメントして扱われてしまうので注意して下さい.

canna の .kpdef フォーマットでは '#ifdef' などにより条件分岐が可能ですが, suikyo では条件分岐はできません. '#ifdef' もただのコメントとして 扱われます.

実用には問題ないと判断したので, いい加減なコメントの仕様になっています. そのうち適切に修正する予定ですが, 現時点での優先順位は低いです.

特殊文字

バックスラッシュ (または円記号) '\' は特殊文字です. '\' に続く文字との組み合わせによって, さまざまな意味を表します.

記号意味
\\ バックスラッシュ '\' を表します.
\# シャープ '#' を表します.
\0 空文字 '' を表します. 便宜上用意してありますが, 何も書かなくても同じ意味になります.
\xNN 16 進数 NN で示された文字を表します. 例えば '\x22' なら, ダブルクウォーテーション '"' になります.

空白による入力区切り

バージョン 1.3.0 より, 空白 (" ", 0x20) が入力の区切りとなりました. 具体的には, ローマ字変換において, "n" の変換結果は "n" のままになり, "n " と空白を加えると "ん" と変換されるようになりました. "n" のままでは "na (な)" と続く可能があるからです.

テーブルファイル名

2004-01-31 現在, 以下の変換用テーブルが用意されています.

ファイル名機能
romaji ローマ字ひらがな
romaji_reverse ひらがなローマ字
romaji-hepburn_reverse ひらがなローマ字 (ヘボン式)
kana かな配列ひらがな
kana_reverse ひらがなかな配列
egg-mark egg記号入力記号
egg-mark_reverse 記号egg記号入力
hiragana-katakana ひらがなカタカナ
katakana-hiragana カタカナひらがな
romaji-kana ローマ字ひらがな (obsolete)
kana-romaji ひらがなローマ字 (obsolete)
azik azik入力ひらがな
skk-mark SKK記号入力記号
skk-mark_reverse 記号SKK記号入力
tcode T-Code文字
tcode_reverse 文字T-Code
tcode-dvorak T-Code文字 (Dvorak 配列)
tcode-dvorak_reverse 文字T-Code (Dvorak 配列)
tcode TUT-Code文字
tcode_reverse 文字TUT-Code
kuten 区点コード文字
kuten_reverse 文字区点コード

T-Code 用のテーブルは, 高橋直人さんから御提供いただきました. ありがとうございます.

TUT-Code 用のテーブルは, TUT-code HomePageから御提供いただきました. ありがとうございます. このテーブルのライセンスは TUT-Code のライセンスに従います.

更新履歴

Ver 1.3.3(2004-08-29)
Ver 1.3.2(2004-02-29)
Ver 1.3.1(2004-01-31)
Ver 1.3.0(2004-01-10)
Ver 1.2.1
かな入力, AZIK, SKK記号, Egg記号, T-code, T-code (Dvorak配列) のデータ追加
Ver 1.2.0
Ver 1.1.2(2003-05-16)
Ver 1.1.1(2003-05-07)
Ver 1.1.0(2003-04-25)
Ver 1.0.1(2002-11-26)
Ver 1.0.0(2002-11-23)

小松 弘幸 <komatsu@taiyaki.org>
$Id: index.html,v 1.11 2004/08/29 12:29:55 komatsu Exp $