プログラミングを独学で身に着けたい……
けど、何から始めたら良いのかわからない!!
効率的な独学方法を知りたいです。
プログラミングは、パソコンさえあれば独学で身に着けていくことが可能なスキルです。
実際僕も、独学でプログラミングを学び、ITエンジニアに転職しました。
しかし、いざ始めようとしても何から始めたら良いのかわからない、となるかもしれません。
また、独学では間違った勉強方法により、実践的でないスキルが染みついてしまうリスクもあります。
Koki
僕もエンジニアに転職した後、独学で学んで「そこそこできる」と思っていた言語が、実は箸にも棒にもひっかからないスキルレベルだったりして、大恥をかいた経験があります。
このような経験をもとに、本記事ではプログラミングの独学の始め方、そして正しい勉強方法を考えていきます。
独学の始め方:ゴールを明確に
プログラミングを独学する場合、やみくもに始めるのでなく、以下の手順で勉強する対象や流れを決めていきます。
- 作りたいものを決める
- 言語を決める
- 機材を揃える
- 教材を揃える
- 独学スタート
作りたいものを決める
一言でプログラミングと言っても、開発する対象は様々です。
- PCアプリ
- スマホアプリ
- Webサービス
- ゲーム
上記は一例ですが、何を作りたくてプログラミングに興味を持ったのか、は必ずクリアにしておきましょう。
何を作るのかによって、学ぶべきプログラミング言語が大きく変わってくるためですね。
作りたいものがわからない場合は?
「作りたいものがわからない」という場合は、PCアプリ(Windowsフォームアプリ)を作るために、Visual BasicまたはC#がおすすめです。
フォームアプリはパソコンを使用するうえで必ず目にするものですから、完成形をイメージしやすく、初心者でも勉強しやすいためです。
あるいは将来的にエンジニア転職やフリーランスでの案件獲得を視野に入れるなら、Webサービスを目指して、最も求人数の多いJavaを学ぶのがおすすめです。
言語を決める
作りたいものが決まったら、それを実現できるプログラミング言語を選びます。
代表的なプログラミング言語は、以下の通り。
- Java
- Visual Basic
- C#
- Ruby
- PHP
- JavaScript
- Python
例えばPCアプリであれば、Visual BasicやC#が広く使われています。
スマホアプリならSwift(iOS)やJava、Kotlin(Android)。
WebサービスならばフロントエンドはJavaScript、バックエンドはJavaやRubyですね。
ゲーム開発ではC#やC++が使われることが多いです。
Koki
このように、作りたいものが決まれば、自然と学ぶべきプログラミング言語も決まります。
機材を揃える
プログラミングを学ぶために必要な機材は、最低限以下の通り。
- パソコン(ミドルレンジ以上)
- インターネット環境
パソコンに関してはノートパソコンでもデスクトップパソコンでもOK、WindowsでもMacでも良いのですが、可能であれば8~10万円以上のモデルを見ておいたほうが良いです。
低スペックのパソコンだと開発環境が非常に重くなり、最悪の場合プログラミングを投げ出すことに繋がりかねないからです。
プログラミングを学ぶなら、パソコンはそれなりのものを用意するのがベターです。
また統合開発環境や資料はネット経由で入手することになるので、インターネット環境も必須です。
外部モニターもあったほうが良い
加えて、外部モニターもあったほうが良いです。
理由は、片方の画面で資料を出しながら、もう片方の画面でコーディングをするといった使い方ができ、作業効率が圧倒的に上がるからです。
教材を決める
今日ではネット上でプログラミングに関する情報は無料で手に入りますが、初心者が玉石混交のネット情報から役立つものをピックアップしていくことは不可能。
入門向けの教材を購入したほうが良いです。
書店では数千円で入門書籍を購入できますから、学ぶと決めた言語に応じた教材を購入しましょう。
初めての教材は、以下の視点で選ぶと良いです。
- 初心者向けと銘打たれている
- 少なくとも200ページ以上のボリュームがある(薄い本だと簡単な内容しかなく、大した知識が身につかないことがある)
- コードが多数紹介されている
- 教材を通して、あるいは巻末で、サンプルプログラムを作る構成になっている
独学スタート
ここまでを終えて、いよいよプログラミングの勉強がスタート。
教材通りに読み進めば良いんでしょ、と思いがちですが、ここからの取り組み方が大切です。
正しい勉強方法で進めなければ、プログラミングのスキルが十分に身につかない可能性があるからです。
次の章で、効果的なプログラミングの独学方法について紹介していきます。
独学の進め方
全く経験したことのない領域のプログラミング言語を新しく勉強する場合、以下の方法がおすすめです。
- 教材を一通り進める
- 教材のコードを模写する
- 実装を付加する
- 完全オリジナルの作品を作ってみる
教材を一通り進める
まずは書籍なり動画なり、購入した教材を一通り進め、終わらせます。
わからないところがあっても問題なく進めてください。
この「一通り進める」というのがとても大切なんです。
というのも、一通り俯瞰しないうちに特定のポイントを深堀したり、オリジナルの開発にチャレンジしたりすると、間違ったプログラミングスキルが染みついてしまうかもしれないんです。
僕の失敗例:Visual Basicの場合
僕が初めて勉強したプログラミング言語は、Visual Basicでした。
初心者用の書籍で勉強しており、書籍の構成は以下の通り。
- 開発環境構築
- 基礎文法
- シンプルなサンプルプログラム(フォームアプリ)の作成
- オブジェクト指向プログラミング
- 複雑なサンプルプログラム(家計簿アプリ)の作成
最初から読み進めていく中で、③のサンプルプログラムが動くようになった時点で、謎の自信が生まれてきたんです。
Koki
さっきのプログラムを応用して、こんなこともできるのでは?職場の業務で困っている、アレを解決できるプログラムも作れるかも!?
教材を終えていないのに、徐々に脇道に逸れ始め、「あれも作りたい、これも作りたい」と、インターネットで断片的に拾ってきた情報をもとに無理やりプログラムを組んでいく状態に。
重要な考え方であるオブジェクト指向もほとんど読んでいませんでした。
まさに、未熟な土台の上に突貫工事でいびつな建物を作っていくようなもの。
こうなってしまっては勉強効率や、得られるスキルの品質が大きく下がってしまいます。
そうならないように、応用は一通り教程を終えて、基礎を固めてからにしてくださいね。
教材を反復し、コードを模写する
そうは言っても、初めてのプログラミング学習では、教材を一通り終えただけで理解できるなんてことはありません。
一通り終えて「どんなことが書いてあるのか」が俯瞰できたら、教材を反復して身に染み込ませていきます。
書籍のサンプルコードをひたすら模写し、プログラムの書き方、そして実際にコードが動く感覚と楽しさを、身体で覚えていきます。
実装を付加する
教材に書かれているサンプルコードが理解でき、また同等のレベルの処理を自力で書けそうだと思えるようになったら、ここで初めて応用にチャレンジ。
サンプルコードに自身で考えた実装を加え、教材をベースにオリジナルのコードを書いてみます。
- コイントスゲーム→3連勝したら、連勝が続く限り、相手の勝率が5%ずつ上がっていく
- 付箋プログラム→ひらがな、カタカナ、英数字、常用漢字以外の文字が入力されていたらセーブできない
などなど、実用的でなくとも構いませんので、自分で作りたいものを決める→実際に作って動かしてみる、という経験を積みます。
Koki
プログラミングの楽しさを実感できるフェーズといえるでしょう。
完全オリジナルの作品を作ってみる
ここまでの過程を経たら、学習成果の確認およびアウトプットのため、自作プログラムの開発にチャレンジします。
自分用のお役立ちツール、職場の業務改善プログラムなど自分が「作りたい!!」と思えるものを決め、プログラムの構成から考えていきます。
正解が無い過程となりますので、行き詰ったら教材に戻ったり、インターネットで情報を集めたりして対応します。
自分のプロダクトの開発はプログラミングの醍醐味であるとともにスキルレベルが大きく上がる過程でもあり、これを繰り返していくと、徐々に作れるものの機能性やクオリティが上がっていきます。
ここまで来ると、既にプログラミングの楽しさに十分にハマっているいると言えますから、独学が成功と言えるでしょう。
スキルが身につかない落とし穴
プログラミングを勉強していると、「一生懸命時間をかけて、教材もこなしてきたのに、今ひとつ実力が身についていないような気がする……」、という落とし穴を感じることがあります。
独学で学んでいてそのように感じた際には、以下のパターンに陥っていないか確認してみてください。
動けばOKという思考
プログラムは記述ミスさえなければ動作します。
最近のコンピューターは高性能でメモリも十分ですから、洗練されたコードでも、無駄な処理ばかりの汚いコードでも、結果だけ見れば同じことも多いです。
だからといって、「動けばOK!」とばかりに力技でゴリゴリ書いていくようなプログラミング体験は危険です。
力技で書いたコードは、以下のような特徴に該当しがちです。
- ハードコーディング(定数や設定値がコード内に直接書かれている)
- マジックナンバー(数値がコメントや説明なしにコード内に埋め込まれ、意味を把握しづらい)
- 冗長性(同じコードが複数の場所で繰り返されている)
- スパゲッティコード(コードの構造が複雑で、フローが分かりづらい)
これらが身についてしまうと、作成したコードを拡張したり、より高度な処理を作成しようとした際にノウハウを有効活用できず、学習効率が下がります。
Koki
開発現場では御法度とされ、コードレビューでは確実に指摘されます……(何度も経験済み)
暗記しようとする
教材の説明内容や、サンプルコードを暗記して、理解したつもりになっていないでしょうか?
プログラミングは単なる記憶以上のものですから、いくら暗記してもスキルは身につきません。
プログラミングの学習で暗記がNGの理由は、以下の通り。
- 理解が重要だから
- 応用力が必要だから
- 変更に対応できないから
- 問題解決能力が身につかないから
理解が重要だから
プログラミングは単なるコードの暗記ではなく、その背後にあるコンセプトや原理を理解することが重要です。
暗記は特定のパターンやスニペットを覚えるのには役立ちますが、それだけでは問題解決や独自のコードを書くための基盤にはなりません。
応用力が必要だから
プログラミングでは、特定の問題を解決するためにどのようにアプローチするかを考えることが必要です。
暗記したコードは特定のシナリオでは役立ちますが、異なる状況に適応するには、考える力と応用力が必要です。
変更に対応できないから
プログラミングは、技術や要件が常に変化する分野です。
暗記したコードは、変更に対して柔軟ではありません。
問題解決能力が身につかないから
プログラミングは、問題を解決するためのスキルです。
暗記したコードでは、エラーや予期しない動作が発生したときに対応できないかもしれません。
問題解決能力は、状況に応じて柔軟に対応し、解決策を見つける力を必要とします。
挫折しそうなときは
そうはいっても、独学でプログラミングを学んでいると、つまずいて挫折しそうになるタイミングもあるかもしれません。
そういった際には、せっかく足を踏み入れたプログラミングの世界へのきっかけを逃してしまわないよう、以下の環境に身を置くことをおすすめします。
Koki
デジタルのものづくりは楽しいですし、プログラミングはこれからますます需要が高まるスキル。ちょっとしたつまずきで諦めてしまうのは、本当にもったいないです。
フォローしてくれる人を見つける
困りごとやトラブルの相談に乗ってくれる人は、独学でプログラミングを学ぶにあたって、本当に心強い存在です。
身近にスキルレベルのより高い人がいるなら、積極的に声をかけてみるべきです。
あるいは、SNSなどでプログラミングを独学中の同志のコミュニティに参加してみるのも良いですね。
僕自身もエンジニアとしてはまだまだ未熟者ですが、少しでも力になりたいとの思いから、WEB開発を学習中だった知人のサポートを買って出ていた時期があります。
プログラミングスクールを活用する
そして、プログラミングスクールを活用するのもおすすめ。
「お金もかかるし独学じゃないだろ!!」、と思われるかもですが、ほとんどのプログラミングスクールではカウンセリングを無料で受けられますし、低価格で受講できるスポットの講座もあります。
カウンセリングでは現在の独学方法が正しいのかを相談できますし、学んでいる技術の将来性など現場の声を聞けますから、状況に応じて活用しない手はありません。
まとめ | 正しい独学方法で、楽しいプログラミングを
この記事では、以下の内容を紹介してきました。
- プログラミング独学の始め方と進め方について。
- 力技のコーディング、暗記はスキルが身につかないのでNG!!
- 挫折しそうなら同志を見つけましょう。
プログラミングは、パソコン一台あれば身に着けることが可能なスキルです。
もちろん独学でも可能ですが、「本当に身につくの?」「きちんと将来に繋がるスキルが得られるの?」、と不安になるかもしれません。
しかし、個人的にはこれらの心配は不要。
独学でも正しいアプローチを踏めば、十分に実用的なプログラミングスキルを得られると考えています。
Koki
実際に僕も、完全独学でプログラミングを学び、未経験からのITエンジニアの転職に成功しました。
本記事で紹介してきた独学の進め方や注意点を参考に勉強を続ければ、きっとしっかりした技術を得られるはずです。
自分で考えた機能や処理を、実際にキーボードを走らせて実装し、画面上で実現していく……。
小さな達成感の積み重ねを楽しいと感じることができれば、独学の過程でエラーやつまずきが生じても、乗り越えていけるはず。
本記事が、楽しいプログラミングの世界に足を踏み入れるきっかけとなれば嬉しいです。