ワイヤレスセンサーバーW

久々のWiiリモコン関連話題ですが、ゲームテック社から「ワイヤレスセンサーバーW」が近日発売(今月下旬?)だそうです。Amazonなどでも予約受付中になってますね。

wireless-sensor-bar-w.jpg

価格は1,780円で、単三乾電池4本で駆動、有効範囲5メートル、連続使用30時間、タイマーによる自動オフ、電池残量が少なくなれば点滅する電源LED付き、ってとこかな。以前に紹介したNYKOのWireless Sensor Barとほぼ同じ仕様みたいで、こっちのほうが若干安いです。大きさはどうなのかな?単三乾電池4本ってことは、純正品(ワイヤード)より一回り大きいハズですね。

私もバッテリー駆動バス・パワー駆動を試してきましたが、センサーバーは結構面倒なので、そろそろスマートな解決法が欲しいところです。これが正解だったら、いいですね。

iPhoneでMaxコントロール

取り敢えずという程度なのですが、iPhoneでMaxをコントロールしてみました。

仕組みは、単純にWebアプリです。ボタン→JavaScript→PHP→OSC→Maxという流れになっています。Web系の人なら簡単に作れると思いますが、私はそれなりに苦労して(笑)、Galen Scorer氏のudp.phpを利用させていただきました。OSCなので、SuperColliderやReakterでも同じことができるハズですよね。

ちなみに、テキスト表現できるものなら何でもパラメータとしてMaxに渡すことができます。デモでは入力したテキストをMaxに送って、aka.speechで読み上げているのが分かりますよね。レイテンシーは許容範囲かな? シビアな演奏には向いていないでしょうけどね。

しかし、一番の問題は先の記事でも触れたように、iPhoneのWebアプリとしてはマウス・ドラッグ(指ドラッグ)が捉えられないことです。なので、このデモでもボタンを押すことしかしていません(しかも、onClickなので指を離した時に動作する)。引き続き、このあたりの情報をご存知の方は、是非教えてください。

【追記】よく考えたら、YouTubeだとiPhoneな人は見ることができないですよね(馬鹿FlashがH.264化されるまでは)。そんな訳で、QuickTime(MPEG-4)ムービーもアップロードしました。

iPhoneがクラッシュ?

iTunesでiPhoneを同期しようとしたら、次のようなウィンドウが表示されました。

iphone-crash-report.jpg

何のことかなと思って調べると、/Library/Logs/CrashReporter/MobileDevice/下にクラッシュ・ログを発見。その日時やログ内容から推測するに、巨大PDFを添付してメールを送ってきた輩がいて、そのメールを読もうとして処理が進まなかったことがあったので、その時にMailがクラッシュしたようです。その時はiPhoneをそのままにしていて、後にメールを読んだ時は問題がなかったので、クラッシュ後は自動的にMailが再起動されるんでしょうね。

と言う訳で、気が付かなかったものの、iPhoneでのアプリ初クラッシュに遭遇したようです。ただ、数日間使用しての初クラッシュだし、OSレベルでのクラッシュではないので、iPhoneの堅牢性は満足できるレベルなんじゃないかな。Mailには、添付ファイルの自動ダウンロードをオフにするオプションが欲しいところです。

それから、ハードウェア・リセットを試したことがあったのですが、そのログも/Library/Logs/CrashReporter/MobileDevice/下に入っていました。

iPhone/SafariでのJavaScript動作不良?

いろいろと多忙を極めつつあるのですが、楽しい誘惑には素直に負けることにしていて、マルチ・タッチMaxコントローラを目指して実験中です。まぁ、それほど時間が取れないのが残念なのですが。

それで、iPhone/SafariではonMouseMoveハンドラが動かないようです。Mac/Safariなら、ちゃんと動くシンプルなJavaScriptが、まるで反応してくれません。これは私の未熟なスクリプトのせいではないのかも。それが証拠に、Yahoo! UI Libraryで作ったスライダーもノブをドラッグすることができません。(Mapsアプリケーションではなく)iPhone/SafariでのGoogle Mapsでも、地図やノブのドラッグができないのです。

これはバグではなくて、意図的な処置かもしれません。つまり、iPhone自体のUIとしてのページ・ドラッグとの競合を避けているんじゃないかな? しかし、metaダグでuser-scalable=0等と指定して、ページ・ドラッグが不要な状態にしても、症状は同じです。メッセージ・ヒエラルキー的にはユーザUIを優先しても良さそうなんですけど、セキュリティ的な懸念でシステムUI優先なのかもしれません。

てなわけで、スライダー一本まともに動かせない状況で、何か抜け道を探す必要がありそうです。テスト用のWebページを作っているので、iPhoneをお持ちの方は追試していただけないでしょうか? Webプログラム初心者なので、何か間違っていることがあれば指摘してください。スマートな解決法があれば、とっても有り難いです。

iphone-yui-slider.jpg

以上はUS特派員によるテスト結果で、私のiPhoneはペーパークラフトですからね!ってのは、もういいですよね。しかし、私の知り合いには初日からiPhoneを使いまくっている人が多くて、本当いいよね〜って感じです。この体験が1日遅れても大したことないですけど、1年遅れると致命傷なんじゃないかな。

