プログラミングは独学可能か?学習ロードマップ作りを現役エンジニアが解説【初心者向け】
プログラミング独学のロードマップ作りを解説しています。独学でどれぐらいの事ができるようになるのか、どのような言語があるのか、習得するべき内容とその順番を説明します。プログラミング学習を始める際の参考にしてください。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
プログラミング独学のロードマップ作りについて、TechAcademyのメンター(現役エンジニア)が初心者向けに解説します。
なお本記事は、TechAcademyのオンラインブートキャンプの内容をもとにしています。
今回は、プログラミングに関する内容だね!
どういう内容でしょうか?
プログラミング独学のロードマップ作りについて詳しく説明していくね!
お願いします!
なお、今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。
目次
- プログラミングは独学が可能か
- プログラミングを独学で学ぶための準備
- プログラミングを独学で習得するまでのロードマップ(動画あり)
- プログラミングの独学の壁を乗り越える方法
- プログラミングの独学に役立つ教材
- まとめ
プログラミングは独学が可能か
スマートフォンやAIなどのイノベーションが大きく社会を変えていくにつれ、それらを支える技術であるプログラミングにもかつてないほど注目が集まっています。
これまで一部の専門家だけに必要であったプログラミングの知識は、業種の枠を超え、多くの社会人が求めるものとなりました。
はたしてプログラミングは独学が可能なのでしょうか。
求めるレベル
結論としては、個人的にWebサービスやゲームを開発するレベルであれば独学は可能です。
プログラミングの知識はいくつかの要素で構成されます。以下は独学が可能なものです。
- 頭の中で考えていることを文章や図に書き出す能力(業界用語では要件定義や設計と呼びます)
- プログラミング言語そのものに対する知識
- 数学やグラフィック、Webデザインに対する基礎知識
- パソコンやスマートフォンに対する知識
逆に以下は独学が難しく、システム開発会社などに勤務したほうが知識を得やすいでしょう。
- 職業として仕事を進める上での業界の常識。例えばプログラミング前後も含めた作業工程の流れなど
- 企業の基幹システムや3Dグラフィックを多用したゲームなど、専門性の高い領域に対する知識
- チームで作業をするノウハウ。職業としてのプログラミングはチームで作業する場合がほとんどです
この記事では独学な可能な知識について、詳しく見ていきます。
プログラミング言語
プログラミング言語や開発を行う対象によっても独学のしやすさは変わります。
例えばWebページの開発はサーバーサイドとフロントエンドに分けられます。
Amazonや楽天のようなECサイトを例に説明します。
フロントエンド
Webブラウザの中で動作し、ユーザーとのやりとりを担当するプログラムを開発します。
商品一覧や注文画面などのWebページ自体を作成し、購入数量といった入力欄や注文ボタンを押した時の動作などをプログラミングしていきます。
比較的独学に向いているのはフロントエンドです。
HTMLというマークアップ言語とCSSというスタイルシート言語を習得するとホームページを作成することができます。
さらにJavaScriptというプログラミング言語を習得することで、動きのあるWebページを開発することができます。
プログラミングを始めるまでの準備、いわゆる開発環境の構築も比較的容易です。
サーバーサイド
Webページはインターネット上にあるサーバーと呼ばれるコンピューターに格納されています。
そのサーバーの中で動作するプログラムを開発するのがサーバーサイドです。
具体的には商品情報などのデータを読み込んでWebページに表示したり、ブラウザから送信されてきた注文情報をもとに金額計算や決済処理などを行ったりします。
サーバーサイドでよく使われるプログラミング言語は
- 大規模システム開発:Java
- Webサイト:PHP
- WebアプリケーションRuby on Rails
- AI:Python
- スマートフォンアプリ開発:Kotlin,Swift
などです。
これらも独学ができないわけでは無いのですが、フロントエンドに比べると難易度が数段上がります。
その理由はWebサーバーなどの開発環境の構築に多少の手間がかかるのと、そもそもサーバーサイドでプログラムが動作する仕組みがイメージしづらい点です。
フロントエンドと違い学習成果を見た目で判断することが少ないので、独学では挫折しやすい傾向にあります。
独学に必要な情報
学校教育でのプログラミングは教科書をベースとしつつ、YouTubeの学習動画を見たり、QAサイトで質問したりして補う学習スタイルが定番化しつつあります。
ですので独学に必要な情報は豊富に用意されています。
一方でWebページや書籍、動画など情報が多すぎて、どれを選べばよいのか分からない状況です。
このような状況下においては、正しい情報へのアクセスや体系的に学ぶための情報の整理をいかに行えるかが鍵となります。
具体的には
- 書籍やYouTubeで体系的な知識を身につける
- ブログ記事などは参考にしても良いが一次情報である公式サイトで裏付けを取る
といった点がポイントとなります。
モチベーションの維持
独学で最もハードなのはモチベーションの維持でしょう。
プログラミングを手段として転職や副業を考えているのであればなおさらです。
モチベーションを維持するには、まずは純然にプログラミング自体に興味を持つことです。
プログラムが思ったとおりに動作する、頭の中で考えたことをプログラミングで表現することに喜びを感じましょう。
プログラミングは崇高で創造的なものです。
また遠くの大きな目標だけでなく、達成可能な小さな目標を設定し、日々の学習で達成感を味わえるようにしましょう。
プログラミングを独学で学ぶための準備
何事もそうですが、目標を達成するには準備が大切です。
ここでポイントを確認しましょう。
目的の明確化
まずはプログラミングを独学する目的を明確にしましょう。
手に職をつけて転職や副業を考えているのか、実現したいサービスがあり起業も視野に入れているのか。
目的を明確にすることで、そこにかける予算や時間も具体化できます。
スキル取得までのリソース確保
目的を明確にしたら、それを達成するまでの大まかな期間を設定しましょう。
期間は長くても1年にします。
それ以上長いと不確実性が高く、目的もぼやけてしまいます。
期間を設定したら、学習に確保できる時間を計算します。
仕事や学業の時間を除き、平日や休日にどのぐらい学習時間を確保できるか?
これは学習を始めてからのペース配分の目安にもなります。
意外に確保できる時間が短いことに驚かれるかもしれません。
そのような時は通勤時間や休憩時間の活用も考えましょう。
通勤時間などにカリキュラムを読んだり、動画での基礎学習をし、帰宅してから実際に手を動かしてプログラミングを行うと細切れの時間を効率的に活用できます。
時間と同様にお金も大切なリソースです。学習にお金をかけることは自分に対する投資と思ってください。
書籍の購入やプログラミングスクールの受講にどのぐらいお金をかけられるか、目的を達成すると、どのぐらいの金銭的なメリットが生まれるか、大まかに想定して予算を計画しましょう。
国などの助成制度を活用するのも有効な手段です。
例えば厚生労働省では教育訓練給付制度や人材開発支援助成金といった助成制度を用意しています。
スクールなどを受講するのであれば調べてみるといいでしょう。
独学が難しくなった場合
計画段階でネガティブなことを考えるのはよくないかもしれませんが、万が一に備えて独学が難しくなった場合の対応も考えておくといいでしょう。
プログラミングの学習も1つのプロジェクトです。
途中途中で進捗状況を確認し、目標達成に向けて自分自身を管理していきます。
どうしても理解が進まない、モチベーションが保てないなど、一人では学習が難しい場面も出てくると思います。
書籍だけでは難しいからプログラミングスクールの受講も検討するか、学習をやめてしまうのか。
いずれにせよ進捗状況を把握して自分に足りないものを理解しておくことが次の一歩につながります。
開発環境を整える
学習を開始するにあたり、開発環境を整える必要があります。
とは言っても一般的なパソコンがあれば十分です。
初学者におすすめのフロントエンドの開発環境の一例をご紹介しましょう。
パソコン
WindowsかMac、どちらでもかまいません。
メモリは可能であれば8GB以上、CPUはCOREi5以上だと快適にプログラミングが行えます。
記憶装置はハードディスクよりはSSDが高速でおすすめです。
エディタ
プログラミングを行うソフトウェアです。
多くのエディタが無償で入手できます。
筆者のおすすめはVisual Studio Codeです。
Visual Studioという製品もありますが別物なので注意しましょう。
上記のリンク先から手順通りにインストールを行います。
インストールが終わったらVisual Studio Codeを起動し「Live Server」という拡張機能をインストールすれば準備完了です。
ブラウザ
フロントエンドのプログラムはブラウザで動作します。
おすすめはGoogle Chromeです。
デベロッパーツールと呼ばれる開発者向けの機能が充実しており、プロの開発現場でも多く用いられています。
プログラミングを独学で習得するまでのロードマップ
次に初学者におすすめの、プログラミングを独学で習得するまでのロードマップをご紹介しましょう。
動画で学ぶならこちら!
マークアップ言語の勉強
最初はHTMLとCSSの勉強から始めるのがおすすめです。
HTML5とCSS3というバージョンに対応した教材を用意し、簡単なホームページを作りながら体系的な知識を得るようにします。
この段階でファイルや拡張子、フォルダパスといったプログラミングに関連する基礎知識も覚えるようにしましょう。
学習の目標としては、あまり複雑でないWebページを(ソースコードを見ずに)HTMLとCSSを使って模倣できるようになるレベルとします。
どこから始めていいかわからない場合は、TechAcademyの動画カリキュラムで学ぶのがおすすめです。
フロントエンドの勉強
HTMLとCSSを覚えたら、JavaScriptの学習を行いましょう。
JavaScriptを覚えることでWebページに動きをつけることができるようになります。
JavaScriptの仕様はECMAScriptという規格で定義されています。
ECMAScript2016(ES6)以上に対応した教材を用意し、変数や制御構文、配列などのプログラミングの基礎知識を身に着けましょう。
JavaScriptは覚えることが多く、学習もなかなか進まないかもしれません。
一度で全て覚えようとせず、何周か繰り返して少しずつ覚えていくのがポイントです。
またフロントエンドでは多くのライブラリ(他の人が作ったプログラム集)を使用します。
ある程度学習が進んだら覚えるようにします。
おすすめはVue.jsです。
Vue.jsは実際の開発現場でも多く使われている、比較的新しいライブラリです。
同様に使われているライブラリとしては、ReactやAngularなどがあります。
また、有名で使いやすいライブラリとしてjQueryもあります。
使用頻度は徐々に減っており、優先度は低いと筆者は考えますが、まだまだ開発現場で使用されており、職業としてフロントエンドのプログラミングを行うのであれば覚える必要があります。
学習の目標としては、小規模なWebアプリを開発できるようになるレベルとします。
おすすめはカレンダーアプリです。
年月を指定すると該当月のカレンダーを表示する機能をベースにします。
この他にもTODOリストやエディタなど、小規模なアプリをいくつか開発して、頭の中で考えたことをプログラミングで表現することに慣れていきましょう。
サーバーサイドの勉強
ここから先は、サーバーサイドか、BaaSとよばれるサーバーが不要なフレームワークを学習するかの選択となります。
プログラミングを職業とするのであれば、サーバーサイドの勉強を行っておくと仕事ができる範囲が広がり就職活動に有利になります。
サーバーサイドの勉強でおすすめなのはPHPやRuby on Railsです。
実際の開発現場ではJavaが多く使われていますが、プログラミングを職業としない場合は環境構築の難易度が高いため前者をおすすめします。
PHPはLaravelというフレームワークと組み合わせて学習するといいでしょう(Ruby on RailsはRubyというプログラミング言語にRailsというフレームワークを組み合わせたものです)。
サーバーサイドの勉強をする際は、あわせてデータベースの学習も行うといいでしょう。
学習の目標としてはデータベースと連携した小規模なWebアプリを開発できるようになるレベルとします。
前述したカレンダーアプリを予定を書き込めるように発展させたものなど、いくつか開発するといいでしょう。
フレームワークの勉強
もう1 つの選択肢として、BaaSとよばれるサーバーが不要なフレームワークを学習する進め方もあります。
代表的なフレームワークはFirebaseです。
サーバーサイドのプログラミングを行わずに本格的なWebアプリを構築することができます。
オリジナルのWebサービスの構築やプログラミングによる起業を考えているのであれば、こちらもおすすめです。
学習の目標としてはサーバーサイドと同様、BaaSと連携した小規模なWebアプリが開発できるようになるレベルとします。
実際にサービスを開発する
ある程度学習が進んだら、Webサービスの開発を検討してみましょう。
これまで何度か「頭の中で考えたことをプログラミングで表現する」というキーワードが登場しましたが、この段階で学ぶべきはその手法の体系化、具体化です。
業界用語では要件定義や設計と呼びます。
要件定義
職業エンジニアとしての要件定義とは以下のことを表します。
- 顧客の要件(要望)を具体化する
- システム開発で実現する機能範囲を決める
- 大まかな作業工程・リソース(人員、コスト)を明確にする
ことです。
独学でWebサービスの開発を行う場合には、実現したいWebサービスの主な目的、利用者にとってのメリット、主要機能、画面イメージ、いつまでに完成させるかなどを数枚の図と説明文にまとめるといいでしょう。
設計
設計とは、機能をプログラミングができるレベルまで明確化することです。
職業として行う場合には、設計書という成果物を作成します。
設計書には画面イメージ、(ボタンを押すなどの)イベントごとの処理内容、画面や状態などの遷移図といったものが含まれます。
独学する場合にも同様に画面イメージとイベントごとの処理内容をまとめた設計書を作成しましょう。
設計書を見てプログラミングが行えるレベルの内容が理想的です。
具体例
Webサービスは掲示板やマッチングサイト、ランキングなど何でもかまいません。
筆者は以前、イベントで使う投票システムを開発し、仲間うちでプチヒットしたことがあります。
これは社内の発表会などで使うのですが、参加者に投票画面のアドレスを配布しておき、発表の結果で良かったものに投票してもらうと、結果が集計画面にリアルタイムでグラフ表示されるというものです。
リアルタイムというのが好評で、良いフィードバックを得られました。
このように実体験がともなうWebサービスはモチベーション的にも良く、さらに独学の意欲がわくことでしょう。
クラウドサービスを使い公開してみる
良いアイデアをWebサービスで具体化できたら、広く一般に公開するのも手です。
現在では多くのクラウドサービスがあり、プログラミングで作成したファイルをクラウドサービスにアップロードするだけで公開することができます。
レンタルサーバーやホスティングサービスといったキーワードで検索してみると多くの情報が得られます。
Webサービスを公開したら、友人知人に使ってもらい、フィードバックをもらうといいでしょう。
ポイントとしてはWeb「サービス」であるということです。
すなわちフィードバックを得たらサービスに反映し、継続的な改良を行い続けることが大切です。
Webサービスの世界ではリリースしてからが勝負と呼ばれます。これは個人のWebサービスについても同様です。
フィードバックを得て改良を継続することで多くの気付きが得られ、次のWebサービスのアイデアなどにもつながっていきます。
プログラミングの独学の壁を乗り越える方法
実はプログラミングの学習はスムーズに進みません。
開始して最初の数ヶ月は断片的な知識は得られているがよく分からない、自分で一からプログラムを作れる気がしないという状態が続きます。
しかし一定期間学習を続けると、ある日突然壁が消えます。
そしてしばらくすると、また停滞期に入る、というように階段状にレベルアップしていきます。
ここでは、そんな独学の壁を乗り換える方法をご紹介したいと思います。
理解度100%を目指さない
はじめから完全な理解を求めることはやめましょう。
語学学習でも基本的な用語を覚えれば会話は成立します。
分からない単語があれば辞書で調べれば済みます。
プログラミングでも同様に基本的な命令や構文を覚え、教材を何周か繰り返しながら少しずつ理解の幅を広げるようにしましょう。
手を動かすことで学ぶ
実際に自分の手でプログラムを入力しないと理解は進みません。
カリキュラムに書いてあるとおりにプログラムを入力することを「写経」と呼びます。
写経しても予定通りに動作しない時があります。その時が覚えるチャンスです。
なぜ正しく動作しないのか、ソースコードを追って試行錯誤することで、結果的に理解が深まります。
プログラミングの学習は必ず手を動かすこと。覚えておきましょう。
小さい目標をクリアしていく
前述しましたが、壮大な遠くの目標だけではモチベーションが続きません。
プログラミングの学習という大きなプロジェクトの中に、数日~1週間程度で達成できる小さな目標を設定し、確実にクリアしていきましょう。
目標は何らかの機能の理解やカリキュラムのページ数、プログラミングした行数など、達成したことが分かりやすいものにするといいでしょう。
切磋琢磨できる仲間や頼れるメンターなどと学ぶ
人によっては完全な独学が向いていない場合もあります。
そのような場合には仲間を巻き込んで一緒に勉強するか、メンター制度があるプログラミングスクールを受講することを検討しましょう。
先程の小さな目標もそうですが、学習を進める上で達成感やフィードバックはモチベーションの維持に重要です。
「友人ががんばっているから自分も頑張ろう!」、「メンターが支えてくれるから学習を進めよう!」という関係は学習にとって大きな力となります。
プログラミングの独学に役立つ教材
最後にプログラミングの独学に役立つ教材を紹介します。
TechAcademyの無料動画カリキュラム
YouTubeにはプログラミングの動画も多くあります。
例えばTechAcademyのYouTubeチャンネルでは、HTMLの基本からハウツー動画まで膨大な量の動画が公開されています。
特に何から始めていいかわからない人でも学習に取り組めるよう、カリキュラム化された再生リストがあります。
いざ学習を始めるときにはここから取り組むといいでしょう。
JavaScriptを学習するフロントエンドの講座もあります。
Qiita
Qiitaはプログラマのための技術情報共有サービスです。
初心者向けから専門的な内容まで、プログラミングに関する多くの記事が公開されています。
サイトにアクセスして検索BOXに「JavaScript 入門」などと入力すると多くの記事が該当します。
記事を読む際は、更新日(新しいもの)とLGTM(いいね)の数を参考にするといいでしょう。
関連サイト:Qiita
Medium
英語に抵抗が無ければおすすめなのがMediumです。
Mediumは世界最大級のブログプラットフォームでプログラミングの記事も多数投稿されています。
日本語の説明が分かりづらい場合でも英語表現だとすんなり理解できる場合があります。
また最新の情報をいち早く入手できるというメリットもあります。
なお月額5$の有料会員になると全ての記事を無制限に読むことができます。
英語の学習もできるし一石二鳥でおすすめです。
関連サイト:Medium
teratail
teratailはプログラミングに特化したQ&Aサイトです。
幅広いプログラミング言語についての質問と回答が多く投稿されています。
はじめは投稿せず、自分と同じような悩みを持っている人の投稿を参考にするといった使い方がいいでしょう。
teratailのおすすめは初心者タグです。
投稿に初心者タグ(若葉マーク)をつけることで、その投稿が初心者からのものであることを表すことができます。
実際に自分で投稿する際は、ぜひ初心者タグを使ってみましょう。
関連サイト:teratail
Udemy
プログラミングのオンラインコースは多くあります。
例えばUdemyではフロントエンドやWebデザイン、スマートフォンのアプリ開発など多くのコースが用意されています。
また定期的にセールを行っており、タイミングが合えばかなりお得に受講できます。
Udemyの他にもProgateやドットインストールなど、様々なオンラインコースがあるので参考にするといいでしょう。
関連サイト:Udemy
関連サイト:Progate
関連サイト:ドットインストール
まとめ
今回の記事ではプログラミングの独学についてロードマップや役立つ教材などをご紹介しました。
プログラミングの学習は知的好奇心に満ち溢れた楽しいものです。
この記事を読んだ皆さんもぜひ楽しみながら学習をはじめてみてください。
楽しむことは目標の達成にもきっと役に立つことでしょう。
執筆してくれたメンター
太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア 普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。 開発実績:画像認識技術を活用した駐車場混雑状況把握、音声認識を活用したヘルプデスク支援システム、ロボットアプリの開発、大規模基幹系システムの開発・導入マネジメント。著書「知識ゼロからの機械学習入門(技術評論社)」。 地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でも12週間で東京のIT企業へエンジニアとして転職を目指せるオンラインブートキャンプを開催しています。
現役エンジニアとキャリアカウンセラーが学習から転職までサポートいたします。
また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。