🎃Swiftレター #5🎃

2016/10/30

mono 
Swift・iOSコラム
14 min readOct 30, 2016

--

ブラウザで見るとURL展開などされて見やすいのでオススメします👀

Swift

Structs and NSCoding

Swiftのstructをシリアライズ出来るようにするテクニックです。NSCodingに準拠したcontainerクラスでラップする手法が取られています。

NSUserDefaultsのextensionで対処するパターンより責務が分かれていて良さそうに思いました。

記事後半には、structデータを手軽かつ型セーフにキャッシュして扱う方法も書いてあります。

Swift — クロスプラットフォーム

Server APIs Work Group

Server APIs Work Group発足がアナウンスされました。

以下など用意されました。

以下の挨拶的なメーリス投稿もありました。

まとめの日本語記事としては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でかなり変更を入れきったこともあり、こういう比較的影響力の少ない変更がまとめて入る感じになるかと思っています。

まとめるとこんな感じです:

  1. [Lex] Reject standalone dollars as identifiers by CodaFi · Pull Request #3901 · apple/swiftが以前マージ済み・未リリース($単体利用を不可に)
  2. 1.のPRは破壊的変更になるのでやめようという提案(SE-0144)
  3. 2.のSE-0144リジェクト
  4. 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.に各種情報が載っています。

特にこのあたりチェックです👀

また、わりとネガティブな記事が多めに思いました(メディアの書いている記事はポジティブなのが多かったですが)。

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募集開始

このあたりは要チェックですかね:

Microsoft Windowsイベント

特に、Surface Studio良いなーと思いました( ´・‿・`)

筆者の小話

Apple Payの日本開始・Apple Watch Nike+入手で興奮中

どちらも良い感じでとても生活が快適になった感じです。電車に乗りたくて仕方ないです🚃
関連投稿色々してしまいました:

↓アカウントやSwift・iOSコラムPublicationフォローしていただけるとありがたいです🙇 PublicationフォローしていただけるとこのSwiftレターのメール通知も届くようになります( ´・‿・`)

--

--