Swiftレター #17

2017/01/22

mono 
Swift・iOSコラム

--

ブラウザ・アプリで見ると、URL展開されて見やすいのでオススメです👀

Swift

Naming Things in Swift

Swiftにおける名前付けはSwift API Design Guidelinesが参考になりますが、この記事ではどうしてそういう名前付けするのかの理由をより丁寧に書かれています(網羅性はあまり無いですが)。長すぎず短すぎない、文脈に合わせた過不足の無い名前付けがポイントですね👀

素晴らしいSwiftのポインタ型の解説

UnsafePointer<T> などについて詳細に説明されています。普通にアプリ書いているとなかなか触れる機会が無いですがいざ使わなきゃいけなくなったときにこういう記事あると良いですね。同じくメモリ周りの濃いめの記事として、Swiftのメモリレイアウトを調べるSwiftのenumのメモリレイアウトの最適化が凄いも書かれていました👀

Swift Evolution

Swift 4メインの開発体制に移行

これまでSwift 3.1の開発は master ブランチ上でなされていましたが、1月17日を区切りに swift-3.1-branch ブランチ上でなされるように切り替わりました。代わりに master ブランチでは Swift 4の開発がなされます(swift-3.1-branch ブランチ自体は以前から存在しましたが、17日以前は定期的にmaster ブランチからマージされる運用でした)。

Swift 3.1開発フェーズ終盤に差し掛かってきたので、そろそろSwift 3.1 を同梱したXcode 8.3 beta がリリースされそうな予感です🤔

Swift Evolution Statusページのリニューアル

Swift Evolution Statusページは以前からありましたが、リニューアルされてデザインが整えられ見やすくなったりフィルター出来るようになったり改善されました。

Swift 3.1 でフィルターすると実装済みのものが一覧出来て便利です(原則これ以上機能実装されずに正式リリースされる予定です)。

Swift 3.1 に実装済みのProposal一覧

String Processing For Swift 4

Swift 3の開発の振り返りとSwift 4の計画が記されたメールの紹介でも紹介しましたが、Swift 4に向けて予定されていたString APIの改善マニフェストが公開されました。

文字列の再評価: 文字列は最も重要な、言語の基本型である

- 文字列に関するプログラミングモデルの様々な改善アイディアがある(unicode-correct-by-defaultモデルを危うくすることなく)

- ゴールは、Perlより優れた文字列処理を行えるようにすることである

String APIをどういう考えて設計・実装していたかがよく分かる良い資料です(とても長いですが)。

String should be a Collection of Characters Again

SwiftのString(文字列) APIとの付き合い方でも書きましたが、これが自然だと思っていたら、やはり戻るようです( ´・‿・`)また次のあたり読むと、Stringに対してIntでのsubscript可能になるようで、これも納得です。

String APIが概念的にはよく設計されていたものの厳密さをインターフェースにそのまま表現してしまい扱いにくいものになっていましたが、そのインターフェースの複雑さを最小限に整理する、という感じですかね。破壊的変更を多く含みそうですがマイグレーションサポートもある程度なされるようです

[swift-evolution] Strings in Swift 4 というメーリングリスト投稿が元ですが、このマニフェストに全て記載されているはずです。

swift-evolution/0148-generic-subscripts.md at master · apple/swift-evolutionがレビュー中に

ジェネリクスのsubscript対応です。無事Accept・実装されて、ジェネリクスの制限緩和されてほしいところです( ´・‿・`)

Chris Lattner Says Opportunity to Work on Tesla’s Ambitious Self-Driving Efforts Was ‘Irresistible’

先日Appleからテスラに移ることがアナウンスされたChris LattnerさんへのMacRumorsからのインタビュー記事です。ざっくり要約すると「Appleの人も仕事も魅力的で悩ましかったが、テスラでの自動運転技術が大変魅力的で自分の能力・経験もたくさん活かせるので移ることにした。」という感じですね。

サーバーサイドSwift

Vaporで始めるサーバーサイドSwift 〜Mac上での環境構築からHello, World!まで〜 (swiftenv, Vapor Toolboxを使用)

Vaporでブラウザ上でHello, World!表示までの全行程が書かれています。

ちなみに、僕はKituraによるServer-Side Swift本を飛ばし飛ばしやったりしましたが、簡単なアプリなら充分できそうな程度には整っていますが、他言語の成熟したWebフレームワークと比べると、やはりまだまだ開発効率落ちそうだなと感じています。今のうちから弄っておくこと自体は良いですが、Swiftで高効率にサーバーサイド開発できるようになるのは1–2年待ちかなという感触です🤔

ライブラリ

