2012年6月29日金曜日

【アプリをプレイ】水を満たすゲーム

水を満たすゲーム。
http://itunes.apple.com/jp/app/shuiwo-mantasugemu/id516332107?mt=8

ダイハード3に出てたゲームだとかでダイハード3はみていないのですが、気になってしまう名前だったのでダウンロード。
海外製アプリのようなのでローカライズの際に直訳したらこうなった、っていうタイトルな気もしますが結果的に良い感じです。

容量の違う複数個のボトルを使って水の量を指定の分量にするというもの。
この手のゲームは得意ではないけどついはまっちゃいますね。

しかし、基本部分は日本語化されているけどヘルプが日本語化されてないのが痛いところ。
やることはシンプルなので触っていれば大体のことはわかりますが、水をどうやって捨てるのかわからず悩んでしまいました。

モードも多く、はまると長く遊べそうなゲームです。

TitaniumMobile アプリ開発入門を読む

TitaniumMobileはいける!となんとなく思ったので1冊本を買ってきて読んでいます。
今年に出た本で、開発環境のTitaniumStudioに触れられていたりJavaScriptの基礎的な部分にも触れられているので自分にはちょうど良いです。

環境構築はCordovaで既にやっていた部分だったりWebサイトを見ながら済ませていた部分だったりしたので、とりあえずはChapter3のJavaScriptに関する部分を読んだり試したりしています。
スコープとかクロージャとかの知識が自分には足りない部分かなぁと思ってそのあたりを熟読中です。

今月中に何か作ってみたかったけどできるかなぁ・・・。

2012年6月28日木曜日

【アプリをプレイ】精神年齢診断

40代でした・・・。

スタンダードな診断ゲームという印象。
アイコンと同じデザインの枠の中に質問が大きく表示される画面レイアウトが目を引きます。

特筆するところもないですが、片手で操作する場合にも苦なく選択肢が選べるレイアウトで手軽に使うことができます。
質問の種類は少ないみたいですが、そう何度も使われないであろう事を考えるとその点も問題はなさそうです。

診断系は好きな人が多そうなので狙いどころのジャンルなんでしょうかね~。

2012年6月27日水曜日

AppStoreの審査に落ちました

先日審査を申し込んだアプリが10日ほど待った後に審査落ちしました。
Cordovaアプリ特有のもっさり感がいけなかったのかと思いきや「君のアプリはエンターティーメント性に欠けるんだよねぇ」みたいな感じの英文でのご返答でした。

軽い気持ちで審査に申し込んだので仕方ないですね。

作っていたのが元々シンプルなコンセプトのアプリだったのでどう調整して再申請するか悩みどころです。

【アプリをプレイ】犯人はお前だ!!!!

もう少し他のアプリももっと触れてみようかと思ってランキングからダウンロード。

「犯人はお前だ!!!!」です。


http://itunes.apple.com/jp/app/fan-renhao-qianda!!!!/id436603154?mt=8

事件仕立てですが、クイズでよくある数人の証言を見て「うそつきは誰か」を当てるゲームの亜種。
5人の証言には矛盾する箇所があり、その中から嘘を言っている人を見抜き、その上で犯人を当てるというもの。

嘘つきを当てる、というところじゃないのがミソかなぁ。

タイトルのわかりやすく良いし、ゲームのシンプルさにこだわってあえて解説アプリを分離してると推測。
推理モノというジャンル自体をうまくデフォルメしてるアプリでした。

2012年6月26日火曜日

JavaScriptのお勉強


Titanium Mobileを始める前段階として、一度JavaScriptの基礎を勉強しなおしています。

プログラマではないので「とりあえず動けばOK」と思ってやってきてますが、先日まで無名関数の存在を知らなかったり、グローバル変数に頼り気味になったりと、かなり無茶苦茶な事をやってきたので良い機会と思いこちらのサイトをみて勉強中です。

