ダーヤス.com プレミアム

ダーヤス.comにようこそ。プレミアムな情報で、ワークライフバランスの充実を図りませんか。

アプリ開発はAndroid StudioとXcode(iPhone向け)どちらがおすすめか。

      2016/05/12

Android StudioとXcodeを使ってみての違いとか。

カミナリおじさんというアプリを以前からiPhone向けアプリとしてiTunes Connectに申請しているものの、App ReView Teamの対応が遅いし明確なリジェクト理由を全然示してくれないのでなかなか滞っているところ、しょうがないからアンドロイド向けに作ってみてすぐリリースと相成りました。

Android StudioとXcodeを使ってみての違いとか。

Android StudioとXcodeを使ってみての違いとか。

Android StudioとXcodeを使ってみての違いとか。

カミナリおじさん (Google Play)

で、同じアプリを作ろうとしてみての感想です。
Androidアプリ開発は全くの知識0から開発キットをダウンロードしてアプリ公開できたまでの期間がまだ二週間程度なので、非常に無知です。


レイアウトとか当たり判定設定が難しい

このゲームはしかるべき場所にしかるべきキャラクターを配置して、ボールと敵キャラとの当たり判定を座標で判断していたので、同じことをアンドロイドアプリでやろうと思ったら最初どうしていいのかわからんかった。。

というのも、xodeだと各キャラのビューを絶対座標で配置していたし、キャラをタイム毎に移動させる際にも、その絶対座標を動かすことでやっていたのですよ。

CRRectMake(CGfloat x, CGfloat y, CGfloat width, CGfloat height)
みたいな感じで。

しかしながら、これに相当するメソッドがandroid studioに見つけられなかったし、ネットで検索すると(自分、全く教科書持ってない状況から始めたので、ネットの断片的な知識を頼るしかない)、「絶対位置でビューを配置するようなことができない」みたいな記述を見つけて、早速詰んだ感あった。

そんな中、相対位置でビューを配置できる、以下のメソッドを使えば、みたいな記述を見つけてどうにかなった。
v1.setTranslationX(dx1);//v1はビューのオブジェクト、dx1は配置位置からの差分。
これで一応見た目は対応できた。
が、別の疑問が。

これ、見た目はビューが移動しているように見えても、本来そのビューがプロパティとして持っている座標自体には変化が加えられていないということだろうか。。。?
そうなると、物体1と物体2との当たり判定を考える時に、「両者の座標が所定範囲以内に入ったら」みたいな処理が作れないではないか。

そう思ってまた詰んだ。

で、いろいろ散歩しながら考えてたら、v1の位置差分をdx1,dy1として、v2の位置差分をdx2,dy2として、、というように、位置の差分を取って行って、その差分同士の比較で当たり判定を行えばいいんじゃないかという結論に達してどうにかしのげたわけです。
(私、RelativeLayoutというのを使っているのですが、ちょうど今、”やさしいAndroidプログラミング”(高橋麻奈著)なる本を読んでいたら、ちょうど” AbsoluteLayout ビューの位置を絶対座標で指定する”なる記述を見つけて、あ実は座標でビュー配置できるんじゃないか、と思ったところですが、その近辺に座標で配置するコードが載っていないのでやっぱり詰んだ。)

シミュレーションでの確認が難しい

で、自分なりには画面のレイアウト位置はそれなりに変じゃないくらいにはできていると認識しているのですが、これはあくまでも私がダウンロドした端末でのシミュレーションだけの話であって、他の端末で実験した時にちゃんとレイアウトできているかどうかというのは確認できてない。
というのも、xcodeと違ってandroid studioのシミュレータは立ち上がるのが遅すぎる。。。
なので一個の端末で実験するだけでもややストレスなのに全端末で確認するとか不可能に近い。。まともなアプリ作れるようになったらこの辺り考える。
何しろ、画面に変なところがあっても、多分リリースできてしまうので、公開前にあまり細かいところ詰めるという動機付けが低くなりがちで。

処理が遅い?

どうもシミュレーションで確認していると、ビューの数そんなに多くないしタイマーも1つしか使ってないのに、やたら処理が遅くて動きがカクカクになる。
これシミュレータだけの話だろうか?
実機だとスムーズに動作するのだろうか?
まあ実機持ってないから確認できてないし、それでも公開できてしまうから(略)

その点、xcodeのシミュレータは優秀というか、普通に動いてくれる。
タイマーを並列に複数動かしても、同時に動いてるビューの数が100超えてても。

アプリが落ちやすい

エラーっぽいの含んでるアプリは、xcodeの場合だとコンパイルエラーとして出してくれるので、アプリ立ち上げ後にアプリが落ちるみたいなことは比較的少ないと思うのですが、
android studioだと、例えば
v1 = (ImageView) findViewById(R.id.katsuoView);
みたいな、本来最初に書いておかなければならないものを書かずにこの「v1」というオブジェクトのプロパティをいじくったりしてもなぜかコンパイルできてしまって、アプリ立ち上げ後にアプリが落ちる、みたいな形になってしまうので、エラーを見つけにくいことが多かった。

個人的にはxcodeの方がAndroid Studioよりも使い易い

サジェスチョン機能とかシミュレーションの早さなど、総合的に考えるとxcodeの方が使い易い。
まあ自分はiPhoneユーザだということもあるけど。

まあまだまだあるけど、大きな気づきとしてはこのあたりでしょうか。
また色々勉強してみる必要がありそうです。

 - アプリ開発