Indesignでsocketを利用する 2

なんだかんだで引き延ばしでいるようだけど、それもこれも、ひとえにわたしの低スペックのなせる技なんだ、すまないwwwだれかCore2Quad提供してくれないだろうか。脳みそせれろんなみなものでwww
このところ、前振りなげぇ〜よなんて思われている様なので早速本題に入る事にするね。今回は要になるルビ振りAPIの利用方法についてなんだ。

まず、yahoo IDなんてものを頂かないと利用出来ないみたいなので取り敢えず取得してこよう。
続いて、APIを利用する時に必須なものにappidなんてものがあるんだ。こちらも取得しなくてはいけないみたいなのでこちらも取得しておこう。詳しくはデベロッパーネットワーク−テキスト解析−ルビ振りを見てみるといいんだ。ついでにパラメータを抜粋しておこう

テキスト解析 ルビ振り Version 1

リクエストURL http://jlp.yahooapis.jp/FuriganaService/V1/furigana
漢字かな交じり文に、ひらがなとローマ字のふりがな(ルビ)を付けます。

リクエストパラメータ
appid(必須)/string     アプリケーションID。
sentence(必須)/string     ふりがなを付ける対象のテキストです。
grade/string     学年(注1)を指定します。
 1: 小学1年生向け。漢字(注2)にふりがなを付けます。
 2: 小学2年生向け。1年生で習う漢字にはふりがなを付けません。
 3: 小学3年生向け。1〜2年生で習う漢字にはふりがを付けません。
 4: 小学4年生向け。1〜3年生で習う漢字にはふりがなを付けません。
 5: 小学5年生向け。1〜4年生で習う漢字にはふりがなを付けません。
 6: 小学6年生向け。1〜5年生で習う漢字にはふりがなを付けません。
 7: 中学生以上向け。小学校で習う漢字にはふりがなを付けません。
 8: 一般向け。常用漢字にはふりがなを付けません。
 無指定の場合、ひらがなを含むテキストにふりがなを付けます。

注1:学年は「小学校学習指導要領」の付録「学年別漢字配当表」(1989年3月15日文部科学省告示。1992年4月施行)を参考に設定されています。
注2:JIS X 0208が定める漢字

サンプルリクエストも掲載されているので転載。

http://jlp.yahooapis.jp/FuriganaService/V1/furigana?appid=<あなたのアプリケーションID>&grade=1&sentence=%e6%bc%a2%e5%ad%97%e3%81%8b%e3%81%aa%e4%ba%a4%e3%81%98%e3%82%8a%e6%96%87%e3%81%ab%e3%81%b5%e3%82%8a%e3%81%8c%e3%81%aa%e3%82%92%e6%8c%af%e3%82%8b%e3%81%93%e3%81%a8%e3%80%82

<あなたのアプリケーションID>に取得したIDを放り込んで全体をブラウザのアドレスバーにペーストするとXMLデータが帰ってくるんだ。

このリクエストもtelnetでやってみる。

>telnet jlp.yahooapis.jp 80
Trying 114.111.75.242…
Connected to jlp.yahooapis.jp.
Escape character is ‘^]’.
GET /FuriganaService/V1/furigana?appid=<あなたのアプリケーションID>&grade=1&sentence=%e6%bc%a2%e5%ad%97%e3%81%8b%e3%81%aa%e4%ba%a4%e3%81%98%e3%82%8a%e6%96%87%e3%81%ab%e3%81%b5%e3%82%8a%e3%81%8c%e3%81%aa%e3%82%92%e6%8c%af%e3%82%8b%e3%81%93%e3%81%a8%e3%80%82
Host: jlp.yahooapis.jp
Content-Type: text/html; charset=UTF-8
User-Agent: Mozilla/5.0 (Windows NT 5.1; ja)
Connection: close

