効率的なプログラミングの独学方法3つ!独学でプロになったプログラマーが紹介

27, 2019-07-04

目次

プログラミングの独学はこの3つをやっておけばOK

こんにちは、narupoです。


私はプログラミングを独学してフリーランスのプログラマーになりました。

それで、どうやってプログラミングを独学したのかとよく聞かれます。


それに言えることは、プログラミングの独学で必要なのは以下の3つだということです。

  • 本を読む

  • 写経する

  • 自分でプロダクトを作る

これさえやっておけばプログラミングは上達します。はい、断言できます


断言なんかすると、今度はこんな声も聞こえてきそうですね。

  • 断言したって、どうせ人によっては効果に違いがあるんだろ?
  • あなたはそれでプログラミングが上達したかもしれないけど、人によるだろ?

なるほど。おっしゃることはもっともですね。


しかし、先ほど紹介した↓の方法。

  • 本を読む

  • 写経する

  • 自分でプロダクトを作る

この方法ですが、別に私の思い付き、経験論というわけじゃありません。

というのも、この方法は普遍的と言えるからです。


私は、プログラミングを長いあいだやっています。
中学生の時にHTML/CSSをやったのがはじめてですから、それから20年以上はプログラミングをしていることになります(途中、ブランクはありましたが)。
その間、色んなプログラミングをやっている人を見てきました。


そのプログラミングをやっている人の中から、先ほど紹介した3つの方法をやってない人を探すことのほうが難しいのです。

それほど普遍的な独学方法です。


Twitterなどでプログラミングをやっている人を探してみてください。

必ず↓の内、どれかをやっています。

  • 本を読む

  • 写経する

  • 自分でプロダクトを作る

逆に、これ以外になにをやってるの? という感じです。


普遍的な方法だということは、これより最善の方法はないということです。
というか、あったら教えてください

私が参考にしたいぐらいです。


そういえば、勉強会に参加するという選択肢もありますね。
これもいい勉強になるらしいですね。

……。

それに、競技プログラミングで勉強するという選択肢もあります。
これも熱中できる人には合ってるかもしれません。

……。

以上の2つはこの記事では解説しませんが、気になる人はこちらの記事へどうぞ。


それでは、この3つの方法をやることの具体的な理由を見ていきたいと思います。

なぜこの3つをやっておけばいいのか?

Why?

プログラミングの独学方法はいろいろありますが、なぜこの3つをやっておけば十分なのか?

  • 本を読む

  • 写経する

  • 自分でプロダクトを作る

それぞれ理由があります。
これらの独学に共通して言えることは、そのどれもがプログラミングの能力を引き上げるということです。

しかも、やればやっただけプログラミングの能力が上がります。
つまり、マイナス要素が無いんですね。

副作用も私の感覚だとありません。
これをやったから他の能力が下がったとか、そういうのはありません。

若干、社交性は落ちるかもしれませんね。

まず「本を読む」ということについて、理由を解説していきます。

本を読むと知識がたまっていく

女性と読書

プログラミングの歴史をご存知でしょうか?

プログラミング (コンピュータ) - Wikipediaによると、最古のプログラマブル(自動で動く)な機械が1206年だということです。
さすがにその頃に近代的なプログラミング言語はありませんでしたが……。

1954年ぐらいに最初のプログラミング言語のひとつであるFORTRAN(フォートラン)が開発されました。
この頃ぐらいから徐々にプログラミング言語は発展して、今のような形になってきました。


つまり歴史で言うと、人類の近代的なプログラミングには60年以上の蓄積があるわけですね。


プログラマーの多くはため込んだ経験を本やドキュメントにして発信してきました。

現代のプログラマーは過去の本に学び、そのプログラマーがまた本を書くという……サイクルが繰り返されています。


本の中には「こうしたほうがいい」、「これはやらないほうがいい」などのノウハウがたくさん詰まっています。

本を読むことで、それらの知識を効率よく吸収できると言えます。


さらに、アルゴリズムやデータ構造などの発明も、本から学べますし、良いコーディングスタイルについても本から学べます。


つまり、本を読まないことは! なわけですね。


本やドキュメントを読まずに俺のプログラミング道を行くぞ! という人も中にはいると思いますが、はっきり言ってしまうとそれは効率的ではありません


