iPhoneSDK今日のプログラミング

iPhone用の諸々の処理をした。
幸い、特にこれという苦労はしないで済んでいて、とりあえず少し成長したかなぁという感じ。それなりにカッコヨクもなってる。はず。
あえていえばアニメーションとか入れてもう少しカッコヨクできるシーンもあるなぁとか。プロパティがせり出してくるとか。

そういえばサウンドを入れてないな、たしか「設定で切れる音を入れておくのは操作感を与えるのによい」ツー話もちらっとあったなぁ…
(2秒ほど黙考)
でも、ほとんどの標準アプリってその手の音入れてないな! じゃぁいいや!(ぉぃ

===
iPhone版だと、iPad版のMaster側(左側の操作メニュー)での操作を画面遷移でやるので、「レイヤ追加ボタンタップ」「増やしたいレイヤの種類を選んでタップ」の状態でレイヤ一覧画面に戻って「さぁて描画ー」と思って「戻る」ボタンをタップすると(描画対象レイヤ未選択状態なので)がっくりくるという経験があって、これはよくないなぁと思うなど。
レイヤの種類を設定した時点で一気にそのレイヤで描画できるようにしたほうが、多分ストレスは少ないだろう(設定でON/OFF切り替えるが)。

明日はその対応とかやりたい。

iPhoneSDKここ数日のプログラミング

今回の新アプリは集中線もテーマだけど、どっちかというと「画像にちょいちょいと必要な加工をしてUPする」のが主眼かなぁと思い始める。
内閣の組閣画像を拾ってきて「顔認識」機能を併用して顔部分に正しく「CENSORED」と書かれたアイコンが乗ったり、黒塗りになったりするエフェクトがついているのだ。

概形は終わって、iPhoneのUI対応。
古いほうのアプリはiPadに対応してない状態からiPad対応をしたのでおおむねiPadでは使いづらいUI(というか、iPhone用をスケールアップしただけ)だったんですが、今回は逆方向のチャレンジ。
これはこれで難しい…

「設定」アプリや「メール」アプリのようなMaster-Detailタイプと呼ばれるアプリケーションをiPhoneで使うと、左側(Master)がメインとして扱われるんだけど、集中線アプリの場合は右(Detail)が初期画面であるべきなので、ここを入れ替えるところからスタートしないといけない。
他にもiPhoneで使ないがiPadでは非常に便利なコンポーネントであるUIPopoverControler(通称ぽっぽ)を直したり、エラーつぶしがいろいろ面倒なのである。

そしてSafariのブックマークやら印刷やらツイートやらするための便利なアイコンつきメニューは「UIActivityViewController」で対応できることがわかってしょんぼり。
こいつに処理をさせたいオブジェクトを投げ込んで表示指示飛ばしたら、それだけでプリントやらなんやらの処理を全部やってくれる。頑張って自作した苦労が…

#幸い(?)にも、他の箇所でも自作ViewControllerは使われているので、報われてはいる

このアプリは基本無料+課金での解放のパターンをやめて、無償版はiAd+機能若干削減、というパターンで行こうと思う。問題はこの機能差をどこで作るかだよなぁ…毎度面倒なことです。
追加する機能がショボいのはそれはそれでしょうがないので、Adの有無が一番大きな違いになるのかのぉ…

他にも日本語Localizedとかやり残したことは多いが、今週末までにシャドウランの諸々と合わせて終わって気持ちよく新年度を迎えたい。
迎えたい(重要らしい)。

iPhoneSDK今日のプログラミング

「吹き出し」を作りたかったのでこれを作るんだがまぁ面倒なこと面倒なこと…やってることに対して行数がかさむ(笑)
通常の角丸な吹き出しは作れた感があるので、あとは叫んでるときのワク線を実装したいなぁとか思ってる。
これがとあと1つ2つ効果線を用紙いたら本格的なLocalizeとiAdの実装、申請準備だな。3月中にはUPしたい。

iPhoneSDK今日のプログラミング

EffectPlus20130317

たまには開発中のスクリーンショットでも。
「EffectPlus」というアプリ名を与えて新集中線の開発。ツールバーのTintの設定もできるようになったのでこのように。結構カッコヨク仕上がった。
外観を弄り始めたのは単純にコーディングするのも飽きた気分転換にもなるし、最後にコレをやるとそれはそれで妥協の産物ができあがる気がするのでという感じ。
余談ですがきちんと手間をかければSSのような画像はつくれることになっています(1個だけ、実装してない機能がありますが…まぁ気にするな)。もっとも元画像用意して手間かけてこのアプリでレタッチして作るタイプのものじゃないので、ほとんど普通の画像処理アプリでつくりましたが、ロゴの中で1カ所だけは「このアプリじゃないと作るのが面倒な効果」があったので、そこだけはアプリで描画→本体に保存右→シミュレータから抜き出して画像処理アプリに重ねてその部分だけ切り出してレイヤとして重ねる、ということをしています。

ロゴ作るのに自分のアプリちゃんと使ってるんだよ!というアピール(笑)

他にも設定画面の作り込みしたり、設定に従った動作をする機能の実装にはげんだり。

iPhoneSDKここ数日のプログラミング

ミクダヨーさんを借りて効果のテストをしたり、効果のオプションについて試行錯誤したり、設定画面を作り込んだり。
基本的に従来の集中線効果のフル機能から一部の課金追加線を取り除いた感じ。
USで「追加機能に金取るタイプの良くあるクソなやつ」的なことを書かれたのを根に持っているので、こっちはこっちで無償/有償の2本立てでいきたい。
無償版は機能若干減らして、広告が出る程度にしたいなぁ。

しかし考えてみると土曜日曜も関係なく同じ(怠惰な)プログラミング生活を送っているのは土日を自分で消してるのも同じような気がしてきた…。

iPhoneSDK昨夜のプログラミング

ずいぶん手間がかかったがマスク画像の「消しゴム」モードと太/細の2種類のペンを設定作成。
マスク領域の「塗り足し」も実装(消しゴムモードがないと、一度作ったマスク領域が消せない、という理由で実装してなかったw)。
これがやたら面倒というか、自分の想定が甘いせいで時間がかかる。必要な画像は

(1)実際にマスクで使う画像(白黒2値)
(2)マスク領域を視覚化するために使う画像(確定している領域の画像)
(3)現在追加(削除)中の領域(プレビュー)

なんだけど、(2)とか(3)で使う画像を半透明にしている(マスクした領域の下側が見えないといけない)から、(3)の画像は単に上塗りするわけにもいかない。そして(1)の画像は(2)の画像から作れない。半透明画像から白黒2値の画像作るのは手間というか、作り方がわからん。そこで
(2’)(1)の画像を白黒反転したもの(正確には、全面白塗りの画像を(1)でマスクし、全面黒塗りの画像と合成したもの)
という画像を用意する。これを「半透明色で全面塗った画像」のマスク使うと(2)ができる。(2’)をベースに現在描画中の領域を黒塗りしてマスクにして同じことをすれば(3)ができる。

お陰で描画ロジックが3段階に分かれててややこしい。シミュレータで使ってる分にはどうやら速度に致命的な影響がない(CIFilterのパースペクティブ変換のほうがよほど処理が重い)模様なので、現状ではとりあえずこれでいいかなーという程度になった。

消しゴムは「透明色で描画」じゃないことは覚えてたんだけど、正しくは覚えてないのでここにも覚書。ブレンドモードの設定で「kCGBlendModeClear」とやるのが正解(終わったら戻さないとダメ)。

===

他にはDetail側のツールバーを動的に変える(マスク画像を弄っているときには、描画/消しゴムの切り替え、マスク領域のクリアのツールが表示される)仕組みを作ったり、マスク編集中には前述のマスク領域の視覚化をして、そうでないときにはマスク領域の表示を消す(CALayer.hiddenを操作)とか。

iPhoneSDK今日のプログラミング

ズギャーンとかドドドとかゴゴゴとか前からやりたかった効果をつけることに成功。
iOS6から自由変形(パースペクティブ変形)が実装されたらしくて、四苦八苦しながら実装。
とりあえず文字列が自由に設定できるようにしたら、これだけでもいろいろ面白いことができるはず!と信じる
(そのうちサンプルを作ってUPしてみよう)

iPhoneSDK今日のプログラミング

マスクレイヤの実装。集中線をつけたくない部分をぐるりと囲むようにドラッグすると、その部分には集中線が表示されないようにマスクされるというもの。この機能の実装が1日で形になるとは思わなかった(マスク処理自体は実はiMasterScreenのダイス処理とかでやってるけど)…。

マスクレイヤで除外できる領域は今のところ1か所しか指定できない(2か所指定すると前のマスクが消える)ので、ここらへんの編集は強化したい。でもUndoとかできないとやっぱりイヤよね…。
圧縮PNGの形でUndoバッファ(というか、ただの配列だよな・・・)作ればいいだけなんだが。

明日はツイートでの投稿と、初挑戦になるfacebookAPIを使った投稿のチャレンジを…したいなぁ…(希望的観測
DropBoxにアップロードする機能もつけたい気がするが、APIを別途用意するものは初期バージョンからは除外するのである。

===

それはそれとして、今日の昼ごろに突然ケバブダイスの審査が通ってリリースされてびっくり。たいていこっちの時間で明け方(4:00~6:00くらい)なんだけどなぁ…。
今回は不具合修正なので、お詫びのつもりで半額セール。

iPhoneSDK今日のプログラミング

新集中線。今日はマスクレイヤの設定と、集中線の座標変換を。
iPadのサイズに収まりきらないデカい画像(というか、カメラ撮影画像は往々にしてそうだ)を扱い、かつ縦横比が一定しない画像も想定するので、縮小/拡大をかけている(内部的にはフルスケールでやっているが)わけだけど、そうするとタップ座標は画像座標へ変換をしてやらないといけない。
変換してから遊んでたら2つ以上の集中線のパラメータの扱いが変だったのでコレも修正。レイヤ毎に新しい設定をファイルから読み込むのは僕的にはダルいと思ってるのだが、NSMutableArrayのコピーもinitWithArrayもUNコピー(シャローなのかなぁ…)なので、とりあえずパフォーマンスガー メモリシヨウリョウガーという声は封殺。富豪的プログラマである。

マスクレイヤは現行には全くない新機能で、画像の一部に「集中線の描画を除外する領域」を作る。やってるこたぁ単純なんだが、やったことはないことをやるわけでちょっと怖い。
まぁでも慣れれば自分の物にできるのだろう。
本編とは全然関係がUICollectionViewControlelrもケバブダイスで使って以来大分こなれて使うことができ、ほんの10分もあれば画像とタイトルがばーっと並ぶ程度ならできるのかと感心。
このあたりは、UITableViewControllerとかUINavigationControllerとかに悩んでいた初代ゲヘナ神語術アプリの頃に比べると雲泥の差だなぁとか成長を実感したり。