カテゴリー別アーカイブ: Ruby

漢字に中国語のPinyin、広東語の発音、Cangjie strokeを表示するWebサイト

だいぶ前からですが、漢字に中国語の拼音(ピンイン)、広東語の発音、繁体字の漢字入力に使うCangjie のキーシーケンスを表示するWebサイトを作りました。 中国語の学習に参考になればと思いまして。

https://masaru.org/ctp/

あとは、簡体字入力に使う五筆のキーシーケンスも表示できると良いのですが、元データを近々探してきます。

このサイトで使っているデータは Unicode の UniHan DB を用いて、後ろ側では TokyoCabinet を使って組んでいます。 速度的にはソコソコ出ているかと思います。

ソースコードは https://github.com/masaruyokoi/ChineseCharConverter に置いています。

広東語の拼音を探して… Unicode に辿り着く

広東語を勉強するためのツールの揃いがワルすぎるので、ちょっと自分で作ることに。

まずは、広東語の発音をコンピュータで調べる方法として http://www.kawa.net/works/ajax/romanize/chinese.html を使っていたのですが、自分でももうチョット工夫してみたいなと思っていたところでした。

イロイロと調べたところ、こんな感じでした。

さらに調査を進めたところ、Unicode の Unihan Database に、Unicodeの各文字と発音の対応が載っていることを発見。 Unihan とは Unicode Han(漢) の略だそうです。 さらっと見た漢字では、これらの内容が収録されています。

  • 各漢字の中国語普通話(Mandarin)、広東語、日本語、ベトナム語、韓国語での発音が記されています。 いわゆる CJKVってやつですね。
  • 簡体字・繁体字・日本語などの他言語の文字で、書き方は異なるが同じ意味の文字への対応もまとまっています。
  • Cangjie での入力方法、辞書などでの収録位置など。 あれ、五筆の入力方法が書いていないな。。

詳しくは、Unicode Standard Annex #38 Unicode Han Databaseを御覧ください。

ってことで、ちょいとこの Unihan を parse して表示するプログラムを書いてみました。 実行結果はこんな感じ。

Unihanをホジホジ

あとは、これを kvs などに入れてやったりすれば、先に上げたWebサイトみたいなものは作れそうですね。

[Ruby] class/module name must be CONSTANT

Ruby でコードを書いていたら「class/module name must be CONSTANT」とかいうエラーが。 調べてみたら、Class,Module名は大文字からはじまらないといけないらしい。 すっかり覚えていなかった、というか、シンボル名にそんな制約付けるなよ、とかちょっと思ったり。

例えば、小文字から始まるクラス名を使うと

irb(main):001:0> class aAA; end
SyntaxError: (irb):1: class/module name must be CONSTANT
class aAA; end
          ^
from /usr/bin/irb:12:in `<main>'

また、数値から始まるクラス名もダメ

irb(main):002:0> class 1A; end
SyntaxError: (irb):2: syntax error, unexpected tCONSTANT, expecting tCOLON2 or '[' or '.'
class 1A; end
        ^
(irb):2: syntax error, unexpected keyword_end, expecting $end
from /usr/bin/irb:12:in `<main>'

大文字から始まるクラス名はOK

irb(main):003:0> class Aa; end
=> nil

 

あと、後方参照を前方参照と勘違いして、検索してもなかなか知りたい情報にありつけなかったり。