その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

2012-01-01から1年間の記事一覧

若輩者ではありますが、iOSの技術書を書かせていただくことになりました。

ちょうど退職の意志を役員に伝えた1週間後ぐらい(出来すぎたタイミング!)に、とある出版社の方より、「書籍企画のご相談をさせていただきたく」とメールをいただきました。 Qiitaに書いた記事 を見てご連絡いただいたようです。 (後述しますが、)僕には…

面白法人カヤックを退職しました。

今日は本年度の締め日であるとともに、僕のカヤックの最終出社日でした。 この件については、カヤックでやってきた仕事を振り返ったりとか、今後のこととかいろいろ書きたいことがあるのですが、今日はビールを多少嗜んでしまったので、とりいそぎ社内に流し…

1行で iOS バージョン判定できる便利マクロ

下記のようにマクロを定義しておけば、 #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] \ compare:v options:NSNumericSearch] == NSOrderedAscending) こんな感じで1行でバージョン判定できて便利です。 if (SYSTEM_VERS…

Core Image の全エフェクトを試せるサンプルコードを公開しました

Core Image のフィルタ(画像にエフェクトをかけたり、色を調整したりするもの)を一通り試せるサンプルプロジェクトをgithubに上げました。 というか、これ、1年以上前にアップしてこちらの記事に書いたのですが、ほとんど認知されることがなかったので、改…

Method Swizzling をうまく使っている実用例

Method Swizzlingは、既存のメソッドの実装を、自前の実装に差し替えるための手法です。 ・・・ということを知ってはいても、どういうときに使うと便利なのかイマイチわかってなかったので、Method Swizzlingをうまく使った実用例を2つほど探してきました。 …

AVFoundation 使用時のカメラ起動を高速化する

AVFoundation を用いて静止画とか動画とかを撮影する場合に、カメラの起動時間を速くする方法です。 計測してみると、どうも AVCaptureSession の startRunning に一番時間がかかってるので、 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_…

シャッター音の鳴らないカメラアプリの実装方法

「カメラ機能をアプリにつけたいけどシャッター音を鳴らしたくない」とか、「カメラ起動時のアニメーションが嫌だ」とか、カメラ機能をもっと自由にカスタマイズしたい場合は、UIImagePickerController を使うのではなく AVFoundation フレームワークを使う…

たったの6ステップ!『漫画カメラ』風に写真を加工するiPhoneアプリの作り方

超大ヒットした『漫画カメラ』、ほんとに漫画っぽくなって、動作も軽快、シェアも簡単で楽しいですよね。 ただ、ちらほらと「同じこと考えてた」「そういうの作ってた」という声を聞くことがあります。実際に同様のコンセプトのアプリもたくさん出ています。…

たった1行でWebサービスと連携!UIActivity のまとめリポジトリをつくりました

