Swift Open Hours 4 #love_swift #cocoa_kansai

565 Views

July 25, 17

スライド概要

WWDC17 直後に San Jose を訪れて Swift チームとお会いした思い出と、そこで話した Swift の話題を少し、綴った資料です。2017/07/25 の『集まれ Swift好き!Swift 愛好会 vol21』で発表し、2017/08/26 の『第74回 Cocoa勉強会関西』に向けて加筆しました。

※ Docswell での公開に移行する直前の Slideshare での閲覧数は 1,105 でした。

profile-image

正統派趣味人プログラマー。プログラミングとは幼馴染です。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

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

2.

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

3.

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

4.

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

5.

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

6.

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

7.

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

8.

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

9.

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

10.

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

11.

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

12.

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

13.

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

14.

本題

15.

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

16.

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

17.

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

18.

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

19.

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

20.

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

21.

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

22.

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

23.

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 で効かない理由は?

24.

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

25.

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

27.

はずれた🤣

28.

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

29.

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

30.

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

31.

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

32.

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

33.

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

34.

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

35.

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

36.

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

37.

Bitter+Sweet Swift 談義!

38.

Bitter+Sweet Bitter+Sweet 詳細

39.

Swift Open Hours 4 Bitter+Sweet 特別回

40.

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

41.

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

42.

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

43.

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

44.

Swift Team に聞いてみた!

45.

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

46.

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

47.

▶︎ ▶︎ なぜ 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

48.

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

49.

Swift Team に聞いてみた!

50.

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

51.

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

52.

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

53.

Swift Team に聞いてみた!

54.

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

55.

Protocol-Oriented Integers について

56.

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

57.

🤤 (おや … ? みんなの表情が、明らかに曇ったようだ … ?)

58.

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

59.

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

60.

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

61.

Swift Lab とっても楽しい!

62.

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

63.

告知

64.

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

65.

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

66.

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

67.

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