iPhoneSDK今日のプログラミング

新集中線アプリをガリガリ書く。
リニューアルする目的はいろいろあるんだけど、iPad miniが出てきた状況で、作成当時の「これはiPadで使わないだろうJKwwww」というコンセプトでスタートしてiPhone/iPod touch向けに作ったアプリがiPad向けにリサイズしたモードを用意してもあんまり綺麗なUIとはいかず、今度は逆に「iPadのUIをベースに考えてiPhoneに対応させる」という思想の元でアプリを作り直し始めた、という次第。
他にも根本的というか、自分のプログラマとしての腕が上がっていて、もっと効率の良い実装ができるようになった、というのもある。UITableViewCellの再利用のロジックはiOSのバージョンアップにともなって変わったのに対応したし、iOS6のコンポーネントであるUICollectionViewControllerも使えるようになった(ということで、新集中線アプリはiOS5非対応)ので、あとはアイコン画像と全体的なUIのセンスを磨けば、以前よりはカッコイイUIをより綺麗にかけるようになった。

他にも課金モデルとかの修正も考えていて、(特に外人に)受けの悪いいわゆる基本無料追加機能有償系のアプリをやめて、iAd+機能若干制限の無償版と有償版の体制でいこうと思ったり。
なので有償版なら効果線は基本全部使える!というような感じで。

現状でiPadで画像をロードして普通の集中線(といっても、パラメータの拡張により、従来の「スポット線」「範囲指定(扇状)集中線」あたりの機能は包含している)の描画まで実装。
集中線の種類とかパラメータ制御は統一したので、描画エンジンをガリガリ追加してplistに書くだけでとりあえず集中線の種類は増えていくはず。
目下のところ色の指定が動いてないし、他にもいろいろ足りてないところはあるけど、2月末までにとりあえずここまでいけたので、この先もがんばっていけそう。

とりあえず色の指定、ピンチやスワイプみたいな従来やれてた操作の実装をやって、そこから次なる課題である「ドドド」の描画エンジンの実装に取りかかりたいなぁ…と。
このドドドエンジン(ジョジョ描き文字風に変形した文字を動的に作成して書く)のアイディアの実装が今回の一番のキモだからなぁ…
安直に「ド」とか「ゴ」とかの文字を沢山用意して貼付けるというプリセットにすると楽は楽なんだが、実装が力技でスマートにみえないのと言語圏ごとの差異を考えたというのもある。「集中線効果」は東アジアから中東にかけても沢山数が出てるのである。残念ながら台湾から西側ではあんまり課金されてないようだが…

TRPGiPhoneSDK思いつき覚え書き

iMasterScreenでPDFファイルを読み込んでそのページをPDFからPNGに加工して背景にする、という作業をすると、公式サイトのPDFとかを下敷きに加工出来ていい感じじゃないか?

#問題はPDFをどう取り込むか、である。URL直指定してDLするか、iBookから取り込めないかな…
#次点はiTunes経由で取り込み、ウルトラCはsafariで「iMasterScreenから開く」というコマンドを用意するとかか…

iPhoneSDK今日のプログラミング

新アプリのエアコーディング(「こういうメソッドを作って、ここでこういう処理をする」という物だけを書くコーディング)をEverNoteに書いて、概ねできたかなぁと思ったところでGo。
実際考えながら書くのとどれだけスピード違うんだろうと思ったが存外違う。クラス変数とかメソッドの定義とかの漏れが減る。
それでも「これはこんな作りにしなくてもいいよな」というのが数点見つかったのでまだまだだな。

昔、「コーディングは極力、設計されたロジックを写経するだけの状態で始める」と言われたのを(これがどこまで改変美化されてるのかは分からんですが)思い出してやってみたのだが、まぁ教訓にはなったなぁ。

工数もつけてみる。ストップウォッチで(ぉぃ)割とまじめにやってない(をぃ)気がするが、画面遷移のハリボテ風な部分はすいすいできた。勿論一番大変なロジックを組んでないし、不具合とか山と出るだろうからこの先が大変なのは分かってるつもりなんだが、幸先がよいことはいいことだ。

iPhoneSDK覚え書き:NSStringからクラスを指定してクラスメソッドを呼ぶ

hogehogeClassというクラスに
+(void)doHugaHuga;
というクラスメソッドがあった場合、それを動的に呼ぶ方法のメモ。
要するにプロトコルを使う。
+(void)doHugaHugaをhogehogeClass(か、その親)でhogehogeProtocolとして.hに書いてやれば、以下のようなコードが通るという寸法。

NSString* className = @”hogehogeClass”;
Class<hogehogeProtocol>myHogeHoge = NSClassFromString(className);
[myHogeHoge doHugaHuga];

