プログラミング学習は、細かな文法など言語を学習する前に基本となる概念を押さえておく必要がある。
例えば英語を学習する際に、日本語では「SOV」だけど英語では「SVO」という語順になることなど、そもそも言語的な違いや背景を認識しておくことと似ているかもしれない。
1にも2にも、オブジェクト指向
「オブジェクト指向」というだけでこれだけの本が世に出回っていることから、はっきり言って1日やそこらで概念が理解できるような代物ではないことが分かる。
そもそもプログラミング学習などは完璧主義者には不向きだろう。
とりあえず60%程度の理解で次へ進んでいって、後になって別の項目や単元の学習をしている時に以前60%ですっ飛ばした残りの40%の部分が、うっすらとでも理解できてくるというようなことが多い。
筆者などは30%程度の理解でも前に突き進んでいる。
本題に戻り、オブジェクト指向プログラミング(Object Oriented Programming: OOP)とは、プログラムを手順ではなくて、モノの作成と操作として見る考え方である。
オブジェクトとは「モノ」を意味する。
これを一般社会に置き換えるとこのような感じだ。
こう説明されて、未習者にとっては分かったような分からないような感じだと思うが、私もそのような感じだ。
とりあえずそういうものなのだという割り切りが重要だろう。
オブジェクト
Rubyで扱える全てのデータは、「オブジェクト」と呼ばれる。
現実世界の数、文字、色、時間などはRubyで扱う場合にはオブジェクトという形でデータ化され、扱うことが可能となる。
例えばこのような感じである。
| オブジェクト名 | 扱うもの |
|---|---|
| 文字列オブジェクト | 文字 |
| 数値オブジェクト | 数 |
| 時刻オブジェクト | 時間 |
| 日付オブジェクト | 日付 |
| 配列オブジェクト | 複数のデータ |
さらに「オブジェクトを保管するオブジェクト」である配列オブジェクトやハッシュオブジェクトがありこの辺でパニックになりそうになる。
オブジェクト指向のメリット
オブジェクト指向はこういうものだと一旦分かったつもりになっておいて、どのようなメリットがあるのか、基本的に個人開発ではメリットが感じられにくいものが多そうである。
なぜかと言うと、オブジェクト指向自体が、「大人数で開発した時や大量のコードを書いた時の管理を、しやすくするためのもの」であるからである。
エンジニアでなくても大規模な開発案件を想像してみてほしい。
大勢の人とコミュニケーションをとりながら、仕様に基づいて役割分担をして開発していく。
そんなときに、非常に効率的に開発できる考え方として存在しているのがオブジェクト指向と言うことである。
以下にメリットを4点記す。
- プログラムのメンテナンスがしやすい
プログラムの一つ一つを小さなまとまりで考えるため、複雑なプログラムが減る。
- 分業化できる
大規模なシステムになれば当然大人数で開発を行うことが多いだろう。
その際に、開発の作業を並列で行うことができる。
- カスタマイズがしやすい
オブジェクト指向型プログラムの特徴である「継承」などの考え方を使う事で、既存機能の処理を引き継ぐ事が出来る。
- プログラムの品質が向上する
プログラムを部品化すると、不具合が発生した場合の問題箇所特定が速くなる。
また、まとまりのあるプログラム仕様の為、コードの可読性が向上する。