2012年1月31日

AT-METRONOME Version 2.31

AT-METRONOMEほぼ最終版、Ready for Saleになりました。
実はいままで無駄な0.01秒というのが入ってたんですが、取りました。
あとなんとなくアイコン変えました。


バージョン 2.31 の新機能

インターバルの精度向上
アイコン変更

2012年1月27日

キーチェーンアクセス

なんかこれも意外と面倒。こちら↓
http://log.scifihifi.com/post/55837387/simple-iphone-keychain-code

で提供されている、SFHFKeychainUtils.hとmを使えば簡単ということなんだけど、これまたARC対応じゃないんだこれが・・・orz
いろいろ対処法があるんだろうと思うんですが、面倒なので急がば回れでちまちま治しました。
基本的に、release]やらautorelease]をどんどん消していって、Xcodeの◎を押して勝手に直させればいいんだけれど、最後、ポインターのポインターがダメ?

error: cast of an indirect pointer to an Objective-C pointer to 'CFTypeRef *' (aka 'const void **') is disallowed with ARC [4]
が少し悩んだ。 が、ここ↓
http://stackoverflow.com/questions/7827730/iphone-fetch-data-dictionary-from-keychain
を見て治しました。 すごいなあ。

CFDictionaryRef cfresult = NULL;
NSMutableDictionary *attributeQuery = [query mutableCopy];
[attributeQuery setObject: (id) kCFBooleanTrue forKey:(__bridge id) kSecReturnAttributes];
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef) attributeQuery, (CFTypeRef *) &cfresult);

って感じで。
resultDataんとこは要るみたいなのでSecItemCopyMatchingの後で、

NSData *resultData = (__bridge_transfer NSData *)cfresult2;

って感じ。
cfresult2 は、CFDataRefです。

「って感じ」ばっかりだけど、とりあえず大丈夫っぽい。

しかし、どうなんだろう???このkeychainアクセス。
forServiceNameが自由に設定できるところが、セキュリティーとしてはやや弱いように思えるんだが・・・
もちろん、平文でNSUserDefaultsにパスワード保存がマズイのはわかるが、破り方によってはNSUserDefaultsよりも怖い気がする。

一応、forServiceNameは安易なアプリ名にしないほうが良いと思うのですが、あんまり書いてあるとこ無いので、書いとこうと思いました。

まあきっと僕がよくわかっていないのだろう。 推奨の方法なのでヨシとしよう。


2012年1月24日

ネットワーク処理が可能か調べる

UIDeviceあたりで簡単にわかるのかと思ったら、意外と面倒なのね。
なんか調べるのが下手なのかもしれませんが。

まあ機器の状態だけでは計り知れない奥深さはあるのかもしれないけど。
しかしNSURLConnectionでエラー調べて、ってのはちょっとダルい。
いろいろ調べると、(いや、それほど調べてませんw)
http://stackoverflow.com/questions/741145/determining-internet-availability-on-iphone
に書いてあったのが短くて、動きも期待した通りだった。

↓は更に簡略化。(ここでの重複チェックは余計と思ったので)

- (BOOL)isDataSourceAvailable{
    Boolean success;    
    const char *host_name = "twitter.com"; //通信可能か調べたいホスト

    SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, host_name);
    SCNetworkReachabilityFlags flags;
    success = SCNetworkReachabilityGetFlags(reachability, &flags);
    BOOL isDataSourceAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
    CFRelease(reachability);
    return isDataSourceAvailable;
}

確認したい時にしっかり確認できないと意味ねー、て思ったので簡略化しました。

SystemConfiguration.frameworkと
SystemConfiguration/SystemConfiguration.hの@import

が必要です。
なんて、これでいいのかな・・・。

しかし、「りーちゃびりてぃ」ねえ。
通信って面倒いなあ。


Localizable.strings

タイトルのファイルでおかしなことが起こった。
ぐぐってみると割とよくあることらしい・・・。

起こったことは、実機での話

  • まず作成して、NSLocalizedString()で確認(ここは問題無し)
  • そして、XcodeのLocalization欄でJapaneseを追加。

