「漢字かな」仕様検討中~IDの割り当て方針~

アンドロイドアプリ「漢字かな」ですが、もうすぐ小学6年生までの漢字がそろいます。
そこで、以前から予定していた機能改修の仕様検討を始めました。

まず実現したいのは下記2点です。
①学習の記録を保持させて、苦手な問題を識別できるようにする。
苦手な問題を優先的に出題させたり、問題と正答率を一覧で出せるようにできればと考えています。

②新しい単語を容易に追加できるようにする。
初期開発時に突貫工事で作ったので、漢字データの保持の仕方が良くありません。
下記のように、values/strings.xmlの配列文字列にカンマ区切りで無理やり値を持たせて、JAVAソース側で取り出す際にこねくり回している感じです。

    <string-array name="w0">
        <item>一,いちねん,一年,どういつ,同一,ひとつ,一つ</item>
        <item>右,うへん,右辺,みぎて,右手,さゆう,左右</item>
        <item>・・・</item>
    </string-array>

今後、新しい単語を追加していきたいと考えているので、データの持たせ方についても見直す予定です。

今回は、上記の①、②を実現するためにまず必要となる各問題を識別するためのIDの割り振り方針について、検討を行いました。

まず、漢字一文字(例:「一」、「右」など)の識別は、文字コードを利用しようと考えています。
UTF-8とUTF-16を候補としましたが、例えば漢字の「一」の場合、
UTF-8だと「E4B880」、UTF-16だと「4E00」となります。

UTF-8は英数は1バイト、日本語は3バイトで表現されるのに対して、UTF-16は英数も日本語も全て2バイトで表現されるようです。
最近、仕事でもUTF-8の方を良く見かけますが、「漢字」をテーマにした本アプリのIDとして利用するのであればバイト数の少ないUTF-16で良いと判断しました。

手作業でコード変換をするのは手間なので、一括置換できる方法を検討したのですが、漢字かなの元データはExcel管理だったので、下記の計算式で取得できました。
=DEC2HEX(UNICODE(“一”))
※上記の計算式だと「4E00」と表示されます。
※「一」の部分に変換したい漢字のセル番号を入れて使用します。

次は単語を識別するIDです。
漢字の「一」であれば、現在、下記3つの単語が登録されています。
いちねん(一年)
どういつ(同一)
ひとつ(一つ)

同じ書き方の単語でも読み方が違うもの(例:今日=きょう=こんにち)も存在するので、一意に識別しようとすると読み書き両方を合わせて識別できるIDとする必要がありますが、ちゃんと識別しようとするとどうしてもIDが長くなってしまいます。。。
面倒なので「漢字一文字の識別のコード+連番」でも良いかなぁとも思ってきたり。
上記の例の場合、下記のようになります。
4E000001 いちねん(一年)
4E000002 どういつ(同一)
4E000003 ひとつ(一つ)

連番の部分が本アプリ固有の情報となり、汎用性に欠けるのが引っかかるところですが、他に良いアイデアが浮かばなければこれで行こうかと思っています。

長くなってきたので、今回はこの辺で。
本業の方が忙しくなってきたので、少し先になるかもしれませんが、続きはまたいずれ。

以上です。

コメントは受け付けていません。

サブコンテンツ

公開中のAndroidアプリ(全て無料です)

ビジネス

おじさんのメモ帳 おじさんのメモ帳
シンプルなメモ帳
日報 日報
日報作成補助ツール
議事録 議事録
議事録作成補助ツール

学習(国語・算数)

漢字かな 漢字かな
漢字の読みの学習に
ひらがなプラス ひらがなプラス
かな・カナの学習に
暗算百問 暗算百問
毎日暗算で頭の体操
あんざん25 あんざん25
両手で計算してみよう

学習(理科・社会)

記号かな 地図記号
地図記号の学習に
魚かな 魚かな
海の生物の学習に
動物かな 動物かな
陸上の生物の学習に
野菜かな 野菜かな
植物な食物の学習に
元素記号 元素記号
元素記号の学習に

その他

こづかい帳 こづかい帳
計算力と金銭感覚を育もう
お絵かきプラス お絵かきプラス
メモや絵日記等に

このページの先頭へ