Swift
Structs and NSCoding
Swiftのstructをシリアライズ出来るようにするテクニックです。NSCodingに準拠したcontainerクラスでラップする手法が取られています。
NSUserDefaultsのextensionで対処するパターンより責務が分かれていて良さそうに思いました。
記事後半には、structデータを手軽かつ型セーフにキャッシュして扱う方法も書いてあります。
Swift — クロスプラットフォーム
Server APIs Work Group
Server APIs Work Group発足がアナウンスされました。
以下など用意されました。
以下の挨拶的なメーリス投稿もありました。
- [swift-evolution-announce] announcing Server APIs work group
- [swift-server-dev] Developing Server APIs for Swift
まとめの日本語記事としてはSwift言語、サーバアプリのためのAPI群を策定へ。「Server APIs Project」スタートに分かりやすくかいてあります。
これをきっかけに今新しいフレームワークが生まれたわけではなく、今後のサーバーサイトSwift API・フレームワーク開発を円滑に進めていくためのグループが立ち上がった、という感じです。サーバーサイドSwiftの今後の実用利用により一層期待が持てるようになりましたね。
Swift on Linux
swiftdocker/docker-swiftというDocker imageを使って、スムーズにLinux上でSwiftを動かせた、という記事です。こういうのはセットアップで色々苦労して消耗しやすいので手軽に動かせる環境を作れるのは良いですね。
Swift Evolution
SE-0144: Allow Single Dollar Sign as a Valid Identifier がリジェクト
Swiftレター #3で紹介したSE-0144($単体を識別子として利用可能に戻す提案)がリジェクトされました。このProposalは経緯が複雑なのですが、結果的には$単体を識別子として利用出来ないようにする対応を続行することに決まりました。つまりソースコードの破壊的変更に繋がるのですが、まあまあ気を遣われています。
- Swift 3系では$単体利用可の状態を継続
- Swift 4で$単体利用をコンパイルエラーとする
よほどのことが無い限りはSwift 3系でのソースコード互換を保つようにする、という姿勢が伝わってきますね。かといって、Swift 4でSwift 3でまた大きく変わるというわけではなく3でかなり変更を入れきったこともあり、こういう比較的影響力の少ない変更がまとめて入る感じになるかと思っています。
まとめるとこんな感じです:
- [Lex] Reject standalone dollars as identifiers by CodaFi · Pull Request #3901 · apple/swiftが以前マージ済み・未リリース($単体利用を不可に)
- 1.のPRは破壊的変更になるのでやめようという提案(SE-0144)
- 2.のSE-0144リジェクト
- Disable the ability to use $ as an identifier head harder by CodaFi · Pull Request #5270 · apple/swiftで、Swift 3系で許容してSwift 4ではコンパイルエラーとする対応(マージ済み)
#5270のPRでLangOpts.isSwiftVersion3() で分岐しているのがポイントです👀
変更自体は地味ですが、Swift言語開発の姿勢が読み取れる感じで面白かったです( ´・‿・`)
- 意図しない挙動(バグ)を、互換性担保のために維持して、複雑にしたり一貫性を損なうのは良くない
- とはいえ、特にSwift 3系のソースコード互換性は大事にしたい
iOS
How to create effective push notifications
効果的なプッシュ通知をいかにするかが述べられています。プッシュ通知経由のアクションなどは個人的には愛用しているものの、一般的にそこまで使いこなしている率高そうだなと思っていましたが、iOS 10でのリッチな通知(画像など付き)は分かりやすくて魅力的に思っています。
記事の1つ目のポイントに書かれていた、プッシュ通知開封率が18時以降(〜20時くらい)に高まるデータなど、面白かったです。
For example, a successful push could be a self-contained, standalone message, as discussed above. If people don’t click through, it could mean the push didn’t engage them — or that it performed its job.
これも、なるほどと思いました。
リリース
Xcode 8.1リリース🎉
この1週間で以下がリリースされました。
- 10月24日: Xcode 8.1 GM
- 10月27日: Xcode 8.1 正式版 (App Store配信)
GM版はiOS 10.1正式版と同時リリースでしたが、iOS 10.1実機実行はXcode 8.1 GMを使う必要(裏技で回避可能)があって、少し混乱があったようです。
差分はGM版(Touch Barが欠けているくらいの差なはず)の方ではありますが、What’s New in Xcode 8.1 GMが見やすくまとまっていて良かったです。
MacBook Pro
10月27日のAppleイベントで、MacBook Proなどが発表され、特にTouch Barについて話題になりました。
Get your apps ready for Touch Bar on the new MacBook Pro.に各種情報が載っています。
特にこのあたりチェックです👀
- macOS Human Interface Guidelines: About the Touch Bar
- NSTouchBar — AppKit | Apple Developer Documentation
- [サンプル] NSTouchBar Catalog: Creating and Customizing NSTouchBar
- [サンプル] ToolbarSample: Using NSToolbar to construct a window toolbar
また、わりとネガティブな記事が多めに思いました(メディアの書いている記事はポジティブなのが多かったですが)。
- New MacBook Pro is not a Laptop for Developers Anymore
- Apple just told the world it has no idea who the Mac is for — Charged Tech — Medium
- New MacBook Pros and the State of the Mac
New MacBook Pro Hands-on: Touch Bar Isn’t a Gimmickという紹介動画は、使用感が伝わってきて良かったです。
その他のリリース
デザイン
Origami Studioリリース
FacebookがOrigami StudioというUI・アニメーションデザイン用のアプリをリリースしました。完全に新規のプロダクトではなく、Origami for Quartz Composerが2014年からあって、そのQuartz Composer依存が取れたり完成度上げたりしてリニューアルリリースという感じみたいです。少し弄ったことありますが、やや取っつきにくい第一印象でした。
その他のニュース
Apple Payが日本で開始🎉
ドキュメント:
まだそこまで日本語開発情報出てきていないですが、日本でのApple Payローンチパートナーに選ばれたminneアプリの開発秘話のような記事も出てきて、ありがたいです。
Suicaアプリが色々ひどいと評判で、その通りとは思いつつ機能的には普通に使えているので、まあいいかなと思っています。ただ、サービスローンチ日(25日)のサーバーエラーなどはもう少し何とかしてほしかったような。
AirPods発売延期
正式情報はどこか分からないですが、公式サイトでも10月下旬発売表記も消えました(延期ニュース当日はまだ表記残っていました)。残念です😥
Advent Calendar募集開始
このあたりは要チェックですかね:
- Swift Advent Calendar 2016 (最終日に登録)
- Swift その2 Advent Calendar 2016
- Swift愛好会 Advent Calendar 2016
- iOS Advent Calendar 2016 (最終日に登録)
- iOS その2 Advent Calendar 2016
Microsoft Windowsイベント
特に、Surface Studio良いなーと思いました( ´・‿・`)
筆者の小話
Apple Payの日本開始・Apple Watch Nike+入手で興奮中
どちらも良い感じでとても生活が快適になった感じです。電車に乗りたくて仕方ないです🚃
関連投稿色々してしまいました:
↓アカウントやSwift・iOSコラムPublicationフォローしていただけるとありがたいです🙇 PublicationフォローしていただけるとこのSwiftレターのメール通知も届くようになります( ´・‿・`)