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 と記述することを推奨します。

WWDC 2017に参加してきます

iOSアプリ開発を始めてから8年目にして初めてWWDCに当選し、ただいまサンノゼにやってきています。

初のアメリカ、初の海外一人旅と不安も色々ありますが、この一週間を充実したものにしていきたいと思います。それでは楽しいWWDCウィークを!👋

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

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

遡って今年の1月に apple/swift-corelibs-foundation集中的に取り組んだ結果、Swiftのコミット権を得ました(もう3ヶ月前じゃん!)。

とは言ってもC++コンパイラーのコードが書けるわけではなく、標準ライブラリーやFoundationおよびそのOverlayなど、Swiftで書ける範囲での活動が主になりますが、Swiftの改善に少しでも貢献していきたいと思います。

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

おはようございます。id:ikesyoです。本日から3月4日までの3日間、東京・渋谷で開催されるtry! Swiftカンファレンスのトップバッターとして登壇します。

http://www.tryswiftconf.com/

はてなからはid:cockscombも登壇し、二人体制で臨んでいます!

developer.hatenastaff.com

今朝になってついに緊張してきましたが、とにかく滅多にないこの機会を楽しみたいと思います。では会場でお会いしましょう! ?

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にもご期待ください!

Carthage 0.13/0.14をリリースしていました

前回のエントリーに引き続き、Carthage 0.13 および 0.14をリリースしていました。どちらもバグFixメインのリリースですが、0.13ではcarthage other-commandとすると$PATHに存在するcarthage-other-commandを実行するという、いわゆるサブコマンドの機構を実装しました。Carthageのプラグイン的なツールを作るのにぜひ活用してもらえればと思います。

ikesyo.hatenablog.com

今後もリリース時には内容紹介のエントリーを書いて日本語での説明を増やしていきたい所存です!

Carthage 0.12をリリースしました

昨年のエントリーに書いたように、Carthageのコミッターをしているid:ikesyoです。もう3日前になりますが、最新バージョンの 0.12: All Your Frameworks Are Belong To Usがリリースされました!?

今回のリリースで大きなトピックだと個人的に思う以下の3つを紹介します。

Carthage will now build all frameworks from all the projects in the repository

これまでCarthageでは、Dynamic frameworkのShared schemeを含む、ディレクトリ階層で最初に見つかった.xcodeproj/.xcworkspaceのプロジェクト1つだけをビルドの対象としていました。https://github.com/ankurp/Dollar.swiftのような複数.xcodeprojによって複数のframeworkを提供するようなリポジトリとは相性が悪かったのですが、0.12ではDynamic frameworkのShared schemeを含んでさえいれば、全てのプロジェクトがビルド対象になるよう変更、改善されました。

archive now accepts multiple framework names and will archive all the frameworks from the current repository if no names are given

archiveコマンドはCarthage/Build以下にあるframeworkをまとめたzipファイルを生成するコマンドです。生成したzipファイルをGitHub Releaseに添付することで、Carthageがビルド済みバイナリーとしてそのframeworkを利用することができるようになっています。

これまでこのコマンドはcarthage archive Himotokiのように、アーカイブ対象のframework名を必ず1つだけ指定する必要がありました。それが0.12からはcarthage archive Cent Dollarのように複数のframework名を指定することができるようになりました。

またcarthage archiveとパラメーターを指定しないと、現在のプロジェクトのframeworkを全てアーカイブする(依存先のframeworkは含まない)、という使い方もできるようになっています。この場合の対象はcarthage build --no-skip-currentとしてビルドされるようになるものと同一です。1つ目の変更と合わせて使いやすくなったのではないかと思っています。?

この変更は私が実装したものになります ?

build, checkout, and update now take an optional list of dependencies

最後の1つです。今まではcarthage updateとして全ての依存ライブラリーをアップデートすることしかできませんでしたが、これも0.12からarchiveコマンドと同様に、carthage update Alamofire ReactiveCocoaのようにアップデート対象を指定することができるようになりました。

build, checkoutコマンドもこの改善をしていて、carthage build Alamofireのように特定のfraemworkのみを再ビルドすることもできます。これらはかなり以前から要望されていたものだったので、実装、リリースすることができてとても嬉しいですね。

この変更も私が実装しました ?


すでに幾つかバグが報告されているため、近々0.12.1もリリースされると思います。Carthageユーザーの皆様におかれましてはバグ報告や要望など何かあれば、リポジトリのissueだけでなく、Twitterなどでも連絡いただければ確認しますのでお気軽に!