matobaの学んだこと

とあるPythonエンジニアのブログ

なぜ、クラスを使う必要があるのか、を学ぶ

「クラスって何のメリットあるんですか?」といった話を見かけた。 その中で、色々思い出したり、改めて確認した情報があったので、まとめておこうと思います。

オススメにあがった動画

新人が社内でそういった話をしていたときに、 id:shimizukawaがこの動画がいいよ、とってオススメしていたのが次の動画。

www.youtube.com

この発表は初めてみ見させてもらったのけど、面白かった。 なるほどー、そう繋がるのかー、面白いなあーと思った。 2007年の発表なのかな。(動画タイトルを見て)

そして、西尾さんの発表だったので、西尾さんといえば、コーディングを支える技術を思い出した。

コーディングを支える技術

Amazonだとこれ。

コーディングを支える技術 ~成り立ちから学ぶプログラミング作法 (WEB+DB PRESS plus)

コーディングを支える技術 ~成り立ちから学ぶプログラミング作法 (WEB+DB PRESS plus)

西尾さんのScrapboxにも紹介があったので書いておく。

scrapbox.io

これは何の本?

効率的にプログラミング言語を学ぼう、という本。

2013年に発表された本なので、上記の動画で発表していることから積み上げてきたことなのかなーと想像した。

言語の比較とか歴史とか成り立ちから学ぶことができる。

クラスについても色々書いていて、印象的だったことを紹介する。

クラスは現実世界の「モノ」の「模型」

クラスは 現実世界の「モノ」の「模型」 みたいな話が本の中で出てくる。

その話は、何となくイメージができたし、納得感があった。

とはいえ、もっとクラスにはたくさんの意味があって、それの詳細は、本を読んだ方がいいと思う。

言語によって意味が違う

そもそも、クラス、という言葉は、言語によって何なのかが違うという話も出ていた。

言語設計者が何を思ってクラスを作ったのかは、言語設計者によって違うので、当たり前、という話かもしれないけど、なるほどーと思った。

クラスという共通の何かがあって、どのプログラミング言語でも同じものを指しているのかと思っていたところもあったけど、それは違うんだよ、というのが納得することができた。

そういえば、Pythonをメインにして考えていたときに、Javaの事例を見るとなんか話がずれるんだよなーと思ったことがあったけど、その理由がわかった。

ついでに言うと、有名なデザインパターンは、Javaのデザインパターンなので、Pythonにそのまま適用できるか、と言うと怪しい、と言うのも頭で理解できた感じがする。

クラスは三つの役割を持つ

コーディングを支える技術では結局、クラスは3つの役割を持つことがある、と言う話が書いてあった。

実際の本を読んだ方がいいと僕は思っているので、ここで、その3つが何なのか、と言う話は書かないけど、とりあえず、3つとも「わかる」となった。

前はわからなかったような気もするので、成長したのかなと思った。

詳細は本を読んでください。

改めて本を読んで

コーディングを支える技術は、以前読んだはずだったんだけど、改めて読んでみると以前と違ったことを学ぶことができた。

と言うか、前も読んだときに学んだのかもしれないけど、当時はそんなに重要性がわからなくて、スルーしてしたこともあるんだと思う。

今だからわかることとか、まだ自分がわかるレベルになってないこともあると思うので、1年後とかにまた読み返すと新たな発見がありそうな気がするなあ、と僕は思ってる。

余談

西尾さんのScrapboxをみて、以下のスライドが気になった。

scrapbox.io

後で詳しくみたいと思っているけど、とりあえず、今日は見ない。(時間の都合上)

良さそうなので、オススメに書いておきます。