プログラミング言語の大人の学習方法について

このブログ記事では、プログラミング言語の経験がない大人の方に、プログラミング言語のスキルを習得するまでの学習の流れを説明します。

【目次】
1.プログラミング言語の基礎的なスキルとは
2.一般の言語とプログラミング言語の対比
3.学習するプログラミング言語を決める
4.プログラミング言語の学習の手順概要
5.プログラミング言語の文法の学習
6.プログラミング言語でプログラムを作る学習
7.まとめ
8.おまけ

1.プログラミング言語の基礎的なスキルとは

あるプログラミング言語の基礎を習得した人には、次のスキルがあります。
文法に関して:そのプログラミング言語の文法の概要を把握していて、プログラミング時に、マニュアルなどの資料を参照しながら、文法を適宜使用するスキル
プログラムを作ることに関して:そのプログラミング言語各機能を使った簡単なプログラムや、定番アルゴリズムプログラムなどのいくつかを作るスキル

2.一般の言語とプログラミング言語の対比

プログラミング言語”には、”言語”という文字が入っています。
一般の言語とプログラミング言語は、以下の表のように、共通の項目で分類することができます。

(一般の)言語 プログラミング言語
1.種類 日本語英語、など ScratchC言語、など
2.文法 日本語の文法英文法、など Scratchの文法C言語の文法、など
3.作る 文章 プログラム
4.得意な分野 日本語→俳句、短歌が得意
英語→世界的に利用者が多く文献が多いため学問を修めるための言語として世界中で利用されている、など
Scratch→子供用として開発された言語で、グラフィカルプログラミングが得意
C言語→OS用として開発された言語で、何でも作ることができる、など

3.学習するプログラミング言語を決める

どのプログラミング言語を学習しようか迷ったときは、まず、自分がどんな分野のプログラムを作りたいのかを考えます。
次に、各プログラミング言語の得意とする分野(上記表の4.得意な分野)を確認し、自分の作りたい分野を得意とするプログラミング言語を1つ選びます。

4.プログラミング言語の学習の手順概要

ある特定のプログラミング言語を習得するには、次の事を行います。
プログラミング言語の“文法”の概要を学習する
プログラムを“作る”訓練をする

プログラミング言語と一般の言語の学習方法を比較すると、“文法”に関する学習方法は異なりますが、“作る”ことに関する学習方法は似ています。

5.プログラミング言語の文法の学習

5.1.文法の学習:概要
大人がプログラミング言語を習得するには、はじめにプログラミング言語の文法の学習を行います(ちなみに、子供のプログラミング教育では、いきなりプログラミングプログラムを作ること…から始める場合が多いです)。

プログラミング言語の文法の学習では、まず、プログラミング言語の文法全体をざっくり把握するための学習を行います。
その後は、プログラムを作る学習に移りますが、文法の具体的な使い方は、プログラムを作る訓練の中で、マニュアルなどで1つ1つ確認しながら、身に付けていきます。

文法の学習の方法は、講習を受講して学習する方法や、市販本などで自己学習する方法などがあります。

5.2.文法の学習:講習
プログラミング言語のスキルを習得したくて講習を受ける場合、通常、受講の主目的は、文法の学習になります。

本来、プログラミング言語のスキルの習得では、文法の学習とプログラムを作る訓練の2つが必要ですが、プログラムを作る訓練には長い時間/期間がかかり、さらに受講料は時間に比例して高くなるので、講習に期待する内容からプログラムを作る訓練の部分を外し、プログラムを作る訓練は、受講後に、必要な分、自己学習で補足します。

