オブジェクト指向―“良いプログラム”書くためのアイデア

オブジェクト指向とは

「オブジェクト指向」という言葉をご存じでしょうか? オブジェクト指向は、システム開発の分野における考え方の1つです。簡単に言うと、大きなシステムを小さなプログラムの部品(オブジェクト)の集まりとして捉え、その部品同士が連携して機能を実現するように全体を設計しよう、というアイデアです。このオブジェクト指向に則ってシステムを設計する/プログラムを書く技術は、チームでの開発、とくに何十人何百人ものエンジニアが関わる大規模な開発では、もはや必須のスキルと言われています。

オブジェクト指向での開発をするためのプログラミング言語としては、⁠Java」⁠Ruby」などが挙げられます。Javaは出退勤などを管理する社内システムや銀行の勘定システムといった基幹系システムに、RubyはQ&AサイトやレシピサイトといったWebサービスに使われることが多いです。

どんな利点があるの?

オブジェクト指向は1960年代、⁠ソフトウェア危機」に対する解決策の1つとして考え出されました。ソフトウェア危機とは、コンピュータの性能が発展するにつれ、その上で動かすソフトウェアも肥大化・複雑化していき、品質の維持とメンテナンスが困難になっていくという問題です。オブジェクト指向で設計することで、小さな部品ひとつひとつに対してのテスト(正常に動くか、要件を満たしているかといった検査)が可能になり、品質の向上につながりました。さらに、部品ごとに修正・拡張ができるため、メンテナンスしやすいソフトウェアを作ることができるようになりました。

初心者の大きな壁

このように大きなメリットがあるオブジェクト指向ですが、実際のシステム開発に取り入れるのは一朝一夕でできることではありません。先ほど、オブジェクト指向では小さな部品を作ると述べましたが、その部品の作り方に工夫が必要なのです。

オブジェクト指向では、現実の事象のあり方に注目して、データとその機能を一体化して扱います。

銀行のATMのシステム、とくに預貯金の機能を例に取りましょう。オブジェクト指向では、実際にやりとりされるデータである「預金」に注目します。⁠預金」というオブジェクトを作り、その中に「預金額」というデータと、⁠引き出す」⁠預ける」という機能を実装します。利用者が口座からお金を下ろすときは、⁠預金」オブジェクトの「引き出す」機能が呼び出されるというしくみです。預金の種類として、普通預金や定期預金などが考えられますが、これは先ほど作った預金オブジェクトから派生させる形で、普通預金オブジェクトと定額預金オブジェクトを作ります。こうすることで、一から何かを作り出すという無駄な手間が省けるという利点が生まれます。

この、データ指向でシステムを作り上げるという大まかな決まりのほかにも、⁠カプセル化」⁠インヘリタンス」⁠ポリモフィズム」など、オブジェクト指向には守るべきルールがたくさんあり、新人の開発者には大きな壁となります。

読んで書くことが大事

オブジェクト指向は習得が難しいことから、やはりさまざまな解説書が発行されています。

オブジェクト指向の本というと、プログラミング言語を1つ取り上げ、その言語でどのようにオブジェクト指向を実現するかを解説するという体裁のものが圧倒的に多いです。自分が使っている言語/将来使いたい言語があれば、その言語を取り上げた本で勉強することで、すぐ実践に活かせるような学びを得られます。

一方、オブジェクト指向をきちんと使いたいあなたへは、さまざまな背景を持つ計13人の著者さんが、それぞれ得意のプログラミング言語を使って、オブジェクト指向における設計のしかた、プログラミングの方法について書いています。さまざまな言語での実装例を読むことで、言語に囚われない、オブジェクト指向の考え方を学ぶことができます。

たとえどのような本で学習するにしても、一番に大切なことは、本を読んで終わるのではなく、実際に自分でプログラミングしてみることです。本の中に書いてあるコードをそのまま打ち込んでみたり、そこから自分なりに機能を追加してみたりすることで、オブジェクト指向の感覚を掴み、⁠良いプログラム⁠を書くことができるようになるでしょう。