Swift5.0チートシート ~Swift 5.0を爆速でキャッチアップしよう！~

## この記事について
**「Swift5.0のキャッチアップをまだできてない...! 」**という方に向けて、Swift5.0のアップデートについてまとめたチートシートを作りました。

今回23個もの項目があるので、なるべく**スマート✨**かつ**爆速🔥**でキャッチアップしちゃいましょう！

なるべく**シンプル**な説明になるよう心がけています。内容の詳細については、[公式ドキュメント](https://swift.org/blog/swift-5-released/)を参考にするのが良いと思います。
今回載せる画像自体の転用は自由ですのでご自由にご利用ください。


全体の内容がまとまったスライドは[こちら](https://speakerdeck.com/kokoheia/swift5-cheet-sheet)です
筆者の理解も完全ではないので、訂正がありましたらご指摘いただけると幸いです。mm 

## 目次
1. 全体的なアップデート
2. 標準ライブラリのアップデート
3. 言語仕様/コンパイラのアップデート

## 

## 1. 全体的なアップデート
### ABI Stability
![Swift5 Cheet Sheet](https://user-images.githubusercontent.com/32465018/57577691-3300b680-74b8-11e9-9f68-a49fd1d939e0.png)

## 2. 標準ライブラリのアップデート
### 1. Stringの特殊文字
![Swift5 Cheet Sheet (1)](https://user-images.githubusercontent.com/32465018/57577692-34ca7a00-74b8-11e9-9cba-f8e698855059.png)
### 2. Unicode Property
![Swift5 Cheet Sheet (2)](https://user-images.githubusercontent.com/32465018/57577693-385e0100-74b8-11e9-92ba-665b2c965e91.png)
### 3. 型名の変更 (DictionaryLiteral -> KeyValuePairs)
![Swift5 Cheet Sheet (3)](https://user-images.githubusercontent.com/32465018/57577714-3e53e200-74b8-11e9-9226-365a95cca7e8.png)
### 4. Never型のプロトコル準拠
![Swift5 Cheet Sheet (4)](https://user-images.githubusercontent.com/32465018/57577713-3e53e200-74b8-11e9-9a1f-78375e2937b9.png)
### 5. ContactValueMapの追加
![Swift5 Cheet Sheet (5)](https://user-images.githubusercontent.com/32465018/57577712-3dbb4b80-74b8-11e9-92bd-7c42c656af5d.png)
### 6. Character Propertiesの追加 
![Swift5 Cheet Sheet (6)](https://user-images.githubusercontent.com/32465018/57577711-3dbb4b80-74b8-11e9-822c-9ce3102b2d54.png)
### 7. isMultipleの追加
![Swift5 Cheet Sheet (7)](https://user-images.githubusercontent.com/32465018/57577710-3dbb4b80-74b8-11e9-9592-7c965f5f3609.png)
### 8. 文字列補間のカスタマイズ
![Swift5 Cheet Sheet (8)](https://user-images.githubusercontent.com/32465018/57577709-3dbb4b80-74b8-11e9-88da-c7726946c44f.png)
### 9. SIMD Vectorsの追加
![Swift5 Cheet Sheet (9)](https://user-images.githubusercontent.com/32465018/57577708-3d22b500-74b8-11e9-8b41-7c1aaf845d16.png)

### 10. カスタマイゼーションポイントの除外 
![Swift5 Cheet Sheet (10)](https://user-images.githubusercontent.com/32465018/57577707-3d22b500-74b8-11e9-9a36-c75554004239.png) 
### 11. Numericプロトコルの修正
![Swift5 Cheet Sheet (11)](https://user-images.githubusercontent.com/32465018/57577706-3d22b500-74b8-11e9-8a9d-54f8c81d1abb.png)
### 12. Sequence.SubSequenceの消去
![Swift5 Cheet Sheet (12)](https://user-images.githubusercontent.com/32465018/57577705-3d22b500-74b8-11e9-909b-b5fee14bf3aa.png)
## 13. Result型の追加
![Swift5 Cheet Sheet (13)](https://user-images.githubusercontent.com/32465018/57577704-3c8a1e80-74b8-11e9-95df-56d383ddbd6f.png)
### 14. withContiguous{Mutable}StorageIfAvailableの追加
![Swift5 Cheet Sheet (14)](https://user-images.githubusercontent.com/32465018/57577703-3c8a1e80-74b8-11e9-8277-596b59808330.png)
### 15. RangeのCodableへの準拠
![Swift5 Cheet Sheet (15)](https://user-images.githubusercontent.com/32465018/57577702-3c8a1e80-74b8-11e9-896c-9d81353abfca.png)

### 16. StringのencodedOffsetの廃止
![Swift5 Cheet Sheet (16)](https://user-images.githubusercontent.com/32465018/57577700-3c8a1e80-74b8-11e9-9c93-de1cf78e14b7.png)

## 3. 言語仕様/コンパイラのアップデート
### 17. Enumへのunknown詞の追加
![Swift5 Cheet Sheet (17)](https://user-images.githubusercontent.com/32465018/57577699-3bf18800-74b8-11e9-825e-10089a2fec32.png)

### 18. リテラルを使った強制init
![Swift5 Cheet Sheet (18)](https://user-images.githubusercontent.com/32465018/57577698-3bf18800-74b8-11e9-8f4a-395d0a6d4b84.png)
### 19. Dynamically callable
![Swift5 Cheet Sheet (19)](https://user-images.githubusercontent.com/32465018/57577697-3bf18800-74b8-11e9-8557-a47178579e7a.png)

### 20. compilation conditionsの未満オプション
![Swift5 Cheet Sheet (20)](https://user-images.githubusercontent.com/32465018/57577696-3bf18800-74b8-11e9-8902-afc53edb6deb.png)

### 21. Identity keypath
![Swift5 Cheet Sheet (21)](https://user-images.githubusercontent.com/32465018/57577695-3b58f180-74b8-11e9-8923-c61b940be0f2.png)
### 22. try?のオプショナル構造の簡略化
![Swift5 Cheet Sheet (22)](https://user-images.githubusercontent.com/32465018/57577694-3b58f180-74b8-11e9-8683-3cabbad04738.png)

## あとがき
いかがでしたでしょうか？
Swiftの最新バージョンに触れてみることは、自分のコードの品質チェックのきっかけになるのはもちろん、今まで触ったこともない仕様との出会いがあったりして非常に楽しいものです。Swift5.0はxcode10.2以上で動かすことができるので、皆さんもぜひ一度ご自身でコードを書いて見てください。

## 参考にした記事
- https://swift.org/blog/swift-5-released/
- https://swift.org/blog/abi-stability-and-more/
- https://www.hackingwithswift.com/articles/126/whats-new-in-swift-5-0
- https://medium.com/@d_date/whats-new-in-swift-5-70225f063b87
- https://qiita.com/koher/items/7e92414082476fb87b76