
ルビ振りWebサービス
漢字かな交じり文に、ひらがなとローマ字のふりがな(ルビ)を付けます。
| grade=1 | 小学1年生向け。全漢字にふりがな。 |
| grade=2 | 小学2年生向け。 |
| grade=3 | 小学3年生向け。 |
| grade=4 | 小学4年生向け。 |
| grade=5 | 小学5年生向け。 |
| grade=6 | 小学6年生向け。 |
| grade=7 | 中学生以上向け。 |
| grade=8 | 一般向け。常用漢字はふりがな無し。 |
#!/usr/bin/perl -T
use strict;
use warnings;
use CGI;
use LWP::Simple;
use XML::Simple;
use HTML::Template;
use URI::Escape;
use Encode;
use utf8;
binmode STDOUT, ":utf8";
my $appid = "YahooDemo";
my $q = new CGI;
my $sentence = $q->param('sentence') || "";
my $grade = $q->param('grade') || 1;
my $r_ref = yapi({sentence => $sentence, grade => $grade});
my $template = join("", <DATA>);
my $t = HTML::Template->new(scalarref => \$template,
global_vars => 1,
die_on_bad_params => 0);
$t->param(sentence => decode('utf-8', $sentence));
$t->param(grade => $grade);
$t->param(results => $r_ref);
print $q->header(-charset => 'UTF-8'), $t->output();
sub yapi {
my ($args_ref) = @_;
my $s = URI::Escape::uri_escape($args_ref->{sentence}) || "";
my $g = $args_ref->{grade} || 1;
return [] unless $s;
my $url = "http://jlp.yahooapis.jp/FuriganaService/V1/furigana?"
."appid=$appid&grade=$g&sentence=$s";
my $response = get($url);
return [] unless $response;
my $xmlsimple = XML::Simple->new(ForceArray => [ 'Word' ]);
my $xml = $xmlsimple->XMLin($response);
return [] unless $xml->{Result};
return $xml->{Result}->{WordList}->{Word};
}
__DATA__
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ルビ振りデモ</title>
</head>
<body>
<h1>ルビ振りデモ</h1>
<form>
<input type="input" name="sentence" size="60" value="<TMPL_VAR name=sentence>">
<input type="input" name="grade" size="1" value="<TMPL_VAR name=grade>">
<input type="submit">
</form>
<TMPL_LOOP name=results><TMPL_VAR name=Surface><TMPL_IF
name=Furigana>(<TMPL_VAR name=Furigana>,
<TMPL_VAR name=Roman>)</TMPL_IF></TMPL_LOOP>
<hr>
<a href="http://developer.yahoo.co.jp/about">Webサービス by Yahoo! JAPAN</a>
</body>
</html>
$appid は自分で取得したものを使ってくださいね。