Jeffsuke is not a pen.

🏊‍♂️🚴‍♂️🏃‍♂️💻📱

Engineering

CallKitを用いたSystem Calling Screenの実装

背景 WWDC16でVoIPアプリでもiOSネイティブのUIを使えるようになりました。これまでは、Push通知からユーザーにアプリを開いてもらう必要がありましたが、サードパーティ製アプリでもネイティブアプリのUIを開けるようになったことで、より一貫した体験を提…

「よくわかるAuto Layout」を執筆した話

先日、私の執筆した「よくわかるAuto Layout」が発売されました。とても貴重な経験ができたと思うのでまとめようと思います。 経緯 はじまりは、2015年元日。新しいメモ帳に「本を書く」と目標を書いたことでした。他にも目標があって、ベンチプレスの自己記…

よりWWDC2015を楽しむために

WWDC2015が来週から開催されるので、より楽しむためのTipsをまとめてみる。 サンフランシスコ この時期は東京よりとても寒い。シリコンバレーの陽気な天気から考えられない位寒いので、ジャケット必須だ。 日本と比べるともちろん治安の悪い地域はある。SOMA…

Gunosy for Apple Watchができるまで

Gunosyが2015/05/27にApple Watch meetup @ HillsGarageを開催した。 私にとっては初めての参加者100人近いイベントだったので学びが多かった。 Apple Watch meetup @ HillsGarageを開催しました。 発表内容 Gunosy for Apple Watchができるまで from Yusuke…

iOSバージョン分岐の話

iOSのバージョンによる分岐を参考にバージョン分岐を実装したのだが、上手く行かなかったので対応策含めて書く。 iOSでは主に、[UIDevice currentDevice].systemVersionを用いてバージョン判定する方法と、NSFoundationVersionNumberマクロを使ってバージョ…

iOSで動画ストリーミング。簡単で十分なやり方。

動画ストリーミングを実装する機会があったので、まとめる。 やり方は大きくわけて2つ HTTP Live Streaming Media Player framework 前者を用いた場合の再生方法は AV Foundation framework OpenAL framework などがあります。 やりたいこと UITableViewCel…

Qiita API v2 Hackathonに参加してきた:写真撮ってQiita Teamにアップロード

このエントリーは、株式会社リクルートテクノロジーズ Advent Calendar 2014の17日目です。 2014/12/13、リクルート本社サウスタワーで行われた Qiita API v2 Hackathon で、QiitaSnapなるアプリを作り発表させていただきました。 商品はとても豪華。以下の…

忘れないでGCD(復習しよう)

このエントリーは、iOS Advent Calendar 2014 の 2日目です。 2日目なので、Swiftとかではない送りバンドな記事で行きます。 非同期処理が多く求められるモバイルアプリ開発の現場では、ReactiveCocoaやRxJava等のFrameworkが注目を浴びている。 しかし、意…

iOSの、画面遷移時のメモリリークが止まらなかった話

先日、画面遷移時にメモリが開放されず、徐々にメモリ利用率が上昇する現象に苦しまされた。 Instrumentsで調べてみても、リークは見られなかった。何が問題だったのか。それはdispatch_afterを用いたループするアニメーションだった。 dispatch_afterや、NS…

UINavigationControllerの戻るを消し、別のボタンで戻る

ViewDidLoadにて以下のメソッドを呼ぶ。 UINavigationController上の戻るボタンが消える。 [self.navigationItem setHidesBackButton:YES]; 対象となるIBAction内で以下を呼ぶ。 [self.navigationController popViewControllerAnimated:YES]; 結果、以下のよ…

Today Extensionを実装してみた。

Today Extensionはウィジット Today ExtensionはiOS8から導入されたウィジットを通知画面に設置する機能です。アプリの機能を拡張するExtensionの一つです。あまりに情報が少なくてハマったので、ブログに書いておきます。 Appleのドキュメントが一般公開さ…

SwiftでUIBlurEffect実装してみた

SwiftでUIBlurEffectを実装してみた。 iOS7の登場と共に複数のライブラリが出現した。 iOS-blur FXBlurView ios-realtimeblur iOS8では、動的にぼかしエフェクトを生成できるUIBlurEffectが追加されたため、今後はこれが主流になってくるだろう。 import UIK…

Xcodeにて、SchemeのデバイスがMy Mac 64-bitしか選択できなくなった時の対処法

Xcodeを使っていて、よくSchemeのデバイスがMy Mac 64-bitしか選択できなくなる。 アプリのBundleIDをXcode上で変更した時などに発生する。 また、iPhone用ビルドを実施するのは非常に簡単。 まず、Edit Schemeを立ち上げる すると、RunのExcutableがNoneに…

Objective-CとTDD

このエントリーは、TDD Advent Calendar 2013 の 6日目です。 ある日友人に「iOSアプリを作る人はあまりユニットテストしない」と言われた。自分もあまり書いた事はなかった。よく職場とかで言われるのは、 ユニットテストを書く工数>受けられる恩恵 iOSア…

サブビューのUILabelの高さに合わせて、TableViewCellの高さを変更したい時。

CGSize size = [string sizeWithFont:[UIFont boldSystemFontOfSize:11] constrainedToSize:CGSizeMake(width, 2000) lineBreakMode:UILineBreakModeWordWrap]; [lbNotice sizeToFit];