入門者向け記事というよりは、タイトルの通りtyoroの入門過程ログです。
(まだWP,SLの開発を開始してから20日ほどしか経っていないペーペーなので)
これからシリーズ化な感じで色々書いていこうと思います。
備忘録も兼ねますが、日本語のドキュメントが現状あまりないのでちょっとでもお役にたてたらと思いますね。
(導入まわりとかは全然記事もあるので、ノイズかもしれないが)
次回からは、それぞれの項目について詳細に書いていきます。
基本的に僕自身がWPについて何も知らない、VS系の開発環境も何も持ってない真っ新な状態でスタートしたので、その辺前提で書いてます。
開発環境の導入
まず開発する為には環境の構築が必要です。
Androidの開発環境を構築した時には「簡単になったもんだなぁ」としみじみ思いましたが、
Windows Phoneの開発環境を構築した時の感想は「えっ? あれ終わり?」でした。
(簡単ってレベルじゃねぇわ。
ダウンロード詳細 Windows Phone SDK 7.1
SDK のダウンロードはこちら。
基本的に開発・デバッグ・公開に必要なものが全て1つのインストーラーに揃ってます。
なのでこちらのファイルをダウンロードして、インストール作業としていくつか「はい」を押したらやる事は終わりです。
ファイル数が多いためインストールそのものにはけっこう時間がかかりますが、ほおっておけば大丈夫でしょう。
僕はそれだけで済んだのですが、友人は導入でハマったようなので注意点として上げておきます。
(↑のダウンロード詳細ページの『システム要件』にも書かれていますが
・Windows VistaもしくはWindows 7でなければならない(Starter Editionを除く)
・エミュレータの使用にはWDDM 1.1 ドライバーに対応したグラフィックカードを必要とする
ようするにある程度新しい環境を用意してね、ってことですね。
環境構築からHello Worldまでは割りと、そこらじゅうに転がってるんだけど、さくっとググってみた感じ、
WindowsPhone7 でHelloWorld! - Firespeed
ちょっと古いけど、ここが画像も付いてて分かりやすかったです。
よく分からなくても、とりあえず色々コントロール置いて、プロパティとかで弄くってみるといいですね。
WP開発の特徴的な部分
開発する上で他と違うなって思った部分。
特徴的つっても、何が一般なんだってのもあると思うのでここはスタンストークなんですが、
C++でゲーム開発やったりjavaやらPHPでweb開発してきた僕の視点です。
Silverligh & XNA
どちらも名前や使われてる所は知っていても、触れた事がなかったです。
主に Silverligh はアプリケーション開発を、 XNA はゲーム開発を担当します。
Silverlight 自体はフレームワークの一種で、中身は xaml と .NET ( C# οr VB ) です。
まぁ何1つ触った事のない技術ばっかりだったんですが、ある程度他の言語に精通した人ならすぐに修得できると思います。
またxamlに関しては便利なエディターが全部やってくれるので、基本的に直接書かなくても良くなってます。
元々 Visual 系のツールに抵抗がある人種だったんですが、慣れると楽ですなぁ。
( Silverlight が元々分かる人向けに補則しておくと、 Silverlight 4をベースに独自に拡張+制限が加わったものになっています。
XNA はゲーム開発用のフレームワークで360のインディーズゲームなんかにも使われています。
言語はC#で、ゲーム開発に必要なメディア絡みの各種APIを提供しています。
C++なんかでゲーム作ってた人は Draw とか Next とかのメインメソッドを根幹に置いて fps の管理を実装したりしていたと思うんですが、
XNA はそれをフレームワーク側でやってくれていて、開発者はゲーム開発に専念できるようになっています。
ただし、Windows Phoneの場合は、電話としての機能を優先する為に割り込み回りの処理を書かねばならないので、色々煩わしい部分もありますが。。。
非同期通信
Windows Phoneは電話なので、端末が通信機能を持っている前提でアプリ開発が行なえます。
ただし、通信を行なう場合の決まり事が1つあって、同期的な通信は一切行なう事ができません。
例え数バイトの情報を受信する場合であっても、同期通信を行なってしまうと回線の問題等で受信に時間がかかった場合にユーザーは何も操作できなくなってしまいます。
それを避ける為に、Windows Phoneではアプリ開発者が同期的な通信を行なえないように非常に強固に制限されています。
通信に限った話しではないのですが、Windows Phoneはエンドユーザーが快適に操作できるようにOSが設計されている為、アプリ開発者に求められる制限事項がいくつかあります。
ユーザーが操作できない状態で画面を3秒止めてはいけない等、使う側の視点になってみると当然なんですが、
実際にエミュレータ上で開発する時には忘れがちな部分だったりもするので、気をつけましょう。
分離ストレージ / アプリケーションの独立性
Windows PhoneというかSilverlightの概念なんですが、Windows Phone はアプリケーションからアクセスできる共通のファイル領域を持っていません。
ファイルの保存には分離ストレージというアプリケーション毎に用意される分断されたストレージに置く事ができます。
実装レベルでは基本的にファイル操作などのAPI操作と大きな差はないです。
ただ、アプリケーション設計の段階に関わる難点として、完全に分離されたストレージな為、ファイルを外部メディアから持ってきたり、他アプリで保存しているファイルをどうこう、、、みたいな事ができません。
(写真や住所録等の共通化されているデータを共通領域(Hub)を介して取得したりする事は可能
また、ブラウザなどの一部を除いて、アプリケーションから別のアプリケーションを呼出す事もできません。
(スキーマを介してデータを渡すみたいな裏技はあるようだが、それも一部のアプリケーションに限られる)
将来的に変更される可能性もありますが、現状ではアプリケーションの設計をする段階で考慮にいれておかねばならない点だと思います。
シングルタスク
iPhone なんかは最近(?)になってユーザーサイドのマルチタスクをサポートするようになりましたが、Windows Phoneはまだままだシングルタスクです。
同時に起動できるアプリは1つで、バックグラウンド動作は基本的には行なわず、アプリ側で指定してバックグラウンド動作をさせる場合も呼出せるAPIなどに制限があったりします。
Windows Phoneの特殊な部分として、アプリケーションの起動や終了などの遷移は1本の導線で繋がっており、ハード側に付いている『バックボタン』で戻れるようになっていなければなりません。
つまり、他アプリに遷移して自身が終了(休止)していても、戻るボタンが押されて戻ってきた時にはアプリが正常に動作する状態に復帰させる必要があります。
短期的な遷移で戻ってきた場合は、OS側がメモリに保存していた情報から自動で再始動してくれるのですが、
スリープなど完全にシステムが休眠していた場合などは、戻ってきた場合の処理を開発者側で書かねばなりません。
アプリケーション内の画面遷移を工夫する事で、ある程度は簡単にできるのですが、慣れないと設計や開発にとまどいますね。
特徴的なUI
これはアプリケーション開発に限った話しなのですが、スマートフォンアプリの開発はある程度UIデザインに特殊な部分があります。
それは指で操作する点や、画面サイズ、回転するなど色々な要因があります。
Windows Phoneではそれに加えて、(洗練された)独特なUI思想を持っています。
この辺は実際にWindows Phoneの端末に触れて、様々なアプリを使ってみる事で"知る事"が重要だと思います。
一応どういうのがあるのかはある程度資料で知る事も可能でしょう。
この辺が参考になるんじゃないかと思います。
・スタート・ダッシュで差をつけるWP7の基礎知識 - @IT
・Silverlight for Windows Phone Toolkit が Mango に対応 - ななふぉ
また開発に入る前にいくつかのUIサンプルをエミュレータで動かしえみるのも理解の手助けになると思います。
・Code Samples for Windows Phone
まとめ
色々と制限がかかる旨を書いてきましたが、他の環境よりも考慮すべき点が絞られているような印象をもっています。
OSレベルで制限されているものは、もし制限がかかっていなかったにしてもユーザビリティを考えると開発者が考慮せねばならない部分ではありますし、
最初から制限がかかっている事で、そういった煩わしい部分を考えなくても良いようになっているとも言えます。
解像度なんかは(現状は)統一されているので、考慮から外せる点ですし(かといってマジックナンバーの決め打ちはよくない)
UIも統一的になっていうからこそ、設計の指標になる部分があります。
豪にいりては豪に従えという事で、WPにマッチしたアプリケーションを開発できるように心掛けましょう。
コメントする