時間がかかり費用が高い講習は、多くの“普通の”方(プログラミングの他にメインの業務がある方や、個人のスキルアップのためにプログラミング言語を学習したい方など)にとっては、現実的ではありません。
そのため、講習を実施する企業や団体も、そのような“普通の”方が利用しやすい、短い期間でリーゾナブルな受講料のプログラミング言語の講習をたくさん用意しています。
基本的に、“普通の”方のためのプログラミング言語の講習は、文法を学習しながら、ほんの少しプログラムを作る構成になっていて、講習期間は1~数日間です。
プログラミング言語が違えば文法仕様の大きさや複雑さが異なることや、講習を実施する企業や団体がそれぞれ独自に講習内容やプログラムを作る実習の量などを決めるので、プログラミング言語の講習の内容、日程、期間は一様ではありません。
文法の学習のために講習を利用する方は、是非、複数の講習の案内を比較して、自分の希望に合う講習を探して、受講してください。

なお、世の中のプログラミング言語の講習の中には、学生として受講する大学などの講義やIT系の専門学校の授業以外にも、企業の新人研修や職業訓練校のIT研修など、数週間から数か月にわたって、文法の講義があり、かつ、必要な種類のたくさんのプログラムを作る訓練を経験できる講習があります。
企業の新人研修や職業訓練校のIT研修は、企業や行政機関が、まったくの初心者を即戦力のプログラマーに養成するための講習で、受講者本人は受講のための費用を負担する必要がなく、さらに受講をしながらお金が支給されたりします。
職業としてプログラマーになることを目指している方は、このような講習が受けられる企業や職業訓練の詳細を調べてみてはいかがでしょうか。

5.3.文法の学習:自己学習
プログラミング言語の文法を自己学習する場合は、まず、文法全体をざっくり理解することを目的として取り組みます。
細かい点は、プログラムを作る学習に移ってから補足することにして、一旦目をつむります。
各項目に長い時間をかけて完全に理解してから次に移るという学習方法ではなく、全体としてどんな機能が提供されているのか、基本的なコンセプトがどのようになっているかなどに着目して学習を進めていきます。

プログラミング言語の文法を自己学習できるツールとして、市販本や自己学習用テキスト、オンラインコースなどがあります。
それぞれ内容の濃さや難しさなどが異なるため、制作サイドがうたっている目安となる総学習時間は様々です。
さらに、実際にかかる学習時間は、個人の向き不向きや忙しさ、学習時の集中の度合いなどにも大きく左右されるので、目安として記載されている学習時間とはまったく違う結果になることもよくあります。
自分の状況では目安より長い時間がかかるかもしれないと考えるなら、早めに学習を開始すると良いと思いますが、実際には、やり始めたら楽しくなって、あっという間に終わってしまったというケースも、もちろんあります。

5.4.文法の学習:補足的な文法の学習
講習の受講か自己学習によって、ひと通り文法を学習したら、すべての文法の知識が定着していなくても構わないので、そのまますぐに、プログラムを作ることを中心とした学習にシフトします。
その後、文法については、プログラムを作る学習を行う中で、学習不足や念のため再度確認したい文法事項が出てきた都度、メンターに質問したり、インターネットで検索したり、市販本やマニュアルを参照して、随時補足学習をします。

5.5.文法の学習:一般の言語とプログラミング言語との違い
プログラミング言語の文法の学習は、講習を受講する場合でも、自己学習する場合でも、初期の数日間に集中して行うのに対して、一般の言語の文法の学習は、長い年月をかけて、少しずつ学習を重ねる方法をとります。

プログラミング言語と一般の言語、それぞれの文法の学習にかかる時間に大きな違いがあるのは、プログラミング言語の文法が一般の言語の文法と比較して全体量が圧倒的に少ないことと、プログラミング言語の文法は詳細に覚える必要がなく本やマニュアルを参照しながらプログラムを作ることが一般的であることが、理由として考えられます。

6.プログラミング言語でプログラムを作る学習

6.1.プログラムを作る学習:概要
一方、プログラミング言語プログラムを作る学習は、一般の言語で文章を作る学習と同じ方法を用います。
すなわち、プログラムを作る学習も、文章を作る学習も、長い期間をかけて繰り返し作る訓練を行い、徐々に作るもののレベルを上げていきます。