効率を上げるには先人から学ぶのが一番の近道です。

これはプログラミングに限った話ではないですよね。


そういうわけで、プログラミングのスキルを上げたければ本やドキュメントを読むことです。


写経すればアウトプットの質が上がる

コーヒーとパンとライティング

写経とは、他人の書いたコードを書き写すことを言います。


写経をすると、写経によって得た経験が身体の中にたまっていきます。

たまっていくと自然とアウトプットの質が高まっていきます。

国語の「書き取り」や、「筋トレ」と同じ効果で、やればやるほど経験値がたまります。


実は、これは本を読むことにも関連しています。

良い本には良いコードが付いてくるものです。

その本に書いてあるコードを写経することで、より本に書いてあることへの理解が進みます。


まさに「本を読む」ことと「写経する」ことは独学にうってつけだと言えるでしょう。


写経を続けるとそのコードが自分のものになっていきます。

ドラゴンボールで言うところのセルの吸収
星のカービィで言うところのカービィの吸い込み

に近い行為と言えます。



例えば、データ構造のリストを例にあげてみましょう。

リストの処理を何も見ないですらすらと書ける人はなかなかいません。

プログラミングを専門に学んでいる大学生にも、なかなかいないそうです。


しかし、私は何も見ないですらすら書けます。

なぜ書けるのかというと、本に書いてあったリストの処理を丸暗記しているからです。

どうやって暗記したのか?

もちろん写経で暗記しました。


どうです、すごいでしょう


え? リストの処理を何も見ないで書けるからといって、何になるんだ?

……。


え? リストを実装できるから何だって言うんだ?

……。


どうですか。写経はプログラミングの良い勉強になるでしょう。

自分でプロダクトを作ってアウトプットする

ハート形のお皿と果物の盛り合わせ

なんでもいいのでプログラミングでプロダクト(作品)を作りましょう

最初は簡単なもので良いです。TODOアプリとか。

このアウトプットも大事な作業です。


本を読むこと、写経することは、おおざっぱに言えばプログラミングにおけるインプットの作業です。

いっぽう、このプロダクトを作る作業はプログラミングにおけるアウトプットの作業と言えます。


このインプットとアウトプットの作業を交互に進めると、プログラミングはめきめき上達していきます。

本を読んだり写経で覚えた知識が、お手本の無い自分だけのプロダクトを作っていくことで、自分の身体にしみついていきます。

本で学んだ知識は使わないと生っぽさがありますが、実際に使ってみると自分のものになっていきます。

この感覚は、じっさいにやってみるとわかると思います。


この感覚を経験すると、こんどは応用的な知識の使い方もできるようになります。

たとえば、データ構造である木構造。

これも、プログラミング言語などをじっさいに作ってみると、その構造の便利さがよくわかるようになります。


あとはたとえば、アルゴリズムとデータ構造を学んだら、その知識を生かせるプロダクトを考えます。

データ構造のスタックを学んだら、「stack」という入力メッセージを管理するCUIアプリを作ってみようとか。


それからライブラリ(プログラミングの道具)を作ってみてもいいですね。

ライブラリもプロダクトのひとつです。これは、いい勉強になります。

データ構造のリストを学んだら、リストを使ったライブラリを作ってみるとか。


ただし、アウトプットばかりしても、プログラミングはなかなか上達しません。
そういう意味では、やはりインプットである「本を読む」ことと「写経をする」ことは大事です。


具体的な方法

それでは、それぞれの具体的な方法を見ていきたいと思います。

良さそうな本を探す

並べられている本

本を読むと言っても、なんでもかんでも読みまくるのは、時間がない人にはきびしかったりします。

良い本にはだいたい良い評判が付いてきます。

その評判にアンテナを立てることで、読むべき本がわかってきます。


たとえば、コーディングスタイルについての本では以下が有名です。


「リーダブルコード」はとにかく色んなところで名前を目にしますね。それほど有名な書籍です。
一度読んでおけば損はしないでしょう。

「プログラミング作法」も若干古いですが、良い本です。C, C++, Javaのサンプルコードがのってます。


他には、ゲームを作りたい人には以下がおすすめです。

ただしこの本は初心者向きではありません。中級者以上の人が読む本です。
しかし、内容はとてもしっかりしています。C++によるゲーム開発についての本です。


