LotosLabo

プログラミング技術とか気になった情報を載せていきます

Unityでひらがな化APIを利用する

はじめに


gooラボさんのひらがな化APIを利用して、
漢字、カタカナ、ローマ字をひらがなに変換してみました。


こんなかんじになります

例:

<変換前>  爽健美茶     ソウケンビチャ  soukenbitya
<変換後>  そうけんびちゃ  そうけんびちゃ  そうけんびちゃ

用意するもの


gooラボさんのAPIを利用するには、Githubのアカウントが必要となります。
上記のURLからアクセスし、「利用方法」からGithubにアクセスし、
アプリケーションIDを取得してください。


またアプリケーションやブログ等に公開するにあたって、
gooラボさんのクレジット表記も必要となります。



POSTでAPIを叩いて、Json形式で取得します。

Object→JsonJson→Objectには今回はLitJsonを使用します。
(Unity5.3より追加されたJsonUtilityはまだ調べてないので…)


LitJsonをダウンロードし、srcディレクトリ以下をpluginsディレクトリに入れてください。

今回は0.9.0を使います。
LitJSON


using UnityEngine;
using LitJson;
using System.Text;
using System.Collections;
using System.Collections.Generic;

public class PostHiraganaAPI : MonoBehaviour {

    /// <summary>
    /// GooラボApplicationID.
    /// </summary>
    private const string APPLICATION_ID = [上記のGithubにアクセス時に取得したIDを利用];

    /// <summary>
    /// ひらがな化API.
    /// </summary>
    private const string HIRAGANA_API = "https://labs.goo.ne.jp/api/hiragana";

    /// <summary>
    /// ひらがな.
    /// </summary>
    private string m_hiragana;

    /// <summary>
    /// ひらがな変換リクエスト.
    /// </summary>
    /// <param name="Sentence">変換したい文字列.</param>
    /// <param name="ConvertType">変換タイプ(1:ひらがな、2:カタカナ).</param>
    public IEnumerator HiraganaPostRequest(string Sentence, int ConvertType) {

        // JsonDataの作成.
        JsonData data = new JsonData();

        // アプリケーションID.
        data["app_id"] = APPLICATION_ID;

        // 対象文字列.
        data["sentence"] = Sentence;

        // 変換タイプ(ひらがな、カタカナ).
        switch(ConvertType){
            case 1:
                data["output_type"] = "hiragana";
                break;
            case 2:
                data["output_type"] = "katakana";
                break;
        }

        string postJsonStr = data.ToJson();

        Debug.Log("send post json: " + postJsonStr);
        
        // bodyを作成.
        byte[] postBytes = Encoding.Default.GetBytes (postJsonStr);
    
        // ヘッダー.
        Dictionary<string, string> headers = new Dictionary<string, string>();
        headers["Content-Type"] = "application/json; charaset-UTF8";

        Debug.Log("send post json: " + postJsonStr);

        // リクエストを送信.
        WWW result = new WWW(HIRAGANA_API, postBytes, headers);
        yield return result;

        if (result.error != null) {
            Debug.Log("Post Failure…");
        } else{
            Debug.Log("Post Success!");
            Debug.Log("result: " + result.text);

            JsonData jsonParser = JsonMapper.ToObject(result.text);

            // パース.
            m_hiragana = jsonParser["converted"].ToString();

            Debug.Log(m_hiragana);
        }
    }
}




また、ひらがな化APIを使用する際に、Unityのプロジェクトは
「WebPlayer」以外のプラットフォームにしてください。
WebPlayerだと「SecurityException: No valid crossdomain policy available to allow access
というクロスドメインのエラーが出てしまうので気をつけてください。


どんな風に変換されるか試しに利用してみたいという方は、
上記gooラボさんのページより、利用することができますので
そちらをご覧ください。


クレジット



supported by goo