Swift
WOULD ASYNC/AWAIT WORK IN SWIFT/IOS?
Swiftにasync/awaitが導入されたらどうなる?という想像記事です。Swift 4の計画でも少し言及されていました(参考: Swift 3の開発の振り返りとSwift 4の計画が記されたメールの紹介 — Qiita)が、導入されるとしても多分早くとも5以降になりそうな気がしています(記事では7?みたいに書いてあります)。今Swiftで非同期処理をする場合、ベタに書くとネストがどんどん深くなるなど問題出てきますし、あるいはRxSwiftやPromise系ライブラリなどOSS導入するとその学習コストが必要だったりという状況ですが、async/awaitが言語に標準搭載されるとそのあたり楽になりそうです。RxSwiftなど高度なライブラリは有用な場面はあり続けると思いますが、そこまでせずにasync/awaitだけでシンプルに解決出来る場面も多いと思っています。C#・Dart・Pythonなどすでにasync/await使える言語試してみると利用イメージが湧くと思います。
COMPOSITE VALIDATORS — REFINED
タイトル通り、Composite Validatorsという元記事の微妙な点を直して、良いバリデーション実装例を示しています。様々なValidatorにキレイにロジックが分離されていて良いですね。元記事ではValidatorはstructで定義されていたのがclassに変えられていますが、それについて理由が書かれていなくて気になりました🤔 (このようにどちらでも良さそうな時は僕もどちらにするか迷ったりします。)
それをEnumるなんて とんでもない! — Swift Enum antipattern
Swiftのenumは便利なので多用しがちですが、誤ったシーンでついうっかり使わないように、という内容です。
「AKIBA.swift 第7回」での発表の1つでしたが、その他は「AKIBA.swift 第7回」を開催しました! #akibaswiftにあがっています。
また、ちょうど熊谷と繪面がプログラミングコードの内から聴こえてくる声に耳を傾けて楽しむラジオ #7 実際のアプリ開発現場の世界の列挙型たちでもenumを取り扱っていました。こちらでは、中心の話題はrawValueでした。テーブルビューのSection・Rowにenum使うのは気持ち悪い、みたいな話もありましたが、僕はそこはまさに適したところだと思ってたので今いちしっくり来ませんでしたが🤔
Swift Evolution
12月3日はSwift オープンソース化 1周年記念でした🎉
ちょうど先週、第11回 Swiftのオープンソース化:書いて覚えるSwift入門|gihyo.jpというSofrware Designの連載の再掲記事もあがっていて、当時の盛り上がりを思い出しました( ´・‿・`)
ちなみに、日本時間では12月4日だったはずで、ちょうど今日が1周年です🎉 Swiftレターもちょうど10回目でよいタイミングです( ´・‿・`)
#5904: Add support and instructions for building Swift on Windows with MSVC
SwiftのWindows対応Pull Requestです。まだ始まったばかりの取り組みで、「SwiftがWindowsもサポート」となるのはしばらく先の気がしています。Swift for Windows — CodePlexという非公式の試み(5月以降しばらく音沙汰無いですが)もありましたが、今回は本家リポジトリのPull Request上で行われているので今後注目です👀
SE-0146: Package Manager Product Definitions
現行のSwift Package Manager 3.0の次の4.0 (おそらく来年のSwift 4.0リリースとセット)で、Package.swift のフォーマットにおいてProduct指定可能にするなどの改善をすることになりました。3.0のフォーマットのままでも使い続けられるようにするとのことです。
iOS
iOSアプリの不具合を申請なしで修正しよう — Yahoo! JAPAN Tech Blog
Rollout.ioを用いて、iOSアプリを申請無しでの変更(不具合修正)を実現している、とのことです。
おそらくJavaScriptCoreを用いてるのかなと思って少し調べてたら、Rollout Under The Hood — 2016 Update — Rollout.io Blogにもそう記載されていました。JavaScriptCoreについては、 Swift で JavaScript 始めませんか? #iOSDCが分かりやすいです。
面白いライブラリですが、個人的には使おうとは思いませんでした。致命的なバグ含んだ前提でリリースしたく無いですし、仮に含んでしまっても最近審査が1–2日で終わりますし、あるいは緊急申請使うなどで乗り切った方が良いかなと思いました。パッチあてるのはアドホック対応過ぎて管理しにくくなりそうですし。「Rollout.ioがあるからエンバグしても安心♪」という意識ではなく、「通常使わないが万が一のことがあった時に慎重に判断した上で使えるように」と保険的に入れておく、くらいだったらありかもしれない、というのが今のところの印象です。
iOS アプリで審査なしでパッチを当てられる Rollout の勉強会に行ってきたので紹介する — Qiita
日本国内だとヤフオクのアプリで2016年2月から実際にプロダクションで使用しており、月3回程度バグ修正のパッチを作成しているそうです。いまのところ何の問題もなく動いているそうで、リリースへの障壁が下がったと言っていました。
ヤフオクアプリではかなり多用されているようですね🤔
Yoshi: Your Loyal Development Companion
prolificinteractive/Yoshiという、デバッグ画面構築用のライブラリを活用して開発の調整作業を円滑にしている、とのことです。僕もデバッグ画面は大事だと思っていて、xmartlabs/Eurekaという本来フォーム画面を組む用のライブラリを用いて省力化しつつデバッグ時などしか呼び出せない画面での調整可能とする工夫をしていますが、デバッグ画面構築に特化したYoshiというライブラリも良さそうと思いました。
Refresh Control Changes in iOS 10
iOS 6で導入されたUIRefreshControl(引っ張りリロード, Tweetieアプリなどでやっていたのを真似した記憶🤔)ですが、これまではUITableViewControllerのみ正式サポートされていて、他のスクロール系コンポーネントで使う場合はaddSubviewする必要がありました(また、引っ張るとカクッとするなど微妙な挙動になったり)。iOS 10では、UIScrollViewにrefreshControlプロパティが追加されてこれまでのUITableViewControllerと同じ感覚で使えるようになりました🎉
参考: [iOS 10] 全てのスクロールビューでRefresh Controlがサポートされました | Developers.IO
ツール
cookiecutter-swift/Framework
前回紹介したJohnSundell/SwiftPlateとほぼ同じものがまた登場しました。JohnSundell/SwiftPlateと違って、QuickとNimbleに依存していて、初期生成でまあまあ待たされました。
plu/pxctest
pxctestコマンドで複数シミュレーターを指定すると並列にテストが実行出来るツールです。facebook/FBSimulatorControlに依存しています。
リリース
Apple系のリリース
iOS 10.2がbeta 4, 5と立て続けにリリースされました。そろそろ正式版ですかね。シャッター音が小さくなったりスクショ音がマナーモードでは消える、という嬉しい改善が含まれる予定です( ´・‿・`)
- 2016/11/28: macOS Sierra 10.12.2 beta 4 (16C53a)
- 2016/11/28: watchOS 3.1.1 beta 4 (14S879)
- 2016/11/30: tvOS 10.1 beta 4 (14U588)
- 2016/12/02: iOS 10.2 beta 5 (14C89)
iBooks StoryTime
読み上げなど対応したApple TVに最適化した絵本のサービスがAppleからリリースされました。無料の「アナと雪の女王」を試してみましたが、うちの環境では何度トライしても即クラッシュしてしまい、まったく使えませんでした😠
その他
Amazon re:Invent 2016
先週はこのAmazon re:Inventネタが盛りだくさんでしたね。
すでにAWS re:Invent 2016 | シリーズ | Developers.IOに膨大な情報まとめられていて、素晴らしいです👏
1記事で見渡せるものとしては、次がオススメです。
- AWS re:Invent 2016 発表された新サービス・新機能を一挙紹介!(トピック・関連エントリまとめ) #reinvent | Developers.IO
- AWS re:Invent2016【保存版】全セッションを網羅!非公式まとめ #reinvent | Developers.IO
個人的に特に気になったのはこのあたりです:
- Amazon Pinpoint — Targeted Push Notifications & Mobile Engagement
- Amazon Rekognition — Deep learning-based image analysis
- Amazon Polly — Lifelike Text-to-Speech
- Amazon Lex — Build Conversation Bots
Get Your Apps Ready for the Holidays
毎年恒例のApp Storeがアプリの申請・アップデートをお休みする期間ですが、今年は12月23日〜27日(日本時間では24日〜28日のはず)と発表されました。前後のリリーススケジュールハンドリングには気を付けましょう( ´・‿・`)
Redash の次にくるのは superset!! — Airbnb 謹製の BI ツールが OSS で
Business Intelligence(BI)ツールのairbnb/supersetが話題にあがっていました。
- Redash: いちど SQL から組み立てた指標とグラフを定期的にモニタリングしていくのに便利
- superset: Filter や Group By をいじりながら、インタラクティブにデータを探索してくのに便利
筆者の小話
Advent Calendarの初日に2記事書きました
年末恒例となったAdvent Calendar始まりましたね。僕は初日に2記事書きましたが、どちらも軽めのつもりが書いているうちにけっこうな量になってしまいました( ´・‿・`)
あと、3記事予定しています:
- Swift Advent Calendar 2016の最終日
- iOS Advent Calendar 2016の最終日
- 家庭を支える技術 Advent Calendar 2016の17日と最終日(17日はキャンセルするか迷い中)
Swift Tweetsのネタも今月半ばくらいまでに考えなくてはいけないなど、少し大変です🤔
【bitFlyer TechNight】 vol.2 C# LT Meetup!に参加
iOS・Swift系では無くてC#系の勉強会でしたが、奥さん発表するのとその他の方々の発表もどれも面白そうだったりiOSDCでもスポンサーされていたbitFlyerさん (ビットコイン100円分くらいいただきました) にも少し興味あったので、発表聞いてきました。数年前は.NETメインにやっていたこともあってとても面白かったです。たまにメインのコミュニティで無いところに顔出してみるのも良いですね( ´・‿・`)
バックナンバーはこちらから一覧出来ます。
↓アカウントやSwift・iOSコラムPublicationフォローしていただけるとありがたいです🙇 PublicationフォローしていただけるとこのSwiftレターのメール通知も届くようになります( ´・‿・`)