自動車を運転して知らない土地まで行くには、地図が欠かせません。カーナビなどの便利なシステムがなかった時代には、紙の地図が頼りでした。いわゆるロードマップです。
プログラミング学習も、長い旅のようなものです。ロードマップを持っているかいないかで、目的地にたどり着けるかどうかが違ってくるかもしれません。
プログラミングのロードマップは、どこかで買うものというよりは、自分で作るものです。この記事では、これからプログラミングを始めようと思っている人に向けて、そのロードマップ作りのお手伝いをします。
プログラミング学習ロードマップの作り方
ロードマップとは、「道路地図」のことです。元々は自動車で目的地に行くための地図を指します。転じて、様々な目標を達成するための計画というような意味に使われるようになりました。
地図があるとスムーズに目的地に着けるのと同じように、計画を立てて学習することでプログラミングも身につきやすくなります。ここでは、どうやってプログラミング学習の計画を立てるかということを解説します。
その手順は、
- 目標を定める
- 学習する言語を決める
- 学習方法を決める
というふうになります。地図で例えれば、目標が「目的地」、言語が「乗り物」、学習方法が「道筋」ということでしょうか。
目標を決める
まずは、目標を定めるところから、ロードマップ作りは始まります。プログラミングを学んだ結果、「どこに着きたいか」を定めるのです。
あてのない旅、というのも面白いかもしれませんが、時間のない人にとってはかなりの贅沢というものです。プログラミングも、効率よく学びたいなら目標を定めることが肝心です。
学習するプログラミング言語を決める
目標を定めたら、次に、その目標を達成するために学ぶべき言語を選定します。
プログラミング言語にはたくさんの種類があります。ただ、目標がしっかり定まっていれば、学ぶべき言語は数種類に絞り込めます。その中から、学びやすいもの、興味のあるものを選べばいいのです。
言語には、比較的簡単なものから難解なものまで、いろいろあります。一気に目標に到達できる高速車両のような言語もあれば、徒歩に近いくらいゆっくりとしか進めないけれども、道々、景色をしっかりと見ることができ、コンピューター世界の深部まで学べるような言語もあります。
どの言語を選んでもいいのですが、プログラミングの経験がない方ならば、なるべく目標に速く到達できるようなものを選ぶことをお勧めします。
学習方法を決める
学習する言語を決めたら、目標への道筋である学習方法を決めます。
学習方法にも様々なものがあります。一気に目的地に着ける最短ルートもあれば、曲がりくねってなかなか着けない道もあります。
速い車で高速道路に乗れば、あっという間に目的地に着きます。たとえ速い車でも、一般道を通って行けば、時間がかかってしまうこともあります。
一般道に相当するのが独学で、高速道路にあたるのがプログラミングスクールということになります。
独学は、書籍などを使って一人で学ぶ方法です。どういう教材を選ぶか、どう学習を進めるかなど、全てを自分で決めることになります。
プログラミングスクールは、学習の全ての面で、先生のアドバイスを受けながら進めることになります。モチベーションの維持がしやすく、効率よく学ぶことができます。
やりたいことを決める
プログラミング学習のロードマップ作りの第一歩は、目標を定めることです。これを定めないことには、計画の立てようがありません。
現実には目標は人それぞれで、とてもここに書ききれるものではありませんが、比較的選ばれることの多い目標を例として紹介します。
仕事としてプログラミングをする
プログラミングを学ぼうという人の多くは、プログラミングを仕事にしたいと思っていることでしょう。
プログラミングを本業とするにせよ、副業としてやるにせよ、仕事であるからには十分に習熟している必要があります。それだけ学ぶことが多いので、学習効率を重視する必要があるでしょう。
仕事としてプログラミングをすることを目標とする場合、主に次のような分野が考えられます。
Web開発
Webサイトの構築に関わる業務は、プログラマーの仕事としてとても需要の高いものです。
Web開発には、ユーザーの目に触れる部分を作るフロントエンドと、目に触れない計算処理やデータ保存などを担当するバックエンドとに分かれています。どちらのエンジニアを目指すかで、学ぶべき言語が違ってきます。
Web開発を行うエンジニアのことを、Webエンジニアといいます。こちらの記事で、Webエンジニアについて詳しく紹介しています。ぜひ参考にしてみてください。
アプリ開発
アプリ開発も、プログラマーの主要な仕事現場です。アプリには、スマホなどで使われるアプリや、パソコンで使われるアプリなどがあります。どのプラットフォームで動作するアプリを作るかで、使用する言語も違ってきます。
AI・データサイエンス
AI(人工知能)やデータサイエンスという分野も、将来にわたって高い需要が見込まれるジャンルです。これらに関しては、プログラミングができるだけでは仕事としてやっていくことはできません。プログラミングは必要なスキルの一部という位置づけになります。
こちらの記事で、AI分野のプログラミングについて詳しく紹介しています。ぜひ参考にしてみてください。
業務の効率化のために
プログラミングそのものを仕事とするのではなく、コンピューターを使った日常的なタスクを効率よく行うために、プログラミングを学びたいという人もいるでしょう。
毎日1時間かけてやっている業務が、数分でできるというようなことが普通にありますから、プログラミングを学ぶ価値は十分あります。
ただし、学ぶのにかかる時間や、効率化のためのコードを書く時間を考えれば、本当に時間短縮になるか微妙な場合もあります。少しでも時間効率をよくするため、簡単な言語を素早く学び、素早くコードが書けるようになるのがよいでしょう。
趣味として楽しむ
プログラミングは、趣味として楽しむことも十分できます。収益など考えず、ただただプログラミングが楽しくて、次々といろいろな言語に触れる、という人達もいます。また、フリーソフトを公開する人もいます。
このように、趣味として楽しむ場合は、ロードマップは特に必要ないでしょう。楽しめればいいのならば、その時々で面白いと思うことを夢中になってやるということでいいのです。
そうしているうちに、徐々にプログラミングが仕事になっていくという人もいるでしょう。ある意味で、それが最も正しいプロフェッショナルへの道なのかもしれません。
学習する言語を選ぶ
目標が決まったら、それを達成するために必要な言語を決めます。目標を決めた時点でかなり絞り込めているので、この選定は楽にできるはずです。
以下では、主な目標ごとに、適した言語を挙げていきます。
Web開発
Web開発では、バックエンドとフロントエンドで使う言語に違いがあります。フロントエンドで使う言語はごく少数に限られています。バックエンドでは多数の言語が使われていますが、シェアが多い言語は限られています。
HTML&CSS
Web開発関連の仕事を目指すなら、最初に取り組むべきなのがHTMLとCSSです。HTMLがWebページの構造や骨組みを表すもの、CSSが文字などのページの各要素の見栄えをよくするためのものです。
HTML&CSSは、直接的にはフロントエンドで扱うものですが、バックエンドの開発者も当然知っておかなければなりません。
JavaScript
フロントエンドの開発者を目指す人は、HTML&CSSを学んだ後にJavaScriptを学ぶのが定番コースです。JavaScriptを学ぶことによって、ページに動きをつけたりすることができるようになります。
現在、ブラウザが認識する言語がHTML、CSS、JavaScriptくらいのものなので、フロントエンドのエンジニアを目指すためにはJavaScritptを習得すれば言語面に関しては十分ということになります。
PHP
バックエンドのエンジニアを目指す場合には、学ぶ言語に多数の選択肢があります。その中で、最もシェアが高いのがPHPです。世の中には様々なプログラミング言語がありますが、PHPはその中でも屈指の需要の高さを誇ります。学びやすい言語でもありますので、最初のプログラミング言語としても十分に取り組むことができます。
ただし、PHPはサーバーサイドで動かすことが前提となっている言語なので、環境構築には手間がかかります。PHP言語のみならず、ApacheなどのWebサーバーソフトもパソコンにインストールしなければなりません。ロードマップにちょっとした「寄り道」が生じる感じです。
Ruby
バックエンドの言語としては、Rubyもよく使われています。Rubyは比較的簡単な言語ではありますが、やや難しいところもあります。
RubyがWeb開発用の言語として採用されるときには、ほぼRuby on Railsというフレームワークを通して使われます。よって、Ruby言語そのものと共に、Ruby on Railsを学ぶとよいでしょう。
アプリ開発
アプリ開発では、どのプラットフォーム用のアプリを作るかで学ぶべき言語が変わってきます。
Java
Javaは、「一度書いたらどこでも動く」と謳っている言語です。Java仮想マシンというソフトウエアの上で動作します。
Javaで書かれたプログラムは、パソコンであろうがスマホであろうが、Java仮想マシンが動く環境ならば、動きます。よってJavaさえ覚えておけばあらゆるアプリ開発に対応可能です。
ただし、Javaは難しめなので、最初に学ぶ言語として選ぶと手こずるかもしれません。
Kotlin
Kotlinは、Android用のスマホアプリの開発によく使われる言語です。Java仮想マシン上で動作します。Javaに比べて簡潔なコードが書けます。Javaよりは簡単で学習は容易と言えますが、Kotlinに関する情報はJavaに比べればまだ少なめです。これから伸びそうな言語です。
Swift
Swiftは、iOS用のアプリ開発によく使われる言語です。Apple社の他の製品、macやiPadなどで動作するアプリも開発できます。それらを開発したいと考えているなら、第一候補と言ってよいでしょう。
Swiftは、まずまず簡単な言語ですが、やや難しい部分もあります。将来性は、Apple社の動向次第といったところです。
AI・データサイエンス
AI分野やデータサイエンス分野で活躍したければ、プログラミングができないと困ります。こういった分野で使われる言語としてよく名前が挙げられるのは、PythonとRです。
Python
Pythonは、高い人気を誇る言語です。簡潔なコードを書けることが特徴で、難解なところもそれほどなく、学びやすい言語です。
Pythonには豊富なライブラリがあり、これが人気の理由のひとつになっています。特にデータ分析分野で使えるライブラリが充実しています。機械学習のライブラリもあります。AI・データサイエンス分野で活躍したいのなら、Pythonの文法と一緒に、それらのライブラリについても学ぶとよいでしょう。
R
Rは、統計分析に特化した言語です。データを必ず「まとまり」として扱うことに特徴があります。
R言語をインストールした時点で、基本的な統計分析やグラフの描画などの機能がそろいます。きっちりプログラミングしての分析もできますし、手探りで色々な分析を少しづつ試すという使い方もできます。
データ分析を仕事にしたいのなら、手元に置いておいて損はない道具です。ただし、かなりクセが強い言語で、他の言語とだいぶ違う部分があります。習得するのは難しい部類に入ると言えます。
業務効率化
業務の効率化は、人がコンピューターを使う根源的な理由のひとつです。それは出来合のソフトウエアを使うだけでもある程度は達成できますが、プログラミングを覚えるとさらに大きく効率化が図れます。
自分の仕事時間を短縮するだけでなく、他の人からの依頼を受けて、仕事としてそうしたプログラミングを行うこともできます。
VBA
VBAは、Microsoft社のOffice製品に付属する言語です。繰り返し作業を記録して使う「マクロ」の、機能強化版と考えるとこもできます。
特にExcel VBAは強力で、幅広く使われています。クラウドソーシングサイトなどでも、Excel VBAを使った業務効率化は、たくさんの案件があります。
ただし、Excelには強力な関数が大量に用意されていますので、まずそれらでできることをしっかりと把握してから、VBAに取り組むほうがよいでしょう。そうしないと、すでにある機能をVBAでコーディングする、という非効率なことになりかねません。
Python
Pythonは、業務効率化の分野でも活躍しています。大量のファイル処理やテキスト処理を行ったり、ExcelやWordのファイルを操作したり、といったことができます。
その場限りのコードから、毎日使う割としっかりしたプログラムまで、いろいろなものを作ることができます。簡潔なコードをサッと書いてサッと実行するという仕事にとても向いています。豊富なライブラリがその仕事を助けてくれます。
こちらの記事で、難易度別にプログラミング言語を紹介しています。ぜひ参考にしてみてください。
学習方法を選んで学習する
目標を決め、使う言語を決めたら、目的地到達のための道筋、すなわち学習方法を選択します。
独学からスクールの利用まで、幅広い選択肢があります。かかる時間や費用に差があるので、よく考えて決めましょう。選択によっては、目的地にたどり着けない、ということも起きかねません。
主な選択肢としては、書籍を使って独学、プログラミング学習サイト、プログラミングスクールという3つがあります。
書籍で独学する
書籍での独学は、古くからある、最もオーソドックスな学習法です。
言語ごとに入門用から応用編まで幅広い書籍が発行されていて、自分に合ったレベルのものを探すことができます。
道路に例えれば、高速ではない一般道で、時間はかかるものの、様々な道から選択することができます。ただし、最適なルートを見つけるのはなかなか大変で、途中で道に迷って目的地に着かずに終わってしまうこともままあります。
大事な点は、読むだけでなくちゃんと手を動かしてコードを打ち込むということです。お手本となるサンプルコードが載っていれば、そっくり真似して書いてみます。コードを書く演習課題などがあればきちんとコードを書きます。手を動かさなければ、プログラミングの上達はないのです。
書籍で学習するのは、時間はかかるものの、金銭的には安上がりで、始めやすい方法です。また、他の学習法をメインとしながら、足りない部分やもっと深く学びたいところを書籍で補うという方法もお勧めです。
こちらの記事で、プログラミング独学にお薦めの参考書を紹介しています。ぜひ参考にしてみてください。
学習サイトで学ぶ
プログラミング学習サイトというものもたくさんあります。解説を読んだり動画で学んだりしながら、ブラウザ上にコードを打ち込んで学んでいきます。独学に近いですが、インタラクティブに学べたり、質問ができたりと「一人ではない」感じを持てる学習法です。
学習サイトは、ブラウザ上にコードを打ち込む形を取っているため、環境構築が不用というメリットもあります。言語によっては環境構築が大変なものもありますので、初心者にはありがたいことです。
無料である程度試せて、詳しい部分は有料コースで、という形が一般的です。学習方法はサイトによって様々なので、自分に合っているか、続けられそうかということを、無料のコースでよく確認して、最適なサイトを選択しましょう。
こちらの記事で、プログラミングの学習サイトを紹介しています。ぜひ参考にしてみてください。
プログラミングスクールで学ぶ
プログラミングスクールは、いわばプログラミング学習の「高速道路」です。費用はかかりますが、素早く目的地に着くことができます。
プログラミングスクールで学ぶことにすれば、これまで述べてきたようなロードマップ作りの全ての過程を、スクール側と相談して決めることができます。目標がぼんやりしていても、業界事情に通じた先生に相談することではっきりしてくることがあります。カリキュラムに関しても、全て任せておけば安心です。
学業や仕事が忙しい、でもプログラミングを学び、将来の仕事につなげたいという人は、プログラミングスクールの利用を検討してみましょう。
こちらの記事で、初心者におすすめのプログラミングスクールを紹介しています。ぜひ参考にしてみてください。
Web開発者向けプログラミング学習ロードマップ
さて、これまで、プログラミング学習のロードマップ作りについて、いろいろと一般論を述べてきました。最後に、具体例として、Web開発者になるためのロードマップを作ってみましょう。
想定する学習者は、文系学部在籍の大学生、名前を仮にA君とします。A君は、プログラミングの経験はなく、自分専用のパソコンを持ったのが1年前、大学に入学したときです。プログラミングを身につけ、将来はWeb関連のエンジニアになりたいと思っています。
以下はあくまで一例なので、この通りにやれば必ずうまくいくというものではありません。各自、自分に合った計画作りが大切です。
目標を定める
まず、目標定めます。「Web開発者になる」というのがA君の目標です。さらに、フロントエンドかバックエンドか、というところまで絞り込んでみます。
A君は、「バックエンドのWeb開発者を目指す」という目標を立てることにしました。
プログラミング言語を選ぶ
目標が定まったところで、学ぶべき言語を選択します。まず、Web関連の必須科目として、HTML&CSSについて学びます。その次にどうするかが問題です。
バックエンドで使われている言語は多岐にわたります。シェアが圧倒的に高いのがPHPです。また、Ruby on Railsという強力なフレームワークが存在するRubyも、選択肢としては捨てがたいものがあります。Pythonも、最近人気です。
迷うところですが、ここは、A君がプログラミングの未経験者であることを考えて、習得が容易なPHPを選択することにします。
プログラミング言語を学習する
言語を選択したら、いよいよ学習計画を立てます。
まず、HTML&CSSの勉強をします。これには、入門書籍を1冊買ってコードを打ち込みながら読み通すことにします。ブラウザとテキストエディタさえあればできるので、手軽です。
それが終わったらPHPの習得に移ります。これには環境構築が必要なのですが、少々難しいところがあります。そこで、環境構築が不用なプログラミング学習サイトで学ぶことにします。
数ある学習サイトから、A君に合っているところを選択します。まず、各サイトの無料レッスンを体験してみて、比較します。文字による説明が中心のところ、動画で学ぶところ、物語性やゲーム性の強いところなど、いろいろあります。
それらの中で、物語性やゲーム性の強いサイトは、自分には合わないとA君は判断しました。また、動画より文字による説明のほうが自分のペースで学べると思い、テキストベースのサイトに決めました。
スライド形式の講義画面で、1画面あたりの情報量はそれほどないので、スムーズに進めそうです。説明のあとの演習で、コードを打ち込んで習ったことを実践する形式です。
あとは、その学習サイトでPHPの講座を1周すれば当面のプログラミング学習は完了します。ただし、これでサーバーサイドのエンジニアになれるかというと、まだ足りないところがあります。
A君は今後、Webサーバーやデータベースなどについて学び、PHPが動かせる環境を自分のパソコンに構築できることを目指します。さらに、他のプログラミング言語に挑戦するなど、幅を広げていきたいと考えています。
まとめ
プログラミング学習は、長い道のりです。無計画に走り出しても、なかなか目標にはたどり着けません。事前にきっちりロードマップを用意して、その通りに行けば必ず目的地に着ける、という体勢を作ってから始めましょう。