したがって、プログラムを作るスキルは、プログラミング言語の講習を受けた直後に習得できているようなスキルではないことを、まず、理解してください。

6.2.プログラムを作る学習(プログラミング言語):vs文章を作る(一般の言語)
<文章を作る(一般の言語):訓練方法>
日本人が日本語で文章を作る方法は、小学1年生から学校で習い始め、簡単な文章から難しい文章まで、各レベルの文章を繰り返し作る訓練をしながら、長い年月をかけてレベルを徐々に上げていきます。
同時に、文章の種類も多岐にわたるため、授業では種類…作文、論文、詩、俳句、短歌、…の1つ1つに対して一時的にフォーカスし、その種類の構成やルールを学習して、それぞれの種類の文章を作る訓練が行なわれます。

<プログラムを作る学習(プログラミング言語):訓練方法>
プログラミング言語プログラムを作る学習でも、ある程度の期間をかけて、簡単なプログラムから難しいプログラムまで、各レベルのプログラムを繰り返し作る訓練をしながら、それなりの時間をかけてレベルを徐々に上げていきます。
同時に、プログラムの種類も多岐にわたるため、メンターの指示か自分で決めた種類…(文法の各機能の使用法を確認するための)簡単なプログラム、(ソートや文字列処理などのアルゴリズムや処理が)定番のプログラム、グラフィック、ストーリー、ゲーム、計算、…のいくつかに一時的にフォーカスし、それらの種類の構成やルールをメンターに教えてもらうか自分で調べて学習して、それぞれの種類のプログラムを作る訓練を行ないます。

6.3.プログラムを作る学習:初心者-ステップ1
はじめてプログラミング言語を学習する初心者の方が、文法の学習後、メンターなしでプログラムを作る学習をする場合、まずは、文法の各機能の使用法を確認するために、簡単なプログラムをたくさん作ります。
文法の学習で使用した講習のテキストや市販本を参考に、命令が1つだけのプログラムでも構わないので、すべての文法の機能を1度以上使うことを目標に、プログラムをどんどん作ります。

6.4.プログラムを作る学習:初心者-ステップ2
小さなプログラムをたくさん作ることで、すべての文法の機能を1度以上使ったならば、メンターを持っていないはじめてプログラミング言語を学習する初心者の方は、次に、インターネットや市販本などで、定番のアルゴリズムをいくつか探して、そのプログラムを作る練習をしてみます。

アルゴリズムの書き方(フローチャート(流れ図)など)やその読み方なども、インターネットや市販本で調べます。
以上、ここまでが、プログラミング言語の基礎の学習となります。

6.5.プログラムを作る学習:初心者-ステップ3
この先、さらに、プログラミング言語の奥深い学習を進めたい場合は、そのプログラミング言語が得意とする分野や、今後趣味や仕事などでそのプログラミング言語を使用したい分野のプログラムアルゴリズム(例えば、グラフィック、ストーリー、ゲーム、計算、など)を探して勉強し、プログラムを作る訓練を重ねます。

6.6.プログラムを作る学習:具体的なヒント
なお、作文を作る説明のところで使用した「構成やルール」という言葉を、プログラムを作る説明で使う言葉として具体的に言い換えると、「構成」はコンピューターの仕組みやそのプログラミング言語の文法上の特徴など、「ルール」はアルゴリズム、の意味合いになります。

例えば、プログラミング言語Scratch、文字列の文字の並びを逆にするプログラムを訓練の1つとして作りたいとき、インターネットや市販本で調べると、次のような構成やルールが見つかります。

・構成→コンピューターの仕組み:
文字列はリストの1つ。
リストはメモリの中に同じ種類の変数を複数連続して並べて領域の中に確保して、ひとまとまりとして扱う変数。文字列は、要素の1つ1つが文字からなるリスト。

