Webに読み仮名の入力支援機能を実装するクラス
2008 年 10 月 22 日 by 山平Microsoft Accessではデータ入力の負担を軽減するための入力支援機能(ふりがな、住所)などを簡単に実装できますが、同じことをWebインターフェイス上に実装しようと思うとかなり大変です。
しかし、Yahoo!デベロッパーネットワークのテキスト解析-ルビ振りWebサービスを利用すれば読み仮名入力支援機能が簡単にそれっぽく実装できます。
※Webサービスを利用するので、精度はサービスに依存します。
ということでC#にてYahooから読み仮名を取得するクラスを作ってみました。
※Yahoo!ID及びアプリケーションIDが必要です
【Download:読み仮名を取得クラス】
ローカルに保存した後、ファイル名をrubywebapics.txtからrubywebapi.csに変更します。
詳しいことはソースを読んでもらうとして、このクラスを利用するサンプルを作ってみます。
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"> <script runat="server"> protected void Button1_Click(object sender, EventArgs e) { if (this.TextBox1.Text == "") return; int intOptions = 0; if (this.chk_ZENKAKU.Checked) intOptions |= RubyWebAPI.CONVERT_ZENKAKU; if (this.chk_ALPHA.Checked) intOptions |= RubyWebAPI.CONVERT_ALPHA; if (this.chk_KIGOU.Checked) intOptions |= RubyWebAPI.CONVERT_KIGOU; if (this.chk_KATAKANA.Checked) intOptions |= RubyWebAPI.CONVERT_KATAKANA; //実処理はここだけ! this.Label1.Text = RubyWebAPI.getRubyString(this.TextBox1.Text, intOptions); //オプションが不要ならこれだけ //this.Label1.Text = RubyWebAPI.getRubyString(this.TextBox1.Text); } </script> <html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>" > <head runat="server"> <title>読み仮名変換のサンプル</title> </head> <body> <form id="form1" runat="server"> <h1>読み仮名変換のサンプル</h1> <div> <h2>変換する文字を入力</h2> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="読み仮名変換!" OnClick="Button1_Click" /> </div> <div> <h3>オプション</h3> <label><asp:CheckBox ID="chk_ZENKAKU" runat="server" />すべて全角に変換する</label> <label><asp:CheckBox ID="chk_ALPHA" runat="server" />アルファベットも変換する</label> <label><asp:CheckBox ID="chk_KIGOU" runat="server" />記号も変換する</label> <label><asp:CheckBox ID="chk_KATAKANA" runat="server" />カタカナに変換する</label> </div> <h2>変換の結果はここに表示されます</h2> <p> <em>「<asp:Label ID="Label1" runat="server"></asp:Label>」</em> </p> </div> </form> </body> </html>
実際の変換はYahoo!にお願いするので、このサンプルも読み仮名取得クラスも実際の処理はほんのちょっとです。
ただ、Yahoo!APIに完全に依存してしまうと、やや実用に耐えないかもしれない部分があるので、それらをコントロールするためにいくつかのオプションを作って結果に対して変換を行なっています。
Ajaxな実装にするのが最近風なのかもしれませんが、ローカルで試した範囲ではポストバックで処理しても気にならない速度で動きます(Yahooバックボーンの太さのおかげかも)。
以上です。