iPhoneについての雑感

US特派員が、iPhoneの使用レポートを寄せてくれました。スクリーンが明るくて画像は鮮明とか、指で操作するCover Flowは新次元とか、他でも載ってそうなメジャーな事柄は省いて、マイナーというか重箱の隅的なレポートになっています(笑)。適宜追加予定とのこと。

・iTunesに接続中でも(同期中を除いて)、iPhoneの操作ができる。
・iTunesに接続中に、DockからiPhoneを抜いても怒られない。
・Mapsで世界中が表示可能で、日本では地名などが日本語で表示される。
・Mapsではアメリカ大陸から太平洋を渡って日本に辿り着けない。
・スピーカーの音量は十分に大きく、そこそこの迫力で音楽やビデオを楽しめる。
・音楽を流しながら他の作業ができる。画面を消して音楽再生に専念もできる。
・初めてケータイでメールを読む気になった(iPhoneはケータイではないが)。
・カレンダーを月曜日始まりにできない。
・指を滑らせてキーを選びながらタイプできる(誤入力は減るが、入力速度は落ちる)。
・パスワード入力時に平文表示オプションが欲しい。
・iPhoneとMacとで天気予報がかなり異なる(Weatherの参照サーバが異なる)。
・ポケットには、やや重たい。うっかり手から滑りそうになることもあり。

ところで、US特派員が云々とか、私のiPhoneはペーパークラフト云々とか、毎回断りを入れるのは面倒なので、以降同様ということでお願いします。

それから、例のペーパークラフトをそのまま作ると、実物とほぼ同じ大きさであるものの、実物より少々厚かったそうです(実物の方が薄い)。違いが分かりにくいですが、仲良く記念撮影です。

iphone-real-and-papercraft.jpg

send&receiveでシグナル送受信

今回の学生クエストは、send&receiveとsend~&receive~の相違です。パッチ。コードなしにメッセージ(やマトリックス)を送るにはsend&receive、オーディオ・シグナルを送るにはsend~&receive~ってのがジョーシキですよね。ところが、間違ってシグナルをsend&receiveしたら、ちゃんと動いちゃったのでビックリしたらしいです(ビックリするだけエライ!)。

さて、結論から言うと、シグナルをsendで送って、receiveで受け取ることができます。問題があるのは、シグナルをフィードバックするようなルーティングで、この場合はsend&receiveではシグナルを送ることができません。シグナルが止まっちゃいます(下図の右側)。send~&receive~ならフィードバックが生じてもシグナルを送ることができますが(下図の左側)、この場合はシグナル・ベクター・サイズ分だけシグナルが遅れます。そうでなければ、無限ループに陥っちゃいますからね。

send-vs-send.gif

ちなみに、send&receiveとsend~&receive~とでは、同じ名前を使うことはできませんね。それから、メッセージをsend~&receive~で送ることもできませんよ。

ともあれ、ジョーシキに沿うのが無難なのですが、私はシグナルにsend&receiveを使うことが多いかも。だって、sとrが使えますからね。

iPhoneでの日本語入力

先の記事で「できない」と書いた矢先に、iPhoneで日本語入力を可能にするWebアプリが登場していることに気が付きました。ぼんやりと考えたことさんの哀Twitter哀Mailです。汎用の日本語入力機能ではなくって、それぞれTwitterとMailに入力した文章を引き渡すようになっています。なので、jKeyboardというのもあって、JavaScriptファイルをダウンロードできるので、ご自分のWebアプリに組み込んでね、ってことなんでしょうね。

以下のように、MacのSafariでも哀Mailが実際に動作します。

iphone-aimail.gif

マウス・クリックと指先タップとでは操作感が違いますが、どんな雰囲気か想像できますよね。ただ、BSやCRの位置が標準のソフト・キーボードと異なるので、ちょっと混乱するような気がします。

それから、iPhone日本語検索ツールってのもありました。いずれにしても、ひと手間かかるものの、不可能を可能にするアイディアと実践が素晴らしいです。

【追記】iPhone mixi 投稿ツールが公開されていました。こちらは、ブックマークとして登録するJavaScriptを利用して、日本語入力ページとmixiとを繋ぐようです。

iPhoneでの日本語表示

iPhoneではWebやメールなどで日本語表示ができる(しかし、日本語入力はできない)ことは、既に各所で報じられていますよね。そこで、このサイトがどのように表示されるかを、US特派員に試してもらいました。まずは、記念のOdyssey on Odysseyです(USにだって、この本はゴロゴロしてます!?)。

iphone-on-odyssey.jpg

若干フォントがイマイチな感じですが、日本語自体はきちんと表示されています。ところが、ページのレイアウトに問題があって、縦置きでも横置きでも、左側に少々、右側には大きく空白が生じてしまいます。もちろん、ズームインすれば適切に見えるようになりますが、デフォルトの表示としてはダメですよね。ウィンドウの概念がないから云々というのは、このことだったのかな? ともあれ、このサイトはiPhone最適化の作業をしなければならないようです。