JohnSundell/Files: A nicer way to handle files & folders in Swift

FileManagerが使いにくいので、それを使いやすくしたライブラリです。Swift言語自体は素晴らしいですが、特にこういうFoundation系・Objective-C由来のAPIはイケてなくてストレスですね。とはいえライブラリ入れまくるのも微妙なので、悩ましいです🤔このあたり、Swiftを他言語と比較した場合の明確なマイナス点だなと感じています。

33 iOS open source libraries that will dominate 2017.

Paweł Białeckiさんによる良ライブラリ33選です。2年前には27 iOS open source libraries to skyrocket your development.という記事も書かれています。数年開発続けていると、必ずしもその時点では最良で無いライブラリをつい使い続けてしまったりしがちなので、たまにこういうの見て選定し直したりするのも良いなと思っています( ´・‿・`)

Dan2552/SourceKittenSubl: Swift autocorrect / autocompletion in Sublime Text using SourceKitten

SourceKittenを利用してSublime Text 3でSwiftの自動補完を実現するプラグインです。Visual Studio CodeでもPreview版ですが、Swiftプラグインありますね。ちょっとしたコード書きたい時や、Xcode以外で書きたい場合(特にLinux環境など)など、こういう開発環境が充実してくると良いですね。

iOS

Bringing Wide Color to Instagram

iPhone 7系で採用されたWide ColorをInstagramに実装したという話です。iOSアプリの対応は使うべきAPI分かっていれば手間はあまり無さそうです。サーバー対応は少し面倒で、今のところはWider Color対応とそうで無い端末用に2種類の画像を保存してUser-Agentによってレスポンス切り替えているとのことです。

Wide colorに対応している時のみロゴが見える

この記事を受けて書かれたBringing Wide Color to PhotoEditor SDKの方がiOSアプリの対応方としては分かりやすかったです。imgly Photo Editor & Cameraのversion 6.1.2にWide Color対応含まれていますね👀

The Case for Deprecating UITableView

iOSアプリで(最も?)多用されるUIコンポーネントの UITableView ですが、 様々な画面サイズに対応可能な UICollectionView 中心に使っていくのが良いのでは、という内容です。ほとんど同意ですが、iPad対応が不要そうなアプリの場合、普通に UITableView 使うか一応 UICollectionView で組んで柔軟にしておくか悩ましいところだと思っています🤔

iOS Test Night #2 (2017/01/19)

iOSのテスト周りの100人規模の勉強会が開催されました。[イベントレポート] iOS Test Night #2に参加しました! #ios_test_night | Developers.IO によくまとめられています。

他にテスト関連では、先週 linkedin/bluepill: Bluepill is a reliable iOS testing tool that runs UI tests using multiple simulators on a single machine がオープンソース公開されました。

デザイン

Apple UI Design Resources

AppleがiOS 10に対応したiOSアプリのUIデザインリソースをSketchおよびPhotoshop形式で公開しました。Sketch形式でAppleから配布されるのは多分初だと思います。

その他

Mercari DAY 2017 (2017/01/20)

メルカリによるカンファレンスが開催されました。

メルカリデイに行ってきた — Qiitaによくまとめられています。

見つけられた資料はこちらです:

【追記】Mercari Day 2017 Tech Track 発表資料まとめが公開されました:

Cookpad TechConf 2017 (2017/01/21)

メルカリのちょうど翌日にCookpadのカンファレンスが開催されました。

発表資料はこちらにすべてリンクが貼られていて素晴らしいです👏当日はYouTubeでライブ中継されていて、録画を観られます👀

【追記】Cookpad TechConf 2017 開催報告 が公開されました

Twitterが「Fabric」をGoogleに売却👀

Fabric愛用していてFirebaseもそろそろ活用したいとちょうど思っていた時期なので、調べがてら記事書きました。

買収ネタだと、OracleのApiary(APIドキュメント作成サービス)買収もありましたね( ´・‿・`)

iPhone 7/7 PlusとApple Watch Series 2が、日本の衛星測位システム QZSS(準天頂衛星システム みちびき)に対応。

iPhone 7系とApple Watch Series 2に搭載されているGPSが「みちびき」に対応して精度があがったようです。2017/01/10 にこの記載がされたようですが、初めから対応していたのかソフトウェアアップデートに含まれたのか謎です🤔でも、確かに言われてみればビルの合間でも現在地ズレがかなり軽減されたような気もします🤔

筆者の小話

Publicationのフォロワーが300人になりました🎉

しもやけがつらかったですが、ユースキンAを塗り込んだらほぼ治って良かったです( ´・‿・`)

バックナンバーはこちらから一覧出来ます。

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

--

--