🍂Swiftレター #7🍂

2016/11/13

mono 
Swift・iOSコラム
14 min readNov 12, 2016

--

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

Swift

null安全でない言語は、もはやレガシー言語だ

先週、かなりバズりましたね。全面的に同意見です。

あえて null 安全 でない言語はレガシー言語だ と言い切ることで、 null 安全 の普及を加速させることができるんじゃないでしょうか。

タイトルが少し強烈ですが、こういう意図があることも書かれていて、なるほどと思いました。

この記事を受けて、null安全を誤解している人達へのメッセージという記事も公開されました。

Xcode8に移行してビルドが遅くなったのを直す

Xcode 8から、差分ビルドが効かない症状が出ることがあるようです。Build SettingsのUser-Defined SettingにHEADERMAP_USES_VFSをYESで設定すればしのげる模様です。僕は特に気になったこと無かったのですが、AppDelegate.swiftに一行追加してビルドした時間を、この対応前後で計測してみたところ、やはり特に変わらずフルビルドの1/7程度の時間でした。もう少し速くなって欲しいですが、差分ビルド自体は効いてそうです。環境によるっぽいですね。

Mixing Initializers

init?・init・init throwsを組み合わせようとすると、init内でinit?(failable initializer)を呼ぶ際にコンパイルエラーになるなどハマリどころがあって、その解決策です。特に最後のRawRepresentable enumsのfailable initializerに加えて、initで必ず値が入るような初期化を用意する例が参考になりました。

Swift Holy War: Comments are not an Anti-pattern

「Swift宗教戦争: コメントはアンチパターンではない」と題した、Beware the Siren Song of Commentsへの反論記事です。そこまで正反対のこと言っているわけでも無く、両記事やそこに付いている記事コメントなど読むと色々な方のコメントへの考え方に触れられて良かったです。

サーバーサイドSwift

Swift Summit: Pushing the boundaries of Swift to the Server

IBMの Chris Bailey さんのSwift Summitでの発表資料です。

サーバーサイドSwiftは、他言語と比べて速度・メモリ効率などかなり優秀であり、さらにSwift製iOSアプリと組み合わせると、クライアントコードとSwiftコードを共有できるなどのメリットもあると述べられています。後半では、IBM KituraでいかにサーバーサイドSwiftを構築していくかが述べられています。サンプルも色々あって良いですね。

9月にも、Swift, Java, Node.js, or Ruby? The Advantage of Server-side Swiftという似た内容の発表もされています。

先週ふと思いついてアンケートやってみましたが、僕も手を出すなら色々手厚そうなIBM Kituraが良いかなという感触です。(「どれが一番」というより、それぞれ特徴などあるとは思いますが。)

サーバーサイドSwift、今後の展開楽しみです( ´・‿・`)

Swift Evolution

Objective-CのNSString・NSArray・NSDictionary・NSSetのSwiftブリッジングをEager(貪欲)にするというPull Request(未マージ)

今のSwift実装では、Objective-Cオブジェクトの参照をコピーしてアクセスの度にメッセージパッシングするためパフォーマンスオーバーヘッドがありますが、それを初回のブリッジング時にSwiftオブジェクトとして一気にコピーすることによって解消する、というものです。

Eagerなブリッジングとは何かについてはこちらのやり取りで述べられています。

#5641: [README] Remove Ubuntu 14.04 and 15.10 status

SwiftはUbuntuの14.04・15.10・16.04をサポートしていますが、それが16系のみとなりました。

Ubuntu 14.04 LTS is no longer supported. Unsupported build instructions for Ubuntu 14.04 LTS can be found here

サポートを切ったとはいえ、まだGetting Startedのドキュメントは残っていて、ダウンロードページにもありますね。

iOS

Better Xcode Run Script Build Phases

XcodeプロジェクトのBuild PhasesのRun Script Phaseには、ベタにスクリプトを書いてしまいがち(そう書かれているガイドも多い)ですが、テキスト表示エリアが狭かったり差分も見にくいなど、メンテナンスしにくい問題が生じてきます。別スクリプトファイルに分けるとこれが解決する、とのことです。その他、 error: warning: echoを吐くと、コンパイルエラー・警告などとして解釈されることを利用したTipsなど紹介されています。

ライブラリ

WhiskerzAB/PlaygroundTDD

Playground上でTDDを実行出来る仕組みです。リポジトリのCoreディレクトリのソースが肝です。Playgroundでコード書いていると自動実行されますが、テストも同じ感覚でどんどん走ってくれます。面白い試みとは思いつつ、READMEの記載も少ないこともあり実際に役立つのかよく分からずでした。

リリース

2016/11/07に各種betaがリリースされた程度でApple関係はあまり動き無かったです。

  • iOS 10.2 beta 2 (14C5069c)
  • watchOS 3.1.1 beta 2 (14S5869b)
  • tvOS 10.1 beta 2 (14U5574b)

iPhoneの電源/スリープボタンを5回押下することで、救急サービス等に電話発信が出来るSOSを起動することができます

5連打で緊急電話発動(watchOSの場合はサイドボタン長押し)、というのがちょっと面白かったです( ´・‿・`)

