Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Swift5_Cheet_Sheet.pdf

Kohei Arai
May 10, 2019
1.2k

 Swift5_Cheet_Sheet.pdf

Kohei Arai

May 10, 2019
Tweet

Transcript

  1. Kohei Arai @kokoheia 自己紹介 • Mercari / 新卒 iOS Engineer

    • Twitter: @kokoheia • Instagram: @koatiarai • 趣味: ポートレート撮ってます • 最近はARKitと戯れたいと思っています
  2. 1. 全体的なアップデート ABI Stability 3. 言語仕様 / コンパイラの アップデート 17.

    Enumへの@unknownの追加 18. リテラルを使った強制init 19. Dynamically callable 20. compilation conditionsの 未満オプション 21. Identity keypath 22. try?のオプショナル構造の簡 略化 2. 標準ライブラリのアップデート 1. Stringの特殊文字 2. Unicode Property 3. 型名の変更 4. Never型のプロトコル準拠 5. ContactValueMapの追加 6. Character Propertiesの追加 7. isMultipleの追加 8. 文字列補間のカスタマイズ 9. SIMD Vectorsの追加 10. カスタマイゼーションポイントの除外 11. Numericプロトコルの修正 12. Sequence.SubSequenceの消去 13. Result型の追加 14. withContiguous{Mutable}StorageIf Availableの追加 15. RangeのCodableへの準拠 16. StringのencodedOffsetの廃止 Table of Contents Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia
  3. 1 Stringの 特殊文字 要約 • Stringの中で "" や \などの特殊文字 を扱う方法が簡単になった

    • 特殊文字の前に \ をつける代わりに全体を # でくくる方式になっ た メリット • 主に正規表現などを効率的に書きやすくなった Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia
  4. 要約 • DictionayLiteral型がKeyValuePairs型という名前に変わった メリット • こちらの方が名前が正確に役割を表している 3 型名の変更 DictionaryLiteral ↓

    KeyValuePairs Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia https://github.com/apple/swift-evolution/blob/master/proposals/0214-DictionaryLiteral.mdより
  5. 要約 • Never型がEquatableとHashable型に準拠した。 メリット • Generics、enum、collection等の中でNeverを使えるようになった。 • 現在はfatalError関数の返り値などでしか見かけないが、もう少し柔軟 に使うことができそう 4

    Never型の プロトコル 準拠 Equatable Hashable Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia https://github.com/apple/swift-evolution/blob/master/proposals/0215-conform-never-to-hashable-and-equatable.mdより
  6. 要約 • Intが何の倍数か教えてくれる メリット • %を使うよりも可読性が向上した • IDEがAuto fillしてくれるのでタイピングが楽 •

    小さい単位で再利用が可能 • %を使った計算で間違うリスクが減る • パフォーマンスの向上 7 isMultiple の追加 Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia
  7. 要約 • SIMDVectorsというクラスが追加された メリット • SwiftでSIMDプログラミングしやすくなった • SIMD = 1つの命令形で複数のデータを処理する並列化の一種

    *SIMD = Single Instruction, Multiple Data 9 SIMD Vectors の追加 Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia https://github.com/apple/swift-evolution/blob/master/proposals/0229-simd.mdより
  8. 要約 • Sequence, Collection, BidirectionalCollectionにおける下記の Customization Pointsが除外されたので、カスタム実装ができなく なった *Customization Points

    = protocolで宣言されているmethod メリット • 前提として、カスタマイゼーションポイントはコンパイルのコストが かかる。 • ABIスタビリティを実現する時に、カスタマイゼーションポイントはこ れからremoveできないが、新たにaddすることはできる。 • 従って、一旦removeして本当に必要な時にだけaddして使うという設 計 10 Customization Points の除外 Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia https://github.com/apple/swift-evolution/blob/master/proposals/0232-remove-customization-points.mdより
  9. 要約 • Numericプロトコルが数学的に間違っていたので、AdditiveArithmetic プロトコルを新たに追加して修正した。 メリット • Numericプロトコルの数学的な間違いを修正した • Shapeが定義されていなくても、スカラーから動的なベクトルへの変換がで きるようになった

    • 乗算などの演算子を使う際の型の曖昧さを取り除いた 11 Numeric プロトコル の修正 Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia https://github.com/apple/swift-evolution/blob/master/proposals/0233-additive-arithmetic-protocol.mdより
  10. 要約 • SubSequence型を消去し、対象の関数の返り値をDropFirstSequence, DropWhileSequence, [Element]などより具体的な型を返すように変更し た メリット • それぞれの関数の処理に適切な型に変換することでパフォーマンスが向上 した

    • Sequence → CollectionのConditional Conformanceを可能にした 12 Sequence. SubSequence の消去 → Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia https://github.com/apple/swift-evolution/blob/master/proposals/0234-remove-sequence-subsequence.mdより
  11. 要約 • Sequence型にwithContiguous{Mutable}StorageIfAvailable関数が追加 された メリット • withUnsafeBufferPointerとwithUnsafeMutableBufferPointerに対しても ジェネリカルに書くことができ、表現力を増した 14 with

    Contiguous {Mutable} Storage IfAvailable の追加 Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia https://github.com/apple/swift-evolution/blob/master/proposals/0237-contiguous-collection.mdより
  12. 要約 • Swiftをpythonやjava scriptのように動的に呼び出せるようになる。 @dynamicMemberLookupを拡張したもの。 メリット • Pythonを使った機械学習など、動的ライブラリと連携する際に有用そ う 19

    Dynamically callable の追加 Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia https://github.com/apple/swift-evolution/blob/master/proposals/0216-dynamic-callable.mdより
  13. 要約 • Compilation Conditionでless than (未満)が使えるようになった メリット • コードの可読性が上がった 20

    compilation conditions の「未満」 オプション ↓ Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia https://github.com/apple/swift-evolution/blob/master/proposals/0224-ifswift-lessthan-operator.mdより
  14. 要約 • try?から取得されるoptionalの階層がnestされないようになった メリット • optional unwrappingの必要な回数が減るので、コードもシンプルにな る。 22 try?の

    オプショナ ル構造の 簡略化 Swift 5.0 Cheet Sheet - Kohei Arai @kokoheia https://www.hackingwithswift.com/articles/126/whats-new-in-swift-5-0よりコード引用