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

Xcode 10 beta 1(Swift 4.2)でNimblethrowAssertion()/raiseException()マッチャーなどを使うとランタイムクラッシュする事象が発生して、その成り行きが面白かったのでここに記します。

ここまで

ここから

問題なかったらワークアラウンドのPRはrevertできるのでめでたい(期待)😇。

追記

Xcode 10 beta 2には該当の修正はまだ含まれていませんでした……残念。beta 3に期待。

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

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

Himotoki 3.1.0をリリースしました

WWDC会場のSan Jose McEnery Convention CenterからHimotoki 3.1.0をお届けします。

このリリースではパフォーマンス改善と、Xcode 9への対応(テストコード)が主になります。

Xcode 9で使用できるSwift 3.2 / Swift 4.0では、SE-0166により追加された Foundation.Decodable が Himotokiの Decodable とそのままでは衝突してしまうようになったため、今後は常に Himotoki.Decodable と記述することを推奨します。

Himotoki 1.5.0をリリースしました

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

github.com ikesyo.hatenablog.com

先々週にはなりますが、その最新バージョンの1.5.0をリリースしました。

Release 1.5.0 · ikesyo/Himotoki · GitHub

このバージョンには以下のような変更が含まれています。

  • Linuxでのビルドをサポート(Swift Package Manager1.4.0でサポート済み)
  • build関数をカリー化関数からクロージャーを返す関数に変更(Xcode 7.3/Swift 2.2からの警告に対応)
  • build関数を非推奨に変更(Swift 2からは特に使う必要がない)
  • Extractor.valueOptional/<|?に対してDecodeError.MissingKeyPathのエラーハンドリングが誤っていたのを修正(キーパスが存在していてデコードに失敗した場合でもエラーではなくnilを返してしまっていた)

すでに次のバージョンの開発も進めており、Decodableに準拠しない型への値の変換(Value transformation)のAPIを実装する予定です。今後のHimotokiにもご期待ください!

2015年を振り返ってみる

2015年も残すところあと数時間。aikoの年越しライブ Love Like Pop 18に向かっている途中/開演待ちに書いています。

色んなところで振り返りエントリーが流れているので、自分も振り返ってみようかと書いてみます。

フリュー

昨年10月から業務委託としてフリュー株式会社のとある部署・チームに参画し、Swift/ReactiveCocoaをベースにiOSアプリの開発をしていました。Swiftのバージョンアップへの追従、非同期処理周りをBoltsからReactiveCocoaに置き換えるなどはかなり気合いで進めました。後述しますが、自作のHimotokiというライブラリーもこのアプリで本番投入しています。また環境面ではGitHubでPRベースでのレビュー体制やSlackをそれなりに働きかけて導入してもらったり、4KディスプレイやMBPのスタンドを用意してもらったり、チームメンバーも含めて非常にいい環境で仕事をさせてもらうことができました。

こちらについては去る12月25日が最終出社日でした。1月からの活動には乞うご期待。

関西モバイルアプリ研究会

今年はここへの参加がかなり大きなトピックでした。記念すべき第1回に id:yashigani_w さんから声をかけてもらってLT参加し、以来12月の第9回まで皆勤で参加させてもらっています。これまでTwitterでは知っていたiOS開発者の方々、交流のなかったAndroid界隈の方々と絡む機会ができたのもこの会のお陰です。来年の関モバにも期待していきましょう!

Himotoki

SwiftJSONデコード用のHimotokiというライブラリーを開発、5月に公開しました。それなりの規模のライブラリーを公開したのはこれが初めてで、現時点で300を超えるスターが付いているのはなかなか頑張れたかな、と思っています。関モバでも布教LTをしたり、国内で色んな所で使ってもらえているような話を聞くので、今後もちゃんとメンテナンス、Swiftのバージョンアップ追従を頑張っていく所存です。

ちなみにこれを作るまではObjectMapperというのを使っていたんですが、以下のやり取りで自分で作ってみようと思い立つことができました。@_ishkawa さんに感謝🙏

Carthage/ReactiveCocoa

昨年後半に登場し、今年1年でかなり普及した感のあるCarthageですが、PRを幾つか重ねている内にコミッターになりました。今年6月のことです。

