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

# この投稿は...

元素について学ぶことができる、コマンドラインインターフェース（CLI）のアプリケーションを開発します。

* アプリケーションの名前は「Elements App」です。
* ボタンや画像ではなく、ユーザーはコマンドラインで操作します。
* ユーザーの名前を入力すると、プログラムが応答します。
* ユーザーは「原子番号から元素を表示するか、ランダムに元素を表示するか」を選べます。
* 元素の説明文を表示したら、アプリケーションは終了します。

このプロジェクトの開発環境は、以下の通りです。

- macOS 14.3 (Sonoma)
- Xcode 15.3
- Swift 5.9

> Swiftを基礎から学ぶには
自著、工学社より発売中の「[まるごと分かるSwiftプログラミング](https://amzn.asia/d/7YPWJwl)」をお勧めします。変数、関数、フロー制御構文、データ構造はもちろん、構造体からクロージャ、エクステンション、プロトコル、クロージャまでを基礎からわかりやすく解説しています。
> また、Swiftプログラミングを基礎から動画で学びたい方には、Udemyコース「[今日からはじめるプログラミング](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwii1qTuj_2BAxV4hlYBHbj5BqEQFnoECBYQAQ&url=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fstart-programming-today%2F&usg=AOvVaw2vs4Sccq-bpfA4ZD2rCyNm&opi=89978449)」をお勧めします。


### インクリメンタル開発

このプロジェクトでは、**インクリメンタル開発** を採用します。

インクリメンタル開発は最初に、それだけで動作する小さな機能を作成することから始めます。
そして、コードのデバッグと動作確認ができたら、次の新しい機能を追加します。
これらの工程を繰り返して開発を進めていくと、最終的に実際のアプリケーションが完成します。
完成したアプリケーションを動作確認して、機能を修正することもできます。

インクリメンタル開発は、途中で動作確認やデバッグを行わずに「全体を一度にまとめて完成させようとする」よりも、優れた手法です。

### 元素とは

アプリケーションの開発を始める前に、元素について知っておきましょう。

19世紀末に素粒子が発見されるまで、物質の最小単位は原子だと考えられていました。
現在では、原子の中心には「いくつかの中性子と陽子で構成される原子核」があるとわかっています。

原子は「原子核に陽子がいくつあるか」で分類できます。
例えば、陽子が1つだけなら水素原子、陽子が2つあるとヘリウム原子になります。
これまでに118種類の原子が見つかっており、このような原子の種類のことを **元素** といいます。

それぞれの元素は、名前の頭文字をとって **元素記号（element symbol）** として表記できます。
例えば、水素（Hydrogen）の元素記号は「H」、ヘリウム（Helium）の元素記号は「He」と表記します。
また、陽子の個数は **原子番号** としても知られています。
元素を原子番号の小さい順に並べると、元素周期表を作成できます。

元素を学ぶことができれば、物理や科学の研究としてだけでなく、一般的な教養としても興味深い知識を得られるでしょう。

# ハンズオン

Xcodeでアプリケーションを開発するには、最初にプロジェクトを作成します。
そして、コマンドラインでユーザーとプログラムが対話できることを確認します。

### プロジェクトを作成する

新しいXcodeプロジェクトを作成します。

1. Xcodeを起動して、「Create New Project...」を選択してください。

2. 作成するアプリケーションの種類を選択します。  
macOSのApplicationテンプレートから「Command Line Tool」を選択して、「Next」をクリックしてください。

3. 作成するプロジェクトの設定を行います。  
「Product Name」にプロジェクト名を「Elements App」と入力してください。  
「Source Control」のチェックは外しておきます。  
そして、「Language」が「Swift」になっていることを確認してから、「Next」をクリックしてください。

4. プロジェクトの保存場所を選択して、「Create」をクリックしてください。  
Xcodeプロジェクトのワークスペースが表示されます。

### コードを実行する

コードを書いて、プログラムを実行します。
実行結果を確認する方法も学びます。

1. 画面左側のサイドバーは **ナビゲータエリア** です。  
ここで、*main.swift* ファイルを選択してください。  
*main.swift* は、このプログラムのエントリーポイント（開始点）です。

2. 画面中央の **エディタエリア** で、コードを編集します。  
文字列リテラル`"Hello World!"`を、以下のように変更してください。

    ```swift
    print("Welcome to the Elements Illustrated Book!")
    ```

3. プログラムを実行します。  
そのためには、メニューバーの「Run」ボタンをクリックしてください。（または、⌘+R）  
すると、プログラムの実行結果が **コンソールエリア**に表示されます。  
なお、実行結果の最後には「プログラムが無事に完了した」ことが表示されています。

    ```console
    Welcome to the Elements Illustrated Book!
    Program ended with exit code: 0
    ```

4. メッセージを追加します。  
これは導入パートのメッセージです。

    ```swift
    print("Welcome to the Elements Illustrated Book!")
    print("There are 1 element.")
    ```
    
5. プログラムを実行してください。  
そして、コンソールに2行のメッセージが出力されることを観察してください。

    ```console
    Welcome to the Elements Illustrated Book!
    There are 1 element.
    ```

### ユーザーと対話する

ユーザーが入力した名前に対して、挨拶します。
ユーザーの選択に応じたコードを実行して、適切な結果を表示します。

1. プログラムを実行中のユーザーに、氏名を入力するように促します。  
「ユーザがコンソールで入力した値」を取得するために、`readLine()`関数を使用してください。

    ```swift
    print("What is your name?")
    let yourName = readLine()!
    print("Hi, \(yourName).")
    ```

2. プログラムを実行してください。  
コンソール上で対話して、「入力された名前に対する挨拶」が出力されることを観察してください。

    ```console
    What is your name?
    Charlie

    Hi, Charlie.
    ```

## 全体のコード

**main.swift**

```swift
import Foundation

print("Welcome to the Elements Illustrated Book!")
print("There are 1 element.")

print("What is your name?")
let yourName = readLine()!
print("Hi, \(yourName).")
```


# 次のステップ

続きは、「[【Swift】Xcodeで始めるアプリ開発入門②](https://qiita.com/imchino/items/f92c383360599586b4ee)」で解説。
[X(旧Twitter)アカウント](https://twitter.com/startyourcode)のフォローをよろしくお願いします。