というわけで、先日遊んだ形態素解析に引き続き、今度はYahoo Japanの校正支援を使ったデモを作って遊んでみた。APIの詳細はこちら。
まだServices_Yahoo_JPには校正支援用の機能は実装されていないようだったので、形態素解析の中を見てちょろっと変えたらすぐに動いた。問題ないようなら後で投稿しておこう。
単純なAPIなので、filterを指定してあとはレスポンスを待つだけ。
<?php
require_once 'Services/Yahoo/JP/V1.php';
try{
$yahoo = Services_Yahoo_JP_V1::factory('kousei');
$yahoo->withAppID($app_id);
$yahoo->setSentence($keyword);
$yahoo->setFilter('1,2,3');
$result = $yahoo->submit();
} catch(Services_Yahoo_Exception $e){
$error = '接続に失敗したような気がします。';
}
$xml =& $result->xml;
if(count($xml)){
foreach($xml as $k => $row){
print_r($row);
}
}else{
print('正しい日本語みたいです。');
}
?>
こんな感じで実装できる。あんまりYahoo側の仕様がわかっていないから、とりあえず動いたところで放置している。
Popularity: 3% [?]
LAMPに対抗して、MicrosoftがIIS上でPHPを動かす環境を宣伝している。MSSQLではなくMySQLやPostgreSQLを宣伝するというのも愉快ではあるが。
それより何より、やはり気になるのは
Linux + Apache + MySQL + Perl(PHP, Python…) = LAMP
に対抗したキャンペーンの略称が、
Windows + IIS + MySQL + PHP = WIMP
になってしまっていることだろうか。
wimp
【名】弱虫、作話症{さくわしょう}、意気地なし、怖がり、勇気のないやつ、すぐあきらめるやつ
・You’re such a wimp. : 気が小さいね。
・That tequilla shot has been sitting there an hour, are you too much of a wimp to drink it?
さすが世界のMicrosoftはユーモアを忘れていない。
Popularity: 4% [?]
長男と二人で観戦。
時間が間に合わず指定席とは交換できず立ち見。新聞屋にチケットをもらって行くのはもう体力的に無理なので、今度からはちゃんとチケットを買うことにする。
先発は木佐貫と藤井。なんて微妙な。
先発ピッチャーとしての木佐貫はもはや謎としかいいようがない。これといって威力のあるわけでもない真っ直ぐかフォークボール、この二択でいったい人間はどれくらいのピッチングが出来るのか。木佐貫のピッチングを要約するとそういうことになる。彼の挑戦はそれ自体が謎であり、またこれでも一定の成績を上げられるのであればいざ知らず、いつもほとんど見込みのない挑戦となってしまっているので不可解さも否応なしに増す。今日も5回途中4失点で交代しているのだが、なぜ、いったいいつまで彼はこのポジションでこの役割に挑み続けているのだろうか。真っ直ぐが突然速くなったり、コントロールが正確無比になったり、本当は投げられるのに臆病で投げられない秘密の変化球を投げる決心がついたりする瞬間を待ち続けているのだろうか。わからない。ノックアウトされても、当然のような気がすると同時に、そもそもなぜ彼がそこにいるのか、なぜ彼がノックアウトされなければいけないのかもわからず、観客たちはひたすらに哀しくなってしまう。
藤井は、いつものように80年代回顧的な風貌ですばらしいボールと不用意なボールを半々ずつ投げ、すばらしいボールで稼いだ貯金を不用意なボールで使い尽くして降板した。いつものように、バブルな外見と同様、稼いだものより不良債権化したものの方が多い。
そんな哀しい試合が、ワイルドな長打の応酬で拮抗したのもつかの間、ゲッツー崩れの2アウト1塁3塁からワイルドピッチ(キャッチャーが止めないといけないボールだったが)で決勝点が入るという結末を迎えるのも、最初から決まっていたことだったのかもしれない。
森本が手にデッドボールを受けて骨折した。インコース高めが苦手なバッターなのでこのあたりにボールが来るのはある意味仕方がないところではあるが、トレーナーの応急処置を拒否して1塁まで走っていたその姿にはしびれた。
稲葉の左中間へのホームランはテレビのニュースで観るより凄まじい当たりだった。なんというか、叩き潰した打球が己の速度に耐えかねてふらつきながらスタンドに届くような迫力。
巨人の1、2番の出塁率の低さは目を覆いたくなるほどで、こんなやつらさっさとお払い箱にして今年は木村と谷でいいじゃんとしか思えないのだが、原は坂本と亀井の稚児二人を諦め切れないのか。
Popularity: 3% [?]
携帯端末の場合、サーバからステータスコード404が返ると、サーバ側のエラー画面を表示するのではなく処理を中断してしまうことがある(少なくともauではそうなった)ので、.htaccessでの制御で工夫しなければいけない。
普通、ステータスコード別に表示するHTMLドキュメントを指定する場合は
ErrorDocument 404 /error.html
のようにErrorDocumentディレクティブを利用する。しかし、ここで指定するのがローカルファイルへのパスの場合、ステータスコードはそのまま404を返してしまうため、携帯端末だとページを表示する前に処理が中断され、指定したドキュメントを表示させることができない。
解決方法は簡単で、
ErrorDocument 404 http://selfkleptomaniac.org/error.html
のようにリモートのURLを指定すると、この場合は404ではなくリダイレクトの302が返るため、携帯でも問題なく表示することができる。Apacheのマニュアルでは
リモート URL (例えば、頭に http と付与した方法) を ErrorDocument に指定するとき、 たとえ文書が同じサーバにあろうとも、ドキュメントがどこにあるかを通知するために、 Apache はリダイレクトをクライアントに送出するということに、注意してください。 これにはいろいろと関連して起こる問題があります。 中でも最も重要なのは、クライアントは元々のエラーステータスコードを受け取らず、 代わりにリダイレクトのステータスコードを受け取るということです。 これにより、ステータスコードを使って URL が有効であるかどうかを決定しようとする ウェブロボットやその他クライアントを、混乱させるかもしれません。 さらに、ErrorDocument 401 にリモートの URL を指定すると、 クライアントは 401 というステータスコードを受け取らないため、 パスワードをユーザーに入力要求しなければならないことがわかりません。 従って、ErrorDocument 401 というディレクティブを使う場合は、 必ずローカルな文書を参照しなければなりません。
とのこと。
Popularity: 5% [?]
ブスコバンのアレルギーらしく、健康診断が終わってからずっとひどい頭痛だ。今日はちょっと家で休んでいる。
Yahoo JapanのAPI用に既存のPEARパッケージを拡張したServices_Yahoo_JPがある(作者サイト)。面白そうなのでさっそく使ってみた。
テキスト解析はこんな風に使える。例えばテキストの読みがなを取得する。
<?php
require_once 'Services/Yahoo/JP/MA.php';
$keyword = 'これは日本語です。';
$app_id = 'Your APP ID';
try{
$yahoo = Services_Yahoo_JP_MA::factory('parse');
$yahoo->withAppID($app_id);
$yahoo->setSentence($keyword);
$result = $yahoo->submit();
} catch(Services_Yahoo_Exception $e){
$error = 'すいません、YahooJapanに接続できませんでした。';
}
if($result){
$xml =& $result->xml->ma_result->word_list->word;
foreach($xml as $key => $val){
print($val->reading . "\n");
}
}
?>
なるほど。で、何か面白いことでもできないかと考えたが、Yahooから戻ってくる読みがなをさらにローマ字に変換して、Mac OS Xに付属のsayコマンドで読み上げてみるのはどうだろう。
$ say -o 出力ファイル "読み上げるテキスト"
上の書式で変換できるので、フロントエンドのPHPと連携してみれば簡単だ。
そこでふと思いついた。sayコマンドは声の指定も可能なのだが、プリセットされたデータには歌いながらしゃべるパターンもあったはずだ。それを指定すれば、入力したテキストを歌うこともできるじゃないか。
$ say -o 出力ファイル -v "声のパターン名" "読み上げるテキスト"
そうと決まれば話は早い。というわけでデモを作成した。(Proof of conceptということで無茶なことはしないでくださいね)
テキストが入力されると、バックエンドのMacBookにHTTPで通信してプロシージャを呼び出し、MacBook側はテキストを元に音声ファイルを作成してMP3に変換、最終的に作られたファイルをDocmentRoot以下に設置してファイルのパスを返す。フロントエンドのウェブサーバにリバースプロキシでMacBookのローカルファイルにアクセス可能にしてあげていっちょあがり。文字で書くとややこしいが、図にするといたって単純。