C言語を学びたい人には以下がおすすめです。

また、この本の内容は以下のドキュメントからも見れます。

筆者もこの本でC言語を覚えました。

3回ぐらい挫折しましたが、4回目ぐらいで何とかへっぽこなプログラムを作れるようになりました。
(どのぐらいへっぽこかと言うと、目も当てられないぐらいへっぽこです)
なので、挫折した人は気にせず再トライしてみましょう。


アルゴリズムとデータ構造の本を買って写経する

マクロ-歯車-ギア-エンジン-1452987

写経にうってつけなのがアルゴリズムとデータ構造についての本です。

筆者は、この本で基本的なアルゴリズムとデータ構造を学んでサンプルコードを写経しました。

この本はわかりやすいので、初心者の方にもおすすめできる内容です。

みなさんもぜひ写経してください。

C, Javaのサンプルコードがのってます。


アルゴリズムとデータ構造は、プログラミングの基礎ともいえる知識です。

独学でこの基礎を学ぶのはとてもいいプログラミングの勉強になります。


アルゴリズムとデータ構造を学ぶと、少し高度なプログラミングも可能になります。

たとえばプログラミング言語の制作とかですね。

プログラミング言語の制作では木構造を使うので、この本で独学しておくとあとあと楽です。

簡単なアプリを作る

並んでいるボート

プロダクトの制作ではとりあえず簡単なものから作ると良いでしょう。


例えばTODOアプリなども簡単ですね。

GUI(見た目がグラフィカルなアプリ)でもCUI(コマンドなどの文字ベースなアプリ)でもどちらでもいいので、TODOを管理できるアプリ。

そのTODOを永続的に保存するにはファイルの入出力を学ぶ必要もあるので、あまりやったことない人には良い練習になるでしょう。


ほかには、GUIなら日記帳とかも簡単そうですね。


作ったらGitHubにアカウントを作ってアップしましょう。

もしかしたらコメントやスターがつくかもしれません。


最初の内は簡単なアプリもうまく作れないかもしれません。

しかし、落ち込む必要はありません。みんなそんなものです。

例外はスーパープログラマーになっちゃうようなすごい人だけです。


ほとんどの人は、あーでもない、こーでもないと失敗しながらアプリを作っています

私もそうです。


もし、アプリがうまく作れなかったら、アプリの機能を減らしてみるといいでしょう。

たとえばTODOアプリなら、TODOの投稿だけ可能で、編集や更新、削除はできなくするとか。

そういう風に機能を減らすと、プログラミングしやすくなります。


そういった低機能のアプリを作れるようになったら、徐々に機能を増やしていくといいです。

気が付いたら高機能なアプリになっています。


低機能のアプリでもうまく作れなかったら、お題を変えてみるのが一番です。

私も、自分のスキルにマッチしていないアプリを作るのはしんどいので、よくお題を変えます。


たとえばGUIのTODOアプリが難しかったら、CUIのTODOアプリにしてみるとか、そういう風に難易度を下げるといいでしょう。


忘れてほしくないのが、今の自分のプログラミング・スキルに見合ったアプリを作ることです。

見習い大工にいきなり家は作れません。まずは小さい家具からです。


そんなアプリばっかり作ってて、スキルが上がるのか? という疑問を持ったみなさん、大丈夫です。

スキルは少しずつ上がります

もし心配なら、アプリごとに課題を作るといいでしょう。

このアプリではファイル入出力を使うゾ、とか。
このアプリではCRUD(クラド、いわゆる作成、読み込み、更新、削除の4大機能)を実装するゾ、とか。

そういったクリアできそうな課題を作るとモチベーションも上がります。

そして、そういった課題に慣れることでスキルも上がっていきます。

プログラミングの独学は可能!

そういうわけで、プログラミングの独学は可能です。

問題は、その方法です。

今まで書いてきた方法が、皆さんのお役に立てれば幸いです。


プログラミングの独学は、とても良い趣味です。

この趣味を選んだあなたはセンスがあります。

きっと大丈夫です。


ほかにもこんな記事を書いているので、参考にしてみてください。


以上、narupoでした。

スポンサーリンク

スポンサーリンク

スポンサーリンク

スポンサーリンク