すると、

  • 日本語のほうを読まない!(先ほどの英語が表示される)
  • 両方のキー値を変えてみたら(NSLocalizedString()のほうも)、今度は全く読まない!
  • そしてNSLocalizedString()のほうだけ元のキーに戻したら英語のほうが表示された!
  • 一旦Localizable.stringsを削除してみたら、まだ最初の英語のほうが表示される!
  • シミュレーターだといろいろ素直に読む!?(Japanese追加後だったから?)
これは・・・そうですね、実機のどこかにゴミが残っているんですね。
Macの中をいくら探しても見つからない・・・アプリを削除しても消えない・・・
これは・・・実機の中の見えないどこかにゴミが・・・


結論としては最後は治りました。
Xcodeの再起動やらLocalizable.strings削除やアプリ削除を何回かやってるうちに治りました。
治し方がはっきりせずすいません。

とりあえず、新しく国際化リソース作るときは必ず実機転送する前に国際化しておいた方がよさそうです。(国際化前の実機テストはなるべく避ける)


短縮URLスパム

http://ow.ly/8wDjj
http://t.co/tGItCVBZ

この2つはそうみたいです。
Bloggerを狙ったスパムのようです。
なんかちょっと怪しいなと思って上のURLをググったら

こちらのブログが引っかかりました。
ありがたいですね。
なので僕も書いておこうと思いました。

2012年1月20日

AT-METRONOME Version 2.3

メトロノームアプリAT-METRONOME、ほぼ毎週アップデートしてたような気がします。
今度こそ一段落です。
いや、あと一回かな・・・


バージョン 2.3 の新機能

アプリ内課金拡張機能に、ボリュームスライダーを追加しました。



2012年1月19日

AT-Shuffle LITE Version 1.1

AT-Shuffle LITE バージョンアップしてます。

なんかバグ修正ってだけで、どんなバグ直したんだか忘れちゃったw
申請から公開まで長すぎますな。



バージョン 1.1 の新機能

バグ修正



2012年1月15日

謝謝! Thank you.

なんかここ数日、中国のダウンロード数や広告アクセスが急増してるんですが、これは今話題になってるiPhone4Sの中国発売の影響なんでしょうかね? ここ数日USAを超えています。
僕のアプリはサポートの手間を減らすためにiOS5しか対応してないから余計なのかな?

なんかこの間まで尖閣問題やらパクリ問題やらで、あんまりいい印象はなかった中国ですが、(まあiPhone4Sの販売延期もすごいですがw)マーケットとしては非常に魅力であることを一気に体感した気がします。
国民感情と経済に対する体制との間でブレが生じるのも、いたしかたないかもしれませんね。
なんかうまく付き合っていけるといいなと思いました。

的人誰下載,謝謝。
To people who downloaded, thank you.


2012年1月12日

新アプリ追加

長らく(っても一ヶ月半か・・・)AT-METRONOME一本でやってきたAT-Sphereですが、紆余曲折を経て(一本リジェクトされてます;;)ようやく新アプリ追加しました。

今回追加したAT-Shuffleですが、極めて単純なものです。 きっと低評価付くでしょう!!!  いや、ダウンロードされないだろうなw
しかし、このアプリは僕にとっては非常に重要で、私どもAT-Sphere(いや僕一人ですが)の基本理念である、


Make it, if there is no it.


を極めて濃く表現した作品であります。
意外と無いんですね。 単なるプレイヤー。
iPodプレイヤーとしては、標準のでも十分ちゃ十分だし、王道の「Groove」なんてのもありますが(大好きなアプリです)、日頃の使い勝手の面で若干不満もあったんですね。
そんなわけで作ったわけです。

まさに自分だけのためのアプリ!、for自分!!
いやー、恥ずかしいから早く新着から消えて欲しいなw



AT-Shuffle LITE プレイリスト専用iPodライブラリプレイヤー



僕のように、主にiTunesで作成したプレイリストをシャッフルモードで聴いてばっかりいる人のためのiPodライブラリプレイヤーです。
標準のiPodプレイヤーと、うまく使い分けて使ってください。



