7
4

More than 3 years have passed since last update.

輪読会:第4回 Javaで学び直すオブジェクト指向プログラミング

Last updated at Posted at 2021-04-01

こんにちは。
株式会社アクシスのヤマウチです!
弊社の福岡オフィスでは、木金の昼休みの時間を利用して輪読会を行っています。
現在はSoftware Design 2021年3月号の「Javaで学び直すオブジェクト指向プログラミング」を読んでいます。

今回は第4回の記事になります。
第4回は第1章 オブジェクト指向プログラミングのメリットから第1章の最後まで読みました。

※以下、オブジェクト指向プログラミングをOOPと略します

オブジェクト指向プログラミングのメリット

ここでは「再利用性」という言葉が出てきました。
そこがこの節の議論ポイントで色々話したので、それについて書いていこうと思います。

まず結論として、再利用性は汎用性が高いとニアリーイコールで、汎用性が高いからこそ、再利用が可能となる。というような感じの結論になりました。
個人的な感想としては、「再利用性」ってワードはOOPの中では聞いたことがなかったので、今回、僕らが出した結論である汎用性の方がしっくりくるなぁと言う感じですが、もしかするとこの章を書かれた「谷本心さん」の意図を、汲み取りきれてない可能性もあるかもしれません。
ただ、この章に関してはOOPのかなり基礎的な部分を説明しているので、対象読者を考えた時に、汎用性というワードよりも「再利用性」というワードの方がわかりやすいかもな、とも思わなくはないです。
OOPを今以上に、全然知らなかった頃の気持ちを思い出せないので、わかりませんが。。。w

あと思うのは、再利用性っていうのを真に受けすぎて、超絶抽象的なクラスになってしまうのはクラスの役割がぼんやりしてしまうので、役割は明確でありつつも再利用性が高いクラスを作る必要はあるかと思います。

言うは易く行うは難し、ですが。。。汗

なぜオブジェクト指向プログラミングを学ばなくてはならないのですか?

話し合いの中で出てきたのは、「OOPを学ぶことで、よりフレームワークを正しく使える」「業務仕様に特化したものを作る際に、知識がないと拡張がしづらい」というような話が出てきました。
何が正解で、何が間違っているということはないかなぁと思いつつも、結局のところは今後のためだと思います(個人の見解です)。
むちゃくちゃ曖昧なことを言いましたが、ここでいう今後というのはエンジニア個人の今後ではなく、そのプログラムで作成したアプリケーションなどの話です。
いわゆる保守性というやつですかね。

OOPをより理解した方と、そうではない方の作ったアプリでは、全く同じ動きを実現していたとしても、その中身であるコードは全然違ったものになっていると思います。
そのアプリが将来に渡って、拡張などが行われないことが確約されているのであればそれで問題ないと思いますが、たいていのアプリには今後も拡張や、仕様変更などがあると思います。
そういったものが積み重なるごとに、保守性という観点では大きな開きが出てくると思います。

そういったこともあり、OOPに限らずさまざまな設計手法を学ぶことで、技術的負債を極力減らしていく必要があると思います。
それが「なぜオブジェクト指向プログラミングを学ばなくてはならないのですか?」の答えかなぁと、個人的に思います。

犬や猫とオブジェクト指向

これはコラムですが、これについても少し話し合ったので、書いていこうと思います。
https://togetter.com/li/1462076
こちらでも色々書かれていますが、超ざっくりと見た感じ「わかりづらい」という感想が多いですね。
弊社の研修中の社員も「わかりづらい」って言ってましたね。

元も子もないことを言うと、業務などで実際に使ってみないと理解できないと思いますw
その前段としてどうするかって話だと思いますが、
「・・・」
浮かんでないですね。

話し合いの中で出た教育方法?としては、
まずは犬猫などの簡単な例でざっくり概要を理解してもらった上で、自分の好きなものを使って抽象化してみてもらう。
おそらくどうすれば良いかわからないところが出てくるので、そういった部分を一緒に考えていく。
というアイディアも出ました。

結局のところ訓練しようぜ!って話ですよ。
訓練。

今日一、どうでもいい話ですが、6年弱自衛官をしていたので訓練というワードは、まあまあ好きです( ̄ー ̄)b

おわりに

この輪読会の議論の時間では、
結構メインぎみにしゃべらせて貰ってて、何か間違いや補足があれば先輩がフォローしてくれる。
という様な感じでやらせて貰ってます(そうしていこうって決めたわけではないですが)。
普段、自分が学んだことをアウトプットする時間というのは、そこまで多くはないので、非常にいい会だなと思っています(自分本位)。

弊社 @fumiya-uehara の「輪読会をやってみて」という記事にもありますが、読み進めることよりも理解することに重きを置いています。
極論、「前回のこの部分、もう一回教えて欲しいんですけど」で話しあいが始まって、それだけで輪読会の時間が終わっちゃうっていうのもありだと思っています。
今後もどんどん議論して、理解を深めて行けたらいいなぁと思っています。

以上!

7
4
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4