本記事について
プログラミングを学び始めたばかりの頃、どのように学習すれば良いか悩む方が多いと思います。私自身も最初は同じように悩み、遠回りしてしまったと感じています。
そんな私が、プログラミング経験を積んで年数を重ねた今だからこそ実感する、プログラミングを学ぶ際に意識すべき4つのポイントを紹介します。
今回紹介する内容が全て正しいとは限りません。
全て鵜呑みにせず、参考程度に留めてください。
意識するポイント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)
}
}
自分のペースで楽しむ
最後に、自分のペースで楽しむことが最も重要です。プログラミングは楽しい反面、難しいこともあります。焦らず、一歩一歩進めていきましょう。自分が作りたいものが完成したときの達成感は、他に代えがたいものがあります。