>100 Views
April 14, 18
スライド概要
福岡で 2018/04/14 に開催した『みんなで Swift 復習会GO! in 福岡』で使ったオープニングと本編の資料です。
※ Docswell での公開に移行する直前の Slideshare での閲覧数は 412 でした。
正統派趣味人プログラマー。プログラミングとは幼馴染です。
ΈΜͳͰ 4XJGU ෮शձ (0JOԬ rUI⒌ #minna_de_swift ΧδϡΞϧ 4XJGU ϓϩάϥϛϯά
۽୩༑ 5PNPIJSP,VNBHBJ ⾣ 4XJGU͕ޠݴେ͖Ͱ͢ʂ ⾣ ΈΜͳͰָ͠Ήษڧձ͕େ͖Ͱ͢ʂ ⾣ ϓϩάϥϛϯάͷָ͠͞Λ͍͖͍͑ͯͨɻ w ωοτϥδΦ w ษڧձͷํ։࠵ w ಉਓࢽଈചձ
NPPLNPPLSBEJP NPPL ۽୩ͱ៸໘͕ϓϩάϥϛϯάίʔυͷ͔Β ௌ͑ͯ͘͜ΔʹࣖΛָ͚ͯ͠ΉϥδΦ ຖ݄ୈ̎ɾୈ̐ ݄༵ ʹ৴ IUUQLFQDNPPLNPPLSBEJPDPN ⾣ ୈ ύϥμΠϜ ⾣ ୈ σʔλϕʔε ⾣ ୈ Τϥʔͱڐࠂܯ༰ͷڥ ⾣ ୈ ӈลͱࠨล ⾣ ୈ ษڧձΛว͘ॴʹɻཱྀ͢Δओ࠵ऀɺ۽୩͞Μͷඳ͘ษڧձͷະདྷ ⾣ ୈ ॱ൪୳ఁ ⾣ ୈ 0CKFDUJWF$#SJEHF ⾣ ୈ ϞμϯͳͳͯͬޠݴΜͩΖ͏
̍گۙ
ٕज़ܥಉਓࢽ ࣗඅग़൛ͱಉਓࢽଈചձ
ٕज़ॻయ̐நબམͪ ΞΩόɾεΫΤΞ ࣥ͘͘චձͷ࠵ڞͷ ື͞ΜʹरͬͯΒͬͯ ͓ख͍ࢀՃܾఆ ㊗ ʲ͍ʳ
ίϛοΫϚʔέοτநબͪʢམ௨ʣ ʙ !౦ژϏοάαΠτ
ίϛοΫϚʔέοτग़ల ౦ژϏοάαΠτ
ٕज़ॻయ̎ग़ల ΞΩόɾεΫΤΞ
ٕज़ॻయग़ల ઍ༿ɾນுϝοη
ίϛοΫϚʔέοτग़ల ౦ژϏοάαΠτ
J04%$+"1"/ϒʔεग़ల ʙ !ૣҴాେֶ
ٕज़ॻయ̏ग़ల ΞΩόɾεΫΤΞ
ίϛοΫϚʔέοτग़ల ౦ژϏοάαΠτ
ࣥ͘͘චձ ʙٕज़ܥಉਓࢽʗࢽۀɾൃදࢿྉɾϒϩάʙ IUUQTUFDICPPLNFFUVQDPOOQBTTDPN ⾣ ˑग़ு൛3&7!౦ژຊ ⾣ ˑग़ு൛3&7!ਆాਆอொ
̎گۙ
J04$POJO-POEPO d
-POEPO
-POEPOͷ֗ฒΈ
#VDLJOHIBN1BMBDF
4U+BNFT`T1BSL
,JOH`T$SPTT4UBUJPO
:PSL :PSL -POEPO,JOH`T$SPTT4UBUJPO͔Β ྻंͰ࣌ؒ΄Ͳʹ͋Δ֗
:PSLJO/PSUI&OHMBOE
:PSLͷ֗ฒΈ
:PSLͷ֗ฒΈ
:PSL.JOTUFSJO:PSL
/BUJPOBM3BJMXBZ.VTFVNJO:PSL
4USFFU-JWFJO:PSL
ΈΜͳͰ 4XJGU ෮शձ(0
ΈΜͳͰ4XJGU෮शձ ෮शձ(0ͱ ⾣ ΈΜͳͰ4XJGU෮शձ w ͔ͤͬ͘ͳΒΈΜͳͱҰॹʹ෮श͍ͨ͠ ͦ͏ࢥͬͯ౦ژɾौ୩Ͱ࢝Ίͨษڧձ ⾣ ΈΜͳͰ4XJGU෮शձ(0ɺͦͷग़ு൛ w ौ୩ͷ֎ʹษڧձͷָ͠͞ΛΊ͍ͨ w ༑ਓͷखΛཔΓʹຊ֤Ͱ։࠵த
ΈΜͳͰ4XJGU෮शձ(0 ͜Ε·Ͱͷ։࠵ ʜΈΜͳͰ4XJGU෮शձ(0JOࡳຈr TU⒌ ʜΈΜͳͰ4XJGU෮शձ(0JOԭೄr OE⒌ 4XJGU%BZ ʜΈΜͳͰ4XJGU෮शձ(0JOઋr SE⒌ ʜΈΜͳͰ4XJGU෮शձ(0JOԬr UI⒌ ʜΈΜͳͰ4XJGU෮शձ(0JOԬr UI⒌ ʜΈΜͳͰ4XJGU෮शձ(0JOژr UI⒌ ʜΈΜͳͰ4XJGU෮शձ(0JOr UI⒌ 4XJGU%BZ
ΈΜͳͰ4XJGU෮शձ(0 ͜Ε͔Βͷ։࠵ʁ ʜΈΜͳͰ4XJGU෮शձ(0JOژr UI⒌ 4XJGU%BZ ʜΈΜͳͰ4XJGU෮शձ(0JOؠखr UI⒌ 4XJGU%BZ ͏ͪͷͰݩ։͖͍ͨʂΈ͍ͨͳɺେ͢Ͱܴ ͍ͳ͕צͷͰɺ։࠵ॴͱ͔ॿ͚ͯΒ͑Δͱ͍͠خ
ΈΜͳͰ4XJGU෮शձ (0JOԬ rUI⒌ ཱऀాத໌͞Μ
ΈΜͳͰ4XJGU෮शձ ஊসࣜܗ ⾣ ΈΜͳͱ4XJGUΛ෮श͍ͨ͠ ⾣ ͔ͤͬ͘ͳͷͰஊস͠ͳ͕Β ⾣ ͍ͭͰ͔͚ͯ͘͠Εͯ0,
ΈΜͳͰ4XJGU෮शձ ৺͕͚ ⾣ ΈΜͳͬͯΔɺࢥ͍ࠐΈ ⾣ ࣗ৴֬ূɺແͯ͘େৎ ⾣ ͳΜͱͳͦ͘͏ࢥ͏ɺେܴ
ΈΜͳͰ4XJGU෮शձ(0 "4XJGU5PVS ΈΜͳͰ4XJGU෮शձ ۽୩༑ IUUQF[OFUKQ 4XJGU
੍ߏޚจ
੍ߏޚจ XIJMF ⾣ ͕݅ਅͷؒɺ܁Γฦ͢ ⾣ CSFBLͰϧʔϓΛൈ͚ΒΕΔ while condition { }
੍ߏޚจ SFQFBUʜXIJMF ⾣ ͕݅ਅͷؒɺ܁Γฦ͢ ⾣ ॲཧΛऴ͑ͨʹޙ݅ఆ͢Δ repeat { } while condition
੍ߏޚจ Ͱྩ໋ذͷύλʔϯϚονϯά ⾣ ͕ύλʔϯʹҰக͢Δ͔Λఆ͢Δ ⾣ DBTFΩʔϫʔυʹଓ͚ͯύλʔϯΛࢦఆ͢Δ // switch での分岐はパターンマッチを使っている switch x { case 1 ..< 10: } // if 文でもパターンマッチが使える if case 1 ..< 10 = x { }
੍ߏޚจ ܁ฦ໋ྩͰͷύλʔϯϚονϯά ⾣ Ϛον͢Δͷ͚ͩΛ܁Γฦ͠ॲཧ͢Δ ⾣ ҰൠʹɺมೖΛ͏ύλʔϯϚονΛ͏ // nil を除く全ての値を順番に処理する for case let x? in optionalValues { } // 値が取得できなくなるまで、繰り返す。 while case let x? = iterator.next() { }
੍ߏޚจ Ͱྩ໋ذͷ݅ࢦఆ ⾣ JGΧϯϚ۠ΓͰ݅ΛՃͰ͖Δ ⾣ TXJUDIXIFSFͰ݅ΛՃͰ͖Δ // if で、オプショナルから値を取って判定 if let number = Int(string), number > 10 { } // switch で、オプショナルから値を取って判定 switch Int(string) { case let number? where number > 10: }
੍ߏޚจ ܁ฦ໋ྩͰͷ݅ࢦఆ ⾣ GPSɺશͯͷཁૉͷ͏ͪ݅Λຬͨ͢ͷΛॲཧ͢Δ ⾣ XIJMFɺશͯͷ͕݅ຬͨ͞Ε͍ͯΔؒॲཧ͢Δ // 要素を順番に処理する。ただし条件を満たすものだけ。 for value in values where value < 10 { } // 両方の条件が満たされる間、処理する。 while let value = iterator.next(), value < 10 { }
੍ߏޚจ GPSʜJOͰࣙॻΛॲཧ͢Δ ⾣ ࣙॻͷཁૉ ,FZ 7BMVF ͷλϓϧͰऔಘͰ͖Δ ⾣ GPSจͰλϓϧͷ֤ཁૉΛผมʹऔಘͰ͖Δ // item は (Key, Value) 型のタプルで取得 for item in dictionary { } // Key と Value を、それぞれ key と value に分けて取得 for (key, value) in dictionary { }
&OKPZ4XJGU 5IBOLZPV ΈΜͳͰ4XJGU෮शձ(0 "4XJGU5PVS $POUSPM'MPX 'VODUJPOTBOE$MPTVSFT ۽୩༑ IUUQF[OFUKQ ⾣ ੍ߏޚจ ⾣ 0QUJPOBM#JOEJOHT ⾣ /JM݁߹ԋࢉࢠ ⾣ ύλʔϯϚον