1997年5月アーカイブ錬金術師の実験室ようこそ、錬金術師の実験室へ。ここには、得体のしれない入力方式の材料がごろごろころがっています。トラックバック(0)「凧」あげプロジェクト(1997-05-24)「凧」とは?「凧」は、2ストローク系直接入力方式と超多段シフトの共存を可能にする、欲張りな直接入力ソフトです。ならって、形の似ている漢字一文字を使って「凧」(ローマ字表記は、某有名かな漢字変換ソフトのアナグラムになってます)と名付けました。(2002-11-10)現在、その第一歩として「漢ナビ」という2ストローク系漢直ソフトを開発し、公開しています。「凧」の野望(1997-05-24)タコの柔軟性もともとタコなやつなので、間違っても高度で巨大な「かな漢字変換」を目標にしたりはしません。その代わり、タコのような柔軟性を武器にして、いろんな入力方式や配列が利用できるようにします。対応可能な入力方式や配列は、以下の通りです。花配列(+2ストローク系漢直)調子に乗ってよく分からないものまで書いてしまいましたが、これ以外の方式や配列でも、辞書さえ作れば対応できます。タコに骨はあるのか?これだけ無節操に取り込もうとしているということは、「凧」自体には何の方式も配列も入っていないということです。骨がないように見えるかもしれませんが、可能な限り何でもアリにしようというポリシーがあるのです(と、言うのは簡単ですが、それを実現する方法を考えると、頭がくらくらしてきます)。マクロか辞書か?入力方式や配列を一種のマクロ言語のようなもので記述できたら、面白そうです。だれかが作ってくれたらマクロを書くぐらいはやりますが、その仕組みまで自作するのは私には難しすぎます。考えてみると、どんな方式や配列でも必要な機能はほとんど同じです。ほとんどは「キーボードから得た情報を何らかのルールに従って文字(列)に変換して返す」の繰り返しなのです。仮想鍵盤などを表示する機能も、その応用でできるでしょう。汎用的な辞書引き機能があればそれで間に合いそうです。いうわけで、入力方式に関する情報は、辞書形式にまとめることにしました。「凧」の辞書(1997-05-24)はじめにタコのような柔軟性を目標にするのならば、方式や配列に固有の情報を、できるだけドライバ本体ではなく外部ファイルの中(以下、「辞書」と呼びます)で定義できるようにするのがいいでしょう。従来の入力方式のソフトは、特定の「方式」専用に作られていたため、書き換え可能なのは「配列」だけでした。「凧」の目標は、「方式」と「配列」の両方を変更可能にすることです。辞書の交換によって、各種の入力方式や配列のドライバに化けるようにするわけです。「方式」と「配列」ここで、用語を整理しておきます。今まで私は、何のことわりもなく「2ストローク系入力方式」とか「覚えやすい漢字配列」などという使い方をしてきました。この配列の内容だけを変えたもの(たとえばG-Code)は、T-Codeと同じ「方式」であるといえます。各種の「方式」の中に、多様な「配列」があるわけです。T」などと言えば用が足ります。「○○方式の△△配列」ということまで言わなくても話が通じますが、何も知らない人に一から説明しようとすると骨が折れます。「凧」の辞書を作るのは、これらの方式や配列のことを何も知らない人に説明するのと同じくらい大変なことです。「NICOLA」というのは、親指シフトという(31個の文字キーを、2個の親指キーとの同時打鍵により2通りにシフトする)入力「方式」であり、その「配列」には、仮名と記号(89文字)が定義されている、というふうに整理するわけです。あとは、単独打鍵時と2通りのシフト打鍵時の配列図を示せば、それで必要最低限の説明ができるでしょう。ひとつ実例をあげると、「快速ローマ字」と「花配列」と「チョイ入力」と「親指シフト」の各入力方式は、「文字キーを何らかの方法でシフトする」という点で共通しています。そこで、まず、シフトに用いるキーを定義します。次に、タイミングによって(「通常」と「先打ち」と「後打ち」と「同時」に)分類し、最後に、シフト状態ごとの文字(列)の配列を定義します。これだけの情報があれば、ドライバは適切に動作できるはずです。このようにして、多種多様な方式や配列を説明する方法を考えていくと、辞書の中にどんなデータをどんなふうに入れておけばよいかが見えてきます。それを手がかりにして、辞書の基本的な書式を作っていくわけです。いっても、すべてを同じ辞書形式で統一するのは難しいので、辞書のヘッダに最低限の共通データを置き、その他の部分に方式や配列に固有のデータを入れることにしました。「凧」で使う主な辞書を、以下のように2グループ/8ブロックに分類しました。基本辞書グループシフト変換ブロック(01)打鍵文字変換ブロック(02)文字組後変換ブロック(04)文字位置変換ブロック(08)補助入力用辞書グループ単漢字変換ブロック(10)熟語補完ブロック(20)部首入力ブロック(30)交ぜ書き変換ブロック(40)基本辞書はドライバ内部で仮想キーコードや文字コード等の変換に用いるものです。このうち「打鍵文字変換」は必須で、仮名や漢字の配列を定義します。仮想鍵盤への漢字の配置を高速化するために使います。補助入力用辞書は、オプションです(ただし、「超多段シフト」をメインの入力方式にする場合は「単漢字変換」が必須となります)。各グループ/ブロックの詳細については、後述します。辞書ファイルの構造(未完)「凧」の骨組み(1998-09-03)日本語入力のステップ辞書のことは後回しにして、(今、ここにある普通のキーボードを使って)日本語を入力するためのステップについて考えてみます。AdventCalendar親指シフト速記的入力ウェブページm(as)mのプロフィールについてサインインこのページについてこのページには、1997年5月に書かれたブログ記事が含まれています。前のアーカイブは1997年2月です。次のアーカイブは1997年9月です。最近の記事はメインページで、過去の記事はアーカイブで閲覧できます。このブログを購読このブログはクリエイティブ・コモンズでライセンスされています。Proこのブログはクリエイティブ・コモンズでライセンスされています。