Swift チャチャチャ #love_swift

>100 Views

June 27, 16

スライド概要

Swift 愛好会で『Swift チャチャチャ』について発表してきました。

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

profile-image

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

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

⽄ 4XJGUνϟνϟνϟ /* ΧδϡΞϧ 4XJGU ϓϩάϥϛϯά /* 2016.06.27 */ 集まれ Swift好き! Swift愛好会 vol 8 */ &;/&5‫۽‬୩༑޺ 4XJGU1SFWJFX IUUQF[OFUKQ

2.

‫۽‬୩༑޺ 5PNPIJSP,VNBHBJ /** */ ⾣ 4XJGU‫͕ޠݴ‬௒େ޷͖Ͱ͢ɻ ⾣ ΈΜͳͰָ͠Ήษ‫ڧ‬ձ͕େ޷͖Ͱ͢ɻ w J04΍4XJGUͷษ‫ڧ‬ձΛ։࠵ͯ͠·͢ɻ w ҆৺ͯ͠ஊٛʹՖΛ࡙͔ͤΒΕ·͢Α͏ʹɻ ⾣ Ҏલʹॻ੶Λग़൛ͤͯ͞௖͖·ͨ͠ɻ ⾣ ٕज़ϒϩάΛॻ͍ͨΓͯ͠·͢ɻ

3.

‫۽‬୩༑޺ !FT@LVNBHBJ &;/&5IUUQF[OFUKQ ษ‫ڧ‬ձ ԣ඿J1IPOF։ൃऀษ‫ڧ‬ձ ΧδϡΞϧ4XJGUษ‫ڧ‬ձ ZJEFW ˏԣ඿ɾഅंಓ DTXJGU !ԣ඿ɾ੨༿୆ Θ͍Θ͍ɾΏΔ͘ɺJ1IPOF։ൃऀͷ ΈΜͳͰָ͘͠ա͢͝ͷ͕໨తͷձ ΏΔ͘ΈΜͳͰ4XJGUʹ͍ͭͯ ‫ޠ‬Β͑Δ৔͕ཉͯ࢝͘͠Ίͨձ ୈ̎̐ճΛʹ։࠵༧ఆ ୈ̍̌ճ͸݄‫ޙ‬൒͔΋ʁ

4.

‫۽‬୩༑޺ !FT@LVNBHBJ &;/&5IUUQF[OFUKQ ॻ੶ొஃ 9DPEFపఈղઆ .04" 9DPEFͷશ‫ػ‬ೳΛ పఈతʹղઆͨ͠ຊ 049J04‫ܥ‬ͷྺ࢙ਂ͍ ༗ྉձһ੍ͷษ‫ڧ‬ձ 9DPEFͰ΋໾ཱͭ͸ͣ ๏ਓձһ΋ଟ਺ 紙版は絶版、電⼦書籍は販売中

5.

‫۽‬୩༑޺ !FT@LVNBHBJ &;/&5IUUQF[OFUKQ J04 049 "QQMF8BUDIΞϓϦ $PEF1JFDF ͍ͭ΋ͷి୎ ιʔείʔυΛ5XJUUFSͱ (JTUʹಉ࣌౤ߘͰ͖Δɻ ‫ࣜࢉܭ‬΋‫͑ݟ‬Δి୎ΞϓϦɻ XBUDI04ରԠ ԻͰ࠶഑ୡΰου &;/&5*11IPOF ؆୯ૢ࡞Ͱ ࠶഑ୡͷਃ͠ࠐΈɻ J1IPOFͰͻ͔Γి࿩Λ࢖͏ɻ ࣗ୐-"/͔Βͷར༻ઐ༻

6.

$PEF1JFDFGPS04 9 ษ‫ڧ‬ձΛָ͠ΉΞϓϦ ιʔείʔυΛ5XJUUFSͱ(JTUʹಉ࣌౤ߘͰ͖Δ ษ‫ڧ‬ձͰ஌‫ݟ‬ΛΈΜͳͱ‫ڞ‬༗͍ͨ࣌͠ͱ͔ʹศརʂ Ͱ͖Δ͜ͱ #love_swift

7.

8 8 %$ /* 2016/06/13  2016/06/17 */

9.

ͱ͜ΖͰΈͳ͞Μ

10.

⽄ࢉ਺νϟνϟνϟ ͝ଘ஌Ͱ͔͢ʁ

11.

ࢉ਺νϟνϟνϟ ֓ཁ/* Wikipedia より引用 */ ࢉ਺νϟνϟνϟʢ͞Μ͢͏νϟνϟνϟʣ /),ͷ൪૊ʰ͋ͳͨͷϝϩσΟʔʱͷೖબ‫Ͱۂ‬ɺ ೥݄͔ΒʰΈΜͳͷ͏ͨʱͰ์ૹ͞Εͨɻ ࡞ࢺɾ࡞‫ۂ‬Λ୲౰ͨ͠ͷ͸ࢁ‫ޱ‬࿨ٛɻՎࢺͷશͯͰɺ ਺ֶͷ໰୊ͷղ๏Λઆ໌ʢฏํࠜɺࡾ֯ൺɾࡾ֯ؔ ਺ʣ͢Δɻ୊໊͸ࢉ਺Ͱ͋Γͳ͕Βɺ಺༰తʹ͸த ֶߍͱߴ౳ֶߍͰѻ͏಺༰ͱͳ͓ͬͯΓɺ໌Β͔ʹ ਺ֶͰ͋Δɻখֶੜʹ͸ҙຯ͕Θ͔Βͳ͍ͱࢥΘΕ Δʹ΋͔͔ΘΒͣɺখֶੜʹ΋޿͘ਁಁͨ͠ɻ

12.

ࢉ਺νϟνϟνϟ ࿩୊ʹͳͬͯΔΈ͍ͨʁ

13.

⽄ࢉ਺νϟνϟνϟ ͜ΜͳՎ

14.

໰୊ TJOВ㲋DPTВ͕੒Γཱͭͱ͖ TJOВɺDPTВɺUBOВͷ஋͸ʁ

15.

⽄ࢉ਺νϟνϟνϟ

16.

ࢉ਺νϟνϟνϟ ղ౴ʜ ⽄ TJOВ͕DPTͷɹϧʔτͷ̏ഒ sin ✓ = p 3 cos ✓ この式が成り立つときの sinθ、cosθ、tanθの値を求める

17.

ࢉ਺νϟνϟνϟ ղ౴ʜ ⽄ ࢉ਺νϟνϟνϟͰղ͖·͠ΐ͏ ͦΕɹ΄Β΋͏Ͱ͖ͨ sin ✓ = p 3 cos ✓ この式が成り立つときの sinθ、cosθ、tanθの値を求める

18.

ࢉ਺νϟνϟνϟ ղ౴ʜ ⽄ TJOΛׂΔ͜ͱDPT͸ɹUBOͷ͜ͱ͞ まず、次の関係性がある sin tan θ cos sin ✓ = tan ✓ cos ✓ 問題の式を変形すると… p sin ✓ 3 = cos ✓ 1

19.

ࢉ਺νϟνϟνϟ ղ౴ʜ ⽄ ̎ล͕̍㲋̏ɹࣼล͕̎ͱͳΔͶ 問題の変形から比が判る sin x p tan 3 θ 1 cos p sin ✓ 3 = cos ✓ 1 三平方の定理を使って… p 2 2 2 x =1 + 3 p x= 1+3=2

20.

ࢉ਺νϟνϟνϟ ղ౴ʂ ⽄ TJO͸̎෼ͷϧʔτͷ̏ͰɺDPT 各辺の比から sin 2 p tan 3 θ 1 cos p 3 1 sin ✓ = , cos ✓ = 2 2 元の式と三角関数の関係から tan ✓ = p 3

21.

ջ͔͍͠ͳ͊ʜ

22.

ࢉ਺νϟνϟνϟ ջ͔͠ΜͰ͍ͨΒʜ

23.

⽄4XJGUνϟνϟνϟ ຊ‫ͯͬ࡞Ͱؾ‬Έͨɻ

24.

໰୊̍ ΠϯελϯεϝιουͷॲཧΛ ॳճ‫ͼݺ‬ग़࣌͠ʹ͚࣮ͩߦ͢Δʹ͸ʁ ઌ೔ʹ࿩୊ʹͳͬͯͯղ๏͕‫ڵ‬ຯਂ͔ͬͨͷͰՎʹͯ͠Έͨ

25.

⽄4XJGUνϟνϟνϟ

26.

4XJGUνϟνϟνϟ ղ౴ʜ ⽄ ΠϯελϯεͷϝιουΛ ̍౓͖Γͷ࣮ߦʹ // あるインスタンスメソッドの処理を初回だけ実行して viewController.prepare() // Do Something // それ以降は、呼び出しても何もしないようにしたい viewController.prepare() viewController.prepare() // Do Nothing // Do Nothing

27.

4XJGUνϟνϟνϟ ղ౴ʜ ⽄ 4XJGUνϟνϟνϟͰղ͖·͠ΐ͏ ͦΕɹ΄Β΋͏Ͱ͖ͨ // あるインスタンスメソッドの処理を初回だけ実行して viewController.prepare() // Do Something // それ以降は、呼び出しても何もしないようにしたい viewController.prepare() viewController.prepare() // Do Nothing // Do Nothing

28.

4XJGUνϟνϟνϟ ղ౴ʜ ⽄ ࣮ߦ͍ͨ͠#MPDL͸$MPTVSFͰ࣋ͨͤ final class ViewController : UIViewController { private(set) var prepare: Void = { print("Prepared") }() } // STEP1: この時点では初期化時点での実行になる let object = ViewController(nibName:nib, bundle:nil)

29.

4XJGUνϟνϟνϟ ղ౴ʜ ⽄ ॳճ‫ͼݺ‬ग़࣌͠ɹධՁͳΒ ҙຯతʹ͸MB[Z͞ final class ViewController : UIViewController { private(set) lazy var prepare: Void = { print("Prepared") }() } // STEP2: プロパティ参照で初回参照時のみの実行になる object.prepare as Void

30.
[beta]
4XJGUνϟνϟνϟ

ղ౴ʂ

⽄

ධՁͷ݁ՌΛɹؔ਺‫ͯ͠ʹܕ‬
ࣗવʹ‫ͼݺ‬ग़ͤΔ

final class ViewController : UIViewController {
private(set) lazy var prepare: () -> Void = {
print("Prepared")
return {}
}()
}
// STEP3: 初回だけ実行される関数として使える

object.prepare()

31.

໰୊̎ 6*-BCFMΛ࿈݁Ͱ͖ΔΑ͏ʹͯ͠ ࿈݁͞ΕͨΒϥϕϧʹจࣈΛઃఆͤΑ

32.

4XJGUνϟνϟνϟ ղ౴ʜ ⽄ ϥϕϧ͕࿈݁͞Εͨͱ͖ ʢνϟνϟʣςΩετΛઃఆ final class ViewController : UIViewController { // ここに Interface Builder でラベルを連結 private var noteLabel: UILabel }

33.

4XJGUνϟνϟνϟ ղ౴ʜ ⽄ 4XJGUνϟνϟνϟͰղ͖·͠ΐ͏ ͦΕɹ΄Β΋͏Ͱ͖ͨ final class ViewController : UIViewController { // ここに Interface Builder でラベルを連結 private var noteLabel: UILabel }

34.

4XJGUνϟνϟνϟ ղ౴ʜ ⽄ ࿈݁ͤ͞Δϥϕϧʹ͸ ʢνϟνϟʣ0VUMFUଐੑ final class ViewController : UIViewController { // STEP1: @IBOutlet を付けると IB から連結可能 @IBOutlet private var noteLabel: UILabel }

35.

4XJGUνϟνϟνϟ ղ౴ʜ ⽄ ॳ‫ظ‬Խ͸஗Εͯ͞ΕΔͷͰ *60ଐੑ΋ final class ViewController : UIViewController { // STEP2: 使用時までに初期化を間にあわせる決意 @IBOutlet private var noteLabel: UILabel ! }

36.

4XJGUνϟνϟνϟ ղ౴ʂ ⽄ ϥϕϧ͕࿈݁͞ΕͨΒ ௚ͪʹɹςΩετઃఆ͞ final class ViewController : UIViewController { // STEP3: 変更を監視して速やかに設定(コードも明瞭) @IBOutlet private var noteLabel: UILabel ! { didSet { noteLabel.text = "\(arc4random())" } } }

37.

⽄4XJGUνϟνϟνϟ ͓͠·͍

38.
[beta]
4XJGUνϟνϟνϟ

໰୊̍ͷղ౴
⾣ ΠϯελϯεϝιουͷॲཧΛ

ॳճ‫ͼݺ‬ग़࣌͠ʹ͚࣮ͩߦ͢Δʹ͸ʁ
final class ViewController : UIViewController {
private lazy var prepareAtFirstTime: () -> Void = {
print("Prepared")
return {}
}()
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
prepareAtFirstTime()
}
}

39.
[beta]
4XJGUνϟνϟνϟ

໰୊̎ͷղ౴
⾣ 6*-BCFMΛ࿈݁Ͱ͖ΔΑ͏ʹͯ͠ɺ

࿈݁͞ΕͨΒϥϕϧʹจࣈΛઃఆͤΑ
final class ViewController : UIViewController {
@IBOutlet private var noteLabel: UILabel ! {
didSet {
noteLabel.text = "\(arc4random())"
}
}
}

40.

4XJGUνϟνϟνϟ ࣮ࡍʹ࡞ͬͯΈͨ‫ײ‬૝ ⾣ ࢥͬͨҎ্ʹָ͔ͬͨ͠ɻ ⾣ ཁॴΛ୺తʹ·ͱΊΔඞཁ͕͋Δ͕ɺ ⾣ ୅ΘΓʹཁ఺͕ࡍཱͭҹ৅ɻ

41.

⽄4XJGUνϟνϟνϟ Έͳ͞Μ΋ͥͻ࡞ͬͯΈ͍ͯͩ͘͞ʂ

42.

Enjoy! Swift /* Thank you */