---
title: Swift 3.0 で変わったところ REVIVAL #love_swift
tags: 
author: [熊谷友宏](https://image.docswell.com/user/es_kumagai)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/VJNY2RYR78.jpg?width=480
description: 2026年8月29日、100 回記念 集まれ Swift 好き！Swift 愛好会 vol.100 @ Apple で発表したスライドです。10 年前に Swif 3.0 が登場する間際のタイミングで発表したスライドのリバイバル発表です。
published: August 29, 26
canonical: https://image.docswell.com/s/es_kumagai/ZGNMQM-2026-08-29-161556
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/VJNY2RYR78.jpg)

Swift 3.0 で
変わったところ
/*
2016.07.31
集まれSwift好き！Swift愛好会 vol9
*/
熊谷友宏
@es̲kumagai
REVIVAL
2026/08/29 100回記念
集まれSwift好き！Swift愛好会 vol.100@Apple


# Page. 2

![Page Image](https://bcdn.docswell.com/page/YE9P1MPZJ3.jpg)

Swift 愛好会
祝 100回記念
Since 2015-11-14


# Page. 3

![Page Image](https://bcdn.docswell.com/page/GE8D4LXYED.jpg)

愛好会と私


# Page. 4

![Page Image](https://bcdn.docswell.com/page/LELM6L897R.jpg)

第一印象
Swift の勉強会？
→ Swift が好きな人！は、満たしていそう。
もくもく会
？
ワークショップ …？
お酒を飲みながら…？ 食事をしながら…？
→ 興味がない。
⋯
▶︎
▶︎
▶︎
▶︎
Swift 愛好会


# Page. 5

![Page Image](https://bcdn.docswell.com/page/4JMY5M6VJW.jpg)

▶︎
Swift 愛好会
早速の転機
ダイレクトに誘われてみたり。
→ それなら、ちょっと訪れてみようか。


# Page. 6

![Page Image](https://bcdn.docswell.com/page/PJR93VPW79.jpg)

▶︎
▶︎
▶︎
▶︎
Swift 愛好会
なかなか良い
Swift を純粋に楽しむ集まり
たくさんの人が
楽しそうに過ごしている時間
みんなとたっぷり交流できる時間
和気藹々とした空気感


# Page. 7

![Page Image](https://bcdn.docswell.com/page/PEXQ4Z3VJX.jpg)

▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
参加通算
28回
2015年
12/20 Swift愛好会#2 @ レバレジーズ
2016年
01/20 Swift愛好会#3 @ 21cafe
04/24 Swift愛好会 vol6 @ レバレジーズ
06/27 Swift愛好会 vol8 @ 21cafe
2017年
07/24 Swift愛好会 vol21 @ レバレジーズ
08/19 Swift愛好会 vol22 海辺でもくもく @ カッシーノ
09/20 Swift愛好会 vol23 @ レバレジーズ
10/14 Swift Day ! @ 福岡 ̶ Swift 愛好会 ＆ Swift 復習会
11/20 Swift愛好会 vol24 @ レバレジーズ
2018年
01/20 Swift愛好会 vol26 ２周年・合宿
03/27 Swift愛好会 vol29 @ G&#039;s Academy
06/20 Swift愛好会 vol32 @ G&#039;s Academy
07/14 Swift Day ! @ 岩手 ̶ Swift 愛好会 ＆ Swift 復習会
11/09 Swift愛好会 vol36 @ レバレジーズ
2019年
03/29 Swift愛好会 vol39 @ メルカリ
07/31 Swift愛好会 vol9 @ レバレジーズ
08/29 AKIBA.swift Swift愛好会 @ レバレジーズ
10/27 Swift愛好会 vol12 @ G&#039;s Academy
12/03 Swift愛好会 vol13 １周年・合宿 @ 土善旅館
2017年
03/06 AKIBA.swift Swift愛好会 vol2 @ 21cafe
04/28 Swift愛好会 vol18 @ レバレジーズ
05/23 Swift愛好会 vol19 @ サイバーエージェント
05/27 Swift Day ! @ 沖縄 ̶ Swift 愛好会 ＆ Swift 復習会
2020年
01/25 第11回 HAKATA.swift x Swift愛好会 @ LINE Fukuoka
04/28 Swift愛好会 vol.50 @ オンライン
2025年
03/04 Swift愛好会 vol.92 @ DeNA
07/29 Swift愛好会 vol.94 @ ウェルスナビ
2026年
08/29 Swift愛好会 vol.100 @ Apple


# Page. 8

![Page Image](https://bcdn.docswell.com/page/3EK9Z8Y5ED.jpg)

▶︎
▶︎
▶︎
熊谷 友宏
Tomohiro Kumagai
Swift 言語が好み
みんなで楽しむ勉強会が好み
次は何をしようか ̶ 迷走傾向


# Page. 9

![Page Image](https://bcdn.docswell.com/page/L73WD29175.jpg)

近況


# Page. 10

![Page Image](https://bcdn.docswell.com/page/87DKPZGKJG.jpg)

▶︎
▶︎
▶︎
小型船舶免許（一級・特殊・特定）
2020/08/13 〜 @ 横浜港
何を思ったか、船舶免許を取得してみた。
ぜんぜん知らない世界が楽しい。
2020/08/13
一級小型船舶操縦士免許
2020/09/27
特殊小型船舶操縦士免許
2026/03/03
小型船舶 特定操縦免許


# Page. 11

![Page Image](https://bcdn.docswell.com/page/VJPKND33E8.jpg)

▶︎
▶︎
釣り を始めてみたり
2022/04/10 〜 @ 東京湾
操船に慣れてきたので、釣りをしてみる
→ そうそう釣れない
東京湾で狙える獲物
• カサゴ
• スズキ
• 真鯛
• ホウボウ
• ムシガレイ
• タコ
• タチウオ
• シロギス
• アジ
• サバ
• メバル
• サワラ
• ワラサ（ブリ）


# Page. 12

![Page Image](https://bcdn.docswell.com/page/2EVVK14NEQ.jpg)

▶︎
▶︎
釣りフェス 2026 観覧してみたり
2026/01/18 パシフィコ横浜
釣りをテーマにした催しもの
村田基さんの
キャスティングステージに感動


# Page. 13

![Page Image](https://bcdn.docswell.com/page/57GLQ215EL.jpg)

▶︎
▶︎
▶︎
囲碁シル 始めてみたり
2025/11/05 〜 @ 日本棋院 公式アプリ
新登場の囲碁ゲーム、始めてみた
AI サポートがとても良い
公式オフ会にも参加 → 初の碁会所 訪問
• 囲碁シル公式オフ会 @ 新宿囲碁サロン
• 囲碁シル交流会 @ 囲碁将棋喫茶 樹林（新橋）


# Page. 14

![Page Image](https://bcdn.docswell.com/page/4EQYKPDLJP.jpg)

▶︎
▶︎
囲碁イベント 参加してみたり
2026/01/09 〜 @ 日本棋院 東京本院 など
はじめて、実際の囲碁イベントを観覧
• 日本女子囲碁リーグ Li LEAGUE 開幕式
• 女流囲碁ブレーンズマッチ2026 大盤解説会
• 木部夏生三段サイン会
• 囲碁 将棋トークイベント 盤上の勝負師たち
はじめての指導碁を体験
実際の碁盤で第三者と打つのも初めて
→ 木部夏生さん、格好良すぎた


# Page. 15

![Page Image](https://bcdn.docswell.com/page/KJ4WPYZ571.jpg)

2025/12/06 イオンシネマ旭川駅前
宗派を超えた法話の大会
「また会いたいお坊さん」を決める
京都で開催
各地のイオンシネマで生中継
仏教をまっすぐエンターテインメントに
昇華できるの、すごい ！
⋯
▶︎
▶︎
▶︎
▶︎
H1 法話グランプリ 2025 観覧してみたり


# Page. 16

![Page Image](https://bcdn.docswell.com/page/LE1Y96R27G.jpg)

▶︎
▶︎
▶︎
▶︎
▶︎
やさしい Swift 勉強会
2021/07/14 〜 2025/11/28 @ 株式会社ゆめみ
第1回 〜 第602回
→ アクセンチュアへの買収統合に伴い、開催終了
株式会社ゆめみさんの、社内勉強会
毎週３回の頻度で開催
自分の勉強会活動を評価して声をかけてくれた
→ そんな企業、これまで現れなかった（素敵感）
初めての、オンラインでの勉強会開催
社外の人も参加歓迎するの、素敵感


# Page. 17

![Page Image](https://bcdn.docswell.com/page/GEWGQW12J2.jpg)

▶︎
▶︎
やさしい Swift 勉強会 SEASON 2
2025/12/03 〜 YouTube Live
株式会社ゆめみさんで開催していた勉強会、
ほぼ そのままのスタイルで継続開始
→ 第603回〜第699回（継続中）
YouTube ライブで 13:00 から、
基本「月・水・金」で配信中


# Page. 18

![Page Image](https://bcdn.docswell.com/page/47ZLW5P4J3.jpg)

▶︎
▶︎
▶︎
読書実況
2025/07/09 〜 YouTube Live
やさしい Swift 勉強会が「自分の」タメになっている実感なので、
同じような方式で気になる技術文書を眺めてみたり
YouTube ライブで、
だいたい毎日 21:00 から配信中
これまでに読み進めたもの
• The Rust Programming Language
• SwiftUI Tutorials
• Ruby ‒ Documentation
• The Python Tutorial
• Codex | OpenAI Academy


# Page. 19

![Page Image](https://bcdn.docswell.com/page/YJ6WG9MGJV.jpg)

みんなで Swift 復習会 GO!（実質、休止中）
2017/01/29 〜 今のところ 2020/01/25 まで
2017
2018
01/29 in 札幌 ‒ 1st
05/27 in 沖縄 ‒ 2nd
Swift Day !
07/15 in 仙台 ‒ 3rd
10/14 in 福岡 ‒ 4th
Swift Day !
09/07 in 札幌 ‒ 10th
mini
中止
mini
再会
2019
12/25 in 札幌 ‒ 10th
2018
2020
01/13 in 京都 ‒ 6th
04/14 in 福岡 ‒ 8th
Swift Day !
12/15 in 福岡 ‒ 11st
12/22 in 福岡 ‒ 5th
03/16 in 長野 ‒ 7th
07/14 in 岩手 ‒ 9th
01/25 in 福岡 ‒ 12nd
with NSEG
Swift Days !


# Page. 20

![Page Image](https://bcdn.docswell.com/page/GJ5MVNZXJ4.jpg)

技術同人誌 制作
2016/12/29 〜 @ 同人誌即売会 各種


# Page. 21

![Page Image](https://bcdn.docswell.com/page/9E2935RQ7R.jpg)

▶︎
▶︎
▶︎
囲碁シルしながら雑談配信
2026/04/18 〜 YouTube Live
何をするにも、
自分だけで学習しても意味ないような 心地のこの頃
囲碁シルもそんな気持ちで配信してみる
自分初のゲーム配信？


# Page. 22

![Page Image](https://bcdn.docswell.com/page/D7Y41KDYEM.jpg)

同人誌即売会
これからの出展予定
評論情報ザフェスタ
2026/09/21 神奈川 @ 川崎市産業振興会館
旅チケット 13
2026/10/10 東京 @ 大田区産業プラザ PiO
おもしろ同人誌バザール
2026/11/01 東京 @ ベルサール神保町
技術書典 21
2026/11/23 東京 @ 池袋サンシャインシティ


# Page. 23

![Page Image](https://bcdn.docswell.com/page/VENY2R6RJ8.jpg)

▶︎
▶︎
yidev 第４部 開幕
2026/01/17 〜 I.S.O 横浜
ひなっこ さん
第４部
主催
祝 第３部から
実に８年半ごしの再開幕
どうぞよろしくお願いしますね。


# Page. 24

![Page Image](https://bcdn.docswell.com/page/Y79P1MLZE3.jpg)

本日


# Page. 25

![Page Image](https://bcdn.docswell.com/page/G78D4LWY7D.jpg)

▶︎
▶︎
▶︎
本日は
招待登壇枠
過去の談義のリバイバル企画
→ 楽しそうな素敵企画
第9回での Swift 3.0 の談義を、
今の感想も含めながら聞けると嬉しい
ほかに 自分の印象に残っている談義があれば
そちらでも ウェルカム


# Page. 26

![Page Image](https://bcdn.docswell.com/page/L7LM6LN9JR.jpg)

🤔
⋯
自分の印象に残っている談義があれば
そちらでも
?


# Page. 27

![Page Image](https://bcdn.docswell.com/page/4EMY5MXVEW.jpg)

印象に残る発表といえば
第5回の発表
「プロトコル指向に想う世界観」
.9 2
E
  
.9 2
.9 2
⋯
▶︎
招待登壇枠
.9 2
3
0 - /
N
##1: 61 5 #


# Page. 28

![Page Image](https://bcdn.docswell.com/page/PER93VNWJ9.jpg)

印象に残る発表といえば
第5回の発表
「プロトコル指向に想う世界観」
.9 2
自主的に 却下
E
  
戦争の火種を、再び
生むわけにはいかない。
😏
.9 2
.9 2
⋯
▶︎
招待登壇枠
.9 2
3
0 - /
N
##1: 61 5 #


# Page. 29

![Page Image](https://bcdn.docswell.com/page/P7XQ4ZNVEX.jpg)

印象に残る発表といえば
人間界
ちらみせ
霊界
物質世界
明確に分離
精神世界
見えない
見える
人間
（インスタンス）
2016年 7月 31日
REVIVAL
⋯
Swift 愛好会 vol9
型
プロトコル


# Page. 30

![Page Image](https://bcdn.docswell.com/page/37K9Z8N57D.jpg)

▶︎
▶︎
▶︎
招待登壇枠
話題確定
第9回の発表
「Swift 3.0 で変わったところ」
Swift 愛好会の
運営側から提案された話題
自分自身もみんなと一緒に
リバイバル体験できて楽しそう
Swift 3.0 で変わったところ
カジュアル Swift 勉強会のみんなが
好きそうな話題 13 項目 に絞って紹介
/*
2016.07.31
集まれSwift好き！Swift愛好会 vol9
*/
EZ-NET 熊谷友宏
Swift 3.0 Developer Preview (Xcode 8.0 beta 3)
http://ez-net.jp/


# Page. 31

![Page Image](https://bcdn.docswell.com/page/LJ3WD2V1J5.jpg)

Swift 愛好会 vol9 REVIVAL
Swift 3.0 で変わったところ


# Page. 32

![Page Image](https://bcdn.docswell.com/page/8JDKPZ8KEG.jpg)

Swift 愛好会 vol9 REVIVAL
Swift 3.0 で変わったところ
え、まって、


# Page. 33

![Page Image](https://bcdn.docswell.com/page/VEPKND8378.jpg)

Swift 愛好会 vol9 REVIVAL
Swift 3.0 で変わったところ
え、まって、
スライドが
93 ページ あるんですけど。


# Page. 34

![Page Image](https://bcdn.docswell.com/page/27VVK1NN7Q.jpg)

Swift 3.0 で変わったところ
カジュアル Swift 勉強会のみんなが
好きそうな話題 13 項目 に絞って紹介
/*
2016.07.31
集まれSwift好き！Swift愛好会 vol9
*/
EZ-NET 熊谷友宏
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Developer Preview (Xcode 8.0 beta 3)
http://ez-net.jp/


# Page. 35

![Page Image](https://bcdn.docswell.com/page/5JGLQ2K57L.jpg)

W W D C16
/*
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
2016/06/13 - 2016/06/17
*/


# Page. 36

![Page Image](https://bcdn.docswell.com/page/47QYKPNLEP.jpg)

熊谷 友宏 /* @es_kumagai */
Tomohiro Kumagai
/**
*/
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
▶
Swift 言語が超大好きです！
▶
みんなで楽しむ勉強会が大好きです！
▶
勉強会で発表するのがとっても好きです！
▶
書籍 Xcode 5 徹底解説 書きました。
▶
技術ブログ EZ-NET を書いたりしてます。


# Page. 37

![Page Image](https://bcdn.docswell.com/page/KE4WPYG5J1.jpg)

勉強会を開催してます。
横浜 iPhone 開発者勉強会
カジュアル Swift 勉強会
わいわい・ゆるく、iPhone 開発者の
みんなで楽しく過ごすのが目的の会
ゆるくみんなで Swift 言語について
語らえる場が欲しくて始めた会
第25回は 11月26日の開催を目標
第11回は、８月下旬か９月上旬を目標
#yidev ＠ 横浜・馬車道
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
#cswift @ 横浜・青葉台


# Page. 38

![Page Image](https://bcdn.docswell.com/page/L71Y96D2JG.jpg)

カジュアル Swift 勉強会
#cswift @ 横浜・青葉台
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 39

![Page Image](https://bcdn.docswell.com/page/G7WGQWY2E2.jpg)

カジュアル Swift 勉強会
目的
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
1.
Swift について語らえる場所
2.
談笑しながら学びを深める
3.
せっかくだから楽しくありたい


# Page. 40

![Page Image](https://bcdn.docswell.com/page/4JZLW5X4E3.jpg)

カジュアル Swift 勉強会
心構え
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
1.
みんなの意見が正しい
2.
みんな知ってる、は思い込み
#cswift


# Page. 41

![Page Image](https://bcdn.docswell.com/page/YE6WG94GEV.jpg)

Swift 3
will be released sometime in late 2016
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 42

![Page Image](https://bcdn.docswell.com/page/GE5MVNQXE4.jpg)

そろそろ Swift 3 を
把握しておきたい …！
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 43

![Page Image](https://bcdn.docswell.com/page/972935PQJR.jpg)

Swift 3 概要
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 44

![Page Image](https://bcdn.docswell.com/page/DJY41K5Y7M.jpg)

Swift 3
トップニュース
▶ 2016 年の後半にリリース
▶ Swift 2 からの破壊的な仕様変更
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 45

![Page Image](https://bcdn.docswell.com/page/V7NY2RNRE8.jpg)

Swift 3
目標
▶ Swift 言語を確定・熟成させる
▶ Swift 3 以降でのソースコードの
互換性を目指す（努力目標）
▶ Swift 3 以降のソース互換破壊は
最小限の影響での実現を目指す
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 46

![Page Image](https://bcdn.docswell.com/page/YJ9P1MRZ73.jpg)

Swift 3
要点
▶ 新しい API ガイドライン
▶ 言語仕様を洗練
▶ Objective-C や C のコードを
Swift 文化に合わせて取込
▶ コンパイラや IDE の品質向上
▶ Swift パッケージマネージャー
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 47

![Page Image](https://bcdn.docswell.com/page/GJ8D4LGYJD.jpg)

Swift 3
着地点
言語の安定化を図り
他環境への移植性を見据える
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 48

![Page Image](https://bcdn.docswell.com/page/LJLM6LG9ER.jpg)

Swift 3 で変わったところ
多すぎるので、カジュアル Swift 勉強会のみんな が
好きそうな話題 に絞って紹介してみる
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 49

![Page Image](https://bcdn.docswell.com/page/47MY5MQV7W.jpg)

Swift 3.0 で変わったところ (1/6+)
API Design Guidelines
1.
SE-0023 Swift API ガイドライン
3.
SE-0006 標準ライブラリへの適用
2.
4.
SE-0059 命名規則へのガイドラインの適用
SE-0086 Foundation への適用
言語思想に関する変更
5.
SE-0047 戻り値を使わないと警告に
7.
SE-0067 小数点数プロトコル
6.
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
SE-0054 Implicitly Unwrapped Optional 廃止へ


# Page. 50

![Page Image](https://bcdn.docswell.com/page/P7R93V8WE9.jpg)

Swift 3.0 で変わったところ (2/6+)
言語思想に関する変更
8.
9.
SE-0069 Foundation の値型
SE-0055 nil ポインター表現
10. SE-0065 コレクションの再設計
11. SE-0052 イテレーターでの nil 保証
12. SE-0109 BooleanType プロトコルの廃止
文法に関する変更
13. SE-0037 演算子セクションでのコメント
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
14. SE-0066 引数リストの括弧を必須に


# Page. 51

![Page Image](https://bcdn.docswell.com/page/PJXQ4Z8V7X.jpg)

Swift 3.0 で変わったところ (3/6+)
文法に関する変更
15. SE-0046 引数ラベル名の規則を統一
16. SE-0040 属性引数の Equal を Colon に変更
17. SE-0071 メンバー参照で使える予約語
18. SE-0036 列挙型内での列挙子表記
19. SE-0060 既定値を持つ引数の順序を固定
プロトコル表記に関する変更
20. SE-0095 protocol&lt;A, B&gt; を演算子で表現
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
21. SE-0115 LiteralConvertible の名称変更


# Page. 52

![Page Image](https://bcdn.docswell.com/page/3JK9Z8K5JD.jpg)

Swift 3.0 で変わったところ (4/6+)
型に関する変更
22. SE-0091 演算子を型が実装
23. SE-0049 @noescape と @autoclosure を移動
24. SE-0031 型に対して inout を定義
25. SE-0035 inout のキャプチャを@noescape に制限
26. SE-0014 Unmanaged は Swift ポインタを扱う
言語構文の削除
27. SE-0007 C スタイル for ループの削除
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
28. SE-0004 演算子 ++ と -- の削除


# Page. 53

![Page Image](https://bcdn.docswell.com/page/LE3WD2Z1E5.jpg)

Swift 3.0 で変わったところ (5/6+)
言語構文の削除
29. SE-0002 カリー化関数構文の削除
30. SE-0003 引数リストから var を削除
31. SE-0053 引数リストから let を削除
32. SE-0029 タプルスプラットの廃止
文法に関する機能追加
33. SE-0048 ジェネリックな型エイリアス
34. SE-0043 case での複数パターンマッチ
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 54

![Page Image](https://bcdn.docswell.com/page/8EDKPZRK7G.jpg)

Swift 3.0 で変わったところ (6/6+)
型に関する機能追加
35. SE-0032 シーケンスから要素を見つけて取得
36. SE-0094 シーケンスを作る関数
37. SE-0008 Optional 向け flatMap を遅延可能に
38. SE-0093 Slice から元のシーケンスを参照
実行環境に関する変更
39. SE-0028 デバッグ識別子のモダン化
40. SE-0034 #line 識別子の曖昧性を解消
41. SE-0039 Playground リテラルのモダン化
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 55

![Page Image](https://bcdn.docswell.com/page/V7PKNDW3J8.jpg)

言語思想に関する変更
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 56

![Page Image](https://bcdn.docswell.com/page/2JVVK18NJQ.jpg)

戻り値を使わないと警告に
SE-0047
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 57

![Page Image](https://bcdn.docswell.com/page/5EGLQ255JL.jpg)

戻り値を使わないと警告に
以前は、戻り値を使わなくても警告なし
▶ Swift 2 は、
関数の結果を受け取らなくても警告されない
▶ 警告したいなら @warn̲unused̲result を付与
class Item {
// 戻り値を使わないと警告される
@warn_unused_result
func makeFilter() -&gt; Filter {…}
// 戻り値を使わなくても警告されない
func apply(filter: Filter) -&gt; Item {…}
}
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 2.x


# Page. 58

![Page Image](https://bcdn.docswell.com/page/4JQYKPZL7P.jpg)

戻り値を使わないと警告に
今後は、戻り値を使わないと警告あり
▶ Swift 3 は、
関数の結果を受け取らないと警告される
▶ 警告不要なら @discardableResult を付与
class Item {
// 戻り値を使わないと警告される
func makeFilter() -&gt; Filter {…}
// 戻り値を使わなくても警告されない
@discardableResult
func apply(filter: Filter) -&gt; Item {…}
}
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview


# Page. 59

![Page Image](https://bcdn.docswell.com/page/K74WPY35E1.jpg)

戻り値を使わないと警告に
@warn̲unused̲result は使えない
▶ @warn̲unused̲result は使えない
▶ mutable̲variant と message は
ドキュメントコメントで対応（未実装）
/// MutatingCounterpart: xxxx
/// MonmutatingCounterpart: xxxx
func makeFilter() -&gt; Filter {…}
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview


# Page. 60

![Page Image](https://bcdn.docswell.com/page/LJ1Y9612EG.jpg)

SE-0047 : 戻り値を使わないと警告に
感想
メソッド定義の負担がかなり軽減されそう
作る側が何も考えなくても、警告扱いになるのが良い！
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 61

![Page Image](https://bcdn.docswell.com/page/GJWGQW8272.jpg)

小数点数プロトコル
SE-0067
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 62

![Page Image](https://bcdn.docswell.com/page/4EZLW58473.jpg)

小数点数プロトコル
プロトコル設計の調整
▶ 大小比較可能
▶ 小数点数リテラルに対応
▶ 剰余演算子 % の廃止
▶ 基本的な定数の提供
▶ Float80 型が FloatingPoint に準拠
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 63

![Page Image](https://bcdn.docswell.com/page/Y76WG9PG7V.jpg)

小数点数プロトコル
FloatingPoint プロトコル
▶ 以前は、変換イニシャライザと状況判定、
特殊状態（ , NaN) を示すプロパティのみ
▶ 値生成、演算、定数などの機能を追加
項目
IntegerLiteralConvertible
)
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
用途
整数リテラルに対応
init(sign:exponent:signiﬁcand 不動小数点での初期化
static var radix
基数
static var pi
円周率
var ump
次に表現可能な値との差分
※ 幾つか抜粋


# Page. 64

![Page Image](https://bcdn.docswell.com/page/G75MVNKX74.jpg)

小数点数プロトコル
BinaryFloatingPoint プロトコル
▶ 基数が２の浮動小数点数表現
▶ FloatingPoint プロトコルを継承
▶ ビットパターンによる操作を追加
項目
用途
RawExponent
指数表現で使う符号なし整数型
static var significandBitCount
仮数表現で使えるビット数
var signiﬁcandBitPattern
仮数を表現するビットパターン
var binade
基数２を指数部で累乗した値
RawSigniﬁcand
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
仮数表現で使う符号なし整数型
※ 幾つか抜粋


# Page. 65

![Page Image](https://bcdn.docswell.com/page/9J2935WQER.jpg)

小数点数プロトコル
演算に対応
▶ プロトコル自身が演算に対応
▶ 四則演算、大小比較
func add&lt;T: FloatingPoint&gt;(lhs: T, rhs: T) -&gt; T {
return lhs + rhs
}
具体的な型を想定しなくても演算可能に
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview


# Page. 66

![Page Image](https://bcdn.docswell.com/page/DEY41KLYJM.jpg)

SE-0067 : 小数点数プロトコル
感想
浮動小数点を概念として扱えるのが良さそう
標準ライブラリにしては珍しく膨れたプロトコルな印象
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 67

![Page Image](https://bcdn.docswell.com/page/VJNY2R4R78.jpg)

Foundation の値型
SE-0069
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 68

![Page Image](https://bcdn.docswell.com/page/YE9P1MQZJ3.jpg)

Foundation の値型
以前の Foundation データ型
▶ Foundation のデータ型は参照型
▶ Swift の可変性・不変性と相性が悪い
enum Item {
case binary(NSData)
}
可変性を、宣言でなく型で制御
let data1: NSMutableData = …
let data2: NSData = …
値型のインスタンスを生成
let item = Item.binary(data1)
data1.appendData(data2)
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
data1 の更新が item にも影響
Swift 2.x


# Page. 69

![Page Image](https://bcdn.docswell.com/page/GE8D4LQYED.jpg)

Foundation の値型
今後の Foundation データ型
▶ 従来の参照型を 別の値型 にブリッジ
▶ Swift の可変性・不変性と調和する
enum Item {
case binary(Data)
}
可変性を、宣言 let, var で制御
var data1: Data = …
let data2: Data = …
値型のインスタンスを生成
let item = Item.binary(data1)
data1.appendData(data2)
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
data1 の更新は item に影響なし
Swift 3.0 Preview


# Page. 70

![Page Image](https://bcdn.docswell.com/page/LELM6LX97R.jpg)

Foundation の値型
新しいデータ型
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
値型
参照型
AﬃneTransform
NSAﬃneTransform
CharacterSet
NSCharacterSet, NSMutableCharacterSet
Date
NSDate
DateComponents
NSDateComponents
Data
NSData, NSMutableData
IndexSet
NSIndexSet, NSMutableIndexSet
IndexPath
NSIndexPath
Notiﬁcation
NSNotiﬁcation
PersonNameComponents
NSPersonNameComponents
URL
NSURL
URLComponents
NSURLComponents
URLQueryItem
NSURLQueryItem
UUID
NSUUID


# Page. 71

![Page Image](https://bcdn.docswell.com/page/4JMY5MLVJW.jpg)

SE-0069 : Foundation の値型
感想
参照型と値型をブリッジで運用するのが好み
標準ライブラリでなく Foundation で定義していて興味深い
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 72

![Page Image](https://bcdn.docswell.com/page/PJR93VKW79.jpg)

イテレーターでの nil 保証
SE-0052
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 73

![Page Image](https://bcdn.docswell.com/page/PEXQ4ZLVJX.jpg)

イテレーターでの nil 保証
次の値がないときは nil を約束
▶
▶
これまでは preconditionFailure の可能性も
今後は、必ず nil で表現する方針に
Advance to the next element and return it, or `nil` if no
next element exists.Once `nil` has been returned, all
subsequent calls return `nil`.
protocol IteratorProtocol {
associatedtype Element
^
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
mutating func next() -&gt; Element?
Swift 3.0 Preview


# Page. 74

![Page Image](https://bcdn.docswell.com/page/3EK9Z8L5ED.jpg)

SE-0052 : イテレーターでの nil 保証
感想
方針として例外が除かれたのは嬉しい
コメントの修正だけで嬉しくなれるの、おもしろい
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 75

![Page Image](https://bcdn.docswell.com/page/L73WD23175.jpg)

BooleanType プロトコルの廃止
SE-0109
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 76

![Page Image](https://bcdn.docswell.com/page/87DKPZ4KJG.jpg)

BooleanType プロトコルの廃止
根拠
▶ 真偽値の抽象化は複雑さを招く
▶ 現行の API では大抵 Bool 型を採る
▶ ObjCBool と Bool の相互に変換可能
protocol BooleanType {
var boolValue: Bool { get }
}
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 2.x


# Page. 77

![Page Image](https://bcdn.docswell.com/page/VJPKNDM3E8.jpg)

Foundation の値型
抽象化を意識することによる複雑化
▶ Bool ではなく BooleanType を使う
▶ この書き方にどれくらい価値があるだろうか？
func remove&lt;T:BooleanType&gt;(recursively flag: T) {
…
}
func isKindOf&lt;R:BooleanType&gt;(type: AnyType) -&gt; R {
…
}
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 2.x


# Page. 78

![Page Image](https://bcdn.docswell.com/page/2EVVK19NEQ.jpg)

Foundation の値型
条件分岐では美しく使えていた …
▶ if や guard は BooleanType に対応
▶ この場合は美しく機能する
struct Condition : BooleanType {
…
}
let condition = Condition(…)
if condition {
…
}
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
以前は、スマートに比較可能だった
Swift 2.x


# Page. 79

![Page Image](https://bcdn.docswell.com/page/57GLQ2Z5EL.jpg)

BooleanType プロトコルの廃止
廃止による影響（予定）
▶ BooleanType プロトコルが消滅
▶ 演算子 !, &amp;&amp;, || を Bool 型で扱う
func &amp;&amp; (lhs: Bool, rhs: () -&gt; Bool) -&gt; Bool
func || (lhs: Bool, rhs: () -&gt; Bool) -&gt; Bool
func ! (a: Bool) -&gt; Bool
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview


# Page. 80

![Page Image](https://bcdn.docswell.com/page/4EQYKPLLJP.jpg)

SE-0109 : BooleanType プロトコルの廃止
感想
プロトコル廃止で全体がシンプルになりそう
抽象化の必要性を考えるときの、良い参考にもなりそう
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 81

![Page Image](https://bcdn.docswell.com/page/KJ4WPYD571.jpg)

文法に関する変更
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 82

![Page Image](https://bcdn.docswell.com/page/LE1Y96Z27G.jpg)

メンバー参照で使える予約語
SE-0071
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 83

![Page Image](https://bcdn.docswell.com/page/GEWGQW92J2.jpg)

メンバー参照で使える予約語
ほぼ自由に予約語を使用可能に
▶ 参照時、ほぼ自由に予約語が使える
▶ 定義では ̀̀ が必要
// 定義では `` が必要
enum DrawingStyle {
case `default`
case `repeat`
case fit
}
// 使用時は `` が不要
let style = DrawingStyle.default
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview 1


# Page. 84

![Page Image](https://bcdn.docswell.com/page/47ZLW594J3.jpg)

メンバー参照で使える予約語
型のメンバーについても同様
▶ プロパティやメソッドでも同様
// 定義では `` が必要
class Object {
var `default`: Int
func `repeat`(_ times: Int) -&gt; String { … }
}
// 使用時は `` が不要
let object = Object()
let value = object.default
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview 1


# Page. 85

![Page Image](https://bcdn.docswell.com/page/YJ6WG9KGJV.jpg)

メンバー参照で使える予約語
使用できない予約語
▶ 言語による評価される語は対象外
▶ それらを使うときは ̀̀ で括る
// 定義では `` が必要
enum Evaluate {
case `self`
case `dynamicType`
}
// 使用時も `` が必要
let eval = Evaluate.`self`
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview 1


# Page. 86

![Page Image](https://bcdn.docswell.com/page/GJ5MVNPXJ4.jpg)

SE-0071 : メンバー参照で使える予約語
感想
ほとんどの予約語が普通に使えて嬉しい
特に .default がそのまま書ける功績は大きそう
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 87

![Page Image](https://bcdn.docswell.com/page/LE3WD234E5.jpg)

プロトコル表記に関する変更
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 88

![Page Image](https://bcdn.docswell.com/page/8EDKPZ457G.jpg)

protocol&lt;A, B&gt; を演算子で表現
SE-0095
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 89

![Page Image](https://bcdn.docswell.com/page/V7PKNDMDJ8.jpg)

protocol&lt;A, B&gt; を演算子で表現
プロトコルの組み合わせを &amp; で表現
▶ これまでは protocol&lt;A, B&gt; で表現
▶ 今後は A &amp; B で表現（予定）
// プロトコル型で使う
let p: A &amp; B = Value()
// 型引数で使う
func doSomething&lt;T: A &amp; B&gt;(_ value: T) {
}
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview


# Page. 90

![Page Image](https://bcdn.docswell.com/page/2JVVK19GJQ.jpg)

SE-0095 : protocol&lt;A, B&gt; を演算子で表現
感想
嬉しいような、見にくいような
従前の方が面倒だけど、分かりやすい？ 慣れの問題？
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 91

![Page Image](https://bcdn.docswell.com/page/5EGLQ24DJL.jpg)

型に関係する変更
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 92

![Page Image](https://bcdn.docswell.com/page/4JQYKPGX7P.jpg)

演算子を型が実装
SE-0091
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 93

![Page Image](https://bcdn.docswell.com/page/K74WPY52E1.jpg)

演算子を型が実装
概要
▶ プロトコルが要求する演算子を型で実装（予定）
▶ 所属する型が明瞭になる
struct Value : Equatable {
static func == (lhs: Value, rhs: Value) -&gt; Bool {
}
}
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview


# Page. 94

![Page Image](https://bcdn.docswell.com/page/LJ1Y96WKEG.jpg)

演算子を型が実装
オブジェクト指向との相性は？
▶ 継承を考慮すると、メソッドが必要になる
▶ オブジェクト指向的には自然な実装
class Base : Equatable {
func isEqual(to rhs: Base) -&gt; Bool {…}
}
class Sub : Base {
override func isEqual(to rhs: Base) -&gt; Bool {…}
}
func == (lhs: Base, rhs: Base) -&gt; Bool {
return lhs.isEqual(to: rhs)
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
}
Swift 2.x


# Page. 95

![Page Image](https://bcdn.docswell.com/page/GJWGQW6P72.jpg)

演算子を型が実装
オブジェクト指向との相性は？
▶ 静的メソッドは継承できる
▶ 比較時に継承を加味してくれるだろうか？
class Base : Equatable {
class func == (lhs: Base, rhs: Base) -&gt; Bool {…}
}
class Sub : Base {
override
class func == (lhs: Base, rhs: Base) -&gt; Bool {…}
}
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview


# Page. 96

![Page Image](https://bcdn.docswell.com/page/4EZLW5Y673.jpg)

SE-0091 : 演算子を型が実装
感想
最初にとっても混乱したところ！良い！
オブジェクト指向との相性は依然、イマイチかもしれない
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 97

![Page Image](https://bcdn.docswell.com/page/Y76WG9DL7V.jpg)

inout のキャプチャを @noescape に制限
SE-0035
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 98

![Page Image](https://bcdn.docswell.com/page/G75MVN3M74.jpg)

inout のキャプチャを @noescape に制限
これまでの問題
▶ inout 変数をクロージャーでキャプチャ可能
▶ クロージャーを実行しても更新されない
func makeIncrementer(inout value: Int) -&gt; () -&gt; Void {
return { value += 1; print(&quot;Inside:&quot;, value) }
}
var value = 1
let incrementer = makeIncrementer(&amp;value)
print(&quot;Outside:&quot;, value)
incrementer()
print(&quot;Outside:&quot;, value)
incrementer()
print(&quot;Outside:&quot;, value)
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
// Outside: 1
// Inside: 2
// Outside: 1
// Inside: 3
// Outside: 1
変更が書き戻されない
変更が書き戻されない
Swift 2.x


# Page. 99

![Page Image](https://bcdn.docswell.com/page/9J2935ZRER.jpg)

inout のキャプチャを @noescape に制限
クロージャーの生存範囲を制限
▶ inout 変数のキャプチャを @noescape に制限
▶ 読み取り専用（複製）なら、キャプチャ可能
func something(value: inout Int) {
let noescaped: @noescape () -&gt; Void = {
value = 10
}
}
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
let escaped: () -&gt; Void = { [value] in
print(value)
読み取り専用として
}
キャプチャ可能
Swift 3.0 Preview


# Page. 100

![Page Image](https://bcdn.docswell.com/page/DEY41KR5JM.jpg)

SE-0035 : inout のキャプチャを @noescape に制限
感想
考えたことなかった、良い
Write back の仕組みとキャプチャは確かに相性悪そう
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 101

![Page Image](https://bcdn.docswell.com/page/VJNY2RD478.jpg)

言語構文の削除
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 102

![Page Image](https://bcdn.docswell.com/page/YE9P1MG4J3.jpg)

タプルスプラットの廃止
SE-0029
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 103

![Page Image](https://bcdn.docswell.com/page/GE8D4LVVED.jpg)

タプルスプラットの廃止
タプルスプラットとは
▶ 引数リストとしてタプルを直接渡せる
▶ ラベル名と登場順は一致する必要あり
func total(price: Int, count: Int) -&gt; Int {
}
// 引数リストを丸ごとタプルで扱える
let item: (Int, count: Int) = (100, 5)
total(item)
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 2.1


# Page. 104

![Page Image](https://bcdn.docswell.com/page/LELM6L5R7R.jpg)

タプルスプラットの廃止
タプルスプラット構文の削除
▶ 原則、引数リストにタプルを渡せなくする
▶ オーバーロードと勘違いしやすいため
▶ タイプチェッカーにとって高負荷なため
func total(price: Int, count: Int) -&gt; Int {
}
// 原則、引数リストを１つのタプルで表現できない
let item: (Int, count: Int) = (100, 5)
total(item)
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
error: missing argument for parameter &#039;count&#039; in call
Swift 3.0 Preview


# Page. 105

![Page Image](https://bcdn.docswell.com/page/4JMY5M3PJW.jpg)

タプルスプラットの廃止
ジェネリックで似た書き方は可能
▶ ひとつの型引数で、複数の引数を扱う
▶ ただし、関数を直接渡すときに限る
func apply&lt;T, R&gt;(value: T, f: (T) -&gt; R) -&gt; R {
return f(value)
}
let item: (Int, count: Int) = (100, 5)
func total(price: Int, count: Int) -&gt; Int { … }
apply(value: item, f: total)
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview


# Page. 106

![Page Image](https://bcdn.docswell.com/page/PJR93VQY79.jpg)

SE-0029 : タプルスプラットの廃止
感想
興味深い機能だけれど無くて良い気がする
ジェネリックの類似機能で充分実用的な印象
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 107

![Page Image](https://bcdn.docswell.com/page/PEXQ4Z54JX.jpg)

文法に関する機能追加
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 108

![Page Image](https://bcdn.docswell.com/page/3EK9Z86PED.jpg)

case での複数パターンマッチ
SE-0043
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 109

![Page Image](https://bcdn.docswell.com/page/L73WD26475.jpg)

case での複数パターンマッチ
概要
▶ 複数パターンでマッチする変数を定義可能
▶ 共通した処理を簡単に記載可能
switch (value1, value2) {
case let (value?, nil), let (nil, value?):
return value
case let (value1?, value2?):
return value1 + value2
case (nil, nil):
return 0
}
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview


# Page. 110

![Page Image](https://bcdn.docswell.com/page/87DKPZV5JG.jpg)

case での複数パターンマッチ
出来るようになる書き方
switch device {
case
let .iPhone(_, osVersion, network, _)
where osVersion &gt; 8.0,
let .iPad(_, osVersion, network, _, true)
where network == .cellular,
doSomething(device, osVersion, network)
case .iPodTouch:
doSomething(device)
default:
doSomething()
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
}
Swift 3.0 Preview


# Page. 111

![Page Image](https://bcdn.docswell.com/page/VJPKNDVDE8.jpg)

SE-0043 : case での複数パターンマッチ
感想
複数の条件で同じ処理を記述できて便利
これで fallthrough を使う場面がほとんどなくなりそう！
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 112

![Page Image](https://bcdn.docswell.com/page/2EVVK1ZGEQ.jpg)

シーケンスを作る関数
SE-0094
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 113

![Page Image](https://bcdn.docswell.com/page/57GLQ2MDEL.jpg)

シーケンスを作る関数
初期値からシーケンスを作る
▶ sequence(first:, next:) でシーケンスを作る
▶ next の関数が nil を返せば終了
let values = sequence(first: 1) { $0 * 2 }
&quot;OZ4FRVFODFӲӴ♫೸ӕਃӶӵ
MFUWBMVFT&quot;OZ4FRVFODF\ &quot;OZ*UFSBUPS*OUJO
WBSGJSTU
SFUVSO&quot;OZ*UFSBUPS\
EFGFS\
GJSTU 
^
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
SFUVSOGJSTU
^
^
Swift 3.0 Preview


# Page. 114

![Page Image](https://bcdn.docswell.com/page/4EQYKPRXJP.jpg)

シーケンスを作る関数
初期状態からシーケンスを作る
▶ sequence(state:, next:) でシーケンスを作る
▶ next の関数が nil を返せば終了
MFUEBUFTTFRVFODF TUBUF \ EBZJOPVU*OU %BUF JO
EFGFS\
EBZ 
^
MFUDBMFOEBS$BMFOEBSDVSSFOU
WBSDPNQPOFOUT
DBMFOEBSDPNQPOFOUT &lt;ZFBS NPOUI EBZ&gt; 
GSPN%BUF


DPNQPOFOUTEBZEBZ
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
SFUVSODBMFOEBSEBUF GSPNDPNQPOFOUT 
^
Swift 3.0 Preview


# Page. 115

![Page Image](https://bcdn.docswell.com/page/KJ4WPY8271.jpg)

SE-0094 : シーケンスを作る関数
感想
任意のシーケンスを簡単に作れて嬉しい
特に終端のないシーケンスを作るのに向いているはず
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 116

![Page Image](https://bcdn.docswell.com/page/LE1Y962K7G.jpg)

Slice から元のシーケンスを参照
SE-0093
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 117

![Page Image](https://bcdn.docswell.com/page/GEWGQWRPJ2.jpg)

Slice から元のシーケンスを参照
概要
▶ 各種 Slice 型に base プロパティを持たせる
▶ subscript の書き込み実装をシンプルにする？
意図している狙いが、まだ掴めない …
struct MutableSlice&lt;Base : MutableIndexable&gt; {
var base: Base { get }
}
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
Swift 3.0 Preview


# Page. 118

![Page Image](https://bcdn.docswell.com/page/47ZLW5R6J3.jpg)

Slice から元のシーケンスを参照
base を観察していて気になる点
▶ プロトコルでは既定されていない
▶ 型に直接実装されている
▶
▶
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
• 様々な Slice 型に実装されている
• ArraySlice には実装されていない
スライスを書き換えたとき …
• 元の内容は書き変わらない
• base が指す、元の複製は書き換わる
2016/07/29 の実装を見る限りでは、
• subscript の実装に base は使ってなさそう
• ̲writeBackMutableSlice 関数を使っている
Swift 3.0 Preview


# Page. 119

![Page Image](https://bcdn.docswell.com/page/YJ6WG9RLJV.jpg)

SE-0093 : Slice から元のシーケンスを参照
感想
知識不足により意図が掴めず …
とりあえず base は内部的に使われるもの？
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 120

![Page Image](https://bcdn.docswell.com/page/GJ5MVN8MJ4.jpg)

今回は、ここまで
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 121

![Page Image](https://bcdn.docswell.com/page/9E2935KR7R.jpg)

Swift 3.0 で変わったところ (1/6+)
API Design Guidelines
1.
SE-0023 Swift API ガイドライン
3.
SE-0006 標準ライブラリへの適用
2.
4.
SE-0059 命名規則へのガイドラインの適用
SE-0086 Foundation への適用
言語思想に関する変更
5.
SE-0047 戻り値を使わないと警告に
7.
SE-0067 小数点数プロトコル
6.
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
SE-0054 Implicitly Unwrapped Optional 廃止へ


# Page. 122

![Page Image](https://bcdn.docswell.com/page/D7Y41KN5EM.jpg)

Swift 3.0 で変わったところ (2/6+)
言語思想に関する変更
8.
9.
SE-0069 Foundation の値型
SE-0055 nil ポインター表現
10. SE-0065 コレクションの再設計
11. SE-0052 イテレーターでの nil 保証
12. SE-0109 BooleanType プロトコルの廃止
文法に関する変更
13. SE-0037 演算子セクションでのコメント
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
14. SE-0066 引数リストの括弧を必須に


# Page. 123

![Page Image](https://bcdn.docswell.com/page/VENY2RX4J8.jpg)

Swift 3.0 で変わったところ (3/6+)
文法に関する変更
15. SE-0046 引数ラベル名の規則を統一
16. SE-0040 属性引数の Equal を Colon に変更
17. SE-0071 メンバー参照で使える予約語
18. SE-0036 列挙型内での列挙子表記
19. SE-0060 既定値を持つ引数の順序を固定
プロトコル表記に関する変更
20. SE-0095 protocol&lt;A, B&gt; を演算子で表現
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
21. SE-0115 LiteralConvertible の名称変更


# Page. 124

![Page Image](https://bcdn.docswell.com/page/Y79P1M84E3.jpg)

Swift 3.0 で変わったところ (4/6+)
型に関する変更
22. SE-0091 演算子を型が実装
23. SE-0049 @noescape と @autoclosure を移動
24. SE-0031 型に対して inout を定義
25. SE-0035 inout のキャプチャを@noescape に制限
26. SE-0014 Unmanaged は Swift ポインタを扱う
言語構文の削除
27. SE-0007 C スタイル for ループの削除
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL
28. SE-0004 演算子 ++ と -- の削除


# Page. 125

![Page Image](https://bcdn.docswell.com/page/G78D4L8V7D.jpg)

Swift 3.0 で変わったところ (5/6+)
言語構文の削除
29. SE-0002 カリー化関数構文の削除
30. SE-0003 引数リストから var を削除
31. SE-0053 引数リストから let を削除
32. SE-0029 タプルスプラットの廃止
文法に関する機能追加
33. SE-0048 ジェネリックな型エイリアス
34. SE-0043 case での複数パターンマッチ
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 126

![Page Image](https://bcdn.docswell.com/page/L7LM6LRRJR.jpg)

Swift 3.0 で変わったところ (6/6+)
型に関する機能追加
35. SE-0032 シーケンスから要素を見つけて取得
36. SE-0094 シーケンスを作る関数
37. SE-0008 Optional 向け flatMap を遅延可能に
38. SE-0093 Slice から元のシーケンスを参照
実行環境に関する変更
39. SE-0028 デバッグ識別子のモダン化
40. SE-0034 #line 識別子の曖昧性を解消
41. SE-0039 Playground リテラルのモダン化
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


# Page. 127

![Page Image](https://bcdn.docswell.com/page/4EMY5MRPEW.jpg)

Enjoy! Swift
/* Thank you */
2016年 7月 31日
Swift 愛好会 vol9
REVIVAL


