プログラミングを独学するなら、つまずく前に最初に学習の全体像を把握しよう!

Python

プログラミングを学んでみたいと思い、独学しようかなぁと思われる方が増えてきています。僕自身も3年前にプログラミングを学び始めましたが、

  • 「あれ、そもそもどの言語から始めればよかったんだっけ?いろいろ手を出したけど力つかなかったな」
  • 「プログラミングでエラーばかり出てて、どうしよう。これで本当にいいのかなぁ。モチベーションが続かなくてあきらめよう」
  • 「これを知っておけば、こんなに悩まなくてもよかった!」

と後から振り返ると思うことがたくさんあったので、プログラミングを独学する前に知っておきたいことをまとめておきたいと思います。

全体像が分からないとプログラミングを独学する上で失敗しやすい

プログラミング学習で失敗するパターンとして、全体像が分からず、学習の進め方が非効率になるパターンです。例えば、以下のような例があります。

  • やりたいことが明確ではないので、学習が持続しない
  • 何をどのタイミングで学習すべきかわからず躓くパターン

やりたいことが明確ではないので、学習が持続しない

プログラミング学習でやりたいことが明確ではなく、ちょっと難しいことをやった時につまづくパターンです。なんとなく学べることを学んで、また関係ないことを学んで、、と繰り返して、結局何もできないみたいなパターンが非常に多いです。

何をどのタイミングで学習すべきか分からずつまづくパターン

本当は基礎をやればいいタイミングに、必要以上に難しいものに手を出してつまづくパターンです。もしくは、ずっと簡単なものを学習している結果、成長しないパターンですこれらに共通して言えるのは、プログラミング学習の全体感がないまま学習を進めていった結果、つまづくパターンです。

独学する上で大事なのは全体像を把握すること

プログラミングを独学しよう!と思った時には、まず全体像を把握しておく必要があります。

プログラミングを独学する上でのゴールを決めよう

まず、学習は明確にゴールを決めて、そこに向かって学習を進めて行くのがよいです。プログラミング学習のゴールとしては、抽象度の高い順にだいたい3つくらい動機があると思います。

  • 教養としてプログラミングを学びたい
  • 実用的にプログラミングを使いたい
  • エンジニアになって、プログラミングで生きていきたい

この記事では、このようなゴールから逆算して、プログラミングを独学する上でこれらのようなゴールに到達できるように、全体像を解説していきます。

独学プログラミング学習の段階

独学でプログラミングをする上で、一般的にはこのような段階を踏んでいきます。

大きく分けて

  1. プログラミングの基礎を理解する段階
  2. クローンアプリを作る段階
  3. オリジナルアプリを作る段階
  4. エンジニアの卵の段階

があり、順番にクリアして行く必要があります。エンジニアになりたい人以外は、3までで十分かと思います。それぞれの段階で、学習方法とおすすめな学習サイトが異なるので、別々に紹介いたします。

 

それではさっそくみていきましょう。

①基礎を理解するフェーズ

学ぶこと

この初心者フェーズでは、とにかく、プログラミングで必須の基礎的な文法を学んでいきます。例えば、

  • 繰り返し処理はどうすればよいのか
  • 条件分岐はどうすればいいのか
  • 関数、クラスは?

この段階だと、正直そんなに難しいことはやらないです。

どこで学ぶべきか

プログラミングの基礎を学ぶなら、Progate一択です。どの言語でも基礎は満遍なく網羅しているので、とりあえずは基礎はここで固めましょう。

> Progateを見てみる

どの言語を学ぶべきかですが、Webアプリを作りたいなら、Ruby on Railsがよいと思うので、

  • HTML
  • CSS
  • JavaScript
  • jQuery
  • Ruby
  • Ruby on Rails
  • Git
  • Command Line

あたりを2週くらいしておくのがよいと思います。データ分析を学びたいなら

  • Python
  • Git
  • Command Line

あたりを理解しておくとよいでしょう。

何が理解できるようになっているべきか

以下の概念を理解していて、Progateレベルの処理が何も見ずにできるくらいになっていれば大丈夫です。

  • 変数、文字列、数値列
  • if文, for文, while文などの基本的な構文
  • 関数, クラス

などです。

②クローンアプリを作る段階

クローンアプリを作る段階では、基礎的な文法を理解した上で、実際に誰かの作ったアプリをコピーできるレベルです。

学ぶこと

具体的に学ぶこととしては、何をやるかによって変わります。例えばWebアプリなら

  • データベースを持ったアプリケーションの構築
  • 認証の仕組みの構築
  • フォロー機能の構築
  • いいね機能の構築

になりますし、データ分析がしたければ

  • Web APIを利用したデータ取得方法の理解
  • スクレイピングを利用したデータ取得の方法の理解
  • データ分析する方法の理解

などになります。これらを、学んだプログラミングの基礎知識を使って学習していくのがよいです。

どこで学ぶべきか

実際にアプリ開発をするチュートリアルを利用して学習するのが良いと思います。

