プログラミングは理系?文系?




cc-library010008321_1
 
こんばんは。プロクラスの吉田です。
 
ヨシダミツヒロ(@milan40920)
 
 
よくプログラミングは「理系の頭が必要」と思われていますが、決してそれだけではありません。
(コンピューター)プログラミングをするために必要な能力は、
私は「理系も文系も」どちらの能力も必要と思っています。
 
今回は、国語(文系)の必要な能力の一つを説明してみたいと思います。
 
国語能力もいろいろとありますが、中でも「読解力」がとても重要な能力と考えています。
 
読解力とは、「要するに何ができるのか(言えるのか や 書いてあるのか)」を読みとる力です。
読解力がどうして重要なのかを理解してもらうために、少し説明させていただきます。
 

■なぜ読解力が重要か

 世の中にある物事や行動、読み物や機械など存在するものは基本的に全て目的があり、それらは実現するために存在すると言えます。
それらの説明や内容は、目的をより詳しく説明するために一言ではなく複雑で長い文章で表現されています。
しかし結局のところ、本当にいいたいことはもっと簡潔に表現できるものだと思います。
 
みなさんが記憶にあるところでいうと、国語で出てきた読解問題は、長い文章の末「作者の言いたいことは何か」という問題が出題されています。
 
「言いたいこと」つまり「目的となる表現」を言い換えると、「主語」と「述語」を正しく読み取ることが読解力の基礎と言っても過言ではありません。
 
読解力を体験、理解していただくために、まずは例を挙げてみます。
 
・日本一早いスピードで走る新幹線は高速鉄道であり16両ある列車だ。
 
この文章を句読点含め8文字以内で要約してみてください。
 
要約なので、意味を変えてはいけなく、8文字以内なので、余計な文章は省く必要があります。
その結果、この文章の中で本質的なもの(主語と述語)が現れてきます。
 
それを踏まえての答えは、「新幹線は列車だ。」(8文字)になります。
 
いかがですか?
重要でない装飾を省くと中心となる主語と述語が現れ、要約されているのが分かると思います。
 
ではこの要領で、もう一問考えてみてください。
 
・家族4人で九州にいる父方のおばあちゃんに会いに行く。
 
この文章を句読点含め16文字以内で要約してみてください。
 
この文は2つの文章を要約できると考えます。
主語は、「家族4人で」となりますが、問題なのは述語です。
 
この文の目的は、「おばあちゃんに会いに行く」事であって「九州へ行く」ことではありません。
ですので、まとめる場合は、「家族4人でおばあちゃんに会いに行く。」(19文字)
となりますが、このままでは16文字を超えてしまいます。
 
このような場合、文の中で重要な単語を残して、補足している部分を削っていく事になります。
「家族4人で」の「家族」と「4人」を分けてどちらが目的の意味として重要かを考えます。
「4人」を採用するとした場合、4人だけではどんな4人なのかがわからないため、残すのは「家族」の方が文章の意味としては重要です。
 
以上から、答えは「家族でおばあちゃんに会いに行く。」(16文字)になります。
 
このように、存在するモノや事象を見渡して要約していくと、その本質的な主語と述語が現れてくる。
これは、プログラムを組む時にも同様に必要な要素です。
 

■ゲーム作りで読解力を養う?!

私が講師として、小・中学生に向けたゲームプログラミング教室を行っているのですが、
ここでも、目的となるゲームの要約(ゲーム性の本質)を抜き出し、考える訓練をしながら授業をしています。
 
例えば、神経衰弱(カード当てゲーム)を作る場合は、
神経衰弱の遊びの目的は何なのかを一緒にじっくり考えていきます。
 
このゲームはどんな事をゲーム性として使っているのかを分解し理解することにより、
ゲームのコア(中心)設計を行える素地を養うことを目的としています。
 
プロクラスで大切に考えている事は、ゲームを作るというだけではなく、その中にある大切な要素を自然と抜き出していけるように、毎回の授業で慣例的に行う事により、全体の複雑な要素からシンプルに考える能力を開発していくように授業を組み立てています。
 
gamedesgin
※プロクラスキッズの「わくわくゲームプログラミング教室 神経衰弱をつくろう」教材より
 
一見ソフトウェアは複雑な機能に覆われているのですが、上の資料のように、
目的(この場合、「記憶力を競う」)をしっかりと見抜き、理解することが重要です。
なぜなら、その目的が軸であり、ソフトウェアの中心となるからです。
 
読解力によりシンプルに構造の中心(目的)を捉えることで、もしもさまざまなルールや機能が増やすとしても、目的(何をすべきか)が明確であれば、ブレる事はありません。
 
そう考えると、プログラムを組む時に、「プログラムの目的を知らない」で組むプログラマは。。。ちょっと不安ですね。
 
いずれにしても、物事の本質を見極められるように、日々「そのソフト(アプリ)で何を実現するべきなのか」を理解する読解力を鍛えていくようにしましょう。
 
ヨシダミツヒロ(@milan40920)