漢字にふりがなを付与するルビ振りツールを公開
こども向けのサイトを作るときに考えなければならない要件の1つに、対象レベルをどこにあわせて漢字をどの程度使うか?ってのがあります。
あまりに平仮名ばかりだと逆に読みづらくなるため、ある程度漢字を使ってルビを振って対応することがあります。もっともブラウザによって見た目が結構異なるんですが、こども向けと考えると、ほぼ100%に近い確率で ie アクセスとなります。とすると、すなおにルビタグを用いるのがスマートです。
・・・なんて要件で、ここ最近苦労した覚えがあるので、次回から楽ができるようにツールを作りました。入力文字はなんでも良いのですが、html ソースを入力すると、ルビを振った html が出力される。そんなツールです。
開発当初は Mecab で形態素解析をしてルビを振っていたのですが、よく考えたら Yahoo! Web API でルビを付与するサービスがあったのを思い出しました。「Yahoo!デベロッパーネットワーク - テキスト解析 - ルビ振り」 このサービスは Yahoo! アプリケーション ID の取得が必要ですが、24時間以内で1つのアプリケーション ID につき 50000 件のリクエストを上限として利用が可能です。ツール用途であれば十分すぎる制限です。
ふりがな(ルビ)振りツール :: http://www.drk7.jp/pub/tools/YahooRuby/index.cgi
ちなみに一番苦労したのは、XML::Simple を使ってレスポンスの XML を解析させると、どうにも途中から文字化けしてしまう点でした。文字化けの切り分けで無駄に時間を食ってしまいました。
と XML パーサーを切り替えてあげたら、すんなりと文字化けはなくなりましたとさ。あーあと、制御コード系(\x01 - \x1F)が CDATA で返却されるんだけど、XML Parser を通るとその辺のデータがなくなってしまうのも若干困りました。一応その辺も対処したつもりですが、あんましテストしてません。
気が変わらなければ、近いうちにリバースプロキシ版の変換サービスも作ろうかと思ってます。
コメントやシェアをお願いします!
しば
こんばんは。
いろいろな方にとってわかりやすいニュースを提供できるよう、いつもニュース記事にルビをつけて公開しています。
これまで、どなたが作成されたツールなのか分からないまま使っていたのですが、今日初めてそれが分かり、大変嬉しいです。
いつも大変助かっております。素晴らしいツールを本当にありがとうございます。
いつも通りツールを使おうとしましたら、エラーが出てしまいまして…
お手すきの際に確認いただけますでしょうか。
どうぞよろしくお願いいたします。
白石芳心からdrkへの返信
こんにちは。二文字で試していたんですが、二文字以上で試したら、ちゃんと動作致しました。
大変有難うございました。
現在、無償で配布する小学生用(障がい者)の防災情報の教材を作っているところで、大分作業が楽になりそうです。
白石芳心からdrkへの返信
大変お手間をおかけしまして有難うございます。早速使ってみたんですが、ソースコードline 35で問題があるようでうまく処理がされないようです。・・・残念です。恐縮ですがお時間があって気が向いた時に診て頂けると助かります。
drkから白石芳心への返信
Yahoo API側の仕様が少々変更されてしまったようで、動かなくなってしまいました。
短めの文章なら動作するように修正しましたので、200文字程度に区切ってお使いいただければと思います。
よろしくお願いします
白石芳心
こんにちは。
私は、様々な事情から「読み」に困っている人や視覚障害者の方に、音声付電子図書を無償で作成して必要な方に無償で配布しています。こちらのツールを活用させて頂いて制作がとても楽になり大変助かっています。有難うございます。実は最近、防災情報の図書を制作しようかと思ってこちらのルビツールを利用したら、cgiエラーが出て利用出来ないみたいなのですが、お時間のあるときに診て頂けませんか?宜しくお願いします。
drk
>Nerikoさん
作ったふりがなツールが役に立って良かったです。どんどん使って子どもに役立つサイトを作っていってください。技術的に困ったらどうぞお問い合わせください。(^^)/
Neriko
はじめまして。
子ども向けのサイトを構築するにあたり、素人ながらいろいろと模索していてこちらの記事にたどりつきました。
ページをまるごとふりがなをつけてくれるwebサービスもありましたが、記事の性質上固有名詞や独特の表現が多く、活用が困難でした。
こちらのふりがなツールを活用させていただき、本当に助かっています!ありがとうございます。
どうしてもお礼をお伝えしたくてコメントいたしました。