Objective-C/Swift/iOS

Swiftのオブジェクトグラフを生成する flock を作った

Swift で定義されたオブジェクト間の依存関係を可視化する flock というツールを作った。これによって、 Swift で書かれたコードベース全体を把握しやすくなったり、リファクタリング時に影響範囲を把握しやすくなる。 Usage Homebrew からインストールでき…

コード署名・証明書

iOS開発で頭を悩ます問題のひとつに、コード署名や証明書の問題がある。Code Signing Errorなどのような単語で検索すると、どのように問題を解決するのか、どのような手順で証明書を発行しXcodeに設定するのか、といった情報がたくさん返ってくる。しかし、…

Timepiece 1.0.0をリリースした

最初のバージョンはSwiftが出た2014年だった。それ以降、細かな機能追加やバグ修正を繰り返し、0.5.0でSwift 2.3、0.6.0でSwift 3に対応した。どこかのタイミングで多くのStar、issueがつくようになり、多くのユーザーが使ってくれるようになった。 そして昨…

CocoaPodsにコントリビュートした

開発中のiOSアプリでCocoaPodsでインストールしたライブラリのライセンス表示を実装する際に、とある理由でライセンスに表示したくない状況があった。いろいろ調べたところ、CocoaPodsが出力するPods-{ProjectName}-Acknowledgements.plistにMITといったライ…

通信周りの処理をミドルウェアで整理する

課題感 APIリクエストの送信前、APIレスポンスの取得後にさまざまな処理をはさみたいことがある。例えば、こんな処理だ。 ネットワークインジケータの表示・非表示 リクエストとレスポンスのロギング 二重送信の防止 ログイントークンが有効期限切れだったと…

Xcodeのカラーパレットを作るコマンドをSwiftで書いた

clrというコマンドラインツールをSwiftで書いた。上のスクリーンキャストにあるようにXcodeで使うカラーパレットをターミナルから作成できる。 近年ではStoryboard(かつてはXib)がどんどん進化しているので、見た目に関する設定はコードじゃなくてStoryboa…

型消去を用いたSwiftによるリポジトリパターンの実装

リポジトリパターンとは リポジトリはオブジェクトの参照を取得するのに必要なロジックをすべてカプセル化するためのパターンです。 Domain Driven Design Quickly 日本語訳 iOSアプリ開発の文脈では、オブジェクトをWeb APIから取得するのかRealmから取得す…

try! Swiftに参加してきた

http://www.tryswiftconf.com/ 3/2~3/4の三日間、try! Swiftというカンファレンスに参加してきた。 33セッション * 30分という超濃密な構成で過去参加したカンファレンスの中でも最も充実した内容だった。特に、下のようなトピックが多かったような印象があ…

SwiftCSVをフルスクラッチした

おととしSwiftCSVというCSVをSwiftで扱うためのライブラリを作った。 けっこう思いつきで作ったので、あんまりちゃんとパースできないし、思ったよりissueがたくさん来てつらくなってしまったので、放置していた。仕事でもSwiftをまったく書けずにいて、Swif…

HIGで推奨されているアラートをSwiftで効率的に組み立てる

最近、Swiftにおけるエラーハンドリングについて興味をもっている。エラーハンドリングの中でアラートを組み立てて表示するコードをよく書いたり、目にしている。アラートを実装する際に気をつけているのは、ユーザーが目にしたときになるべく怒らせないよう…

FriendlyErrorType

新しいエラーハンドリング Swift 2でthrowを使ったエラーハンドリングが新たに導入された。従来のNSErrorを使ったエラーハンドリングの問題点は、メソッドにNSErrorポインタの代わりにnilを渡すことで無視できてしまうことだった。新たに導入されたエラーハ…

Timepieceを0.4.0にアップデートした

naoty/Timepiece Timepieceを0.4.0にアップデートした。ぶっちゃけブログの記事にするくらいならちゃんとCHANGELOGにしろという話なんだけど、技術的な詳細も少し話したいのでブログの記事にした。軽微なバグの修正と以下の2点が今回の変更点だ。 タイムゾー…

「すごいHaskell たのしく学ぼう!」を読んだ

すごいHaskellたのしく学ぼう!作者: Miran Lipovaca出版社/メーカー: オーム社発売日: 2012/09/21メディア: Kindle版購入: 4人 クリック: 9回この商品を含むブログを見る 本書は一度は8章あたりで挫折したが、今回13章あたりまで読みファンクタ―、アプリカ…

#potatotips でTimepieceについて発表した

potatotips 【第17回】potatotips(iOS/Android開発Tips共有会) (2015/05/13 19:00〜) 資料 最近のTimepiece GW前あたりから急激にバズってきた。一時GitHubのトレンドで1位になった。それまでは☆70くらいだったけど、もうそろそろ☆500になりそうな勢いだ。 …

Timepieceを0.2.0にアップデートした