特徴
  • プレイリストしか選べません。
  • メインのiPodライブラリプレイヤーとして使えば、毎日のアクションが一つ減ります。
  • 複数プレイリストのミックスシャッフルも簡単です。
  • 標準のプレイヤーで見えない情報をいくつか表示します。
  • 電源接続時は自動スリープしないので、Dockスピーカーに最適です。


(+α)カタログモード
各曲を次々と約20秒ずつ再生します。
iPhoneのボリュームを自動的に操作して再生します。
ご自分の曲で、ラジオのカウントダウン番組のような雰囲気を味わえます。
※ただし、バックグラウンドや、スリープ中は機能しません。(カタログモード時は、自動スリープしないようになっています)
※また、iPhoneでボリュームを変更できない機器ではフェードイン、アウトは動作しません。

ジェスチャー:

  • 画面をタップするとPlay/Pauseの切り替えになります。
  • 左右のスワイプで曲送りです。
  • 上下のスワイプでボリュームを変更します。


Have fun!





Version History






AT-Sphereの楽器練習ツール
AT-METRONOME
The Best for the Musical Instruments Practice
AT-Littlefinger 
The Game for Musical Instruments Player
AT-Position
The 3rd Position of the Violin
AT-Bow
The Shadow Bowing



AT-METRONOME Version 2.2

iPhone用メトロノーム、AT-METRONOME、すごく速いペースでバージョンアップしてます。
Appleの審査員はちょっとうざいかもしれないな・・・

でも今回は、アプリ内課金拡張機能になかなか良い機能が追加されました。
指定時間毎に、+10bpmずつテンポアップする機能です。
これは、自分でもかなり使ってますが、苦手な速いフレーズなんかは上達すると思いますよおお!


バージョン 2.2 の新機能

アプリ内購入拡張機能に、+10BPM ステップアップタイマー機能を追加しました。



2012年1月11日

iOS 5.1 beta 3 and Xcode 4.3 Developer Preview

ようやく最終betaということで、Xcode 4.3入れてみました。
Time Machineでしっかりバックアップしてからおっかなびっくりインストールw
さすが最終版、とても安定してる気がします。

ビルドしてみると、証明書のダブりってことでエラーが出ましたが、ダブり(というかDevelopperのほう)を削除してエラーは消えました。 特に期限切れじゃないんだけどなあ・・・まあいいか。

気になったのは、テキストのAutoshrink(文字数に応じてフォントサイズ変えてくれる奴)がデフォルトでオフ(Fixedsize)になっちゃったこと。 今までのstoryboardも全部オフになっちゃいました・・・。 
これはダメなんじゃないでしょうかねえ。 製品版では治してくれないと。

まあ、touchの5.1 beta3でいろいろ動作確認できてよかったけど、正直、僕のようなライトな(?)開発者は慌てて入れるようなものじゃないですね。
次回からは製品版を待てばいいと思いました。


2012年1月10日

アプリの利用状況

iAdとAdMobを載せるメリットは、もちろんお小遣いが稼げる(かも)ってことなんだけど、正直、ほんとにお小遣いすぎますwww しかも子供レベルのお小遣いですw

そんなことよりも、もっと心に響く効果があります。 それは、
どの程度、利用されてるのかがわかる
ことです。
AT-METRONOMEのようなありふれたアプリでも、 世界で使ってくれる人がいる!!!
なんとも心の支えになります。

今現在のAdMobの地域別レポート見ると、
アジア:26カ国
ヨーロッパ:36カ国
南北中央アメリカ:15カ国
オセアニア:3カ国
アフリカ:6カ国
・・・と86の国々でAdMob広告リクエストがあります。

大国だけでなく、初めて聞いたような、小さな国でも使われてるんだなー、
ワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ
うれしいのがリクエスト数の順で、日本、USに次いで、フランス、イタリア・・・とヨーロッパ諸国が続いている所です。
一応クラッシックイメージのメトロノーム(のつもり)なので、ヨーロッパで使ってもらえるのは本当にうれしいです。><

くどいですが、特別信者でもないんですが、Apple様様って思いますね。
いい加減な説明書きでも、「音楽は世界共通」ってことがよくわかります。
いやいやいい加減な説明書きですいません。。。



2012年1月8日

ステマねぇ

