LoginSignup
0
0

【Swift】Xcodeで始めるアプリ開発入門③

Last updated at Posted at 2024-02-10

この投稿は...

前回の「Xcodeで始めるアプリ開発入門②」に続き、元素について学ぶことができる、コマンドラインインターフェース(CLI)のアプリケーションを開発します。

Swiftを基礎から学ぶには
自著、工学社より発売中の「まるごと分かるSwiftプログラミング」をお勧めします。変数、関数、フロー制御構文、データ構造はもちろん、構造体からクロージャ、エクステンション、プロトコル、クロージャまでを基礎からわかりやすく解説しています。
また、Swiftプログラミングを基礎から動画で学びたい方には、Udemyコース「今日からはじめるプログラミング」をお勧めします。

ハンズオン

最初のオブジェクトを定義します。
オブジェクトは「データの機能や特徴」をカプセル化して、外部からその詳細を隠蔽します。
オブジェクトによってコードが抽象化されると、プログラムが読みやすくなったり、メンテナス性が向上したりします。

LearningCenter型

「学習の拠点」をモデル化するLearningCenter型を、構造体として定義します。
そして、そのインスタンスを作成します。

  1. プロジェクトに新しいSwiftファイルを追加します。
    メニューバーから「File > New > File...」を選択してください。

  2. 追加するファイルの種別を選択します。
    「Swift File」を選択して、「Next」ボタンをクリックしてください。

  3. ファイル名は「LearningCenter.swift」と入力してください。
    そして、Group が「Elements Appフォルダ」であること、Targets の「Elements App」にチェックされていることを確認します。

  4. 「Create」ボタンをクリックしてください。
    すると、ナビゲータエリアに新しいSwiftファイルが追加されます。

  5. LearningCenter.swift ファイルを開きます。
    ここに、構造体としてLearningCenter型を定義してください。
    さらに、「学習者」を示すstudentプロパティを変数として定義してください。

    import Foundation
    
    struct LearningCenter {
        var student: String?
    }
    

    オプショナルにしておくことで、nilの既定値が自動的に設定されます。

  6. main.swift ファイルを開きます。
    最後の行で、LearningCenter型のインスタンスを作成してください。

    var myLearningCenter = LearningCenter()
    
  7. プログラムが問題なくビルドできることを確認しておきます。
    メニューバーから「Product > Build」を選択するか、あるいは「⌘キー+Bキー」を押します。

学習を開始するためのメソッド

LearningCenter型に「学習を開始するためのメソッド」を実装します。

  1. LearningCenter.swift ファイルを開きます。
    LearningCenter型にstart()メソッドを定義してください。

    struct LearningCenter {
        ...
    
        func start() {
            // implementation to start for learning.
        }
    }
    
  2. 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.")
                }
            }
        }
    }
    
  3. start()メソッドでは、ユーザー名をインスタンスのstudentプロパティに設定します。
    このとき、メソッドが「自身のインスタンスのプロパティ」を変更するために、mutatingキーワードをマークしてください。

    struct LearningCenter {
        ...
    
        mutating func start() {
            ...
    
            // ユーザー名の設定
            print("What is your name?")
            student = readLine()
            print("Hi, \(student!).")
    
            ...
        }
    }
    
  4. main.swift ファイルを開きます。
    myLearningCneterインスタンスのstart()メソッドを呼び出してください。
    そして、start()メソッド完了後には、アプリケーションの終了をユーザーに知らせます。

    import Foundation
    
    var myLearningCenter = LearningCenter()
    myLearningCenter.start()
    print("Bye!")
    
  5. プログラムを実行して、機能が失われていないことを確認してください。

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)アカウントのフォローをお願いします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0