「Swiftのこれまでの動向のまとめと今後のさらなる発展の期待」フォローアップ - iOSDC 2016

[iOSDC 2016](https://iosdc.jp/2016/)にて発表してきまして、そのフォローアップ記事です(　´･‿･｀)

発表直後に、こちらのMedium記事も書きました。
[iOSDCで発表してきました「Swiftのこれまでの動向のまとめと 今後のさらなる発展の期待」 - Medium](https://medium.com/@mono0926/iosdc-224b89c1df05#.1lsen03fe)

![1*4uVcj3oDBFxufAg_izlA8A.png](https://qiita-image-store.s3.amazonaws.com/0/19398/08ebfee3-65cd-82ac-4532-aba2cb6c5cbb.png)
(公式ロゴをごにょごにょして作った改変ロゴ(問題あれば消します))


---

# 発表内容

タイトル通り、Swiftのこれまでと今後について、15分で俯瞰出来る内容だったと思います。

こちらがスライドです:

<iframe src="//www.slideshare.net/slideshow/embed_code/key/wlBvs4d8ljtbty" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/mono0926/swift-iosdc-2016-65179236" title="Swiftのこれまでの動向のまとめと 今後のさらなる発展の期待 - iOSDC 2016" target="_blank">Swiftのこれまでの動向のまとめと 今後のさらなる発展の期待 - iOSDC 2016</a> </strong> from <strong><a target="_blank" href="//www.slideshare.net/mono0926">将之 小野</a></strong> </div>


発表動画は https://youtu.be/hkaX4274N9w?t=4h57m44s で見られます。
自作の[LINEクリエイターズスタンプ](https://store.line.me/stickershop/product/1000854/ja)を駆使しています(　´･‿･｀)

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">スライドの犬(ラヴさん)は、LINEクリエイターズスタンプになっているので、ポチっていただけるととても喜びます🙇 がんばって40種類描きました(　´･‿･｀) <a href="https://twitter.com/hashtag/iosdc?src=hash">#iosdc</a><a href="https://t.co/w01zrdYSfF">https://t.co/w01zrdYSfF</a> <a href="https://t.co/LEkKs6JJ1I">https://t.co/LEkKs6JJ1I</a></p>&mdash; M Ono (@_mono) <a href="https://twitter.com/_mono/status/766887974097199104">August 20, 2016</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

また、今回の発表の、特にSwift 3以降に関連する情報が膨大でけっこう大変でした。

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">こういう主要なメーリス投稿・Proposal・<a href="https://t.co/s1m8t8j3kk">https://t.co/s1m8t8j3kk</a>などを読み込みましたʕ•͡ω•ʔ<a href="https://twitter.com/hashtag/iosdc?src=hash">#iosdc</a><br>Swift 3の開発の振り返りとSwift 4の計画が記されたメールの紹介 <a href="https://t.co/27vMVk4oAL">https://t.co/27vMVk4oAL</a></p>&mdash; M Ono (@_mono) <a href="https://twitter.com/_mono/status/766890623177662464">August 20, 2016</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

スライドもプレゼンも、15分という時間制限が悩ましくてけっこう端折ってしまっていますが、今後別途記事などでフォローしていくつもりです。

## Swiftコラム連載

発表のラストで紹介しましたが、[Build InsiderでSwiftコラムを書いています](http://www.buildinsider.net/column/ono-masayuki)。

詳しくはこちら:
[Build InsiderでSwiftコラムの連載を始めました🎉 — Medium](https://medium.com/@mono0926/swift-column-28d6288ac56f#.ays2awxs7)

今後の記事はあくまで予定ですが、こういうフィードバックいただけたりして、ありがたやです😋

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">第3、6、7回が特に良さそう。<a href="https://twitter.com/hashtag/iosdc?src=hash">#iosdc</a> <a href="https://twitter.com/hashtag/b?src=hash">#b</a> <a href="https://t.co/9KS8XzB5yx">pic.twitter.com/9KS8XzB5yx</a></p>&mdash; Kohei Tabata (@nerd0geek1) <a href="https://twitter.com/nerd0geek1/status/766881785120600068">August 20, 2016</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

Qiitaとうまく使い分けつつ連載がんばります。

# 質疑応答

質疑応答は、 https://youtu.be/hkaX4274N9w?t=5h13m30s からのところです。

以下のページなど参照し、

- [スピーカーのみなさまへ、お知らせとお願い | iOSDC Japan 2016](https://iosdc.jp/2016/c/news/20160818-for-speakers.html)
- [登壇初心者のみなさんへ · YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa](http://yapcasia8oji-2016mid.hachiojipm.org/2016/06/11/for-beginner-talker/)

> トーク終了後のQ&Aタイムでは質問者にもマイクを渡して質問してもらいますが、録画や配信には質問者のマイクの音声は乗らないことがあります。必ず質問を復唱してからの回答をお願いします。例: 「○○というご質問ですね。それは〜」

こちらは気を付けようと思っていたものの、実際けっこう難しくて出来てなかった部分もちょっとありました。(ご質問もやや難しめだった気が)

## 質疑応答のフォローアップ

当日うまく答えられなかった部分もあったり、分かりにくいところがあったりしたと思うので、フォローしておきます。

### 既存のSwift 2のコードをSwift 3にアップデートするのはいつ頃を目処にすれば良い？

[Swift Programming Language Evolution: Proposal Status](https://apple.github.io/swift-evolution/)で、Swift 3に入れたい内容はほとんど入っていて(入りきらないものはリリースから漏れるかも)、また今Xcode 8 beta 6で、あと1-2回でGM版(ほぼ正式版)がリリースされるはずなので、今対応してもこれからの追加対応の手間も少なくて良さそうです。

<img width="1270" alt="Screen Shot 2016-08-21 at 11.12.44 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/19398/fc66c91c-efed-d746-51ec-ef32e3ed10dc.png">

ただ、今Xcode 8対応したところでベータということでまだリリース出来ない問題もあります。
個人的にはXcode 7・Swift 2.2のプロジェクトから、1-2日程度あれば充分一気に対応出来ると思っているので、GM版リリース後に対応するのが効率良さそうです。
(Swift 3の理解度・プロジェクト規模にもよりますが)

### 新しくアプリを作る際は、Swift 3でOK？

今からであれば、そのアプリのリリースはXcode 8正式版リリース以降になると思うので、それが良いと思います。(今のbeta 6はなぜか不安定ですが🤔)

### 逆に3で不満な変更点は？

どうしてこの変更をしたのだろう？と思った時は、[swift-evolutionリポジトリのProposal](https://github.com/apple/swift-evolution/tree/master/proposals)を見ると丁寧に、判断理由・他に検討した案など書かれていて、いつも納得させられているので、不満な変更点は無いです。逆に感心させられています。
[メーリングリスト](https://lists.swift.org/mailman/listinfo/swift-evolution)を見ると、実際の議論を見ることも可能です。

賛否両論な提案については、見送られたり持ち越されたりしている感じです。
[過去にリジェクトされた提案例](https://github.com/apple/swift-evolution/blob/master/commonly_proposed.md)も見ると、開発コミュニティのSwiftに対しての考え方がさらに分かると思います。


### 一番素晴らしい変更は？

特にSwift 3リリースに向けて「仮に今、一からSwift言語を作るとしたら、どういう仕様が望ましいか？」という視点で再考されていて、以下の仕様そぎ落としは素晴らしいと思いました。

- [swift-evolution/0004-remove-pre-post-inc-decrement.md at master · apple/swift-evolution](https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md)
- [swift-evolution/0007-remove-c-style-for-loops.md at master · apple/swift-evolution](https://github.com/apple/swift-evolution/blob/master/proposals/0007-remove-c-style-for-loops.md)

と質疑応答では言いましたが、他にも色々素晴らしいと感じる変更は多く、「一番」というのは難しいですね。
ちょっと違う観点だと、「2年間という短期間で(後方互換性を犠牲にしつつ)、高速に進化してきた」ということをすごく評価しています。後方互換性を犠牲にしてきたことで、開発者に負担強いることにはなっていますが、それも3-4で落ち着きますし、トータルで考えるとすごく効率良い進化を遂げてきているなと思っています。

### Swift3の正しい書き方とか、ガイドになるようないいものありますか？

[Swift.org - API Design Guidelines](https://swift.org/documentation/api-design-guidelines/)が最重要です。[Swift API Design Guidelinesの紹介(Swift 3版) - Qiita](http://qiita.com/mono0926/items/11203c8cce0d7f4548db)も書きましたのでご覧ください。

サンプルコードは難しいですが、[Appleのサンプルコード](https://developer.apple.com/library/ios/navigation/#section=Resource%20Types&topic=Sample%20Code)の比較的新しいものは良い気がします。

特に[Protocol and Value Oriented Programming in UIKit Apps - WWDC 2016 - Videos - Apple Developer](https://developer.apple.com/videos/play/wwdc2016/419/)で紹介されていた[LucidDreams: Protocol and Value Oriented Programming Sample Code](https://developer.apple.com/library/prerelease/content/LucidDreams/Introduction/Intro.html)はお勧めです。(是非セッションを観ながら)
セッションだけでなく、[Swift - Resources - Apple Developer](https://developer.apple.com/swift/resources/)の「Sample Code」で取り上げられているなど、Appleとしてもかなり推しています。
ただ、[SpriteKit](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Introduction/Introduction.html)の[SKNode](https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/)とUIViewを同じように扱える抽象化がされていて、UIViewのレイアウトをAutoLayout使わずにframe操作しています。そのため、実用的なサンプルか？というと微妙に思っていますが、それ踏まえて参考にするのは良いと思います👌

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">Apple謹製のProtocol・Value Orientedなサンプルコードヽ(・ω・｀）<br><br>LucidDreams: Protocol and Value Oriented Programming Sample Code <a href="https://t.co/pDIrlXNHpP">https://t.co/pDIrlXNHpP</a></p>&mdash; M Ono (@_mono) <a href="https://twitter.com/_mono/status/753530742269894656">July 14, 2016</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

この質疑応答フォローアップ書くにあたり、[iOSDC Japan 2016 参加メモ: B-9 Swiftのこれまでの動向のまとめと今後のさらなる発展の期待 - 絶品ゆどうふのタレ](http://yudoufu.hatenablog.jp/entry/2016/08/20/191605)にまとめていただいた内容がとても役立ちました、ありがとうございます🙇

# iOSDCについて

けっこう情報が分散している感じがあったので、まとめておきました:
[iOSDC 2016情報まとめ — Medium](https://medium.com/@mono0926/iosdc-f7557b0048b3#.gut59mc23)

個別の発表内容自体は、このあたりに網羅されていますヽ(・ω・｀）

- [iOSDC2016の発表のまとめ - Qiita](http://qiita.com/tattn/items/31601414433df538db63)
- [iOSDC Japan 2016 参加レポート #iosdc ｜ Developers.IO](http://dev.classmethod.jp/smartphone/iphone/iosdc-japan-2016-report/)
- [「#iosdc」の検索結果 - Togetterまとめ](http://togetter.com/search?q=%23iosdc&t=q)

## iOSDCの感想

とても良いイベントでした、ありがとうございました🙇

- 発表内容: 面白い
- お酒・ご飯: たくさん・おいしい😋
- 進行: とてもスムーズ
- 会場施設: WiFiも席も良い感じ(　´･‿･｀)
- おみやげ: Tシャツとパーカーありがとうございました、愛用します🙇

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">この時間にして、初めてスピーカー優先席に座ったʕ•͡ω•ʔ快適過ぎるʕ•͡ω•ʔ <a href="https://twitter.com/hashtag/iosdc?src=hash">#iosdc</a> <a href="https://t.co/iPp1eB2OUb">https://t.co/iPp1eB2OUb</a> <a href="https://t.co/01NZxadW38">pic.twitter.com/01NZxadW38</a></p>&mdash; M Ono (@_mono) <a href="https://twitter.com/_mono/status/766894851103285248">August 20, 2016</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">食事が豪華ʕ•͡ω•ʔ<a href="https://twitter.com/hashtag/iosdc?src=hash">#iosdc</a> <a href="https://t.co/oQ4XTuu2B8">https://t.co/oQ4XTuu2B8</a> <a href="https://t.co/hMV6at3BlJ">pic.twitter.com/hMV6at3BlJ</a></p>&mdash; M Ono (@_mono) <a href="https://twitter.com/_mono/status/766934445010059264">August 20, 2016</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">良いパジャマげっちゅʕ•͡ω•ʔ <a href="https://twitter.com/hashtag/iosdc?src=hash">#iosdc</a> <a href="https://t.co/giaAWF7iwF">https://t.co/giaAWF7iwF</a> <a href="https://t.co/N4pALceUhP">pic.twitter.com/N4pALceUhP</a></p>&mdash; M Ono (@_mono) <a href="https://twitter.com/_mono/status/766963294775181312">August 20, 2016</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">パジャマ利用NGとのことで外出ʕ•͡ω•ʔ <a href="https://twitter.com/hashtag/iosdc?src=hash">#iosdc</a> <a href="https://t.co/DWz9qyudTa">https://t.co/DWz9qyudTa</a> <a href="https://t.co/QghILE5eKl">pic.twitter.com/QghILE5eKl</a></p>&mdash; M Ono (@_mono) <a href="https://twitter.com/_mono/status/766971998895476736">August 20, 2016</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

次の開催願っております(　´･‿･｀)
![go.png](https://qiita-image-store.s3.amazonaws.com/0/19398/4bfcc44e-2f06-bc0b-c149-5506cb5d6a03.png)