この投稿は...
前回の「Xcodeで始めるアプリ開発入門②」に続き、元素について学ぶことができる、コマンドラインインターフェース(CLI)のアプリケーションを開発します。
Swiftを基礎から学ぶには
自著、工学社より発売中の「まるごと分かるSwiftプログラミング」をお勧めします。変数、関数、フロー制御構文、データ構造はもちろん、構造体からクロージャ、エクステンション、プロトコル、クロージャまでを基礎からわかりやすく解説しています。
また、Swiftプログラミングを基礎から動画で学びたい方には、Udemyコース「今日からはじめるプログラミング」をお勧めします。
ハンズオン
最初のオブジェクトを定義します。
オブジェクトは「データの機能や特徴」をカプセル化して、外部からその詳細を隠蔽します。
オブジェクトによってコードが抽象化されると、プログラムが読みやすくなったり、メンテナス性が向上したりします。
LearningCenter型
「学習の拠点」をモデル化するLearningCenter
型を、構造体として定義します。
そして、そのインスタンスを作成します。
-
プロジェクトに新しいSwiftファイルを追加します。
メニューバーから「File > New > File...」を選択してください。 -
追加するファイルの種別を選択します。
「Swift File」を選択して、「Next」ボタンをクリックしてください。 -
ファイル名は「LearningCenter.swift」と入力してください。
そして、Group が「Elements Appフォルダ」であること、Targets の「Elements App」にチェックされていることを確認します。 -
「Create」ボタンをクリックしてください。
すると、ナビゲータエリアに新しいSwiftファイルが追加されます。 -
LearningCenter.swift ファイルを開きます。
ここに、構造体としてLearningCenter
型を定義してください。
さらに、「学習者」を示すstudent
プロパティを変数として定義してください。import Foundation struct LearningCenter { var student: String? }
オプショナルにしておくことで、
nil
の既定値が自動的に設定されます。 -
main.swift ファイルを開きます。
最後の行で、LearningCenter
型のインスタンスを作成してください。var myLearningCenter = LearningCenter()
-
プログラムが問題なくビルドできることを確認しておきます。
メニューバーから「Product > Build」を選択するか、あるいは「⌘キー+Bキー」を押します。
学習を開始するためのメソッド
LearningCenter
型に「学習を開始するためのメソッド」を実装します。
-
LearningCenter.swift ファイルを開きます。
LearningCenter
型にstart()
メソッドを定義してください。struct LearningCenter { ... func start() { // implementation to start for learning. } }
-
main.swift にある既存のコード(
myLearningCenter
インスタンスの作成を除く)を、start()
メソッドのボディに移動してください。struct LearningCenter { ... func start() { // 導入パート print("Welcome to the Elements Illustrated Book!") print("There are 1 element") // ユーザー名の設定 print("What is your name?") let yourName = readLine() print("Hi, \(yourName!).") // 学習方法を選択する print("Select elements to learn, Randomly? (Y or N)") var decision = "" // ランループ while !(decision == "Y" || decision == "N") { decision = readLine()! switch decision { case "Y": print("OK! Learning element randomly.") // TODO: learn to random element. case "N": print("OK, Select atomic weight of element...") // TODO: let the user select atomic weight of element. default: print("Sorry, I didn't get that.") } } } }
-
start()
メソッドでは、ユーザー名をインスタンスのstudent
プロパティに設定します。
このとき、メソッドが「自身のインスタンスのプロパティ」を変更するために、mutating
キーワードをマークしてください。struct LearningCenter { ... mutating func start() { ... // ユーザー名の設定 print("What is your name?") student = readLine() print("Hi, \(student!).") ... } }
-
main.swift ファイルを開きます。
myLearningCneter
インスタンスのstart()
メソッドを呼び出してください。
そして、start()
メソッド完了後には、アプリケーションの終了をユーザーに知らせます。import Foundation var myLearningCenter = LearningCenter() myLearningCenter.start() print("Bye!")
-
プログラムを実行して、機能が失われていないことを確認してください。
main.swift の役割は、「インスタンスを作成して、学習を開始する」だけです。
コードが以前よりも簡潔で、読みやすくなったことを理解してください。
全体のコード
main.swift
import Foundation
var myLearningCenter = LearningCenter()
myLearningCenter.start()
print("Goodbye!")
LearningCenter.swift
import Foundation
struct LearningCenter {
var student: String?
mutating func start() {
print("Welcome to the Elements Illustrated Book!")
print("There are 1 element.")
print("What is your name?")
student = readLine()!
print("Hi, \(student).")
print("Select elements to learn, Randomly? (Y or N)")
var decision = ""
while !(decision == "Y" || decision == "N") {
decision = readLine()!
switch decision {
case "Y":
print("OK! Learning element randomly.")
// TODO: learn to random element.
case "N":
print("OK, Select atomic weight of element...")
// TODO: let the user select atomic weight of element.
default:
print("Sorry, I didn't get that.")
}
}
}
}
次のステップ
続きは、「Xcodeで始めるアプリ開発入門④」にて解説(予定)。
投稿を告知するので、X(旧Twitter)アカウントのフォローをお願いします。