Your SlideShare is downloading. ×
  • Like
スマートフォン勉強会@九州
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

スマートフォン勉強会@九州

  • 606 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
606
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. WindowsPhone7もわりといいとおもうのですスマートフォン勉強会@九州2011/02/05tmyt
  • 2. こんにちは!• tmyt/つもゆた っていいます。• だいたい大学院生をやっています。• WindowsMobileシリーズに一途です。• Azureaとか作ってます。• C++担当です。• ARMのアセンブラは一般教養です!
  • 3. 本日のお題• 11/8にアメリカでついに発売したWindows Phone 7• 国内でも買ったよ!という声がちらほら…• 買った方はすでに感じていると思いますが 開発してても え、できないの? のオンパレード。• じゃぁ結局何ができるのさ!!! • Silverlightだからこそできる!を中心に見ていきましょう!
  • 4. できること見る前にこっちからいきましょう
  • 5. WindowsPhone7でできなくなったこと• タスクを並列して2個以上同時に実行すること• ネイティブコードを実行すること• 実行中にコードを書き換えること• 変数に代入した機械語を実行すること• 他人のプロセスをフックしていろいろすること• ファイルシステムへアクセスすること• システムDLLをP/Invokeしていろいろすること• などなど。変態的なことは基本的にできません
  • 6. 現時点でできないこと• OSグローバルな日本語入力• こぴぺ• リアルタイムなカメラ映像の参照• エミュレータ上でのLiveIDの設定• エミュレータ上でのメールアカウントの設定
  • 7. できるようになったこと!
  • 8. できるようになったこと• 加速度センサへのアクセス• DeepZoomの利用• 4点以上のマルチタッチ• Silverlightを使用したアプリケーション開発• PushNotificationの利用• 統合されたロケーション情報へのアクセス
  • 9. 従来のWindowsMobileとの違い• 外部の情報へのアクセスにTaskを使用 • 写真を撮るも開くも、アドレス帳から選択してくるのもみんな同じ 手順で利用可能に• タスクが殺される前にコンテキストの保存をしないといけなく なった• 開発がSilverlightになったのでXAMLをいじらないといけなく なった• XNAが使えるようになった • Silverlight+XNAのキメラもできます!
  • 10. 新しくなったユーザインターフェース• PivotやPanoramaといったMetro UI • もちろんユーザアプリケーションも利用できます• Hubからはじまるオペレーション • People,Game,Music+Video,Photo,Office…• シンプルで大きなコントロール
  • 11. 新しくなった開発フロー• Blendでデザイン • UIの配置 • アニメーションの作成• VisualStudioでコードの実装• アプリケーションのデバッグ• マーケットプレイスへの配信
  • 12. 開発する上での注意• XAPは400MBまで• マーケットプレイスを経由していないアプリケーションは10個まで• UIスレッドをブロックするコードは書けません• Unlockできる端末は3台まで• Etc…
  • 13. UI設計がとても楽に• Expression Blendでぽとぺた開発• XAMLを直接かいてもOK• アニメーションや画面遷移がC#のコード無しで実装できます• エミュレータでみたりしながらPhone7のUIをみていきましょう
  • 14. 使用例1様々なTask
  • 15. いろいろなものを開くTask• アプリケーションからデータにアクセスする場合はTaskを経由しなけれ ばなりません。• Taskはこんなのが用意されています • CameraCaptureTask • EMailAddressChooserTask • EmailComposseTask • MarketplaceDetailTask • MarketplaceSearchTask • PhoneCallTask • PhoneNumberChooserTask • PhotoChooserTask • SaveEmailAddressTask • SavePhoneNumberTask • SearchTask • SmsComposeTask • WebBrowserTask
  • 16. Taskを使用する際の注意点• Taskを呼び出すにはShow関数を呼びます• Taskを呼び出すと自分のアプリケーションは終了されます• Taskから帰ってくると自分のアプリケーションが再度起動します。 • その際にCompletedイベントにハンドラを設定した直後にハンドラが 呼び出されます。 • Loadedイベントでイベントハンドラを設定するのがおすすめ• エミュレータで実行するとタスクから戻ってくると30秒程度待ち 時間があるのでその間にデバッグを再度実行しましょう
  • 17. CameraCaptureTask• カメラを起動して画像を入力• WMでいうところのCameraCaptureDialog• C++だとSHCameraCapture• 撮影した写真は保存されません
  • 18. PhotoChooserTask• 保存されている画像ファイルを読み込むために使用します
  • 19. WebBrowserTask• Webブラウザを起動します• URLを指定するとそのURLを開いてくれます• &を含むURLを開けません • バグです
  • 20. 使用例2Pivot/Panorama
  • 21. Pivot• WMでいうところのタブ コントロールのようなも の• タブページ間に強い つながりが無い場合 に使う• 左右フリックでページ 切り替え• かっこいい
  • 22. Panorama• Pivotよりページ間の つながりが強い• ページは1枚の大きい 横長の一部が表示さ れる• フリックでゆるやかに ページ切り替え• かっこいい
  • 23. 使用例3ロケーション
  • 24. WMでのロケーション• GPSのみ• Intermidiate Driverが仮想化してくれていた• 基地局測位は自分でがんばるしかない • PHSだとCOM叩きますよね • 3GだとRILのCE向けAPIを叩きます • 叩いた後GoogleのAPIとかに投げると経度緯度に変換してくれたり• いろいろ大変でした。
  • 25. WP7でのロケーション• とても楽になりました。• .NET 4のロケーションAPIと互換 • つまりWindows7のロケーションAPIと互換• GPSを扱えます• 基地局測位もあつかえます• Wifi測位も使えるかもしれません• 全部まとめて1つのインターフェースで提供されます• 位置検出デバイスを指定できないのがちょっと残念
  • 26. コードで書くとこんな感じ public partial class Location { GeoCoordinateWatcher geo; public Location() { geo = new GeoCoordinateWatcher(); geo.PositionChanged += newEventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(geo_PositionChanged); } void geo_PositionChanged(object sender,GeoPositionChangedEventArgs<GeoCoordinate> e) { // いろいろ } }
  • 27. 使用例4DeepZoom
  • 28. DeepZoomって?• Deep Zoom は、高解像度のイメージをインタラクティブに表示 できる機能です。アプリケーションのパフォーマンスに影響を及 ぼさずにすばやく、イメージをズームインしたりズームアウトしたり できます。Deep Zoom では、複数解像度のイメージを用意し、 スプリング アニメーションを使用することによって、滑らかな読 み込みとパンを可能にしています。 • http://msdn.microsoft.com/ja-jp/library/cc645050(VS.95).aspx• つまりGoogleMapのWebみたいなのをやるコントロールです
  • 29. とりあえず使ってみる• Deep Zoom Composerで画像を分割、XMLを生成• VSのプロジェクトに追加• MultiScaleImageコントロールを配置• Sourceにxmlのパスを設定• とりあえずこれだけ書けば使えます。
  • 30. 動的に画像をダウンロードする…?• 画像キャッシュを自分で書かなくていい • らくちん!• 解像度に応じた画像を動的にダウンロードするということは…
  • 31. こういうこともできました
  • 32. MultiScaleTileSource• MultiScaleImageにXMLを指定した場合、DeepZoom用に生成 したXMLでないとエラーになりました。• さっきのアプリはもちろんDeepZoom用にXMLは作られていませ ん• このクラスを実装したクラスをImageSourceに指定することで画 像のダウンロードをカスタマイズできます
  • 33. 使用例5マルチタッチ
  • 34. WP7のマルチタッチ• Silverlightのマルチタッチです。• つまりWindows7のマルチタッチと互換です。• Touch.FrameReported イベントにハンドラを書いておくとマルチ タッチイベントが捕捉できます。• ピンチイン・ピンチアウトの検出などの気の利いた機能はありませ ん • 自分で書いたりしましょう
  • 35. 使用例6Silverlght+XNA
  • 36. XNAのクラスをSilverlightから• XNAのクラスをSilverlightから呼べます!• SoundEffectクラスや、Music+Vide Hubへアクセスする機能は XNA側なのでそういった機能を呼び出す場合はXNA側を利用 します
  • 37. 使用例7日本語入力を実現してみる
  • 38. 日本人の最大の悩み• そう、それは、日本語入力 • WMではATOKとかインストールしてましたね• Windows Phone 7では日本での発売が未定なのもあるのかIME は実装されていません • 今後実装されるでしょう!• でもいま日本語入力が使いたい!とおもうのはしかたないこと。• 悲しくも僕たちはデベロッパなのでIMEを作るかという発想にいた るわけです…
  • 39. しかたないので作りました。
  • 40. せっかくなので• コントロールにしました。• 組み込むだけで日本語入力が使えます!
  • 41. こんなかんじ
  • 42. 実装• 裏でSocialIMEを叩いてます• 文節の調整はサポートしてません • だれかやって!• エディットコントロールが2枚重なってます• ローマ字変換は自前のテーブルです!• http://d.hatena.ne.jp/tmyt/ • ここで配布してます!
  • 43. フリック入力!• id:kaorun 氏によって開発されたUtakata• なんとPhone7でフリック入力ができます• アプリケーションに組み込むと日本語入力ができるアプリケー ションの完成• ソースツリーが公開されているのでid:kaorun 氏に感謝して使い ましょう
  • 44. 番外編Silverlight for Windows Phone 7 Toolkit
  • 45. 便利な拡張があります• Silverlight for Windows Phone 7 Toolkit(長い• これを使うとあらゆる面倒なことが一瞬で片付きます• たとえば… • ピンチイン ピンチアウト • 画面遷移のトランジション • コンボボックスのようなもの • などなど…
  • 46. かけあしで見てきましたが• WindowsPhone7はSilverlightでできることがほとんどすべてでき ます• 表現力もiOSやAndroidに負けないぐらい高まりました• 国内の発売が楽しみですね!
  • 47. ご清聴ありがとうございました
  • 48. 番外編その2できないことをできるようにしてしまう
  • 49. P/Invoke• P/Invokeはできませんが無理すればできます。• COMInteropという裏技があります。• これをつかうとマーケットの認証が通りません。• でもOSにネイティブコードでフルアクセスできます。• Microsoft.InteropServices.dll が必要なので XDA-Developers どこかでげっとしましょう
  • 50. カメラへリアルタイムアクセス• 残念ながらカメラのリアルタイムアクセスは提供されていません。• が、実は実装されています。• でも端末メーカにしかAPIが提供されていません。• しかたないのでほげると• Microsoft.Phone.Media.Extended にいろいろあります。• VideoCameraクラスとかを触ると実はリアルタイムキャプチャで きます。• DLLはXDA-Developers どこかでげっとしてきましょう
  • 51. COM経由でのネイティブコード• ネイティブコード呼び出しでレジストリやファイルシステムに直接 アクセスができます。• これをすることでPhone7が.NET VMという檻に閉じ込められて いたのがその外部に出ることができるのです。• Phone7のハードウェアはQualcomm Snapdragon 1GHz以上ま たはそれ相応のCPUという条件があります。• つまりARMv7なのでAdvanced SIMD拡張が利用できるわけで す。• すこしわくわくしますよね
  • 52. ARMv7でどきどきする• Advanced SIMD 拡張だと Add128_32 ; load first operand vldr.64 d0, [r0] vldr.64 d1, [r0, #8] ; load second operand vldr.64 d2, [r1] vldr.64 d3, [r1, #8] ; Add operands vqadd.s16 q0, q0, q1 ; save result vqneg.s16 q0, q0 veor q0, q0 vstr.64 d0, [r2] vstr.64 d1, [r2, #8] ; return mov pc, lr
  • 53. ARMv7対応はCE7から…• CTP版のWindowsEmbeddedCompact7にarmasmが入ってるの で活用しましょう!• Advanced SIMD拡張めちゃめちゃはやいです。• iPhoneも3GSから使えるのでアセンブラでチューニングするには おすすめ!• AndroidはNDKでやっちゃえばOK!
  • 54. 生のOSが見えると楽しい• やっぱり生のOSが見えてなんぼです。• iPhoneはJBしてgcc いれて。• AndroidはNDKでNative Activity であそんで。• Phone7はCOM InteropでNative コード叩いて。• そんなこといってたら id:iseebi に • 「生のOS見えるとやる気出すよね」 とか言われました
  • 55. ご清聴ありがとうございました
  • 56. 番外編3WMの人がiPhone買った
  • 57. iPhone買いました• なんかえぶりばでーキャンペーンやってたので買いました。• シンプルオレンジプラン一括なので2年契約じゃないのでもうそ ろそろMNPします。
  • 58. 結局なにに使ってる?• ついったー• foursquare• IRC
  • 59. iPhone電話じゃない• パケット通信無効にしてます• 全部Docomoのモバイルルータ経由• たまにしか発信しない• メールアドレス誰にも教えてない• 電話帳はExchange• ただの情報への出入り口
  • 60. iPhoneはサブディスプレイ!• iPhoneはサブディスプレイ!• とかいうと怒られそうです。• WindowsMobileってブラウザ微妙なんです。• なので、UDPでiPhoneにURL送ってSafariで開くあぷりを書きま した。• サブディスプレイです。
  • 61. ご清聴ありがとうございました