ページ

2011年12月26日月曜日

[Windows8] ピクチャパスワードの解説

ピクチャ パスワードを使ってサインインする」 より。

Windows 8 の新しいサインイン方式 「ピクチャパスワード」 (要するに、画像に 3回程度タッチしてそのパターンをパスワードにする) の安全性などについて解説されています。
タップと線と円を組み合わせれば 3回程度で結構な強度になるんですね。
「画面に残る操作痕に対するセキュリティ策」 なんてことも考えなくちゃいけないのはおもしろいな。これに関連してちょっと思ったのは、パスワードをキー入力しているところを盗み見てもとっさに全文字覚えるのは大変ですが、ピクチャパスワードなら覚えることができちゃいそうってところかな?

2011年12月22日木曜日

[WP7] Windows Phone 上でアプリ開発ができるツール - TouchDevelop

TouchDevelop v2.5: new tutorial, artwork, forum, and more より。

へえぇぇぇ、こんなのがあったんですね。
TouchDevelop という Windows Phone 7 アプリです。すでにバージョン 2.5 なので結構前からあったのかな?
サイトなどを見るとわかるように開発しているのは Microsoft Research です。Microsoft Research というのは Microsoft 社の研究開発部門なので、このアプリも研究の一環なんでしょう。

で、この TouchDevelop ですが、このアプリ自体がアプリの開発環境であり、実行環境にもなっています。
アプリの開発は、独自言語を持っていて、その言語でガシガシ書いていくようです。スクリーンショット に “action main()” で始まるいかにもプログラムっぽいものがありますが、コレです。
ただ、アルファベットをすべて打ち込むわけではなく、カーソルがあるところの文脈にあわせてそこで使えるコマンドなどが表示されるのでそれをタップして行くという感じです。(インテリボタンと言うみたい)
たとえば チュートリアル (英文・PDF) では、まず Shake イベントを選びます。続いてこのイベントの中身をプログラミングするんですが、「media ボタンをタップ」「songs ボタンをタップ」「rand ボタンをタップ」「play ボタンをタップ」 と 4回タップするだけで 「保存されている曲をランダムに再生」 というコードが出来上がる、なんて感じです。

もちろん、作ったアプリはいつでも実行できますし、Pin すればスタートスクリーンに配置することもできます。
また、Publish すれば公開することもできます。公開したアプリは誰でも TouchDevelop で読み込んで実行することができますし、コードを編集することもできるようです。また、公開されているアプリは https://www.touchdevelop.com/ でも見ることもできますし、こんな風に コードの内容も丸見え状態になってます。

TouchDevelop をインストールすると最初からいくつかサンプルが入っていて、実行したりコードを編集したりできます。これを書きながらちょこちょこと眺めてみましたが、なかなか興味深いです。

2011年12月21日水曜日

[WP7] PhoneGap が Windows Phone 7.5 に完全対応

PhoneGap が 1.3 で Windows Phone 7.5 に完全対応したそうです。
Full Support for PhoneGap on Windows Phone is Now Complete!

PhoneGap は HTML5+CSS3+JavaScript フレームワークで、これを使えば iOS や Android などのマルチプラットフォーム対応アプリケーションを作成することができます。(と言っても、私は使ったこと無いですし、ぜんぜんわかってないですが)
HTML5 と言っても Web サイト上のアプリではなく、出来上がるのはクライアントアプリです。
WP7 の場合は .xap ファイルが出来上がります。(.xap の中に HTML5、CSS3、JavaScript などのファイルも含まれています)
なので、普通のアプリと同様にマーケットプレース経由で配布することになります。

Get Started with PhoneGap on Windows Phone 7
こちらのブログには紹介動画もありました。
PhoneGap をインストールすると Visual Studio 2010 用のプロジェクトテンプレートも入るようです。これでプロジェクトを新規作成すると一通り必要なものは自動作成されます。あとは HTML なり CSS なり JavaScript なりをガシガシ書いていくだけです。

