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

## suikyo 「水鏡」とは

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

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

## 最新版

- Ver 2.1.0:
  - PRIME 1.1 (開発版) 用のコード変更
  - AZIK 用変換テーブルの編集

## 各言語用ライブラリ

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

- Ruby
- Emacs Lisp

## インストール

### パッケージ

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' なら, ダブルクウォーテーション '"' になります.

### 変換ルールの削除

入力データのみの項目は、変換ルールの削除を行います。例えば、

    a

という項目があれば、「a → あ」という変換ルールを取り消すことが可能です。 入力データの後にタブ文字はあってもなくても構いません。

### 空白による入力区切り

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

## テーブルファイル名

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

ファイル名 | 機能
--- | ---
romaji | ローマ字 | → | ひらがな
romaji_reverse | ひらがな | → | ローマ字
romaji-hepburn_reverse | ひらがな | → | ローマ字 (ヘボン式)
kana | かな配列 | → | ひらがな
kana_reverse | ひらがな | → | かな配列
egg-mark | egg記号入力 | → | 記号
egg-mark_reverse | 記号 | → | egg記号入力
ascii-wideascii | ASCII | → | 全角ASCII
wideascii-ascii | 全角ASCII | → | ASCII
hiragana-katakana | ひらがな | → | カタカナ
katakana-hiragana | カタカナ | → | ひらがな
hiragana-halfkatakana | ひらがな | → | 半角カタカナ
halfkatakana-hiragana | 半角カタカナ | → | ひらがな
katakana-halfkatakana | カタカナ | → | 半角カタカナ
halfkatakana-katakana | 半角カタカナ | → | カタカナ
romaji-kana | ローマ字 | → | ひらがな (obsolete)
kana-romaji | ひらがな | → | ローマ字 (obsolete)
skk-mark | SKK記号入力 | → | 記号
skk-mark_reverse | 記号 | → | SKK記号入力
azik | azik入力 | → | ひらがな
azik_reverse | ひらがな | → | azik入力
azik-all | ローマ字 + azik 拡張 | → | ひらがな
azik-all_reverse | ひらがな | → | ローマ字 + azik 拡張
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 2.1.0(2005-03-29)
  - PRIME 1.1 (開発版) 用のコード変更
  - AZIK 用変換テーブルの編集
Ver 2.0.1.2(2005-01-16)
  - 変換ルールの取り消し時のバグを修正 (in Elisp)
  - パッケージに azik-all が入っていなかったので追加
Ver 2.0.1.1(2005-01-13)
  - 変換ルールの取り消し時のバグを修正 (in Ruby)
Ver 2.0.1(2005-01-11)
  - プリエディット機能でのエラー終了してしまうバグを修正
  - 変換ルールを取り消すフォーマットの仕様を追加
  - 全部入り AZIK 用変換テーブル azik-all の追加 (ローマ字 + AZIK 拡張)
Ver 2.0.0.1(2004-12-13)
  - AZIK 用変換テーブルを使用した際の不具合を修正
Ver 2.0.0(2004-12-09)
  - かな漢字変換用のプリエディットライブラリ SuikyoComposer を追加 (Ruby)
  - 半角カタカナとひらがな・カタカナとの変換テーブルの追加; halfkatakana-hiragana, halfkatakana-katakana, hiragana-halfkatakana, katakana-halfkatakana
Ver 1.3.3(2004-08-29)
  - T-Code のテーブルを一部変更
  - \x エスケープ文字に対するエラーチェックを追加
Ver 1.3.2(2004-02-29)
  - 区点コードの追加 (by Akira Yamada)
  - ヘボン式ローマ字の変換ルールを追加 (by Hideyuki SHIRAI)
Ver 1.3.1(2004-01-31)
  - TUT-Code の追加
  - ローマ字の変換ルールを一部追加
  - バグフィックス
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)
  - Debian パッケージの不具合を修正.
  - Ruby 版のインストール方法を修正.
Ver 1.1.1(2003-05-07)
  - Debian パッケージを suikyo から, suikyo-table, libsuikyo-ruby, suikyo-elisp に分割.
  - Web ページから PHP のコードを削除.
Ver 1.1.0(2003-04-25)
  - Ruby 版の不具合, Elisp 版のドキュメントの整備, 変換テーブルの文字コードを EUC に統一. ( Hideyuki ENDOさん からの情報より)
  - Debian パッケージの作成. ( 高宮安仁さんに よる作成)
Ver 1.0.1(2002-11-26)
  - install コマンドに -D オプション (ディレクトリの作成) がない環境も 多いので, -D を使わないように変更. ( Hideyuki ENDOさん からの情報より)
Ver 1.0.0(2002-11-23)
  - リリース

[Home] [Top] [Toc]
小松 弘幸 <komatsu@taiyaki.org>
$Id: index.html,v 1.18 2005/03/29 02:07:09 komatsu Exp $