http://astronaughts.net/titanium-mobile-%E9%96%8B%E7%99%BA%E3%81%A7%E6%9C%80%E4%BD%8E%E9%99%90%E7%90%86%E8%A7%A3%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AA-javascript-%E3%81%AE%E3%81%93%E3%81%A8/

感覚的に覚えてきた部分が多いので、ところどころ用語の意味がわからずにひっかかったりしています。
ステップアップする為、がんばりたいと思います。

そして、先日AppStoreへの登録申請したアプリの結果がまだでません。
7~10日かかるという話は各所でみていたものの実際に待ってみると長い・・・。

2012年6月17日日曜日

AppStoreへの登録申請

予定通り作っていたアプリに区切りをつけ一度AppStoreに登録申請をしてみました。

とにかく英語ばかりで、かつての高校入試などで英文の意味が9割くらいわからなかったような自分にはまるで呪文などを見ているかのよう。
あちこちのサイトをみながらなんとか審査待ちの状態まで進めました。

こちらの記事はだいぶ新しいエントリでxcodeのバージョンも同じだったので最終的にはこちらを参考にした部分が多いかも。
xCode4.2くらいの記事でもだいぶ違うところがあるような感じです。

さて、あとは無事審査通過を待つだけですが・・・。
JQueryMobileを使ったページ遷移の挙動がおかしいので落ちてしまうかも!

骨伝道イヤホン

自転車で移動する時の為に骨伝道ヘッドホンを使っている。
http://goldendance.co.jp/product/p_ab29.html
自分が住んでいる仙台市では
高音量でカーラジオ、カーステレオ等を聞き、ヘッドホン又はイヤホンを使用して音楽を聞くなど、安全な運転に必要な交通に関する音又は声が聞こえないような状態で車両等を運転しないこと。 というのが条件。
多くの地域で運転中のケータイやヘッドホンを聞いての音楽が禁止されている。
地域にもよるかもしれないが、周囲の音を阻害しない耳をふさがないタイプの骨伝道ヘッドホンは大丈夫・・・らしい。
ということで何ヶ月か使っているのでその感想。
結論としては本格的に音楽を楽しむものではない、ということ。
まず、音質が良くない。
骨伝道というからには骨に響く重低音が楽しめるのかと思いきやそんなことはなく、むしろちょっとこもった感じの音しか聞こえない。
加えて出力が低い。
iPodTouchでは問題なく使えたけど他のプレイヤーで使ったらちょっと音が小さかった。
iPodでもラジオ等の会話が伴うものは何が言ってるのかぜんぜんわからない。
加えて、音漏れが結構するので静かな電車などでは使えないというダメっぷり。
そんな有様だけど周囲の音がはっきり聞こえる上に音楽も楽しめるというのは大きい。
音質云々も周囲の音と混ざって聞こえる分には気にならないレベル。
今後も使っていくつもりだけど、部品が安っぽいので壊れてしまわないかが今のところ不安要素だ。


2012年6月13日水曜日

TitaniumMobileへの関心

Cordovaでの実行速度の問題に直面し、よくPhoneGapとの比較対象にされているTitaniumMobileへの関心が自分の中で高まってきました。
あくまでWebアプリの範疇で動作するCordovaに対し、TitaniumMobileはネイティブに近い状態で動作するアプリが作れる開発環境。

その代償として敷居は若干上がりますが、今までCordovaでこまごましたところで躓いていた事を考えるとあまり大差はないのかも。

おまけにゲーム開発に向いたモジュールもあるとかで
http://d.hatena.ne.jp/infosia/20120108/1326002975
自分の中での期待が高まっている開発環境です。

とりあえずは今Cordovaで作っているアプリを完成させ、次はこっちの挑戦してみようかなとか思っています。

おそらく、iOSのデベロッパー登録等はそのまま活かせるでしょうから導入もその分早く済むんじゃないかと。

目標は今週土日で現アプリに区切りをつけ、月内にTitaniumで超小規模の何かを作る。
そんな感じにしてみたいです。

