Swift
Swift らしいコードを目指そう
@es_kumagaiさんの、iOSオールスターズ 2での発表です。Swift API Design Guidelinesをかみ砕いた内容 + αな感じで、とても良い内容です👀
日時:2016/11/20(日) 場所:東京都渋谷 概要:iOSオールスターズ2概要日本を代表するiOSエンジニアが一同に集結し、iOSエンジニアのため...eventdots.jp
ご自身で詳細なレポートも書かれています:
iOS オールスターズ 2 で Swift らしさをたっぷり語ってきました。
iOS オールスターズ 2 で Swift らしさをたっぷり語ってきました。とにかく楽しい理想的な空間で、たくさんの嬉しさが得られる会だったように思います。ez-net.jp
このレポートに、他の方の発表資料もすべて掲載されています。
The RawRepresentable Protocol in Swift
The raw value syntax for enums in Swift is "just" a shorthand for conformance to the RawRepresentable protocol. It's…oleb.net
enumのraw value構文は、RawRepresentableへの準拠の糖衣構文であること、その活用などについて触れられています。
上のスライドとそのレポート記事にも少し関連する内容です。
Protocol Oriented Programming is Not a Silver Bullet
タイトル通り、Swiftで推奨されているProtocol Oriented Programmingは銀の弾丸では無い、という内容で、同感でした。
In Swift, protocol-oriented programming is in fashion. There's a lot of Swift code out there that's "protocol-oriented…chris.eidhof.nl
Protocolの活用は有用ということは認めた上で、Protocol使わずに済むところでProtocolを使って無駄に複雑にしてる例が散見される、とのことで僕もたまにそういう違和感ある時があります。
What I Learned Building the PusherSwift Framework
Creating a framework in the Apple developer ecosystem is a bit of a mixed bag. Some of the tools you come into contact…blog.pusher.com
特に、「Single-target build」の項目に書かれている、マルチプラットフォーム対応のライブラリを使う際に複数Targetを作らずに済む方法が参考になりました。
以前マルチプラットフォーム対応のライブラリ作ろうとした際、RxSwift参考にしたらTargetを複数作られていて、「そういうもんなのかな。面倒だ。」と思っていましたが、今Realm見たらそちらは上の単一Targetで済むやり方使っていました👀
プラットフォーム固有のAPI使いたい時は、次のようにすれば良さそうです。(if #availableはマクロではないのでこの用途ではNG)
#if os(iOS)
UIView()
#elseif os(macOS) // os(OSX)でもOK
NSView()
#endif
必ずしも単一Targetにすれば良いわけでは無く、プラットフォーム固有のAPIをたくさん使う場合は複数Target設定にした方が開発しやすいかもしれません。
Understanding Data Race Detection by Implementing it in Swift
TL;DR: In order to learn more about how Thread Sanitizer's data race detection works I've implemented a very simple…blog.benjamin-encz.de
LLVMのThread Sanitizer(データ競合検知)をSwiftで簡易実装した、という内容です。LLVMのThread SanitizerのSwift対応はXcode 8・Swift 3.0でなされるとWWDC 2016: Thread Sanitizer and Static Analysisでも発表されて使えるようになっていまして、「Thread SanitizerのSwift対応」ではありません。リポジトリはこちらです。
Swift 4のロードマップ — InfoQ
InfoQのSwift 4に関する記事です。コンパクトにまとまってて良いですが、違和感覚えた記述が1つありました。
Swift 4の開発は2つのステージに分割されている。最初のステージにはSwift ABIの安定化に必要なすべての機能が含まれると同時に,Swift 3とのソース互換性も確保される。
「Swift 3–4はソースの破壊的変更を極力無いようにするけど少しありうる」というのが正しいはずです。少なくともSE-0144: Allow Single Dollar Sign as a Valid Identifierがリジェクトされたので、 $
を識別子として単体利用不可(どうしても使いたい場合は`$`とバッククォーテーションで囲む必要)になる、という破壊的変更がSwift 4に含まれることは決定しているはずです。
The Swift 4 release is designed around two primary goals: to provide source stability for Swift 3 code and to provide ABI stability for the Swift standard library. To that end, the Swift 4 release will be divided into two stages.
https://github.com/apple/swift-evolution/blob/master/README.md
Swift EvolutionのREADMEにも“provide source stability for Swift 3 code”と書かれてますが、「Swift 3とのソース互換性確保」という表現は違うかなと思いました。
(僕の間違えでしたら指摘お願いします🙇)
Swift Evolution
基本的に生情報を直接追わずに https://swiftweekly.github.io 見て面白そうなトピックを深追い、という感じで書いていましたが、#48がまだ配信されていなくて困ったので今回はボリューム少ないです( ´・‿・`)
Swift 3.1でジェネリクス型のネストが可能に
CHANGELOGにも記載済みです。こちらのPull Requestで対応されました。
iOS
iOS: Custom Modality
Modals became so diverse that Apple’s HIG no longer cuts it. How to choose from all the custom options out there?medium.com
iOSのモーダル表示にはいくつかパターンがあります(モーダルビュー、アラートビュー、アクションシート、など)が、その使い分けについて書かれています。特にフローチャートがあるのが良いなと思いました。
ツール
facebookincubator/Keyframes
Keyframes - A library for converting Adobe AE shape based animations to a data format and play it back on Android and…github.com
Adobe After Effectsでベクターアニメーションを作成し、そこからFacebookのリアクションアニメーションのようなスケーラブルで軽いアニメーションに変換してくれるライブラリです。
- Adobe After Effectsでベクターアニメーションを作成
- リポジトリに同梱されている変換スクリプトでJSONを生成(iOS・Android・JavaScript共通)
- それぞれのプラットフォーム用のライブラリを使ってアニメーション実行(iOSの場合は、JSONファイルを読み込んでそのベクターオブジェクトを所望のlayerにセット)
Adobe After Effects使いこなせる場合(あるいは、そういうデザイナーさんと連携している場合)は、なかなか良さそうなツールに思いました。
Keyframes: Delivering scalable, high-quality animations to mobile clientsという解説記事も公開されています。
The open source library is able to export and play back high-quality, lightweight animations, such as the ones seen in…code.facebook.com
Eject — from Interface Builder
xibファイルをD&Dすると、Swiftコードに変換してくれるツールです。試しに実コードを入れたらきちんと変換してくれました。ちゃんと手で書いたコードに比べるとベタ書きで量が多くなってしまいそうな気はします。コマンドラインツールも用意してくれている(GitHubリポジトリ参照)ので、手元のxibファイルを一斉変換することも、うまく動けば出来そうです。個人的には、Storyboard・Xibの両方用いてAutoLayoutで書いていますが、Storyboard・Xibじゃなくてコードの方が良いかなとも最近思い始めてきています🤔
(AutoLayoutは、個人的には使うべきだと思っています。)
JohnSundell/SwiftPlate
SwiftPlate - Easily generate cross platform Swift framework projects from the command linegithub.com
swiftplateと打って、対話式コマンドに答えていくと、CocoaPods・Carthage・SwiftPM対応のクロスプラットフォーム(iOS・macOS・watchOS・tvOS)対応ライブラリのひな形を生成してくれます。地味に面倒なので、かなり便利に思いました。ただ、クロスプラットフォーム対応の仕方が複数Target方式でした。基本的には、上でも書いた単一Target方式の方が取り回ししやすいかなと思っているので、そこだけが個人的には残念でした(そういうオプション追加のPull Requestするなどありですね)。
twostraws/swiftgd
libgdのラッパーです。Linux上でのグラフィックレンダリング用途に開発されたとのことです。12月5日に発売するサーバーサイドSwiftの本の作者が書かれています。
リリース
先週はApple関連のアップデートは特に無かったです。
Xcode 8.2 beta 2
beta 2リリースは14日でしたが、そこにXcode 8 にて差分ビルドが効かなく(効きにくく?)なった問題の修正が含まれていました。GM版・正式版リリースが待ち遠しいですね🤕
Xcode will not rebuild an entire target when only small changes have occurred. (28892475)
http://adcdownload.apple.com/Developer_Tools/Xcode_8.2_beta_2/Release_Notes_for_Xcode_8.2_beta_2.pdf
Xcode8に移行してビルドが遅くなったのを直すにもコメントしておきました。
その他
ApressのApple・iOS書籍がセール中(11月28日まで)
Discover all Apress books on Apple and iOS programming, including Swift development, Objective-C, Xcode & more…www.apress.com
$30–40ほどの書籍が$9.99となっています。
Swift Tweets
発表者・参加者が同じ時間に集まっていることで、質問や議論をリアルタイムに進めることができます。 Twitter とはいえ、普段面識のない人には話しかけるのは遠慮してしまいがちですが、同じ Swift Tweets の参加者なら相手もその…swift-tweets.github.io
@koherさん主催のSwift Tweetsという、新しい試みのTwitter上での勉強会が2017年1月14日に開かれます🎉
Swift Tweets は Twitter 上で開催される Swift に関する Tweetup です。 4 人の発表者が 30 分の持ち時間(約 60 ツイート)で、 Swift について発表します。
Twitter上での開催ですが、こちらから参加登録する方式となっています。
概要 Swift Tweets は Twitter 上で開催される Swift に関する Meetup Tweetup です。 4 人の発表者が 30 分の持ち時間(約 60 ツイート)で、 Swift について発表します。 https…swift-tweets.connpass.com
Q. Twitter で開催されるなら何のために参加登録が必要なの?
A. オンラインだと誰が参加していて誰が参加していないのかが曖昧になりがちです。参加者に「この時間はこれに参加することに費やしてます」ということを表明して時間を確保していただくことで、オフラインのカンファレンスや勉強会のように参加者間で交流がしやすくなることを期待しています。
僕も3番手で発表するみたいなので、ネタを考えなくては🤔
筆者の小話
Swiftレター始めて2ヶ月ほどですが、Publicationのフォロワーが200人超えました🎉ありがとうございます🙇
ちなみに、Publicationなので、興味ある方いればWRITERとしてのご参加歓迎です(Swiftレター自体は自分で書いていくつもりですが、エンジニアの家庭運用Tipsのやぶさん記事のようにPublicationに紐付いた記事投稿歓迎という意味です)。 jpmarthaさんが興味ありそうだったのでWRITERSに仲間入りしました🎉
昨日は紅葉見に行ってきました( ´・‿・`) Mediumをアルバムぽく使うのも良いなと最近思っています( ´・‿・`)
バックナンバーはこちらから一覧出来ます。
↓アカウントやSwift・iOSコラムPublicationフォローしていただけるとありがたいです🙇 PublicationフォローしていただけるとこのSwiftレターのメール通知も届くようになります( ´・‿・`)