なぜ今、オブジェクト指向に注目するのか──日常生活にも応用できる考え方とは?
オブジェクト指向というとプログラミングのパラダイムをイメージします。スタッフの皆さんはなぜ、オブジェクト指向に注目されているのでしょうか?
オブジェクト指向は元々、プログラミングパラダイムを指す言葉ですが、昨今ではそれ以外の場面でも考え方が応用され、さまざまな考え方・側面で捉えられています。具体的には、「オブジェクト指向設計」や「オブジェクト指向モデリング」などです。
このカンファレンスでは、さまざまな捉え方ができる「オブジェクト指向」をテーマにしていますので、アーキテクチャから日常生活に密接するものまで、多種多様なトークをお楽しみいただけると思っています。
また、オブジェクト指向を捉える上でのポイントの一つとして、「現実世界の事象をどう捉え、どのようにシステムに落としていくか?」ということがよく議論になります。このようなシステムの設計分析フェーズをテーマにした大規模カンファレンスは、国内では他にありません。ぜひ皆さんも、私たちと一緒にオブジェクト指向の世界に触れてみませんか?
オブジェクト指向は特定の言語に備わるものではなく、パラダイム(手法や考え方)のひとつです。近年よく使われるプログラミング言語の多くがマルチパラダイム言語であり、オブジェクト指向の手法には多くのヒントがあります。そのため、オブジェクト指向に注目している方も多いのではないでしょうか。また、オブジェクト指向の考え方である「クラス」と「インスタンス」には汎用性があり、日常生活やルーティンワークにも応用が利くのではないかと思います。
オブジェクト指向に挫折感のあるエンジニアも多いかと思いますが、学ぶときのポイントはありますか?
クラス指向のオブジェクト指向プログラミングにおいては、そもそもの成り立ちを「ソフトウェアの変更に関わる問題を、うまく解決するための整理手法」と認識するとよいです。
また、オブジェクト指向を学ぶときに出てくる多くのたとえ話は、オブジェクト指向プログラミングの機能を説明するのには十分ですが、その目的を説明するのには不十分です。それよりも、どのような問題を解決するためにオブジェクト指向プログラミングが誕生したのかを考えることが、理解の第一歩となると考えます。
さらに、世の中には多くのオブジェクト指向のアプローチがあります。それらがどういった目的で、どのように発案されているのかに着目すると、混乱することが少なくなると思いますよ。
オブジェクト指向、関数型、手続き型などのいろいろな言語を比較し、これらがどう違うのか丁寧に見ていくのも理解の助けになります。メリット・デメリットを比較してみるのも良いでしょう。
オブジェクト指向を広める上での課題はありますか?
情報系の大学や専門学校などプログラミング・情報システム設計を学ぶ現場では、授業時間の制約もあり、構文の解説が主体となっていることが一般的です。しかし、クラスベースのオブジェクト指向プログラミングは、ソフトウェアの柔軟性を担保するための技法です。したがって、元々の課題と解決手段としての技法を、一緒に解説することが必要だと思います。
また、オブジェクト指向は既に広く普及していますが、その広まり方はあまりにも過度であると感じます。オブジェクト指向という言葉でイメージするものが、開発者それぞれで異なってしまっていると感じられるのです。「オブジェクト指向プログラミング」「オブジェクト指向設計」「クラス指向」「メッセージ指向」など、混同せずに広めるには、これらの概念の歴史を伝える必要があると考えています。
現在のオブジェクト指向のトレンドには、どのようなものがありますか?
まず、オブジェクト指向自体は、頻繁に新しい技術が現れるものではないと思っています。
前回のOOC2020を開催したころは、ソフトウェア設計手法である「ドメイン駆動設計(英語: domain-driven design、DDD)」への関心がすごく高まり、同時期にいくつか書籍が出版されました。現在はDDDの概念がさらに広く定着してきたため、たとえば「RDRA」や「ICONIX」などのより実践的な手法を併せて学ばれるケースが増えているように感じます。
私たちとしては、OOCのセッションもオブジェクト指向のトレンドに沿った内容になっていると考えています。そのため、OOC2020のタイムテーブルと、OOC 2024のタイムテーブルを見比べていただくと、トレンドの違いに気づくかもしれません。ぜひご確認ください!