2012年7月11日水曜日

iOS, Android, Widows Phone の開発を実際にやってみた

こんにちは, iOS, Android, Windows Phone とスマフォの3プラットフォームの開発を実際にやりました atmarkplantです。(photo gapとか, titaniumは使っていません 全部, プラットフォームnativeです)

Android, Windows Phone は趣味で。 iOS は仕事中心でやっています。実際に出したソフトはこんな感じです。

Android

-  Your Alarm リンク

- 秘め事メモ リンク

Windows Phone

-  Photo Play リンク

-  Photo Play Free リンク

-  PrirecoFreeMemo リンク

-  Photo Sharp リンク

-  時物語 リンク

iPhone
-  ColorDos リンク


実際に, やってみて, 思ったことをいくつかの話題に区切って述べたいと思います
※あくまで個人的な感想です

・ 難易度

・ 開発のしやすさ

・ 開発環境


次回は開発の細かいところ, マーケットです

● 難易度

さてプログラミングを実際にしてみて感じたものですが, ここはやっぱり各言語の習熟度や経験が影響されるので atmarkplant の経験を少しだけ


実際の言語
Android :  Java(Sun Java とちょっと違う),  NDK では Cもあり

Windows Phone :  C#

iOS :  Objective-C

□ atmakrplant の経験値(プロ経験3年)  関係のある言語のみ抜粋

Java :  普段サーバーサイドのコードばかり書いている 2年

C#    :  昔ASP.NET とかやっていた Windows Phone の開発で, 2年ぶりくらいに書いた

C      :  学生時代にやっていた

Objective-C  :  ゼロ

(C++とか, JavaScriptとか, PHPは関係ないので 省略)

といったところです。

ここから, 実際に最初の1本目を書くのにかかった時間

Android :  3週間

Windows Phone : 2週間

Objective-C :  2週間

(各ソフトウェアの開発期間は~教えられませんが...  いずれFacebookで公開したいと存じます)

と, Android が一番かかったわけですが, はじめてのスマフォプログラミングだったのでという理由だけです。

というのも1つを身に着けると, 他に考え方だけは使えることがあったりします。現に Listとか, Eventとか, データベースは, 特にそうです。


個人的な難易度(難しいほうから順に)

Objective-C   >>  Android > Windows Phone

これは単純に, 言語を覚えるのにです, あとは, 書籍のわかりやすさとか。 iOSの変更多くないですか? iOS でいい学習用の書籍が見つからない.. Android はいっぱい出てる。

ブログなどの検索した時の情報量の多さ

Android > iOS  >> Windows Phone

これは, Android が圧倒的ですね。 自分が思いついて知りたいことをググると, 日本語でたいてい見つかります。(2年前くらいはそうでもなかったですが)

iOS の記事もたくさんあります。 たまに英語のやつまで調べますが, やっぱり記事がいっぱいあります。

Windows Phone ですが, 英語はたくさんあるんですよ。調べればいくらでもほしい情報は出てきますが。 日本語はほとんどないですね。 数人の方が素晴らしい記事を書いています。

ちなみに筆者も時々Windows Phone のTipsを書いていますが, まったく人気がありません。

ユーザインタフェースの作りやすさ

iOS >  Windows Phone >> Android


iOS のUI は標準でCool です。 標準UIを Interface Builder でペタペタ張っても カッコイイ ソフトウェアが作れそうな気がしました。
デバイスの画面の大きさも iPhone と iPad の違いに注意するだけですし, 別々に storyboard が作れるので, この辺も問題なし,  いや 素晴らしい

Windows Phone は, 個人的に標準 UI では物足りないので, やっぱり作りこみたいです。
Expression Blend を使って作りますが, 色の変更, グラデーションや 角丸 ボタンとかは簡単に作れますので, 作りこめば, 3プラットフォームの中で最も かっこよく仕上がるかもしれません。


今のところ画面の大きさは, Lumia 900 とか, HTC なんとかが違うくらいなので, さして問題ないです。 Surface や タブレットが出てくると変わるでしょうけど


