yashigani?.days

週刊少年ジャンプについてだらだら書きます

iOS

UITableViewでレイアウトの違うセルをどう扱うか #関モバ

iOS

毎月恒例の関モバ #8に参加しました. kanmoba.connpass.com 今回は,UITableViewで複数のレイアウトを持つセルをどう扱うかというトークをしました. speakerdeck.com 骨子としては,UITableViewで複数のレイアウトを持つセルを実装するとき,いくつかの方…

顕在化するmainBundleリスク

iOS

iOS向けのアプリケーションやライブラリで画像やローカライズファイルなどのリソースを使うとき,bundleという仕組みを利用します. bundleはアプリケーションやライブラリに組み込まれ,実行時に各リソースファイルとの橋渡しをします. 例えば,ローカライ…

SwiftでNS_OPTIONSスタイルのEnumを実現する

Swiftのenumは便利ですが,たまには使い慣れたNS_OPTIONSスタイルのenumを作りたくなるときがあります. 素朴にやるとこのように実装できます. /// My Options enum Options: UInt { case None = 0 case A = (1 << 0) case B = (1 << 1) } しかし,これでは…

CocoaPodsのPrivate Specsを作るときにしておきたいちょっとした工夫

外部に公開できないライブラリが増えてくるとPrivate Specsが欲しくなります. Podfileを丁寧に書けば依存関係を解決できますが,Private Specsを使うと依存関係の解決をCocoaPodsに任せることができるので,podspecを利用する際やPrivateなpodspecに依存し…

CocoaPods0.36をExtensionで使うときに出る警告を抑制する

App Extensionを実装する際,本体のアプリとコードを共有したいことがあります. コード自体をExtensionのターゲットに追加することもできますが,メンテナンス性や複数のアプリで使い回すことを考慮すると,Embedded frameworkとして実装し,各々で取り込む…

Share ExtensionでOpen URLするとかなんとか

iOS

注意: beta 5時点での情報です iOS8で追加される待望のApp Extensionですが,あくまでExtensionなのでContaining appを呼び出したくなることがあると思います. App Extension Programming Guideにもあるように,App ExtensionとContaining appとの連携にはS…

今日も一日がんばるぞい for iOSつくった

pic.twitter.com/M4nBoJTJ7S / http://t.co/Q2RoEON5KT #NEWGAME!— チキンとタイカレー (@yashigani) 2014, 7月 25 昨日の昼休み同僚の好感度を上げるためにNEW GAME!っていうクソ萌えマンガ読んでた. NEW GAME!めちゃくちゃ萌えて,とにかく最高という感じ…

2014夏マストバイなプロトタイピング本の紹介

iOS

photo by CannedTuna 最高のアプリを作るには実際にプロダクトを触ったユーザからのフィードバックが不可欠です. しかしながら,ユーザからのフィードバックはプロダクトが完成してからしか得ることはできません. モバイルアプリの競争が激しくなった昨今…

Remote Notificationのアラートをリセットする

iOS

プッシュ通知でおなじみのRemote Notificationですが,使用するときにはプッシュ通知を送っていいか確認するアラートが表示されます. アプリを普通に使う上では特に困りませんが,開発をしているとこのアラートをもう一度表示したい,ということがあります…

おすすめiOS App情報です

iOS

pic.twitter.com/rK9PL4Xir5— チキンとタイカレー (@yashigani) 2014, 3月 6 pic.twitter.com/7v9wlPLOwA— チキンとタイカレー (@yashigani) 2014, 3月 6 pic.twitter.com/hgvrBiVjsV— チキンとタイカレー (@yashigani) 2014, 3月 6 pic.twitter.com/2Ptd52u…

OCMockでNSManagedObjectをstubする

NSManagedObjectのプロパティをstubしようと思ってめっちゃはまった. こんな風に普通にstubしようとしてもstubできない. // こんなNSManagedObjectのサブクラスがあるとする // @interface Event : NSManagedObject // @property (nonatomic, retain) NSDa…

Objective-Cが好きになるTips & Hackを勝手に補足

TLで見かけたこのスライド,いいところをついていてちょっとObjective-Cをやったことのある人が,もっと興味を持つきっかけを作るにはすごく良いスライドだと思った. Objective-C が好きになる Tips & Hack from Taketo Sano けど,内容を見た感じ初学者を…

Cocoa関西勉強会#54でTDDについて話してきました #cocoa_kansai

最近TDDやってて意識高まりまくってるので,TDDについてCocoa勉強会関西#54でTDDについて発表してきました. 個人の感想レベルの発表なのでTDDモヒカンの方は斧をおさめてください. スライドはこちらです. スターお待ちしています. あと,サンプルに出し…

真心込めてipa作るのがめんどうになったのでRake書いた

iOS

