タグ

ブックマーク / qiita.com (28)

  • SwiftのOptionalのベストプラクティス - Qiita

    それでは、『SwiftのOptionalのベストプラクティス』というタイトルで発表します。 #swtws pic.twitter.com/OJfz2tk4sP — koher (@koher) 2017年4月15日 2 年程前、 Qiita に『SwiftのOptional型を極める』というタイトルで投稿をしました。内容は、 Optional とは何かという説明と、 Optional の使い方を合わせたものでした。 しかし、 Swift 1 だった当時と比べると Optional 周りの状況は大きく変わり、特に使い方の部分が適切ではなくなってきました。また、僕のSwift経験値もたまって、新たな知見も蓄積されてきました。 今回の投稿では、 Swift の Optional 周りを整理し、いつ・どのように Optional を使うべきか、僕の考えるベストプラクティスを紹介します。 全体を通し

    SwiftのOptionalのベストプラクティス - Qiita
    bricklife
    bricklife 2017/04/26
    書きまくってて耳が痛い→「Optional に対して flatMap を書きたくなったら、 Optional binding で代替できないか一度考えてみましょう」
  • SwiftのライブラリをiOS 7で使うためにダミーのFrameworkを作ってimportをごまかす - Qiita

    前置き 最近のオープンソースなSwift製ライブラリは、Embedded Frameworkとして使うことを前提としているものが多いです。それらをiOS 7対象のプロジェクトで使う場合にはソースコードを直接取り込むしか方法がないのですが、他のライブラリに依存しているライブラリは、コード中にimport DependentLibraryやDependentLibrary.SomeClassなどと出てくるので、そのままでは使うことができません。 「RxSwiftをiOS 7で使う」のようにプロジェクトに直接取り込む方法を用意しているライブラリはそれを使います。そうでないライブラリの場合はソースコードの改変が必要になります。しかし、importだけならソースコードを改変せずにごまかすことができるんじゃないかと思いました。 要するに、例えばimport DependentLibraryと書かれてい

    SwiftのライブラリをiOS 7で使うためにダミーのFrameworkを作ってimportをごまかす - Qiita
    bricklife
    bricklife 2016/06/03
    Swift製ライブラリを改変しないでiOS 7で使うというネタです。APIKitには使えたけどReactiveCocoa 4はダメだった…
  • RxSwiftをiOS 7で使う - Qiita

    RxSwiftに付属のサンプルプロジェクト「RxExample」にはiOS版とOS X版があって、その中の一つにDynamic Framework(その用途からEmbedded Frameworkとも呼ばれる)ではなく、RxSwiftのソースコードを直接プロジェクトに追加する形で構成されている「RxExample-iOS-no-module」というターゲットがあります。 そこで用いられているやり方を使って、RxSwiftをDynamic Framework非対応のiOS 7で使ってみます。 RxExample-iOSとRxExample-iOS-no-moduleの違い RxSwiftとRxCocoaのソースコードがプロジェクトに追加されている import RxSwiftやimport RxCocoaを無効にするフラグをつけてビルドされている 一部のObjective-CのコードをBri

    RxSwiftをiOS 7で使う - Qiita
    bricklife
    bricklife 2016/05/25
    iOS 7でもソースコードの書き換えなどせずに動きました
  • 新入社員が来てメンターになれって言われたけど、どうすればいいのかという対話テクニック - Qiita

    エンジニア組織を強くするためのを出版しました Qiitaでエンジニアリングをめぐる様々なコミュニケーションの問題とその解決策や考え方を書いてきた。それらの背後にあるエッセンスをこの度書籍として出版するに至りました。 エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング この書籍は、エンジニアリングを「不確実性を削減する」という第一原理で捉え直し、様々なエンジニアリングとその間のコミュニケーションをめぐる現象を説明していくものです。 はじめに 最近、メンター制度として新入社員や若手のメンバーに対して、先輩をつけて相談事に乗ってあげたり、仕事のサポートをしたりといったような教育プログラムを組む企業が増えています。このメンターという役割は、ちょっとした訓練が必要だったりするのですが、このあたりの研修や訓練をせずにいきなり明日からメンターね!なんてことがままあります。

    新入社員が来てメンターになれって言われたけど、どうすればいいのかという対話テクニック - Qiita
    bricklife
    bricklife 2016/05/10
    子供の教育みたいだ→「「答え」がわかっていても「答え」をいうことは避けたほうがいいです。人は、不思議なもので「問いかけ」られると答えようと頭が動きます」
  • RxSwiftで昇竜拳 - Qiita

    仕様の簡略化 実装を楽にするために仕様を簡略化しています。 入力猶予フレームは全入力間で7フレームに固定する(小昇竜の仕様) 同時押しはサポートしない 押しっぱなしやニュートラルは考慮しない 格ゲーのコマンド判定ロジックって、ちゃんと考えると結構複雑ですね…。 実装 extension ObservableType where E == 入力 { func 昇竜拳(scheduler: SchedulerType) -> Observable<[E]> { return self .scan([]) { Array(($0 + [$1]).suffix(4)) } .timeout(8 / 60, scheduler: scheduler) .retry() .filter { $0 == [.右, .下, .右下, .パンチ] } } } 「ズンドコキヨシ with RxSwift」のと

    RxSwiftで昇竜拳 - Qiita
    bricklife
    bricklife 2016/04/23
    意外とこういう小ネタが勉強になるなー
  • ズンドコキヨシ with RxSwift 最終版と試行錯誤の歴史 - Qiita

    前作「ズンドコキヨシ with RxSwift」は、とりあえずサクっとRxSwiftで書いてみたバージョンだったので、ちゃんと動いてはいるもののいくつか不満がありました。 出力がdoOnNextとsubscribeCompletedに分かれている 終了判定のために流のストリームを変形している リズム感アップのためにキ・ヨ・シ!前にタイミング調整をしている scanを使っているところにRxっぽさが欠けるw 上記を解消しようと色々試行錯誤した結果、できたのが以下です。自分の中ではこれを最終版としました。 import Foundation import RxSwift enum ズンドコ: UInt32 { case ズン case ドコ } let ズンドコ川 = Observable<Int>.interval(0.5, scheduler: MainScheduler.instance

    ズンドコキヨシ with RxSwift 最終版と試行錯誤の歴史 - Qiita
    bricklife
    bricklife 2016/03/30
    飽きずにズンドコしてました。ご査収ください
  • #Swiftならこう書くシリーズ - Qiita

    John さんの Swiftならこう書くシリーズ 10選 を拝見して、こう書いたらもっと楽しくなりそうと思ったところがあったので、補足もしつつ紹介してみようと思います。 この記事は上記のブログみたいに「Objective-C と対比して分かりやすく」みたいには書いていないので少し難しい感も漂いますけど、ブログを読んだ後の次のステップとして読んでもらえたら幸いです。 10. 配列の操作ならSwiftの SequenceType メソッドを使用する Swift の配列は SequenceType という仕組みに則って作られています。それと同時により配列らしい性質を提供する CollectionType という仕組みにも則っています。せっかくの配列なら CollectionType も合わせて注目すると、もっと楽しくなりそうです。例題に出てくる indices も CollectionType

    #Swiftならこう書くシリーズ - Qiita
    bricklife
    bricklife 2016/03/25
    各項目について丁寧に掘り下げてあって非常に面白い
  • Swift 2.2で警告が出るようになった後置インクリメントをdeferに置き換える - Qiita

    Swift 2.2から++や--を使っていると警告が出るようになりました。 SE-0004 Remove the ++ and -- operators ++は変数の前に書くか後ろに書くかで挙動が変わるし、もうみんな使わないよね?ということらしいです。

    Swift 2.2で警告が出るようになった後置インクリメントをdeferに置き換える - Qiita
    bricklife
    bricklife 2016/03/24
    超どうでもいい小ネタを投稿しました
  • Swiftで文字列または数値のみを許容する型を作ってDictionaryのキーとして使う - Qiita

    JSONRPCKitという、SwiftでJSON-RPC 2.0を扱うライブラリを作っているときに必要になったので作ってみました。 文字列または数値のみを許容する型を作る JSON-RPC 2.0のidは文字列か数値をとる仕様なので、その制限を型で表現してみました。以下のようにenumを使うと簡単です。 public enum RequestIdentifier { case NumberIdentifier(Int) case StringIdentifier(String) } extension RequestIdentifier { public init?(value: AnyObject) { switch value { case let number as Int: self = .NumberIdentifier(number) case let string as St

    Swiftで文字列または数値のみを許容する型を作ってDictionaryのキーとして使う - Qiita
    bricklife
    bricklife 2016/03/08
    小ネタを投稿しました
  • RxSwiftのカレンダー | Advent Calendar 2015 - Qiita

    URLYou can post either your article on Qiita or your blog post. About reserved postingIf you register a secret article by the day before the same day, it will be automatically published around 7:00 on the same day. About posting periodOnly articles submitted after November 1 of the year can be registered. (Secret articles can be registered anytime articles are posted.)

    RxSwiftのカレンダー | Advent Calendar 2015 - Qiita
    bricklife
    bricklife 2015/12/07
    おお、RxSwiftもAdvent Calendarあったのか。まだ埋まっていないからなんか書くかー
  • Apple TVのtvOSについてざっくりとまとめた! - Qiita

    tvOSの発表 日時間きょう(2015/09/10)未明に発表されたtvOS。iPhone6sなどの発表もありましたが、Apple TVがアップデートされ、サードパーティー製アプリが開発できるようになったことが個人的には一番興味がわいたので調べてみました。 新しいApple TV、だいぶ肉厚ですね。高さ倍くらいあるのか...? 新しいほうが10mm背が高いみたいです。 なお、ここに記載している内容はデベロッパーアカウントを保持していなくても閲覧可能なページ、ドキュメントを参考に書かれています。 開発に必要なソフト SDKなど こちらにあります。ひとまずここからいろいろな情報がゲットできると思うので、興味がある場合はブックマークしましょう。 https://developer.apple.com/tvos/ SDK こちらのページでSDKやらtvOSのベータやらをダウンロード可能です。 h

    Apple TVのtvOSについてざっくりとまとめた! - Qiita
    bricklife
    bricklife 2015/09/10
    TVML! デジタルテレビのデータ放送を記述する言語BMLを思い出すな…
  • [Objective-C] Blocksがややこいのでまとめてみる - Qiita

    色々ややこしいBlocks。 宣言の仕方から、内部実装まで色々と調べたりしたのでメモ。 基形 まずは基形。

    [Objective-C] Blocksがややこいのでまとめてみる - Qiita
    bricklife
    bricklife 2015/08/03
    voidだから省略できると思ってた…!「Block内のreturn文を読み取ってその値を返り値の型としてくれる」
  • Objective-CのランタイムAPIをReactiveCocoaで解説する - Qiita

    iOS Advent Calendar 2013 14日目担当の @ikesyo です。 Function Reactive Programming Framework - Reactive Cocoa | Cocoaの日々情報局 iOS - ReactiveCocoaについて - Qiita [キータ] ReactiveCocoaのまとめ資料 - Qiita [キータ] Objective-C - ReactiveCocoaに出てくる用語の整理 - Qiita [キータ] [iOS]ReactiveCocoaFramework入門 | アドカレ2013 : SP #11 といった感じで今年1年で大分有名になってきた感がある ReactiveCocoa というリアクティブプログラミングライブラリーがあります。 このエントリーではその中でもObjective-CのランタイムAPIの利用箇所に

    Objective-CのランタイムAPIをReactiveCocoaで解説する - Qiita
    bricklife
    bricklife 2015/07/27
    知らなかった…「実はKVOも上記のような動的サブクラス生成・インスタンスのクラス変更を行っており、KVOの対象となったインスタンスはランタイム上で NSKVONotifying_ というプレフィックスが付いたクラスになっています」
  • [翻訳]プログラマの生産性の壊し方 - Qiita

    George Stockerの「How to destroy Programmer Productivity」の翻訳です(Georgeさんには報告済み)。 間違いがございましたら、ご指摘お願いします。 プログラマの生産性に関する次の画像は、インターネット中を徘徊しています。 ザ・シンプソンズが出てきそうだけれども、「真実だから面白い」。 私は、今まで生産的になる秘密について解明してきませんでした。それは、主には、私が一貫して生産的ではなかったからです。Joel on Softwareのジョエル・スポルスキは、ブログの記事でこのことについて話しています: 時々私は何も終わらせることができなくなります 確かに、私はオフィスに入って、10秒ごとにe-mailをチェックして、ウェブを読んで、アメリカン·エキスプレスでの支払いのようないくつかの頭を使わないタスクを処理します。しかし、コードを書くフロ

    [翻訳]プログラマの生産性の壊し方 - Qiita
    bricklife
    bricklife 2015/07/08
    3時間続けてコーディングできたご褒美がハッカーニュースやTwitterの閲覧…
  • iOSアプリ開発の現場で訊いてみた!メルカリ編 - Qiita

    突撃隣の六木ヒルズ!@yimajoです。 iOSアプリ開発者に最近の開発スタイルを訊いてまわる「iOSアプリ開発の現場で訊いてみた」待望の7社目に行ってきました。 今回はフリマアプリのメルカリ社。 最近六木ヒルズにオフィスを移転したとのことで広くて新しいオフィスでした。 訊いてきたこと インタビューに応じてくださったのはメルカリ社のiOSアプリ担当の@ooba、 @yam86、Androidアプリ担当の@operandoOSでした。 インタビュアーは過去インタビューに応じてくださった@kishikawakatsumiにも同席お願いしました。 執務室に入る前のエントランスはこんな感じ 古いテレビがあったり... 緑の自転車...? 執務室にはいるとバーン!とカフェっぽい Q.メルカリ社に入った経緯を教えてもらえますか? @ooba もともと仕事としてはWindowsアプリを作ったり 個人

    iOSアプリ開発の現場で訊いてみた!メルカリ編 - Qiita
    bricklife
    bricklife 2015/06/17
    最後のゲームショップのくだりがいい話
  • iOSアプリのビルドに使ったXcodeのバージョンを調べる方法 - Qiita

    昔リリースしたアプリが、どのバージョンのXcodeでビルドされたものなのか調べる必要があったので、その方法をまとめておきます。 結論 ipaファイルを解凍すると出てくるInfo.plistのDTXcodeを見ればOKでした。 手順 iTunesでダウンロードするなりして、調べたいアプリのipaファイルを手に入れる 念のためコピーしてから、拡張子を.ipaから.zipに変更する ダブルクリックして解凍する Payloadフォルダの中にあるアプリを右クリックして「パッケージの内容を表示」する 中に入っているInfo.plistをダブルクリックで開く(要Xcode) DTXcodeの値を見る。0632だったらXcode 6.3.2でビルドされている 備考 アプリをiTunesでダウンロードした場合、iTunesの「マイ App」の中から該当アプリを右クリックして「Finder で表示」でipa

    iOSアプリのビルドに使ったXcodeのバージョンを調べる方法 - Qiita
    bricklife
    bricklife 2015/06/17
    小ネタ書きました
  • Gaurun〜A general push notification server in Go〜 - Qiita

    Go Conference 2015 Summerでトークが採択されたこともあるので、自分が所属している会社で開発しているプッシュ通知サーバであるGaurunをOSSで公開しました。詳しくは2015年6月21日開催のGo Conference 2015 Summerで・・・というのもアレなので軽くGaurunについて紹介します。 メルカリのプッシュ通知システムの構成と変遷 昨年9月にメルカリに入社した当時、メルカリのアプリ内で発生したイベントのプッシュ通知処理はすべてPHPで書かれたAPIサーバ上で同期処理(!)として実装されていました。例えばAPIサーバにコメント書き込みのリクエストが来たらコメントのデータをDBに書き込んだ後プッシュ通知を行ってクライアントにレスポンスを返す、という具合にです。 当然のことながらスマートフォンアプリでよく利用されるAPNSやGCM(あるいはAmazon

    Gaurun〜A general push notification server in Go〜 - Qiita
    bricklife
    bricklife 2015/05/12
    汎用プッシュ通知サーバ「Gaurun」の紹介記事
  • Realm の createOrUpdateInRealm:withObject: の挙動調査 - Qiita

    Realmはバージョンが0.01上がっただけで大幅に機能が変わったりするらしいので要注意です → http://www.slideshare.net/ryugoo/impression-of-realm-java 検証用モデル 検証用にプライマリキーを持つCompany、プライマリキーを持たないLocation、プライマリキーを持ちCompanyとLocationとリレーションがあるPersonの3つのモデルを定義しました。 class Company: RLMObject { dynamic var id = 0 dynamic var name = "" dynamic var phone = "" override class func primaryKey() -> String! { return "id" } } class Location: RLMObject { dyna

    Realm の createOrUpdateInRealm:withObject: の挙動調査 - Qiita
    bricklife
    bricklife 2015/02/26
    先日の #realm_jp で質問したあるメソッドの挙動のまとめです
  • Realm for Swift まとめ完全版 - Qiita

    platform :ios, '8.0' source 'https://github.com/CocoaPods/Specs.git' pod 'Realm' > pod install Analyzing dependencies Downloading dependencies Installing Realm (0.90.5) Generating Pods project Integrating client project [!] From now on use `sample001.xcworkspace`.

    Realm for Swift まとめ完全版 - Qiita
  • JSON<->NSManagedObjectのマッピングを簡単に!Mantleを使ってCore Dataのソースコードをシンプルにする - Qiita

    JSON<->NSManagedObjectのマッピングを簡単に!Mantleを使ってCore DataのソースコードをシンプルにするObjective-CiPhoneXcodeiOS 概要 JSONをProperyに変換する作業を一つずつ手動でコーティングするのはかなり手間だと思います。 その作業を楽にするために今回使用するMantleやその他にJSONModelなどを使ってマッピングを極力自動でできるようにしている方は多いのではないでしょうか? この便利な仕組みをCore DataのNSManagedObjectでも利用できないかなと思い調べてみた際のログです。 結論から言うとMantleは既にNSManagedObjectにも対応しています。 これができれば例えばサーバからJSONで受け取った値を自動でNSManagedObjectにマッピングして登録することがとても簡単になります。

    JSON<->NSManagedObjectのマッピングを簡単に!Mantleを使ってCore Dataのソースコードをシンプルにする - Qiita