プログラミングは独学でも学べる? 学ぶ方法や挫折やモチベーション低下の乗り越え方や本も解説
2021.10.07


1.プログラミングを学ぶうえで押さえておくべきこと

1-1.そもそもプログラミングとは?

プログラミングとは何かという大きな質問に対して、答えや説明の仕方は人によって様々ですが、「プログラミングとは、コンピュータに問題を解決させる方法である」という考え方があります。

コンピュータはプログラミングによって私達に様々な快適さを与えてくれますが、もしプログラムが無ければ、コンピュータは電気を熱に変える中身のないガラクタになってしまいます。OS、ブラウザ、電子メール、ゲームなど、あらゆるものを動かしているのは、コンピュータの中にあるプログラムです。

そのプログラムを作るプログラミングとは現代のIT技術が普及した私達の世界ではいたるところで使用されています。インターネットを通して見るサービスやホームページなどはもちろん、ゲームの作成、最近では家電や自動車にもプログラムは搭載されており、そのシステムの開発をエンジニアが日夜行っています。

1-2.プログラミングを学ぶメリットとは?

IT社会を支えるプログラミングを学ぶメリットを考えてみましょう。まず仕事として需要が高く職に困らないことが挙げられます。IT業界は人材不足かつ年々その需要が高まっており、プログラミングスキルさえ身に付ければフリーランスなど独立て仕事の幅を広げたり、需要のあるスキルを身につけて年収を上げたりなどキャリアアップに繋がります。

最近ではDX(デジタルトランスフォーメーション)という言葉が流行りとなりましたが、ITエンジニアの人材不足が常態化しており、企業が優秀な人材を集められないというのが現状です。経済産業省でも2025年の崖という言葉を使い、国全体でIT人材の不足を問題視しており、今後ますますITエンジニア人材の育成や支援に力を入れていくことでしょう。

また、プログラミングを学べば仕事以外でも様々な面で活用できます。自分でサービスを開発しミニ起業のようなことをしたり自動化ツールを開発して日々のタスクやルーチンを楽にしたりすることもできます。

1-3.プログラミング言語にはたくさんの種類がある

一口にコンピュータに指示を送るプログラミング言語と言っても、人間の言葉と同様にプログラミングは用途や役割によって言語が異なりメジャーなものからマイナーなものまで合わせると200種類以上あると言われています。

端末を通じて表示される画面をデザイン・表示していくJavascriptなどのフロントエンド言語や、データベースやサーバーとの処理を扱うJavaなどのサーバーサイド言語など役割毎に別れたり、モバイルアプリに強いフレームワークを持つ言語やAIや人工知能開発など機械学習に強いPythonなど、得意な分野に違いがあったりと、プログラミング言語には様々な特徴や切り口があります。これらを知って何を学んで行きたいか、どんな言語が自分に向いているかなどを判断していくことも大切です。

2.プログラミングは独学で学ぶことが可能なの?

2-1,プログラミングを学ぶ上で必要なもの

プログラミングを学ぶ上で最低限必要な物はたったの二つでPCとインターネット環境です。まず、PCはネット通販や電気屋で5万円〜10万円も出せば充分な物が買えます、インターネットは回線スピードが遅すぎると必要なソフトウェアなどがダウンロードできない、関連サービスなどが使えないなど発生しますので、回線として最低限のスピードがあるものを選びましょう。また、部屋で勉強する場合は快適にコーディングをするための机や椅子を整えても良いでしょう。

2-2.3割近くのエンジニアが独学でプログラミングを学んでいる

プログラミングは、一見難しそうで独りでいきなり習得するのは無理だと思う方もいるかもしれませんが、実際は未経験でも独学で習得することが可能です。

最近ではプログラミングが学べるサイトや動画が数多く存在します、また昔と比べると開発環境の整備やアプリのデプロイ・検証をサポートしてくれるツールが増えましたので、やる気と時間さえあれば本格的に勉強することも可能です。

実際に現役エンジニアにどこでプログラミングを学んだかのアンケートでは、26%の方が独学で学んだと回答しており、プログラミングスクールや大学より多いという結果になっています。

(参考)https://www.jiji.com/jc/article?k=000000069.000068228&g=prt

2-3.ただし約8割が挫折や気詰まりを感じた経験がある

ITエンジニアという仕事は需要もありスキルアップに繋がりやすいといった理由から未経験からでも転職を目指し勉強を始める人が増えています。しかし、独学が可能と言われるプログラミングも決して楽な道のりではありません。環境設定で行き詰まってしまった、エラーの解決ができなかった、不明点を質問できる環境がなかったなど様々な理由から、勉強を始めたのに途中で諦めてしまったなどの話はよく聞きます。

