プログラミング独学は可能なのか──おすすめの学習方法について考える

プログラミングを習得するためには、学習の目的を整理した上で、達成までの道筋を明確化することが大切です。本記事では、プログラミング学習に苦労した私自身の経験を踏まえながら、プログラミングの学習方法を体系的に整理していきたいと思います。

プログラミングが注目される背景

具体的な学習方法について述べる前に、プログラミングが注目されている背景について前提を共有させて頂きたいと思います。

世の中が急速にデジタル化している

まず、プログラミングが注目される背景として、「世の中が急速にデジタルしている」ことが挙げられます。実際、デジタライゼーション/デジタルトランスフォメーションという言葉もあるように、多くの産業において、テクノロジーの活用ビジネスの成否を決める上で決定的に重要な要素の一つとなっています。特に、近年においては、自動運転や仮想通貨(暗号資産)が生まれてきていることからもわかるように、自動車や通貨といったテクノロジーとは無縁と思われていたような領域にまでテクノロジーが浸透してきているのです。

世界を動かすIT企業の存在

そして、それに伴い、世界をリードする時価総額ランキング上位の企業も、軒並みIT企業となっています。特に、ランキング上位の一角を占め、GAFAMと総称されることもあるグーグル、アップル、フェイスブック、アマゾン、マイクロソフトは、先端テクノロジーへの投資をさらに強化すべく、膨大な量の研究開発費を投入していることで知られています。

プログラミング教育必修化の流れ

この流れを踏まえ、教育の世界においても、プログラミング教育の重要性が認識されてきており、文部科学省の「諸外国におけるプログラミング教育に関する調査」では、世界でプログラミング教育の必修化が進んでいることが報告されています。この報告書によれば、英国(イギリス)では、平成26年から「computing」という教科が小学校から高等学校までの系統的な教科として位置づけられており、英国以外でも、ハンガリーとロシアにおいて、小学校の段階からプログラミング教育が必修化されています。また、中学校の段階では、上記の3カ国に加えて、香港でプログラミングが必須科目となっており、韓国、シンガポールは選択科目として実施しています。プログラミング教育を必修化し、プログラミング学習を促す目的としては、「論理的思考力の育成」「情報技術の活用に関する知識や技術の習得」「高度なIT人材の育成」等が挙げられています。そして、この世界の動きに合わせて、我が国においても、2020年以降、小学校でプログラミング教育が必修化されることが決まっています。

【参考】文部科学省や経済産業省が取り組む高度IT人材育成プログラム

■ 高度IT人材育成 enPiT(文部科学省)

「成長分野を支える情報技術人材の育成拠点の形成(enPiT)」は、4分野における高度IT人材の育成を目指しているプログラム。大学学部生向けの4分野として、「ビッグデータ・AI」、「セキュリティ」「組み込みシステム」「ビジネスシステムデザイン」が用意されている。大学/企業の協力体制のもとで推進される独自性のあるプログラムを通じて、実社会においてイノベーションを創出することができる人材の輩出を目指している。

■ 天才的なクリエータ発掘・育成 未踏事業(IPA、経済産業省)

「未踏」は、経済産業省所管であるIPAが主催し実施している「突出したIT人材の発掘の育成」を目的として、ITを活用して世の中を変えていくような日本の天才的なクリエーターを発掘し育てるための事業です。「未踏」では、各プロジェクトにメンターと呼ばれる指導者がつき、定期的なミーティングや合宿が開かれます。著名な卒業生として、筑波大学の落合陽一教授。

■ セキュリティイノベーター育成 SecHack365NICT、総務省)

