きっかけはTwitterでのこのあたりのやりとりと、今お手伝いしているコンクール絡みのイベントがあるっていうことなんですが、Twitterに声で投稿できるかというテーマがあって、ちょっとやってみた。らくらくホンでTwitter(モバツイッター(以下モバツイ))を使って気づくあたりの話も含めて少し紹介したい。

Twitter / aok mto: .@fshin2000 伝言です。らくらくホンの音声「入力」にも対応してほしい。私自身は未経験なため、何も差し挟む余地はありませんです。土曜日に弱視の人の集まりで、聞きました。

Twitter / Junnama Noda: おそらく音声メールなのでユーザー毎にメール経由のポスト可能ならいけるのでは? http://bit.ly/9Eco70 RT @fshin2000: @pinpain そんな機能があるんですか。なんかブラウザベースだと難しそうな気もしなくもないけど...

Twitter / えふしん: @junnama @pinpain じゃぁ「メール投稿」でできますね。

イベントはこちら。2月24日開催です。

機種はF884i(らくらくホンプレミアム)。僕の記憶ではこの機能(音声メール)はオプションで月々210円。興味あったので申し込んでおいたのです。使ったのは今回が初めて。有料である理由は、変換を行うのをiアプリからASP経由で行うため。つまり、流石にこの携帯の中にそれだけの処理が出来るものが埋め込まれているわけれはなく、音声認識からテキスト化は外部のサーバーを使っているのです。

このあたりについては少し前の記事ですが下記のページに紹介記事があります。

音声入力中の画面

尚、当然ながらただ音声で入力するだけでなく、ウェブの読み上げから投稿操作までは音声ガイダンスを通じて出来ます。まったく画面を見ることなく僕にも投稿が行えました。

手順は下記の通り。

  • モバツイへアクセス
  • メール投稿
  • メール作成(題名入力状態)
  • 本文欄へ移動
  • [カメラボタン]でiアプリ起動
  • 決定ボタン
  • バイブが振動(または音声ガイダンス)
  • 声で入力(30秒以内)
  • iアプリがサーバーに通信してテキスト変換
  • 確認>確定
  • 続きがあれば再度[カメラボタン]でiアプリ起動
  • 内容確定後、送信

一連の動き? を音声ファイルにしましたのでアップします。

さて、感想等

「Twitter+モバツイ+らくらくホンが拓く新しい世界」なんていうタイトルを書いたわけですが、これやっぱり新しいコミュニケーションの世界なんだと思います。不思議な感じ。

実際僕が視力を失ってスクリーンリーダーのお世話になることを考えたらそれなりにかなり必死で取り組まなきゃならないと思うんですが、Twitterを使うだけなら実際自分で画面見ないでいけましたから。入力、確認といった煩わしさもなく、まさにTwitter的な世界観とでもいうのでしょうか。

昨日からの帰り道に練習がてらポストしてみたんですが、何ていうか電話で会話している感じ。タイムラインを読み上げて、アクセスキー[3]でメール投稿画面へ飛び(欲を言えばアクセスキー[3]でダイレクトにメールが立ち上がって欲しい。そうすればもっとシームレスに読み上げ>投稿へ移行できる)、そこから上記の手順でポストします。ひとこと程度のつぶやきなら30秒でいけるし、少し長いものは複数に分けて入れます。ただ、このあたりはいずれ技術が解決してくれると思う。

日常的に使うのであれば変換サーバーとのやりとりの待ち時間とかiアプリ起動の待ち時間とか気にならないわけじゃないですが、新しい可能性を十分に感じさせてくれます。

モバツイのアクセシビリティ

モバツイの[元]省エネモード、らくらくホンをも意識されたようなシンプルな表示モード、これで音声読み上げモードでは格段に使いやすくなります。理解もしやすいようにリンクのラベルも工夫されています。このあたりは仕方ないんだろうけど、慣れてくると少しラベルが冗長に感じられるようにはなりますが。慣れてしまうと「このつぶやきにリプライ@」→「リプライ」のほうがシンプルだし、上級者モードとかを作るのがいいのかもしれないですね。あるいは「ガイダンスモード」っていうのがあって、ガイダンスモードでは「このつぶやきにリプライ@」、通常モードでは「リプライ」とか。開発側の負担は間違いなく増えますが、こうなればもっと使い勝手が良くなると思います。

