Garyulog

ダメな鯖管の日常

*

【PC】スマートフォンアプリ開発

      2014/02/15

今とってもトレンドなスマートフォンのアプリを作りたくて、
頑張っております( ^ω^)
まだ駆け出しですが、アプリ制作にあたり色々記録を残そうかと…
ちなみにプログラム経験は殆どありません><
インフラ屋をやっている時にLinuxのシェルとWindowsのバッチで、
バッチ処理を少しかじった程度です。

スマートフォンの種類

■iPhone

apple社から発売されている多機能型携帯電話。
iOSというOSを搭載しており、開発言語はObjective-C。
Objective-Cプログラミングがかなり難解らしい…
(プログラミングなんて何から始めようと、初心者の人には難しいと思うんですけどねw)

■Android

Google社が開発したOSを搭載した多機能型携帯電話。
OS名はそのままandroid OSです、ちなみにオープンソースです。
開発言語はjavaで、javaのプログラマーは世界各国にあふれる程います。
Objective-Cとくらべて、言語の情報やオープンソースな所からAndroidの方がとっつきやすそうですね。(ライセンス的にも)

■その他

他にもWindows Phoneとかありますが、今回は上記2つに視点を合わせて記述します。

開発環境について

■iPhone

iPhone SDKってのが必要で、このSDKを使うにはMac環境が必要。
一般ユーザーがまず普通にMacなんて持ってないので、すでに敷居が高い…
ちなみに自分はMacなんて生まれてこの方一度も触った時がないので、操作すらまともにできませんww

■Android

WindowsだろうがLinuxだろうがMacだろうが何でも可。
開発環境が非常に豊富、beta版ではあるがGoogleがわざわざ間髪環境を提供してくれている。

自分は現在WindowsとLinux環境を持っていますが、
やはり直感的な操作ができるWindows環境で開発がしたくて、
Windowsで開発を行って行こうかと思います。

Eclipse

有名な統合開発環境に「Eclipse」と言う物があります。
企業でも導入している所が多く、何よりプラグインが非常に豊富です。
Windows・Linux・Macにそれぞれ対応しています。
統合開発環境なので、java以外にもHTMLやC/C++など様々な言語の開発が可能です。
利用者が多いので、ネットで様々な情報が収集できるのがやはり強みですね。

言語の習得について

今回開発を主に行っていくのはAndroidにします。
iPhoneのObjective-Cは今の自分には少し敷居が高いので…
(それにMacなんて持ってねーしww)
Androidの開発にはjavaが必要でしたね。
Androidのプログラムを作るにはまずこのように書きます。

package package com.example.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class HelloWorld extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hello_world);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.hello_world, menu);
        return true;
    }

}

って言われて、「そうか!こう書くのかぁ」ってわかる人間なんていませんよねww
まずはプログラムがどの様に宣言されていて、どの様に書かれているのか知る必要があります。

まず自分はjavaの勉強を行いました。
文頭でも書きましたが、自分はプログラミングについてはまったくの初心者です。
いろんな入門書を読みましたが、一番分かりやすかった本はこちらでした。

やさしいJava 第5版 (「やさしい」シリーズ)

新品価格
¥2,730から
(2014/2/14 18:17時点)


説明もガチガチな参考書みたいな書き方でなく、図解も多様されており、とても理解しやすかったです。

Androidの開発を個人で行う程度であれば、入門編の内容が理解できる程度で大丈夫だと思います。
(javaでサーバ側のプログラムなんかを書きたい等といった場合には全然足りませんがw)

さてここまで来てやっとAndroidアプリ開発の下準備が完了です。
最低限ここまで準備しないとAndroidアプリ開発は難しいと思います。
基本的にAndroidアプリはDalvikと言う仮想環境上でjavaで動作しているので、
“何か”あった時にjavaを知っておかないと対処できないからです。

アプリ制作思考

今回自分が作りたいなぁって思っているアプリはゲーム系でして、
ツール系であればAndroidADTのlayout(xmlファイル)でガリガリ作ればいいのですが、
ゲーム系となると一からロジックを考えるのが大変です。

そこでゲームアプリを作るのにとっても便利なライブラリやツールがたくさんあるので、
そのうちのいくつかを紹介したいと思います。

■enchant.js

http://enchantjs.com/ja/
ゲームを作るために特化したjavacsriptライブラリです。
ここで、あれ?Androidってjavaじゃなかったっけ?と思われた方、◎でございます。
Androidではアプリ上で内部ブラウザを使って、webページを表示することができます。
(内部htmlファイルも参照できるので、通信を行わないアプリ化が可能です)
HTML5+CSS3+javascriptで作成でき、javascriptを扱っている人なら、扱いやすいのではないのでしょうか。

出来上がったものは、そのままwebサーバにアップしてブラウザからもプレイできるので、
マルチプラットフォームなゲームが作成可能です。

Androidアプリ化するには、PhoneGapと言うフレームワークを使います。
PhoneGap