SecHack365は、情報通信研究機構((NICT)ナショナルサイバートレーニングセンターが、25歳以下の若手を対象に高度な技術力を持つセキュリティイノベーターを1年かけて育成するプログラムです。

プログラミングとは何か

さて、前段が長くなりましたが、そもそも、プログラミングとはどのようなものなのでしょうか?非常に簡単に言えば、プログラミングとは、「コンピューターに実行させたい処理を命令文として書くこと」です。この命令文はあらかじめ用意されており、その種類は事前に決められていますが、そこから、適宜、必要なものを選び、組み合わせることで、目的の処理を実現するプログラムを書くのがプログラマーの仕事です。プログラミングは難しく見えますが、基本的な構造は以下の3つしかありません。それは、「順次処理」「反復」「条件分岐」です。どのプログラミング言語でも、この構造は共通しており、この構造を先に理解しておくことが学習を効率的に進める上で重要です。ちなみに、この「順次処理」「反復」「条件分岐」ですが、レストランの店員さんのマニュアルの例で考えるのがイメージがつきやすいかもしれません。というのも、ある意味では、レストランの店員さんのマニュアルは以下のようなプログラムであると捉えることもできるからです。

レストランの店員さんのマニュアル

  1. 挨拶をする
  2. 何名か聞く
  3. タバコを吸うか吸わないかを聞く
  4. 吸うなら:喫煙席に案内する
  5. 吸わないなら:禁煙席に案内する

この場合、4行目と5行目が「条件分岐」となります。また、「反復」については、

反復

  1. コップに水があるかチェックする
  2. コップに水がなければ、コップに水を注ぐ

のように、特定の条件下(コップに水がない状態)において、特定の処理(コップに水を注ぐ)を繰り返すことを指します。プログラミングを行う上では、処理手順を論理立てて考えることが大切ですが、その基礎となるのが上記の3つの構造であるということを理解しておいてください。

プログラミングを学習するメリット

では、プログラミングを学習するメリットとしては、どのようなものがあるのでしょうか?

■ ITスキルの向上

一つ目は、「ITスキルの向上」です。ここ数年、IT関連市場は拡大が続いており、それに伴って、IT人材が慢性的に不足傾向にあります。実際、経済産業省の「IT人材需給に関する調査」によれば、2030年には、IT人材が約45万人が不足することが見込まれていますが、プログラミングを学習し、ITスキルを獲得すれば、仕事の幅が広がる可能性があります。また、起業して、サービスを開発する場合でも、プログラミングは非常に役立ちます。ロボアドバイザーで有名なWealthNavi創業者の柴山氏や人材サービスWantedly創業者の仲氏は、自分の手でプロトタイプを制作したことで知られています。

■ 考える力の向上

もう一つは、「考える力の向上」です。実際、総務省「プログラミング人材育成の在り方に関する調査研究」では、プログラミング教育でもたらされる効果として、「創造力の向上」「課題解決力の向上」「表現力の向上」「合理性、論理的思考力の向上」「意欲の向上(内発的な動機づけ効果)」等が挙げられています。

プログラミングの学習方法

プログラミングを学習する方法としては、「独学で勉強する」「スクールで勉強する」の2パターンが考えられます。

独学で学ぶ

まず、一つ目の「独学で勉強する」ですが、主な方法としては、「書籍で学ぶ」「ドットインストールで学ぶ」「Progateで学ぶ」があります。

■ 書籍で学ぶ

まず、おすすめしたいのが、書籍で学ぶ方法です。プログラミングを体系的に学ぶことができる点で書籍は優れています。ただ、最初から最後まで全部読む必要はなく、必要な箇所を都度参照するというやり方でも良いと思います。

■ ドットインストールで学ぶ

書籍では学習がなかなか捗らない場合、ドットインストールという動画教材がおすすめです。ドットインストールでは、動画を見ながら、実際に自分のPC上でプログラミングを学ぶことができます。

参考:ドットインストール – 3分動画でマスターできるプログラミング学習サービス

■ Progateで学ぶ

また、Progateもおすすめです。Progateでは、イラスト中心のスライドでプログラミングを学ぶことができるため、書籍よりも直感的な学習が可能となります。

参考:Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]

スクールで学ぶ

ある程度のコストはかかりますが、個人的に一番おすすめしたいのが、プログラミングスクールで学ぶことです。特に、一人では学習に対するモチベーションが続かない場合、非常におすすめです。また、オフライン型のスクールの場合、エラーが発生した際に、その場でフィードバックを受けることができるのもメリットの一つです。

プログラミングは最高の自己投資

プログラミングには、向き・不向きがあります。しかし、仮に、自分がプログラミングに不向きだったとしても、テクノロジーに対する理解がますます重要となる今後のデジタル社会においては、プログラミング学習は人生にプラスの影響をもたらします。社会人の早い段階で、ITリテラシーを高めておけば、それは人生全体で複利でリターンをもたらしてくれます。その意味で、プログラミング学習は最高の自己投資と言えるでしょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です