技術的に詰まる以外にも独学はモチベーションの維持という意味でもハードルが高いでしょう。どの教材や学習方法を選んだら良いのかわからない、どこまで何を進めたら良いのか判断ができなかったなどネット上には情報はいくらでもあるとは言え、エンジニア転職といった目標のために何が正しいかを見つけるのが難しく、徐々にフェードアウトしてしまう人も多いです。

独学でエンジニアに無事なれた人でも挫折や気詰まりを全く感じなかったという人は少数派でしょう。

3.プログラミング言語によって異なる特徴やプログラミングの学習期間

3-1. Java

JavaはJavaScriptとは名前が似ていますが全くの別物で、Google三大言語の1つです。

システム開発やアプリ開発の際に必要になり、プログラミング言語の元としても知られて

います。JVM(Java Virtual Machine:Java仮想マシン)で動作をし、どんなパソコンでも起動できるのが大きな特徴です。もともとはWebページ上での使用を想定して開発された言語ですが、今ではAndroidアプリ開発を始めとして、金融系・運送系のシステムなどの大規模業務システム開発向けにSIerなどで利用されるなど、多種多様に用いられています。

求人数も多く、給与や待遇も他の言語を扱えるエンジニアより良い傾向にあるJavaですが、他言語と比べると習得が難しいとされています。あくまでも目安ですが、基礎レベルの習得には400~500時間、実践的に開発を行えるようになるには1,000時間かかると言われています。コンパイル言語で開発環境を整えたり、フレームワークを適切に使うためのスキルが必要だったりが習得難易度を上げていますが、最近ではSpring Boot など初心者でも理解しやすいようなフレームワークが出てきており、おすすめのプログラミング言語の一つです。

3-2. Python

Pythonはコード数が少ない状態でアプリなどを作れるため初心者でも比較的学びやすく、

教育現場などでも注目を浴びています。さらに現在IT業界でも注目されている人工知能などのAI技術やデータ解析・分析ツールなど計算や統計処理などのライブラリが豊富で、学びやすいだけでなく、最先端の技術を扱えるプログラミング言語としてエンジニアからも最も注目されており、学びたいプログラミング言語・将来性のあるプログラミング言語など様々なアンケートやランキングで常に上位争いをしています。

Pythonは初心者でもわかりやすい言語ではありますが、基礎を学ぶにはやはり300~400時間は必要になり、またフレームワークなどを利用して実務でシステム開発ができるレベルになる目安は900時間ほど必要でしょう。また、AIなどの人工知能の開発には機械学習関連や数学などの知識も別に必要となってきます。

3-3. Ruby

すぐにWebサービスを作れるようになりたいと思っている方にとっては、Rubyはおすすめの言語です。日本人が開発したこともあり、公式の日本語リファレンスが豊富で、またフレームワークのRuby on Railsが、素早くアプリケーションを開発することが得意なことから、はじめに学習するプログラミング言語としてRubyを選ぶ人は多く、プログラミングスクールのカリキュラムとしてもRubyが採用されている割合は非常に高いです。

RailsチュートリアルというTwitterのクローンアプリを作りながらRubyとRailsを学んでいくハンズオン教材の知名度と完成度は非常に高いことでも知られています。

Rubyを使用すると、記載するプログラミングコードが短くてすむため他言語より短期間でWebアプリなどを開発できますので、最低限の開発業務をしたい場合に適しています。学習期間は800時間が目安です。

3-4. フルタイム勤務と時間がある場合、それぞれの学習期間

プログラミング言語を勉強初めてから、仕事にするまでに大まかに800〜1000時間程度必要ということを上の項目で説明してきました。この学習時間を自由にできる時間が少ないフルタイムで働いている社会人が確保しようとするとどのくらいかかるのでしょうか。

仮に平日に毎日2時間、休日に5時間学習時間を確保できた場合、1週間に20時間、1ヶ月に80時間学習できる計算です。おおよそ1年くらいの期間を見積もると良いでしょう。

また、学生や主婦など比較的時間がある方であれば、短期的に集中して学習をすることも可能なはずです。平日に毎日4時間、休日に8時間と考えれば、1週間に35時間、1ヶ月で140時間となりますので、おおよそ半年くらいのイメージです。もちろん、1日の勉強時間をもっと取れるという方はその分期間は短くなりますが、あまり無理な計画を立てず、自分が努力できる範囲で学習計画を立てるのも継続のコツとなります。

