PRIMG0001
 毎週金曜日、プログラミングのちょっとした講座を記しています。
 ここでは、小学校から「プログラミング」が必須項目になってしまったため、お父さん・お母さん・おじいちゃん・おねえちゃんが子供に「プログラミング」教えることができるように、ここでこっそりと勉強してしまおうという企画です。
 今週は「インタンス化」についてです
 今回の講座はプログラムの作成からちょっと離れます。プログラムを作成するときに、所々で「インタンス化」する所が出てきます。この「インタンス化」の意味が分からければ「何それ?」となってしまいますので、この「インタンス化」とはどういうことなのかを今回説明していきます。

 まず、インタンス化という言葉をググってみると


インスタンス化とは、オブジェクト指向プログラミングで、クラスなどの定義に基づいて実行時にメモリ上に領域を確保し、実際にデータの集合体を生成すること。生成されたオブジェクトの実体を「インスタンス」(instance)という。
 


とIT用語辞典で説明しています。専門的な言葉が多くて何がなんだか上記の説明だとわからないという人も多いと思います。そこで、今回もっと分かりやすく説明していきます。


 まず、最初に出てくる「オブジェクト指向のプログラミング」とは何?となるわけですが、まず、プログラムの種類には大きく3つあります。

関数型プログラミング
オブジェクト指向プログラミング
手続き型プログラミング


 まず、関数型プログラミングは数学的な関数のイメージでデータ処理を行い動作するプログラムで、今まで習ってきたプログラムは「命令(If文やmsg文など)」が重要となり、その中でいろいろ計算などを行いますが、関数型プログラミングは、あくまでも命令文がサブになり、プログラムの中心が関数になります。いわば関数だけて作られたプログラムとなります。

 次に、手続き型プログラミングですが、例えば、アニメの制作を例にとっていきます。アニメを制作する場合、ストーリーを考え、絵を下書きし、それから本書き、、色を付け、セリフを入れるといったいろいろな工程があります。これらの工程をひとつひとつ順番にこなしていく過程のように作るプログラムです。ときわ荘にいた時代の漫画家の工程と思ってください。
 一方、オブジェクト指向プログラミングはジブリスタオのように、各業務が分担されており、その業務が終結してひとつの作品を作り上げます。
 手続き型プログラミングはプログラムの内容は上から順番に解読でき、理解がしやすい反面、応用などをおこなう場合は大変な作業になります。場合によってはプログラムをすべて書き直さなければならない場合もあります。
 オブジェクト指向プログラミングは各部署が分かれているため、プログラムの解読などに時間がかかりますが、その反面、応用などをおこなう場合は一つの部署を修正したり、部署を追加・削除するなど変更作業が容易になります。そのため、プログラム全体のアレンジが容易になります。

 では、本題のインタンス化はどういうことなのかを説明していきます。上記の説明の「クラス」とは「設計」という意味であり、あくまでも構想段階の状態となります。このインスタンス化というのは、この構想状態の段階から実際に物を作るということです。

 プログラム上では変数に値を入れる場合を「代入」といいます。その感覚で変数的な「枠」に実際のプログラムなどを「ズポッ!」と入れてしまうことをインタンス化といいます。この「枠」の部分があくまでも設計段階の枠なので、実態が入っていません。その枠に実際できたものを入れてしまい、一つの集合体として扱うということになります。

 要は、設計段階で作った枠に実際作ったものを入れてしまうと思った方が分かりやすいかと思います。

 ちょっと難しいため、説明が下手になってしまった部分がありますが、本日はここまでとなります。