UIActivityとは? 地味だからかあまり話題になってない気がするのですが、iOS 6 の便利な新機能の1つに UIActivity というのがあります。これは、 こんな感じでメールとか写真アプリとかFacebook/Twitterとかに写真やテキストを渡すためのUIです。(超ざっく…

iOS のオーディオ/サウンド処理について学べる書籍10冊+α

Core Image や vImage や OpenCV、それらをラップする各種ライブラリの充実のおかげで、画像処理まわりは高度な処理をずいぶん簡単に高速に実装できるようになってきましたが、オーディオ処理(音声処理)まわりはいまだに再生や録音などの基本的なところか…

CALayer を用いた「影」の描画処理を軽くする

CALayerを用いてUIViewを継承したクラスに影をつける方法は、下記のような感じで(CoreGraphicsで描画する方法などと比べて)わかりやすくお手軽で、質感もグッと増すので、ついつい多用したくなります。 self.layer.shadowOpacity = 0.5; self.layer.shadow…

DropBox 連携 UIActivity、"GSDropboxActivity" の使い方

DropBox用カスタムUIActivity、"GSDropboxActivity" の導入方法(のメモ)です。 GSDropboxActivity UIActivityとは何ぞや?という方はこちらの記事 からどうぞ。 準備 GSDropboxActivity フォルダをプロジェクトに追加 DropboxSDK.framework をプロジェクト…

英単語の単数形/複数形変換をメソッド1つで行えるようにする NSString のカテゴリ

iOS アプリを英語ローカライズする際,単数形/複数形の取り扱いはなかなかやっかいです。-s, -es の違いを始めとして,不可算名詞,person/peopleのようにイレギュラーなものもあります。 それら諸々のルールをプロパティリストファイルに記述し, - (NSStr…

ARC を有効にしているコードで NSZoneMalloc をどう置き換えればよいか

AVFoundation を用いたカメラアプリを実装していて、参考にしていたサンプルコードに次のような NSZoneMalloc を用いてメモリ確保している箇所がありました。 bitmap = NSZoneMalloc(self.zone, width * height * 4); これを ARC オンにしているソースに書い…

dispatch_get_global_queue と dispatch_queue_create の違い

他サイト様の引用ばっかりで恐縮ですが、説明がわかりやすかったのでこちらにメモっておきます。 dispatch_get_global_queue と dispatch_queue_create の違い (Nacho4d - programming notes: December 2010 より) メインキュー : メインスレッドで実行 di…

【その2】UIImagePickerController を使わないカメラアプリの実装方法

前回記事の続きです。 前回は、プレビュー表示するところまで書きました。今回は、シャッター撮影して画像をカメラロールに保存するところまで。 出力の準備 プロパティ宣言 @property (nonatomic, strong) AVCaptureStillImageOutput *imageOutput; 出力の…

【その1】UIImagePickerController を使わないカメラアプリの実装方法

「カメラ機能をアプリにつけたいけどシャッター音を鳴らしたくない」とか、「カメラ起動時のアニメーションが嫌だ」とかの場合は、UIImagePickerController を使うのではなく AVFoundation フレームワークを使ってカメラ機能を自作する必要があります。 とい…

vImageで領域分割/セグメント化/輪郭抽出/ラベリング

人間から見て"納得感"のある画像処理をしようと思うと、領域分割(セグメント化)をしたくなる場合が多々あります。 たとえば、人物と背景とを別々に処理したい、とか、人の肌の部分だけに処理をしたい、とか。 OpenCVではそういった「領域分割」を行ってく…

インストールされているアプリの一覧をログ出力する "iOSInstalledApps"

以前、『デバイスにインストールされているアプリ一覧を取得する』という記事を書いたのですが、ここに書いた アプリのプロセス名一覧を持っておいて、そのプロセスが存在すればインストールされていると判断する アプリのカスタムURLスキーム一覧を持ってお…

シンプルで使いまわしやすいトゥイーンライブラリ "AHEasing"

以前 gihyo.jp に『様々なアニメーションを実現するiOSアプリ用トゥイーンライブラリ3種を比較!』という記事を書かせていただいたのですが、そこで紹介した3つよりも良さげなトゥイーンライブラリがあったので、紹介します。 warrenm / AHEasing まだデモ…

iPhoneアプリ開発(iPhone SDK)の解説本、一挙14冊レビュー

昔書いてたブログからの転載です。 書いた日時が「2010年1月23日」ととても古く(iOS 3 時代!)、さらにiOSアプリ開発者としてもプログラマとしても初心者の頃に書いたものなので、あまり参考にならないかもしれませんが、一番の人気記事でもあったので、iO…

iOS 6 新機能のサンプルコード/ライブラリのまとめ33個

「英語のリファレンスだけじゃよくわからん、動くサンプルが欲しい!」という僕のために、NDA解禁されたてほやほやの iOS 6 関連のサンプルコード/オープンソースライブラリ等を集めてみました。 UICollectionView 1. iOS6-Playground iTunesから取得したム…

iAd + nend の切り替え表示ラッパークラスを公開しました

最近は個人で出す無料アプリはもっぱら メインは iAd iAdの広告在庫がないときに nend という iAd + nend の併用パターンが多くなりました。 で、iAd / nend の実装方法を調べたりとか、切り替え処理を実装したりとか面倒なので、1行で済むラッパークラスを…

Cocoa Controls の掲載審査に関する諸々

8/27に届いた Cocoa Controls のメルマガで気付いたのですが、"UIKitForGames" が Cocoa Controls に掲載されたようです。 http://www.cocoacontrols.com/platforms/ios/controls/uikitforgame で、今回やってみてわかったこと諸々を書いておきます。 ページ…

ゲームアプリ向け UI コンポーネントセット "UIKitForGame" を公開しました

最近はゲームアプリをつくることが多いのですが、その中で自分でもよく使う UIKit のカテゴリ/サブクラスの詰め合わせを Github にアップしました。 https://github.com/shu223/UIKitForGame 以下に概要と使い方を紹介させていただきます。 DamageValueLabe…

Cocoa Controls で見つけたティッカー4種を比較してみました

ティッカーというのは、(本当の定義はわかりませんが)文字が流れるアレです。 文字を横方向に流すアニメーションをするだけのことですが、たとえばパズドラのティッカーを見てると、表示開始時は右から一気に左端まで移動させ、そのあとゆっくり左方向に流…

$(SRCROOT) や $(BUILD_DIR) 等の Xcode で使用しているマクロの置換内容の一覧を調べる方法

Info.plistや、ビルド設定をいじっていると、こんな文字列に出くわすかと思います。 $(PRODUCT_NAME) $(TARGET_TEMP_DIR) $(SRCROOT) これらはそれぞれ特別な意味を持ち、Xcode がビルド時だか何だかのタイミングでプロダクト名とか環境に応じたパスとかに置…

Beta 版の Xcode で開いたプロジェクトが現行 Xcode で起動しなくなった場合の対処法

NDA があるので Xcode のバージョンがいくつとか、環境の細かいことは省きますが(そしてこの問題が他の環境でも起きているのか、起きているとしてこの対処法が通用するのかは不明ですが)とりあえず僕のところでは以下で直りました。 Xcode を閉じる(Beta…

ひとつのプロジェクトで複数の Bundle identifier を使い分ける方法

インハウスビルド用のエンタープライズアカウントとリリース用アカウントがある場合、 com.shu223.hoge(リリース用の Bundle ID) com.shu223.hogeep(エンタープライズ用の Bundle ID) といった感じで、同じアプリでありながら、2つの Bundle identifier …

In-App Purchase の脆弱性への対応方法

巷を騒がせている In-App Purchase の脆弱性問題ですが、iOS Developer Library に対策方法についての記事が掲載されていました。 「自分とこのサーバーから App Store サーバーにレシート送ってチェックしているタイプのアプリはいいけど、そうじゃない場合…