きちんとHost書いてあげないと「そんなアドレス無いよ」って言われるのでHostもきちんと書かなければいけないんだwww
サーバ名でアクセスしているのに何故こんな二度手間が必要なのかはHTTPプロトコルの詳細をチェックして欲しいんだ。socketを手動で扱う場合に抜けたりしがちな部分なので注意しないといけない部分なんだ。Content-Typeは標準的な記述。charsetはscriptが扱う文字コードがUTF-8なのでこれもきちんと指定しておこうね。
User-Agentはまるまる偽装しているのだけど(Windowsですらないしね)この部分は何でも良いと思うんだ。最後のConnectionは保持する必要はないのでcloseで。最後にリターンを2回押すと下のように先ほどブラウザで見たXMLがターミナル上に表示されるはずなんだ。

<p class=”cdata”>HTTP/1.1 200 OK
Date: Fri, 12 Jun 2009 04:59:22 GMT
Content-Type: text/xml; charset=”UTF-8″
Connection: close

<?xml version=”1.0″ encoding=”UTF-8″?>
<ResultSet xmlns=”urn:yahoo:jp:jlp:FuriganaService” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance&#8221; xsi:schemaLocation=”urn:yahoo:jp:jlp:FuriganaService http://jlp.yahooapis.jp/FuriganaService/V1/furigana.xsd”&gt;
  <Result>
    <WordList>
      <Word>
        <Surface>漢字</Surface>
        <Furigana>かんじ</Furigana>
        <Roman>kanzi</Roman>
      </Word>
      <Word>
        <Surface>かな交じり</Surface>
        <Furigana>かなまじり</Furigana>
        <Roman>kanamaziri</Roman>
        <SubWordList>
          <SubWord>
            <Surface>かな</Surface>
            <Furigana>かな</Furigana>
            <Roman>kana</Roman>
          </SubWord>
          <SubWord>
            <Surface>交</Surface>
            <Furigana>ま</Furigana>
            <Roman>ma</Roman>
          </SubWord>
          <SubWord>
            <Surface>じり</Surface>
            <Furigana>じり</Furigana>
            <Roman>ziri</Roman>
          </SubWord>
        </SubWordList>
      </Word>
      <Word>
        <Surface>文</Surface>
        <Furigana>ぶん</Furigana>
        <Roman>bun</Roman>
      </Word>
      <Word>
        <Surface>に</Surface>
      </Word>
      <Word>
        <Surface>ふりがな</Surface>
      </Word>
      <Word>
        <Surface>を</Surface>
      </Word>
      <Word>
        <Surface>振る</Surface>
        <Furigana>ふる</Furigana>
        <Roman>huru</Roman>
        <SubWordList>
          <SubWord>
            <Surface>振</Surface>
            <Furigana>ふ</Furigana>
            <Roman>hu</Roman>
          </SubWord>
          <SubWord>
            <Surface>る</Surface>
            <Furigana>る</Furigana>
            <Roman>ru</Roman>
          </SubWord>
        </SubWordList>
      </Word>
      <Word>
        <Surface>こと</Surface>
      </Word>
      <Word>
        <Surface>。</Surface>
      </Word>
    </WordList>
  </Result>
</ResultSet>
Connection closed by foreign host.

さて、ここでIndesignでのスクリプトの流れを考えておこう。やりたい事は

選ばれているテキストボックスの中の文字に自動的にルビを振る

う〜ん、シンプルだね。やりたい事はシンプルなのだけれど、それがどんなに大変かwwwルビ生成エンジンに感謝しつつ、

テキストボックスの文字データの取得

Socket接続、クエリを送信

yahooががんばる(yahooAPIに変換してもらう)

XML形式のデータを受取る

さて、ここ迄は単純に愚鈍なわたしの頭でも考えつくのだけれどね…ここから先はどうしたものだろうか。考えられるシナリオは幾つかあるのだけど、今回は次の流れで行こうと思うんだ。誰か良いアイデアがあれば教えて欲しいんだw

XMLデータをとりあえず保存してしまう

保存したXMLデータを取り込む。

XMLエレメントからダイレクトにコンテンツを抜き出して元のテキストボックスにルビ付で再構築する。

XMLデータを破棄

完成www

さあ、こんな調子でうまくいくのだろうかwww

あと、コーディングを始める前にもうひとつ、yahooさんPOSTメソッドがうまくいきませんwwwどうしてでしょう???

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中