iOS 10でMusicアプリでシャッフル・リピートボタンがすごく分かりにくかった問題も、そのチュートリアルが表示されたりボタン自体も大きく分かりやすくなって改善されました。

Sketch 41リリース — An Iconic New Look and More

Sketch 41がリリースされて、ロゴやアイコンが刷新されました。機能的には、Nested Overridesというシンボル周りの機能が付いて取り回しがしやすくなりました。

その他

Unicodeとは? その歴史と進化、開発者向け基礎知識

++C++; // 管理人: 岩永さんの書かれた、文字コードに関する良記事です。

「オピニオンコラム:岩永信之」のスピンオフ記事である本連載(前編・後編の全2回)では、C#における文字コード関連の話をしたい。文字コードというと、現在ではすっかりUTF-8がデファクトスタンダードとなっているが、Unicode自体も複雑で、かつ、C#はUnicode以前の歴史も引きずっているため、なかなか分かりにくい状況になっている。

とのことですが、少なくとも前編はC#関係無く文字コードについて知っておくべきこと網羅されている感じで、SwiftのString理解のためにも必読と思いました。

iOSアプリとAndroidアプリの収益性と開発効率について

世界的にはAndroidのシェアが高まってきていますが、日本はiOSが人気でけっこう特殊です。 http://www.kantarworldpanel.com/global/smartphone-os-market-share/ のデータは実利用に対してあまりアテにならず、「追記」に書いてある以下が実情を表していると僕も思っています。

この記事を書いたおかげで、iOSとAndroidどちらも出している人から耳寄りな情報がもらえたりしました。日本ではだいたいiOSがAndroidに対してDL数も収益も二倍ぐらいみたい。(2016年11月8日現在の感覚)

Pricing model — Bear

先日リリースされたBearというなかなかよく出来たMarkdownなど使えるノートアプリBearです。ただ、同期機能を使うだけで課金が必要で、かつそれがサブスクリプション方式(月額150円・年額1,500円)なため、買い切り方式が良いというフィードバックがあり、それに対してのやり取りです。売り手側の考えなどが述べられていますが、CloudKitsを使っているということにも触れられいて、そういえばあまり利用事例聞いたこと無かったので、新鮮でした。Appleプラットフォームに閉じた場合はけっこうアリだなと思いました(あとで気が変わって対応プラットフォーム広げたくなったらキツそうですが)。

Google翻訳の精度がニューラル・ネットワーク導入で劇的に向上!これはすごい

昨日話題になってましたが、一気に実用的に使えるようになった感じですね。

Google公式ブログの9月のA Neural Network for Machine Translation, at Production Scaleという記事で細かい技術説明などされています。

僕は今は基本的に原文を日本語より多少時間かけつつ読んでいますが、精度充分だと判断出来れば基本翻訳で、怪しいと思ったところだけ原文チェックとかで、少し楽出来るかなと思ったりしています( ´・‿・`)

筆者の小話

土曜日はテニスでクタクタになり、今日は朝から結婚式出席ということで、朝4時に起きてがんばって書きました💪

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

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

--

--