「プログラムが作れない原因」から導き出した、プログラミングを身に付ける方法とは?
プログラミングを学び始めて、「文法は何となく理解できているのに、いざプログラムを作ろうとすると作れない」という方は多いのではないでしょうか。
「理解できているのに作れない」というジレンマに入ってしまうと「学習の停滞」が起こってしまい、「学習の挫折」にも繋がってしまいます。
それでは、「プログラムが作れない原因」とはいったい何なのでしょうか?
その原因を理解していくことが、「プログラムを作れるようになるための重要なポイント」になります。
今回ご説明する内容は「プログラミングを学び始めたばかり」の初学者を想定しています。
「プログラム」が作れない原因
何か趣味で「作りたいプログラムやアプリケーション」があったり、実際の業務では「顧客から依頼があったシステム」を開発する必要性があったりと、「プログラムを作る」というさまざまなシーンがあります。
「仕様」と「プログラムの構文・仕組み」の理解
プログラムを作る際には、具体的に「どのような動作をするのか?」という「仕様」を先に決めていきますが、この「仕様を理解すること」がプログラムを作る「スタート地点」になります。
「仕様」が理解できていない場合は、まず「仕様についての理解を進める」ことに注力します。
「仕様」が理解できている場合は、「プログラムの構文・仕組みに対する理解」について確認を行っていきます。
この考え方をまとめると、上記のようなフローになります。
「プログラムの構文・仕組みが理解できている」という状態とは、
- 他の人に聞かれても答えられる状態であること
- 他の人に対して説明ができること
です。
初学者の方に多いケースとして、「理解しているという思い込み」が「プログラムが作れない原因」となることもあり、さまざまな質問をされても答えられるようになるまで学習を進めていく必要があります。
例えば、
- 変数・定数
- 分岐構文
- 繰り返し構文
- 演算子
- データ型
- 配列
- 関数
などについて、質問されても答えられるかどうかをチェックしてみてください。
これらの内容は、どのようなプログラム言語でも必須となる「基本文法」ですので、必ず習得していく必要があります。
プログラムの作成に必要な「処理」と「順序」
これからプログラムを作る際に必要な「処理」と「順序」についてご説明していきたいと思います。
必要な「処理」と「順序」について思案する
「プログラムの構文・仕組み」が理解できていて、きちんと記憶している状態であれば、次のステップとして、プログラムの作成に必要な、
- 処理の内容
- 処理の順序
について考えていきます。
この段階が、「一番難しさを感じる部分」となることが多いのではないでしょうか。
「仕様」も正確に理解しているし、「プログラムの構文・仕組み」の理解もできているはずなのに、何をどのように作ればいいのかわからない・・・
例えば、何かの「商品を管理するシステム」を作ることを想定すると、商品情報について
- 追加
- 更新
- 編集
- 削除
ができる機能が「仕様」として定義されているとします。
「商品情報の追加機能の作り方がわからない」とすると、
- 何に対して「商品情報」を追加するのか?
- 「商品情報」をどのように追加するのか?
という問いが出てきます。
何に対して「商品情報」を追加するのかがわからない場合は、「仕様」の理解が不足しています。
なぜなら、「商品情報を追加する対象」は「仕様」として定義されているからです。
「どのように追加するのか?」がわからない場合は、「プログラムの構文・仕組み」についての理解が不足しています。
なぜなら、「追加対象へのデータの追加方法」は、プログラム言語の機能によって方法が決められているからです。
例えば、プログラム言語で用意されている「どの関数を使えばデータを追加できるのか?」を詳しく理解していく必要があります。
「商品情報の追加対象」と「追加方法」が理解できたら、次は「どのような手順で処理を行うのか?」を具体的に考えていきます。
例えば、「商品情報の追加対象」が「データベース」の場合に、「データベース」に接続する手順を考えていくと、
のような「処理の手順」が考えられます。
プログラムは通常「さまざまな条件」によって処理が分岐していきますので、処理の手順が全体的に見渡せる「フロー図」を作っておくと、処理の手順も整理しやすくなります。
「仕様」からこのような「処理の手順」を考えることができないと、プログラムを作ることはできません。
プログラムを作れるようになるためには、さまざまなプログラムを読んで「処理の手順」について考える経験を積んでいくことが必要です。
「設計」を先に行う
「仕様の理解」や「処理の手順」を考えることは、「プログラムの設計」の部分になります。
「仕様書」や「フロー図」をつくることは、「プログラムの設計図を作ること」とも言えます。
現実世界で考えると、建築物を建てる際には、必ず「建築物の設計図」を先に作ります。
そして、「建築物の設計図」を元に「建築物」を作ります。
「仕様書」や「フロー図」は、「建築物の設計図」に相当するものです。
もし「建築物の設計図」が無いまま、「建築物」を作ってしまったら、完成するまで「何が建てられるかわからない建物」になってしまいます。
つまり、「行き当たりばったり」な建築物になります。
プログラムも同じで、「仕様書」や「フロー図」などの「プログラムの設計図」が無いまま、プログラムを作ると、「どんな動作をするかわからないプログラム」になってしまいます。
そのため、「仕様書」や「フロー図」を正確に作ることが重要になってきます。
プログラマが、「プログラムの仕様を理解する」ことは「建築現場」で働く作業者が「建築物の設計図」の内容を理解することと同じことなのです。
そして、「プログラムを作る手順」を考えることは、「どのような手順で建築していくのか?」を考えることと同じです。
そのため「プログラムを作る手順」が考えられるどうかで、「プログラムを作れるかどうか」が決まってきます。
プログラムを作る手順を考える過程
「どのような方法で、どのような手順でプログラムを作るのか?」を考えていくためには、「プログラムの文法・構文の記憶」が重要になります。
なぜなら、プログラムを作る際に自分の中にある「プログラムの文法・構文の記憶」の中から処理が作成できそうな「文法・構文」を取り出して、処理の「組み合わせ」や「手順」を考えていくことが必要になるからです。
上図のように、「文法・構文」をきちんと覚えていれば、さまざまな「文法・構文」を取り出して、どの「文法・構文」を用いればいいのかを考えていくことができます。
もし、覚えている「文法・構文」が少ないと、
上図のように、取り出せる「文法・構文」の数が少ないため、プログラムの作り方を考えることが出来なくなります。
この現象は「プログラミングの初学者」に多い傾向にあり、「少しだけ」プログラムを学んで、すぐにプログラムを作ろうとしてしまうことが原因です。
プログラムの「文法・構文」の理解も記憶もできていない状態では、プログラムを作ることができないため、まず、「理解」と「記憶」に焦点を当てて、「他の人に質問されても答えられる」というレベルまで学習を進めていきましょう。
そのためには、繰り返し学習に取り組む「反復学習」が有効です。
プログラムを作る「手順」の組み立て方
「仕様書」や「システム設計図」に記載された動作を行うためには、「どのような処理が必要なのか?」を考え、思い付いた方法について「箇条書き」にして、1つずつ必要な処理について列挙していきます。
全く何も思い付かないという場合は、まだそのプログラムを作るための「仕様の理解」ができていないということですので、「仕様書」を読みながら必要な処理を書き出してみてください。
必要な処理を何も書き出せないとプログラムを作ることができません。
プログラミングでは、「仕様書(文章)」を読んで必要な処理を読み取り、作り方を発想していく「文章読解力」や「発想力」も必要になります。
これらの能力は、「一朝一夕」で身に付くものではなく、「日々の努力の継続」によって、少しずつ身についていきますので、毎日少しずつでもプログラムに触れる習慣を身に付けていきましょう。
プログラミングは、「数か月~数年」という長い年月の中で身に付けていく能力ですので、習得するまで時間もかかり大変なこともありますが、それだけ身に付ける価値のある能力です。
処理の「列挙」ができるようになれば、後は「列挙した処理をどのように組み立てるのか?」を考えていきます。
必要な処理を書き出し、処理の順序が決まることで、ようやくプログラムを書き始めることができます。
プログラムが作れなくて悩んでいる方は、これまでにご説明した内容を意識しながら、これからもプログラミングの学習を継続してみてください。