例えば、RubyでWebアプリをゼロから作るなら、Railsチュートリアルがおススメです。こちらは無料で学ぶことができ、教材の質も非常に高いです。ProgateでとりあえずRubyが理解できました!Ruby on Railsもできました!HTML, CSS, JavaScript, jQueryもある程度理解できました!って方は、ぜひRailsチュートリアルを利用して、ゼロからアプリを作ると、だいたいのWebアプリの構造が理解できるかと思います。ちなみにRailsチュートリアルでは

  • ログイン、ログアウト機能の実装
  • サーバーにデータをアップロードする方法
  • ツイッターのようにツイートをする方法
  • メール通知をする方法
  • フォローする方法
  • ツイートに返信する方法

等を学ぶことができます。

他にも、例えばPythonを利用して

  • データ分析
  • スクレイピング
  • Web API
  • Webアプリ開発

をできるようになりたい場合、noteのチュートリアルを利用してみるのがよいと思います。個人的にはnoteのチュートリアルをひたすらこなすのがおすすめです。

> Python初心者向けの実践的なチュートリアルまとめ

この段階で大変なところ

このフェーズで大変なことは、エラーに対する対応力です。前のフェーズだと、特にエラーが出ても親切に教えてくれているので、特に困ることはありませんが、実際に自分の環境でコードを書いていると、よくわからないエラーが多発します。チュートリアル通りに写経したとしてもです。

ですので、この時にモチベーションの壁が生まれ、この段階でほとんどの独学者がプログラミングで挫折します。

個人的には、15分くらい調べてもわからなかったら、teratail等で質問してしまうのが良いと思います。また、最初は質問の仕方にも悩んでしまうかもしれないので、menta等でメンターを見つけるのが良いと思います。

この段階でできるようになること

とりあえずは、プログラミングチュートリアルを利用して、最低3つくらいアプリ等の成果物ができるようになると良いと思います。

③オリジナルアプリを作る段階

このフェーズでは、ゼロから作りたいものを作れるようになるフェーズとなります。

学ぶこと

この段階では、沢山のチュートリアルを模倣しながら、機能の作り方を学んだ上で、いろいろと組み合わせて作っていくのが一番力になるでしょう。それこそ、さきほど紹介したnoteなどのチュートリアルを利用して、何個か機能を結び付けて合わせてみるのがよいと思います。

例えば、僕は最初にruby で出会い系サイトを作りましたが、この時に

  • 友達リクエストってどうやって作るんだろう
  • PDFのファイルアップロードってどうやんだろう

等々、チュートリアルでは学ばなかった機能が沢山あったので、YoutubeUdemy等を駆使してひたすら検索しました。そして一つ一つ新しい機能の実装方法を理解していき、それらの技術を組み合わせてアプリを作りました。

このフェーズで大変なところ

このフェーズで特に大変なのは、ただコピーすればいいだけではなく、実際にゼロから構築する必要があるので、見本がないことです。つまり、本当にプログラミングを理解していないと作りたいアプリは作れないのです。ですので、徹底的にググる力が必要とされます。

なにで学ぶと良いか

基本的には、Google検索になると思いますが、他にもYoutubeのプログラミング解説系はオススメです。いいコンテンツはだいたい英語にはなりますが、英語が理解できるとじぶんのやりたいことをドンピシャでやってくれていることが多いので、それを参照にするのが非常に良いと思います。

④エンジニアの卵の段階

自分でオリジナルでアプリを作れるようになったら、もうエンジニアの卵です。ここまでいくと、より大規模なシステムを分業で作るために、コードの可読性をあげたり、エラーを早めに検知するためのテストコードを書いたり、処理速度の高いコードを書く必要が出てきます。

学ぶこと

ここまでいくと、あとは「どれくらいいいコードをかけるか」みたいことが大事になってくるので、チーム開発ができる現場に行くのが良いと思います。

何で学べば良いか

基本的には、エンジニアになっちゃうのが良いと思います。今後エンジニアになりたいなら、今まで作った実績をもとにインターン等を受けるのが良いと思います。他にも、趣味でやる場合はエンジニアのコミュニティに属して、オンラインで一緒に共同開発するとよいと思います。

各段階におけるモチベーションについて

プログラミング学習を進めていくと、モチベーションがわかなくなるフェーズが急にやってきます。特に、

  1. プログラミングの基礎を理解する段階
  2. クローンアプリを作る段階
  3. オリジナルアプリを作る段階
  4. エンジニアの卵の段階

のうち、2、3の段階でかなり精神的にやられます。ここはいきなり一気にハードルが上がるので、モチベーションが落ちやすいのです。しかし、この2、3の段階こそが特にプログラミング能力が伸びているときなので、めげずに頑張ってみましょう。

その他プログラミングの独学についての質問

よくある質問についても答えていきたいと思います。

独学するなら、本とWebサイト、どちらがいいですか?

自分に合うものを選べばよいと思います。個人的にはWebのほうが安く、かつ一つのテーマについて深堀できるので、オンラインのチュートリアルを利用するのがよいと思います。

独学するなら、言語は何がいいですか?

言語は本当に何をやりたいかによるのですが、WebアプリをやるのであればRubyをおすすめします。理由は、ProgateやRailsチュートリアル等の教育コンテンツが整備されているからです。

最後に

Pythonに関するチュートリアルをこの記事でまとめているので、興味がある人はぜひ見てみてください!

> Python初心者向けの実践的なチュートリアルまとめ