最近のリリースでは結構多くの貢献を自分がしている状態だったりします。今後も開発者のための効率向上を目指してコミッター業をしっかりやっていくつもりなので、バグレポートや分からないところがあればお問い合わせいただければと。

またCarthageにも使われているReactiveCocoaのコミッター業も細々と続けています。元々CarthageはSwift版のRAC 3.0のショーケース/実践投入によるAPI洗練のためでもあったので、RAC側のバグ修正をすることもしばしばありました。RxSwiftだけでなく、RACもぜひぜひ試してほしいですね。

来年

先かと思っていたらあと2ヶ月程度になってしまいました。来る3月2日(水)〜4日(金)に東京・渋谷で行われるtry! Swiftカンファレンスに登壇します!!それも初日のトップバッターというとても緊張する発表順になりました。

国内では初めての大規模なSwiftに関するカンファレンス、それも海外からの多数の登壇者やオープンソース化後初めてのカンファレンスということもあり、非常にエキサイティングな3日間が過ごせるのではととてもワクワクしています。😄

スーパーSwift早割は終わってしまっていますが、まだSwift早割のチケット、また1日チケットも用意されているので、沢山の参加者にお会いできることを楽しみにしています。🙇🏻

まとめ

年越しライブ楽しんでくるぞ!!

関西モバイルアプリ研究会 #5 でCarthageの話をしてきました #関モバ

毎月恒例の関西モバイルアプリ研究会 #5で今回も発表させていただきました。会場と🍻に軽食を提供してくださるはてなさんに多謝 🙏

今回の資料はこちら。

CocoaPodsと並ぶ依存性管理ツールとして普及が進みつつあるCarthageですが、READMEにあまり情報がないCLIのコマンドのオプションや次期バージョンに入る予定の最新動向などについて紹介しました。

以前のエントリーでお話したように、今はCarthageのコミッターとして活動していることもあって現時点で46個ほどのPRを出していました。

今回の発表で知ってもらいたかったことの1つがGitHub Enterpriseのサポートです。

github "https://enterprise.local/ghe/desktop/git-error-translations"

という書き方でgithub.com上のリポジトリと同様にビルド済みバイナリーのダウンロードなどが機能するようになっています。現在 0.8: Llama Calculus が最新リリースですが、こちらは次期リリースに入るはずなのでGitHub Enterpriseを利用しているエンジニア・企業の方々は乞うご期待。

その他皆さんの発表資料などは以下からどうぞ!

kanmoba.connpass.com

おまけ

fabricの発表をしてくださったTwitterの中の方々からスピーカー特典としてスピーカーをいただきました!ありがとうございました!! ✨

関西モバイルアプリ研究会 #4 でLTしてきました #関モバ

第1回から参加させていただいている関西モバイルアプリ研究会 #4でLTをしてきました。なんだかんだでGoogle I/OWWDC 特別会だった#3以外の3回全てで発表できていて嬉しい限りです! 💖

以下が発表スライドです。

OS Xでは以前から使えたものの、iOSではiOS 8からやっと使えるようになったDynamic FrameworkをどうやってXcodeプロジェクトに導入するのか、という選択肢・手順についてまとめてみました。

またiOS 7ではDynamic Frameworkが使えず、そのままではSwift製のライブラリを導入するのが結構辛いのですが、その辺を簡単に導入してくれるCocoaSeedsというツールについても少しだけ触れてみました(まだあんまり知られてない)。

発表後にFrameworkのコード署名周りの話を @griffin_stewie さんとしていたんですが、Frameworkをアプリターゲットに導入する際に“Embed Frameworks”ビルドフェーズの各リスト項目で“Code Sign On Copy”というチェックボックスをオンにしておけば、アプリ用のコード署名設定でFrameworkが再署名されるので、Framework自体のコード署名はiPhone Developerの適当なものでも構わない、という知見を共有することもできたので、発表した甲斐がありました! 😄

次回の関モバ #5は2015/8/26(水)開催とのことでした 🚀

その他皆さんの発表資料などは以下からどうぞ!

kanmoba.connpass.com

itok.jp

usami-k.hatenablog.com

yashigani.hatenablog.com