プログラムをつくれるようになる方法

プログラムをつくりませんか?コンピューターの記録やファイルやデータを整理するときに、ちょちょいとプログラムをつくってはお仕事を片付けるのに役立ちます。
 プログラムをつくる能力を身につけるために、具体的にはどんな行動があるでしょうか?…何からはじめたらいいでしょうか?
 プログラムをつくれなくて困っているひとをみかけます。いったい何が最初のプログラムをつくる障害になっているのでしようか。一緒に考えてみましょう。

プログラムとは?

 プログラムを作れるようになるために、私がおすすめする最初の行動は『プログラムという言葉の意味を調べる』ことです。
 孫子さんがむかし『敵を知り己を知れば百戦あやうからず』と書いています。教科書に長年掲載されているとおもいますので、孫子さんを知っているひとは多いのではないかとおもいます。孫子さんも言っているし…ということで、プログラムという言葉の使用例をネットで検索し、プログラムという言葉の意味を国語辞典や英和辞典などの辞書で調べましょう。

プログラムという言葉の使用例

 フィギュアスケートのプログラム、運動会のプログラム、海外留学のプログラム、ポイントやマイレージのプログラム、プログラム細胞死、観光立国実現に向けたアクション・プログラム、…コンピューター関連ではない用例がたくさんありますね。

プログラム(Program)の意味

 番組、予定、計画をたてること、目録、演目、手順を指示したもの、前もって書いたもの、…
 いろいろな意味がでてきました。

プログラムとはつまり…

 プログラムとは『方法や順番を考えることやその結果できあがったもの』と定義しましょう。何かの記録であって、次の行動に役立てるつもりがないものは、手順を記載してあってもプログラムではないでしょう。
 生活の場でさがしてみると、目的地へ約束の時間に到着するように電車の時間を調べることはプログラムでしょう。持ち物のリストをつくることもプログラムですね。
 料理のレシピもプログラムですが、レシピを読みながら料理をつくることはプログラムを利用しているだけでプログラムではありません。レシピなしにその場で考えながら料理をつくることはプログラムでいいでしょう。

プログラムをつくる前に、まずは準備

 プログラムを『方法や順番を考えることやその結果できあがったもの』と定義したので、ぢゃあトレーニング…といきたいのですが、そのまえに基礎能力や心身の状態について考えていきましょう。これはとても大切なことで、きちんとやらないと苦労するとおもいます。

十分な睡眠をとる

 睡眠を十分にとることは最も大切です。私の経験では、睡眠不足のときに書いたプログラムは翌日修正するよりも、破棄して書き直したほうが時間の節約になるくらいです。睡眠は頭脳労働の質に大きな影響を与えます
 睡眠中には記憶の整理がおこなわれるそうなので、効果的に学ぶために十分な睡眠をとりましょう。
 夜の部屋は薄暗い電球色にしたり、パソコンやスマートフォンを使わないようにしたり、眠れないだろうなぁとおもっても毎日同じ時刻に寝る時間を確保しましょう。睡眠に割く時間は今までよりも多めにしましょう。1週間くらい同じような生活をしていると頭がさえてくるとおもいます。

辞書をつかう

 この文章は日本語で書いています。ブラウザーの機械翻訳をとおして日本語ではない言語で読むひとがいるかもしれませんが、日本語で読まれることが圧倒的に多いでしょう。
 誰かの知恵を教えてもらうには言葉を使うことが多いとおもいます。言葉を気にかけることはとても大切です。教えるひとは知恵を言葉に変換して伝えます。教わるひとは言葉を知恵に逆変換します。この2回の翻訳の出来によって伝わる知恵の質に影響を与えます。
 教えるひと教わるひとの言葉のひとつひとつの意味が違っていたとしたら知恵が正しく伝わりません。日本語を英語に翻訳したものを日本語に再翻訳するとデタラメな文章になることがあります。これに近いことを日常的な言葉のやりとりでおこなっていたとしたら、知恵を教えてもらうのはとても難しいことです。
 少しでも知恵を正しく受け取るには国語辞典が役に立ちます。よく理解できなかったことや、何で?と感じた言葉をひとつひとつ国語辞典で確認するとよいでしょう。言葉の知らなかった意味を発見することがあるかもしれません。

シンプルなツールを用意する

 短期間でプログラムをつくれるようになろうとしていますので、あらたに使い方を覚えなければならない高機能なツールは最小限にしましょう。Windowsのメモ帳でプログラムをつくれるならそれでじゅうぶんです。高機能エディターや統合開発環境の使いかたを覚えるのは時間の無駄でしかありません
 ツールを選ぶことができるのなら心にとめておくとよいでしょう。

