Windows」カテゴリーアーカイブ

メビウス PC-NJ70A 液晶センサータッチパッド

●タッチパッドのところに iPhone が埋まってるやつ

iPhone / iPod touch を使っていると、マウス代わりにこれでそのまま PC操作
できたらいいんじゃないかな、と思うことがあります。
タッチパッドの感触はなめらかでレスポンスも速いし、マルチタッチもわかりやすく、
スクロールなどの操作も心地よく動いてくれるからです。
(実際に iPhone をタッチパッド代わりにできるアプリもあるようです)

本当にそれを実現しようとしたのかどうかわかりませんが、
SHARP メビウス PC-NJ70A の見た目はまさにそれ。
センサーの仕組みはともかくマルチタッチ対応のパッドに液晶画面もついていて
独自のアプリも動くという。なんか埋まってます。

そのメビウスがようやく手元に届いたので使ってみました。

現実はそう甘くはないようです。

●光センサー液晶パッドのモード

・マウス操作モード
・タッチ操作モード

●マウスモード

mebius pc-nj70a

通常はマウスモードで、ノートパソコンの一般的なタッチパッドとして機能します。
特徴的なのは以下の点

・表面がつるつる
・パームレストと一体型
・サイズ大きい、幅が広い
・ボタンが 3つあるけど 2ボタンマウス相当
・マルチタッチ
・多少のビジュアルエフェクトがある

つるつるなのはおそらく光学式センサーの光を通す必要があるため。
光が透過しさえすれば透明な素材で全体を覆ってしまっても構わないのでしょう。

ボタンは残念なことに 2ボタンでした。
VAIO type P は中ボタンがついていて 3ボタン。
液晶パッドの真ん中のボタンは「マウス操作」と「タッチ操作」の切り替えです。

マルチタッチの活用として二本指スクロールがあります。
EeePC 901 等と同じです。

液晶パッドの画面には、タッチ位置に遅れてついてくる光のカーソル演出があります。
この辺は設定で変更できるようです。

●タッチ操作モード

mebius pc-nj70a

真ん中ボタンでタッチ操作モードに切り替えると、液晶パッドにメニューが出てきます。

ここでタッチを活用した独自のアプリケーションを走らせることが出来るようです。
マウスカーソルを使うウィンドウズアプリと違って、こちらは直接触って操作
できるのが特徴。

しかも光学センサー液晶パッドは他の方式と違い

・マルチタッチ対応 (何点でも?)
・静電容量式のように指が触れただけで反応する
・ペン操作もできる

等と利点も多数あります。
しかしながら画面の呼び出しや表示切り替えは決して速いとはいえず
なめらかなアニメーション演出も期待できません。

例えば電子ブックリーダーでは本のタイトル一覧が表示されるのに、タッチ操作では
上下にスクロールできません。マウスの左右ボタンで上下のページ切り替えだと
気がつくのに若干時間を要しました。(一応二本指スクロールは出来るけど描画が
ついてこない)

アプリケーションの作り込みの甘さや描画速度の遅さ、反応の悪さなど、可能性の
あるセンサーやデバイスをまだまだ使いこなせていないようにみえます。

サブ画面用に描画アクセラレータが乗っていないのか、メインメモリからの描画
転送がボトルネックなのかはまだわかりません。

センサー自体は大変ユニークで、例えば「エンターテイメント」に入っている
ピアノのアプリはマルチタッチを実感できます。
とりあえず指 4本のタッチ座標が取れているのは確認できました。

HP TouchSmart PC IQ800 のマルチタッチは 2点までだったので、今後 SDK が公開
されたり Windows7 用ドライバが出てくれば、さまざまな活用が考えられます。
今後に期待ですが、「iPhone / iPod touch が埋まっている」の域まで達するには
まだまだかかりそうです。

なおタッチ操作モードではマウスカーソルが動かないので PC の操作ができません。
外付けのマウスをつないでおけばタッチモードでも普通に使えました。

●まとめ

ネットブックなど多くのノートパソコンがあふれる中で、普通じゃない機能を持った
PC であることは確かです。
実用性よりもまずはこの点をおもしろいと思えるかどうかが評価の境目となるでしょう。
これからしばらく実際に持ち歩いて使いつつ、まずは普通の PC としてセットアップ
してみます。

関連エントリ
メビウス PC-NJ70A 画面解像度とタッチ
Windows7 とマルチタッチ / HP TouchSmart PC IQ800

VisualStudio 2010 beta1

VisualStudio 2010 beta1 を使ってみました。
環境は Windows7 RC + Windows SDK for Windows 7 RC。

とりあえずコンパイラオプションを見ると x64 に arch オプションが増えていることがわかります。
「 /arch:AVX 」すでに intel AVX に対応している様子。

