タグ

ブックマーク / jarinosuke.hatenablog.com (17)

  • Swift のコードレビューで気をつけていること - jarinosuke blog

    Swift での iOS アプリ開発 徐々にですが、でも確実に色々な場面で Swift のコードを見る機会が増えてきたことを実感します。 iOS の設計思想など大枠の部分では Objective-C での知見は生きてきます。 しかし Swift の言語仕様についても知っておかないと ついつい低きに流れて Objective-C ぽい Swift になってしまいがちです。 Swiftコードレビュー そこで Swift らしく Swift の良さを活かしたコードにするためにコードレビューの話になるわけです。 iOS 開発全般におけるコードレビューについては以下のブログにまとまっているので省きます。 iOSアプリケーション開発のコードレビューで気をつけていること - ninjinkun's diary また記事を書くにあたって Swift コードレビューを調べていて良いものがまとまっていた

    Swift のコードレビューで気をつけていること - jarinosuke blog
  • 実践 Auto Layout - jarinosuke blog

    今こそ frame 思考脱却の時 Xcode 4 / iOS 6 から存在していた Auto Layout でしたが、 当時は Interface Builder の Auto Layout 対応も中々ひどく、使うのが辛かった記憶があります。 そんななか僕は順調に layoutSubviews に傾倒していったわけですが、 iPhone 6/iPhone 6 plus がついに登場し、Size Class という新しい概念も投入され 現状では間違いなく2年前とは比べ物にならないレベルで Universal アプリは作りやすくなりました。(ただし iOS 8 専用アプリのみ) ある程度のデザインパターンを懐に用意していた方が時間が省けます。 ここでは Auto Layout を用いたレイアウトに関するユースケース毎に簡潔に書いていますので、 「それ知ってるわ」みたいなのがあったら適宜読み飛ば

    koogawa
    koogawa 2014/10/08
    メモ
  • iOS 8 で設定アプリ内にあるアプリの設定へ遷移させる - jarinosuke blog

    設定アプリへの遷移 ローカル通知や位置情報の Always と WhenInUse の二種類の認証、 HealthKit など、 iOS 8 では iOS 7 よりも多くのユーザの許可が必要な情報が増えたように思います。 しかし、ユーザに初回のアラートで拒否されてしまうと iOS 7 まででは アプリ自身が設定画面へ遷移させて再度許可してもらう方法はありませんでした。 設定アプリへ非公開のカスタムスキームを用いて遷移させるという手法もありましたが。 iOS 8 での設定画面への遷移方法 iOS 8 ではアプリが何かしらのカスタマイズ設定を保持している場合、 設定アプリ内にアプリ毎の設定ルートビューができました。 そのビューに以下のメソッドを実行する事で遷移する事が出来ます。 [[UIApplication sharedApplication] openURL:[NSURL URLWithS

    iOS 8 で設定アプリ内にあるアプリの設定へ遷移させる - jarinosuke blog
    koogawa
    koogawa 2014/10/07
  • UIScrollViewKeyboardDismissMode について - jarinosuke blog

    出たままのキーボードをスクロールされたら良い感じに閉じる iOS 純正アプリの Messages みたいなキーボードの挙動をやりたいなー、と調べていました。 どういう挙動かというと、 キーボードが出ている状態でスクロールダウンすると、それに伴ってキーボードも下がる ドラッグしながら下げるのをやめて上にあげるとキーボードも戻ってくる と、大変インタラクティブな挙動になっているのです。 まぁここまでやらなくとも、せめてスクロールビューへのドラッグなどのジェスチャーを検知して キーボードを dismiss したいと思いました。 iOS 7 以前 iOS 7 より前では、簡単に実装するとすればスクロールビューに以下のようなことを していてフックしていたかなと思い出しました。 UIGestureRecognizer をスクロールビューに付与してイベントを取得 UIScrollViewDelegate

    UIScrollViewKeyboardDismissMode について - jarinosuke blog
    koogawa
    koogawa 2014/08/16
  • UIView の Animation Block の中で行われている事 - jarinosuke blog

    Animation Block iOS 4 から UIView のアニメーションを簡単にするために、以下のアニメーションに関するクラスメソッドが UIView に追加されました。 iOS 開発に携わってる人ならみんな知ってると思います。 + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations; + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion; + (void)animateWithDuration:(NSTimeInterval)durati

    UIView の Animation Block の中で行われている事 - jarinosuke blog
    koogawa
    koogawa 2014/07/09
  • CADisplayLink について - jarinosuke blog

    ユースケース CADisplayLink を実際に使う例と共にどんなクラスなのか簡単に紹介します。 例えば現在時刻を表示する場合。 画面に表示されている日時を定期的に更新する必要があります。 そのような場合に NSTimer で 0.01 秒など適当なインターバルを設定して更新、みたいなこと実装した経験ありませんか? 僕はあります。 それを解決するための表示されているビューを更新するためのイベントを取得するためのクラス、それが CADisplayLink です。 最近 facebook が OSS 化した pop や、長年 iOS の 2D ゲームフレームワークとして親しまれている cocos2d でも、もちろん使われていました。 facebook/pop cocos2d/cocos2d-iphone CADisplayLink の使い方 CADisplayLink を以下の様にしてセット

    CADisplayLink について - jarinosuke blog
    koogawa
    koogawa 2014/05/01
    思いっきり NSTimer でやってたのでこんど試してみたい
  • iOS 7.1 から iAd 経由でのアプリインストールのコンバージョン計測が可能に - jarinosuke blog

    コンバージョン計測 iOS 7.1 から以下の API が iAd.framework に追加されています。 iOS 7.1 API Diffs ADClient - (void)determineAppInstallationAttributionWithCompletionHandler:(void (^)(BOOL appInstallationWasAttributedToiAd))completionHandler NS_AVAILABLE_IOS(7_1); この completionHandler を登録しておくと、 iAd 経由でユーザがアプリをインストールした場合に発火するといった具合です。 また設定において、Limit Ad Tracking を行い、広告トラッキングをオプトアウトしている場合には appInstallationWasAttributedToiAd が

    iOS 7.1 から iAd 経由でのアプリインストールのコンバージョン計測が可能に - jarinosuke blog
    koogawa
    koogawa 2014/03/13
    - (void)determineAppInstallationAttributionWithCompletionHandler:を使えばいいのか!
  • iAd 実装が iOS7 から恐ろしく簡単になってる件 - jarinosuke blog

    iAd on iOS 7 iOS 6 までは iAd を表示しようとすると、ADBannerView をインスタンス化して layout してなど色々と面倒でした。 iOS 7 では iAd.framework に以下のカテゴリが追加されています。 UIViewController (iAdAdditions) これを用いる事で、今までのような煩わしいことをほとんど気にせずに iAd を表示する事が出来る様になります。 ユースケース毎に見ていきましょう。 バナー広告を表示したい 以下のプロパティをセットするだけ。 ///(1)フレームワークをimport @import iAd; ///(2)初期化時などに self.canDisplayBannerAds = YES; これだけでバナーが画面下に表示されます。 Interstitial 広告を表示したい 事前準備として以下を実行すると I

    iAd 実装が iOS7 から恐ろしく簡単になってる件 - jarinosuke blog
    koogawa
    koogawa 2014/03/11
    いろんな広告試してるけど、iAdのデザインが一番シャレオツ
  • メモリ管理・レイアウトの観点からみた UIViewController の view の扱い - jarinosuke blog

    self.view iOS 開発において、UIViewController の view の振る舞いは一番理解しておきたい点の一つです。 今回はその view に対して、メモリ管理とレイアウトの2つの視点を交えてアプローチを行い、 UIViewController の subclass を作成する上で、 UIViewController の各メソッドにどんな処理を書くべきか、そして何を書くべきでないか を説明出来ればなと思っています。 iOS 6 以降からを対象として考えていますので、 iOS 5 以前は取り扱いません。 self.view の振る舞い 扱いを学ぶには、まず対象の振る舞いを把握する事からです。 ライフサイクルとレイアウトサイクルの2点から簡単に復習します。 self.view のライフサイクル UIViewController の view がどのようなタイミングで生成され

    koogawa
    koogawa 2014/01/31
    “viewDidLoad 全記述原理主義者を目撃した際は…” Σ(゚Д゚;)ギクッ
  • コーディング規約要らずの Objective-Clean - jarinosuke blog

    コーディング規約 プログラミングを行う上でコーディング規約は一つの指針になり、 定める事でそれをもとにコードレビューなどの場で指摘などがし易くなります。 Objective-C で、しかも公開されているだけでも、ざっと探してみてこれだけの量があります。 企業 Apple Google Github NYTimes Adium Bitbucket RobotsAndPencils 開発者 Raywenderlich Marcus Zarra Sam Soffes CocoaDevCentral Luke Redpath これだけの量のコーディング規約があることからも分かりますが、 それぞれの中で定められている事柄には、結構なばらつきがあるものも多いです。 そのような環境の中で、以下のような事象が発生してしまうのも事実です。 コーディング規約を定めたものの、守れないコードが生まれてしまう コー

    コーディング規約要らずの Objective-Clean - jarinosuke blog
    koogawa
    koogawa 2014/01/29
  • CGGeometry 啓蒙活動 - jarinosuke blog

    コードを用いてのレイアウト処理 iOS 6 から Auto Layout が導入され、レイアウトに関するコードを書く機会が ずいぶんと減ってきていると思いつつもなかなか減らない今日この頃。 最後の砦となるのはやはり以下の2メソッドでしょう。 //UIView - (void)layoutSubviews; //UIViewController - (void)viewDidLayoutSubviews; 上記2メソッド内でコードを用いて様々なレイアウトを行うわけですが、 今回はその中でのコーディング作法として CGGeometry をもっと使って読みやすくできるよ! という事を知って欲しくて書きました。 CGGeometry CGGeometry というと聞き慣れないですが、CGRect や CGPoint, CGSize などの構造体と、それを取り巻くマクロ関数を含めた総称です。 CGG

    CGGeometry 啓蒙活動 - jarinosuke blog
    koogawa
    koogawa 2014/01/28
    CGRectOffsetとCGRectInset知らなかった!8行が1行になるのすごいw 使おう
  • Xcode 4 からはじめる Unit Testing - jarinosuke blog

    テストを書く。 最近、色々なプロジェクトで Jenkins をはじめとした継続的インテグレーション(CI)という単語を良く聞くようになりました。 僕自身といえば、iOS 開発では 「Xcode 4 から Unit Test 全面サポートがはじまった!」位しかキャッチアップできていませんでした。 なので開発中にデグレが発生したりすると、モデルから一つずつデバッグを繰り返して、気付いたら2時間経ってるみたいなことも多々ありました。 何してるんだろうみたいな感じになって、流石に危機感を覚えたので一旦手を止めて Xcode 開発に所謂今流行っているテスト手法を組み込もうと思いました。 今回は初歩の初歩ということで、Xcode に付属されている Unit Testing フレームワークである SenTestKit を用いた単体テスト環境の構築を行います。 全てを通して Xcode は 4.3 を使用

    Xcode 4 からはじめる Unit Testing - jarinosuke blog
  • JRNPasteboardMonitor をつくりました - jarinosuke blog

    JRNPasteboardMonitor [JRNPasteboardMonitor] monitoring UIPasteboard changes even if your app state is in background. https://t.co/HmJov7VYk6— CocoaPods (@CocoaPods) 2013, 10月 22 ペーストボード監視 ここ最近(といっても半年〜1年前位から)、辞書やURL共有のためのアプリでペーストボードを用いた他アプリとの連携が流行ってきているように思っていました。 というのも iOS では他アプリとの連携が Android などに比べて制限が厳しく、その中で Custome Scheme や Keychain Service などを用いて実装することが一般的です。 そのような環境下のなかで、ペーストボードのコピーイベントを元にした

    JRNPasteboardMonitor をつくりました - jarinosuke blog
    koogawa
    koogawa 2013/12/06
  • アプリの情報をアイコンにオーバーレイさせる方法 - jarinosuke blog

    potatotips に参加しました #potatotips というクックパッドで開催された iOS / Android の tips 共有会に昨日参加してきました。 普通の勉強会とは少し毛色が違い、参加者全員が5分間の tips を発表を行うという形式で、皆さん主体的に会に関わる事ができるような仕組みになっていたのかなと後から感じました。 僕も以下の資料を発表させていただきました。 発展 上記のスライドの最後に発展編として単純にアプリアイコンを出し分けるのではなく、既存のアイコンに対してアプリケーションの情報をオーバーレイさせて動的に作成できる事例を紹介しました。 しかし時間の関係で具体的なスクリプトの紹介は省いてしまっていたので、この記事で紹介します。 紹介 アプリの情報をアイコンにオーバーレイさせる方法は具体的に以下のリンクで紹介されています。 Overlaying applicat

    アプリの情報をアイコンにオーバーレイさせる方法 - jarinosuke blog
    koogawa
    koogawa 2013/11/15
    開発中のアプリアイコンに「Production」「Sandbox」等の情報をオーバーレイさせ、見分けをつけやすくするTips。これは便利!
  • 退職しました - jarinosuke blog

    ヒトは、辞める— Naoki Ishikawa (@jarinosuke) 2013, 10月 11 2010年4月新卒入社以来、約3年半勤めたヤフー株式会社を退職しました。 いままで 就職活動当時を思い出してみると右も左も分からない状態で、エンジニアとしてスタート地点にも立てていませんでした。 それでも趣味で齧った程度の iOS 開発経験と、少しばかりの虚栄心を交え「ソーシャルなことをしたいです!アプリ作りたいです!」と採用面接時に言った事を覚えています。 今思えば大ボラ吹きも良い所です。 幸いにも縁があってヤフーに入社することができ、入社前の自分では想像すらできない程の、以下のような貴重な経験をさせて頂きました。 Yahoo!メッセンジャーの Mac クライアント追加開発 新規メッセージングアプリ「Circle」 iOS アプリ開発 KakaoTalk 日向け機能の iOS アプリ開

    退職しました - jarinosuke blog
    koogawa
    koogawa 2013/10/12
    おつかれさまでした!
  • 中級者向け iOS デバッグ Tips - jarinosuke blog

    導入 iOS 開発者のみなさん、こんにちは。 このブログでは主にチュートリアルだったりフレームワークの紹介みたいなことを書いてきました。 そこで、たまには中級者向けのエントリを書いて「Xcode バリバリ使って、ビシバシ Objective-C 書いてますよ」アピールします。 iOS 開発をはじめて一通り Framework は理解したけど Xcode 使いこなせてる感が足りない方、夢にまで EXC_BAD_ACCESS が出てくる方に参考になる記事となればと思います。 といっても Xcode はマッシブな IDE なので、4つのデバッグツールに分けて「あれ、それ知らなかった!便利じゃん!」な方法を紹介します。 ブレークポイント デバッグには切っても切れない関係ですね。アプリを実行中に指定した行で処理を中断し、そこからステップ実行で細かいデバッグを可能にしてくれます。 ショートカットキー

    中級者向け iOS デバッグ Tips - jarinosuke blog
    koogawa
    koogawa 2013/01/25
    "po"すごいな"po"
  • cocos2dを用いてiPhone上で至極シンプルなゲーム作成チュートリアル - jarinosuke blog

    はじめに ここ1,2ヶ月、cocos2dというフレームワークでゲームの開発をしています。 ただあまり日語のドキュメントが整っておらず、英語のwikiやウェブサイトを色々巡回していました。 なかなかversionなどの関係でクラス名が変わっていて、つまらない所でハマったりなど、無駄な時間がかかったりしてしまいました。 そんななかとても良い入門記事を見つけ、内容的に飛び抜けて分かりやすく素晴らしい記事だったので、つたない英語で翻訳させてもらいました。 ボリューム的にはかなり多いのですが、「ゲーム制作をしてみたい」、という気持ちだけあればこなせるように設計されているチュートリアルなので興味がある方は是非最後まで読んで欲しいです。 以下 How To Make A Simple iPhone Game With Cocos2D Tutorialの邦訳記事です。 How To Make A Sim

    cocos2dを用いてiPhone上で至極シンプルなゲーム作成チュートリアル - jarinosuke blog
    koogawa
    koogawa 2011/07/02
    これはわかりやすい
  • 1