他にはMonacaと言うクラウドサービスなんてのもあります。
(こちらのほうが自動でAndroidアプリ化してくれるので便利ですが、
使用制限があるのでちょっと難有りです。)
Monaca

■Unity

Unity
こちらは、3Dに特化した開発環境になります。
3Dなカーレースゲームやシューティングゲーム、物理エンジンを使ったゲームを作りたい方向けですね。
3D作成のノウハウが無いとまず物自体作れませんww

調べてみると無料でここまで3DCGを作成するツールが有るなんてびっくりだ!とまで言われるくらい、
ツール自体の完成度は高いみたいです。

テクスチャとかボーンとか3DCGが得意だぜ!って方は是非使ってみはいかがでしょう?
(最近Unity2DなるUnityでも2Dゲームを作るためのツールもできたみたいです)

ちなみに開発言語はC#/Boo/Javascript

■Cocos2s-x

Cocos2d-x
Unityが3Dゲーム開発特化だとしたら、Cocos2d-xは2Dゲームの開発に特化したツールです。
スクウェア・エニックスのドラゴンクエストモンスターズ スーパーライト何かもこのCocos2d-xで作成されています。
メーカーが採用しているということは言わずと知れた高性能なアプリが作れると言うことを実証していますね。

こちらの開発言語は、C++/Lua/JavaScript

まとめ

Androidでゲームを開発するにはと言うことで、代表的な3つのツールを紹介しました。
内容を見てみると、開発言語がどれもAndroidのjavaじゃない事に気づきます。

そうです、今回上げたツールはすべてマルチプラットフォーム対応なんですね。
簡単に言ってしまうと、AndroidでもiPhoneでも動作するゲームが作れてしまうのです!!

enchant.jsなんかはwebアプリなので、ブラウザがあればプレイする人の環境は何でも良いのです。
Unityに至っては、なんとプレイステーションやXboxのゲームすら作れてしまう優れものなんです!
(その代わり知識もかなり必要になりますがw)

さて、色々と紹介してきましたが、注意点もあります。それは処理速度の違いです。
enchant.jsはwebアプリなので、どうしても処理速度が遅いです。
音ゲー等の高速処理を有するゲーム開発には向きません。
そして何よりwebブラウザベースなので、できることが限らてきます。
UnityやCocos2d-xは、C++やC#と行ったネイティブコードで実行される為、動作が非常に早いです。
一覧でみると、処理速度はこうなります。

Unity(3D系)=Cocos2d-x(2D系)>javaで作ったアプリ>enchant.js

なので今回自分はCocos2d-xを使ってアプリを作って行こうかと思います。
プログラム言語はC++なので別途勉強が必要になりますが、javaと同じオブジェクト思考向けプログラミングなので、
覚えやすいのでは無いかと思います。

作ろうと思っているアプリが、使おうと思っているツールで要件が満たされているかよく考えて選びましょう!

ちなみにjavaでゲームを作る事は可能です、ですが作れるゲームはAndroid専用の物となってしまうし、
世の中には上記の様な非常に便利なツールがあるので、使わない手はありません!!

最後に

極端な話をしてしまえば、javaを知らなくてもAndroidアプリを作ることは可能です。
javascriptが得意な方はenchant.jsで、C++を使ってらっしゃる方はcocos2d-xでアプリを作ってみてはいかがでしょう?
まずは作ってみようと思う第1歩が大切なのです。

今回androidアプリを作るにあたりCocos2d-xを選んだので、別途勉強が必要になりました。
以下参考にした書籍やサイト

cocos2d-xによるiPhone/Androidアプリプログラミングガイド

cocos2d-xによるiPhone/Androidアプリプログラミングガイド

新品価格
¥3,129から
(2014/2/14 21:27時点)


独習C++

独習C 第4版

新品価格
¥3,360から
(2014/2/14 21:15時点)


amazonで買ったので、届くまでの間こちらのサイトでC++の入門勉強を行いました。
プログラムを書こう!のページ

 - PC , , , , , , ,

Message

メールアドレスが公開されることはありません。

  関連記事

【PC】完成っ!!(100%)

VGAクーラーのネジ山が外れずに、格闘の日々を過ごしていた。
そしてやっと精密ドライバーを手に入れ完成したたのだった…

【PC】久しぶりのPC日記

久しぶりの日記
自宅環境更改と生存確認ww

【PC】見逃すなっ!!クドリャフカPC

クドリャフカPC登場!!

no image
【Linux】今更気づく俺もアホなんだけど・・・

Clam AntiVirusでエラー!?
皆はちゃんと対処しよう!!

【自作PC】Windows7 Incoming NOW!!

我が家にもWindows7がやってきたよ!きたよ!

【自作PC】とりあえず完成!!

Core i7機完成っ!!

no image
【アンプ】ボスケテ…

PCの音がいきなり止まる症状発令orz
どうしてこうなった!!

【PC】Kernel-Power 41問題その2

今年は頑張って記事を更新していきます!! 以前使っていたマザーボードASUS製の …