わんくま勉強会東京#67 セッション資料

26
わんくま同盟 東京勉強会 #67 XNAライブラリを使って音楽プレイヤー を作ってみよう! 大黒 健司

Upload: kenji-daikoku

Post on 29-Jun-2015

536 views

Category:

Education


1 download

DESCRIPTION

2012年1月21日に行われた「わんくま勉強会東京#67」で行ったセッションの資料になります。

TRANSCRIPT

Page 1: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

XNAライブラリを使って音楽プレイヤーを作ってみよう!

大黒 健司

Page 2: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

まずは自己紹介

• 大黒健司(だいこく・けんじ)

• 細々とフリーランサーしてます。

現在C#メインで頑張ってます。

• 昔はアセンブラとかで仕事してました。

• Twitter ID:daikoku1976

• ブログ書いてます。

http://daidev1976.wordpress.com/

http://daiwp.blogspot.com/

Page 3: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

アジェンダ

• SilverlightでXNAライブラリを使ったWindows

Phoneアプリを作成してみよう。

• SilverlightアプリケーションでXNAライブラリを使用するまでの手順を把握する。

• メディアライブラリやハブ機能を使用する場合のデバッグの注意事項を把握する。

Page 4: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

Windows PhoneでのXNAライブラリの用途

• ゲーム開発用のライブラリ

• 画像、音楽、効果音等のゲーム開発に必要なコンテンツにアクセスできます。

• 簡単なメディアプレイヤーは、このライブラリで作成できます。

Page 5: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

XNAライブラリ利用のメリット・デメリット

メリット

• PCのZuneと同期中でもWindows Phone内のメディアライブラリにアクセスできます。

デメリット(出来ないこと)

• プレイリストが保存できない。

Page 6: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

今回ライブラリを利用して作るアプリケーション

• 初心者や経験者でもそれなりに作ったと実感できそうなもの。

• “Hello World”以外。

• 簡単な音楽プレイヤーなら多少なりに満足?

• Twitterで今聴いてる曲とかも呟いちゃおうか。

条件

Page 7: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

ということで……

• こんな画面のアプリを作ろうと思います。

再生画面 曲一覧画面

Page 8: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

必要な機能の整理

再生画面

• ボタン

再生、一時停止、次の曲、前の曲

ランダム、リピート、ツイート

• 表示

再生している曲名、アーティスト名

再生時間、曲の時間、アルバムイメージ

曲リスト画面

• 曲一覧リスト

Page 9: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

再生画面の作成

使うコントロール

• TextBlock×4

• Button×6

• StackPanel×2

• Image×1

• ApplicationBar有効

Page 10: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

XNAライブラリをSilverlightで利用する手順

• ソリューションエクスプローラーで[参照設定]を右クリックし、「参照の追加」を選択。

• .NETのコンポーネント名一覧から「Microsoft.Xna.Framework」を選択。

Page 11: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

使用するXNAライブラリの名前空間とクラス

• Microsoft.Xna.Framework.Media名前空間

• MediaLibraryクラス

メディアライブラリにアクセスするためのクラス。

ゲームだとBGMに当たります。

• MediaPlayerクラス

メディアプレイヤーの操作をするためのクラス。

ゲームだとBGMの再生などはこちらで制御。

Page 12: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

MediaLibraryクラス

• 主に使用するプロパティ プロパティ名 用途

Songs メディアライブラリ内にある全曲一覧情報

Albums メディアライブラリ内にあるアルバム別一覧情報

Artists メディアライブラリ内にあるアーティスト別一覧情報

Genres メディアライブラリ内にあるジャンル別一覧情報

Playlists メディアライブラリ内にあるプレイリスト別一覧情報

Page 13: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

MediaPlayerクラス(1/2)

• 主に使用するメソッド、プロパティ メソッド名 用途

Play 再生する曲を指定して再生開始する。

Pause 一時停止する。

Resume 一時停止状態から再生を再開する。

MovePrevious 前の曲を再生する。

MoveNext 次の曲を再生する。

IsRepeating リピート設定。

IsShuffled ランダム設定。

Page 14: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

MediaPlayerクラス(2/2)

• 主に使用するプロパティ、イベント プロパティ名

イベント名

用途

State メディアプレイヤーの状態。

MediaState.Playing : 再生中

MediaState.Paused : 一時停止中

MediaState.Stopped : 停止中

Queue.ActiveSong 再生中の曲情報。

PlayPosition 再生中の曲の再生位置(時間)。

ActiveSongChanged

イベント 再生中の曲が切り替わったときに発生するイベント。

MediaStateChanged

イベント メディアプレイヤーの状態が変化したときに発生するイベント。

Page 15: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

MediaPlayerの状態管理

• MediaPlayerはイベント管理や状態管理が必要です。

• 状態管理はDispacherTimerを使用して定期的にMediaPlayerの状態を更新します。

☆XNAライブラリ利用するときのお約束☆

• 状態を更新するためのメソッドは、FrameworkDispacher.Updateメソッド。

(Microsoft.Xna.Framework名前空間)

Page 16: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

Tweet機能を実装する方法

• 自力でTwitterAPI使ってやる方法

→実装だけで時間がかかる。

• Windows Phoneで用意されているAPIを利用

→SharestatusTask

• 今回は楽をするためにSharestatusTaskを使用します。

Page 17: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

SharestatusTaskクラス

• 使用するプロパティ、メソッド

• 使用方法

Statusプロパティに表示したい内容を設定し、ShowメソッドでMeハブを表示させる。

→投稿するかどうかはユーザーに委ねる。

プロパティ、メソッド名 用途

Status 投稿する内容。

Show Meハブを表示する。

Page 18: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

今までのことを踏まえて……

• 再生画面と機能を実装してみましょう。

Page 19: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

曲一覧画面の作成

追加するページ

• Pivotページ

使用するコントロール

• ListBox×2

Page 20: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

曲一覧画面での処理

• ListboxにMediaLibraryの曲名一覧をアイテムとして追加する。

• Listboxで選択が行われたときに曲の再生を行う。

• 曲の再生が開始されたら再生画面に戻る。

Page 21: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

曲一覧のリストは……

• 思っているよりも全然難しくないので、早速画面と機能を実装します。

Page 22: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

デバッグ時の注意点

• メディアライブラリやMeハブなどのハブ機能を利用する場合は、実機で確認します。

• 再生画面のデバッグは、エミュレーター上でも可能ですが、サンプル曲での確認になるので注意が必要です。

※アルバムアートなどがありません。

Page 23: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

小技

• Musicハブから自分のアプリを起動させたい。

→[Properties]-[WMAppManifest.xml]を編集

4行目<App ~>に HubType=“1” を追加する。

Page 24: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

まとめ

• XNAライブラリは、元々はゲーム開発向けだがメディア系の操作を簡単に行えるので、その手のアプリケーション開発にもオススメ。

• Windows Phoneでは、Windows Phoneの機能を簡単に利用できるライブラリが揃っているので、有効利用しましょう。

• メディア系アプリの確認は是非実機で!

• Windows Phoneアプリ作るのは楽しいので、是非挑戦してみてください。

Page 25: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

参考

• MSDNライブラリ(Windows Phone 用の

Silverlight および XNA Framework) http://msdn.microsoft.com/ja-

jp/library/ff402528(v=vs.92).aspx

• 日経ソフトウエア 2011年12月号

メトロちゃんが目印!

• 日経BPベストムック

iOS/Android/Windows Phone

プログラミング

Page 26: わんくま勉強会東京#67 セッション資料

わんくま同盟 東京勉強会 #67

ありがとうございました!