食べログですっかり有名になったステマですが、いろいろ考えみると行き着くところ基本的に心にもないこと(すなわちウソ)書いて、言って、よく見せようとしてるものすべてダメじゃん? っていうことだよね。 まあダメなんだけど。
確かに僕は結構インターネット業界で働いてきたので、「やらせ」「さくら」「仕込み」とか、あと「工作員」とかの酷さにはうんざりしてる。

自分でアプリ作る前からApp Storeのカスタマーレビューも、鵜呑みにできないとは思ってた。 多かれ少なかれいろいろお願いして高評価つけてもらったりするんだろうなって思いますね。

とりあえず言っておこう!僕はステマはしません!

しかし自分がアプリ作るようになって、高評価だとうれしいし、今のところまあまあ順調なのでまあいいんだけど、ダウンロード数ランキングでダウンロード数が変わっちゃうっていうのはなんとかならないかな? なんかバカですよねwww

昔ながらの「最初に勝てばずっと勝ち」から世の中進歩なさすぎだよほんと。
それが人の性なのかなあ。 もうちょっと人類進化してもいいと思うんだけど。


Appleももう少しマシな検索機能つけてくれればいいんだけどねー。
これからさらにどんどんアプリ増えてくだろうに、どーすんだろ? 結局宣伝能力の高い企業アプリばっかりになってくのかなあ。 なーんかつまらん話だなあ。
面白いことばっかり考えるジョブズももう居ないし心配だわ。



2012年1月7日

XCODE 4 ・・・そして予言

僕は去年の11月からiOSアプリを勉強はじめたのだが(すなわちXCODE4以前は知らない)、iOSがObjective-Cなおかげで結構早くアプリを作れるようになれたかなと思う。 僕はカーニハン&リッチーでC言語を始めて、VC++でWindowsプログラマをやっていたので(なんとJavaをやった経験がない・・・)、iOSプログラミングがObjective-Cなのはむしろ助かったのだ。

しかし、タイミングの問題なのか、初心者向け解説書もGoogle検索もXCODE4の統合されたInterface BuilderとStoryboardを駆使した説明が少ないことに、最近気づいた。
どうも手軽にヒットする参考文献どおりやると、無駄なコードを書いてしまう。

そのミスに気付くにつれ、まあとにかくXCODE4はすばらしく生産性が高くなってるんだろうと思う。

なのでここで、今後書籍などによって、XCODE4の生産性が周知され、活かされて、今まで以上にアプリが増えていくことを予言してみる。

いや、まだ今は比較的チャンスの時期なので、急がないと!って思ったのです。
PV高いブログだったら書けないけど、PV無いのでまあ書いてみたw


2012年1月4日

AT-METRONOME Version 2.1

無料のメトロノーム、AT-METRONOME、今年も元気にバージョンアップしました!
(申請出したのは去年なんだけど)

今回は、心臓部であるインターバル絡みを少し見直しました。 というか、初心者丸出しのおかしなコードを整理したんですがw
キレイになってインターバルはさらに安定したと思うんだけど、負荷が減った分、BPMがまた少しずれたかも・・・合わせるのが大変だねえ・・・また精度上げてかないと・・・。




バージョン 2.1 の新機能

バグ修正
メモリー機能の操作変更
- 1秒以上長押しで記憶するようにしました。(ダブルタップではなくなりましたのでご注意ください)

拡張機能追加
- ストップタイマー


2012年1月3日

iOS5のバグ?


新年早々、不可解な現象に遭遇してしまった・・・。

[[MPMusicPlayerController iPodMusicPlayer] playbackState]

が、再生中にもかかわらず、

MPMusicPlaybackStatePaused (すなわち2)

を返してきやがるのだ。
いろいろ調べてみると、iPodにコレクションを追加

[iPodMusicPlayer setQueueWithItemCollection:collection];
[iPodMusicPlayer play];


した直後に「たまーに」発生しやがるのだ。
どう考えてもiOSのバグでしょう? これは困った・・・。

すぐにPlayすると失敗するときがあるのか?
playbackState以外に再生中であることを確認する方法・・・

[iPodMusicPlayer currentPlaybackTime]


こいつをチェックして判断する???
やれやれ・・・