エモンのブログ(スマホアプリ作成日記) -16ページ目

エモンのブログ(スマホアプリ作成日記)

エモンのブログです。

GooglePlayとAppStoreにアプリをリリースしてます。
「詰将棋パラダイス」4500問無料で公開。
「みんなのしょうぎ」投票型の将棋対局。いずれもソーシャルアプリなので、ソーシャルゲーム作成に興味があるかたは是非ご覧ください。

ついに詰将棋パラダイスのiOS版をリリースしました。
AppStore

審査は2週間待たされましたが、一度もリジェクトを食らわなかったのは大きかった。
初日iOSのユーザは30程度でした。明日からが勝負かと思います。
Androidはじわじわ伸びて、80くらい。Androidは油断ならないですね。

これから営業しに行きますが、将棋関連のサイト、ブログのお持ちの方はぜひ相互リンクいたしましょう。
詳細は以下の下部より。
空気ラボ

AIR&Cakeを使ってスマホ用ソーシャルアプリを作りました。前回の記事「詰将棋パラダイス」のことですね。この記事では技術的な面を解説していこうかなと思います。


ネイティブでスマホ用ソーシャルアプリを作る理由

ブラウザで動くソーシャルゲームでは、ページ遷移するごとにHTMLをレンダリングしてます。ユーザ体験として非常に低いですね。Ajaxを使っているところもありますが、まだまだ足らんのです。
HTML5がもてはやされているようですが、そもそもHTML自体が遅いです。さらにW3Cに共通化の意思があまり見受けられませんし。
さらにさらにAndroidが予想通りガラパゴス化して、端末ごとに違う動作をします。これは製作陣にとっては地獄。SenchaアニメーションやCreateJSを担当する側が多分死にます。
またデザインに関しては画像ではなくベクターで処理を行いたいですね。解像度によっては画像がにじんでしまいますので。
これらを一気に解決するのがAdobeAIRですよ。
最近AndroidからFlashPlayerが追い出されて「Flashはオワコン」の風潮がますます強くなってきましたが、それはブラウザ上での話。ネイティブアプリではFlashで作るAIRがまだまだ有力です。


AdobeAIRの利点

ランタイムがあれば2.2以降のAndroid端末、もちろんAndroidタブレット、iPhone、iPad、iPodTouchで動作します。キャプティブランタイムというランタイム同梱も考えられます。
ただしこれは逃げ道ですが。ユーザのことを真に考えるならランタイムは別々にしたいですな。
ベクターで表現できるのでAndroidのフリーダムな解像度と仕様に耐えられます。ベクターを扱うための最善のツールは今のところFlashですね。


ネイティブによるスマホ用ソーシャルアプリとはこうあるべき

全てを非同期通信
ブラウザだとページ遷移や通信する際にHTMLを再レンダリングしてますが、ネイティブアプリなら、全ての通信を非同期にしたいですね。AIRというかFlashでは当然非同期通信するための命令セットが用意されてます。データだけでなく、画像も同様です。

クライアントキャッシュ
クライアントキャッシュも有効利用しましょう。AIRならSheardObjectというKVS(key value store)やSQLiteのRDBを利用できます。ページングする際は、一度通信したデータは保持しておくと、遷移が素早く行えるようになります。
エラーハンドリング
ユーザビリティを高めるために通信エラー時にはアプリ内でケアしてあげましょう。このあたりもブラウザアプリでは一般的にはやってないでしょう。

容量
Flashではかつてガラケーですら動作させていた実績がありますから、ベクターデータの使い回しをして容量を抑えることが可能です。自分が作った詰将棋パラダイスでは結構な機能を盛り込みましたが350kbに抑えられてます。ネイティブアプリの一番の難点がダウンロードやインストール、初回立ち上げ時の遅さにあるかと思いますが、Flashならその問題を解決できます。
詰将棋パラダイスではダウンロード3秒、インストール3秒、初回立ち上げ3秒を実現できました。この辺のスピード感はソーシャルゲームにとっては重要でしょう。
アップデートをDBから行う
ソーシャルゲームの場合、都度都度のアップデートが必要になりますが、その辺は構成を考えた上でデータベースを更新すればコンテンツがアップデートされるようにしときましょう。
そうすればアプリのアップグレードなしでコンテンツが増えることになります。極論ではSWFをダウンロードするようなアプリにしてしまえばいいのですが、Apple的にはよろしくないのでやめときました。日々の更新ではブラウザに負けてしまいますが、うまく構成をすれば定期イベントなども可能でしょう。自分は実現させてます。

ログイン処理
セッションキーを発行してAIR側でそれを保存することで自動ログインが可能になります。
自分の作ったアプリですと複数アカウントを許すことになりますが、それはもはや防げませんね。
twitterやgoogleアカウントが無限に作れることを考えると、複数アカウントは仕方ない感じです。今後のソーシャルゲームでは複数アカウントがあっても不正とならないような仕様構成にする必要があるでしょう。


最後に

Flash便利すぎワロタw
というのも、ベクターの扱いが最強である、非同期通信が可能である、実行環境が広いということは今回述べました。またFlashとして当然なんですが、アニメが作れるってのとswfに書き出せる能力があるってこともあります。
さらには動画を作る際にそのまま素材流用できます。誰ですか?Flashがオワコンなどといったのは。
てなわけでAIRでソーシャルゲーム作っていきましょう!