1. HOME
  2. テックブログ
  3. プログラミングを独学するコツ

プログラミングを独学するコツ

春ですね!これから独学でプログラマになって好きなものを作ってやるぞ!と勉強を進められる方に向けて、ポイントを紹介したいと思います。学習方法は様々ありますが、ひとつの参考にしてもらえると良いかと思います。

学習の視座

プログミングで何か物を作れる様になるというためには、大きく分けると三つの物事への理解が必要だと思います。ひとつはプログラミング言語について。もうひとつは作る対象に固有の仕組みの理解(課題ドメインの理解)。三つ目に、それらに通底する「コンピュータ」の理解です。

プログラミングの知識はプログラミングの言語そのものの理解、課題ドメインの技術理解はWebならWebの、ゲームならゲームのアーキテクチャやフレームワークなどです。コンピュータの知識は広範囲に渡りますが、コンピュータがどの様に動いているかというハードウェアやOS、また言語に依存しないコンピュータサイエンスの知識などが該当します。

プログラミングを理解して何かものが作れる状態というのは、この3つの知識の全てで、ある一定の水準を満たしている状態と考えることができます。プログラミングを途中で挫折してしまっている人も多いと思いますが、この全てを満たすまでのどこかでやめてしまっているものと考えられます。

この壁をいかにして超えるか!というのが大切ですが、それぞれの軸にたっぷり時間をかけて学ぶことはなかなか難しいと思います。特にもう作りたいものがある人は基礎からじっくり数年かけて学ぶというのは難しいでしょう。独学であればなおさらです。
また、上でそれぞれの知識という様に互いが分離した知識の様に書きましたが、実際にはコンピュータを土台として、その上にアプリケーションを載せるため、それをつなぐためにプログラミングの知識が必要であるという方が正確です。そのため、実際にはプログラミングの勉強を進めながら、上下に範囲を広げていく様な段取りが必要です。

プログラミングをどうやって勉強すれば良いか?の回答に「一つ適当なプログラムを選んで作りたいものを作り、その過程で学べ」ということがありますが、これが有効である理由としては、上図の様に目標を持ってプログラミングを学んでいくことで、コンピュータやドメイン固有な技術にも少しづつ取り組むことになるためだと考えられます。
独学の場合コーチやメンターがいません。その役割も自分が担う必要があるのです。まずは上の様な学びの大枠を捉え、自分が今どのステージにいて、何が足りなさそうなのかを俯瞰し、効果的に勉強できる様にしたいですね。

基本的な学習

全くの初心者は、学習者が多いプログラミング言語を一つまずは身につけましょう。言語にも色々種類がありますが、最初はオブジェクト指向の言語が良いと思います。今であればPythonが最も入りやすいかもしれません。また身近にプログラマがいるのであれば、その人が使っているプログラミング言語でも良いです。

  • ウェブをやりたい:javascript / Python / PHP /Ruby / Go / Rust
  • ゲームを作りたい:C++ / C# / Python / javascript
  • ロボット、IOTや信号処理:C / C++ / Python
  • AI:Python / C++
  • ブロックチェーン:javascript / Rust

言語には言語仕様がありますので、プログラミング言語そのものの勉強はあまり難しくありません(書いてあることを学べば良い)。効率の良い方法は「紙の本」を利用するのが良いかと思います。ではどの本が良いかと良く聞かれますが、本で出ている様なものならば大体良いことが多く、ベストな1冊に絞ろうと思わないことが近道です。最初はスマートに効率良く勉強するというよりも数をこなしましょう。

本屋さんに行き、その言語の入門書で平積みになっているもの、またパラパラめくって相性が良さそうなものなど5〜10冊程度を購入し一冊づつ順番にチュートリアルや練習問題などがあれば全てやります。途中でつまづいてどうも先に進めなくなったら、他の本に移ってそちらも最初から順にやって、最終的に全ての本を最初から最後まで完成する様に心掛けます。

複数の本を一気にやるのがポイントです。1冊だと途中でスタックしてしまう恐れがあります。2冊目を読んだことで、1冊目のスタックから抜け出せるということがあるのです。技術書なので、1冊3,000円ぐらいはするかもしれませんが、10冊でもたかだか30,000円という安い投資です。ここはケチらずに行きましょう。
プログラミング言語は学んでいる最中にも、バージョンが上がって、本に書いてある情報が陳腐化してしまうことがあります。
また、本自体の記述が間違っていることも割と多いです。どうも自分は間違っていないけどうまく動かないぞ、と思ったらWebなどで検索してみるのも良いと思います。

広げ方

上記の方法を実践すれば、おそらく3ヶ月〜半年ぐらいで、必要最低限のプログラミングの知識と、課題ドメイン固有の知識を手に入れている状態になるかと思います。

そこでまずは自分が使うためのアプリケーションを一つ作ってみると良いでしょう。効率を考えると、自分が最終的に作りたいと思っているものの一部である様なものが良いですね。WEBであればCRUDの単語帳、システムプログラミングであれば、よく行う定型的な計算や操作などのコマンドプログラムやパズルなどの簡単なゲームが良いと思います。

それと並行してプログラミングの基礎力を高めるために、学習サイトの問題を解くのもオススメです。学習サイトはたくさんありますが、ひとつひとつの問題がよく考えられているところが良いですね。一つあげるならexercismがおすすめです。

プログラミングの学習から入って、分野を上下に広げていくと書きました、課題ドメイン固有な問題は多岐に渡るため、先に具体的なアドバイスをすることはできませんが、コンピュータ側の勉強については一つだけ参考図書を紹介します。

この本を理解するにはC言語の知識が必要になりますので、C言語をそれなりに勉強してから進めてもらったらよいと思います。

モチベーションの維持

作りたい!という強い気持ちがあればモチベーションが下がることはありません。そのためにはやはり作ったものを人に使ってもらってフィードバックをもらう(社会に開く)という経験が必要だと思います。いきなり大きなものでなくても、まだこの世に無いものであれば必ず一定の需要がありますので、ホームページやSNSで紹介していくと良いでしょう。

〜おまけ〜

CAMPという学習&メンタリングサイトのNinoさん作のエンジニア向けJustDoIt動画です。上がりますね!

ファブリカコミュニケーションズで働いてみませんか?

あったらいいな、をカタチに。人々を幸せにする革新的なサービスを、私たちと一緒に創っていくメンバーを募集しています。

ファブリカコミュニケーションズの社員は「全員がクリエイター」。アイデアの発信に社歴や部署の垣根はありません。

“自分から発信できる人に、どんどんチャンスが与えられる“そんな環境で活躍してみませんか?ご興味のある方は、以下の採用ページをご覧ください。

◎ 新卒採用の方はこちら
◎ キャリア採用の方はこちら

この記事を書いた人

大西 秀典
IS事業本部 IT戦略統括部長兼CDO
大西 秀典

おすすめの記事