Swift
Type-safe URL Routing in Swift
Yasuhiro InamiさんのFunctional Swift Conference 2016での発表資料です。関数型の書き方でURLルーティングを型セーフに書こう、みたいな内容です。
リポジトリはこちらです。
Refactoring at Scale — Lessons Learned Rewriting Instagram’s Feed
Instagram iOS版がフィードを再実装し、そこから、柔軟・高速・安定にアニメーション付きのコレクションビュー系画面を組む処理をライブラリとして切り離し、instagram/IGListKitとして近日公開予定とのことです。
Porting the Swift Runtime to Android, Part One: The How
がんばってSwiftをAndroidにポーティングして、Android端末上で動くようにした、という記事です。
SwiftAndroid/swiftというapple/swiftからforkしたレポジトリで開発されていましたが、4月以降コミット無いですね(´・ω・`)
Protocol Buffers in your Kitura Apps
Letter #1でSwiftプロトコルバッファプラグインがオープンソース公開されたことを書きましたが、それをIBMのKitura上で使ってみた、という記事です。
General Availability: IBM Bluemix Runtime for Swift
IBM Bluemix Runtime for Swiftが9月に正式版リリースされました。
iOS
Smooth Scrolling in Buffer for iOS: How (and Why) We Implemented AsyncDisplayKit
UIKitはメインスレッドのみでの操作を強いられ、これはiOS端末がシングルコアであること前提に作られたもので、今はせっかくほとんどの端末がマルチコアになってきたのに性能を引き出しにくく、60 fpsのスクロールを常に実現するのが難しい、とのことです。その課題を、AsyncDisplayKit(ASDK, Facebookが2014年10月にOSS公開)を活用したという内容です。ASDKは、Pinterastも使っている、とのことです。
Quick tip: Release iOS 7 Apps with Xcode 8
Xcode 8では、iOSのDeployment Targetのドロップダウンメニューに 8.0以上しか無いですが、7.0を直打ちするとiOS 7.0でインストール可能なバイナリを生成出来た、とのことです。正式サポートで無さそうなので多少注意はした方が良いと思います。
Designing a Robust Large File Download System
大きなファイルサイズのダウンロード実装をどのように実現したかの説明です。NSOperationによる非同期処理、Core Dataで進捗状態を永続化管理など使ったとのことです。続きの記事として、Background Downloadsにて、アプリが閉じられている時のダウンロード実装についても書かれています。
また、iOS 10では、resume周りにバグがあって、現状ちょっとしたワークアラウンドも必要、とのことです。
#25 Core Data in iOS10: NSPersistentContainer
NSPersistentContainerで、煩雑なCore Dataのセットアップ処理が楽になった、という内容です。記事では触れられてないですが、Core Dataはジェネリクス対応したりして、かなり使いやすくなった感じです。
How to send iOS 10 Notifications using the Push Notifications API
Pusher使った、iOS 10のプッシュ通知(UserNotificationsフレームワーク)のチュートリアルです。Pusher側も含んだサンプルプロジェクトも公開されています。
Swift Evolution
Accepted
SE-0141によって、@available(…)でiOSなどのプラットフォーム指定だけでなく、Swiftバージョン指定・obsoleted
指定が出来るようになります。
SE-0142によって、associatedtypeにwhereで型制約を与えられるようになります。
Understanding Swift Evolution
140 proposals in 30 minutesという発表をされた方の記事です。
Swift EvolutionのProposal検索ツールを作って、色々分析したとのことです。
Swift 3.1で、ジェネリクスの型パラメーターに、具体的な型制約を付けられるように
これが出来なくて、けっこう不便だったので、正式リリースが楽しみです😋
https://github.com/apple/swift/blob/master/CHANGELOG.md#swift-31
ライブラリ・ツール
Source Code Extensionが色々出てきた感があります( ´・‿・`)
Bouke/SwiftInitializerGenerator
Source Code Extensionで、structのイニシャライザーを自動生成するものです。こういう支援機能を作る際の参考にもなりますね。
markohlebar/Import
markohlebar/Import
Import - Xcode extension for adding imports from anywhere in the code ☝️
github.com
コードの途中でimport書いて、それを先頭に移動してくれるExtensionです。
totocaster/Typist
キーボード監視ライブラリです。
マイクロライブラリですがこれ系ってけっこう便利で、僕はmorizotter/KeyboardObserverを使っていて、先日Swift 3対応のPull Request送ったりもしました( ´・‿・`)
リリース
macOS Sierra 10.12.1 beta 3
Xcode 8.1 beta 2
Xcode 8.0でシミュレーター実行時にログノイズが大量に出力されてしまう現象が、この版で直ったとのことで先日書いた記事に追記しておきました。
デザイン
Appleウェブサイトのレスポンシブなナビゲーションが「うまい!」と思う4つの理由
記事を読みながら、実際にAppleサイト触っていたら、「おお、なるほど!」と色々思わされました( ´・‿・`)
あと、Safariで見ると、磨りガラス効果も効いててオシャレ、というのも思い出しました( ´・‿・`)
We just launched Flinto for Mac 2, a big, free update!
Flinto for Mac 2がリリースされました🎉色々機能追加されています👀
Visual Dividers in Mobile UI Design
セルの境界などの区切りを表現する場合、セパレーターがよく利用されていますが、余白・色コントラスト・影による奥行きなども使い分けたり、あるいは画像一覧などはセパレーターは不要、など書かれています。セパレーター無くて表現可能なところはそうした方がすっきり洗練して見えることが多いですね。
サービス
GitHub Audio
GitHub上の活動がキレイなビジュアル・サウンドで表現されてます( ´・‿・`)
Apple系ニュース
DashがAppStoreから削除されてしまいました
iOS版・macOS版、ともにAppStoreからインストール出来なくなってしまいました。macOS版は、AppStore外からインストール可能です。有料ライセンスの移行はマイグレーションガイドに従いましょう。
Appleの独断で消されてしまった感じで、各所でざわついてます( ´・‿・`)
その他気になったこと
Google Hardware 2016
Pixel・VRヘッドセット・4K対応Chromecast Ultra・Google Homeなど発表されました。
ServerlessConf
サーバーレスカンファレンスが東京で開かれました。
Rebuild.fm #160でもこの話題に触れていて、面白かったです( ´・‿・`)
Cookpad TechConf 2017開催(2017/01/21(土))
今月中旬に募集開始とのことです。
筆者の小話
今から自分の結婚式に行ってきます。8時55分の電車に乗らないと遅刻なのでギリギリです( ´・‿・`) (ただいま8時25分)
iPhone 7 Plusゲット
昨日iPhone 7 Plusをようやく入手出来てほっとしました( ´・‿・`)
Swiftレター所感
このSwift・iOSコラムPublicationですが、Swiftレター #1開始2日目にしてフォロワーさん100人突破して、嬉しかったです。ありがとうございます🙇
OmniOutlinerに日々ネタをストックしておいて週末にまとめる、という感じでやっていますが、けっこう良い感じに出来ています( ´・‿・`)ただ、ついついボリューム多くなってしまって大変です( ´・‿・`)