Xcode 11で導入されるxcframeworkのディレクトリ構造

WWDC19でお目見えしたXcode 11ですが、ライブラリ・フレームワークの配布形態として .xcframework という新しいフォーマットが導入されています。 https://developer.apple.com/documentation/xcode_release_notes/xcode_11_beta_release_notes/#3318305 XCF…

EpoxyでのモデルのID重複時の挙動

https://github.com/airbnb/epoxy/wiki/Epoxy-Controller#filtering-duplicates デフォルトではEpoxyは何もしなくて、DiffUtilが重複IDのものは無視するが、その時の動作は未定義、という感じの模様 Epoxy側で重複IDを検知して、後に登場したものを弾く(先…

LinuxのSwift 5.1で、NSNumberなどがComparableになってDarwinとソース互換がなくなる事例

というバグレポートを起票しました。 https://bugs.swift.org/browse/SR-10798 原因となったswift-corelibs-foundationのPRがこちらです。 Parity: NSSortDescriptor & _CFSwiftArrayReplaceValues by millenomi · Pull Request #2234 · apple/swift-corelib…

Java Cryptography Extension(JCE)と、AndroidのBouncy Castleと、Spongy Castle

社内のSlackでSpongy Castleという名前を聞いて、知らなかったので少し調べてみました。 AndroidはJavaのJava Cryptography Extension(JCE)の仕組みに則っている AndroidではJCEのプロバイダーとしてBouncy Castleが提供されている Androidに乗っているBou…

CocoaPods 1.7.0からSpecsのソースにCDNを使えるようになります

先日リリースされたCocoaPods 1.7.0.beta.1で、実験的機能としてSpecsのソース(パッケージ定義であるpodspecファイルのセントラルリポジトリ)にCDNを利用できるようになりました。 CocoaPods 1.7.0 Beta! - CocoaPods Blog 今までは、ソースとして https:/…

RawValueがIntのenumを何かのインデックスとして使いたい時はhashValueじゃなくてrawValueを使いましょう

そうそう遭遇はしないと思いつつ、Swift 4.2になるとハッシュシードのランダム化により問題が起き得ます。 RawValueがIntのenumであっても、rawValueがそのままhashValueではなくなる Swift 4.1までは、rawValue == hashValueという挙動だった(実装依存) …

CocoaPodsにtest_specというのがあるのを今更ながら知った

CocoaPods 1.6.0 Betaのブログ記事(2018年8月)を今更ながら読んでいたら、s.test_specという定義ができるのを遅まきながら知った。 CocoaPods 1.6.0 Beta Begins! - CocoaPods Blog 1.3.0で追加された機能だった CocoaPods 1.3.0 — Test specifications an…

2018年振り返り

1月: 記憶にございません 2月: 妻が平昌オリンピック(フィギュアスケート女子)の観戦に行っていて寂しかったです 3月: try! Swift Tokyo 2018に参加、ワークショップ講師をさせてもらいました try! Swift Tokyo 2018でOpen Source Swift Workshopの講師を…

React NativeとTypeScript 3.1の相性が悪い

相性が悪いというかStyleSheet.create周りで型エラーになってしまう。 github.com github.com Bugラベルは付けられていて、TypeScript 3.2を待つ必要がありそう。

Swift 4.2のBatch Modeについて

https://swift.org/blog/swift-4-2-released/ でSupport for batch mode compilation resulting in faster build timesと言及されているものについて。 この件はWWDC 2018のセッションでも紹介がありました: https://developer.apple.com/videos/play/wwdc20…

iOSDC Japan 2018でCarthageのLTをします #iosdc

こんにちは。すでに会社のDeveloper Blogでも公開されていますが、iOSDC Japan 2018でCarthageの最新情報についてLTをします。 https://fortee.jp/iosdc-japan-2018/proposal/860ac149-eb9b-4208-85b4-899ed5804db2 2018/09/02 16:15〜 Track A(5分) iOSア…

Swift Package Managerの略称はSwiftPMが推奨

SPMという表記をたまに見かけるけど、Swiftであることがよく分からないですよね。 https://twitter.com/aciidb0mb3r/status/1007293445168250880 (@aciidb0mb3rさんはAppleの人で、Swift Package Managerの主要開発者の一人です)

NimbleでSwiftコンパイラーのバグ(リグレッション)に遭遇した話

Xcode 10 beta 1(Swift 4.2)でNimbleのthrowAssertion()/raiseException()マッチャーなどを使うとランタイムクラッシュする事象が発生して、その成り行きが面白かったのでここに記します。 ここまで 現象: Objective-Cで定義するメソッドで、引数のクロー…

既存iOSアプリへのReact Native導入とcocoapods-fix-react-native

既存iOSアプリへのReact Native導入は公式にドキュメントが用意されている Integration with Existing Apps · React Native その手順に従うと、React Nativeの依存解決にはCocoaPodsを使うようになっている 一方 react-native init で新規にプロジェクトを作…

React Nativeでのクラッシュレポートについて調べてみた

Crash Reporting for React Native apps · Issue #5378 · facebook/react-native · GitHub 雑感としてはSentryがよさそうな雰囲気。App Centerもいいかもしれない。 Crashlyticsとそのラッパー iOS, Androidのネイティブのクラッシュレポートの定番はCrashly…

