テニスにて

テニスコーチの視点からの解説

RUBY勉強中 20150923

今日はHashクラスに関して勉強しました。

前回(RUBY勉強中20150921)、箱に例えてクラス表現してみましたが、今回のHashクラスを勉強していくうちに、前回のクラスの説明を少し修正をしてみたくなりました。多分、前回の「箱」の説明もあながち間違いじゃないんだろうけど、もっといいやつを思いついたので。

コンピュータのアプリの一側面として、ユーザーがなにかのデータを入力して、それが何回も繰り返されたり、何人も利用したりしてデータがたまっていき、たまったデータから欲しいデータを探したり、提示したりさせるという仕事を楽にさせてくれるという側面があります。僕が今作ってる蔵書管理アプリもTwitterFacebookもクックパッドも、とどのつまり上記のことを行っているのです。

日常の生活でも似たような作業を日々行っています?例えばテニススクールの場合、お客さんが新規登録する時、お名前、ご住所、電話番号、在籍予定クラス、などを「専用の用紙に書いて」登録しますよね。PCがない時代や、PCを使っていない会社(今どきはあまりないでしょうがw)は、その用紙を整理するために専用の箱に入れて、どこに誰のデータが入っているか箱に名前を書いたりして管理します。

さて、これら一連の作業とRUBYのプログラムを比較して考えてみます。
テニススクールはまず、お客さんが入会をするために顧客情報を新規登録するために必要な登録用紙を作らないといけません。ただ紙だけ用意して、適当にバラバラな場所に情報を書かれても、後で見るのが大変ですし、お客さんもどこに書いていいかわかりません。なので「ここにお名前、その下に電話番号、その下にご住所、、、」など、わかりやすいように空欄を設けます。
そしてこのような場合、たいてい一枚原紙を作ってそれは直接お客さんには使わず、あとはコピー機などで印刷してそのコピーを使いますよね。そして清書するためにお客さんが書いた用紙から違うノートに転記したりもします。

RUBYプログラムというものは実は、今、私が書いた日常のお仕事などでやってることをRUBYプログラムでも行っているだけなのです(RUBYに限ったことではないと思いますが)。まず最初に用意された原紙が「クラス」と呼ばれるものです。各データを記入するための空欄を用意することを「初期化」と言います。そして、原紙をコピーしてそこにお客さんに記入してもらった用紙を「インスタンス」と言います。その用紙をノートに転記したりする作業を「メソッド」といいます。ほいでこの登録用紙にまつわるモロモロ全体を「オブジェクト」と言います。
たいていのプログラム教本の場合、たとえ入門書でも、いきなり「RUBYオブジェクト指向プログラミング言語なので、まずクラスを定義して初期化し、必要なメソッドを用意して、そのクラスを変数に代入して実装化してインスタンスを作成します」みたいな、わけわからない説明がなされていることが多いです。この「クラス」「初期化」「インスタンス」「メソッド」などの言葉が、プログラムをとっつきにくくしてる一つの原因だと思います。

要は「紙を用意して項目書いてもらうための空欄作って、一枚原紙としてそこからコピーして、そのコピーを登録用紙として使う」みたいな、日常の簡単なお仕事でもやってる誰でも思いつくことをしてるだけなのです。ただ、コンピュータプログラムは元々知っている言葉や作業もあるのですが、知っている言葉から連想して新しい言葉の意味を理解するということができません。なのでいちいち「登録用紙とは。空欄はここへ作る。転記するとは」と定義してあげないと「登録用紙ってなに?空欄てどこに作るの?転記ってなに?」みたいに文句言われて動かなくなってしまいます。

長くなってしまったのでここでいったん切ります。
Hashクラスに関してはまた次回。

ではは(^^)