4.独学でプログラミングを学ぶ方法

独学でプログラミングを学ぶ方法について、メリットとデメリットについて解説します 。

4-1.書籍で学ぶ

プログラミングを勉強する際、その方法はスクールからオンラインのWebサービス、本での学習と様々ですが、古くから存在する教材は書籍です。書籍で学ぶメリットは1冊あたり数千円で購入できるというコストパフォーマンス、通勤時間や空いている時間に読むことや繰り返し見ることもできる手軽さがあります。またネットの様々なケースの記事と比べて

内容の信頼度も高く、体系的にまとめられている点です。

一方、デメリットとしては自分で本を読み進めていくだけでは、分からないことがあった場合に、質問をすることはできません。加えてハンズオン教材を本で進めようとすると都度本とパソコンを行き来する必要があり、人によっては他の方法と比べて進みが遅くなることもあるかもしれません。

4-2.YouTubeなどの動画で学ぶ

近年は動画サービス形式の教材が増えてきております。Udemyなどの授業買い切り系からYouTubeのように無料で視聴できる講座など様々な種類のプラットフォームが存在します。

動画のメリットは実際に講師が書いていくコード真似すれば目に見える形でWebアプリなどが出来上がるので、開発の過程が見えます。また、本やWebサイトに比べて開発作業の全体の雰囲気がイメージしやすく、コードを書くスピードや、他人によるツールの操作なども視覚的にも勉強になる点です。

一方で、特にハンズオン形式の動画の場合は、講師と同じことを自分でもやろうとするとついていくのが大変です、人によっては疲労感を感じることもあり、教材通りに再現しようとするのに精一杯で結局何を書いたか、コードの仕組みなどがあまり頭に入らなかったなんて声も聞きます。また、質問できるサービスもありますが、掲示板形式なので少し初心者には心理的ハードルが高く感じられる人もいると思います。

4-3.友人や知人に教えてもらう

もし知り合いにITエンジニアがいたら、分からないことをその人に聞いてみながら学習を進める方法もあります。最近ではお金を払うことでメンターを作るというサービスもあります。本や動画サービスと比べて自分の不明点をピンポイントで聞くことができるので、詰まっている点やエラーが出た時に解決する道を見つけるのが早くなります。

また、自分の状況などもコミュニケーションをとって共有していけるので、プログラミングで初心者がつまづきやすい「何のエラーが起きているかすら分からない」という状況にもある程度有効です。

デメリットは教えてくれる人も無限に時間があるわけではないので、質問の数に限りがある場合、またエンジニアと言っても様々な知識や範囲があるため必ずしも分からない点を解決してくれる回答を得られないなどがあります。また、親切にプログラミングについて教えてくれる知人や友人がいる環境は珍しいも言えるため万人が真似できる方法ではないでしょう。

5.独学でプログラミングを学ぶステップ

5-1.必要な環境を用意する

プログラミングは始めようと思えばすぐにでも始められます。学習に必要なものは至ってシンプルで、パソコンとインターネットのたった2つだけです。十数年前のパソコンしか家に無く、またネットワーク速度も動画が見られない程に遅いという人で無ければ、準備はできていると言えます。

5-2.目標・目的を決める

プログラミングを含めたIT技術は非常に奥深くかつ幅が広いので、どんなに勉強しても全てを理解できたという状態にはなれません。学習を始める前にいつ何のためにどうなっていたいのかなど目的・目標を決めることがモチベーションの維持には必要です。また、あまりに今と目標が離れている場合はさらに小さくステップを刻み学習計画を立てて行くと前進している感覚を味わえて良いでしょう。

5-3.プログラミング言語を選ぶ

プログラミング言語は、JavaやPythonやJavaScriptなどのメジャーなものからあまり聞かないマイナーなものまで合わせると200種類以上あると言われています。機械学習やビックデータに強い、サービスのデザイン・UI側の処理に関わってくるなど様々な特徴や用途、難易度といった違いがあります。自分がどうなりたいかなど将来のイメージをしながら自分に合うと思うプログラミング言語を選びましょう。

(参考)【未経験者必見】2021年に学ぶべきプログラミング言語とは? 主要言語20種を徹底解説!(BLOG-19)

5-4.自分にあった学習方法を選ぶ

未経験からプログラミングを学ぶためには、少なくない勉強時間を確保する必要があります。自分が扱うプログラミング言語や目指す分野によっても異なってくることに加えて、独学をするのかプログラミングスクールに通うのか、eラーニングサービスを使うのかなど自分に合った学習方法を選ぶことによる勉強効率にも影響を受けます。それぞれのメリット・デメリットを考えて自分に合った学習方法を選ぶと良いでしょう。