一本目の紹介動画を見ると、navigator.notification.alert(“メッセージ”); なんてやるとちゃんと WP7 風のメッセージボックスが表示されてます。(ソース見たわけじゃありませんが、HTML で擬似的に作ってるんじゃなく、WebBrowser コントロール経由で本物の MessageBox を呼び出してるんじゃないかと思います)
console.log(“ログ出力”); なんてやると Visual Studio の 「出力」 に出力されます。(これは System.Diagnostics.Debug.WriteLine を呼び出してるのかな)

二本目の動画では、カメラを呼び出してます。
カメラは navigator.camera.getPicture() で呼び出せるようですが、どうやらデフォルトではカメラはサポートされていない様子。
と言っても、サポートするのは簡単で、PhoneGap に Camera.cs というソースが含まれているのでそれをプロジェクトの Plugins フォルダに追加するだけ。サイズをコンパクトにできるようにプラグイン方式にしているんでしょうね。

2011年12月20日火曜日

[WP7] エミュレーターでもラジオのテストができる

Windows Phone Arch 主催の Windows Phone Hackathon in Osaka (12/4 開催) のときに 「FM ラジオってエミュレーターでは鳴らせませんよねぇ」 という話をしていたら 「いや、鳴らすことできますよ」 と教えてもらいました。

エミュレーターでも周波数 88.5 もしくは 89.5 にすれば音楽が流れるようになってるんですね。88.5 と 89.5 ではちゃんと違う曲が流れます。もちろん本物のラジオが鳴るわけではなく、エミュレーターに埋め込まれた音楽が鳴るだけですが。
コードで書くと

Microsoft.Devices.Radio.FMRadio.Instance.Frequency = 88.5;

これだけでエミュレーターから音楽が鳴り始めます。

しかし、この情報ってどこに書いてあるんだろ?MSDN Library を検索してみましたがどこに書いてあるのかわかりませんでした。

2011年12月19日月曜日

[Silverlight] Silverlight 5 の 3D アクセラレーションがデフォルトで動かない件

前の記事の 「[Silverlight] Silverlight 5 の 3D アクセラレーションはデフォルトでオフ(オフと言うか拒否)」 について。
正直、自分では 「ふーん、デフォルトでは拒否なんだ」 程度にしか思ってなかったんですが、これってかなり残念な感じかも、という気がしてきました。

Silverlight 5 で 3D なゲームを作っても一般の人にはよくわからない理由で動かないわけです。
動くようにするためには以下の手順で 「許可」 してもらう必要があるわけです。

  1. Silverlight プラグインの上で右クリックして 「Silverlight(S)」 をクリック。
  2. 表示されたダイアログの 「アクセス許可」 タブをクリック。
  3. 一欄から自分のサイトを探してもらう。(URL が列挙されてるだけなのでわかりやすいとは言えないかも。frame で別サイトを組み込んでいたりする場合はどうなるんだろう?)
  4. 見つかったらそいつを選んで 「許可」 ボタンを押してもらう。

単に 「アクセス許可を与えてくれ」 だけじゃ、それなりの人にしかわからないでしょうから、この手順を書いとかなくちゃダメって感じになりますね。
先の記事にも書いたように GraphicsDeviceManager.Current.RenderMode を見ればハードウェアアクセラレーションが使えるかどうかがわかるので、それで表示・非表示してやる感じでしょうか。メッセージボックスだと OK ボタンを押して閉じないと Silverlight プラグイン上で右クリックできないので、見ながら操作できるように XAML で書いといた方がよさそうですね。
アプリにもよるでしょうが、最低限、日本語と英語くらいは用意しておいた方がいいかもしれません。

でも、一番の問題はなぜデフォルトでは拒否されているのか、それを許可するとどうなるのか、をきちんと説明しないといけないことじゃないかと思うんですよ。
HTTPS なんかでもありますよね。オレオレ証明書を使っていて 「警告メッセージが表示されるけど問題ないからそのまま OK してくれ」 なんて説明してるサイトが。問題があるから (問題がある可能性があるから) 警告メッセージがでるわけで、こんないい加減な説明をしていいはずがありません。
これと同じで 「何も考えずに 3D グラフィックスを許可してくれ」 はまずいんじゃないかと思うわけですよ。
けど、きちんとした説明を書く自信なんて無いなぁ。

