お前らのプログラミング入門の勉強方法は間違っている

独学法

プログラミング 入門

ギュナイドゥン! 継続の錬金術士なおキーヌです。

プログラミングといいつつ、やることはスクリプティングなのですが
プログラミングという言葉の方が伝わりやすそうなので以後そうします。

変数に数字を入れて、条件分岐をして、ループして……

プログラミング入門者にとってはすごく退屈な勉強だと思います。
しかも退屈だから頭に入ってこないので、いざプログラミングしようとすると何をしたらいいのかわからない

私も20代前半の頃そうでした。

その勉強方法がまず間違っているんですよね。

結論から言ってしまうと

プログラミングは完成品を分解して自分で組み立てるのが最強の勉強法

これに尽きます。

学校の勉強と同じようにプログラミングをテキストに沿って覚えようとすると
必ずと言っていいほど楽しくなくなり、結果的に挫折します。

何故完成品を分解して自分で組み立てるのが最強の勉強方法なのかというと
達成するために必要な手続きや必要な道具(基本構文)が判明するというのが大きいです。

後は、「完成品」というゴールが既に見えているので精神的に楽になるのも大きい要素でしょう。

崩して組み立てるという勉強方法が優れているかをもっと理解してほしいので
まずは既存のダメな勉強方法のデメリットとメリットを簡単に説明します。

変数やIf、For等の道具の使い方だけを覚えても成長しない

道具の使い道

プログラミングを勉強しようと、教本を買う人は結構多いと思います。

大体のプログラミング入門本ってプログラミングの概念から変数、条件分岐、ループ構文と
解説していくパターンが続いて本の7割ぐらいはその基礎知識で消費されます。

このネット常時接続時代、その部分は正直いらないんですよね。
8割ぐらいはその楽しくなくなって途中でやめてしまうのではないでしょうか。

なぜ基本構文の使い方を覚えても成長しないのか

結論から言ってしまうと、基本構文だけを覚えてもそれを何に使うのかわからないからです。

学校のテストと違って、必要な時に覚えるのが一番身につきます。

基本構文を知らないとそもそもプログラミングできなくない?

確かに基本構文を知らないと何も組めませんね。

しかし誰かが作ったプログラムのソースコードをみれば
どの基本構文を使っているのかが見てわかります。

最初にも言った通り、完成品を分解して1つ1つ見ていけば何の基本構文を使っているのかがわかるので
同じように組めば、どのように動いているかが判った上でプログラムが完成するので理解力がかなり上がります。

いきなり複雑なプログラムを分解してはいけない

分解

プログラミング初心者にありがちなのが、素晴らしいプログラムを分解して勉強しようとして挫折するパターンです。

私も今だにこのパターンに陥ってしまうことが多く、プログラミング中級者の壁から抜け出せずにいます。

なので、自分のレベルにあったプログラムを分解してみないと分解しても理解できずに時間を無駄にするだけです。

初心者が最初に分解すべきプログラムは単純なものにすべき

例えばゲームをプログラミングで作りたいと考えます。

FFやドラクエのようなRPGを作りたい!と思って立ち上がりますが、
初心者があのようなクオリティの高いRPGを最初から作れるはずもありません。

ですが、RPGに必要な機能の一部は初心者でも簡単に作ることができます。

ドラクエの戦闘システムを文字だけで作ってみるとプログラミングの基本がわかる

文字だけでゲーム作っても何も面白くはないのですが
これが意外と勉強になるのでバカに出来たものじゃありません。

javascriptではconsole.logというメソッドがあるのですが
それに文字列を渡すと、コンソール画面に文字が表示されます。

一旦グラフィックは抜きで戦闘システムには何が必要かを考えてみましょう。
実際にゲームの戦闘システムを作ろうとすると一筋縄ではいきませんので
今回は超絶簡単に機能を絞りまくったものを考えてみます。

  • 文字の表示(デバッグログ出力)
  • 主人公とエネミーのHP状態を保持(変数)
  • 攻撃か防御を決める(条件分岐と乱数)
  • どちらかのHPが無くなるまで続ける(ループ処理)

以上がターン制バトルの基礎となっています。

1回ある程度プログラミングを勉強した人なら、こうしてみると
なんか簡単に作れてしまいそうって思いません?

これにグラフィックとBGMやSEを追加すれば立派なゲームの戦闘システムになります。

プログラミングの極意は森を見るのではなく木を見る手法

森林

森にある木をすべて切り倒せ。

この木を1本だけ切り倒せ。

どうでしょうか?苦労はしますが、道具さえあれば後者の方が断然出来る気がしますよね?

プログラミングはこれと全く同じでいきなり完成品を作れと言っても最適な方法がわからず進まない。
しかし機能の1つを作れと言われたら、意外と作れてしまう。

そして作った機能を組み合わせて1つのプログラムにするのがプログラミングです。

社会人にオススメはプログラム勉強法エクセルのVBA

IT企業やSEとかでなければブラウザを開いていたら遊んでいる風にみられるかもしれないので
IT業種じゃない人はエクセルを開いていれば仕事してる風に見えますのでVBAがオススメです。

総務の人がチマチマやっている作業を一瞬で終わらせられるプログラムを組めば感謝されること間違いなし!

しかしあえて仕事をしたくないからチマチマやっている人には
「なんてことすんの!仕事が増えるでしょ!」って怒られてしまうので気を付けましょう!

──ブログ毎日更新は73日目。

HTML組める、CSS組める、Javascript組める、PHP組める、自サーバー建てられる、
ネットワーク構築できる、データベース扱える、SEOの知識ある、デザイン出来る、
印刷業界の知識も最低限持っている。

あれ、私もしかして既に稼げる下準備出来てる?
給料上がらないしボーナスも出ない。そもそも私の労力を理解してくれる脳を持っている人が居ない

うーん、これはやめるべきw

その為にも後はポートフォリオを作りまくるのと、
セールスの知識を付けなきゃいけないですね。

それでは。