アクセシビリティ=アクセス出来ること、であれば冗長なラベルであってもクリアできてるわけですが、携帯電話、音声読み上げに最適化となれば、ラベルの長いのは少し気になります。

ただ、これはUA側で例えばa要素のtitleを読み上げるかどうか、とかいった実装が出来るようになれば解決する問題でもあります。アクセシビリティって結局最後はそういった話になるんだと僕は思います。

もう一点は既に書きましたがアクセスキー[3]でダイレクトにメールが立ち上がって欲しい。これはえふしんさんもそう感じてもらえたみたいだから、別に音声読み上げに限ったことじゃないですよね。

Twitterそのものが抱える(日本語環境での)アクセシビリティ

これはモバツイに関することじゃないんですが、一番読み上げていて気になるのは実は「ユーザー名」なんです。例えば「fshin2000さん」は、「えふえすえっちあい、にせんさん」です。「junnama」じゃ「じゅんなま」なんですが。英語圏なら名前が単語として登録されているケースが多いでしょうから読めると思うのですが、たとえば「にせんさん」てのは「2003」ともとれてしまうし(fshin2000さんすいません、特に取り上げた理由はないんですw)ユーザー名は本当にわかりにくいです。

モバツイのアクセシビリティ

ログイン名が表示されるのはTwitterの仕様だから、ここは「設定」画面の「名前」のほうを表示することで解決出来そうな気もします。但しTwitterは@ユーザー名っていうルールがあるので、つぶやきの本文の中にもユーザー名が頻繁に出てきます。とはいえ実際の読み上げ環境で利用しておられる方はさほど気にしておられないのかもしれませんが。とはいえ、絶対名前が日本語で扱えた方がわかりやすいと思う。これは絶対にそうだと思います。

それでもこれは新しい体験、新しい世界

例えばiモードブラウザのインプット要素やテキストエリアが同じく音声入力に対応してサーバーへの接続時間等の問題が解消されたら(またサイト制作者側がこういった用途を意識して構築を行えば)、あたらしい可能性が広がるんじゃないかって。そう思います。正直新鮮な体験でした。ケータイサイトやケータイWebサービスを構築している人には是非とも考えて欲しいテーマです。

それでは、次回はイベントでお会いしましょう。

関連エントリー

テスト用のポストをします。