Android も標準では物足りない気がします。 XML の配置は結構面倒なのと, デバイスによって
画面の大きさがまったく違うので, (例, XPeria , Aquos Phone, Galaxy Y, そして, タブレット各種 今あげたやつ全部違う)  ※ タブレットだけでも 3種類以上


それぞれに画像などのリソースを用意せねばならず, もっとも難易度が高いです。

Eclispe では UI をつくるのは不十分。 UI専用の他のツールがいるかもしれません。

公式ドキュメントの充実度

Windows Phone >  iOS  > Android

やっぱり昔からの実績 + 慣れてるからでしょうか。 MSDN は英語も日本語も比較的読みやすい。

iOS のドキュメントは, 読みにくいところが結構ある。

ちなみにAndroid のドキュメントは, きわどいところや気になったところ以外読んだことがないです。


● 開発環境

さて, 開発に必要な環境を見ていきましょう。 言語の環境(IDE) と 実機と登録です。

・ 登録料   :   マーケットプレース的なところに出すための費用

iOS  :  $99/1年

Windows Phone $99/1年  だった気がする

Android $25 永年

といった感じです。 iOS は Mac や Safariの開発, Windows Phone は XBOX もついてきます

開発環境(IDE)

開発するなら, やっぱIDEは必要ですよね。

Android : Eclipse :  Free SDK を外から入れる, Eclispe プラグインを入れれば, すべて Eclipse 上で開発可能

iOS  :    XCode : Free XCodeとSDKをセットでインストール Snow Leopard だと 4.2までしか入らない Lionだと 4.3が入れられる すべて XCode 上で開発可能

Windows Phone :  Visual Studio : Free (ただしPro版は有償) SDK と Express Edition は Free
Visual Studio 上ですべて開発可能
(Pro版でないと, リソース用のdll が開発できません リソース用のdll とは, アプリ名をローカライズするのに必要です -> なんでやねん)


どれも外部ツールとかは開発だけに限れば必要なさそうです

※Team 開発するなら, Eclipse だと, CVS, SubVersion, Git ,  Xcode だと Git との統合がすでにある, Windows Phone だと, Git かFoundation Server でしょうか


実機

筆者が使っているPC, 実機シリーズ

PC

PC  :   Windows 7  Core i 5   ->  Windows Phone,  Android はこれで
      :   Mac Book Pro Core 2 Duo Lion  ->  iPhone  はこれで

iOS は Mac がないとできませんからね。(Sencha Touch なるものがあるらしいですが)
ラップトップ開発しにくいので, Mac miniが欲しい。

実機

Android :  初代Xperia(SO-01B) Android 2.1   50000円くらいしたはず(普段づかいです)

iOS  :   iPod Touch 32GB(iOS 5.1)  Xi と抱きだわせで買ったから安かった

Windows Phone :  Lumia 710   26000円くらい


安く手に入れるには?

Android だと中華タブレットでしょうか? 6000円くらいからありますよね。
携帯だと, Galaxy Y とか, Xperia arc あたりが安く手に入りそうです。(SIMフリーのやつ)

iOS なら, iPod Touch 8GB 16800円,

Windows Phone :  Lumia 600 あたりが, 20000円前後? で買える。 日本なら, IS12Tしか
今のところ選択肢なし。 (おっとLumia700 値下がりしてる)

※ どの環境もエミュレータがついているわけですが, 実際にソフトウェア開発をするのに,
実機が必要です。 Android だと画面に合わせて複数でしょうか?

実機だとメモリの制限とか, 加速度センサとかハードの問題とかあるので

※ Windows Phone のエミュレータは, どうやらPC のメモリをフル活用しているっぽいので, エミュレータだと動いて, 実機で死亡という経験がありました。


結局のところ, 開発の参入の壁は, 圧倒的に Android が低いです。

さて次回は, 開発の細かいところとマーケットです。

0 件のコメント:

コメントを投稿