追記:Yahoo JapanのAPI側で数字の読み方は返してくれないみたいだ。
Popularity: 5% [?]
PEARのパッケージ候補がズラリ並んだページ。こんなのあったなんて気づかなかった。
ざっと眺めると、GoogleのWebサービスやOpenSSLによる暗号化などありそうでなかったものがけっこう見つかる。
scraping用パッケージが追加されるともっといいかも。
Popularity: 2% [?]
長男へ。
お前のパドレスを強化するために、エステバン・ハーマンとマーク・ティーエンをトレードで穫ってきた。出したのはおそらくもうずっと出番はないだろう、マイナーのピッチャー二人。
今はカリル・グリーンの控えを探している。それから、現実世界ではアレックス・ゴンザレスの控えがトニー・クラークという豪華なパドレスだが、父ちゃんとしてはシンシナティからスコット・ハッテバーグを獲得するのはどうだろうと提案したい。ライトが広いペトコパークならどうせホームランは期待できないから、ハッテバーグみたいにミートのうまい選手がいいと思うよ。ナショナルリーグだから代打もいい選手が必要だし。
あと、全然関係ないんだけど、Wikipediaの赤堀の記事、彼の投げていた中で一番凄かったのは、なんかシュートみたいな感じで落ちてくるボールだったんだけど、それが載ってないのが謎だよ。怪我してからは投げなくなったから、たぶん故障の原因になったデスピッチだったんだろうね。
Popularity: 3% [?]
久しぶりに不毛なJava対PHPの議論を耳にした。
趣旨としては、PHPの開発ツールの乏しさ(Javaと比較して)をブチ上げて、カイシャの発展のために今後はJavaで開発すべきだ、というもの。
あのさあ。
まず第一に、これまでのPHPでの開発実績をポンと捨てることにどんだけの意味があるのかね。人的資源は無尽蔵にあるとでも思ってるんだろうか。品質向上のために自動化のためのツールがほしい、という話だけど、Javaで例えば品質管理の現場でツールを使ってあれやこれを自動化するとしても、それでいったいどれだけのことが出来ているか知っているのかね。というか、自分がPHPで適切な環境整備が出来ないのを言語のせいにしとるだけちゃうんかと。
Java向けのコーディングルールのチェックツールがあるとする。でも、それで検知される内容って結局誰かが確認しないと、警告だのなんだのが出ても無視する奴は無視するわけで、だからまじめに運用しようとするとSEが人力でチェックを入れて徹夜したりしている。ちょっと極端な話だけど、ツールなんてそんなもんじゃないのか。
開発環境ひとつとっても、別にそんなに大仰なことが必要なケースって少ないんじゃないだろうか。Amazonのシステム丸ごとリプレースならいざ知らず、たかだかユーザ数50万や100万程度の携帯サイトだったら、リモートデバッグなんてややこしいツールなんかなくても、今だってサーバにログインしてそれなりにファイルを編集したりコマンドを実行したりする権限はみんな持っているんだから、Xdebugでもなんても使えればいい。テストの自動化だったらSeleniumでもなんでも使えればそれでいいじゃん。っていうかだったら携帯端末の挙動を模するエミュレータかプロクシの開発でも進めればいいんじゃないか。
以前習ったことだけれども、本当は言語自体がソフトウェア開発に関連するハウスキーピング作業をやってくれるのが一番理想的で、それがダメならツールがやってくれるのがいいことで、それでもダメなら慣習でそれが実践されるようにするのがいい、という尺度がある。つまり、どう足掻いてもツールのレベルにとどまるのであれば、言語を取り替えても効果はたかが知れているのだ。
品質管理の連中が言語を変えたいといってきたら要注意だ。開発チームからそんな声が聞こえてきたら、それはまた別の意味で要注意(やった方がいい)なのだけれども。
そうそう。プログラムにコメントなんて本当に必要なんだろうか。仕様書を更新する人はいても、コメントを更新する人なんていないんだし、結局最後は当てにならないんじゃないか。だから、個人的には、コーディングのルールでコメントの付け方までいちいち縛るのはあんまり意味がないし効果も薄いと思っている。別にコメント自体には反対はしないけど、何かの保守業務でコメントを読んだことなんかないし、自動的に出力したドキュメントなんて、ソースコードを読むより苦痛になることの方が多い。
Popularity: 3% [?]
update 2008/05/06 15:54
産まれた!まだ胎盤がとれないからかみさんは引き続き処置が続く。子宮筋腫が見つかり、それが原因で胎盤がうまく剥離しないらしい。
update 2008/05/06 13:05
陣痛が続く。子宮口はまだ半分程度しか開かず。体力が続かずかみさんがふがふが言い始める。立ち上がれないためカテーテルで導尿。昼食摂れず。周囲から奥さん方の喘ぎ声が聞こえる。美人ほど野獣の咆哮になるというのは本当だろうか。
update 2008/05/06 09:06
促進剤投与開始。
update 2008/05/05 23:39
いろいろ診察。微弱陣痛が続くため、本格的な陣痛が始まるまで様子見だったが、深夜に注意とのこと。かみさんを残していったん帰宅して待機。
update 2008/05/05 15:54
NSTで心音をモニタ中。破水するので動けないかみさんは、それでもなんとか動いて陣痛を促進しようともがいていたが、夜中に電動ベッドの上半身が上がったまま動かなくなってしまい見回りにきた看護士さんをビックリさせていた。
結局、かみさんは大部屋希望だったのだが、部屋に空きがないので二人部屋になる。宿泊費は3万円ちょっと。ゴールデンウィークの旅行にしては食事が質素だ。産まれるまでこのまま入院になるが、まだいつになるか見当もつかない。ゆっくり名前でも決めるか。
NSTの画面に表示されるTOCOというのが何のことなのかわらかない。tocoなんたらは分娩という意味だから、陣痛のことだろうか。隣の夫婦のところにはお産の直後から夫の上司だの親戚だのが大挙して押し掛けてきて、手も洗わずに赤ん坊をベタベタ触っている。本当に気の利かない連中だ。おまけに小さい子供まで連れてくるものだから、初産のお母さんにとっては迷惑きわまりないことだろう。
update 2008/05/05 02:32
結局、破水はあるものの子宮口は開いておらず、このまま入院することになった。病院の駐車場は駐車時間にたいして加算方式で料金が計算されて上限がないので、かみさんは割引はないかと警備員さんや看護婦さんにまで聞き回っている。
update 2008/05/05 00:15
ちょっとかみさん車で病院に連れてってくる。
Popularity: 2% [?]

