---
title: Swift Open Hours 4 #love_swift #cocoa_kansai
tags:  #swift #swift愛好会  
author: [熊谷友宏](https://www.docswell.com/user/es_kumagai)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/9J214L6M7R.jpg?width=480
description: WWDC17 直後に San Jose を訪れて Swift チームとお会いした思い出と、そこで話した Swift の話題を少し、綴った資料です。2017/07/25 の『集まれ Swift好き！Swift 愛好会 vol21』で発表し、2017/08/26 の『第74回 Cocoa勉強会関西』に向けて加筆しました。  ※ Docswell での公開に移行する直前の Slideshare での閲覧数は 1,105 でした。
published: July 25, 17
canonical: https://www.docswell.com/s/es_kumagai/K22876-loveswiftswiftopenhours4-170724155054
---
# Page. 1

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

Swift
Open Hours 4 +
熊谷友宏
@es̲kumagai
2017.07.24 @ 集まれ Swift 好き！Swift 愛好会 vol21
2017.08.26 @ 第74回 Cocoa 勉強会関西
Swift 3.1 or higher


# Page. 2

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

▶︎
▶︎
▶︎
熊谷 友宏
Tomohiro Kumagai
Swift 言語が超大好きです！
みんなで楽しむ勉強会が大好きです！
プログラミングの楽しさを伝えていきたい。
@es̲kumagai
tomohiro.kumagai.54
CodePiece for macOS
http://ez-net.jp
Xcode 5 徹底解説


# Page. 3

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

勉強会を開催しています。
わいわい、楽しく、
みんなで語らえる場所を目指して
カジュアル Swift 勉強会
#cswift @ 横浜・青葉台
https://atnd.org/groups/cswift
Swift 言語仕様がテーマの会
みんなで Swift 復習会
次回は９月 17日を検討中
#minna̲de̲swift ＠ 渋谷
http://cswift.connpass.com
次回は９月11日
#techbook̲meetup ＠ 横浜・馬車道
https://techbook-meetup.connpass.com
Swift 言語をみんなと復習したい
もくもく執筆会
それぞれの著作物をみんなと執筆


# Page. 4

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

▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
mookmook radio
#mook05
熊谷と繪面がプログラミングコードの内から
聴こえてくる声に耳を傾けて楽しむラジオ
毎月 第２・第４ 月曜日 に配信
http://kepc.mookmookradio.com
第24話
『interface と protocol』
第23話
『あの日みた Any と @objc を、もういちど。 』
第22話
『@objc』
第21話
『Any』
第20話
『ジェネリックプログラミング』
第19話
『配列の範囲外アクセス』


# Page. 5

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

2017年
関心は
Entertainment へと向かう
プログラミングの楽しさを 遠くにも届けられたらいいな


# Page. 6

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

みんなで Swift 復習会 GO! in 札幌
2017/01/28 札幌・インフィニットループ


# Page. 7

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

技術書典２ 出展
2017/04/08 アキバ・スクエア
技術書オンリー 同人誌即売会
総来場者数 3,100 名


# Page. 8

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

超技術書典 出展
2017/04/29 &amp; 30 千葉・幕張メッセ
@ ニコニコ超会議 2017


# Page. 9

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

Swift Day ! @ 沖縄
2017/05/28 宜野湾ベイサイド情報センター
玉城さんに導かれ、開催決定


# Page. 10

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

yidev 閉幕 ̶ 第３部 Final Party !
2017/07/08 神奈川・I.S.O 横浜
ゲストミュージシャン：ゆさそば
https://yusasoba.amebaownd.com


# Page. 11

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

みんなで Swift 復習会 GO! in 仙台
2017/07/15 宮城・ソシラボ
田中賢治さんに導かれ、開催決定


# Page. 12

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

コミックマーケット92 出展
2017/08/11 東京ビッグサイト


# Page. 13

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

もくもく執筆会
〜技術系同人誌／商業誌・発表資料・ブログ〜
2017 年 5月 30日 〜
技術系同人誌の世界も広げていきたい


# Page. 14

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

本題


# Page. 15

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

WWDC16
/*
2016/06/13 - 2016/06/17
*/


# Page. 16

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

2016 年 6月 12日
San Francisco
初めてみた、海外の景色


# Page. 17

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

2016 年 6月 12日
Bill Graham Civic Auditorium
WWDC16 初日会場


# Page. 18

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

2016 年 6月 13日
Bill Graham Civic Auditorium
WWDC16 初日の朝食


# Page. 19

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

2016 年 6月 14日
Moscone West
２日目以降の会場


# Page. 20

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

2016 年 6月 14日
Moscone West
会場内は Swift 色


# Page. 21

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

2016 年 6月 17日
Swift Open Hours (Swift Lab) @ WWDC16


# Page. 22

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

Swift Open Hours
最高に良い！ (・ ・)


# Page. 23

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

Swift Open Hours @ WWDC16
Swift Lab で質問したこと
1.
列挙子が Lower Camel Case になった具体的な理由は？
2.
@swift3̲migration 属性の使い方を知りたい
3.
IUO 属性が入れ子にできる場合があるのはなぜ？
4.
Collection で index(after:) が必須になった理由は？
5.
#sourceLocation と # le は連動しないもの？
6.
#dsohandle は実行時エラーになるが、どう使うのか
7.
なぜ defer 内で宣言前の変数が使えるのか
8.
@convention の用途をもう少し詳しく知りたい
9.
評価式に対する .self はどういう効果があるのか
10. 型に対する .self を省略できる場合があるのはなぜ？
fi
11. @warn̲unused̲result が Playground で効かない理由は？


# Page. 24

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

Swift Lab で質問したこと
帰国後に勉強会で発表
Swift Open Hours
https://www.slideshare.net/tomohirokumagai54/swift-open-hours- ncwwdc
Swift Open Hours 2
https://www.slideshare.net/tomohirokumagai54/swift-open-hours-2
fi
Swift Open Hours 3
https://www.slideshare.net/tomohirokumagai54/wwdc-swift-open-hours-3-swift-cocoakansai


# Page. 25

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

WWDC17
2017/06/05 - 2016/06/09


# Page. 26

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



# Page. 27

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

はずれた🤣


# Page. 28

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

Swift Team な
みんなに会いたい …


# Page. 29

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

Swift Team な みんなに会いたい
可能性は０じゃない …


# Page. 30

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

2017/06/11
San Jose
WWDC17 終了直後に来ちゃった。


# Page. 31

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

2017/06/11
San Jose 空港近隣
空港に沿って歩いていける


# Page. 32

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

2017/06/11
San Jose 空港近隣 …
突如、歩道がなくなる！


# Page. 33

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

2017/06/12
In nite Loop 1
fi
Apple 本社


# Page. 34

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

2017/06/12
みんなと再会
Swift Lab &amp; try! Swift &amp; Swift Summit
いろんな場所でお世話になったみんな！


# Page. 35

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

2017/06/12
Apple Of ce
fi
fi
In nite Loop 1 とまた別のところ


# Page. 36

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

Swift Language Designer
Doug Gregor さん
初対面と思っていたら、
GitHub で１度、お世話になってた！


# Page. 37

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

Bitter+Sweet
Swift 談義！


# Page. 38

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

Bitter+Sweet
Bitter+Sweet 詳細


# Page. 39

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

Swift
Open Hours 4
Bitter+Sweet 特別回


# Page. 40

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

Swift Open Hours ̶ Bitter+Sweet 特別回
みんなと談笑したこと
1. なぜ Hashable が
Equatable を継承しているのか
2. なぜ CGFloat は
typealias ではなく独自型なのか
3. アンダースコアで始まるプロトコルは
ほんとは隠したいの？
4. Protocol-Oriented Integers について


# Page. 41

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

なぜ Hashable が Equatable を継承しているのか


# Page. 42

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

なぜ Hashable が Equatable を継承しているのか
Hashable の定義
protocol Hashable : Equatable {
var hashValue: Int { get }
}


# Page. 43

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

なぜ Hashable が Equatable を継承しているのか
Hash とは


# Page. 44

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

Swift Team に聞いてみた！


# Page. 45

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

なぜ Hashable が Equatable を継承しているのか
現状に即した実装
• たしかに Hash 値を取れることと等価比較は直接関係ない
Dictionary 型のキーなどのように、
• ただし
一般に、等価性も期待した運用がされることが多い
と Equatable を独立させてしまうと、
• Hashable
毎回 Hashable &amp; Equatable する煩雑さが生まれる
• 実情を鑑みて Hashable は Equatable を継承している


# Page. 46

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

なぜ CGFloat は typealias ではなく独自型なのか


# Page. 47

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

▶︎
▶︎
なぜ CGFloat は typealias ではなく独自型なのか
CGFloat 型
CoreGraphics で使う浮動小数点数型
実行環境によるサイズ変化を想定している
struct CGFloat {
typealias NativeType = Double
init()
init(_ value: Float)
init(_ value: Double)
init(_ value: Float80)
init(_ value: CGFloat)
var native: CGFloat.NativeType


# Page. 48

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

▶︎
▶︎
なぜ CGFloat は typealias ではなく独自型なのか
これではダメなのかな？
独自型ではなく、型エイリアスで表現できる可能性
Swift 3 までの IntMax がこの発想で提供される
typealias CGFloat = Double


# Page. 49

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

Swift Team に聞いてみた！


# Page. 50

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

なぜ CGFloat は typealias ではなく独自型なのか
後悔しないための選択
• どちらの手もあるだろう
• ただ、型エイリアスにすると元の型と完全に一致してしまう
• その時に “CGFloat だけに機能を追加する” みたいなことができない
• この件に限らず、正解のない問題に突き当たることがある
• そんなとき、どれを選べば 将来に後悔しないで済むかで判断する


# Page. 51

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

アンダースコアで始まるプロトコルは、ほんとは隠したいの？


# Page. 52

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

アンダースコアで始まるプロトコルは、ほんとは隠したい
の？
アンダースコアで始まるプロトコル
• 名前の先頭がアンダースコアで始まるものがある
• バージョンアップで、存在が消えたり、隠蔽されたりする
︙
‣ _Incrementable（Swift 3 で内部を隠蔽）
‣ _Integer（Swift 4 で消滅）
‣ _IntegerArithmetic（Swift 4 で消滅）
‣ _ObjectiveCBridgeable（Swift 3 で隠蔽）
‣ _ColorLiteralConvertible（Swift 2.2 で隠蔽）
‣ _Indexable（Swift 4 で隠蔽状態で登場）


# Page. 53

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

Swift Team に聞いてみた！


# Page. 54

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

アンダースコアで始まるプロトコルは、ほんとは隠したい
の？
正解の見えない問題
• CFloat と同じく、正解の見えない問題に突き当たることがある
‣ 言語仕様の制約だったり（再帰的な表現ができない、など）
‣ 理論上の制約だったり（表現上の無理を感じる、など）
• 不本意でも、その表現を選ばなければいけない場合がある
• そういったものに、アンダースコアから始まる名前をつけている
• できれば、使わないでほしい


# Page. 55

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

Protocol-Oriented Integers について


# Page. 56

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

Protocol-Oriented Integers について
Swift Team からの問いかけ
Swift 4 のどこに興味がありますか？
Protocol-Oriented Integers に未来を感じます！


# Page. 57

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

🤤
（おや … ？ みんなの表情が、明らかに曇ったようだ … ？）


# Page. 58

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

Protocol-Oriented Integers について
Protocol-Oriented Integers
https://www.slideshare.net/tomohirokumagai54/protocol-oriented-integers-cswift


# Page. 59

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

Protocol-Oriented Integers について
整数をプロトコルで説明
SignedInteger
UnsignedInteger
符号付き整数
符号なし整数
FixedWidthInteger
固定幅整数
BinaryInteger
SignedNumeric
ビット表現された数
符号付き数
CustomStringConvertible
値をテキスト表現可能
Numeric
Hashable
Equatable
ハッシュを取得可能
等価比較が可能
数
ExpressibleByIntegerLiteral
Strideable
大小比較が可能
Comparable
大小比較が可能
整数リテラルで表現可能


# Page. 60

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

Protocol-Oriented Integers について
Protocol-Oriented Integers が抱える課題
• ジェネリックは低レイヤーの複雑さが増大する
• 現状のコンピューティングにおいて、サイズは無視できない要素
• 将来、動的サイズを考慮した仕組みができれば良いかもしれないが …
• 現時点ではバイナリー互換の問題を生んだりする
• 次世代の言語に搭載すれば充分という考え方も …


# Page. 61

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

Swift Lab
とっても楽しい！


# Page. 62

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

みなさんも、ぜひ Swift Lab で Swift と
そして Swift Team な方々と戯れてみてください！


# Page. 63

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

告知


# Page. 64

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

みんなで Swift 復習会 GO! in 東京
2017/09/17 場所未定（検討中 … iOSDC 最終日、終了後）


# Page. 65

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

Swift Day ! @ 福岡
2017/10/14 ヌーラボ


# Page. 66

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

技術書典３
2017/10/22 東京・アキバスクエア


# Page. 67

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

▶︎
▶︎
▶︎
▶︎
Enjoy! Swift
Thank you
Swift Open Hours 4 +
なぜ Hashable が Equatable を継承しているのか
熊谷友宏
@es̲kumagai
なぜ CGFloat は typealias ではなく独自型なのか
アンダースコアで始まるプロトコルは、ほんとは隠したいの？
Protocol-Oriented Integers について