(参考)【5分でわかる】3分でわかる! はじめてのプログラミング。学習手順、ステップ、コツ、時間、費用などを徹底解説(BLOG-9)

5-5.フレームワークなどの環境を整える

プログラミングに必要な物はパソコンとインターネットと説明しましたが、実際にWebサービスなどのプログラムの開発を行う場合、ご自身のパソコンにVSコードなどの統合開発環境ツールをインストールしたり、プログラミング言語・フレームワークを扱うための環境を整える必要があります。多くの教材が学習の始め方といった章を頭に設けてくれていますので、従って進めていきましょう。

6.独学でプログラミングを学ぶ際に挫折しがちなポイントと対策

6-1.エラーを解決できない

挫折の理由として、最初に上がるのがエラー解決ができない・辛いということです。

現役のエンジニアでも開発を行っていると必ずエラーには当たるものですが、初心者の場合デバッグ力が足らずに自分のコードが今どういう状態なのか分からないといったどうにもできない状況に陥ることがあります。その後どれだけ時間をかけても進まず心が折れてしまい、学習自体を諦めてしまう人もいるようです。

このような状況に対して、インターネットのサービスを利用してお金を払ってメンターと契約したり、また匿名掲示板でアドバイスをもらったりすると何とか解決法を見つける方法もあります。また、エラーが出なかった所まで戻って自分ができることを先に進めるなどの割り切りも有効です。

6-2.分からないポイントを質問できない

もう一つ独学者がつまずく原因として多いのは、分からないポイントを質問できない、つまり質問できる環境がないことです。一つのアプリを作る時にコードの書き方はエンジニアやバージョン、使っているライブラリの違いで異なってきます。そのため、参考書どおりに学習を進めた後に何か変更を加えようとしても、思った通りに動かないことが出てきます。

システムやアルゴリズムの仕組みを理解するのは参考書頼みではなかなか難しい部分もあり、それを教えてもらうことができないとよく分からないまま人のコードをくっつけてそのままエラーが出続けるなどの悪循環に陥ってしまいます。

QiitaやStack OverflowなどのIT系の記事・質問サービスで、ソースコードの部分的な問題や解決が日々投稿されていますので、このようなサービスから自分の欲しい情報を得られるようなコツを掴めると独学でも学習を続けられるでしょう。

6-3.モチベーションがコントロールできない

プログラミング学習のモチベーションを維持しつづけることも独学者には非常に難しい点です。プログラミング・ITスキルは非常に奥深く・幅が広いので、独学だと自分が今どのくらいの力をつけたのか、目標を達成するにはどこまで勉強を続ければ良いかなど学習ゴールが見えづらいです。

自分自身で今行っている学習は何のためか、独学は転職のためもしくは個人開発のサービスをリリースするためなどを決めていくことが大事です。また自分で判断できないという方でもTwitterなどのSNSやQiitaでは同じようにプログラミングを勉強している人も多いので、そういった人の考えを知ることで、自分の目標がイメージできるでしょう。

6-4.覚えることが多すぎて辛い

プログラミング言語だけでも非常に奥深いのですが、アプリやサービスを開発しようと思うとプログラミング言語以外のデータベースやネットワークといった様々な周辺知識が必要になってきます。これまでIT周りの勉強などをせず、完全に一から開発をしようとすると考えければいけないことの範囲の広さに圧倒されたり自分は何も分かっていないという劣等感に苛まれたりする方もいるかもしれません。

しかし、最初はあれもこれも全てを理解しようとするのではなく、なぜ動いてくれているのか分からなくてもひとまず動けば良いぐらいの割り切りの気持ち、一つひとつ理解して前に進めているというポジティブな心構えが助けになります。

6-5.学習のための時間が捻出できない

プログラミングのスキルをつけるには、ある程度の学習時間が必要です。しかし仕事をしながらエンジニアへ転職を目指す人などは、平日早くても6-7時までは働いてクタクタになって疲れた状態から勉強したり、せっかくの休日のプライベートの時間を削ってパソコンと向かい合ったりと時間を捻出する必要があります。これは働いている人なら分かると思いますが、なかなかハードな生活です。

そのため、効率的な時間の使い方にも意識を向けていくのが良いでしょう。例えば学習時間のうち、実際にコードを書かず本を読むなど知識をつけるだけの学習は電車での移動のような隙間時間に当てる、また特に興味もない飲み会を断わる・惰性で続けてしまっている趣味を辞めるといった取捨選択をするなど時間に対してシビアな考え方も必要となります。

