ちょうぜつ本_読書py[2] みんなのメモ ###### tags: `ちょうぜつ本` - このメモはWebに公開されています(HackMDチーム) - リンクを知っている人は見られます - HackMDにログインして編集できます ## ちょうぜつ本 - [ちょうぜつソフトウェア設計入門 ――PHPで理解するオブジェクト指向の活用](https://gihyo.jp/book/2022/978-4-297-13234-7) - [サポートページ](https://gihyo.jp/book/2022/978-4-297-13234-7/support)(正誤表) ## お願い事項 (1) 今を楽しもう(録画はしないでね) (2) 本メモは**インターネット上に公開されています。** そのため、文章の丸写し(!=引用)や、書籍を読まずに内容が詳細に分かる表現は行わないようにしましょう。 参考記事: - [Qiita ヘルプ 著作物を引用する際の注意点 ](https://help.qiita.com/ja/articles/about-copylight) - [Qiitaで記事を公開するときに気を付けるべきマナーについて 〜無断でネットや書籍の内容を丸写しするのはやめよう〜 ](https://qiita.com/jnchito/items/215c2d51599eb29adabc) - [文化庁 著作物が自由に使える場合 ](https://www.bunka.go.jp/seisaku/chosakuken/seidokaisetsu/gaiyo/chosakubutsu_jiyu.html) ## このメモについて このメモは ちょうぜつ本_読書py[2] のメモです https://connpass.com/event/289803/ 読む範囲:3章 ## 読書会の流れ * 20:00〜20:30 **自由参加**のもくもく会(個人作業) - 事前に読む時間がとれなかった方はここで読んじゃいましょう(ざっとで大丈夫です) - 合わせて、この**HackMD**に話したいことを各自書いてください - ログインすれば書ける設定にしています - ここがわからん、ここはわかった お気軽に書き込んでみてください - HackMDの書き込みに投票し、みんなが気になるところをわいわい読み解いていきます * 20:30〜22:00 読書会本編(みんなでわいわい) * Discordでスライド共有して別途案内します * 20:30開始の本編では、「わたしこれ気になる!」 という話題に `:+1:` と書いて投票します。 * :+1: する上限はありません。 気になる話題に全部 :+1: しちゃいましょう。 ただし1つの話題には1個だけ:+1:でお願いします * 票数が多い話題から話していきます。 ## 以下、もくもく会ワークゾーン 以下は各節で「これってどういうことなんだろう」「ここからこういう気付きがあった」などを書き出すゾーンです。 ### 第3章 オブジェクト指向 _章よりも細かい目次は公開されていないようですが、読書会運営都合により見出し番号だけ記載しています_ 章全体への書き出しはこちらに - - - ### 3-1 - オブジェクト指向って結構「こういうものです」という説明が難しかったり、理解しにくかったりで最初に挫折する人が多いと思っている(かくいう自分がそうだった)ので、ひさてるさんのこの主張は「オブジェクト指向とは?」となった人に読んでもらいたい :+1: - 最近、CS(コンピュータサイエンス)を学ぼうとして構文木とかパースとかの概念を再度学習しているけど、Pythonとかの我々のコーディングも人間が分かるように抽象化されたものだよなぁと気づきがありました(低水準な機械語とかを書かなくて良いという意味で):+1: - 関数型プログラミングまわりは私も斬られました(誤解してた):+1: - 良い(?)オブジェクト指向で書かれたものはクラスの内部まで見なくても理解しやすいと言えるのだろうか・・・?:+1::+1: - そもそも、オブジェクト指向って、それまでの構造化プログラミングの考え方の発展だったんだよね - プログラミング技術ではなく、設計技術なのは勘違いされている部分 - 構造化プログラミングについては、3-5で出てくるゾ!(そこで話そう):+1: - 「オブジェクト指向」は人の数だけあるのかもしれない ### 3-2 - 車の例、ほじくり出しが必要だったら、事故しか起こさない自信あります:+1: - ここで2章の原則が繋がってくるんですね :+1: - ミノ駆動本読書pyで紹介してもらったこの記事を思い出しました:+1: - https://qiita.com/rarafy/items/640907de6ea232abca4b#%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96 - カプセル化を説明する為によく「レジスター」をオブジェクトの事例として出している:+1::+1: - 「境界線」をわかりやすく示すモデルとして満足している ### 3-3 - プラグイン、めっちゃしっくり来たー!:+1: - PythonだとABCでもいいけどProtocolもしっくり来る:+1::+1: - ここ数年、多態性の説明にはIterableを事例に使ってます。 - https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Iterable.html - Javaだけど。Pythonではどうなんだろう?:+1: - ちなみに、C#もJavaと同じ感じの実装になってます! - 最初ポリモーフィズムって聞いた時に良く分からなかったけど、if文を使わずにコードを書けると知った時に「すごい!」って思いました :+1: - クラスの中に「処理モード」みたいなプロパティ作って、処理を分岐させていた10年前の自分に教えてあげたいテクニック ### 3-4 - なんで抽象を使うのかもしっくり。私はずっとHogehogeInterfaceをなんかよさそうだから使いたいくらいの理解度でしたが、具象をあることにできるのか!:+1: - 具象をあることにする抽象の実装はPythonだとABCかなあ。Protocolでもいけるのかなあ?:+1: - ここの最後の挿絵、言い得て妙な気がしたw :+1: :+1: - 裸の王様の話ってオブジェクトだったんだ! - 継承って、類似する処理をまとめるためのものではなくて、違う処理を分ける為のものなんだと考えてる - まだ上手く整理できてないから、うまく言葉になってないなぁ - インターフェースと継承の違いは、初学者がつまづきやすいポイントですね(体験談):+1: - 使い方の違いにこだわる様子も見られる - 逆になぜ継承というものが一括りになって誤認?されているのかの話もあって興味深かったなぁ ### 3-5 - 構造化プログラミングとの違いが整理された〜:+1: - 構造化プログラミングはあまり知らなかった・・・ - 構造化プログラミングは「順次」「分岐」「繰り返し」のことでもあるから、そうと知らずに使ってる部分がある ← シーケンシャルの話でした - 「モジュール化」的な部分(サブルーチンとか、関数への分割とか)は、今は余り意識する必要がない技術だとは思う(by老人会の方から来た男):+1: - パッケージ化 ≒ モジュール化 -