Objective-C/Swift/iOS
Swift で定義されたオブジェクト間の依存関係を可視化する flock というツールを作った。これによって、 Swift で書かれたコードベース全体を把握しやすくなったり、リファクタリング時に影響範囲を把握しやすくなる。 Usage Homebrew からインストールでき…
iOS開発で頭を悩ます問題のひとつに、コード署名や証明書の問題がある。Code Signing Errorなどのような単語で検索すると、どのように問題を解決するのか、どのような手順で証明書を発行しXcodeに設定するのか、といった情報がたくさん返ってくる。しかし、…
最初のバージョンはSwiftが出た2014年だった。それ以降、細かな機能追加やバグ修正を繰り返し、0.5.0でSwift 2.3、0.6.0でSwift 3に対応した。どこかのタイミングで多くのStar、issueがつくようになり、多くのユーザーが使ってくれるようになった。 そして昨…
開発中のiOSアプリでCocoaPodsでインストールしたライブラリのライセンス表示を実装する際に、とある理由でライセンスに表示したくない状況があった。いろいろ調べたところ、CocoaPodsが出力するPods-{ProjectName}-Acknowledgements.plistにMITといったライ…
課題感 APIリクエストの送信前、APIレスポンスの取得後にさまざまな処理をはさみたいことがある。例えば、こんな処理だ。 ネットワークインジケータの表示・非表示 リクエストとレスポンスのロギング 二重送信の防止 ログイントークンが有効期限切れだったと…
clrというコマンドラインツールをSwiftで書いた。上のスクリーンキャストにあるようにXcodeで使うカラーパレットをターミナルから作成できる。 近年ではStoryboard(かつてはXib)がどんどん進化しているので、見た目に関する設定はコードじゃなくてStoryboa…
リポジトリパターンとは リポジトリはオブジェクトの参照を取得するのに必要なロジックをすべてカプセル化するためのパターンです。 Domain Driven Design Quickly 日本語訳 iOSアプリ開発の文脈では、オブジェクトをWeb APIから取得するのかRealmから取得す…
http://www.tryswiftconf.com/ 3/2~3/4の三日間、try! Swiftというカンファレンスに参加してきた。 33セッション * 30分という超濃密な構成で過去参加したカンファレンスの中でも最も充実した内容だった。特に、下のようなトピックが多かったような印象があ…
おととしSwiftCSVというCSVをSwiftで扱うためのライブラリを作った。 けっこう思いつきで作ったので、あんまりちゃんとパースできないし、思ったよりissueがたくさん来てつらくなってしまったので、放置していた。仕事でもSwiftをまったく書けずにいて、Swif…
最近、Swiftにおけるエラーハンドリングについて興味をもっている。エラーハンドリングの中でアラートを組み立てて表示するコードをよく書いたり、目にしている。アラートを実装する際に気をつけているのは、ユーザーが目にしたときになるべく怒らせないよう…
新しいエラーハンドリング Swift 2でthrowを使ったエラーハンドリングが新たに導入された。従来のNSErrorを使ったエラーハンドリングの問題点は、メソッドにNSErrorポインタの代わりにnilを渡すことで無視できてしまうことだった。新たに導入されたエラーハ…
naoty/Timepiece Timepieceを0.4.0にアップデートした。ぶっちゃけブログの記事にするくらいならちゃんとCHANGELOGにしろという話なんだけど、技術的な詳細も少し話したいのでブログの記事にした。軽微なバグの修正と以下の2点が今回の変更点だ。 タイムゾー…
すごいHaskellたのしく学ぼう!作者: Miran Lipovaca出版社/メーカー: オーム社発売日: 2012/09/21メディア: Kindle版購入: 4人 クリック: 9回この商品を含むブログを見る 本書は一度は8章あたりで挫折したが、今回13章あたりまで読みファンクタ―、アプリカ…
potatotips 【第17回】potatotips(iOS/Android開発Tips共有会) (2015/05/13 19:00〜) 資料 最近のTimepiece GW前あたりから急激にバズってきた。一時GitHubのトレンドで1位になった。それまでは☆70くらいだったけど、もうそろそろ☆500になりそうな勢いだ。 …
naoty/Timepiece Swiftの日付操作ライブラリであるTimepieceに機能を追加し0.2.0にアップデートした。また、1ヶ月くらい前からしれっとCocoaPods(現在はまだrc版)をサポートしたのでCocoaPodsからインストールできるようになってる。 NSDate <-> Stringの…
前回に引き続き、UI周りのテクニックを学ぶためhttps://github.com/modocache/MDCSwipeToChooseを読む。海外で話題のTinder風のアプリを簡単に開発することができる。 まず使い方を簡単に見ていく。 override func viewDidLoad() { let options = MDCSwipeTo…
UI周りの理解を深めるため、Slackが公開しているhttps://github.com/slackhq/SlackTextViewControllerを読む。コミット番号は9fcf06ac6f7004e4aacb6536b375d1cb03f08289だ。 全部はさすがに読みきれないので、以下の気になるポイントに集中してコードを読ん…
ghqを使ったローカルリポジトリの統一的・効率的な管理について - delirious thoughtsを拝見して良さそうだったので、iOS開発にも持ち込むためCocoaPodsのプラグインを書いた。20行くらいしか書いてないし、ghqとの連携もまだ実装できてないけど、取り急ぎ。…
このスクリーンショットに映された2つの線は共にiPhoneの加速度センサーの値を表しており、下の緑が加工していない生データ、上の青い線がローパスフィルタという仕組みで揺れを除去したデータだ。 以前の記事でSwiftを使ったストリームの実装をしてみたのだ…
普段iOSのフロント寄りの実装やデザインについて手が着けられていなかったけど、Xcode6の新機能のおかげでそっちも興味がでてきたので、ログインフォームを想定してiOSアプリのフォームの設計について本気出して考えてみた。 最もシンプルなフォーム メール…
Swiftの実験的なプロジェクトとしてActiveSupportの拡張っぽく直感的に時間を扱うライブラリ"Timepiece"というものを書いた。 naoty/Timepiece · GitHub demo let today = NSDate.today() let tomorrow = NSDate.tomorrow() let dayAfterTomorrow = tomorrow…
前回Alamofireの実装を読んだので、ついでにテストコードも読んでみた。 $ tree -P "*Tests.swift" -I .git . ├── Source └── Tests ├── DownloadTests.swift ├── ParameterEncodingTests.swift ├── RequestTests.swift ├── ResponseTests.swift └── UploadT…
Alamofireとは https://github.com/Alamofire/Alamofire Swiftで書かれたHTTP通信ライブラリ。 AFNetworkingの作者であるmatttさんの新作。 AFNetworkingをリプレースするものではなく、AFNetworkingはSwiftでも安定して動くのでそのまま使えるとのこと。(…
PromiseKitとは http://promisekit.org/ iOSプログラミングで頻繁に出てくる非同期処理を簡単かつエレガントにするライブラリ。 JavaScriptとかでおなじみのPromiseパターンの実装と、各種CocoaフレームワークからPromiseを使うための拡張が含まれている。 O…
Apple Push Notification Service(APNs)は、ソフトウェア開発者(プロバイダ)から受け取ったメッセージを安全な方法でデバイスにプッシュ通知するサービスである。 プッシュ通知までの流れ プロバイダはデバイストークンとペイロードから成る通知メッセー…
卓球ハウスに来てから楽しすぎてコード書いてないことに気づいたので、なんか書こうと思った。最近はセンサーのデータをどうにかiOSに転送したくていろいろ試しているのだけど、送られたデータを表示するときに何かとグラフを描画したくなる。 iOSでグラフを…
シンプルなBGMアプリほしい— なおてぃーさん (@naoty_k) 11月 23, 2012 好きな曲のyoutubeのリンクをHerokuとかにアップしておいて、iPadでそれらをリストを取得してエンドレスで聞けるようにしたい— なおてぃーさん (@naoty_k) 11月 23, 2012 ↑というのを思…
iOS SDK Development作者: Chris Adamson,Bill Dudney出版社/メーカー: Pragmatic Bookshelf発売日: 2012/10/22メディア: ペーパーバック クリック: 3回この商品を含むブログを見る iPhoneアプリの開発を担当しそうな気配を感じ取ったので、8月後半からぼち…
NSString *path = [[NSBundle mainBundle] pathForResource:@"places" ofType:@"plist"]; placesDictionary = [[NSDictionary alloc] initWithContentsOfFile:path]; NSArray *places = [placesDictionary objectForKey:@"places"]; NSDictionary *place = […