iPhoneSDK「I am a software thief!!」と叫ばされるアプリ

正規ユーザーを泥棒呼ばわりするという残念な事件が起きたそうな。

もっとも、時点アプリという機能概要からすると「ユーザーにもAppleにも解説してない挙動をする(イースターエッグに該当する)アプリ」に該当して、目的がなんであれRejectくらうわけですね。まぁよしんば「海賊版だと判定した場合tweetされます」とか明示していてもAppleがどう判断するかはわかりませんが。
アプリケーションの署名チェックをするロジックが公式に広く提供されてるとも思えないので、その場合は審査時点ではねられたんじゃないですかね。

#対応の方法論がマズいんじゃね?という話であって、iPhoneアプリの海賊版は許すまじですが

iPhoneSDKシャドウランゲヘナAn【メモ】ボリューム感

ふと気になって直近26週のアプリDL数を調べてみた
集中線効果は東南アジアで強くて約6100DLとダントツのトップ。
そして何故かNPCメモる(HP/ダイスロール管理アプリ)が874と続く。
SR4ダイスツールの無償版が400程度、DX3の侵蝕率管理が120前後でここまでがサンケタ勢。
ゲヘナ魔術表、SR4ダイスツール有償版、今四半期リリースのSR4精霊管理の無償版60~80程度。
iMasがわずかに36なのが厳しい…

【ポイント】
・集中線効果は強いように見えるが実は金になってない(追加効果集もこのランキングに載ってるのだが、これ以下の数)
・NPCメモるも同様で、これはiAd付けるしかないなぁと思う(笑)
#NPCメモるProの構想はあって、これをSR4に特化したのがSR4精霊管理アプリ
・そういう意味で成功してるのはSR4ダイスツール、これは育てた方がいいのかもしれない。どう育てるのか全く分からないが(笑)
#無償版の広告収入的には月1ドル程度なので、成功してるとは言いがたいという説もあるが…
・iMasは資源投下の割に回収が厳しい…

現在製作中の「ケバブダイス」はこれをふまえて、単価を高くして数が出ないでもそれなりの回収を見込む方向で…

iPhoneSDKiOS6で動くのにiOS5で動かないテンプレート

覚え書き。
【症状】
 iOS5で横向きで起動しても回転してくれない、縦向き(Portrait)、しかも上下逆も対応してくれない
 iOS6ではきちんと回転、横向き起動に対応する
【対応】
最新のXCodeのテンプレートから
– (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
が抜けてやがったので、こいつを実装すると回転する。

iPhoneSDK最速の「新しかったiPad」、最後のiPad

iPad2併売の時点で、おそらく「同じ解像度のminiを同じ値段でやってくるか?」と踏んだんですが。Engadget曰く「引き続き併売される iPad 2 とは6000円差」ということは一応上位っつーことですか。まぁこれでiPad2ならずとも非Retina解像度のアイコンを用意し続ける必要は生じたか…ちっ(ぉぃ
そしてしかしまさかこの時点でLightningとA6のため「だけ」(他にも無線とか対応キャリアとか前面カメラとか差があるけど)にiPad4持ってくるとは…そして「Retinaモデル」って「新しいiPad」さんDisってるのかぉぃ。来年だと思ってたのに。
でも一方で、Appleさんの強調する利点をさして利点と感じない身としては、コストの安いDockケーブルの使え、かつCPU/GPUも現状で満足できる(というか、そんなに最適化してアプリつくれるわけでも、そんなCPU/GPUを酷使したアプリを使うでもない)僕としては、現状のiPadでいいんだい!と虚勢を張っておくべきかな。うん。
===
Mac miniはそろそろ切り替えてもいいかなぁと思う季節ですね。20万くらい用意したい。だれかください(待
#今回の発表の自分に取って極めて重大重要な点は、勤労意欲に直結する点ですね…うん。

iPhoneSDKAppSalesと和解せよ

やっぱりAppSalesのPaymentデータの取得でエラーが発生する…
英語でなら多少罵られても分からないので(笑)、トピック立項という手段を持って
「iOSデバイスの設定が日本語の時にだけデータ取得がエラー起こすっつってんだよこのボケ!」
という趣旨のことを再度Gitに言ってみるテスト。
この件のAppSalesのソースの修正点は1カ所で、ReportDownloadOperation.mの
NSString *signoutSentinel = @”Sign Out”;

NSString *signoutSentinel = @”サインアウト”;
にすればOK(本来はNSLocalizedString(@”signoutSentinel”, @”Sign out sentinel”)とかすべきだが…)。