iconJaPad [ close ]

================================================================================
ひらがな手書き入力プログラム「JaPad」
Version 1.00 (2005.4.8)

三橋憲行
================================================================================

【目次】
    1. 概要
    2. 動作環境
    3. インストール
    4. アンインストール
    5. 使用方法
    6. 軌跡変換について
    7. 注意制限事項
    8. 著作権・配布条件等
    9. 変更履歴


1. 概要
   このプログラムは、Psionのタッチパネル上に表示した指定の領域に、スタイラスで手
   書きされたひらがなを、文字データに変換して日本語かな漢字変換プログラム(KEdit)
   に送り込むものです。
   快適なキーボード入力が長所のPsionで手書き入力という発想自体が無意味な上に、入
   力も一文字づつで効率が悪いため、実用的な価値は殆ど皆無なのですが、折角タッチ
   パネルがあるので、一つぐらいはこんなものがあっても面白いのではないかと思い、
   作ってみました。
   こんなものにUIDを消費してしまうのも何ですが、行儀の良いジョークプログラム、ま
   たはプログラミング練習の参考とでも考えていただければ幸いです。


2. 動作環境
   本プログラムの動作に際しては、以下の環境を必要とします。
    ・Psion Series 5 または 5mx または Revo。
    ・日本語かな漢字変換プログラム KEdit。
      (KEditの代わりにUniFEPを使用することも可能ですが、一部制限があります)
    ・UniFEP Ver.2 がインストールされていないこと。


3. インストール
   ZIPファイルを展開すると以下のファイルが生成されます。

     ./ ----- JaPad_ja.txt                      本テキスト
              JaPad.SIS                         インストールファイル
              srcs/ ------- JaPad.opl           本体のソースリスト
                            JaPad.oph
                            Icon.mbm
                            JaPad.mbm
                            dicUtl.opl          辞書操作用モジュールのソース

   ここからJaPad.SISファイルを取り出し、Psion上にインストールしてください。


4. アンインストール
   Psionのコントロールパネルに "Add/remove" アイコンがある場合は、"Add/remove"
   ダイアログ上で、JaPadを選択し、削除してください。そうでなければ、C:ドライブお
   よびD:ドライブの "\Ssystem\Apps\" ディレクトリ下にある "JaPad" ディレクトリを
   丸ごと削除してください。


