続・知らないことを理解するには・・・




皆さんこんにちは、プロクラスの野間です。9e757b65c09decbc09a0f8edbca4250d_s

プログラムを組んでみようと思って本を買った・WEBで検索した・・・けどまったく意味が分からなかった。
なんて経験はありませんか?
人によって理由は様々あると思いますが、人に教える仕事をしていて幾つもの「これが原因かなぁ」と思うことがあります。
今日は前回の続き「じゃぁどうやって理解するか」について。

■前回のまとめ

私たち(大人?)は過去の知識と比較して、差分を憶えていく。
だから過去の知識と一致する部分が無いと訳が分からなくなる・・・

■「あ~あれの事か~」の出来方

いつものパターンに持っていくためには自分の中で「過去の知識」としての基盤が必要になります。
この「過去の知識」とは1年前とか10年前とかの期間の意味は含みません。
「今さっきやった」でも「過去の知識」です。
ここでの対象は「自分の記憶にあるもの」となります。

少し具体例を書きます。(書いてある意味は分からなくてOK)

・Unity起動、Path指定、Project名を指定、2D選択、CreateProject押下、32x32white.pngをドラッグ、Hierarchyに配置

Unityの作り始めの手順を大雑把に書いたものですが、Unityをご存じない方には全く意味が分からないと思います。
ですが、これを続けると・・・

・Unity起動、Path指定、Project名を指定、2D選択、CreateProject押下、32x32ball.pngをドラッグ、Hierarchyに配置
・Unity起動、Path指定、Project名を指定、2D選択、CreateProject押下、メニューのGameObject>3D Object>Cube選択
・Unity起動、Path指定、Project名を指定、2D選択、CreateProject押下、メニューのGameObject>CreateEmpty選択
・Unity起動、Path指定、Project名を指定、2D選択、CreateProject押下、メニューのAssets>Create>Folder選択
・Unity起動、Path指定、Project名を指定、2D選択、CreateProject押下、block_01.pngをドラッグ、Hierarchyに配置

意味は分からないと思いますが、よ~~~く見比べてください。2ac71fba773ba9c7ce458af56ddd92c6_s
最初の5手順が同じものだと気が付くと思います。
「Unity起動、Path指定、Project名を指定、2D選択、CreateProject押下」⇒ここからが違う。
沢山書いてありますが、こうやって【見直してみる】と、

・32x32white.pngをドラッグ、Hierarchyに配置 
・32x32ball.pngをドラッグ、Hierarchyに配置
・メニューのGameObject>3D Object>Cube選択
・メニューのGameObject>CreateEmpty選択
・メニューのAssets>Create>Folder選択
・block_01.pngをドラッグ、Hierarchyに配置

これだけの事だなぁと思えませんか?(もちろん意味なんて分からないと思います)
こう思えた方の頭の中は恐らく、
「共通手順」+「個別手順」で考えられていると思います。

この「共通手順」が「過去の知識」です(『前にやった●●と一緒だな』と気が付く)。

■意味なんて分からなくても良い

さて、この例で重要な点があります。
「Unity起動」「Path指定」「Project名を指定」「2D選択」「CreateProject押下」
一つ一つの手順は全く意味が分からないと思います。
となると当然、全部まとめた「共通手順」なんて意味が分かるはずありません。
でも、「共通手順」って一括りで考えられますよね?
そう、意味なんて分からなくっても良いのです。記憶だけで1手順ずつ再現できる必要もありません。
大事な事は「共通手順」と【一括りで考えられるか】どうかです。

例えば、手を洗う。
濡らして、石鹸を付けて、こする。
泡立てるために何故濡らさないといけないか説明できる人が何人いるでしょうか。
多くの方が「濡らさないと泡立たない」事を知っていますが、「どのような反応が」を説明できる人は少ないと思います。
説明できない人が多いですが、でも、使う分には説明できなくても全く問題ないですよね?

■対処方法

「共通手順(過去の知識)」を認識して憶えると、格段に覚えやすくなるのですが、やり方は思いつく限りで2つあります。
まず一つ目ですが、王道です。
「何度も色々なものを作って繰り返して比較する」
正に王道!
先の例のように色々比較するように作業すると「差」が見えてきます。
「繰り返し」
正に物を憶えるための基本です・・・が、今回は別のオススメ方法があります。

次が二つ目(こちらがオススメ)
「改造する」
既に動いている物を改造していきます。
例えば、
私がやっているUnity授業のLesson1では「箱を積み上げて、横からボールをぶつけて積み上げた箱を崩す」をやっていますが、
これの「玉の速度を変える」とか「向きを変える」とか「箱を2列にする」とか・・・とか・・・
どんどんと改造していきます。

別の言語ですと、
例えば、「画面の中央に画像表示」があったとします。
では、左上に表示してみる、右下に表示してみる、移動するようにしてみる、キー入力で右に移動とか・・・とか・・・
チョットだけ、そして、どんどんと改造していきます。
すると、「共通手順」【以外】の事ばかりやる事になります。

先に書いた通り、どの道、「共通手順」は意味を理解する必要はありませんし、事細かく手順を知っている必要もありません。
何となく『こんな感じの物~』的な認識が出来ていればOKなのですから。
また、やや暴論ではありますが「共通手順」【以外】の事ばかりやれば、【以外】でやる事【以外】は「共通手順」ともとれます(かなり無理がありますかね)。

この方法にはいくつか利点があります。

1c42c3bc55ded6b7527d20d9b28dafd4_m-300x225
●わかりやすい
すぐに結果が出ますので、わかりやすいです。(「わかりやすい」とても重要ですよね♪)
訳の分からない事をやり続けるのって辛いですよね・・・

●【以外】の事の中にも共通点が見えてくる
多くの事には共通点があるものです。
共通点が見えてくると・・・(以下無限ループ

●【以外】の事がわかってくれば、今度は【以外】の事が「過去の知識」となるので、次は逆に「共通手順」だけ覚えれば良くなる

私は、新しい手法を試す時、いつもこの手法(改造)をとっています。
ここを変えたら・・・こうなるのか、じゃぁこっちを変えたら・・・なるほどなるほど。
【一気に色々変えずに、部分的にちょっとずつ変えて】試します。
「改造」⇒「理解」⇒「自分流に使う」

画像表示の例に習うと
・「画像の表示」+「座標を変える」=画像の表示位置が変わる
・「画像の表示位置が変わる」+「キー入力」=キー入力で移動する
これを繰り返すと、出来る改造の種類も増えていきます。

「理解するために改造しまくる」オススメです♪