naoty/Timepiece Swiftの日付操作ライブラリであるTimepieceに機能を追加し0.2.0にアップデートした。また、1ヶ月くらい前からしれっとCocoaPods(現在はまだrc版)をサポートしたのでCocoaPodsからインストールできるようになってる。 NSDate <-> Stringの…

MDCSwipeToChooseを読んだ

前回に引き続き、UI周りのテクニックを学ぶためhttps://github.com/modocache/MDCSwipeToChooseを読む。海外で話題のTinder風のアプリを簡単に開発することができる。 まず使い方を簡単に見ていく。 override func viewDidLoad() { let options = MDCSwipeTo…

SlackTextViewControllerを読んだ

UI周りの理解を深めるため、Slackが公開しているhttps://github.com/slackhq/SlackTextViewControllerを読む。コミット番号は9fcf06ac6f7004e4aacb6536b375d1cb03f08289だ。 全部はさすがに読みきれないので、以下の気になるポイントに集中してコードを読ん…

pod installしたらgit cloneしてくれるヤツ書いた

ghqを使ったローカルリポジトリの統一的・効率的な管理について - delirious thoughtsを拝見して良さそうだったので、iOS開発にも持ち込むためCocoaPodsのプラグインを書いた。20行くらいしか書いてないし、ghqとの連携もまだ実装できてないけど、取り急ぎ。…

ストリームを利用したローパスフィルタの実装

このスクリーンショットに映された2つの線は共にiPhoneの加速度センサーの値を表しており、下の緑が加工していない生データ、上の青い線がローパスフィルタという仕組みで揺れを除去したデータだ。 以前の記事でSwiftを使ったストリームの実装をしてみたのだ…

マシなiOSアプリのフォームを実装・デザインする

普段iOSのフロント寄りの実装やデザインについて手が着けられていなかったけど、Xcode6の新機能のおかげでそっちも興味がでてきたので、ログインフォームを想定してiOSアプリのフォームの設計について本気出して考えてみた。 最もシンプルなフォーム メール…

SwiftでNSDateを簡単に扱うライブラリを書いた

Swiftの実験的なプロジェクトとしてActiveSupportの拡張っぽく直感的に時間を扱うライブラリ"Timepiece"というものを書いた。 naoty/Timepiece · GitHub demo let today = NSDate.today() let tomorrow = NSDate.tomorrow() let dayAfterTomorrow = tomorrow…

Alamofire/**/*Tests.swiftを読んだ

前回Alamofireの実装を読んだので、ついでにテストコードも読んでみた。 $ tree -P "*Tests.swift" -I .git . ├── Source └── Tests ├── DownloadTests.swift ├── ParameterEncodingTests.swift ├── RequestTests.swift ├── ResponseTests.swift └── UploadT…

Alamofireを読んだ

Alamofireとは https://github.com/Alamofire/Alamofire Swiftで書かれたHTTP通信ライブラリ。 AFNetworkingの作者であるmatttさんの新作。 AFNetworkingをリプレースするものではなく、AFNetworkingはSwiftでも安定して動くのでそのまま使えるとのこと。(…

PromiseKit/swiftを読んだ

PromiseKitとは http://promisekit.org/ iOSプログラミングで頻繁に出てくる非同期処理を簡単かつエレガントにするライブラリ。 JavaScriptとかでおなじみのPromiseパターンの実装と、各種CocoaフレームワークからPromiseを使うための拡張が含まれている。 O…

APNsの概要と関連ツール群

Apple Push Notification Service(APNs)は、ソフトウェア開発者(プロバイダ)から受け取ったメッセージを安全な方法でデバイスにプッシュ通知するサービスである。 プッシュ通知までの流れ プロバイダはデバイストークンとペイロードから成る通知メッセー…

iOS用グラフ描画ライブラリを書き始めた

卓球ハウスに来てから楽しすぎてコード書いてないことに気づいたので、なんか書こうと思った。最近はセンサーのデータをどうにかiOSに転送したくていろいろ試しているのだけど、送られたデータを表示するときに何かとグラフを描画したくなる。 iOSでグラフを…

ちょっとしたiPadアプリを作った話

シンプルなBGMアプリほしい— なおてぃーさん (@naoty_k) 11月 23, 2012 好きな曲のyoutubeのリンクをHerokuとかにアップしておいて、iPadでそれらをリストを取得してエンドレスで聞けるようにしたい— なおてぃーさん (@naoty_k) 11月 23, 2012 ↑というのを思…

書評:iOS SDK Development

iOS SDK Development作者: Chris Adamson,Bill Dudney出版社/メーカー: Pragmatic Bookshelf発売日: 2012/10/22メディア: ペーパーバック クリック: 3回この商品を含むブログを見る iPhoneアプリの開発を担当しそうな気配を感じ取ったので、8月後半からぼち…

plistから数値を読み込む

NSString *path = [[NSBundle mainBundle] pathForResource:@"places" ofType:@"plist"]; placesDictionary = [[NSDictionary alloc] initWithContentsOfFile:path]; NSArray *places = [placesDictionary objectForKey:@"places"]; NSDictionary *place = […