ã¯ããã«
Swiftãšã¯äœãïŒ
Swiftã¯ãAppleãéçºããããã°ã©ãã³ã°èšèªã§ãiOSãmacOSãwatchOSãtvOSãªã©ã®ã¢ããªã±ãŒã·ã§ã³ãéçºããããã«èšèšãããŸããããã®èšèªã¯ãå®å šæ§ãããã©ãŒãã³ã¹ããããŠçŸä»£çãªèšèšãçµã¿åãããŠããŸããCãObjective-Cãšãã£ãæ¢åã®Appleã®ããã°ã©ãã³ã°èšèªãšã®äºææ§ãèæ ®ãããŠãããåŸæ¥ã®ã³ãŒãããŒã¹ãšãçµã¿åãããŠäœ¿ãããšãå¯èœã§ãã
察象èªè
ãã®èšäºã¯ãããã°ã©ãã³ã°ã®åºç€ç¥èãæã£ãŠãããSwiftã«ã¯æªçµéšããŸãã¯SwiftãããããåŠã³ãããšèããŠããåå¿è ããäžçŽè ãŸã§ã察象ãšããŠããŸããããã®éçºè ããæ°ãããã¯ããã¯ããã¹ããã©ã¯ãã£ã¹ã«ã€ããŠåŠã¶ããšãã§ããå 容ãšãªã£ãŠããŸãã
Swiftã®æŽå²ãšéèŠæ§
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãSwiftã®èªçèæ¯ããçŸåšã«è³ããŸã§ã®æŽå²ããã®ç¹æ§ãšä»ã®ããã°ã©ãã³ã°èšèªãšã®éãããããŠSwiftãã©ã®ãããªå Žé¢ã§éžã°ããã®ãã«ã€ããŠè§£èª¬ããŸãã
Swiftã®ç»å Žèæ¯
Swiftã¯2014幎ã«Appleã«ãã£ãŠçºè¡šãããŸããããããŸã§ã®iOSãmacOSã®éçºã¯äž»ã«Objective-CãçšããŠè¡ãããŠããŸããããObjective-Cã¯1980幎代ã«ç»å Žããèšèªã§ãããçŸä»£ã®ããã°ã©ãã³ã°ããŒãºã«å®å šã«å¯Ÿå¿ããããã§ã¯ãããŸããã§ãããäŸãã°ãã¡ã¢ãªç®¡çã®é£ãããå®å šæ§ã®åé¡ãªã©ãæããããŸããããã«å¯ŸããŠãSwiftã¯çŸä»£ã®ã³ã³ãã¥ãŒãã£ã³ã°ç°å¢ã«é©ããèšèšããããŠãããéçºã®å¹çæ§ãšããã°ã©ã ã®å®å šæ§ãé«ããããã«çãŸããŸããã
Swiftã®ããŒãžã§ã³å±¥æŽ
- Swift 1.0ïŒ2014幎ïŒïŒåã®å ¬åŒãªãªãŒã¹ãObjective-Cãšã®é«ãäºææ§ãæã€
- Swift 2.0ïŒ2015幎ïŒïŒãšã©ãŒãã³ããªã³ã°ããããã³ã«æ¡åŒµãªã©ãå°å ¥
- Swift 3.0ïŒ2016幎ïŒïŒAPIãã¶ã€ã³ã®å€§å¹ ãªæ¹å
- Swift 4.0ïŒ2017幎ïŒïŒæååæäœã®åŒ·åãã³ãŒãã£ã³ã°ã®å¹çåäž
- Swift 5.0ïŒ2019幎ïŒïŒABIå®å®å(Application Binary Interface)ãæ°æ©èœã®è¿œå ã
ãã®ããã«Swiftã¯çæéã§æ¥éã«é²åããŠãããåžžã«ææ°ã®ããã°ã©ãã³ã°ã®èŠæ±ã«å¯Ÿå¿ããŠããŸãã
ä»ã®ããã°ã©ãã³ã°èšèªãšã®æ¯èŒ
èšèª | å®è¡é床 | ã¿ã€ãå®å šæ§ | ã³ãã¥ãã㣠| çšé |
---|---|---|---|---|
Swift | é« | é« | 倧 | iOS/macOSç |
Objective-C | äž | äž | äž | iOS/macOSïŒæ§ïŒ |
Java | äž | äž | 倧 | Android, ãµãŒã㌠|
Python | äœ | äœ | 倧 | Web, ããŒã¿åæ, AI |
C++ | é« | äž | 倧 | ã·ã¹ãã ããã°ã©ãã³ã°, ã²ãŒã éçº |
Swiftã¯é«ãå®è¡é床ãšã¿ã€ãå®å šæ§ãå ŒãåããŠããŸãããŸããAppleãšã³ã·ã¹ãã å ã§åºã䜿ãããŠãããããã³ãã¥ããã£ã掻çºã§ãã
Swiftãéžã°ããçç±
- å®å šæ§ïŒSwiftã¯å®å šãªããã°ã©ãã³ã°ã匷ãæèããèšèšã«ãªã£ãŠããŸããäŸãã°ãnullåç §ã®é²æ¢ã匷åãªåãã§ãã¯ãªã©
- ããã©ãŒãã³ã¹ïŒSwiftã¯C++ã«å¹æµããé«ãå®è¡é床ãæã£ãŠãã
- èªã¿ããããšä¿å®æ§ïŒSwiftã®ææ³ã¯çŽæçã§ãä¿å®ã容æ
- ã¯ãã¹ãã©ãããã©ãŒã ïŒSwiftã¯LinuxãWindowsã§ãåäœããããããµãŒããŒãµã€ãããã¹ã¯ãããã¢ããªã«ã䜿çšã§ãã
ãããã®çç±ãããSwiftã¯å€ãã®éçºè ãäŒæ¥ã«éžã°ããŠããŸããç¹ã«iOSã¢ããªéçºãè¡ãéã«ã¯ãã»ãŒããã¡ã¯ãã¹ã¿ã³ããŒããšèšããã§ãããã
éçºç°å¢ã®ã»ããã¢ãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãSwiftããã°ã©ãã³ã°ãå§ããåã«å¿ èŠãªéçºç°å¢ã®ã»ããã¢ããæ¹æ³ã«ã€ããŠè©³ãã解説ããŸãã
Xcodeã®ã€ã³ã¹ããŒã«
Xcodeã¯AppleãæäŸããçµ±åéçºç°å¢ïŒIDEïŒã§ãããiOSãmacOSã®ã¢ããªã±ãŒã·ã§ã³éçºã«ã¯å¿ é ã§ãã
- Mac App StoreããããŠã³ããŒã: Mac App StoreãéããXcodeã§æ€çŽ¢ããŠã€ã³ã¹ããŒã«ãã
- ããŒãžã§ã³ç¢ºèª: Xcodeã¯å®æçã«ã¢ããããŒããããã®ã§ãææ°ããŒãžã§ã³ã䜿çšããŠããããšã確èªãã
- ååèµ·åãšèšå®: XcodeãåããŠèµ·åãããšãããã€ãã®è¿œå ã³ã³ããŒãã³ããããŠã³ããŒããããå®äºããããåºæ¬çãªèšå®ãè¡ã
ã·ãã¥ã¬ãŒã¿ãŒã®èšå®
Xcodeã«ã¯iOSã·ãã¥ã¬ãŒã¿ãŒãä»å±ããŠãããããã䜿ã£ãŠéçºäžã®ã¢ããªããã¹ãããããšãã§ããŸãã
- ã·ãã¥ã¬ãŒã¿ãŒã®éžæ: Xcodeã®ããŒã«ããŒããã䜿çšããiOSããã€ã¹ã®ã·ãã¥ã¬ãŒã¿ãŒãéžæãã
- ã·ãã¥ã¬ãŒã¿ãŒã®èµ·å: éžæããã·ãã¥ã¬ãŒã¿ãŒãèµ·åãã
- 解å床ããªãªãšã³ããŒã·ã§ã³ã®èª¿æŽ: å¿ èŠã«å¿ããŠãã·ãã¥ã¬ãŒã¿ãŒã®è§£å床ãç»é¢ã®åãã調æŽãã
æåã®Hello Worldããã°ã©ã
åããŠã®ããã°ã©ã ãšããŠãã·ã³ãã«ãªãHello, World!ãããã°ã©ã ãäœæããŠã¿ãŸãããã
- æ°èŠãããžã§ã¯ãã®äœæ: XcodeãéãããFileãã¡ãã¥ãŒãããNew Projectããéžæãã
- ãããžã§ã¯ãã®èšå®: ãããžã§ã¯ãåãä¿åå ãèšèªïŒSwiftãéžæïŒãªã©ãèšå®ãã
- ã³ãŒãã®èšè¿°:
main.swift
ãã¡ã€ã«ã«print("Hello, World!")
ãšå ¥åãã - ããã°ã©ã ã®å®è¡: Xcodeã®å®è¡ãã¿ã³ãã¯ãªãã¯ãããšãã³ã³ãœãŒã«ã«ãHello, World!ããšè¡šç€ºããã
ãããžã§ã¯ãã®ç®¡ç
倧èŠæš¡ãªãããžã§ã¯ããå¹çãã管çããããã«ã¯ã以äžã®ãããªãã€ã³ããèæ ®ãããã¹ãã§ãã
- ããŒãžã§ã³ç®¡çïŒGitã䜿çšããŠãããžã§ã¯ãã®ããŒãžã§ã³ç®¡çãè¡ã
- ãã£ã¬ã¯ããªæ§æïŒæ©èœã圹å²ã«å¿ããŠãé©åã«ãã©ã«ããäœæããŠã³ãŒããæŽçãã
- ã³ã¡ã³ããšããã¥ã¡ã³ããŒã·ã§ã³ïŒã³ãŒãã«ã¯ååãªã³ã¡ã³ããã€ããããã¥ã¡ã³ããŒã·ã§ã³ãæŽåãã
- ã³ãŒãã¬ãã¥ãŒïŒãããžã§ã¯ãã®å質ãä¿ã€ããã«ãå®æçãªã³ãŒãã¬ãã¥ãŒãè¡ã
åºæ¬æ§æ
Swiftã®åºæ¬çãªããã°ã©ãã³ã°æ§æã«ã€ããŠè§£èª¬ããŸãããã®ã»ã¯ã·ã§ã³ãç解ããããšã§ãããé«åºŠãªããã°ã©ãã³ã°ãžã®éãéãããŸãã
å€æ°ãšå®æ°
Swiftã§ã¯ãå€æ°ãvar
ããŒã¯ãŒããå®æ°ãlet
ããŒã¯ãŒãã§å®£èšããŸãã
- å€æ°: å€ãå€æŽå¯èœã§ãã
var name = "John"
name = "Mike" // OK
- å®æ°: å€ãå€æŽã§ããŸããã
let pi = 3.14159
pi = 3.0 // ãšã©ãŒ
å€æ°ã¯å¿ èŠãªå Žåã®ã¿äœ¿çšãããã以å€ã¯å®æ°ã䜿ãã®ããã¹ããã©ã¯ãã£ã¹ã§ãã
ã³ã¡ã³ãã®æžãæ¹
ã³ãŒãå ã§ã³ã¡ã³ããæžãæ¹æ³ã¯äž»ã«ä»¥äžã®2çš®é¡ã§ãã
- åäžè¡ã®ã³ã¡ã³ã:
//
ã§å§ãŸãã³ã¡ã³ãã§ãã
// ããã¯ã³ã¡ã³ãã§ã
- è€æ°è¡ã®ã³ã¡ã³ã:
/*
ãš*/
ã§å²ãŸããã³ã¡ã³ãã§ãã
/*
ããã¯è€æ°è¡ã®
ã³ã¡ã³ãã§ã
*/
ã³ã³ãããŒã«ãããŒïŒæ¡ä»¶æãšã«ãŒã
Swiftã§ã¯ãif-else
ãswitch
ãfor-in
ãªã©ã®ã³ã³ãããŒã«ãããŒããããŸãã
- æ¡ä»¶æ:
if-else
ãswitch
ã§æ¡ä»¶åå²ãã§ããŸãã
if score > 60 {
print("åæ Œ")
} else {
print("äžåæ Œ")
}
- ã«ãŒã:
for-in
ãwhile
ã§ç¹°ãè¿ãåŠçãè¡ããŸãã
for i in 1...10 {
print(i)
}
é¢æ°ãšã¯ããŒãžã£
- é¢æ°:
func
ããŒã¯ãŒãã䜿ããŸãã
func greet(name: String) -> String {
return "Hello, \(name)!"
}
- ã¯ããŒãžã£: ç¡åé¢æ°ãšãåŒã°ããŸãã
let add = { (x: Int, y: Int) -> Int in
return x + y
}
ãšã©ãŒãã³ããªã³ã°
Swiftã§ã¯try-catch
æ§æã§ãšã©ãŒãã³ããªã³ã°ãè¡ããŸãã
do {
try someFunctionThatThrows()
} catch {
print("An error occurred: \(error)")
}
ããŒã¿åãšã³ã¬ã¯ã·ã§ã³
Swiftã®ããŒã¿åãšã³ã¬ã¯ã·ã§ã³ã«ã€ããŠããã®ç¹æ§ã䜿ãæ¹ã詳现ã«è§£èª¬ããŸããé©åãªããŒã¿åãã³ã¬ã¯ã·ã§ã³ã®éžæã¯ãã³ãŒãã®å質ãšããã©ãŒãã³ã¹ã«çŽçµããéèŠãªèŠçŽ ã§ãã
ããªããã£ãåïŒInt, Stringãªã©ïŒ
Swiftã§ã¯ãæãåºæ¬çãªããŒã¿åãšããŠInt
ïŒæŽæ°ïŒãDouble
ïŒæµ®åå°æ°ç¹æ°ïŒãBool
ïŒçåœå€ïŒãString
ïŒæååïŒããããŸãã
- Int: 笊å·ä»ãæŽæ°ã§ãã
let age: Int = 30
- Double: å°æ°ç¹ãæã€æ°å€ã§ãã
let pi: Double = 3.14159
- Bool:
true
ãfalse
ã®ã¿ã®å€ãæã¡ãŸãã
let isTrue: Bool = true
- String: ããã¹ãããŒã¿ãè¡šããŸãã
let name: String = "John"
ãªãã·ã§ãã«ãšã¯
ãªãã·ã§ãã«ã¯å€ãååšãããã©ãããè¡šãç¹æ®ãªããŒã¿åã§ããnil
ã蚱容ããå Žåã«äœ¿çšããŸãã
var name: String? = "John"
name = nil // èš±å¯ããã
é åãèŸæžãã»ãã
- é åïŒArrayïŒ: é åºä»ãããããªã¹ãã§ãã
let fruits = ["Apple", "Banana", "Cherry"]
- èŸæžïŒDictionaryïŒ: ããŒãšå€ã®ãã¢ã§ããŒã¿ã管çããŸãã
let ages = ["John": 30, "Jane": 25]
- ã»ããïŒSetïŒ: é åºã®ãªãã³ã¬ã¯ã·ã§ã³ã§ãéè€ãèš±ãããŸããã
let colors = Set(["Red", "Green", "Blue"])
ã¿ãã«ãšåæå
- ã¿ãã«ïŒTupleïŒ: è€æ°ã®ç°ãªãåã®å€ããŸãšããŠæ±ããŸãã
let person = (name: "John", age: 30)
- åæåïŒEnumïŒ: äºãå®ããããè€æ°ã®å€ã®ãããããæã€ããŒã¿åã§ãã
enum Direction {
case north
case south
case east
case west
}
ãªããžã§ã¯ãæåããã°ã©ãã³ã°ïŒOOPïŒã®åºç€
Swiftã«ããããªããžã§ã¯ãæåããã°ã©ãã³ã°ïŒOOPïŒã¯ãã³ãŒããå¹ççã«ç®¡çã»æ¡åŒµããããã®éµãšãªãæŠå¿µã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãOOPã®4ã€ã®äž»èŠãªæŠå¿µã«ã€ããŠè©³ãã解説ããŸãã
ã¯ã©ã¹ãšã€ã³ã¹ã¿ã³ã¹
ã¯ã©ã¹ïŒClassïŒã¯èšèšå³ã®ãããªãã®ã§ãç¹å®ã®ãªããžã§ã¯ããæã€ã¹ãããããã£ãã¡ãœãããå®çŸ©ããŸãã
class Dog {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
ã€ã³ã¹ã¿ã³ã¹ïŒInstanceïŒã¯ããã®èšèšå³ïŒã¯ã©ã¹ïŒãå ã«äœæãããå®äœã§ãã
let myDog = Dog(name: "Buddy", age: 3)
ããããã£ãšã¡ãœãã
ããããã£ïŒPropertyïŒã¯ãã¯ã©ã¹ãã€ã³ã¹ã¿ã³ã¹ãæã€å€æ°ã§ããäžã®Dog
ã¯ã©ã¹ã®name
ãšage
ãããã«è©²åœããŸãã
ã¡ãœããïŒMethodïŒã¯ãã¯ã©ã¹ãã€ã³ã¹ã¿ã³ã¹ãè¡ãåŠçãå®çŸ©ããé¢æ°ã§ãã
class Dog {
// ããããã£
var name: String
var age: Int
// ã¡ãœãã
func bark() {
print("\(name) is barking!")
}
}
ç¶æ¿ãšããªã¢ãŒãã£ãºã
ç¶æ¿ïŒInheritanceïŒã¯ãæ¢åã®ã¯ã©ã¹ã®ããããã£ãã¡ãœãããæ°ããã¯ã©ã¹ã«åŒãç¶ãæŠå¿µã§ãã
class Puppy: Dog {
func wagTail() {
print("\(name) is wagging tail!")
}
}
ããªã¢ãŒãã£ãºã ïŒPolymorphismïŒã¯ãåäžã®ã€ã³ã¿ãŒãã§ãŒã¹ã§ç°ãªãããŒã¿åããªããžã§ã¯ããæ±ãèœåã§ãã
func printAnimalSound(animal: Dog) {
animal.bark()
}
ãããã³ã«ãšæ¡åŒµ
ãããã³ã«ïŒProtocolïŒã¯ãç¹å®ã®ã¡ãœãããããããã£ãæã€ããšãçŽæããã€ã³ã¿ãŒãã§ãŒã¹ã®äžçš®ã§ãã
protocol Walkable {
func walk()
}
æ¡åŒµïŒExtensionïŒã¯ãæ¢åã®ã¯ã©ã¹ããããã³ã«ã«æ°ããã¡ãœãããããããã£ãè¿œå ããæ©èœã§ãã
extension Dog: Walkable {
func walk() {
print("\(name) is walking.")
}
}
ãããã°ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°
ãœãããŠã§ã¢éçºã«ãããŠããããã°ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã¯äžå¯æ¬ ãªã¹ãã«ã§ããSwiftããã°ã©ãã³ã°ã«ãããäž»èŠãªãããã°ææ³ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ãã¯ããã¯ã«ã€ããŠè§£èª¬ããŸãã
Xcodeã®ãããã¬ãŒã®äœ¿ãæ¹
Xcodeã«ã¯åŒ·åãªãããã¬ãŒãä»å±ããŠããŸãããããã¬ãŒãå¹æçã«äœ¿ãããšã§ãã³ãŒãã®åäœã詳现ã«èª¿æ»ã§ããŸãã
- ãã¬ãŒã¯ãã€ã³ãã®èšå®ïŒãœãŒã¹ã³ãŒãå ã§ãã¬ãŒã¯ãã€ã³ããèšå®ããããšã§ãããã°ã©ã ãäžæåæ¢ã§ãã
- å€æ°ã®ç£èŠïŒãã¬ãŒã¯ãã€ã³ãã§ããã°ã©ã ãåæ¢ããåŸãå€æ°ã®å€ããªã¢ã«ã¿ã€ã ã§ç£èŠã§ãã
- ã¹ãããå®è¡ïŒã¹ããããªãŒããŒãã¹ãããã€ã³ãã¹ãããã¢ãŠãã®æäœã§ãã³ãŒããäžè¡ãã€å®è¡ãããã®åäœã確èªã§ãã
åäœãã¹ãã®å°å ¥
åäœãã¹ãã¯ãå°ããªã³ãŒãçãæ£ããåäœãããã確èªããããã®ãã¹ãã§ããXcodeã§ã¯ãXCTestãã¬ãŒã ã¯ãŒã¯ãçšããŠåäœãã¹ããç°¡åã«å®è£ ã§ããŸãã
import XCTest
class MyTests: XCTestCase {
func testAddition() {
XCTAssertEqual(2 + 2, 4)
}
}
ãããããšã©ãŒã¡ãã»ãŒãžãšå¯ŸåŠæ³
Unexpected nil
: ãªãã·ã§ãã«å€æ°ãnilã®å Žé¢ã§ã¢ã³ã©ãããããå Žåã察åŠæ³ã¯ãif let
ãguard let
ã§å®å šã«ã¢ã³ã©ããããããšã§ããArray index out of range
: é åã®ç¯å²å€ã«ã¢ã¯ã»ã¹ããå Žåã®ãšã©ãŒã§ããé åã®é·ãã確èªããŠããã¢ã¯ã»ã¹ããŠãã ããã
ããã©ãŒãã³ã¹ã®æé©å
- éåæåŠç:
DispatchQueue
ãçšããŠãæéã®ãããåŠçãããã¯ã°ã©ãŠã³ãã§è¡ããŸãã - ã¡ã¢ãªç®¡ç:
weak
ãunowned
ã䜿ã£ãŠãã¡ã¢ãªãªãŒã¯ãé²ããŸãã - ã¢ã«ãŽãªãºã ã®æé©å: åŠçé床ãé ãå Žåãã¢ã«ãŽãªãºã ãèŠçŽããŠèšç®éãæžããããšãæå¹ã§ãã
å®è·µãããžã§ã¯ãïŒç°¡åãªã¢ããªãäœæãã
Swiftã®åºç€ã身ã«ã€ãããã次ã¯å®éã«äœããäœã£ãŠã¿ãŸãããããã®ã»ã¯ã·ã§ã³ã§ã¯ãç°¡åãªã¢ããªãäžããäœæããããã»ã¹ã玹ä»ããŸãã
èšèšãã§ãŒãºïŒã¢ã€ãã¢ããäŒç»æžãŸã§
- ã¢ã€ãã¢åºã: ã¢ããªäœæã®ç¬¬äžæ©ã¯ã¢ã€ãã¢ã§ããäœã解決ããã¢ããªãªã®ããç®çãšã¿ãŒã²ãããŠãŒã¶ãŒãæ確ã«ããŠãã ããã
- èŠä»¶å®çŸ©: ã©ã®ãããªæ©èœãå¿ èŠããªã¹ãã¢ããããŸãã
- äŒç»æžäœæ: ã¢ã€ãã¢ãšèŠä»¶ããŸãšããäŒç»æžãŸãã¯ãããã¿ã€ããäœæããŸãã
ã³ãŒãã£ã³ã°ãšãã¹ã
- éçºç°å¢ã®ã»ããã¢ãã: åè¿°ã®éããXcodeãšã·ãã¥ã¬ãŒã¿ãŒãèšå®ããŸãã
- åºæ¬æ©èœã®å®è£ : MVCïŒModel-View-ControllerïŒãã¿ãŒã³ãªã©ãçšããŠåºæ¬æ©èœãã³ãŒãã£ã³ã°ããŸãã
- ãã¹ã: åäœãã¹ããUIãã¹ããè¡ãããã°ãæ©æã«çºèŠããŸãã
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®èšèš
- Storyboard vs SwiftUI: StoryboardãSwiftUIã䜿ã£ãŠUIããã¶ã€ã³ããŸããã©ã¡ããéžã¶ãã¯ãããžã§ã¯ãã®èŠä»¶ã«äŸåããŸãã
- UI/UXãã¶ã€ã³: ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒãèæ ®ããªãããçŽæçãªã€ã³ã¿ãŒãã§ãŒã¹ïŒUIïŒãèšèšããŸãã
SwiftUIã«ã€ããŠè©³ããã¯ãã¡ã
å®æãšå ¬éïŒApp Storeãžã®ç»é²
- App Store Connectã®èšå®: ã¢ããªãå ¬éããåã«ãApp Store Connectã§å¿ èŠãªæ å ±ãå ¥åããŸãã
- 審æ»: ã¢ããªãApp Storeã®ã¬ã€ãã©ã€ã³ã«é©åããŠããã審æ»ãããŸãã
- å ¬é: 審æ»ãéãã°ãããããäžçäžã®iOSãŠãŒã¶ãŒãšå ±æã§ããŸãã
ãŸãšããšæ¬¡ã®ã¹ããã
åŠã³ãæ·±ããããã®ãªãœãŒã¹
- Appleã®å ¬åŒããã¥ã¡ã³ã: äœãããä¿¡é Œæ§ããããææ°æ å ±ãåŸãããŸãã
- GitHub: ãªãŒãã³ãœãŒã¹ã®Swiftãããžã§ã¯ããèªãããšã§ãä»ã®éçºè ã®ã³ãŒãã¹ã¿ã€ã«ãã¢ãŒããã¯ãã£ã«è§Šããããšãã§ããŸãã
- Stack Overflow: ç¹å®ã®åé¡ã«å¯Ÿãã解決çãèŠã€ããæè¯ã®å Žæã§ãã
ããããã®æžç±ãšãªã³ã©ã€ã³ã³ãŒã¹
- “Swift Programming: The Big Nerd Ranch Guide”: Swiftã®åºç€ããå¿çšãŸã§ç¶²çŸ ãããŠããŸãã
- UdemyãCourseraã®Swiftã³ãŒã¹: åç»ã§ã®åŠç¿ãåŸæãªæ¹ã«ããããã§ãã
ãã³ããã¯: SwiftãšKotlinã®æ¯èŒïŒã©ã¡ãã2023幎ã®ã¢ãã€ã«éçºã«é©ããŠããã - SmaDev | ã¹ããŒãã§æ°ããéçºã®ç¥èãæãã | Smart Develop
ãã³ããã¯: SwiftUIãšããŒã¿æ°žç¶å: ã¢ããªéçºã®æ°æ代ãžã®ãã¹ããŒã - SmaDev | ã¹ããŒãã§æ°ããéçºã®ç¥èãæãã | Smart Develop