5. 使用方法
   5.1. 起動
      Extrasバー上に表示されたJaPadのアイコンをタップしてください。画面の1/3〜
      1/4程度の大きさの、四角い入力領域と四つのボタンを持ったウィンドウが表示さ
      れます。起動の際、KEditが起動していない場合は、自動的に起動します。


   5.2. 表示/隠蔽
      JaPadのウィンドウは目障りなので、入力時以外は隠しておくことができます。初
      期設定ではタッチパネル左側にある、縮小アイコン (-) をタップすると隠れ、拡
      大アイコン (+) をタップすると表示されます。
      なお初期設定では、Psion標準になっている、拡大/縮小アイコンへのキーアサイン
      を横取りしてしまいますが、設定により [Shift]、[Ctrl]、[Fn] の修飾キーとの
      組み合わせに変更することが可能です。


   5.3. 画面
      JaPadの基本的な画面構成は、初期設定では以下の模式図のようになっています。
      なお画面各部の配置は、設定により左右逆にすることが可能です。

                ┏━━━━┯━━┳━━━━┯━━┓
                ┃  (a)   │(b) ┃  Enter │Esc ┃
                ┠────┼──╂────┼──┨
                ┃        │    ┃        │    ┃
                ┃  (c)   │(d) ┃  Recog │ BS ┃
                ┃        │    ┃        │    ┃
                ┗━━━━┷━━┻━━━━┷━━┛
                     入力領域         ボタン

        入力領域:       手書き入力を行う領域で、入力の都合上(a)〜(d)の四つの区画
                        に区切られています。
        [Enter]ボタン:  KEditから前面のアプリケーションに文字をペーストします。
                        (KEditに[Enter]キーのイベントを送ります)
                        入力領域に記入中の未変換文字がある場合は、文字に変換し、
                        KEditの入力エリアに送ってからペーストを行います。
        [Esc]ボタン:    KEditの入力エリアにある文字列を抹消します。
                        (KEditに[Esc]キーのイベントを送ります)
        [Recog]ボタン:  入力領域に書いた筆跡を文字に変換し、KEditに送ります。
                        (KEditに文字列に該当するイベントを送ります)
        [BS]ボタン:     KEditの入力エリアから末尾の文字列を削除します。
                        (KEditに[BS]キーのイベントを送ります)


   5.4. 入力
      入力は基本的に以下の流れで行います。
        (1) 入力領域にスタイラスで文字を書く。
        (2) [Recog]ボタンをタップして、書いた文字をKEditに送る。
        (3) (1)〜(2)の操作を繰り返してKEditの入力エリアに文字が溜ったら、[Enter]
            ボタンをタップして前面のアプリケーションにペーストするか、JaPadを隠
            してKEdit上で漢字変換するなどの操作を行う。

      入力領域への文字入力では、基本的にはPalmのような特殊な書き方をする必要はな
      く、普段書いている一般的なひらがなで構いませんが、数字、記号、小文字などを
      区別するため、四つの区画の使い方に制限を設けています。JaPadで入力可能な文
      字と、記入する区画は以下の通りです。

                ┏━━━━┯━━┳━━━━┯━━┓
                ┃  (a)   │(b) ┃  Enter │Esc ┃
                ┠────┼──╂────┼──┨
                ┃        │    ┃        │    ┃
                ┃  (c)   │(d) ┃  Recog │ BS ┃
                ┃        │    ┃        │    ┃
                ┗━━━━┷━━┻━━━━┷━━┛

         アラビア数字      0〜9                  区画(a)(c)にまたがって記入
         一部の英記号      '"^                   区画(a)に記入
         他の英記号        !#$%&\/<>{}+-=:;?     区画(c)に記入
         かぎ括弧(始)      「                    区画(a)(c)にまたがって記入
         濁点・半濁点      ゛゜                  区画(b)に記入
         句読点            。、                  区画(d)に記入
         他のかな記号      ×〜」ー              区画(c)(d)にまたがって記入
         ひらがな小文字    ぁぃぅぇぉっゃゅょ    区画(c)(d)にまたがって記入
         その他のひらがな                        全区画にまたがって記入

      なお、入力画面の表示中に行ったキー入力は、そのまま日本語かな漢字変換プログ
      ラムに送られます。


   5.5. 設定
      JaPadの各種設定はSettingメニューから行います。設定可能な項目には以下のもの
      があります。

      1) Options...
         入力した文字の送信先となる日本語かな漢字変換プログラムを変更することが
         できます。JaPadはKEditを前提として設計してありますが、UniFEPに切り替え
         ることも可能です。(UniFEPでは一部制限があります)
         なお、日本語かな変換プログラムの設定を変更した場合は、再起動が必要な旨
         メッセージを表示して、自動的に終了します。

         また、隠れているJaPadの画面を表示させるために拡大アイコン(+)をタップす
         る際、[Shift]、[Ctrl]、[Fn]の修飾キーと組み合わせるかどうかを設定するこ
         とができます。

      2) Returns after pasting
         [Enter]ボタンをタップして文字列をペーストした後、再びJaPadの入力画面に
         戻ります。この項目にチェックが無い場合、ペーストした後JaPadの入力画面は
         隠れたままになります。

      3) Flip layout
         JaPadの入力画面を左右逆に配置します。


   5.6. 辞書編集
      自分の書いた文字がうまく変換されない場合、JaPadの変換辞書に追加・変更を行
      うことが可能です。辞書編集を行う場合は、JaPadの起動時に引数 "-m" を与えて
      ください。JaPadの入力画面が、下図のような編集用になって起動します。

                ┏━━━━┯━━┳━━━━━━━┓
                ┃  (a)   │(b) ┃              ┃
                ┠────┼──┨  テキスト    ┃
                ┃        │    ┃  表示用      ┃
                ┃  (c)   │(d) ┃  ウィンドウ  ┃
                ┃        │    ┃              ┃
                ┗━━━━┷━━┻━━━━━━━┛

      編集用画面では入力用のボタンはなく、その部分はテキストウィンドウになってい
      ます。またメニューが通常のものよりいくつか増えています。編集用画面でできる
      ことは以下のような内容です。

      (1) 入力
          編集画面においても文字の書き方は通常と同じです。ただし、文字を変換する
          際はテキストウィンドウのどこかをタップしてください。編集画面で入力した
          文字は変換するだけで、KEditに送ることはできません。
          テキストウィンドウをタップすると、入力領域に書いた文字の軌跡情報が表示
          され、辞書に該当するパターンが登録されていれば、KEditに送る文字列が表
          示されます。登録されていない場合はダイアログが開き、KEditに送る文字列
          の入力を求めます。

          JaPadの辞書は、入力領域に書いた文字の軌跡を表わす文字列と、それに対応
          する文字をKEditに入力するためのキーの組み合わせが対になったものです。
          詳細は後述しますが、例えばひらがなの「と」を書いた時、得られた軌跡が
          「Q6tR963xO」だとすると、KEditに「と」を入力するための「to」を対応する
          キーの組み合わせとして登録します。

      (2) 変更・削除
          既に登録されている組み合わせを変更・削除するためには、Editメニューの
          Search & edit...を選択してダイアログを開きます。ここで変更したい組み合
          わせの軌跡情報またはKEditに送るキー情報を入力すると、該当する組み合わ
          せを検索して表示しますので、変更・削除を行います。

      (3) 一覧
          EditメニューのDump dictionary...を選択すると、登録されている組み合わせ
          を一覧することができます。

      (4) 書き出し
          FileメニューのExport...を選択すると、登録されている組み合わせをテキス
          トファイルに書き出すことができます。ファイルはKEditに送るキー情報と軌
          跡情報をタブで区切って一行ずつ並べたものです。変更・削除が大量にある場
          合は、テキストに書き出して編集することも可能です。

      (5) 読み込み
          FileメニューのImport...を選択すると、テキストファイルを読み込んで、組
          み合わせを登録することが可能です。テキストファイルの書式は書き出したも
          のと同じです。登録は既存の辞書に追加する形で行いますので、変更・削除を
          行う場合は、書き出しで全登録を書き出した後それを編集し、一旦終了して辞
          書ファイルを削除した後、再び起動して読み込みで再登録します。

      (6) トレース情報表示
          EditメニューのTraceを選択すると、入力領域への記入時に、テキストウィン
          ドウ上へ座標データをリアルタイムに出力します。


