2014年からSwiftを振り返る! #cswift

>100 Views

May 20, 16

スライド概要

Swift を知ったつもりになっている今、その基本的なところを振り返ってみたら何か見えるものがあるかもしれない。そう思って 2014 年の MSM 2014 で使った資料を使って Swift 好きなみんなと談笑してみることにしました。この資料は MOSA MSM2014 のために用意した資料のうちの、発表用資料の抜粋です。

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

profile-image

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

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

Swift カジュアルプログラミング 2014年からSwiftを振り返る! 2016.04.23 カジュアル Swift 勉強会 #7 EZ-NET 熊⾕友宏 http://ez-net.jp/

2.

‫۽‬୩༑޺ !FT@LVNBHBJ EZ-NETIUUQF[OFUKQ ॻ੶ొஃ 9DPEFపఈղઆ .04" 9DPEFͷશ‫ػ‬ೳΛ పఈతʹղઆͨ͠ຊ 049J04‫ܥ‬ͷྺ࢙ਂ͍ ༗ྉձһ੍ͷษ‫ڧ‬ձ 9DPEFͰ΋໾ཱͭ͸ͣ ๏ਓձһ΋ଟ਺ ࢴ൛͸ઈ൛ɺిࢠॻ੶͸ൢചத ॳ৺ऀ޲͚ηϛφʔͰొஃ

3.

‫۽‬୩༑޺ !FT@LVNBHBJ EZ-NETIUUQF[OFUKQ ษ‫ڧ‬ձ ԣ඿ iPhone ։ൃऀษ‫ڧ‬ձ ΧδϡΞϧ Swift ษ‫ڧ‬ձ ʲԣ඿ɾഅंಓʳ ZJEFW ʲԣ඿ɾ੨༿୆ʳ DTXJGU Θ͍Θ͍ɾΏΔ͘ɺJ1IPOF։ൃऀͷ ΈΜͳͰָ͘͠ա͢͝ͷ͕໨తͷձ ΏΔ͘ΈΜͳͰ4XJGUΛ‫ޠ‬Β͑Δ৔Λ ࡞Γͨͯ࢝͘Ίͨձ ୈ̎̏ճΛʹ։࠵༧ఆ

4.

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

5.

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

6.

2014 年 11 ⽉ 1 ⽇

7.

2014 年 11 ⽉ 1 ⽇ MOSA Software Meeting 2014

8.

MSM 2014 当時の資料で 今の Swift を振り返ってみよう!

9.

当時の資料

10.

ϕʔγοΫτϥοΫ 4XJGUͬͯͲΜͳ ϓϩάϥϛϯά‫ͳޠݴ‬ͷʁ  !.04"4PGUXBSF.FFUJOH &;/&5‫۽‬୩༑޺ IUUQF[OFUKQ

11.

࢝ΊΔલʹ

12.

1 .4.഑෍ࢿྉ 4XJGUͱ0CKFDUJWF$ͷߏจରরද w ηογϣϯ಺Ͱ͸ ࢖༻͠·ͤΜɻ w 4XJGUΛ͸͡Ίͨͱ͖ͷ ॿ͚ʹͳΕ͹޾͍Ͱ͢ɻ

13.

໨ඪ 4XJGUΛָ͘͠࢖ͬͯ΄͍͠ ର৅ ৽‫ޠݴ‬4XJGUʹؔ৺Λ‫͍ͯͤد‬Δํ

14.

4XJGUͬͯͲΜͳ‫ޠݴ‬ʁ ʕ4XJGU‫ޠݴ‬Λ஌ָͬͯ͠ΉͨΊʹʕ

15.

4XJGU֓ཁ

16.

৽‫ޠݴ‬4XJGUొ৔ !88%$

17.

ಛ௃  'BTU ಈత‫ޠݴ‬Β͠͞Λͳͯ͘͠ߴ଎Խ  .PEFSO ਌͠Έ΍͍͢‫ޠݴ‬ઃ‫ܭ‬  4BGF ෆଌͷࣄଶΛট͔ͳ͍‫ޠݴ‬ઃ‫ܭ‬  *OUFSBDUJWF ίϯύΠϧ‫͋Ͱޠݴ‬Γͳ͕Βଈ࣮࣌ߦ͕Մೳ

18.

ίϯηϓτ 0CKFDUJWF$ XJUIPVUUIF$ ʕ$‫ߏޠݴ‬଄͔Βͷ݃ผʕ

19.

৽͍֓͠೦  $MPTVSFT ؔ਺Λॊೈʹѻ͏  5ZQFJOGFSFODF ‫ܕ‬ਪ࿦Ͱޮ཰ྑ͘ίʔσΟϯά 79 4  .VMUJQMFSFUVSOUZQFT ໭Γ஋Ͱෳ਺ͷ஋ΛฦͤΔ  (FOFSJDT ‫ʹܕ‬റΒΕͳ͍࣮૷  /BNFTQBDFT Ϟδϡʔϧ୯ҐͰͷ໊લۭؒ 122

20.

‫׵ޓ‬ੑ  *OUFSPQFSBCJMJUZ 4XJGUΫϥεΛ0CKFDUJWF$͔Β࢖༻ $PDPB"1*Λ4XJGUίʔυ͔Βར༻  .JYBOE.BUDI 0CKFDUJWF$ϑΝΠϧͱ4XJGUϑΝΠϧΛ ͻͱͭͷϓϩδΣΫτʹࠞࡏͯ͠ซ༻  .JHSBUJPO ‫ط‬ଘͷ0CKFDUJWF$ίʔυΛ4XJGU͔Β 4XJGUΒ͍͠ߏจͰར༻

21.

0CKFDUJWF$ʹऔͬͯมΘΔʁ

22.

ͦΕ͸ະ஌ͷੈք ⚫︎ ·ͩ࢈·Εͯؒ΋ͳ͍‫ޠݴ‬ ⚫︎ ϦϦʔε௚લ·ͰཔΓͳ͔ͬͨ ⚫︎ "QQMFͷҙ‫ࠐؾ‬Έ͸‫͡ײ‬Δ ⚫︎ ͍Α͍Α‫͖͍ͨͯͮؾ׆‬ҹ৅ 4XJGU͔Β0CKFDUJWF$͸੍໿͕͋ͬͯ΋ɺ ‫ٯ‬͸ࣗ༝ͳҹ৅ɺऔͬͯ୅ΘΔՄೳੑ͸͋Δʁ

23.

औͬͯ୅ΘΔ͔ΑΓ΋ ·ͣ4XJGUΛָ͠Έ·͠ΐ͏ʂ

24.

4XJGUৄࡉ

25.

4XJGUͷಛ௃

26.

4XJGUͷಛ௃ 'BTU ⚫︎ 0CKFDUJWF$ΑΓ଎͍Β͍͠ ެࣜൃදͰ͸ʜιʔτͰYߴ଎ʁ ⚫︎ ଎౓ͷ伴͸ϝιου‫ͼݺ‬ग़͠ʁ 0CKFDUJWF$͸ηϨΫλʹΑΔಈతղܾ 4XJGU͸Ծ૝ؔ਺ςʔϒϧ WUBCMF ʁ ⚫︎ ଎౓Λੜ͔ͤΔͷ͸‫ݶ‬ఆత͔΋ʁ ७4XJGUʹ͸ಈతղܾ͕ͳ͍༷ࢠ ࠓ͸0CKFDUJWF$‫׵ޓ‬Ϋϥε͕ओྲྀ

27.

4XJGUͷಛ௃ .PEFSO 0CKFDUJWF$ NSArray *array = @[ @"A", @"B", @"C" ]; NSString *string = [array componentsJoinedByString:@", "]; NSLog(@"Value: %@", string); 4XJGU let array = [ "A", "B", "C" ] let string = join(", ", array) println("Value: \(string)")

28.

4XJGUͷಛ௃ 4BGF ෆଌΛੜ·ͳ͍ίʔυ͕ॻ͚Δ 㲈ෆଌΛ‫͍ͳ·ؚ‬ίʔυΛ‫ڧ‬ཁ͞ΕΔ ⚫︎ OJMΛऔΔ͔൱͔ͷ໌͕ࣔৗʹඞཁʂ 8 ⚫︎ ҟͳΔ‫ܕ‬ಉ࢜ͷԋࢉ͸ཁม‫׵‬ʂ 10 ⚫︎ TXJUDIจͰશέʔεͷ໢ཏඞਢʂ 44 ⚫︎ ྫ֎‫Ͱܥ‬ΤϥʔॲཧΛҕͶΒΕͳ͍ʂ ʕͦΕΛࢧԉ͢ΔͨΊͷ‫ػ‬ೳ͕ॆ࣮ʕ

29.

4XJGUͷಛ௃ *OUFSBDUJWF Ϗϧυૢ࡞ෆཁͰίʔυΛ࣮ߦՄೳ ⚫︎ ⚫︎ 9DPEF͔Βͷஞ࣮࣍ߦ 1MBZHSPVOE λʔϛφϧ͔Βͷஞ࣮࣍ߦ YDSVOTXJGU 1

30.

0CKFDUJWF$ XJUIPVUUIF$

31.

0CKFDUJWF$XJUIPVUUIF$ ߦ຤จࣈ͔Βͷ݃ผ ߦ຤ͷηϛίϩϯΛলུՄೳʹ 0CKFDUJWF$ i += 10; 4XJGU i += 10

32.

0CKFDUJWF$XJUIPVUUIF$ ৚݅จͷ‫͔ހׅ‬Βͷ݃ผ ධՁࣜͷ֎ଆ‫͕ހׅ‬লུՄೳʹ 0CKFDUJWF$ if (i == 10) { } 4XJGU if i == 10 { }

33.

0CKFDUJWF$XJUIPVUUIF$ ඇΦϒδΣΫτ‫͔ܕ‬Βͷ݃ผ ͢΂ͯͷ‫ܕ‬ͷର౳ͳѻ͍͕Մೳʹ ⚫︎ શͯͷ‫͕ܕ‬ΦϒδΣΫτ ⚫︎ *OU΍FOVN΋ϝιουΛ࣋ͯΔ ⚫︎ ؔ਺΋ΦϒδΣΫτͱͯ͠ѻ͑Δ

34.

0CKFDUJWF$XJUIPVUUIF$ $Ϧςϥϧ͔Βͷ݃ผ $ϦςϥϧΛ‫͢ʹؾ‬Δඞཁ͕ͳ͘ͳͬͨ 0CKFDUJWF$ NSString *str = @"OBJC STRING"; NSNumber *num = @10; char* str = "C STRING"; int num = 10; 4XJGU let str:String = "SWIFT STRING" let num:Int = 10 17

35.
[beta]
0CKFDUJWF$XJUIPVUUIF$

24

Ϧςϥϧද‫ݱ‬ͷ؆ૉԽ
ΦϒδΣΫτΛҙຯ͢Δ!ͷఫഇ
0CKFDUJWF$

NSArray *arr = @[ @5, @10 ];
NSDictionary *dic = @{ @"K1":@1, @"K2":@2 };

4XJGU

let arr:[Int] = [ 5, 10 ]
let dic:[String:Int] = [ "K1": 1, "K2": 2 ]

34

36.

0CKFDUJWF$XJUIPVUUIF$ ม਺ͱఆ਺ͷ࡮৽ ఆ਺ͷೖΕ෺ͱม਺ͷೖΕ෺ 0CKFDUJWF$ NSInteger i = 10; const NSInteger i = 10; NSString* s = @"TEXT"; NSMutableString* s = [@"TEXT" mutableCopy]; 4XJGU var i = 10 let i = 10 let s = "TEXT" var s = "TEXT" 3

37.

0CKFDUJWF$XJUIPVUUIF$ จࣈྻϦςϥϧͷ֦ுʢల։ʣ Ϧςϥϧ಺ͰμΠϨΫτʹॲཧΛల։Մೳ 0CKFDUJWF$ NSString *str = [NSString stringWithFormat:@"Name=%@, Value=%d", name, value]; 4XJGU let str:String = "Name=\(name), Value=\(value)" 20

38.

0CKFDUJWF$XJUIPVUUIF$ จࣈྻϦςϥϧͷ֦ுʢ࿈݁ʣ ՃࢉԋࢉࢠͰจࣈྻΛ࿈݁Մೳʹ 0CKFDUJWF$ NSString *str = [@"MSM" stringByAppendingString:@"2014"]; 4XJGU let str:String = "MSM" + "2014" 18

39.

0CKFDUJWF$XJUIPVUUIF$ 19 จࣈྻϦςϥϧͷ֦ுʢൺֱʣ ౳ՁԋࢉࢠʹΑΔจࣈྻൺֱ͕Մೳʹ 0CKFDUJWF$ if ([string1 isEqualToString:string2]) { } 4XJGU if string1 == string2 { } 3

40.

0CKFDUJWF$XJUIPVUUIF$ 72 ໊લ෇͖Ҿ਺ ؔ਺΍ϝιουͷҾ਺ʹ໊લΛ໌ࣔͰ͖Δ 0CKFDUJWF$ [MyClass methodWithValue:10.0 ofType:@"$"] 4XJGU MyClass.method(value:10.0, ofType:"$") 90

41.

0CKFDUJWF$XJUIPVUUIF$ 8 41 50 ৽͍͠σʔλ‫ܕ‬ ͕͠ΒΈͷͳ͍εϚʔτͳॻࣜʹ 4XJGU // タプル…複数の型を自由に組み合わせられる let value:(Int,String) = (200, "SWIFT") 4 // nil 許容型…値の他に「ない」状態を扱える let value:Int? = nil 5 // 値つき列挙型…自由な値を持てる列挙子 enum Enumerate { case Name(String) case NoName }

42.

OJM‫ڐ‬༰‫ؔ͢ʹܕ‬Δηογϣϯʜ ϕʔγοΫτϥοΫ ʙʜߴ‫ڮ‬੓໌͞· ʰ4XJGUΛࢧ͑ΔPQUJPOBMͷഎ‫ܠ‬ʱ

43.

0CKFDUJWF$XJUIPVUUIF$ 44 62 63 64 65 66 67 TXJUDIߏจͷେ෯ͳ֦ு ੔਺஋ϦςϥϧҎ֎Ͱ΋෼‫͕ذ‬Մೳʹ ⚫︎ ม਺ʹ֨ೲͨ͠஋Λ࢖ͬͨ෼‫ذ‬ ⚫︎ ൣғʹΑΔ෼‫ذ‬ ⚫︎ จࣈྻʹΑΔ෼‫ذ‬ ⚫︎ λϓϧͷ஋ʹԠͨ͡෼‫ذ‬ ⚫︎ ஋͖ͭྻ‫ܕڍ‬ͷ஋ʹԠͨ͡෼‫ذ‬ 6 ʕߴ౓ͳᝲ͍෼͚Λ໌ྎʹ‫ࡌه‬Մೳʕ

44.

0CKFDUJWF$XJUIPVUUIF$ ΄͔ʹ΋͍Ζ͍Ζʜ ⚫︎ ϔομʔϑΝΠϧෆཁ ⚫︎ ಉ໊͡લͰҟͳΔҾ਺ͷؔ਺ ⚫︎ Ҿ਺ͷ‫ط‬ఆ஋ ⚫︎ ̔ਐ਺ɺ̎ਐ਺Ϧςϥϧ

45.

0CKFDUJWF$XJUIPVUUIF$ $‫ޠݴ‬ͷ͕͠ΒΈΛࣺͯΔ͜ͱͰ ‫ػޠݴ‬ೳΛେ෯ʹ޲্

46.

4XJGUͷ ৽͍֓͠೦

47.
[beta]
4XJGUͷ৽͍֓͠೦

79

$MPTVSF
ଈ੮ؔ਺Λγϯϓϧʹ࡞ͬͯ࢖͑Δ
4XJGU

// クロージャの定義
let isOK:(Int)->Bool = {(code:Int)->Bool in
return contains(200..<300, code)
}
// 関数のように実行
let result = isOK(200)
// 別の関数の引数に渡して実行
let result = contains(statuses, isOK)

7

48.

4XJGUͷ৽͍֓͠೦ 5ZQFJOGFSFODF ঢ়‫͔گ‬Β‫໌͕ܕ‬Β͔ͳ৔߹ʹ‫ه‬ड़ෆཁʹ ⚫︎ ॳ‫ظ‬஋Λ൐͏ม਺΍ఆ਺ͷએ‫ݴ‬ 4 6 ⚫︎ ίϨΫγϣϯ͔ΒཁૉΛॱ࣍औಘ 31 40 ⚫︎ ྻ‫ܕڍ‬Λѻ͏͜ͱ͕໌֬ͳ৔߹ 43 44 ⚫︎ ੍‫ߏޚ‬จͰMFUͰ஋ͷରԠΛऔΔ 13 65 ⚫︎ Ϋϩʔδϟͷ໭Γ஋΍Ҿ਺ 81 8

49.
[beta]
4XJGUͷ৽͍֓͠೦

.VMUJQMFSFUVSOUZQFT
໭Γ஋Ͱෳ਺ͷ஋ΛฦͤΔ
4XJGU

func getStatus()->(code:Int, status:String) {
return (200, "OK")
}
4XJGU

enum Status {
case OK
case Failed(String)
}
func getStatus()->Status {
return Status.OK
}

50

67

50.
[beta]
4XJGUͷ৽͍֓͠೦

122

(FOFSJDT
‫ʹܕ‬റΒΕͳ͍࣮૷
⚫︎

೚ҙͷ‫ܕ‬Λѻ͑ΔΦϒδΣΫτ

⚫︎

ίʔυͷ‫ڞ‬௨Խɾ࣮૷ͷޮ཰Խ

⚫︎

ද‫͖Ͱݱ‬Δ͜ͱ͕ଟํ໘ʹ޿͕Δ

⚫︎

೉қ౓ͷߴ͍‫ػ‬ೳ

4XJGU

func add<T:IntegerArithmeticType>(v1:T, v2:T)->T {
return value1 + value2
}

9

51.

4XJGUͷ৽͍֓͠೦ /BNFTQBDFT Ϟδϡʔϧ୯ҐͰͷ໊લۭؒ ⚫︎ ϑϨʔϜϫʔΫ୯ҐͰϞδϡʔϧΛ෼཭ ⚫︎ ಉ໊͡લͷΦϒδΣΫτΛ۠ผՄೳ 4XJGU import MyModule1 import MyModule2 let obj1 = MyModule1.MyClass() let obj2 = MyModule2.MyClass()

52.

4XJGUͱ0CKFDUJWF$ͷ ‫׵ޓ‬ੑ

53.

4XJGUͱ0CKFDUJWF$ͷ‫׵ޓ‬ੑ *OUFSPQFSBCJMJUZ 0CKFDUJWF$ͱ4XJGUͷ૬‫ޓ‬ӡ༻

54.

4XJGUͱ0CKFDUJWF$ͷ‫׵ޓ‬ੑ *OUFSPQFSBCJMJUZ 4XJGUΫϥεΛ0CKFDUJWF$Ͱ࢖༻Մೳ ⚫︎ /40CKFDUͷ‫ܧ‬ঝ·ͨ͸!PCKDଐੑ͕ඞਢ ⚫︎ ϝιου໊͕0CKFDUJWF$తʹࣗಈௐ੔ ⚫︎ ⚫︎ !PCKDΫϥεͰ͸ΠϯελϯεΛฦͨ͢Ίͷ Ϋϥεϝιουͷ࣮૷͕ඞཁ 0CKFDUJWF$ʹͳ͍‫ػ‬ೳΛ࢖ͬͨ΋ͷ͸ෆՄ ྻ‫ ܕڍ‬Φʔόʔϩʔυ (FOFSJDT ʜ

55.

4XJGUͱ0CKFDUJWF$ͷ‫׵ޓ‬ੑ *OUFSPQFSBCJMJUZ 4XJGUΫϥεΛ0CKFDUJWF$Ͱ࢖༻Մೳ 4XJGU class MyClass : NSObject { var value:Int init(value:Int) } 0CKFDUJWF$ MyClass* obj = [[MyClass alloc] initWithValue:10]; obj.value; ʕJNQPSU130+/".&4XJGUIͰར༻Մೳʹʕ

56.

4XJGUͱ0CKFDUJWF$ͷ‫׵ޓ‬ੑ *OUFSPQFSBCJMJUZ $PDPB"1*Λ4XJGU͔Βར༻Մೳ ⚫︎ ΄΅શͯΛ4XJGUΒ͍͠ίʔυͰར༻Մೳ ⚫︎ ར༻Ͱ͖ͳ͍΋ͷ΋͋Δ 4XJGU let value:NSString = "TEST STRING" value.stringByReplacingOccurrencesOfString("TEST", withString: "SWIFT", options: NSStringCompareOptions.LiteralSearch, range: NSMakeRange(0, value.length)) ʕJNQPSU'PVOEBUJPO౳Ͱར༻Մೳʹʕ

57.

4XJGUͱ0CKFDUJWF$ͷ‫׵ޓ‬ੑ .JYBOE.BUDI 0CKFDUJWF$ͱ4XJGUͱΛࠞࡏ

58.

4XJGUͱ0CKFDUJWF$ͷ‫׵ޓ‬ੑ .JYBOE.BUDI 0CKFDUJWF$ϑΝΠϧͱ4XJGUϑΝΠϧΛࠞࡏ

59.

4XJGUͱ0CKFDUJWF$ͷ‫׵ޓ‬ੑ .JHSBUJPO ‫ط‬ଘͷ0CKFDUJWF$Λ4XJGUͰ‫༻׆‬

60.

4XJGUͱ0CKFDUJWF$ͷ‫׵ޓ‬ੑ .JHSBUJPO ࣗ࡞0CKFDUJWF$ΫϥεΛ4XJGUͰ࢖༻ ⚫︎ ⚫︎ ⚫︎ ϓϩδΣΫτͷ#VJME4FUUJOHTͰ 0CKFDUJWF$#SJEHJOH)FBEFSΛొ࿥ ͦ͜΁4XJGUͰ࢖͍͍ͨϔομʔϑΝΠϧΛ JNQPSU͢Δͱ4XJGUͰར༻ՄೳʹͳΔ $ 0CKFDUJWF$ ϔομʔʹ$ ίʔυ͸ར༻ෆՄ ‫ݻ‬༗ͷ‫ػ‬ೳ͑͞ͳ͚Ε͹0, ʕ4XJGUଆͰJNQPSU͢Δඞཁͳ͘ར༻Մೳʕ

61.

4XJGUͱ0CKFDUJWF$ͷ‫׵ޓ‬ੑ .JHSBUJPO ࣗ࡞0CKFDUJWF$ΫϥεΛ4XJGUͰ࢖༻ 0CKFDUJWF$ @interface MyClass : NSObject @property (readwrite) NSInteger value; - (instancetype)initWithValue:(NSInteger)value; @end 4XJGU let obj = MyClass(value:10) obj.value

62.

4XJGUͱ0CKFDUJWF$ͷ‫׵ޓ‬ੑ 0CKFDUJWF$ͱ4XJGUͷ ૬‫ޓ‬৐ΓೖΕ͕ඇৗʹ͠΍͍͢ ʕখ͍͞୯ҐͰͷ4XJGU΁ͷҠߦ͕Մೳʕ

63.

0CKFDUJWF$ͱ4XJGUͷ ૬‫ޓ‬ӡ༻ʹؔ͢Δηογϣϯʜ ϕʔγοΫτϥοΫ ʙʜத໺༸Ұ͞· ʰ4XJGU࣮ફฤ0CKFDUJWF$͔Βͷ Ҡߦͱίʔυͷ‫ڞ‬ଘ 9DPEFͷ৽‫ػ‬ೳ঺հʱ

64.

4XJGUͬͯ೉͍͠ʁ

65.

伴ΛѲΔͱ͜Ζ  0QUJPOBMͱ$POWFSUJCMF ೉͘͠‫͡ײ‬Δͷ͸͚͔ͩ͜͜΋ʁ  (FOFSJDTͱ1SPUPDPMT 4XJGU‫ʹޠݴ‬ະདྷΛ‫͡ײ‬Δͱ͜Ζʂ

66.

4XJGUΛָ͠Έ·͠ΐ͏ʂ