7.プログラミング学習のモチベーションを高められる本

ここではプログラミング初心者がモチベーションを高められそうな本として評判の高い本を三つ紹介します。コードを書くのは一旦休憩といった気分の際に是非読んで見てください。

7-1.リーダブルコード

エンジニア向けの本として先輩やスクールでも勧められることの多い最も有名な本と言っても過言ではないでしょう。システムの開発やその後の運用は一人によって行われることはほぼ無いです。そのため、ソースコードは自分だけが分かり動けば良いという訳ではなく、見た人がそのコードを理解できる必要があり、良いコードを書くこと人は良いエンジニアの要素の一つです。この本は良いコードを書くためのテクニックや考え方がまとまっており、どんなプログラミング言語を選ぼうとも一読しておくことをオススメします。

7-2.達人プログラマー システム開発の職人から名匠への道

本書では、ソフトウェア開発に関するノウハウ、教訓・提言が書かれており、良いプログラマーになるための指針になる内容が多く書かれています。「繰り返す仕事は自動化する」とか「開けたら締める(ファイルのOpenとClose)」のように具体的なことから、プログラマーとしてのスタンスや哲学といったところまで書かれており、エンジニアになった後でも読み返せる名著です。

7-3.Coders at Work プログラミングの技をめぐる探求

偉大な開発や業績を残したプログラマーに対して、どうやってプログラミングを学んだか、他人のコードをどうやって読む、ソフトウェアはどう設計する、など気になることをインタビュー形式で聞き出していく本。回答するプログラマーは皆凄いですが、同じ質問に対して、様々な角度や意見の違いなどもあり読んでいて面白い本です。

8.プログラミング学習のモチベーションを高められる映画やドラマ

映画でもプログラマーを描いた面白く、また自分のやる気や将来の野望を持たせてくれるような作品があります。これから紹介する三本は普通に映画としても面白いものですので、見て損は無いはずです。

8-1.ソーシャルネットワーク

今ではGAFAの一角を占めて、世界的な大企業であるFacebookの創業者である、マーク・ザッカーバーグがどのようにFacebookを作り大きくしていったかという実話に基づいた映画です。パーティーで女子に冷たくされた腹いせに、寮にこもって後にfacebookの元となるWebサイトを一夜にして作った話は有名ですが、テキーラを飲みながらのハッカソンやガラスにアルゴリズムを書きなぐるシーンなどプログラマーとして憧れるシーンが度々描写されます。

8-2.CODEGIRL

プログラマーやエンジニアといえば、男性のイメージの方がおそらく強いでしょう。

この映画はGoogleが出資し、女性プログラマーを増やすことを目的として制作されたドキュメンタリー映画で、そういったイメージが覆されます。

世界的なコーディングコンテストで競い合う少女たちの日々を追跡する内容で、プレゼンに失敗した女の子の涙なども映し出されており、参加者の緊張や熱意をリアルに感じることができ、プログラミングへの熱意を思い出させてくれるオススメできる映画となっています。

8-3.AWAKE

この映画は将棋のプロ棋士と将棋AIソフトを開発する人の戦いを描いたもので、近年盛んとなっているプログラミングによる人工知能・機械学習開発を極めるとどんなことができるかにも繋がる話です。

将棋や囲碁でプログラムが名人に勝ってしまう話は昨今の人工知能の進化を世間的に話題になる話ですが、この話はまだプログラムが現在ほどは強くない頃に人工知能とプロ棋士が対決するイベントが行われており、その対決を元に作られたものです。プログラムが棋士を倒すなどかつては考えられなかったことが技術の進歩やプログラマーの熱い思いと努力で夢が実現していく過程が描かれており、モチベ上がること間違いなしの映画です。

9.プログラミング学習ならトレノキャンプへ

トレノキャンプではプログラミングを実践的に学ぶためのコースを、オンラインで提供しています。オンデマンド配信なので、いつでも好きなときに受講が可能です。講座の詳しい内容は下記のバナーをクリックしてご覧ください。

この記事をシェア
おすすめの受講コース
  • データ分析完全パック(Python 3 エンジニア認定データ分析試験対応)【データ分析シリーズ 1~3パック】
  • はじめてのデータベース ~仕組みの理解とSQL~
  • Pythonを動かして理解する機械学習 ~回帰と分類~
  • ビジネスパーソンのためのデータリテラシーコース ~データ分析ファーストステップ~