2012年6月10日日曜日

Cordova+iOSで、画面の自動ロックの防止

AppDelegate.mの

- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

に以下の行を追加。

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
これだけで無操作状態でも画面が勝手に消えないようになりました。

PhoneGapは3倍遅い

Cordovaアプリを動かしていて、ブラウザで作っていた時より遅い気がしてたんですが、こんな記事を発見。

PhoneGap 1.1.0とSafariでJavaScriptの速度比較してみたメモ

ただでさえ通常のネイティブアプリに比べての制限が大きいというのに、更にこんな縛りがあるなんて・・・。
この状況はCordovaアプリの基礎として動いてるUIWebView(iOS)の仕様の為、Cordova1.7でも改善はされていません。

HTML5やJQueryMobileの勉強も兼ねているという部分も大きいので当面はCordovaと付き合おうかと思ってますが、時期をみて他の作り方も覚えてみようかなと思った記事でした。

2012年6月9日土曜日

その後のIIJmio128k

IIJmio 高速モバイル/Dミニマムスタート128プランを使い始めて1ヶ月になりました。

回線以外の問題で不便をすることはあるものの、速度自体には特に不満なく使っています。
主にブログやTwitterの閲覧、GoogleMapに使っています。
GoogleMapについて、IIJmioではA-GPSが使えないそうなのですが、少なくともL-04Cではしっかり現在地捕捉ができたのでナビ用途にも使えてます。

アプリのダウンロードをするときはWi-Fiのあるところで。

ちなみに問題というのは主に手持ちのL-04Cが原因。
・L-04C(root化済)を通してのテザリング時、何故かiPodからのインターネット接続ができなくなった。(ノートPCからの接続はOK)
・L-04CにカスタムROMを適用しているせいかたまに端末が落ちて数分間使えなくなる事がある。
・L-04Cのタッチパネルが暴走して意図しない動作をすることがある。
・バッテリの持ちがよろしくない。
・電話用のガラケー、音楽用のiPod、L-04Cの3台持ちになった。

などなど。恐らくL-04Cからの乗り換えで解消する問題が多いと思います。
節約を考えてのIIJmioなので、あまり頻繁に端末を買い換えるのもどうかと思うのですが、ISフラットで毎月5460円(auの場合)かかる事を考えればまだ安いです。

また、これまでは諸事情でauガラケーをガンガン使っていたのですが、こちらは一転して節約モードに入る事にしました。
ダブル定額ライトをダブル定額スーパーライトに、ケータイ安心サポートを解約しました。
いつもダブル定額の上限4200円に達していたので、IIJmioの月額費用を払う事を考えても3000円/月くらいの節約になる予定です。

2012年6月7日木曜日

Cordovaからの音再生その2

http://koyoy-lab.blogspot.jp/2012/06/cordova.html
からの続き。
iPodの音楽再生を継続させつつ、Cordovaアプリで音声を再生することに成功しました。
当初の読み通り、PGLowLatencyAudioプラグインにAVAudioSessionクラスを追加することで対応できました。
強引に組み込んだ感がありますので、動作保証はできませんが・・・。
Objective-Cの知識が無いので組み込みにあたっては
こちらのブログ記事、「RemoteIOでのオーディオ再生」がちょうどAudioSessionを使ってたので参考にさせてもらいました。

PGLowLatencyAudioAsset.hをこんな感じに変更。
#import <Foundation/Foundation.h>
#import <AVFoundation/AVAudioPlayer.h>
#import <AudioToolbox/AudioToolbox.h>
@interface PGLowLatencyAudioAsset : NSObject {
    NSMutableArray* voices;
    int playIndex;
    AudioUnit outputUnit;//aaaa
}
-(id) initWithPath:(NSString*) path withVoices:(NSNumber*) numVoices;
- (void) setupAudioSession;
- (void) play;
- (void) stop;
- (void) loop;
- (void) unload;
@end
あと、PGLowLatencyAudioAsset.mは、
まずinitWithPathの「self = [super init];」の次の行に
    [self setupAudioSession];
