前回に引き続き、RSS+ReaderのOperaMobile対応を強化しました。
Flash Lite 3に対応
OperaMobile9.5ではFlashLite3と連携できるので、音楽と動画、オブジェクトを再生出来るようにしました。 (RSS+Readerの設定はデフォルトでは無効になっています。 Flashを入れた後にポップアップ設定から有効にしてください。)
Flash Lite3自体は公式にダウンロードできないので、何処かから入手していただくしかありません。 私はxda-developersのフォーラムに上がっていたCABを使いました。 (ただし、相性によるものかFlash再生後はときどきOperaが異常終了する。)
YouTubeの動画が普通にブラウザ内で再生できて感動。 でも専用のプレーヤーと比較するとフレームレートは劣るし、音楽や動画によってはフルスクリーンにしないと再生出来ないこともありました。 Flashはプレビュー目的に使って、本格的な閲覧は外部プレーヤーで観るのがいいと思います。
タブメニューを表示
タブの機能に相当するメニューを表示できるようにしました。 このメニューは本文の適当な位置をクリックすれば表示します。 (長押しはブラウザのメニューなので、短押ししてください) RSSやスレッドを途中まで読んで終了したいときに使用すると便利です。
追加で、画像やレスのポップアップをスクロールで消すのをやめました。 (前回まではOperaでスクロール位置が正しく取得できないため、 少し触っただけで消えてしまい使いづらかった。)
あとがき
テストしていて気が付いたのですが、Wiiで埋め込みのYouTube動画が見れなくなっています。 夏頃は見ることが出来たので、ここ数ヶ月で変更があったのでしょうか? 埋め込みはダメでもYouTubeのサイト上では再生できることから、YouTube側の問題だと推測しています。 今のところ打つ手無し。
RSS+ReaderをOperaMobile9.5に対応しました。 (WindowsMobile以外は変更がありません)
OperaMobile9.5のバグの関係上、少し表示位置の変更があります。
これまでポップアップダイアログは画面に合わせて表示していましたが、OperaMobile9.5ではクリックした位置を中心に表示するように変更しています。 (使い勝手が大きく劣ることはないと思います。)
8.x系では上部と下部のメニューを固定表示できていましたが、9.5では出来ないため外すことにしました。
テストはイーモバイルのTouchDiamond(S21HT)にて行っています。 今回はQVGA解像度のマシンでも動作するようにしてありますので試してみてください。
RSS+ReaderをOperaMobile9.5に対応させる際に発見したバグを報告しておきます。
OperaMobile9.5はiPhoneのSafariと動作が近く、多分に意識して開発されたブラウザで、8.x系から大幅に仕様が変更されているためにバグも多く含まれてしまったのだと推測しています。
viewportのサイズが間違い
iPhoneのSafariと同様にviewportのmetaタグが使えます。 ただし、width=device-widthとheight=device-heightを指定すると、320×240のQVGA相当の画面になってしまいます。
ちなみにwindow.screenのwidthとheightの属性も同じく320×240でした。 これはTouchDiamondとOperaMobile9.5の組み合わせだけがこうなるのかどうかは不明です。
あとバグではないのですが、viewportのmetaタグでuser-scalable=noを指定しても拡大縮小できてしまいます。 Opera開発者曰く、拡大縮小はユーザが選択するべきものだからだそうです。
現在の表示位置や大きさを特定できない
画面をスクロールさせた場合、ほとんどのブラウザではその位置を特定できるのですが、OperaMobile9.5は見当はずれの位置を返すことがあるため信用できません。 特に上にスクロールしたときや、カーソルでスクロールすると、見事に変な座標を返します。
また、現在の画面の高さを、window.innerHeight、documentElementやdocument.bodyのclientHeightなどで取得することが出来ません。 これらは仮想Viewの高さを返してくれます。
position:fixedが使い物にならない
8.x系ではキチンと機能していたfixedですが、9.5からスクロールに引きずられるようになっています。 スクロール後にfixed位置で再表示しようとしますが、ずれることが多く、使い物になりません。
あとabsoluteレイヤ上の要素の座標を特定しなければいけない場面があったのですが、見事に0を返してくれました。 これも同じく使えません。
divのスクロールが反応しない
フローティングのdivエリアがスクロールできる状態の時、8.x系ではその部分をドラッグしてスクロールできましたが、9.5では出来ません。 お飾り的なスクロールバーが付いているのですが、もの凄く細くてとても使えません。
その他、おかしな動作
URL横にあるリロードのボタンが誤動作について。 上部のURLバーは自動で隠れるのですが、隠れたバーに重なるリンクをクリックすると、隠れたはずのリロードボタンが反応することがあります。
追記: 時々XMLHttpRequestのPOSTデータの本文が送られないことがあるようです。 稀に発生することなので原因がよく分かりませんが、そのままでは困るので対処が必要です。
以上ですが、他にもたくさんバグが隠れているような気がします。

イーモバイルのTouchDiamond(S21HT)を購入しました。
iPhoneを意識したタッチ操作なので誤解されがちですが、タッチ操作に関してはアップルの足下にも及びません。 ハッキリ言ってこの方面には期待しない方が良いです。
それよりも、WindowsMobile端末でありながらこのサイズと軽さを実現していること。 とても小さく手のひらにスッポリと収まるサイズなので片手操作がiPhoneより楽です。
標準のTouchFLOは速効で外して、WindowsMobileとしてゴリゴリと自分好みにカスタマイズできる人にお勧めできます。
使いづらい部分が多いけれど、色々とソフトをインストールしては手にとってニンマリ。
ところで、標準ブラウザのOperaMobile9.5でRSS+Readerが正しく表示できていないですね。 この辺は少し調べ始めていますので、そのうち対応版を用意する予定。 (ただしOpera9.5そのものの出来はあまりよろしくない。内部の情報にバグがあったりするので、8.x系の方がまだ良かったような…) 最近、Reader更新していなかったので丁度いいか。