僕は、高専2年生の時にプログラミングに出会い、独学や講義、研究を通して、プログラミングについて勉強してきました。現在では、オープンソース(誰でも使えるよう公開されたプログラム)の開発を行う程度までは、成長しています。
しかし、初めてプログラミングの勉強をする時には、勉強の仕方にかなり迷ったものです。おそらく、多くの人がそのような経験をしているのではないかと思います。
今回は、初心者から中級者までが、プログラミングを正しく学ぶための勉強法についての話です。
プログラミングの勉強とは
プログラミングの勉強と聞くと、「プログラミング言語の構文(書き方)を覚える」という風に考える人が多いです。たしかに、それも勉強の一つではあり、重要な部分ではあります。しかし、プログラミングの勉強をするといったときに、そこは本質的な部分ではありません。
「プログラミングができる」=「プログラミング言語の構文を理解している」であるのなら、大多数の人が苦労せずに済んでいるでしょう。ですから、参考書を読んで、そこに載っているサンプルコードを書き写し覚える、というだけの勉強ではプログラミングができるようにはならないのです。
プログラミングの勉強で、最も重要なのは「どう書けば、自分の思った通りに動くのか」ということを考えることです。ここに全てがつまっています。
プログラムというのは、作りたいものや、やりたいことがあって初めて成立します。そして、そのやりたいことをどのように実現するかを考え、その通りプログラムを書く、というのがプログラミングです。
そのことを踏まえて、勉強をしなくてはいけません。
プログラミングの勉強を始める前に考えるべきこと
プログラミングの勉強を始める前に考えるべきことは、何を目的にプラグラミングをするのか、ということです。やりたいことによって、選ぶべきプログラミング言語は変わってきます。
大きなシステム開発を最終的にしたいのか、Webプログラミングがしたいのか、アンドロイドやiPhoneのアプリを作りたいのか。色々あるでしょうから、それに応じたプログラミング言語を選ぶ必要もでてきます。
また、そのやりたいことによって、どの程度まで勉強すればいいのかも変わってきます。自分のやりたいことができるようになるまで、という範囲で勉強すれば問題ありません。職業プログラマーになるのだとしても、全てを網羅する必要があるかは疑問です。
大切なのは、自分がプログラミングを勉強する目的を明確にすることです。
プログラミングの勉強手順
勉強するプログラミング言語を決める
先ほども説明しましたが、自分の目的に応じたプログラミング言語を選ぶようにしましょう。でなければ、勉強しても使わなかった、というようなことになりかねません。無駄とは言いませんが、もったいないです。せっかく勉強するのなら、きちんと使うものを選びたいですね。
プログラミング言語の特徴をまとめた記事はこちらです。
プログラミング言語の構文を覚える・理解する
ここで、実際にプログラミング言語の書き方を学びます。この時に注意したいのは、参考書などの構文をただ書き写すだけにならないことです。書き写すだけでは、自分の力になりません。きちんと構文の意味を理解して、覚えることが大切になります。
例えば、「if文は、条件式とthen節、else節を持っていて、条件に一致する時はthen節、条件に一致しないときはelse節が実行される。・・・」というような、その構文の持つ意味をきちんと理解していくことです。構文を実際に書くのは、これを理解してからです。書きながら理解するというのは、書くことに気を取られて理解が追いつかなくなりやすいですから、やめておくのが無難でしょう。
プログラミング言語の性質を理解する
プログラミング言語の構文にある程度慣れてきたら、そのプログラミング言語の性質を理解するようにしましょう。 それぞれのプログラミング言語には、設計思想やパラダイムなどが存在します。例えば、Javaであればオブジェクト指向パラダイムがそれに当たるでしょう。
それを理解しているかどうかで、プログラムの書き方は大きく変わります。しっかり学ぶべきポイントとなります。逆にプログラムを書いている中で理解できる、ということもありますが、概念として理解できていた方が最終的に楽になるので、やるべきことでしょう。
アルゴリズムとデータ構造を実装して練習する
よく「アルゴリズムを勉強しても実際の開発では役に立たない」という話を耳にします。たしかに、アルゴリズム自体が開発で役立つ場面は少ないかもしれません。
ただし、アルゴリズムをプログラムで書いてみる、というのは非常に良い練習となります。そういった意味で、アルゴリズムを勉強するのは非常に価値のあることです。
一つのアルゴリズムを理解し、どのように書けば動くのか考え、実際にプログラムを書く。その一連の流れは、実際の開発を小規模にしたような感覚で練習することができます。初心者が練習するものとしては、最適な課題です。
勉強に役立つ便利なWebアプリケーション・書籍
ここで、勉強に役立つWebアプリケーションと書籍を紹介します。プログラミングの練習用サイトや、アルゴリズムとデータ構造の勉強に役立つ書籍です。
プログラミングの練習用サイト
AIZU ONLINE JUDGE
http://judge.u-aizu.ac.jp/onlinejudge/
こちらは、会津大学が提供しているプログラミングチャレンジのサイトです。こちらのサイトで注目したいのは、コースの中にある「レッスン」です。そこには
- Introduction to Programming I
- Algorithms and Data Structures I
という項目があり、それぞれプログラミングの基礎(構文など)と、アルゴリズムとデータ構造の基礎が学べる練習課題が用意されています。しかも、非常に分かりやすい解説付きです。使用する言語も、自分で選ぶことができますので非常にありがたいです。
パッと見て、どう使ったらいいか分かりにくいかもしれませんが、こちらに使い方をまとめたチュートリアルがあるので、見ながら使うといいです。
http://judge.u-aizu.ac.jp/onlinejudge/AOJ_tutorial.pdf
とても便利で、初心者から中級者まで幅広い層がアルゴリズムをプログラムで書く練習にオススメです。ぜひ一度使ってみてください。
AIZU ONLINE JUDGE: Programming Challenge
paiza
paizaはプログラミングのスキルをチェックできるサービスを提供していて、プログラミング言語の構文を覚える際の練習や、アルゴリズムをプログラムで書く練習に役立ちます。
paizaオンラインハッカソンというものもあり、そちらはアルゴリズムの問題を解く形になっています。
問題のレベルは、どちらかといえば初心者向けに近いものが多いですが、中には難しい問題もあります。ある程度プログラムが書けるようになった人に、オススメしたいです。
Progate
こちらのサイトは、Webアプリケーションの開発を初心者から学ぶことのできるサイトです。Webアプリケーションに特化していますが、非常に分かりやすく学べるサービスです。Web開発に触れたい人は、アルゴリズムをプログラムで書く練習よりもこちらの方がいいかもしれません。
Progate | プログラミングの入門なら基礎から学べるProgate (プロゲート)
アルゴリズムとデータ構造の書籍
アルゴリズムを、はじめよう
こちらの書籍は、初心者向けの内容を扱っています。基本的な9つのアルゴリズムが取り上げられており、それぞれ図・フローチャートなどを丁寧に使い、非常に分かりやすく解説してくれています。サンプルコードが書いているだけでは全然わからないよ、という人にも安心です。
プログラミングもアルゴリズムも初めて勉強する、という人にオススメの書籍です。
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
こちらの書籍は、AIZU ONLINE JUDGE の初心者向け講座の内容を中心に扱っています。大学の講義で学ぶレベルのアルゴリズムとデータ構造を、非常に分かりやすく解説していることが特徴です。
プログラミングコンテスト攻略のための、というタイトルですが、プログラミングコンテストだけでなく、普通にアルゴリズムとデータ構造の勉強をする書籍として有能です。
大学で学ぶレベルのアルゴリズムについて勉強でき、初心者から中級者まで幅広くオススメできる良書です。
まとめ
今回は、プログラミングの勉強法について話をしました。一番大切なのは、自分が作りたいものをプログラムで書けるようになることですから、それを踏まえて練習することが大切です。しっかりと意識していきたいですね。