「んのすけのゲームエンジン奮闘記」オブジェクト指向についてほんのちょっとわかってきた。
こんにちわんのすけです。
ハローワールド三期生の「んのすけ」です。
んのすけという投稿名にしたのは間違いだったなと思っています。
文がよくわからなくなるので。
あと私が書くブログ記事の主題のようなものは「んのすけのゲームエンジン奮闘記」というものになっているのですが、今回のブログはゲームエンジンほぼ関係ありません。
私はハローワールドでの研修を終えた後、キャドセンターという会社に現在勤務しています。
キャドセンターは3DCG、デジタルコンテンツ、映像等を制作している会社です。
そんなキャドセンターで仕事をするようになって約八か月の時間が過ぎました。
この八か月の間に様々な案件に関わらせていただくことができました。
- iOS用のアプリ
- Windows用のアプリ
- GearVR用のVRアプリ
- VIVE用のVRアプリ
全部Unityというゲームエンジンを利用して作成しました。
他にも開発以外の仕事として、ARアプリ作成のライブラリの調査や、openFrameworks というフレームワークに触れられる機会をいただきました。
様々な仕事に携わる中で研修のときよりも成長したなと感じることがあります。。
それはオブジェクト指向についての理解です。
オブジェクト指向がなんなのかというとプログラミングの概念です。
誤解を恐れず説明すると、「プログラムを部品と見立てて組み合わせて使うというような感じの考え」
他にも特徴はあるのですがざっくりいうとこれです。
感じと言っているのは、本当に感じだからです。オブジェクト指向のプログラミングをしたことない人にオブジェクト指向の説明をどんなに説明しても、完璧な理解は得られないと思います。
私もプログラミングをほとんど知らない時に説明を聞いたとき「はあ~なるほど(?????) 継承?いんたーふえーす?」みたいな感じでなんとなくわかるけど、実際なんなのか、これを使う意味はあるのか、ぼやっとした理解でしかありませんでした。
オブジェクト指向の言語に触れて数か月経ったことで、分かったことなのですが
オブジェクト指向がなんなのか理解するには、オブジェクト指向の言語に触れて感じるしかないと思っています。
オブジェクト指向は考えるな、感じろ
このオブジェクト指向についてなんですが、実は私最近
感じました
これが、これが、オブジェクト指向なのか、これは便利だ、便利すぎる。
最近ちょっと機能が多めなアプリを作成しているのですが、作業中にほとんど機能は同じなんだけどちょっとだけ機能を書き換えたものを作成したい。ということが頻繁に起こります。ですがほぼ同じ内容のプログラムを複数回書くことがめんどくさく感じますし、読み返した時、自分でも理解しにくいです。
しかし、オブジェクト指向のクラスの抽象化、継承等の機能を使えばキレイにまとめることができます。
抽象化とはなんなのかというと汎用化と言い換えてもいいかもしれません。
例えば私のブログの主題の「んのすけのゲームエンジン奮闘記」というのを抽象化すると「んのすけの奮闘記」になります。
「んのすけの奮闘記」というタイトルにすることで、私は何に対しても奮闘してよいことになります。
ダイエットや、サウナ、組体操、鬼ごっこどんな記事を書いても主題からずれることはないでしょう。これが抽象化(汎用化)です。
抽象化したタイトルを継承すると「んのすけのダイエット奮闘記」や「んのすけの鬼ごっこ奮闘記」の内容の記事を書くことができます。
「んのすけのゲームエンジン奮闘記」のように初めから記事の内容を絞りすぎてしまうと、ブログにはゲームエンジンのことしか書けなくなってしまいます。これはタイトル付け失敗の例ですね。マネしないようにしましょう。
プログラムも一緒で、初めからできることを限定的にすると他のプログラムで生かすことができません。オブジェクト指向の言語の恩恵を受けるには、プログラムを可能な限り汎用的にして使いまわせるようにするにする必要があります。
仮に「んのすけのゲームエンジン奮闘記」を基として今回の記事にタイトルをつけるとしたら「んのすけのゲームエンジンのオブジェクト指向奮闘記」になります。訳が分かりません。プログラミングでもこのように訳の分からないことが起こります。
最近はオブジェクト指向の特性を利用して如何にしてコードを簡潔にするか、どうすれば他の人にも理解しやすいコードになるのか、そんなことを仕事中ずーっと考えてプログラムをしています。この考える時間が楽しいです。
どんな人にも可能な限り理解しやすいコードを書けるようになるのが現在の目標です。
引き続きお仕事頑張ります。