GitHub ActionsでのJestのテスト実行時に失敗箇所をPRへのアノテーションとして表示するレポーター

このような便利なパッケージがありました。 GitHub Actionsにはworkflow commandsと呼ばれる、echoコマンドと特定の形式の文字列を使うことでActionsの処理に一部介入できる機能があります。その中にはファイルの特定の箇所(行・カラム)にdebug/warning/er…

AndroidのFirebase Installations version 16.2.0で追加されたlintチェックがAndroid Gradle plugin 3.6と互換性がなくてビルドできない

Firebase OSSのこちらのIssueで報告されているように、Android Gradle plugin 3.6(Android Studio 3.6)以上のプロジェクトでFirebase Installations version 16.2.0が依存性に入るとlintでビルドが失敗するようになります。 追加されたlintというのはこち…

Swift 5.2

iOS 13.4とXcode 11.4と共にSwift 5.2がリリースされましたね。 Swift.org - Swift 5.2 Released! SE-0249 Key Path Expressions as Functions 関数・クロージャが要求される箇所でKeyPathリテラルを書くとKeyPath型ではなく関数・クロージャを返してくれる…

OkHttp 4.xと3.xでのバイナリ非互換の事例

Kotlinで書き直されたOkHttp 4.xはJavaで書かれた3.xと基本的にソース互換性・バイナリ互換性が保たれているが、バイナリ非互換でクラッシュするケースに遭遇した。https://t.co/ZE0VV1Gkwm— Sho Ikeda (@ikesyo) 2020年2月17日 具体的には、「OkHttp 3.xのJ…

GitHub Actionsのcheckoutアクションがv2でいろいろ変わって便利になっていた

GitHub Actionsをそこそこ使っている今日この頃です。さて、Actionsといえば普遍的に使う、リポジトリをチェックアウトする actions/checkout がありますが、このアクションがv2になり、色々と挙動が変更・改善されてい便利そうなのでいくつかご紹介。 https…

和暦と改元とうるう年が組み合わさったバグの思い出

iOS

あけましておめでとうございます。新年一発目の投稿は2019年の思い出です。 そういえば去年面白かったバグで、とある有効期限チェックで、2019年8月から半年後の月末が2020年2月末、つまり閏年なので2月29日になるのだけど、よくある和暦バグと組み合わさっ…

2019年のSwiftモック事情

こんにちは、id:ikesyoです。これは はてなエンジニア Advent Calendar 2019 17日目のエントリーです。 昨日12月16日(月)に行われた 年末だよ Android/iOS Test Night - 2019 にて、『2019年のSwiftモック事情』という発表をしました。 Swiftでテストのた…

Android公式のDagger導入ドキュメント

Android Dev Summit 2019の文脈でAndroid公式のDaggerに関するドキュメントやCodelabが出てきて取っ付きやすくなった感じがします。いいですね。 Dagger basics | Android Developers Using Dagger in Android apps | Android Developers Using Dagger in mu…

iOSDC Japan 2019でXCFrameworksのLTをします

iOS

こんにちは。iOSDC Japan 2019の0日目参加のため東京に上陸しております id:ikesyo です。明日1日目の16:15からTrack Bで『5分でわかる!Xcode 11から使えるXCFrameworks』というタイトルでLTをします。 どういう内容かは紹介文を読んでいただきつつ、先月行…

CI/CD Test Night #4で、Swift製ライブラリのLinux対応 with Travis CIについて発表しました

Test Nightに初めて参加してきました(iOSやCI/CDも含めて)。普段は概ねiOSやSwift関係の勉強会・カンファレンスへの参加がメインなので、異なる軸での勉強会の参加するのは新鮮で楽しかったです(けど結構スマホアプリ絡みやBitriseの話も出ていた)。 発…

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であることがよく分からないですよね。 SPM: 🤨🚫Swift PM: 🤨🤨🚫SwiftPM: 👌✅— Ankit Aggarwal (@aciidb0mb3r) 2018年6月14日 (@aciidb0mb3rさんはAppleの人で、Swift Package Managetの主要開発者の一人です)

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— いけし…