先週末に行われたMTDDCに参加してライトニングトークで大トリ? をつとめさせていただきました。前日まで何を話すか決めてなかったんですが、今回はまぁ大阪開催じゃないし? ネタ抜きにして純粋にハックネタを話させていただきました。さすがに数百人前にしてつまらないネタじゃ悪いし(しかも時間一時間近く押していて、あそこで滑ると会場のコンテキスト? に影響するっていう危機感もありましたし。

すでにお気づきの方もいらっしゃる通り、今回のネタは今年一発目に上げた下記のエントリーの改良版です。

タグのプライベートモードを使うっていうのを直前に思いついてしまったのが今回の肝でした(しかし何でググると3.3のドキュメントが出てくんの?)。

方針は以下の通りです。

  • 一回目の保存時には入力されたタグがあればそれにプラスしてタグが自動追加される
  • ユーザー辞書に登録されている単語は無条件にタグとして登録される
  • タイトルに1度以上、もしくはタイトル+テキストに2回以上出現した単語で「名詞,一般」もしくは「名詞,固有名詞,組織」にマッチするもの、且つ一定以上のバイト長の単語(サンプルでは[7]以上)をプライベート・タグとして登録する

前提としてMeCab、MeCab.pmをインストールする必要があります。ここで紹介するパスは私のMac上でのパスです。MacPortを使ってインストールしているので、一般的な環境とは異なるであろうことご了承ください。

タグとして登録したい単語を下記のようにCSVを作成した保存します。ここでのポイントは「Movable Type Developers & Designers Conference」を「MTDDC」として登録する等のようにマッチした文字列をタグとしてどのように登録したいかを定義付けることです。この辞書では「アルファサード有限会社」と「アルファサード」は同じ「アルファサード」として登録されるようになります。

Movable Type Developers & Designers Conference,-1,-1,1,名詞,一般,*,*,*,*,MTDDC,MTDDC,MTDDC,Tags
プラグイン,-1,-1,1,名詞,一般,*,*,*,*,プラグイン,プラグイン,プラグイン,Tags
Movable Type,-1,-1,1,名詞,一般,*,*,*,*,Movable Type,Movable Type,Movable Type,Tags
アクセシビリティ,-1,-1,1,名詞,一般,*,*,*,*,アクセシビリティ,アクセシビリティ,アクセシビリティ,Tags
アルファサード有限会社,-1,-1,1,名詞,一般,*,*,*,*,アルファサード,アルファサード,アルファサード,Tags
アルファサード,-1,-1,1,名詞,一般,*,*,*,*,アルファサード,アルファサード,アルファサード,Tags
セミナー,-1,-1,1,名詞,一般,*,*,*,*,セミナー・イベント,セミナー・イベント,セミナー・イベント,Tags
イベント,-1,-1,1,名詞,一般,*,*,*,*,セミナー・イベント,セミナー・イベント,セミナー・イベント,Tags
リリース,-1,-1,1,名詞,一般,*,*,*,*,リリース情報,リリース情報,リリース情報,Tags
cd /opt/user
sudo /opt/local/libexec/mecab/mecab-dict-index -d /opt/local/lib/mecab/dic/ipadic-utf8 -u user.dic -f utf8 -t utf8 dict.csv

user.dicが生成されるので、mecabrcにこのファイルをユーザー辞書として使うように登録します。

vi /opt/local/etc/mecabrc

下記の行を追加

userdic = /opt/user/user.dic

プラグイン(当日使ったものです)をMTにインストールします。

自動的に付けられたタグ

これで、ユーザー辞書に登録してあるものは無条件に、形態素解析で自動追加したものは「プライベートタグ(@からはじまる隠しタグ)」として登録されるようになります。

あとはogawaさんの TagSupplementalsプラグインにお任せです。

<mt:EntryIfTagged>
<div class="entry-body">
<h2>関連する話題</h2>
<ul>
    <MTRelatedEntries lastn="3">
        <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
    </MTRelatedEntries>
</ul>
</div>
</mt:EntryIfTagged>

関連エントリーを自動表示

ちゃんと大阪でのMTDDCの記事が一番目に出てますよね?(当日失敗したのは...自動でタグ付けされるのを見せたいがために文章色々直前で追加しちゃったんですよね...クソ!)

この方法で出来ないのは、エントリーに対するタグの重み付けなんですね。例えば上記エントリーには「MTDDC」というタグが最も重みが付けられるべきで、そうなれば確実に当日も失敗? しなかったわけです。ところが現状の方法では単語の出現回数なんかでの重み付けがなされないのです。

これについてはMT::ObjectTagオブジェクトを拡張してタグの重み付けを付けるという方法なんかが考えられますが(出現回数なんかでスコアを付ける)、興味のある方はトライしてみても面白いんじゃないでしょうか。

翌日のHack-A-Thonにも参加しましたが、こっちのほうはまたいずれ。

ひれ酒とか。

| コメント(0) | トラックバック(0)
有馬温泉。

今日「ブログのサイドバーを見直す(ランキング/表示順/高速化)」って記事を製品サイトブログに書いていて面倒だったので書いたのであげておきます(スタティック専用)。←しかしなんちゅう日本語だ。

特定のタグ(class指定可能)で囲まれた部分を実体参照に変換して出力するモディファイアescapecodeを提供します。

<$mt:EntryBody escapecode="code,mtml"$>

上記のようにテンプレートに記述すると、下記の部分をエスケープして出力します。

<pre><code class"mtml">
<$mt:EntryBody escapecode="code,mtml"$>
</code></pre>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

御堂筋のイルミネーションも今週末まで。
MT5に移行したついでにモブログの設定してみた。

随分ご無沙汰してしまったのですが、本年も引き続きよろしくお願いします。

さて今年の最初は実用性があるかどうかはまったく別にして(且つ環境を選ぶものですけど)、サンプル的な感じで一つ。

きっかけは(ちょっと時間が経ってしまいましたが)、以下のエントリーから。

本文内の文章を言語解析してくれて、関連するエントリーを勝手に出してほしい

  1. MeCab/MeCab.pmをインストール
  2. MTのタグをMeCabの辞書に書き出して登録
  3. プラグインによってエントリーの保存時に形態素解析してタグを抽出して自動的にセットする

というものです。タグを辞書に登録するのだから素直にDB見に行ってやればいいってのとそういうのもどっかで公開されてるんですが、あくまでもサンプルとして作りました。「名詞,一般」で2文字以上であれば自動登録とかの方法でやってもいいと思いますが、タグっぽくならないはならないので(関連エントリーのためだけに使うのであればそれでもいいと思いますが大量のタグが保存されて重くなるという懸念もあります)、このあたりは工夫の余地があるでしょう。

辞書へのタグの追加は MeCab: 単語の追加方法 を参照いただくとして(テスト用途であればユーザー辞書として登録するのがいいかと思います)、インデックス・テンプレートに下記のように記述して辞書登録のCSVを作るための kanji2kana モディファイアも作りました。

<MTTags><MTTagName>,-1,-1,1,名詞,一般,*,*,*,*,<MTTagName>,<MTTagName kanji2kana="1">,<MTTagName>,Tags
</MTTags>

このインデックステンプレート(を再構築して生成されるcsv)を辞書に登録してエントリーを保存すると自動的にタグ付けされます。表記のゆれについては別途辞書に登録してやって吸収することが出来るでしょう。これに加えてogawaさんの TagSupplementalsプラグイン で関連するエントリーを出すようにすれば「本文内の文章を言語解析してくれて、関連するエントリーを勝手に出してほしい」ってのに近い環境が構築されないでしょうか?

※備忘録的にローカルMacの辞書登録コマンドをメモ

sudo /opt/local/libexec/mecab/mecab-dict-index -d /opt/local/lib/mecab/dic/ipadic-utf8 -u user.dic -f utf8 -t utf8 dict.csv

ということで(謎)今年も頑張って色々ネタとか提供していければと思いますのでよろしくお願いします。

CMSContextプラグインをMT5対応として今日の勉強会向けに修正(ついでに会場でさらに修正)しました。entry/page/category/folder/blogあたりのコンテクストセットするついでにログインしてCMS操作しているユーザーのコンテクストもセットするようにしました。あとあんまりテスト出来てないですけど MTIfUserCan permission="rebuild" とかで再構築権限があるかどうかとか、権限の分岐できるようにしました(他にも2回呼び出された時にロードしなおさないようにしたとか細かい修正ちょこっと)。

CMSContext/tmpl以下にエントリー編集画面でタグ入力を支援するインターフェイスを提供するテンプレートのサンプル例が入ってます。

タグ入力支援インターフェイス

ついでにLove再構築のひな形となった今日の勉強会用のダッシュボードウィジェットも上げておきます。

あと、僕には珍しくちゃんと配布資料用意していったから、それも上げときますね。

Love再構築。

| コメント(0) | トラックバック(0)

本日MT5勉強会で管理画面カスタマイズテーブル担当させていただきました。エントリー編集画面のカスタマイズ例で説明してからダッシュボードウィジェット作る課題ってのをやったのですが、僕の作ったのをとりあえず上げておきます(みんなまだ飲んでるだろけどなw)

Love 再構築ダッシュボードウィジェット

今日はありがとうございました。みんな俺のことも忘れないでなw