330 likes | 447 Views
Windows PC の GUI 抽出と転送 ~机から離れて PC を使おう~. 電気通信大学 安田絹子 (YASUDA, Kinuko) kinuko@spa.is.uec.ac.jp. お品書き. 導入と余談 : PC のある生活 PC リモコンの概要 研究方針 Gray-Box アプローチ オープンプラットフォーム 設計と実装 デモでも. 導入の前にやったことの概要. Windows 用の PC リモコンを設計・実装した 画面表示のうち、 GUI 制御情報だけを PC から手元の携帯端末 (PDA) に転送する 特徴は以下のとおり
E N D
Windows PCのGUI抽出と転送~机から離れてPCを使おう~ 電気通信大学 安田絹子 (YASUDA, Kinuko) kinuko@spa.is.uec.ac.jp
お品書き • 導入と余談 : PCのある生活 • PCリモコンの概要 • 研究方針 • Gray-Boxアプローチ • オープンプラットフォーム • 設計と実装 • デモでも
導入の前にやったことの概要 • Windows用のPCリモコンを設計・実装した • 画面表示のうち、GUI制御情報だけをPCから手元の携帯端末(PDA)に転送する • 特徴は以下のとおり • アプリケーション非依存 • リモコン側端末の表示能力・CPU能力に柔軟に対応 • 少ないネットワーク転送量 • XML記述形式によるオープンプラットフォーム • 複数リモコンによる同時操作が可能 (おそらく) • 必要に応じて特定のGUI部品を抽出・変形可能 (予定)
導入:PCのある生活 PCリモコン作成までの日々 脱PC傾向とPCへの憂慮
PCブラックホール現象 • 家に初めてデスクトップPCを導入 • 日常生活のPC集約化現象 • あらゆる情報の拠点 • AV機器の代替 • コミュニケーション • 買い物・教育・趣味・ゲーム・暇つぶし • ... • 行動半径がPC周囲に集中
作業時の定位置 だらけてるとき定位置 その他食事中など 家の環境とPC • 家の間取り • 実際のものとは多少異なります つくえ ベッド
PCが遠い... • だらだらしていてもPCを触りたい • PCは机の上 • だらけながらDVDを観たりMP3を聴いたりしたい... • この間約1.5~3m • たったこれだけの隙間をどう埋めれば? つくえ ベッド
PCの使用スタイル再考(1) どうしてこうで こんな感じにはならないのか?
PCの使用スタイル再考(2) • 机への強い束縛 • 汎用性・多機能の罠 • 高精細なディスプレイ • 高度で複雑な入力機器 • 機能(アプリ)によって異なる操作体系 • 「何気なく」使えない • PC:人=1:1の定着化 • 非PC・脱PCへの研究トレンドの推移 • PCはこのままでいいの?
PCリモコンの概要 研究の目標と方針 実行画面
目標と要求仕様 • 直近の目標:机から離れてPCを使いたい • 要求仕様 • Windowsで使える • アプリケーション非依存である • 端末能力や嗜好に応じてカスタマイズ出来る • 画像や映像は大きな画面で見たい • 非力な端末では概要情報だけ欲しい • 「再生」「停止」の操作ボタンだけ手元に欲しい
再生 停止 つまり、必要なのは… • 全画面の転送は不要 • ウィンドウやメニュー・ボタンなど、GUI部品の抽象的な情報だけ抽出して転送できれば良い
研究方針 • 画面表示のうち、 • GUI情報のみを抽出して転送する • コンテンツ表示部は転送しない • 技術的課題: OSにもアプリケーションにも手を入れず、必要なGUI情報を抽出できるか? • GUI部品のメタな構成情報のみを転送 • アプリケーション非依存 • 少ない転送量・処理量
実行画面 PC側の画面 リモコン側の画面
WindowsにおけるGUI情報の抽出 中身のわからないソフトウェアの扱い
Windowsへのアプローチ • GUI情報の取得 • UNIXでは… • ネットワーク透過の標準化されたXプロトコルが基本 • 各種GUI Toolkitのソースコードが入手可能 • OS, Window Manager, GUI Toolkit がそれぞれポータブルに作られているので、後から変更・機能追加が容易 • Windowsでは… • Windows = OS + Window Manager + GUI Toolkit + Web Browser + X + Y + Z + … • ソースコード非提供・内部情報なぞ • 公開APIを使ってなんとか探るしかない
中身のわからないソフトウェア (1) • Black-Boxアプローチ • box内部は全くわからない。box外部から明示的に得られる情報だけで(box内部の状態・挙動を推測して)頑張る • VNC • Gray-Boxアプローチ • box内部に関する一般的な知識(構造や動作アルゴリズムなど)を使って、box外部から得られる情報から内部の状態を知り、制御する • TCP輻輳制御 • ICL tools
中身のわからないソフトウェア (2) • 提供されたインターフェイスの利用 • 意図された利用 / 副作用の利用 • バイナリ検査・書換え • アプリケーションのバイナリコードを直接変更することで、システム内部情報を取得・制御する • Detours:特定の関数呼び出し前後に別の処理を挿入 • デバッガ,プロファイル用DLL • 入出力のモニタ・計測・ベンチマーク • 履歴・統計的手法による推測 • システムに関する前提知識の活用
PCリモコンにおけるアプローチ • Gray-Boxアプローチ • GUI情報の取得 • 提供されたインターフェイスを利用 • 入出力のモニタ • GUIの振舞いに関する一般的な知識の利用 • 画面表示はウィンドウ,メニュー,ボタンなどの階層構造を持つGUI部品によって構成される
Windowsから得られる情報 (1) • 内部情報の取得・制御 • 情報取得システムコールの利用 • GUIの現在の状態の取得 • 表示中のウィンドウの名前・座標・状態 • ウィンドウの持つメニューの名前・項目 • ダイアログ中のボタン・文字列の内容・座標 • マウスの座標・状態 • GUIの操作・制御 • マウス・キーボードイベントの発行 • ウィンドウ操作 (最大・最小化・移動・リサイズ・名前変更) • メニューの選択 • ボタンの選択
Windowsから得られる情報 (2) • 内部挙動のモニタ • システムコールによるフックの挿入 • 各アプリケーションとWindowsとのインタラクション中に独自の処理(フック)を挿入可能 • フックは各アプリケーションのコンテキストで動作 • 内部の挙動・状態変化をある程度知ることが可能 • ウィンドウの生成・破棄・アクティベーション • マウス・キーボードイベントの発生 • ウィンドウ内部状態の変化 (子ウィンドウの出現など) • メニュー操作・ダイアログ操作などの操作の発生
Windowsから得られる情報 (3) • 一般的な知識を利用して欠けている情報を補う • 一部のウィンドウの移動:ウィンドウ内でマウスドラッグが起きたら移動の可能性 • ダイアログやポップアップの出現:GUI操作後のウィンドウ内部状態変化の通知 • 標準GUI部品を利用していないボタンなどの抽出:イベント後、GUI操作を示すインタラクションが起きていたらその部分はGUI部品 得られる情報をもとにGUI情報を再現してみたもの。これくらいの情報が得られればなんとかなりそう?
PCリモコン:設計と実装 システムの概要 設計・実装
システム概要 • VRC (Virtual Remote Controller) • サーバ・クライアント構成 • サーバ(制御されるPC):GUI情報のモニタ・転送・制御 • クライアント(リモコン):端末能力にあわせてGUI部品を再現
サーバ(PC側)の概要 (1) • Windows XP/2000で動作 • 途中までCygwinで開発、今はVC++
サーバ(PC側)の概要 (2) • GUI情報の取得・管理 • GUI部品情報を木構造として管理 • フックからの通知をヒントに木構造の加工・再構築 • クライアントからの操作要求を反映 • 複数クライアント対応 • マルチスレッド・シンプルな排他制御 • 専用クライアント・Webブラウザ・XULクライアントに対応 • アダプテーション • クライアントごとに端末情報を管理 • 転送形式の変換 • 座標変換・イベントフィルタリング • 文字コード変換
クライアント(リモコン側)の概要 • Linux/Zaurus, Linux/PC, Windowsで動作 • gcc + Qt/Embedded • シングルスレッド・非同期通信 • トップレベルウィンドウ情報のみ内部に保持
GUI記述形式 • 内部形式としてXUL を試験的に採用 • XMLベースのUI記述言語 • MozillaやGeckoなど、ブラウザや最近のWindow Manager/UI Toolkitで採用され始めている • XUL対応のクライアントであればGUIを転送・共有可能 • XSL による木構造の変換・部分抽出 (未実装) • クライアントに指定されたXSLでGUI情報を変換すれば、GUI部品のポータブルな転送・アダプテーション・部分抽出が可能より大きな目標 • XULをベースとすることで、Windows PCに対するアクセスのためのオープンな基盤を提供できる…かも? • (機能ではなく)操作のポータビリティに着目 • プラットフォーム共通なGUI記述・操作言語 • GUI情報の転送・共有を切り口にしたオープン分散化の試み
XUL表現 (略式) • “?xul” サフィックスをつけることでWebブラウザから参照可能 <window title=“Power Point” width=“80 <menubar> <menu id=“14573”> <menuitem value=“ファイル” id=“632 <menuitem value=“編集” id=“63397” <menuitem value=“表示” id=“63342” …. </menu> </menubar> </window>
HTML表現 • HTMLに変換して出力 • 通常のWebブラウザからメニューの表示・操作が可能
まとめ • PCリモコンを作った。 • アプリケーション非依存なGUIメタ情報のみを抽出・転送するという手法を提案した。 • Windows内部情報を取得するためのアプローチについて説明した。 • XMLベースの記述表現を用いたオープンなGUI転送の構想について述べた。 • 課題・問題点 • たくさん
参考文献 (1) • Gray-Box アプローチ • Andrea C. Arpaci-Dusseau and Remzi H. Arpaci-Dusseau. Information and Control in Gray-Box Systems. SOSP’18, Oct 2001. • Windows Binary Inspection/Instrumentation • Ted Romer, Brian Bershad and et al. Instrumentation and Optimization of Win32/Intel Executables Usint Etch. USENIX Windows NT Workshop, Aug 1997. • Galen Hunt and Doug Brubacher. Detours: Binary Interception of Win32 Functions. MSR-TR-98-33 Microsoft Research, 1999.
参考文献 (2) • XMLベースのポータブルUIの試み • M. Abrams, J. Shuster and et al. UIML: An appliance-independent XML user interface language. 8th International World-Wide Web Conference WWW’8, May 2000. • Nikola Mitrovic and Edurado Mena Interactive Systems. Adaptive User Interface for Mobile Devices. Design, Specification and Verification. 9th International Workshop, Jun 2002. • Tzu-Han Kao, Po-Wen Cheng and et al. An XML-Based Context-Aware Transformation Framework for Mobile Execution Environments. 5th Asia-Pacific Web Conference, APWeb 2003, Apr 2003.