TestFlight大変便利なのだが,毎回毎回真心込めてipaを作ってアップロードするがダルすぎたので,Rakefileを書いた. なんでMakeじゃないかというと,なんとなくMakeよりRakeのほうがオシャレみたいな風潮あるから. プロジェクト固有の部分さえ書き直せば使…

Stop-Walking-iPhoneが組み込まれた「Ninja Tryst」リリースされてます

iOS

この前作った,Stop-Walking-iPhoneを組み込んでもらったアプリがリリースされてます! すっかり告知を忘れていた こちらのアプリです! Ninja TrystKohei Yoshizawaエンターテインメント無料 公式サイトはこちら いかにも怪しげなアプリなんですが,実際中…

最近はやってるNSLogの書き方

2014年のご時世になっても,やはりprintfデバッグはそのお手軽さとあいまってよく使われる. Objective-Cでの開発でもそれは御多分に洩れずそんな感じで,NSLogを埋め込んで変数の様子をコンソールに出力する. viewのheightなどを表示したいとき, CGFloat …

Pull requestしたらローカライズ依頼された

iOS

CocoaPodsで読み込んだライブラリの著作権情報画面を自動生成してくれるVTAcknowledgementsViewControllerというライブラリを試してみた. 面倒な画面を自動生成してくれるのは大変よいのだけれど,こんな感じでコードを埋め込まないと使えない. UIViewCont…

古来よりobjcプログラマはstringByAddingPercentEscapesUsingEncoding:がウソもんやということに悩まされてきたけど,普通にJSのencodeURI()使えばよかったんちゃうんかということに気づいた

モバイルアプリにWebとの連携は不可欠なわけで,iOSエンジニアがWeb APIを使うとき最初にどないすんねん!とぶつかる問題がパーセントエンコーディングだと思う. 我らがNSStringにはそれを解決するためのstringByAddingPercentEscapesUsingEncoding:という…

Cocoa勉強会関西に参加してきました

Cocoa勉強会関西#53に参加して,こないだリリースしたStop-Walking-iPhoneについて話してきました. スライドはこちらです. ライブラリの紹介だけだとアレなので,M7とUIKit Dynamicsを使うときのポイントについても軽く話しました. 自前のUIパーツにUIKit…

子どもを守るためのライブラリをリリースしました

iOS

最近歩きながらスマホを使う人よく見ますね. 夢中で駅のホームに落ちちゃったとかいう話題もあって,社会問題化しつつあります. そんな歩きスマホは自分の身が危険に晒されるだけではありません. みなさんの目線より50cmくらい低いところを一生懸命歩いて…

Tweetbot 3 likeなimage viewerを作りました

iOS

yashigani/YSViewer · GitHub Tweetbot 3のimage viewerがかっこよすぎたので再現しました.Tweetbotと同じ感じでグニグニ動かせますし,えいって投げることもできます. Tweetbot 3 for Twitter (iPhone & iPod touch)Tapbotsソーシャルネットワーキング¥30…

UIWebViewのユーザーエージェントを取得する

iOS

役にたったので共有しておきます. NSString *userAgent = [[UIWebView new] stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; リクエストを発行しなくてもJSの実行できてちゃんとユーザーエージェントも取得できた. iOS 7ならloadとかで…

UIWindowを使ってオレオレアラートを表示する

iOS

アラートっぽいのを表示するライブラリを作りたくなって,UIWindowを使ってみた. なんでwindowを使ったかというと,普通にviewにaddSubview:するのだと常に前面に表示されている保証が無いし,ライブラリのくせに自分の管理してないviewの階層をいじくるの…

CFNetworkのラッパーを書いた

シンプルなCFNetworkラッパーを公開します 色々事情があって,CFNetworkのラッパーを書いて棄てたので公開します. CFNetworkとは Cocoa/Cocoa touchではNSURLConnectionっていうクラスがあって,基本的にはそれを使ってHTTPなどの通信をします. Foundation…

Cocoa関西勉強会#49に参加した

Cocoa関西勉強会#49に参加して,マルチスレッドプログラミングについて話してきました. スライドは以下 Cocoa関西勉強会#49 from yashigani 本当に伝えたかったこと キャンセル必要なら迷わずNSOperationQueueを使え セレクタのことは嫌いになってもNSOpera…

UIの改良が高評価につながらなかった話

せっかくいい感じにアップデートしたのにレビューが荒れまくってるクックパッド.アップデートが通知されてさらっと流した感じは「あー流行りのUIをいい感じに研究して取り入れてて参考になるなー」と思っていた. 「これで荒れるとかUXってのはめちゃめちゃ…

GCD すごい

iOS には,iOS4.0 から GCD っていう非同期処理の仕組みが入ったんだけど,今までこれという活かしどころがなくて使っていなかった ちょうどいい感じの活かしどころが出てきたのでここぞとばかりに試してみた. 音楽再生するアプリで自分の iPod Library か…