実際にコンパイルすると C5 命令が見えます。
浮動小数演算部分でちょうど SSE/SSE2 命令が AVX で置き換わっている形です。
実行するとやっぱり Illegal Instruction。

float	af= 1.3f;

C5 FA 10 05 C3 51 0E 00 vmovss      xmm0,dword ptr [__real@3fa66666 (13FD5CE2Ch)]  
C5 FA 11 44 24 74    vmovss      dword ptr [af],xmm0 

直接 AVX 命令を使うには immintrin.h を include する必要があるようです。
immintrin.h には AVX の 256bit 長のデータ型 __m256 が宣言されていました。

他に追加されたオプションは auto の扱い方です。
VC++ 2010 は auto や decltype といった宣言で型をコンパイラに判断させることができます。
キーワードの意味が変わったので /Zc:auto- で無効にできるようです。

MSDN auto Keyword

VC++ 2010 はこのように新しい言語仕様を取り入れていて、面白い機能がいろいろ
増えています。
たとえば lambda 式が使えるようになってること。

auto f_mul= []( int a, int b ) ->int { return a * b; };

宣言した無名関数をオブジェクトとして受け取れます。楽しい!
[] は capture の宣言で、クロージャーへ変数を渡す手段を記述するようです。
コピー [=] と参照 [&]、または変数個別に指定できます。
返値の型は return 文で類推しますが引数のあとの -> でも指定できます。

MSDN Lambda Expressions in C++

auto は型を自動で判別する変数宣言で、型そのものを受け取るなら decltype() が使えます。

&& 宣言は右辺値参照。代入可能な左辺値ではなく、値としての右辺値を
参照で取れるというもの。

Rvalue Reference Declarator: &&

実際に定数値でも参照可能となります。
この宣言は const でないので書き換えもできました。

int&& dd= 3;
dd++;

disassemble して生成コードを見ると、無名の auto 変数へ代入してからアドレスを
取っています。
どうやらこれが本来束縛されていないテンポラリで、右辺値参照によってこのような
無名領域へのアクセスが可能になるようです。
加算もその領域に対して行われています。

実際どのように使えばどんな効果があるのか、下記ページをかなり参考にさせて
いただきました。

ntnekの日記 和訳:Rvalue References: C++0x Features in VC10, Part 2

特に効率化は期待できるようです。
例えば C++ では一時オブジェクトが何度も生成破棄されることがありますが、
受け取った引数がすでにコピーされた一時オブジェクト(右辺値)とわかっているなら
そのまま再利用してもかまわないというわけです。
コピー元のオリジナルなら左辺値。

右辺値参照の宣言は、一時領域へのアクセス手段を手に入れると同時にこのような区別も可能になります。

非常に面白いです。
今日は本来の作業の目的を忘れてずっと VisualStudio 2010 。

メビウス PC-NJ70A 画面解像度とタッチ

SHARP メビウスのモニターに当選してしまいました。

募集がすぐ終わったとか倍率高いとか新しいセンサーを使っているとか、
ちょうどその話をしていた直後だったので目を疑いました。
なにせ「募集時点ではスペックや詳細が未発表だったので、自分はもっと小型の
デバイスを期待してた・・」とかその場で興味なさそうに発言してた本人が
当たってしまったのだから尚更です。

すでに発売されているようですが、モニター自体は来週以降なので少々待たされます。

SHARP Mebius PC-NJ70A

スペック的にはほぼ一般的な Atom N270 PC です。
特徴的なのは独自のタッチパッド。
液晶画面がついているだけでなくセンサーも兼ねた代物で、画素一つ一つが光を
読み取っているようです。
この新しいデバイス&センサーは使ってみたいところです。

もう1つ興味あるのは、タッチパッド部の液晶も結構解像度が高いこと。
854×480 ドットというと初代 EeePC 701 とほぼ同じ広さな訳ですから
この中でデスクトップやらブラウザやら普通に動かしていたことになります。
タッチパネル部のサブ画面をウィンドウズでどこまで自由に使えるかわかりませんが、
画面を広くするためのひとつの方法かもしれません。

思い返すと初めて買ったノート PC がSHARP メビウス ワイド PC-W100 でした。
メビウスワイドの画面は偶然にも同じ 1024×600 ドットです。

ネットブックが出てから 1024×600 ドットはごく普通のありふれたサイズに
なりましたが、13年前の当時は大変珍しいものだったのです。
横をのばしたというよりも 1024×768 から縦を削ってキーボードを圧迫せずに
本体サイズを小さくしようとしたもの。

当時のスペックをあらためて見ると Windows95 で RAM は 16MByte に HDD 1GByte。
CPU も Pentium 133MHz。さすがに 13年の年月を感じます。
これでも当時は DirectX3~5 を入れて Direct3D の RampDriver でプログラムを書いていました。

