本記事について

プログラミングを学び始めたばかりの頃、どのように学習すれば良いか悩む方が多いと思います。私自身も最初は同じように悩み、遠回りしてしまったと感じています。

そんな私が、プログラミング経験を積んで年数を重ねた今だからこそ実感する、プログラミングを学ぶ際に意識すべき4つのポイントを紹介します。

今回紹介する内容が全て正しいとは限りません。
全て鵜呑みにせず、参考程度に留めてください。

意識するポイント4選

  1. ざっくりと全体像を掴む
  2. コメントを活用する
  3. デバッグでコードの流れを把握する
  4. 自身で作りたいものを考えてコードを書いてみる

1. 全体像を掴む

コード細かく全てを理解せずに、ざっくり把握することを意識しています。
ざっくり把握するために、まず大枠のstruct(構造体)やclass(クラス)の名前から理解していきます。

下記のサンプルコードを見ながら、実際にイメージしてみましょう。
これはどんなデータまとまりでしょうか?

struct UserSetting {
    var firstName: String
    var lastName: String
    var age: Int

    func fullName() -> String {
        return "\(firstName) \(lastName)"
    }
}
  • structはUserSettingという名前になっている
  • UserSettingは、ユーザの設定するためのデータのまとまりだろうと予想する

2. コメントを活用する

コードにコメントを追加し、自分で理解しやすいように説明を加えます。
そうすると、コードが増えていっても、整理しやすくなります。(ある程度理解できたら、コメントは消します)

// 本に関するデータのまとまり(構造体)
struct Book {
    var title: String
    var author: String
    var pages: Int

    // 本の詳細を返す関数
    func description() -> String {
        return "\(title) by \(author), \(pages) pages"
    }
}

3. デバッグでコードの流れを把握する

print()などを使って実際にコードがどのように動いているかを確認します。
コードを見るだけではなく、実際にコードに触ることが大事です。

下記のサンプルコードをコピペして、実際にデバッグしてみましょう。

struct UserSetting {
    var firstName: String
    var lastName: String
    var age: Int

    func fullName() -> String {
        return "\(firstName) \(lastName)"
    }
}
// Person構造体のインスタンスを生成
var person1 = Person(firstName: "John", lastName: "Doe", age: 30)
var person2 = Person(firstName: "Jane", lastName: "Smith", age: 25)

print(person1.firstName) // John
print(person2.fullName()) // Jane Smith

4. 自身で作りたいものを考えてコードを書いてみる

コードを考える力を身につけるには、自分で考えてコードを書くのが一番です。例えば、こんな機能を作りたいと決めて、どのように作るか1から考えます。

作りたいものを具体的にイメージする

まずは、自分が作りたいものを具体的にイメージしてみましょう。例えば、以下のようなものが考えられます。

  • 自分の好きな映画や本を管理するアプリ
  • シンプルなTo-Doリスト
  • 日記帳アプリ
  • 簡単なゲーム(例えば、じゃんけんや数当てゲーム)

必要な機能をリストアップする

作りたいものが決まったら、そのために必要な機能をリストアップしてみましょう。例えば、To-Doリストを作る場合、以下のような機能が考えられます。

  • タスクの追加
  • タスクの一覧表示
  • タスクの削除
  • タスクの完了状態の変更

機能をリストアップすることで、どの部分から取り組むべきかが見えてきます。

(重要)小さな部分から取り組む

大きな機能を一気に完成させようとすると、途中で挫折してしまうことがあります。
そこで、まずは小さな部分から取り組むのがオススメです。To-Doリストの場合、まずは「タスクの追加」機能だけを実装してみましょう。

例えば、以下のようなSwiftコードでタスクを追加する部分を実装できます。

struct ContentView: View {
    @State private var tasks: [String] = []
    @State private var newTask: String = ""

    var body: some View {
        VStack {
            HStack {
                TextField("新しいタスクを入力", text: $newTask)
                    .textFieldStyle(RoundedBorderTextFieldStyle())
                Button(action: {
                    addTask(task: newTask)
                    newTask = ""
                }) {
                    Text("追加")
                }
            }.padding()

            List {
                ForEach(tasks, id: \.self) { task in
                    Text(task)
                }
            }
        }
    }

    func addTask(task: String) {
        tasks.append(task)
    }
}

このように、まずはタスクを追加する機能だけを実装してみます。これがうまく動くようになったら、次の機能に取り組みましょう。

継続的に改善する

プログラミングは一度に完璧なものを作る必要はありません。最初はシンプルなものを作り、少しずつ機能を追加したり、改善を重ねていくことが大切です。以下のようにタスクの削除機能を追加することもできます。

struct ContentView: View {
    @State private var tasks: [String] = []
    @State private var newTask: String = ""

    var body: some View {
        VStack {
            HStack {
                TextField("新しいタスクを入力", text: $newTask)
                    .textFieldStyle(RoundedBorderTextFieldStyle())
                Button(action: {
                    addTask(task: newTask)
                    newTask = ""
                }) {
                    Text("追加")
                }
            }.padding()

            List {
                ForEach(tasks, id: \.self) { task in
                    Text(task)
                }
                .onDelete(perform: deleteTask) // 削除機能を追加
            }
        }
    }

    func addTask(task: String) {
        tasks.append(task)
    }

    func deleteTask(at offsets: IndexSet) { // 削除機能を追加
        tasks.remove(atOffsets: offsets)
    }
}

自分のペースで楽しむ

最後に、自分のペースで楽しむことが最も重要です。プログラミングは楽しい反面、難しいこともあります。焦らず、一歩一歩進めていきましょう。自分が作りたいものが完成したときの達成感は、他に代えがたいものがあります。