■ RequestDeviceAccess() は無いの?
Silverlight 4 からはカメラやマイクが使えるようになってますが、これも知らないうちにオンにされたりしたら困るわけで、ちゃんと使う前に許可を得なくちゃいけません。
そのために CaptureDeviceConfiguration.RequestDeviceAccess() という静的メソッドが用意されています。
このメソッドを呼び出すだけで

Silverlight5_CameraAccess.png

このダイアログが表示されます。
右クリックしてどうのこうのとしなくても、このダイアログで簡単にアクセス許可の可否を選択できます。
「回答を保存する」 をオンにすれば右クリックで出るダイアログの 「アクセス許可」 のところにちゃんと記録されます。
もちろん、今の言語にあわせて日本語なり、英語なりで表示されます。
「詳細情報」 のリンクをクリックすればマイクロソフトのプライバシーポリシーの説明が表示されます。

3D グラフィックスには RequestDeviceAccess() に相当するものって無いですよね?
デフォルトで拒否でいいからこれを用意して欲しいなぁ。

2011年12月16日金曜日

[VS11] Visual Studio 11 の Direct3D サポートすごいな

Somasegar’s Weblog 「Visual Studio 11 Platform Tooling Advances」 より

Visual Studio 11 の Direct3D 関連のサポートがすごいことになってるんですね。

■ The first area of improvement
HLSL (High-Level Shader Language。GPU に対する命令を記述するための C 言語風の言語) が VS で普通にサポートされるみたいです。
あまり詳しくないんですが、以前は DirectX SDK に付いてる外部の HLSL コンパイラ(fxc.exe)を呼び出してコンパイルしてたと思いますが、これは XNA GameStudio でも今だに変わってなかったのかな?それがきちんと VS に統合されるという感じでしょうか。
また、エディターもちゃんと色付けやインデントなど C# や VB と同じようにサポートされるようです。(当然インテリセンスもできるんでしょうね)

シェーダーではいろんなことができますが、ピクセルシェーダーでは
    「マテリアル表面のテクスチャ A」 と 「陰影のテクスチャ B」 を合成する
みたいなことをやったりします。
これをビジュアルに編集するノードエディターが搭載されるようです。編集中もリアルタイムに結果が表示されるとか、”Time” ノードでアニメーションも定義できるとか、なにこれ、すげぇ!
もちろん、ビジュアルに編集した結果は HLSL がジェネレートされます。

■ The second area of improvement
.FBX や .DDS のビューワーも搭載されるようです。これで 3D モデルを VS11 内で確認できるとのこと。
(さすがに 3D モデルの作成機能は無いよとのこと)

■ The third area of improvement
DirectX のフレームをキャプチャしたり、GPU パイプラインの内容を参照したり、ピクセルの描画イベントを参照したりといった GPU のデバッグ機能が搭載されるそうです。(このあたりは (これまた詳しくありませんが) DirectX SDK や XNA GameStudio にはあった機能かもしれませんが)

--

今まで DirectX 関連は DirectX SDK や XNA GameStudio にまかせっきりだったものが、Visual Studio 本体に機能追加されつつ統合されるという感じでしょうか?
Windows Phone はもともと XNA をサポートしてますし、Silverlight も 5 で XNA サポートと、本体と分離して考えるほうが無理が出てきたってことかもしれませんね。

2011年12月15日木曜日

[Silverlight] Silverlight 5 の 3D アクセラレーションはデフォルトでオフ(オフと言うか拒否)

Silverlight 5 では GPU アクセラレーションが強化されて 3D とかも速くなったとかなんとか。。。ということだったので、試してみようと
http://david.blob.core.windows.net/babylon/Babylon.html