メビウスワイドから今まで、この間に使ってきたノート PC は
1024×600~1024×768 が圧倒的に多かったことに気がつきます。
記憶容量も演算速度もバス速度も描画速度も著しく向上しているはずなのに、
意外なほど長期間にわたって小型ノート PC の解像度が変化しませんでした。

もちろん最近は LOOX U の 1280×800 や VAIO type P の 1600×768 のように、
より詳細な液晶画面を搭載するものも出てきています。

PC-NJ70A を見て思ったのは、高解像度化に消極的なメインの液晶画面の代わりに
サブモニタを増やしてマルチ画面化するのも小型ノートパソコンの方向の 1つとして
ありなのかもしれないということ。
CPU が Multi core 化するように。

あとはサブ画面をどこまで自由に使えるか。
もしかしたら Windows SideShow でしょうか。
無理かもしれないけど理想はデスクトップの延長として使えることです。
Windows7 だと multi touch API が整備されているので、もしドライバがあるなら
すぐにでも使いたいところです。
現在 Multitouch 対応 PC として HP TouchSmart PC IQ800 を触っていますが
外周にセンサーを配置した光学式で 2点まで同時に識別することができます。
PC-NJ70A ではもっと自由に点を取れたらいいですね。

期待点まとめ
・タッチパッドとして
・画面の拡張、サブ画面として
・マルチタッチ対応センサー付きモニタとして
・別の入力手段として、位置的に親指シフトキーを配置できたりするかも

関連エントリ
Windows7 とマルチタッチ / HP TouchSmart PC IQ800

Windows SDK for Windows7 RC と Multitouch / Direct3D 11

Windows7 RC と同時に WindowsSDK の RC 版も出ています。

Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: RC
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: RC (ISO)

BETA 時点からタッチ周りの API など変更されているところがあるので要注意です。
たとえば WM_TOUCHDOWN, WM_TOUCHUP, WM_TOUCHMOVE 等は無くなり
WM_TOUCH に統一されているようです。

マニュアルも更新されています。
以前 User Interface の下にあった Touch 関連が Windows Touch
という新項目にまとめられています。このあたり力が入ってます。

MSDN Windows Touch

Direct3D11 関連も DirectX SDK March 2009 より新しいものが含まれていました。
ただし d3d11.lib などの lib 名に _beta がついていないので include の順番に
注意した方が良さそうです。
Vista で使う場合は DXSDK の方を。

関連エントリ
Windows7 Multitouch API その(2) WM_GESTURE 系
Windows7 Multitouch API
DirectX SDK March 2009

VAIO type P + Windows7 RC で Direct3D 11

Windows7 RC を入れた type P はAero がそれなりに動いているので印象が変わりました。
現在透明感 off で使用しています。

・個人設定→ウィンドウの色→「透明感を有効にする」のチェックを外す

半透明ではないもののウィンドウの重なりがハードウエア描画なので速いです。
たとえばウィンドウ移動とか最小化のアニメーションとかそこそこスムーズに
できますし(たまにかくつくけど)、タスクバーにマウスカーソルを乗せると
ウィンドウの縮小イメージもポップアップで出ます。
ウィンドウの中の描画速度は変わらないけど、操作の印象は良くなりました。

たまに背景の描画が追いつかないのか真っ黒に崩れることがあります。
フレームバッファが消えてしまった状態ですが、以前から同じ症状があった気がするので
また違う問題かもしれません。

Aero が動くということは D3D も動くようになったということ。
GMA500 がどの Feature Level まで対応しているのか Direct3D11 で試してみました。
結果は残念ながら FEATURE_LEVEL_9_1 ~ 3 も未対応。
ハードウエアでは動作しませんでした。

Direct3D11 サンプルや一部のアプリケーションが動くのは、ソフトウエアレンダラ
WARP Device を呼び出しているからです。
D3D11CreateDevice~() の D3D_DRIVER_TYPE_HARDWARE でエラーが出た場合、
D3D_DRIVER_TYPE_WARP できちんと作り直しているアプリは動きます。
D3D11 サンプルが動いて D3D10 が動かないのはおそらくアプリが WARP に対応していないから。
D3D10 LEVEL_9_1 ~ に対応していないということは Direct2D を使う場合もおそらく
CPU レンダラになります。
ハードウエア対応は今後に期待。現状未対応でもとりあえず動くのは WARP のおかげです。

●結論
GPU は Direct3D 9 3.0 まで対応しているものの、
現状では Direct3D10/11 の下位モードの Level9 でも動作せず。
WARP なら動く。

関連エントリ
VAIO Type P の Windows7 RC は Aero が有効