iphone-odyssey.jpg

ちなみに、私のiPhoneはペーパークラフトですけど、この写真は本物ですよ。

マウスによる無限コントローラ

先週の学生クエストで、マウスをコントローラとして使うためのテクニックです。マウスを使って、人の動作や物の動きを検出しようとする時に、問題はマウス・ポインタがスクリーンの端に達すると、それ以上はマウス・ポインタが動かないことですね。物理的な動きが続いても、ソフトウェア的な動きが止まってしまい、矛盾が生じるわけです。

この解決方法は、意外に簡単なのですけど、実は昔懐かしのDSPマガジン1035号に書いています。以下、引用。

■マウスはコントローラ

これまたタイトルを見て、なんじゃ?と思われるかもしれませんが、マウスをコントローラとして使う時のお役立ち情報です。インタラクティブなインスタレーションなどでは、鑑賞者の操作や動作を何らかの形で取り込む必要がありますよね。この時に、もっとも簡単な手段がマウスです。もろにマスウでなくても、トラックパッドとかトラックボールとか、マウスと同じように動作するデバイスもたくさんあります。

多くの場合は、フルスクリーン表示したいので、「;max hidemenubar」というメッセージ・ボックスにbangを送り、jit.windowに「fullscreen 1」を送ってウィンドウを全画面に広げます。さらにマウス・ポインタを消すために「;jitter cursor 0」メッセージ・ボックスにbangを送ります。Mac OS XならDockも「自動的に隠す」にしておきます。そして、MouseStateオブジェクトなどでマウス・ポインタの位置やマウス・ボタンの状態を読み取れば、鑑賞者の操作状態が得られます。

と、ここまでは常識(?)ですね。しかし、これで困るのは、消えてるとは言え、マウス・ポインタがスクリーンの端に達すると、それ以上移動しないので、無限に動作できないことが挙げられます。また、Mac OS Xなら、マウス・ポインタがスクリーンの上端や下端に来ると、自動的にメニュー・バーやDockが現れ、マウス・ポインタも現れてしまいます。これでは、せっかくのフルスクリーン表示がオジャンです。

このような問題を解決するために考えたのは、以前にも紹介したMaxへのpupdateメッセージで、強制的にマウス・ポインタの位置を戻す方法です。まず、screensizeオブジェクトなどでスクリーンの中心座標を求め、そこにマウス・ポインタを移動します。次に、MouseStateオブジェクトでマウス・ポインタの位置を求め、スクリーンの中心座標からの差を求めます。この差がユーザがマウスを動かした相対変化値になります。そして、すかさずマウス・ポインタをスクリーンの中心に戻し、以下、これを繰り返します。

このようにすれば、マウス・ポインタは常にスクリーンの中心に戻りますから、メニュー・バーやDockに影響を与えることがありません。マウスが移動した相対変化値をそのまま用いても構いませんし、相対変化値を加算し続けることで、無限に値を大きく、あるいは小さくできる(と言っても数値の精度範囲ですが)絶対変化値として用いることもできます。

簡単なサンプル・プログラムも作りましたので、以下のリンクからダウンロードして試してみてください。このプログラムでは動作状況が分かるように、マウス・ポインタを消去していません。escキーを押すことで動作開始、もう一度escキーを押せば動作終了です。

実際のパッチは以下のようになります。ダウンロードはmousecontrollerpat.zip

mousecontroller.gif

ちなみに、マウスでコントローラ云々ってのはIAMASでは普通に話が通じるんですが、世間では一般的ではないかもしれませんね。それは何じゃい?と思われた方は、もうすぐIAMASオープンハウスがあるので、遊びに来てください。このマウス・コントローラを使った作品もあるハズです。

【追記】このパッチを使う場合に、システム環境設定の「マウス」で、軌跡の速さをもっとも遅くすると良いかも。このようにすれば、マウスの動かし方によって移動量が変化せず、リニアな移動になる(たぶん)からね。

Aptana IDE: iPhone Development Plugin

Aptana IDE用のiPhone Development Pluginがリリースされました。元々、Aptana IDEというAjax系の統合開発環境があって、それにiPhone用の機能が追加されたという訳です。

お約束のiPhoneプレビュー(縦横切替可)やiPhone用のスターター・ファイルが用意されていて、Ajaxライブラリの取り込みも簡単とか。開発したWebアプリはローカル・サーバですぐに実行できて、iPhone Firebugなるデバッガが使えるようです。具体的な導入方法はDeveloping for the Apple iPhoneを参考にすると良いと思います。

iphone-aptana.jpg

iPhone Development Plugin自体は、Aptana(スタンドアローン版)でもEclipseでも使えるようになっています。AptanaはEclipseをベースに開発されているので、EclipseのプラグインとしてのAptanaもありますね(ヤヤこしい〜笑)。ともあれ、iPhone/Webアプリの開発体制が整ってきましたから、そろそろ始めるのが吉かもですよ。

【追記】MorfikのWebOS AppsBuilderという統合開発環境もiPhoneをサポートしたそうです。PCオンリーなので、私には分かりませんが、PCな人は試してみてください。