・構成→プログラミング言語の文法上の特徴:
Scratchの文法では、リストの個々の要素を表す番号であるリストの添え字は、1から始まり、リストの要素数(=長さ)までとなっている
(例えば、C言語ではリスト=配列の添え字は0~要素数-1まで。
他の言語で好きな数字から添え字を始めることもできるものがあるなど、プログラミング言語によって、添え字の仕様は様々)。

・ルール→アルゴリズム
リストの中身を逆に並べるので、逆に並べ替えるアルゴリズムと、リストの要素(文字)を入れ替えるので、入れ替えを行うアルゴリズムを使用する
(それぞれのアルゴリズムの詳細をさらに要確認)。

これらの情報を元にして、与えられた文字列から逆の並びの文字列を表示するプログラムを作る訓練をします。

6.7.プログラムを作る学習:メンターがいる場合
たいていの場合、プログラムを作る学習は、自己学習になります。
運良く身近にメンターとなってくれる人がいる場合は、節目ごとに学習の方向などを相談したり、インターネットのサイトや市販本など参考資料の紹介を受けたりすると共に、時には、解決できない問題についてヒントをもらったりします。

メンターがいる場合は、問題の解決が速やかに行われることが多く、学ぶ順序や方向も相談にのってもらえるので、学習の進みが速くなります。

6.8.プログラムを作る学習:メンターがいない場合
残念ながらメンターがいない場合は、インターネットの質問サイトなどの利用も検討して、問題解決の手段を、なるべく多く確保します。

いずれにしても、人やインターネット上などにある情報や仕組みの助けを借りて、疑問を1つずつ解決しながら、こつこつプログラミング経験を増やしていくことが大切です。

7.まとめ

〇一般の言語もプログラミング言語も文法があり、文法に則って、作るものがある
(一般の言語は文章/プログラミング言語プログラム

〇学習するプログラミング言語に迷ったら、自分が作りたいプログラムの分野が得意なプログラミング言語を選ぶ

プログラミング言語の学習手順は
プログラミング言語の“文法”の概要を学習する
プログラムを“作る”訓練をする

プログラミング言語の文法の学習は、はじめに、講習の受講か、市販本やテキスト、オンラインコースなどでの自己学習によって文法の概要を理解し、次に、プログラムを作る訓練の中で文法の詳細を確認しながら使用することで行う

プログラムを作る訓練では、文法の各機能の使用法を確認するために、文法のすべての命令をプログラミングで使用することを目標に、命令の1つ1つを含んだ小さなプログラムをたくさん作る

プログラムを作る訓練の次のステップでは、いくつか定番のアルゴリズムを調べて学習してから、そのプログラムを作ってみる

プログラムを作る訓練のさらに次のステップでは、将来作りたい分野のプログラム例のアルゴリズムを学習してから、そのプログラムを作ってみる

〇メンターがいれば、習得が速くなる

〇メンターが見つからなくても、インターネットの質問サイトなどを探して利用し、学習効率を上げる工夫をする

8.おまけ

IT企画研究所のブログでは、学校の先生や学校の先生を目指す学生、子供のプログラミング教育を考える地域のリーダーやお母さん、お父さん、おばあさん、おじいさんなど大人の方を対象に、子供向けプログラミング言語 Scratchの学習を支援する記事をたくさん公開しています。

ブログ記事の中では、Scratchの文法に関する説明や、プログラムの例などの説明の他、プログラムの実行例を編集したYouTube動画や、Scratchコミュニティーサイトで公開しているプログラムへのリンクなども案内しています。
ブログ記事は無料なので、是非、一度ご覧ください。

なお、毎月2回、月の初めと半ばに定期メール配信をしています。
配信内容は、IT企画研究所のブログの更新情報、講習会などのご案内、および、毎回ご紹介している新しいプログラム例へのリンクなどです。
メール配信のご登録は、登録ページから無料で行えます。

コメントを残す