評価を聞く耳を持つ

 こっそりプログラムをつくるのでなければ、誰かに見せたり使わせたりするとおもいます。仕事でプログラムをつくるのなら、良い評価を得ることがある反面、安定動作しなければ批判を浴びることもあるでしょう。あなたが全力で創り上げたプログラムは多くのひとから評価・批判されることになります。
 プログラムに限らず、仕事で創作をすると様々な評価を聞くことになります。評価されることを避けながら創作を続けるのは難しいとおもいます。評価・批判されることは、あなたの創作物に興味を持ったということです。前向きに考えて創作に生かしましょう。

プログラムをつくるちからを伸ばす方法あれこれ

 目的を達成する方法はひとつとは限りません。『方法や順番を考えること』はプログラムそのものです。さあプログラムをつくるちからを伸ばすプログラムを一緒に考えましょう。

テレビをみる

 子ども向けの教育番組は考えるちからを伸ばすためにいろいろなことをやってくれます。おとながみても楽しい番組もあります。例えば次の番組は制作にちからがはいっていて、気づかせてくれるものがあるとおもいます。
 ピタゴラスイッチ - 4~6歳児を対象にした「考え方」を育てる番組
 子ども向けの教育番組で、映像をたくさん使って教えてくれます。おとながみても楽しいTV番組でしょう。

積み木をする

 小さい子と一緒に積み木で遊びましょう…とは言いません。
 コンピューターのプログラムは積み木と共通するところがあります。コンピューターの回路はごく単純な計算やデータのコピーといった基本的なことしかできません。それらを組み合わせることで複雑なことをやっています。
 実際にプログラムをつくる場面でも、プログラム言語が用意した言葉を使って新しい言葉をつくります。基本的なものを組み合わせて新しいものをつくりあげるところは積み木と共通します。
 いろいろなものを組み合わせる習慣をつけることはプログラムをつくるために役にたつとおもいます。

イメージトレーニングする

 プログラムをつくることが上達への近道だとおもいますが、つくれないひとに向かって『まずはつくってみたら?』というのはおかしいです。まずはイメージトレーニングをしてみましょう。プログラムをつくっているイメージを膨らませることならできるかもしれませんね。
 とても短いプログラムはお約束の部分を除くと1行から数行になることが多いとおもいます。ハローワールドとメッセージを出力するだけのプログラムを見かけることがあります。いつも同じように書くお約束の部分はコピペできるようにメモっておけばいいでしょう。

 それではハローワールドとメッセージを出力する部分を詳しく見ましましょう。Lotus Scritでは『Print "ハローワールド"』、 Lotus 式言語では『@StatusBar ("ハローワールド")』、 VBScriptでは『WScript.Echo "ハローワールド"』、 C#では『using System; Console.WriteLine(@"ハローワールド");』、 C++では『#include <iostream>; using namespace std; cout << "ハローワールド" << endl;』

のようになります。
 はい、見てわかるとおもいますが言語によってバラバラです。そこはよしとして、注目すべきなのは 命令を使うためのお約束、命令、ハローワールドを囲う記号、ハローワールド、行末のお約束 というようにプログラムは細かいものの組み合わせになっているというところが大切です。細かいものを組み合わせて行をつくり、行を組み合わせてひとまとまりの章になります。その全体がアプリケーションという単体で動くプログラムになります。
 最初からスラスラと作っていけるものではないので、一行つくるのに何時間もかかったり、ひとつの機能をつくるのに何日もかかったとなげく必要はありません。それが普通だとおもってください。

知識を得る

 インターネット、本やYouTubeなどから知識を得ることができます。でも知識を得ることに熱中しないでください。方法や順番を考えるちからを伸ばすことがもっとも大切なことで、知識を得ることは目的から外れます。

 考えてみてください、知識があればプログラムをつくれるようになるでしょうか?私はそのようにおもいません。
 すでになんらかのプログラムをつくったことがあるひと、すでにプログラムをつくる能力が備わっているひとであれば、別の言語や環境でプログラムをつくるときに言語の特徴やエディターの使い方などの新しい知識を得る必要があるでしょう。こういうときでも言語ひとつひとつの関数を覚えることはしません。使う関数の詳細な仕様は繰り返し調べるようにしています。記憶ってあまり正確ではないと感じています。

そのほか

 ほかにはどんな方法があるでしょうか?
皆さんも考えてみてください…

 わたしが教えてきた経験から言わせていただくと。。「プログラムをつくれるようになりたい」という強いおもいから、基本情報技術者試験のような検定試験の勉強をする方向へちからを集中してしまったひとは想いを遂げられない。。みたいです。

 プログラムをつくれるようになるために繰り返し練習することが大切です。勉強はちょっと違うと感じています。