Pipelineを使うJenkinsで、グローバルの設定でPATHを付け加えたい場合はPATH+EXTRAを使用する

こんばんは。Jenkinsと戯れている今日この頃です。 https://github.com/jenkinsci/workflow-durable-task-step-plugin/blob/0d46ca1475a306abe70250b1b96efaffdf14b763/src/main/java/org/jenkinsci/plugins/workflow/steps/durable_task/ShellStep.java#L60…

swift-llvmがLLVM 6.0に追従した模様

これでSwiftのWebAssembly対応もちょっと捗るのかもしれない? swift-llvmがLLVM 6.0に追従したっぽい? https://t.co/SlBrAqYSFE— いけしょー@本書きました (@ikesyo) 2018年3月10日 元々stable-nextっていうブランチで追従してたのをstableブランチにmerge…

MintでSwiftPM製のCLIツールを管理する

Swift界隈では、Swift Package Manager (SwiftPM) で作られたCLIツールが増えつつあって、それのインストールやバージョン管理をどうしようかという問題がある。一部のツールはHomebrewやCocoaPodsでの配布もしているけど、全ては賄えない。となると各ツール…

SwiftでCLIツールを書くためのArgument Parser

SwiftでCLIツールを書く時のArgument Parser(引数やサブコマンドをいい感じに解釈してくれるやつ)の選択肢を書き連ねておきます。これら以外の良い選択肢をご存知の方はぜひ教えてください Commandant Carthageで使われています(というかCarthageの開発…

Cirrus CIというCIサービスを知った

CI

https://t.co/zjsOmpBksl これで知ったけどCirrus CIというのが出てきてたんですね https://t.co/WooquNGmWc https://t.co/vYIIg0DhYr— いけしょー@本書きました (@ikesyo) 2018年2月14日 OSSプロジェクトなら無料で使える https://t.co/9cGE7mz11y— いけし…

Trailing Closureを禁止する

SwiftLint 0.22で追加された multiple_closures_with_trailing_closure というルールをご存知でしょうか。これは次のような複数のクロージャを引数に取るAPIを使用する時に、最後の引数のクロージャをTrailing Closureとして渡すことを警告するというルール…

Xcodeのブレークポイントで音を鳴らす

Xcodeのブレークポイントでは音を鳴らすことができて、これは結構便利です。例えばシミュレーターの動作を目で確認する一方で、ブレークポイントを通過したかどうかは耳で確認することができます。シミュレーターの画面を見ながらコンソールのログを追うのは…

SwiftのSDK overlayとswift-corelibs-foundation

SDK overlay SwiftのSDK overlayというものを耳にしたことはあるでしょうか?これはSwiftのOSSプロジェクトであるapple/swiftの開発において、FoundationやAppKit、UIKitなどのObjective-Cで書かれたシステムフレームワークに対し、SwiftらしいAPIを提供する…

『iOS 11 Programming』の執筆に参加しました&一般販売開始

技術書クラウドファンディングのPEAKSのプロジェクトとして成立した『iOS 11 Programming』に、執筆陣の一人として参加させていただき、先日完成を迎えることができました。また本日からクラウドファンディング参加者に限らない一般販売が開始されました。 i…

関西モバイルアプリ研究会 in 関東で発表しました #関モバ

普段は京都や大阪で開催されている関モバが東京に上陸した!ということで発表してきました。 UISearchBar / UISearchController は結構カスタマイズしにくかったり、iOS 10とiOS 11で見た目が大きく変わり得たり、iOS 11で追加された UINavigationItem.searc…

Himotoki 3.1.0をリリースしました

WWDC会場のSan Jose McEnery Convention CenterからHimotoki 3.1.0をお届けします。 このリリースではパフォーマンス改善と、Xcode 9への対応(テストコード)が主になります。 Fix perfomance issue caused by Dictionary’s swift_dynamicCast by yudoufu ·…

WWDC 2017に参加してきます

iOSアプリ開発を始めてから8年目にして初めてWWDCに当選し、ただいまサンノゼにやってきています。 初のアメリカ、初の海外一人旅と不安も色々ありますが、この一週間を充実したものにしていきたいと思います。それでは楽しいWWDCウィークを!👋

Swiftのコミッターになりました(なっていました)

https://swift.org/contributing/#commit-access に記載があるように、SwiftのOSSプロジェクトでは、一定の基準を満たすことでコミット権を申請し、得ることができるようになっています。 遡って今年の1月に apple/swift-corelibs-foundation に集中的に取り…

いよいよ本日。try! Swiftカンファレンスで登壇します #tryswiftconf

おはようございます。id:ikesyoです。本日から3月4日までの3日間、東京・渋谷で開催されるtry! Swiftカンファレンスのトップバッターとして登壇します。 http://www.tryswiftconf.com/ はてなからはid:cockscombも登壇し、二人体制で臨んでいます! develope…

Himotoki 1.5.0をリリースしました

このブログでは昨年末の振り返りエントリー位でしか触れていませんでしたが、SwiftでJSONのデコードを簡単かつ型安全に行うことができるHimotokiというライブラリーを昨年の5月から開発しています。 github.com ikesyo.hatenablog.com 先々週にはなりますが…