6. 変換について
   ここではJaPadで手書きされた軌跡を文字列に変換する方法について解説します。通常
   の使用に当たっては必須となるものではありませんが、登録辞書を編集する場合には
   知っておいた方がよいと思われます。


   6.1. 概要
      JaPadの手書き文字入力は、文字認識などという高度なものではありません。やっ
      ているのは、単に軌跡情報と入力文字列を登録した辞書から、検索された軌跡に対
      応する文字列をKEditに送っているだけです。処理の流れは以下のようになってい
      ます。
        1) 手書き入力領域へのペンイベントから軌跡情報を取得し、記号化する。
        2) 記号化された軌跡情報をキーに辞書を検索し、KEditに送る文字列を得る。
        3) 得た文字列をキーイベントとしてKEditに送信する。


   6.2. 軌跡の記号化
      入力領域は四つの区画に分れており、書かれた文字は座標情報とこの四つの区画か
      ら次のようにして記号化します。

                ┏━━━━┯━━┓
                ┃  (a)   │(b) ┃
                ┠────┼──┨
                ┃        │    ┃
                ┃  (c)   │(d) ┃
                ┃        │    ┃
                ┗━━━━┷━━┛

      (1) ペンダウンのイベントが発生すると、その座標が四つの区画のどこにあるかを
          軌跡情報に記録します。(a)〜(d)の各区画はそれぞれ Q, R, T, X の文字に置
          き換えて記録されます。

      (2) ペンがドラッグされ、その移動距離が閾値を越えると、移動方向を控えます。
          その移動方向と前回控えた移動方向との差分が45度以上になると、移動方向を
          角度によって 0, 3, 6, 9 の四方向に記号化します。ひらがなの特性上、角度
          の記号化は次のように偏りをもたせています。

              0:  -45 〜 +45度
              3:  +45 〜 +150度
              6:  +150 〜 +240度
              9:  +240 〜 +315度

          そして、記号化された角度が前回記号化されたものと異なっていたら、軌跡情
          報に記録します。

      (3) ペンアップのイベントが発生すると、その座標が四つの区画のどこにあるかを
          軌跡情報に記録します。(a)〜(d)の各区画はそれぞれ q, r, t, x の文字に置
          き換えて記録されます。

      (4) [Recog]ボタンがタップされ入力が終了すると、記録された軌跡情報に通過点
          情報を付加します。通過点情報は、四つの区画のどこをペンが通過したかの記
          録で、(a)〜(d)それぞれの区画にペンイベントが発生すると、それぞれ二進数
          の 0001, 0010, 0100, 1000 をビットORし、最終的に得られた数値をASCII文
          字コードの 0x40 に足して A〜O の文字に置き換えたものです。

      このようにして得られた軌跡情報の文字列をキーとして、パターン辞書を検索しま
      す。例えばひらがなの「と」では「Q6tR963xO」、「し」では「Q63xM」というよう
      な軌跡情報が生成されることが予想されます。

      このようにすると、書かれた文字の筆跡は線の始点・終点・方向の変化以外の細か
      な情報が脱落し、情報量が減るとともに、書き手の癖による微妙な差異の影響も減
      らすことが可能です。その反面で「3」「ろ」、「ち」「ら」、「え」「れ」など
      の区別が付きにくくなってしまいます。入力区画の使い分けや、角度の記号化の際
      の偏りはその対策です。


   6.3. 辞書検索
      JaPadでは軌跡情報の文字列をキーとしてパターン辞書の検索を行いますが、辞書
      の肥大化を抑えるため、以下のような特殊な規則を設けています。

      (1) 濁点、半濁点
          濁点付きおよび半濁点付きの文字は、まず清音を検索し、次に検索された文字
          の濁点・半濁点を付き文字を検索するという二段階で検索を行います。例えば
          「じ」という文字が書かれて「Q630xRrRrO」という軌跡が得られたとすると、
          まず濁点部分を除いた「Q630xO」「Q630xM」で検索を行ないます。
          そこで「si」という文字が検索されると、その先頭に濁点を表わす「#」を付
          加して「#si」という検索文字列を作成し、再度検索を行います。辞書には濁
          点・半濁点付きの文字が登録されており、最終的に「ji」という文字列を得て
          これをKEditに送信します。

      (2) デフォルト文字
          書き手のくせによるばらつきが多い文字は、辞書を肥大化させる可能性がある
          とともに変換率も悪いので、辞書登録せず、パターン毎のデフォルト文字とし
          て該当する軌跡情報が見つからなかった場合に、その文字が検索されたものと
          して扱います。
          デフォルト文字は軌跡パターンの末尾毎に、以下のものが存在します。

            〜A(")       〜E(8)        〜D(\)        〜H(.)     〜tL(lyu)
            〜tM(yu)     〜tO(yu)      〜xL(le)      〜xM(fu)   〜xO(fu)
            〜RrRrO(bu)  〜RrR6rO(bu)  〜R6rRrO(bu)  〜R6rR6rO(bu)
            上記以外の 〜rO(pu)

          例えば、「T0963603qE」という軌跡が得られたとし、これを検索しても該当す
          るものが無かったとすると、軌跡パターンの末尾が E になっているので、こ
          の文字を「8」とみなしてKEditに「8」を送ります。



7. 注意制限事項
   7.1. 本プログラムでは、日本語かな漢字変換プログラムとしてKEditを使用すること
        を前提としています。設定によりUniFEPに入力文字を送ることは可能ですが、
        UniFEPでの使用に当たっては次のような制限があります。

        ・隠れているUniFEPの入力ウィンドウを、自動的に表示させることができない
        ・画面の制御が複雑になるため、処理速度の低下や画面のちらつきが発生する
        ・[Enter]キーを押すと、UniFEPの入力エリアにある文字が化ける

   7.2. 本プログラムの制限ではありませんが、UniFEP V2が導入されている環境でKEdit
        を使用すると、UniFEPの画面表示処理の悪影響により、KEditの入力エリアにあ
        る文字が化けて表示されます。

   7.3. 本プログラムでは、KEditの制限により @, (, ) の文字は入力できません。
        (これらの文字を入れると、後続の文字がすべて英数文字になるためです)


8. 著作権・配布条件等
   8.1. 本プログラム、および一緒に配布される関連の生成物(ソースコード、アイコン、
        文書等)の著作権は、作者に属します。

   8.2. 本プログラムは著作権者によって無償で配布されます。本プログラムの使用にあ
        たっては、いかなる費用も発生しません。

   8.3. 本プログラムは、著作権者の承諾無しに再配布することが可能です。ただし配布
        にあたっては、本文書および全ソースコードを添付する必要があります。

   8.4. 本プログラムの販売または配布によって対価を得ること、商用ソフトウェアまた
        はソースコードを公開していないソフトウェアの一部として使用すること、商用
        ソフトウェアまたはソースコードを公開していないソフトウェアに同梱または添
        付すること、企業その他の営利団体が販促目的で配布することの一切を禁止しま
        す。なお、本プログラム自体を配布しなくとも、本プログラムが導入されている
        ことを前提としたソフトウェアを配布する場合は、本プログラムを同梱または添
        付したものとして扱い、同様の条件を適用します。

   8.5. 本プログラムを使用したことによる、身体的、精神的、物的、金銭的、社会的、
        宗教的、政治的、および他のあらゆる損害に対し、作者は一切、賠償責任を負い
        ません。本プログラムの使用にあたっては、上に述べたようなあらゆる損害に対
        して賠償を受ける権利を放棄しなくてはなりません。

   8.6. 本プログラムを入手したすべての人は、Symbian社より割り当てられた正規のア
        プリケーションUIDを除き、著作権者の承諾無しに、本プログラムのソースコー
        ドの全部または一部を自身の著作物のために再利用すること、その著作物を配布
        することが可能です。ただしその場合、本プログラムのソースコードを再利用し
        ている旨を明記するとともに、再利用した著作物についても全ソースコードを公
        開し、かつ本章に定める配布条件・使用条件・再利用条件・再配布条件を同様に
        適用しなければなりません。

   8.7. 本プログラムのソースコードを再利用して自身の著作物を作成する人は、本プロ
        グラムに関して他の人が所有する権利である、自由な配布、自由な使用、自由な
        再配布、自由な再利用のいずれをも制限してはなりません。

   8.8. 本章において上に掲げたすべての条項は、本プログラムを使用するか、あるいは
        ソースコードを再利用した時点で、同意したものとみなします。


9. 変更履歴
   Ver.1.00 (2005.04.08):
     ・新規公開。