どもども~、あべしんです!
- プログラミング始めてみたけどどう学習していけばいいの?
- 学習ロードマップとか作った方がいい?
- 大まかな学習ステップが知りたい!
まだ始めたばかりで、学習の進め方がわからないという人も多いはず。
そこで今回は、初学者に向けて「プログラミング学習の進め方」を詳しく解説します。
僕は約7年エンジニア業務を続けており、今も継続してプログラミングを学習しています。
その経験から得た「学習の流れ」や「注意点」があるので、ぜひ参考にしてください。
この記事で以下のことがわかります。
- プログラミング学習の進め方
- 学習する上での注意点
プログラミング学習の流れ
結論、流れは以下の通り。
- 基本構文・基本処理を習得する
- 基本処理を組み合わせて小さな機能を作る
- 超簡単な成果物を作る
- 完成した成果物をいじる・壊す
- 他の人のコードと比較してみる
順番に詳しく見ていきましょう!
基本構文・基本処理を習得する
まずは当然基本を習得しなければいけません。
そもそも基本構文がわかっていないとプログラムがエラーで動いてくれませんからね。
具体的には以下のものです。
- 変数
- 代入
- 配列
- 演算子と式
- 条件分岐
- 繰り返し
- 関数
- 各言語の文法
基本を学ぶ手段はいろいろあります。
- Progate
- 書籍
- YouTube
基本的にどれも内容は変わらないはずなので、自分が気に入った手段で学べばOKです。
JavaScript希望の方はぜひ参考にしてください
→ 【1日でJavaScriptの基礎を習得しよう】プログラミング未経験者向け
基本処理を組み合わせて小さな機能を作る
ただ基本処理を学んだだけでは、「結局どういう使い道があるの?」で終わってしまいます。
それもそのはず。
基本処理単体では何もできないからです。
基本処理同士を組み合わせて1つの機能にすることで、初めて様々な動きを実現できます。
機能はいわば基本処理の集合体ということです。
まずは小さな機能を作ることから始めてみましょう。
機能の例
とはいえ説明だけではイメージが湧きづらいと思うので、一つ例を紹介します。
※基本処理を理解している人向けです
下記コードはJavaScriptで書いてますが、他の言語でも大差はありません。
for(let loopCount = 1; loopCount <= 10; loopCount++) {
if((loopCount % 2) === 0) {
console.log(loopCount + 'は偶数だよ!');
} else {
console.log(loopCount + 'は奇数だよ!');
}
}
やってることはシンプルです。
- loopCountの値が1~10の間ループ
- loopCountを2で割った余りが0であるかを判定
- 0なら偶数、0以外なら奇数のメッセージを表示
実行すると画像のように表示されます。
上記のコードでは、3つの基本処理を組み合わせてます。
- 繰り返し処理
- 条件分岐処理
- メッセージ出力処理
これらの基本処理を組み合わせて、いわば「偶数奇数判別機能」として動いているわけですね。
このような簡単な機能をいくつか作ってみましょう。
ネットで何か機能の例を探してみるのもいいですね。
作った機能に実用性があるかどうかなどは気にする必要はありません。
学ぶことが目的ですからね。
基本処理という「点同士」を繋げて「線」にするイメージですね!
自分でいろいろパターンを考えてみましょう!
超簡単な成果物を作る
ある程度機能が作れるようになったら、小さな成果物を作ってみましょう。
成果物といってもそれほど難しく考える必要はありません。
これまた簡単なものでOKです。
- ルールがシンプルなゲームアプリ
- 簡素なWebサイト
- 家計簿アプリ
「そんなの既に誰かが作ったものがあるじゃん...役に立たないでしょ?」
と考える方も多いと思いますが、学習時点でそこは気にしなくて大丈夫です。
大事なのは「実用性のあるものが作れるか」ではなく、「学んだ技術を使ってものを作ったという実績」です。
知った技術を実際に使ってみて初めて「習得した」ことになります!
まず「ものを作る経験」を重ねないと、そもそも実用性のあるものも作れません。
成果物を作るには機能の整理が必要
「機能は基本処理の集合体」と先述しましたが、
ゲームやアプリといった世の中のサービス(完成されたもの)は機能の集合体といえます。
成果物を作る際は、「作りたいものにはどんな機能が必要か」を考える必要があります。
要は機能の整理ですね。
例えば電卓アプリを例にすると、次のような機能が必要です。
- どのボタンが押されたか判別する機能
- 式通り計算する機能
- 入力した値、計算結果の値を表示する機能
このように必要な機能をピックアップしてまとめます。
とはいえ、手を止めてひたすら頭の中で考えてもおそらく完結しません。
ExcelやPowerPointなどを使って、図や表で機能を描きながら進めてみましょう!
ポイントは、見た目やデザインは一旦無視して最低限必要なものだけまとめることです!
まずはちゃんと動くものを作りきって、その後に見た目を調整しましょう!
完成した成果物をいじる・壊す
動くものを作れた時点で一旦目標達成です。
- 本格的にプログラミングスキルを上げるつもりはない
- 仕事を効率化するツールを1つ作りたいだけ
- プログラマ・エンジニアを目指しているわけではない
という方は、ここで終わりにするのも良いと思います。
しかしそうでない方は、作ってそのまま終わりにするのではく、成果物をいろいろいじってみましょう。
なんなら壊すくらいの感覚でOKです!
ちゃんとバックアップはとりましょう 笑
好き放題いじると、場合によっては正しく動作しなくなりますが、そこが学べるチャンスです。
ただ作るだけでなく「仕組みや流れを理解する」ためにもいじって壊すことは大事な学習の一つです
他の人のコードと比較してみる
プログラムコードの正解は1つではありません。
同じもの、同じ動作でも様々なコードの書き方があります。
基本的には、自分で作った機能・成果物と似たようなものを作っている人がいます。
そういう人のコードと自分のコードを見比べてみることも重要です。
- 無駄がなくよりコンパクトに書かれている
- 自分では思いつきもしなかったロジックがある
- 処理内容はほぼ同じだけどコードの見やすさが全然違う
こういった発見や気づきがあったらどんどん吸収しましょう!
吸収して自分の引き出しを増やしていくことでプログラミングスキルは向上します。
プログラミング学習にゴールは無い?
「結局どこまで学習すればいいの?」と疑問に思う方もいると思います。
先述した通り、「そこまで本格的に学習するつもりはない」という方は、作りたいものが作れたらゴールといっていいでしょう。
しかしそうでない方は、「ゴールは無い」と思った方がいいです。
特にエンジニア・プログラマとして活躍したい人に言えます。
理由は次の通り。
- 学習を続けないと開発・解決できることの数が増えない
- 技術の移り変わりは頻繁に起こる
- 常に学ぶ姿勢でないと成長していかない
学校の勉強のように「教科書のここまでやったらOK」という話ではないんです。
必要な時にいつでも学習するというスタンスが大事です。
上手くいかなくてもネガティブになる必要はない
始めたての人は、上手くいかないことが多すぎて投げ出してしまうケースが非常に多いです。
しかし、ここでネガティブになる必要はありません。
むしろそれは当たり前のことだし、避けて通れないものです。
プログラミングは上手くいかないことを解決してようやく正常に動くものが作れるわけですからね!
上手くいかないものを解決することで初めて成長しますし、そのためのプログラミング学習です。
なので投げ出してしまっては本末転倒...
躓いたとしても「これは成長するために必要なこと」と捉えていきましょう。
継続力をつけるコツを習得しよう
とはいえ、継続しようと思ってもなかなか継続できないという方もいるでしょう。
そんな方は「継続力をつけるコツ」を習得しましょう。
いつもやらないといけないことを後回しにしてサボってしまう方は必見です。
→ 【プログラミング学習継続できない病】そろそろ治しませんか?
コメント