このソフトは,文節解析しない/動詞の活用形を考慮しない/品詞を考慮しない,と比較的シンプルな日本語入力ユーティリティです。
簡素な日本語入力方法として有名なものにSKKがありますが,その同類ですね。仕組みも使い方も簡単で,使い込むうちにだんだん手になじんでくる……そんな鉛筆みたいなツールを目指しています。
主な特徴は下記の通りです。
GNU General Public License(GPL、参考用の日本語訳)に同意の上、ファイルをダウンロードし、適当なフォルダに展開してください。インストーラ等はありません。
GPLに同意できない場合は本プログラムのダウンロード(コピー)は許可しません。すでにダウンロードしてしまっていた場合は即座にファイルを削除してください。
なお、作成ずみの設定ファイルがsampleフォルダにあります。ファイル名を"saikoropencil.xml"に変更すると、そのファイルを設定ファイルとして読み込みます。
サンプル
まずはじめに、ファイルを展開したフォルダのbin/mswin/フォルダから"SaikoroPencil.exe" を見つけ、ダブルクリックして実行してください。数十秒後、メインウインドウが表示されれば起動終了です。
では、漢字を入力してみましょう。右のAltキーを押してください。 漢字が入力できるようになります。
はじめに"入力"と入力してみましょう。"n y u u r y o k u"と入力すると……
のように、キーボードを摸した画面の "Q","C","J","L" (ローマ字入力であまり使わないキー)上に変換候補が、リターンキーの部分に入力した仮名が表示され ます。
ここで"入力"が表示されている "J" キーを押すと、現在フォーカスのあるウィンドウに文字が入力されます。
"入力を"みたいに助詞がついた文字も同様に入力出来ます。
といっても、文節構造を解析しているわけではなく、単に "辞書に登録されている内容と合致しない後ろの文字を仮名入力としてくっつけている"だけです。
ですので、"入力を簡単にする"を入力しようとして一気に入力してしまうと、"入力をかんたんにする"となってしまいます。"入力を" "簡単にする"と、辞書に登録されている言葉に区切って入力してください。
文字を入力したときに、希望の漢字が画面に出てこなかった場合、スペースキーを押して下さい。例えば "押す" を入力しようとすると、
このように”おす”に合致する候補が優先して表示され、”お”+”す”の”押す”は表示されません。ここでスペースを押すと、このように
ほぼ全てのキーに割り振られるので、この中から”押す”を探し出してそのキーを押してください。
なお、さいころえんぴつには学習機能がありますので、次回からはこのように
”押す”が優先して表示されます。
その他の部分については、普通のIMEと同じになるように調整しています。
#もしなっていなかった場合は、私までレポートをおねがいします。
さいころえんぴつには、
いままで入力した回数の多い単語を優先して表示する頻度学習機能
2つの単語を組み合わせて1つの単語に設定する単語学習機能
新しい単語を登録する単語登録機能
頻度学習機能は説明するまでも無いでしょう。1回でも多く入力された単語を、他の単語よりも優先して候補に表示する機能です。
単語学習機能は、辞書に登録されていない単語を学習する機能です。
ちょっと特殊な操作になりますが、
登録させたい単語のカナを入力する
漢字に変換されなかった部分を、バックスペースで削除する
漢字を候補から選択して確定する
確定した単語に続く単語のカナを入力し、候補から漢字を選択して 確定する
単語登録機能は、全く新しい読み仮名の単語を登録する方法です。
登録させたい単語のカナを入力する
ウインドウを右クリックするとプルダウンメニューが表示されるので、項目の中から『単語登録』を選択する。
『単語』の欄に登録したい単語を入力する
OKボタンを押す
さいころえんぴつは、同じディレクトリにある saikoropencil.xml ファイルを変更することにより、キーボードからの入力をどのように処理するかを自由にカスタマイズすることができます。
saikoropencil.xmlは、xml 形式のファイルで、下記のような内容となっています。現在はShift_JIS以外の文字コードは利用できません。
<?xml version="1.0" encoding="Shift_JIS"?> <ルート要素 configuration> <IM部分の設定 appropriateword要素> <辞書の設定 dictionary要素/> <appropriateword/> : <キーの押下/押上時の挙動の設定 table要素> <どのタイミング? event要素> <何を実行する? command要素> </event> : </table> : </configuration>
それでは詳細な説明に入りましょう。
ルート要素は configuration です。この要素には下記要素が含まれます。
<configuration> <appropriateword要素> IMの設定 <appropriateword/> <table> キーの押下/押上時の挙動の設定 </table> </configuration>
それぞれの要素は下記に説明するような構成になっています。
appropriateword
<appropriateword id="一意の名称" IMの設定を指定します。現在は、入力された仮名をどのようなルールで漢字に変更するかを定めた辞書ファイルの指定しかできません。 </appropriateword>
設定セットの名前です。
この要素では、入力された仮名を漢字に変換するためのルールを記載したファイルを指定します。
skkdictionary
<skkdictionary xml:link="simple" href="辞書ファイルへのパス"/>
キーからIME入力として入力された文字列を単語に変換するルールを記述した辞書ファイルを指定します。現在はSKK形式、なおかつ文字コードがShift_JISの辞書ファイルのみ利用できます。
XMLの単純リンクとして指定してください。
learningdictionary
<learningdictionar xml:link="simple" href="辞書ファイルへのパス" maxcount="頻度による優先順位変更を行わなくする回数"/>
入力した文章の入力回数を記憶し、より頻度の高い文字を優先する学習タイプの辞書を指定します。設定ファイル中で1つだけ指定できます。
ある一定以上の回数を入力したあとは(指が文字の場所を覚えているでしょうから)優先順位を変更しないようになります。(Max 65,534回)
table
<table id="一意のテーブル名" キーが入力された時の挙動をevent要素(後述)で指定します。 </table>
テーブルの名前です。
起動直後には"normal"というidのtableを使用しますので、"normal"という名前のtableは必ず作成して下さい。
この要素では、どのキーが押下/押上された時にcommand(後述)を実行するかを指定します。
将来的にはマウスのイベント等、様々なイベントにも対応する予定ですが、今の所はキーイベントしか反応しません。
keyevent
<keyevent code="0xXX | otherkey" iskeyup="true | false" dootherkey="true | false"> XXのキーコードを持つキーの押下/押上時の挙動を command(後述)で指定します。 </keyevent>
どのキーが押下/押上されたときかをキーコード(16進数)で指定します。
otherkeyを指定した場合は、そのtableで指定されていないキー全てを指定したことになります。
指定しない場合は、全てのキーを指定したことになります。
押下かあるいは押上かを指定します。
指定しない場合は、押下および押上両方を指定したことになります。
otherkeyで指定された要素を実行するかどうかを決めます。
dootherkeyをtrueに設定した場合は、そのイベントを処理したあとでもcode="other"属性のイベントを処理します。
commandでは、実行する内容を下記属性をもつcommand要素を1つ以上並べて指定します。
それぞれの詳細は下記の通りです。
sendkey
キーの押下/押上を行ないます。
<sendkey code="0xXX" iskeyup="true | false" shift="forceup | forcedown" ctrl ="forceup | forcedown" alt ="forceup | forcedown" kana ="forceup | forcedown" guideword="案内板に表示される文字" />
押上/押下するキーコードを0xXX(XXは16進数)で指定します。
指定しない場合は、「現在押されたキーをそのまま実行する」という動作になります。
押上かどうかを指定します。
指定しない場合は押下を実行し、すぐ押上を実行します。
なお、iskeyupがfalseの場合は、下記の様な特殊な動作をします。
keyeventのiskeyupが"true"の場合
押下の後、直ちにキーの押上を実行します。
keyeventのiskeyupが"false"の場合
そのキーが押上された時にキーの押上を実行します。
shiftキーを押上/押下してから押上/押下するかを指定します。指定しない場合はなにもしません
-> forceup(押上した状態で行う)
| forcedown(押下した状態で行う)
ctrlキーを押上/押下してから押上/押下するかを指定します。
-> forceup(押上した状態で行う)
| forcedown(押下した状態で行う)
altキーを押上/押下してから押上/押下するかを指定します。
-> forceup(押上した状態で行う)
| forcedown(押下した状態で行う)
kanaキーを押上/押下してから押上/押下するかを指定します。
-> forceup(押上した状態で行う)
| forcedown(押下した状態で行う)
案内板に表示されるガイドにどのような文字を表示するか指定します。
usetable
指定されたtableから該当するeventを探して実行します。(現在のtableの代わりに指定されたtableが実行されます)
存在しないkeytableのtablenameを指定した 場合の動作は未定です。 指定しないでください。
changetable
現在のキーテーブルを変更します。
<changetable idref="変更したいtableのname"/>
変更したいtableのnameを指定します。
存在しないtableのnameを指定した場合の動作は未定です。指定しないでください。
setglobalimestatus
IMEの設定を変更します。
<changetable status="IMEの状態"/>
IMEの状態を変更します。
-> on:IMEをONにする
| Off:IMEをOFFにする
inputglobalime
IMEに文字を未確定の状態で入力します。
<changetable input="IMEに入力する文字列"/>
IMEに文字を未確定の状態で入力します。IME側の仕様により、一部の文字が指定した文字から変化することがあります。
例:IME2000をデフォルトの設定で使用している場合、「/」が「・」に変化します。
inputime
<inputime input="入力したい索引文字" idref="作用するappropriatewordのid"/>
指定した文字を索引文字として入力します。
索引文字は辞書ファイルから漢字を検索するのに使用されます。
idrefを指定した場合は、そのappropriatewordを使用します。指定しなかった場合は、最も先頭にあるappropriatewordを使用します。
deleteimeheadword
<deleteimeheadword/> idref="作用するappropriatewordのid"/>
索引文字を全て消去します。 idrefを指定したばあいはそのappropriatewordについてのみ、指定しなかった場合は全てのappropriatewordの索引文字を削除します。
deleteimefirsttoken
<deleteimefirsttoken idref="作用するappropriatewordのid"/>
最初に入力された索引文字を消去します。 idrefを指定したばあいはそのappropriatewordについてのみ、指定しなかった場合は全てのappropriatewordの索引文字を削除します。
deleteimelasttoken
<deleteimelasttoken idref="作用するappropriatewordのid"/>
最後に入力された索引文字を消去します。 idrefを指定したばあいはそのappropriatewordについてのみ、指定しなかった場合は全てのappropriatewordの索引文字を削除します。
changeimelasttokentodakuon
<changeimelasttokentodakuon idref="作用するappropriatewordのid"/>
最後に入力された索引文字を濁音に変更します。 idrefを指定したばあいはそのappropriatewordについてのみ、指定しなかった場合は全てのappropriatewordの索引文字を変更します。
changeimelasttokentohandakuon
<changeimelasttokentohandakuon idref="作用するappropriatewordのid"/>
最後に入力された索引文字を半濁音に変更します。 idrefを指定したばあいはそのappropriatewordについてのみ、指定しなかった場合は全てのappropriatewordの索引文字を変更します。
sendimeword
<sendimeword index="変換候補の番号を10進数で指定" |"asis" |"katakana" idref="作用するappropriatewordのid"/>
indexが番号の場合、索引文字を利用して辞書ファイルから変換候補を選択します。選択される候補は内容として指定された番号の候補になります。
indexが"asis"の場合、索引文字をそのまま出力します。
indexが"katakana"の場合、索引文字をカタカナに変換し出力します。
idrefを指定した場合は、そのappropriatewordを使用します。指定しなかった場合は、最も先頭にあるappropriatewordを使用します。
storelearndicwithnext
<storelearndicwithnext/>
この要素を指定した直後に、sendimeword要素で確定した文字と、その次にsendimeword要素で確定した文字を1つにまとめてlearningdictionaryで指定した辞書に登録します。
executeafter(未実装)
<executeafter msec="遅らせたい時間をmsec単位で指定"> <遅らせて実行するcommand要素/> </executeafter>
msec単位で指定した時間が経過した後に指定したcommandを実行します。
また、msec属性を指定しない場合、まだ実行されていないaftertime指定のcommandの実行を中止することができます。(command要素は無視されます)
遅らせたい時間をmsec単位で指定します。
10msec単位となっているのと、動作時のオーバーヘッドがあるので、あまり精度は高くありません。
setstatus
<setstatus> <valuestatus name="xx" value="false | true"/> </setstatus>
statusの値を内容として指定したものに変更します。
下記のxxの部分には正の整数、または all を指定できます。
初期状態は false です。
executeif
<executeif> <valuestatus name="xx" value="false | true"/> <条件が成立したときに実行するcommand要素/> </executeif>
上記の setstatus で指定した値、または索引文字の有無が指定した条件と一致した場合、command 要素を実行します。
判定する状態を指定します。
<valuestatus name="xx" value="false | true"/>
そのvalueの値
<valuestatus name="headwordexists" value="false | true"/>
索引文字があるかどうか
<valuestatus name="currentequalsecondfromlasttime"
value="false | true"/>
KeyTableが変更される前のKeyTableと、Key入力により次に変更するKeyTableが同じかどうか
statusが入れ子になっているときはそれらを全て満たした時に、並列に並んでいるときはそれらのstatusのどれかを満たした時に条件を満たしたと判定します
とりあえず。以上です。これで一通りはカスタマイズ出来ると思います。
添付ファイルのsampleフォルダにサンプルがありますので参考にしてください。
Copyright (C) 2002年8月、2003年 野分 nowake@debilotte.net
このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフトウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョン2)の定める条件の下で再頒布または改変することができます。
このプログラムは有用であることを願って頒布されますが、*全くの無保証* です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも含め全く存在しません。詳しくはGNU一般公有使用許諾書(参考用の日本語訳)をご覧ください。
あなたはこのプログラムと共に、GNU 一般公衆利用許諾契約書の複製物を一部受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団まで請求してください(宛先は the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA)。
また、本マニュアルを、フリーソフトウェア財団発行の GNU フリー文書利用許諾契約書(第 1.1 版) が定める条件の下で複製、配布、あるいは変更することを許可する。変更不可の章及び表表紙テキスト、裏表紙テキストは指定しない。この利用許諾契約書の複写は「GNU フリー文書利用許諾契約書」(参考用の日本語訳)という章に含まれている。
なお、Yahoo! Japanのような、「アップロードしたすべてのコンテンツについて、GPL/FDLで許可した以上の権利を要求する」プロバイダへの転載は禁止します。