Swift
Swift: UserDefaults protocol
Swift 3でNSUserDefaultsがUserDefaultsになり、APIが簡潔になりましたが、それをさらにベターに扱えるようにしています。
個人的には、radex/SwiftyUserDefaultsを気に入って使っていましたが、記事の書き方はさらに良いと思いました。
第1回 関数型プログラミングを試す — 書いて覚えるSwift入門
連載第1回目(もちろん0から数えています)の今回は, 前回 予告どおり関数型言語としてのSwiftを見ていきます。ところで「関数型言語」とはいったいなんでしょう。実のところあいまいな用語ではあるのですが,「最低限文化的な関数型」の関数は…gihyo.jp
gihyoにて、 @dankogi さんのSoftware Designでの連載の再掲が始まりました。サンプルコードのSwift 3化対応はされていないように見えました。
How to Read the Swift Standard Library Source
One way to read the source code of the Swift standard library after GYB preprocessing is to perform a full build of…oleb.net
Swift標準ライブラリのソースファイルの多く(1/3ほどらしい)には、.swift.gyb
という拡張子が付いていて、GYBというSwiftとテンプレート言語の混ざったものになっています。そのため.swift.gyb
から生成されるソースコードを確認するには、Swiftをフルビルドするか、ちょっとしたスクリプトを組んで実行する必要があり、その方法が書かれています。
Swiftのビルドは、少し前の記事ですが Tsutsumi ShuichiさんのオープンソースになったSwiftをビルドしてみるも参考になります👀
Swiftがついにオープンソース化されました!自分も何か pull request 送って「Swiftコントリビュータ」を名乗りたいところですが、 言語のソースコードを前にしたところでいったい何からはじめてよいものかわからない 、けど気…qiita.com
swift-llvm and swift-clang
When Apple released the apple/swift repository on GitHub, they also released apple/swift-llvm and apple/swift-clang…modocache.io
appleリポジトリ配下に、apple/swift-llvm と apple/swift-clang があるが、この2つは本家と比べて何が違うのか?という記事です。LLVM本家のソースはGitHub配下では無いので、 https://github.com/apple/swift-clang/commit/f42c1bed0bbc7774e5bfaefc50cb39f347115ed1 のように、Automerger botが 本家の変更をupstream-with-swiftブランチに自動マージしている、とも書かれていて、なるほどと思いました。Swiftレター #4で書きましたが、LLVMもGitHubへの移行を検討中なので、それが実現されるとSwift開発もしやすくなりそうです。
Swift Copy-on-Write PSA: Mutating Dictionary Entries
Yesterday, the ever-insightful Tim Vermeulen pointed out a significant performance bug in some of the iOS-Developers…rosslebeau.com
普通に書いてしまいそうなコードで、Copy-on-Writeが意図せず走ってパフォーマンスが悪化するという記事です。「2つ以上参照がある瞬間に変更操作をする」とCopy-on-Writeが発動するので、大量のコレクション操作などする場合は注意した方が良いですね。
普通に変更操作のタイミングで参照が1つになるように調整して回避したコード例が載っていますが、さらにSharedArrayというクラス(値型のArrayとは違って参照型)を用意してそれで扱うのがより速いようです。前者が素直ではありますが、パフォーマンス求める場合は確かに後者もありだなと思いました。
Unowned or Weak? Lifetime and Performance
While the usual explanation that when dealing with retain cycles you should choose between unowned or weak considering…www.uraimo.com
unownedとweakの挙動の違い、ライフタイムによる使い分け、さらに生成されるSIL(Swift Immediate Language)を読み解いてパフォーマンスはどうなのか(weakの方が複雑な処理が走る)、まで説明されています。
Mastering Swift: essential details about strings
A detailed writing how efficiently to handle strings in Swift: string views, count characters, access characters by…rainsoft.io
SwiftのStringは4つのビュー(文字列表現)が用意されていることを説明しつつ、ほぼCharacter Viewを例に、各種文字列操作の例が書かれています。
サンプルコードが、IBM Swift Sandboxのリンクとして付いていて、親切に思いました。Playgroundファイルなどでも充分便利ですが、手元で動かすの面倒だったりしますしね。図解もあって丁寧な記事です。
Swift Evolution
guard let x = x
guard let x = x
という風にアンラップしつつ同名変数に割り当てる書き方はよくします(主流だと思っています)が、同名に割り当てるのに一々明示的に書くのが面倒(DRYじゃない)なので簡便な書き方が欲しいという意見が挙がりました。
それについて、Chris Lattnerさんから返信がありました。以下を見比べて、b)みたいな書き方を用意すべきか?という考察がされています。
a) guard let foobar = foobar else { … } // これまで
b) guard unwrap foobar else { … } // 簡便な書き方の例
Better UnwrappingというProposalの叩き台も @ericasadun さんが作られていました。このあとどう発展していくのか楽しみです( ´・‿・`)
サーバーサイドSwift
Getting Started With Vapor: A Swift Web Framework
Web frameworks for Swift started popping up almost as soon as Swift went open source at the end of 2015. Vapor quickly…www.twilio.com
VaporフレームワークでちょっとしたWebサーバーをlocalhostで立ててみる、という内容です。Swift 3.0以降と書いてありましたが、現最新版のXcode 8.1・Swift 3.0.1の組み合わせで手順通りになぞってみたら、何も躓かずに数分で出来ました👏 Swift 3.0正式版が出るまではバージョン間の差異などで一筋縄で行かない印象でしたが、かなり落ち着いて来た感あります。
How to Deploy Vapor Apps to Heroku
Building web applications with Swift using Vapor is super simple. Thankfully, deploying them is also a breeze. In just…www.twilio.com
上の記事の続きで、さらにHerokuにデプロイする、という内容です。これもスムーズに出来るようで、簡単なWebサーバー組むのはスムーズに出来るようになってきました。
Server-Side Swift (本)
TAKE SWIFT TO THE SERVER. Building web apps in Swift lets you re-use the skills you've already mastered, while being…gumroad.com
本も出てきました。こちらはIBMのKituraを使用しています。$25するので買ってないですが、内容見る限り一般的なAPIやWebサイト組むのに必要最小限のことは載ってそうで、効率よくキャッチアップ出来そうで機会あったら弄ってみたいなと思いました。
iOS
39 Open Source Swift UI Libraries For iOS App Development
This is “amazing” series of open source projects. In this observation we’ve compared nearly 2,700 Swift libraries.medium.mybridge.co
Mediumでけっこうバズっていました(489レコメンド)。タイトル通り、39個のUIライブラリがGitHubスター数順に簡単な説明とともに紹介されています。
How Not to Crash #1
解決困難系のクラッシュ(再現困難なものなど)をいくつか直した話です。クラッシュ監視はiTunes Connect Crash ReportsとHockeyAppを使っているとのことです。
Xcode 6.3 から追加されたクラッシュ解析ツールです。 それよりも前は Crashlytics などのサードパーティを利用する必要がありました。 ※本ドキュメントの画像は About the Crashes Organizer の…qiita.com
外部サービスの方が良い面もありますが、そのレポート処理はアプリ内のプロセスで行われOSからkillされた場合はレポートがiTunes Connect Crash Reportsにしか送られないので、併用が良いですね。
特に以下が個人的にはためになりました。
- SierraのConsoleアプリがパワーアップしていて、端末ログ見るのに便利 (僕は今までXcodeでベタに端末ログ見ていました)
- 年2回まで使えるTechnical Support Incidentsを有効活用
macOS
#281: Touch Bar Basics 🚥
During yesterday's MacBook Pro event, Apple announced a fantastic new piece of hardware called the Touch Bar. It's a…www.littlebitesofcocoa.com
macOSのTouch Barの記事です。
クラスメソッドさんでも手厚い記事書かれています:
こんにちは!モバイルアプリサービス部の加藤 潤です。 先日発表された新しいMacBook Proには Touch Bar と呼ばれる新しい入力デバイスが搭載されました。 一時、「escキーが無くなったらどうしよう...?」と話題になりま…dev.classmethod.jp
こんにちは!モバイルアプリサービス部の加藤潤です。 前回に引き続き NSTouchBar Catalogを理解していきます。 今回はサンプルアプリを起動すると最初に表示される画面( ButtonViewController.swift)…dev.classmethod.jp
こんにちは!モバイルアプリサービス部の加藤潤です。 前回に引き続き NSTouchBar Catalogを理解していきます。 今回はサンプルアプリの左側に表示されるメニューの内、 Segmented Controlと Group がどう…dev.classmethod.jp
ライブラリ
sergdort/XcodeEquatableGenerator
XcodeEquatableGenerator - Xcode 8 Source Code Extension will generate conformance to Swift Equatable protocol based on…github.com
Equatableに準拠するためのメソッドひな形作ってくれる拡張です。僕は毎回既存コードからコピペして調整したりしているので、便利になりそうです。
ijoshsmith/json2swift
json2swift - A macOS command line tool that generates excellent Swift data models based on JSON data.github.com
JSONレスポンスファイルから、それに対応するstruct型コードを自動生成してくれます。実プロジェクトのデータで試したら、良い感じにベタなコードを生成してくれました。実プロダクトで導入するものかは微妙な気がしますが、ちょっとしたクライアントコードをちゃちゃっと書きたい時など良さそうに思いました。
loiclec/Apodimark
Markdownパーサーです。Objective-C製だとindragiek/CocoaMarkdownあたりでしたが、Swiftだとこれが定番になりますかね🤔
ツール
Scriptarian
In addition to full support for the Swift Standard Library, Scriptarian includes ScriptingKit, a scripting framework we…scriptarian.com
AppleScriptでmacOSのアプリを弄るコード書いて色々自動化出来たりしますが、文法が謎(しっかり勉強すれば分かるのかもしれませんが無駄に学習コスト高めな印象)で書きにくかったのですが、それをコード補完機能ありのSwiftで書けるようにしてくれる素晴らしいツールです( ´・‿・`)試用無しに$10で購入必要で少し迷いつつもポチりましたが、すごく良い感じに動いて感動しました。YosemiteからはJavaScriptで書けるようになって敷居下がりましたが、それでもコード補完無いとなかなか快適に書けず微妙に思っていましたが、これで解決した気がしています。
qasim/Airstream
AirPlayを簡単に扱えるようにするフレームワークです。同梱のサンプルアプリをmacOSで起動すると、iOS端末の音楽などをmacOSで流せるようになります。良いスピーカー使っている場合などに便利です。今までAirServer使っていましたが、このサンプルアプリがシンプル必要充分で、また自分で機能拡張もサクッと書けそうで乗り換えました。
リリース
Xcode 8.2 beta
Xcode 8.2 is the last release that will support Swift 2.3. Please migrate your projects to Swift 2.3 code to Swift 3 syntax by opening the project and choosing Edit > Convert > To Current Swift Syntax.
Swift 2.3はXcode 8.2が最後なので、それより新しいのを使いたい場合はSwift 3対応が必須となります。Appleにしてはこれでもかなり優しい互換対応だったと思っています。今はもうOSSライブラリもほとんどSwift 3対応済みでTipsも色々転がっているので、どうせやるなら早めに対応するに越したことないかと。
iOS 10.2 beta 1
「やっぱりやめた」という変更が入らなければ、シャッター音・スクショ音がかなり改善されそうです🎉
あとは絵文字の追加やデザイン調整などが目立った変更ですかね。
その他、こちらに分かりやすく網羅されています:
iOS 10.2 beta 1 brings some significant new changes to iOS 10. Headlined by over 70 new Unicode 9 emoji, the update is…9to5mac.com
その他のApple製品アップデート
PaintCode 3
PaintCode is a unique vector drawing app that generates Objective-C or Swift code in real time, acting as a bridge…www.paintcodeapp.com
ベクター画像をコード変換してくれるPaintCodeがメジャーアップデートして、Swift 3・Android・JavaScript対応などしました。また、これを機にApp Storeからも撤退しました。
Articles about PaintCode's new features, interviews, application development topics.www.paintcodeapp.com
その他のニュース
WebPayサービス終了
使っていた場合は大変ですね( ´・‿・`)
Microsoft Teams
Microsoft Teams is the chat-based workspace in Office 365 that integrates all the people, content, and tools your team…products.office.com
Today, in New York City, we announced Microsoft Teams-the new chat-based workspace in Office 365. Microsoft Teams is an…blogs.office.com
Microsoftがグループチャットサービスを発表しました。
早速SlackからMicrosoftへのメッセージが出されたりと盛りがりました。
Wow. Big news! Congratulations on today’s announcements. We’re genuinely excited to have some competition.slackhq.com
Adobe MAX 2016
世界60カ国から7,000人以上のクリエイターが集まり、新たな刺激、学び、出会いを参加者だれもが得られる究極のクリエイティブ・カンファレンスです。明日のクリエイティブにつながるヒントがここにはあります。max.adobe-web.jp
Adobe XDはiOSアプリ開発者にとって少し注目ですね👀
Adobe Systemsアドビ システムズ が世界最大のクリエイティブカンファレンス Adobe MAX 2016(米サンディエゴ)で、 Experience Design CC(Adobe XD) の大規模な機能追加を発表しました。…ics.media
Adobeアドビ Systems(以下、Adobe)が主催の世界最大のクリエイティブティ・カンファレンス「 Adobe MAX 2016 」。二日目は「スニークス」というAdobeが開発中の実験技術を紹介する講演が行われました。紹介され…ics.media
筆者の小話
Instapaperのプレミアム機能が無料化したのが個人的に大きな関心事でした。今までPocketを使っていましたが、乗り換えました。正確には、PocketがRead It Laterの時からInstapaperもたまに使いつつ、最近はPocketに絞っていましたが、またInstapaperに戻ってきた感じです。
どちらも使い倒して一長一短ですが、個人的にはInstapaperが今はしっくり来ていて、しばらくはこちらで「あとで読む」管理をしていこうかなと思っています。
先週、Tsutsumi ShuichiさんがWantedlyフィードにて連載を始められ、第一回としてサンフランシスコでのエンジニア生活、1週目 — Wantedlyが公開されましたが、Instapaperのスピーチ機能を使って読み上げてもらったらPodcastみたいで良い感じでした。
はじめまして!iOSプログラマの堤修一と申します。この度こちらで連載をさせていただくことになりました。最初このオファーをいただいたとき、連載陣を見てびびりました。芸能人クラスに有名な方々、もしく…www.wantedly.com
技術系記事は読み上げ厳しいですが、こういうストーリーぽい記事は相性良いので、家事やランニングの時間など使って効率的に記事消化こなしていこうと思っています( ´・‿・`)
↓アカウントやSwift・iOSコラムPublicationフォローしていただけるとありがたいです🙇 PublicationフォローしていただけるとこのSwiftレターのメール通知も届くようになります( ´・‿・`)