を追加。
更に、以下の内容を追加。
void InterruptionListener(void *inUserData,
                          UInt32 inInterruption)
{
    AudioUnit *remoteIO = (AudioUnit*)inUserData;
    if (inInterruption == kAudioSessionEndInterruption) {
        AudioSessionSetActive(true);
        AudioOutputUnitStart(*remoteIO);
        printf("EndInterruption\n");
    }
    if (inInterruption == kAudioSessionBeginInterruption) {
        AudioOutputUnitStop(*remoteIO);
        printf("BeginInterruption\n");
    }
}
- (void) setupAudioSession
{
    AudioSessionInitialize(NULL, NULL, InterruptionListener, &outputUnit);
    UInt32 category = kAudioSessionCategory_AmbientSound;
    AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category);
    AudioSessionSetActive(true);
}
といった感じでとりあえずはiPodの再生を止めずに音声の再生ができるようになりました。

2012年6月3日日曜日

Cordovaからの音再生

Cordovaを使ってのmp3再生について調べています。
HTML5標準の再生機能もありますが、その再生の都度ファイルを読みに行くのかレスポンスがあまりよくありません。
API等を使った場合にはその問題が大幅に解消されました。
尚、Xcode4.3.2Cordova1.6.0を使用しています。
【HTML5標準】→多重再生×、iPodの曲停止。そのまま移植できるのでWebアプリからの移植が容易。簡単に使えるけど再生指示を出してからのレスポンスは悪い。
使い方はあちこちに書いてあると思うので省略。

【Cordova標準のMediaAPI】→多重再生×、iPodの曲停止。レスポンスは比較的良い感じ。録音ができる。
使い方は公式サンプルを参照。(リンク先はCordova1.7)

【PGLowLatencyAudio】→多重再生○、iPodの曲停止(同時再生については後述)レスポンスは比較的良い感じ。
導入はちょっと面倒。使用方法を以下に記載。
  1. プロジェクトのPluginsにプラグインのiPhoneフォルダの以下のファイルをドラッグして投入。
    PGLowLatencyAudio.hPGLowLatencyAudio.mPGLowLatencyAudioAsset.hPGLowLatencyAudioAsset.mPGPlugin.hPGPlugin.m
    (PGPluginはこの辺からダウンロード)
  2. PGLowLatencyAudio.hを開き、以下の部分
    #import <PhoneGap/PGPlugin.h>

    #import <PGPlugin.h>
    に書き換える。
    書き換え忘れるとエラーに。
  3. Cordova.plistのPluginsに「PGLowLatencyAudio」を追加(keyとvalueの両方)。
  4. 使い方はサンプルを参照。
    phonegap-1.3.0.jsの部分を使用しているCordovaのバージョンに置き換えるのを忘れずに。
preloadFXを呼び出す場合は、AudioToolboxフレームワークを追加しておく必要があります。
(Androidの場合はSoundPoolクラスを使うらしい?)
しかしながらpreloadFXを使った場合に、ちゃんとファイルも読み込んでplay自体もSuccess扱いになるんだけども音がならないという問題にひっかかっています。
AudioToolboxではmp3が開けないという記述をみかけたのでwavやaifファイルも試したけど解決できずにおります。
(更に、シミュレータ上では再生されるという不思議)
通知音扱いなのでマナーモードだと再生されません。

追記)iPodの曲再生を止めたくない場合にはAVAudioSessionクラスを使えば良さそう。
しかし、それを使ったCordovaプラグインがなさそうなので、
PGLowLatencyAudioプラグイン辺りをいじって対応させるしかない・・・?
追記その2)
iPodの音楽との同時再生ができるところまで進みました→http://koyoy-lab.blogspot.jp/2012/06/cordova_07.html