にアクセスしてみました。ここは、Code Recipe でコードが公開されている Babylon 3D engine のデモサイトです。

が、サイトにアクセスすると以下のようなメッセージボックスが表示されて正常に実行されません。

Error during initialization:Hardware rendering is disabled by security reason. Please right click on your silverlight plugin, go to permissions tab and allow 3D for this application.

解決策はこのメッセージに書いてあるとおりなんですが、Silverlight 上で右クリックしてコンテキストメニューを表示、「アクセス許可」 で 「3D グラフィックス」 を 「許可」 してやります。それからページをリロードしてやれば今度はメッセージボックスが表示されること無く、実行されるはずです。

Silverlight5_Allow3D.png

明示的に許可してやらないとダメなんですね。
確か WebGL もセキュリティ的な問題があるというような記事を読んだような記憶があるんですが、これも同じような理由でしょうか?GPU のことも、セキュリティのこともあまり詳しくはありませんが、確か以下のような話だったような。。。

Silverlight はサンドボックス内で実行されているのでどうがんばってもマシンに悪影響を与えることはできません。Silverlight ランタイムがいろいろがんばってセキュリティ的な悪影響を与えないようにしてくれてるわけです。しかし、GPU やグラフィックスドライバといった 3D アクセラレーションの部分は Silverlight ランタイムの管理外になってしまいます。今どきの GPU はすごく高機能で、単に画像を表示するだけではなく、シェーダー言語と呼ばれる C 言語風の言語で処理内容を定義するようなことができます。このあたりを利用して物理演算なんかも GPU でやってしまおうという DirectCompute、OpenCL、CUDA なんてものもあります。確か Silverlight 5 はシェーダーモデル 2.0 のシェーダー言語をサポートしていたんじゃないかと思います。こういったシェーダー言語の部分も含めて Silverlight の管理外となってしまうわけです。もちろん、GPU が 「マネージド」 になってて Silverlight ランタイムと同様に安全性を検証できるようになっていれば問題ないんでしょうが、もともと 「いかに高速に処理するか」 をメインテーマに進化してきたものなのでセキュリティ的な面からはいろいろとまずい所があるんでしょう。
そんなわけで 3D アクセラレーションに関する部分については Silverlight ランタイム側で安全性を保証できない、だから明示的にユーザーが許可してね、ということなんじゃないかと思います。

ところで、Babylon のデモサイトですが、“Predefined scenes:” のところでシーンファイルを選んでやるとデモ用に用意されたシーンが描画されます。データを読み込むのには時間がかかりますが、読み込んでしまえば 60fps で動いてました。

また、この 「3D アクセラレーションが使用可能か?」 の判断方法については Bobylon 3D engine の作者さんのブログにも書いてありました。
Silverlight 5 is out!
GraphicsDeviceManager.Current.RenderMode を見ればハードウェアアクセラレーションが使えるかどうかがわかり、GraphicsDeviceManager.Current.RenderModeReason を見ればハードウェアアクセラレーションが使えない理由がわかるようです。

2011年12月14日水曜日

[Live] SkyDrive API

まだよく読んでませんがちょっと覚え書き。

SkyDrive APIs for Docs and Photos—now ready to cloud enable apps on Windows 8, Windows Phone and more

もともと含まれていたのか、それとも今回追加されたのかはよくわかりませんが、最近リリースされた Live SDK 5.0 には SkyDrive だとかカレンダーだとかにアクセスするクラスが含まれているようですね。それだけでなく、REST で SkyDrive にアクセスする方法なんかも公開されているみたい。

Windows Phone 用の公式 SkyDrive アプリもリリースされましたが、Live SDK を使えば SkyDrive 対応アプリを作るのも簡単そう。

# 実は一番驚いたのは Live SDK のサンプル を見ようと思ったらサンプルの公開に github が使われてることだったり。
# Microsoft 公式で、Download Center とか CodePlex とかでなく github が使われてるのなんて初めて見た。