update doc.
[chise/ruby.git] / doc / index.html
1 <html>
2 <head>
3 <title>Ruby/CHISE</title>
4 <link rel="stylesheet" type="text/css" href="style.css">
5 </head>
6
7 <body>
8 <div class="center">
9
10 <h1><span class="e">Ruby/CHISE</span></h1>
11
12 <div class=linkbox>
13 <a href="#download">download</a>,
14 <a href="#install">install</a>,
15 <a href="#howto">howto</a>,
16 <a href="#links">links</a>
17 </div>
18
19 <div class="w40em">
20
21 <div class=box>
22 <h2>■<span class="e">Ruby/CHISE</span>とはなにか</h2>
23 <p>Ruby/CHISEは、XEmacs CHISEにおけるChaon実装を<br>
24 Rubyへ移植することを試みたモジュールである。<br>
25
26 <h3>■Chaonモデルとはなにか</h3>
27
28 <p>Chaonモデルとは、文字を符号ではなく属性によって扱う方法を意味する。
29 <p>Ruby/CHISEではそれを拡張し、文字をオブジェクトとして扱っている。
30
31 </div>
32
33 <div class=box>
34 <a name="download"></a>
35 <h2 class="e">■download & history</h2>
36 <ul>
37 <li>2003-0110   テスト公開
38 <li>2003-0112   XString追加
39 <li>2003-0115   IDSの読み込み機能β版
40 <li>2003-0116   IDSの読み込み機能1.0
41 <li>2003-0117   XStringを廃止し、Stringに一本化。IDSの読み込み機能を強化。
42 <li>2003-0120   IDS_Treeの読み込み機能を追加。木構造の整合性checkを追加。
43 <li>2003-0130   IDSの逆変換機能などを追加。
44 <li>2003-0213   <a href="http://eto.com/2003/ruby/ruby-chise-20030213.tar.bz2" class="s">ruby-chise-20030213.tar.bz2</a><br>
45 名称をRuby/UTF-2000からRuby/CHISEへと変更。
46 <li>2003-0312   <a href="http://eto.com/2003/ruby/ruby-chise-20030312.tar.bz2" class="s">ruby-chise-20030312.tar.bz2</a><br>
47 様々なライブラリを追加。
48 <li>2003-1004   <a href="http://eto.com/2003/ruby/ruby-chise-20031004.tar.bz2" class="s">ruby-chise-20031004.tar.bz2</a><br>
49 新しい素性名に対応した。Copyright noticeをいれた。
50 <li>2003-10-31  <a href="http://lc.linux.or.jp/lc2003/">LC2003</a>にて発表。
51 <li>2003-1110   <a href="http://eto.com/2003/ruby/ruby-chise-20031110.tar.bz2" class="s">ruby-chise-20031110.tar.bz2</a><br>
52 ディレクトリ構造をchise/*.rbとなるように変更。installerをつけた。
53 </ul>
54 <hr>
55
56 <h3>■文字データベース</h3>
57 <p>現状での文字DBを公開する。0.21が出る直前のCVS版を元にしている。
58 <ul>
59 <li>2003-11-04  <a href="http://eto.com/2003/ruby/char-db.tar.gz" class="s">char-db.tar.gz</a> Windows用<br>
60 LinuxでXEmacs CHISEをinstallし、付属のmkdbtarball.rbを使った作成した.tar.gzにしたもの。
61 <li>2003-11-04  <a href="http://eto.com/2003/ruby/char-db-linux.tar.bz2" class="s">char-db-linux.tar.bz2</a> Linux用<br>
62 /usr/local/lib/xemacs-21.4.12/i686-pc-linux/char-db以下をtar.bz2にしたもの。
63 </ul>
64
65 <hr>
66 <h3>■<a href="http://cvs.m17n.org/cgi-bin/viewcvs/ruby/?cvsroot=chise">CVS access</a></h3>
67 <hr>
68 <h3>■ライセンス</h3>
69 <p>GPLです。COPYINGをごらんください。</p>
70 <p>
71 </div>
72
73 <div class=box>
74 <a name="install"></a>
75 <h2 class="e">■install</h2>
76 <pre>
77 % ruby install.rb config
78 % ruby install.rb setup
79 # ruby install.rb install
80 </pre>
81 <p>通常、<b>/usr/local/lib/ruby/site_ruby/</b>以下にinstallされる。
82
83 <hr>
84 <h3 class="e">■config</h3>
85 <p><b>src/chise.rb</b>内
86 <p><b>DB_DIR = '/usr/local/lib/xemacs-21.4.10/i686-pc-linux/char-db'</b><br>
87 必要に応じて変更する。
88 <p><b>IDS_DB_DIR = '/home/eto/work/chise/ids/''</b><br>
89 IDSのテキストファイルが置かれているディレクトリーを指す。(下記の字形分解・合成についてを参照)
90
91 <hr>
92 <h3 class="e">■依存関係</h3>
93 <p>下記のパッケージが必要。
94 <ul>
95 <li><a href="http://www.sleepycat.com/" class="b">db3-3.2.9</a>
96 <li><a href="http://www.ruby-lang.org/~eban/ruby/binaries/mingw/ext/" class="b">bdb-0.3.6</a> (bdb-0.3.8などそれ以上でも可)
97 <li><a href="http://www.yoshidam.net/Ruby_ja.html#uconv" class="b">uconv-0.4.11</a>
98 <li><a href="http://www.ruby-lang.org/ja/" class="b">ruby 1.6.7</a> これはRuby本体。
99 </ul>  
100
101 <p>一般にRubyのパッケージは
102 <a href="http://www.ruby-lang.org/raa/"><b>RAA</b></a>を使って探すことができる。
103
104 <hr>
105 <h3 class="e">■Unicode</h3>
106 <p>現状では、Ruby/CHISEに渡す文字コードはUTF-8のUnicodeにしておくと便利である。
107 <p>将来的にはプログラム自体がSJIS、EUCなどで書かれていても
108 問題なく処理できるようにしたい。
109 <p>WindowsでUnicodeを使えるエディターとして、Meadow + Mule-UCSが使える。
110 <p>フリーのUnicode対応エディターとして「<a href="http://members.tripod.co.jp/sakura_editor/">サクラエディタ</a>」が使える。
111 <p>他、Windows付属のメモ帳、見るだけであればIEが使える。
112 </div>
113
114 <div class=box>
115 <h2>■付属libraryの説明</h2>
116 <p>現時点では個々の詳細には立ち入りません。
117
118 <ul>
119
120 <li>ext/*<br>
121 libchiseを用いたextensionです。現在はプレアルファ版です。
122
123 <li>network.rb, makegraph.rb, graphviz.rb, defkanji.rb, kanjilist.rb<br>
124 漢字の部品間の接続関係を計算します。Graphvizによるグラフ化も行います。
125 <pre>
126 ruby makegraph.rb
127 </pre>
128 <p>Graphvizが必要です。min.svgが生成されます。
129
130 <pre>
131 ruby defkanji.rb
132 </pre>
133 <p>漢字の定義を行います。
134
135 <li>stroke.rb, kage.rb, kageserver.rb, csf.rb<br>
136 StrokeFontを用いるライブラリー群。
137 上地宏一氏によるKAGE System(現時点ではまだ非公開), 坂直純氏によるCSFという二つのStrokeFontが使えます。
138 別途フォントファイルが必要です。<br>
139 <tt>csf.rb</tt>中の<tt>CSF_FONT_DIR = 'd:/work/chise/csf/'</tt>を適切に設定してください。
140 <p>sglという独自のグラフィックライブラリーが必要ですが、これはまだ非公開です。
141
142 <pre>
143 ruby stroke.rb
144 </pre>
145 <p>漢字のCodeTableが表れ、その中の文字を表示できます。
146
147 <ul>
148 <li><a href="http://www.fonts.jp/">漢字フォント自動生成技術フォーラム</a>
149 <li><a href="http://web.sfc.keio.ac.jp/~kamichi/kage/kage.html">KAGEモデル</a>
150 <li><a href="http://www.vector.co.jp/soft/win95/writing/se256880.html">KST32ZX</a>, 篆文風(Zhuanwen-Like),漢字StrokeFont(KST)
151 <li><a href="http://www.vector.co.jp/soft/data/writing/se119277.html">KST32A</a>, 極めてコンパクトなJIS第一水準漢字(非漢字)ストローク・テーブル
152 </ul>
153
154 </ul>
155 </div>
156
157 <div class=box>
158 <a name="howto"></a>
159 <h2>■使い方</h2>
160 <p>
161
162 <h3>■全体的な使い方</h3>
163 <pre>
164 require 'chise'
165 include CHISE
166
167 str = "字" #Stringを拡張している。UTF8で与えること。
168 p str.ucs #とすると、その文字のucsの値が表示される
169 p str.total_strokes #画数が表示される
170 p str.gb2312 #などなど
171 str.char.alist.each {|a, v| #こんな感じで全属性を表示できる
172   print a, ': ', v, "\n"
173 }
174 p str.inspect_x #Characterについての情報が表示される。
175 p str.inspect_all #持っている属性情報を全て表示する。
176
177 str = "文字列" #もちろん一文字でなく文字列も扱える。UTF-8で与える。
178 p str.inspect_x #各文字の情報が表示される。
179 p str.inspect_all #各文字の属性情報を全て表示する。
180 </pre>
181
182 </div>
183
184 <div class=box>
185 <h2>■字形分解・合成</h2>
186 <p>Ruby/CHISEは、もともと字形分解・合成を扱うために作られたため、その機能が強化されている。
187
188 <p>字形分解・合成は、現在はUnicodeにおけるIDS(Ideographic Description Structure)という仕様に準拠している。
189 U+2FF0〜U+2FFBで表わされるIDC(Ideographic Description Characters)によって合成方法を指定し、
190 これに続く二文字から三文字の文字を合成して表示する。
191
192 <hr>
193 <h3 class="e">■IDSを使うための準備</h3>
194
195 <p>下記のようにして、IDSのテキストファイル群を持ってくる。
196 <pre><small>% cd ~/work/chise (このディレクトリーは適宜変更する)
197 % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login
198 password: (何も入れずにただもう一度return)
199
200 % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/chise co -d ids ids
201 </small></pre>
202
203 <p>このようにすると、IDSのテキストファイル群を持ってくることができる。
204
205 <p>その後、<b>src/chise.rb</b>内<br>
206 <b>IDS_DB_DIR = '/home/eto/work/chise/ids/''</b><br>
207 ここに、上記のIDSテキストファイル群を持ってきたディレクトリーを入れる。
208 必要であれば、再度<b>make install</b>する。
209 このようにして適切に<b>IDS_DB_DIR</b>を設定し、
210 <b>./tools/idsdbdumpall.rb</b>を実行する。(かなり時間がかかる)
211 これで、文字属性として新たにids, ids-decomposeが加わった。
212 それぞれ、IDSの文字列、それを再帰的に分解しきったものを意味する。
213
214 <hr>
215 <h3 class="e">■字形分解</h3>
216 <p>Stringに、decompose, decompose_allという二つのメソッドがある。
217 decomposeは一段階だけ分解する。decompose_allはそれを再帰的に行う。
218 <pre>
219 p "字".decompose
220 p "字".decompose_all
221 p "榊".decompose
222 p "榊".decompose_all
223 p "終了".decompose
224 p "終了".decompose_all
225 p "鬱".decompose
226 p "鬱".decompose_all
227 </pre>
228
229 <p>最初の説明から、字形分解されて出てきた結果の文字列には、
230 IDSキャラクターが含まれているため、場合によってはうまく表示されない。
231 メモ帳だと表示できるだろう。
232
233 <hr>
234 <h3 class="e">■字形合成</h3>
235 <p>字形合成は、composeメソッドで行う。
236 <pre>
237 p "&#x2ff0;木木".compose
238 </pre>
239
240 <p>findメソッドで、ある部品が漢字の一部として含まれている漢字群を探すことができる。
241 <pre>
242 p "日雲".find
243 </pre>
244 <p>ここでは、日と雲という部品が含まれている全漢字を出力する。
245
246 </div>
247
248 <div class=box>
249 <h2>■説明</h2>
250 <p>まじめなメソッドの説明を書く。(未完)
251 <p>現時点では、test caseを見たほうが使い方はわかりやすいかもしれません。
252 <pre>
253 class String
254         char    先頭の文字をCharacterに変換したものを返す
255 →method_missingで、存在しないmethodを指定すると、自動的に先頭の文字を
256 Characterに変換してそれへのmethodとして呼ぶ。
257
258 class Character
259         get     ある文字をgetする。(flyweightパターン)
260         []      ある属性をgetする。get_char_attributeも使える。
261                 またmethod_missingも使える。
262         []=     ある属性をputする。put_char_attributeも使える。
263                 またmethod_missingによる入力も使える。
264 存在しない属性を参照したときは、nilが返る。
265 </pre>
266
267 <hr>
268 <h3>■tools</h3>
269 <p>詳しくは<b>tools/README</b>を参照。
270 <ul>
271 <li><b>dbdumpall.rb</b>, char-dbのBDBファイル群の中身をテキストとして展開する。
272 <li><b>idsdumpall.rb</b>, IDSのテキストファイル群を読みこみ、BDB化する。再帰的に展開したids-decomposeも作る。
273 <li><b>idscheckintegrity.rb</b>, IDSの木構造の整合性をチェックする。
274 <li><b>mkdbtarball.rb</b>, UNIXで作ったBDBファイル群をWindowsに持っていくときに使う。
275 Windowsでtar.gzを展開するには、<a href="http://member.nifty.ne.jp/beambitious/">eo</a>がおすすめ。
276 <li>trim_bom.rb, Unicodeファイルを作ったときの先頭についてくるBOM(byte order mark)を削除する。
277 </ul>
278 </div>
279
280 <div class=box>
281 <h2>■悩みどころ</h2>
282 <p>
283 <h3 class="e">■Ruby/M17Nとの整合性</h3>
284 <p>Ruby/M17Nとの整合性をどうとればいいか。
285 <ul>
286 <li><a href="http://www.inac.co.jp/~maki/ruby/ruby-i18n.html">M17N/I18N for Ruby</a>
287 <li><a href="http://www.inac.co.jp/~maki/ruby/matz-000516.html">Matz によるI18Nに関するコメント(2000/05/16) </a>
288 <li><a href="http://ns1.php.gr.jp/pipermail/php-dev/2002-April/000274.html">高橋征義氏による、Ruby M17Nの解説</a>
289 <li><a href="http://cvs.ruby-lang.org/~knu/cgi-bin/cvsweb.cgi/ruby/?only_with_tag=ruby_m17n">Ruby/M17N</a>
290 </ul>
291
292 <p>Ruby/M17Nブランチが本体に反映されるのは、ruby-1.8以降が予定されている。
293
294 <p>ソースコード中のm17n.c, m17n.hが該当個所。
295 内部的にはUTF-8として扱えるので、それを拡張すればいいか?
296 UTF-8の処理への追加という形で実装できる?
297
298 </div>
299
300 <div class=box>
301 <a name="links"></a>
302 <h2 class="e">■links</h2>
303 <p>
304 <h3 class="e">■CHISE project</h3>
305 <ul>
306 <li><a href="http://cvs.m17n.org/chise/">CHISE project</a>
307 (<a href="http://www.kanji.zinbun.kyoto-u.ac.jp/projects/chise/">kyoto-u</a>,
308 <a href="http://mousai.as.wakwak.ne.jp/projects/chise/">mousai</a>)
309 <li><a href="http://cvs.m17n.org/chise/ruby/index.html.ja.iso-2022-jp">Ruby/CHISE page at CHISE project</a>
310 <li><a href="http://cvs.m17n.org/cgi-bin/viewcvs/perl/?cvsroot=chise">師茂樹氏 Perl/CHISE → CHISE.pm</a>
311 </ul>
312
313 <h3 class="e">■Ruby</h3>
314 <ul>
315 <li><a href="http://www.ruby-lang.org/ja/">Ruby</a>
316 <li><a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/11450">akr氏によるRuby/CHISE仕様案</a>
317 <li><a href="http://moulon.inra.fr/ruby/bdb.html">Ruby/BDB</a>
318 <li><a href="http://www.ruby-lang.org/~eban/ruby/binaries/mingw/ext/">eban氏によるコンパイル済みの拡張ライブラリー</a>
319 </ul>
320 </div>
321
322 </div>
323
324 <address><a href="http://eto.com/"><span class="white">Kouichirou Eto</span></a>, 2003 at eto.com</address>
325
326 </body>
327 </html>