TOP > 点字変換ツール(ひらがな) > 制作秘話

***********************************************************************************************

                点字変換ツール(ひらがな) 制作秘話
                                                         Copyright(C) 2011 by しげるがもげる
***********************************************************************************************

◆はじめに
 このドキュメントには、制作に関わっての作者の思いや苦労が書いてあります。
 技術的な細かいことに興味のない方は、読み飛ばしてください。
 エクセルでマクロを組んでみようかなと思われる方は、読むと参考になる部分があるかもしれません。


◆制作秘話
 きっかけは、国語の教科書に載っていた点字を見たことです。
 身の回りに点字があることは知っていましたが、こんなふうに一覧で見ると迫力があります。

 それで、まずひらがなを点字に変換するマクロを組もうと考えました。
 仕組みとしては、点字の一覧表と照合して出力すればいいので、組み立てることはそんなに難しくはないでしょう。
 作っていくうちに今度は、「点字をひらがなに変換できたら、おもしろいなあ。」と思うようになり、
 点字をひらがなに変換するマクロも作りました。


◆工夫や苦労など
 ● ひらがな → 点字
 <ひらながの文字数判定>
  作るに当たっては、点字の一覧表は必ずいるので、まず一覧表を作りました。(点字とひらがなを並べて)
  そして、文字と点字を照合していく段階になって、ひらがなが必ずしも1文字扱いではないことに気が付きました。
  「あ」や「が」は1文字ですが、「きゃ」は2文字、「う゛ぁ」になると3文字扱いになるのです。
   (Deleteキーで削除していくとわかります。)
  
  つまり、文章を入力して変換する場合、「何文字分を変換するか」を判断させないといけないのです。
  そこで、どこまでが1区切りなのか、判定する文字として「ぁぃぅぇぉゃゅょ゛」を設定しました。
  これらの文字を指針とすることで、文字の区切り位置を決めることができました。

 <点字をシートに書き込む>
  一覧表と照合したら、今度は点字をシートに書き込むのですが、点字データは6つで1組になっています。
  僕は今までマクロを組むとき、セル単位で組むことが多かったのですが、今回その手法を使うと、
  6つのデータを順に読み込んで、6つのデータを順に書き込むことになります。
  これでは処理するのに時間がかかると考え、初めてRangeで6つを1つの範囲として扱うことにしました。
  これで、読み込みと書き込みが1行で済むようになり、処理の速度も速くなりました。
  

 ● 点字 → ひらがな
 <入力した点字と、点字一覧表とのデータ比較>
  最初は、ひらがなを点字に変換する一覧表をここでも使おうと考えていましたが、処理が煩雑になるのでやめました。
  というのも、点字枠が1マスのものと2マスのものがあること、2マスのものは1マス目の点字でグループがいろいろあるからです。
  そこで、まず点字の側から見た、グループ別の表に作り直しました。
  
  さて、問題はここからです。
  点字は、1つの枠の中に6個のデータを持っています。
  ということは、単純に、入力した点字と一覧表と照合すると、1文字判定するのに6回の照合が必要になってしまいます。
  これでは、膨大な時間がかかります。
  そこで、何とか照合する時間を短縮する方法がないものかと考えた結果、2進数を使うことを思いつきました。
  点字は、1の点〜6の点 までの6カ所に点を打つ・打たないで表しています。(場所の正確な位置は、とほほの点字入門で見てください。)
  そこで、それぞれの場所に、点数を付けました。
  (1の点→2の0乗  2の点→2の1乗  3の点→2の2乗  4の点→2の3乗  5の点→2の4乗  6の点→2の5乗)
  点があれば、その場所の点数を足していきます。合計点が、その点字の点数です。
  この方法だと、一覧表の点字を1つの数値で表すことができます。(点数が重なることは絶対にないので)
  同じように、入力した文字も点数化して、比較します。

 <変換する点字があるかどうか>
  点字をひらがなに変換する処理は、点字が続けて存在するまで続きます。
  まず、横に調べていき、なければ改行して下の行で同じように横に調べていきます。
  このときも、6つのセルを1つの範囲として考え、CountAでデータがあるかどうか調べるようにしました。
  このことで、Do〜Loop文で楽に設定できるようになりました。


◆最後に
 ここまで、熱心に読んでくださってありがとうございました。
 プログラムを組んだことのない方には、わかりにくい内容だと思いますが、これを機会にエクセルの
 マクロに興味を持っていただければ、と思っています。
 エクセルは、本当に楽しいツールです。自分の思いや考えが表現できます。
 そんなエクセルに、日々、感謝です。