Udemyで『Python でわかる オブジェクト指向 とはなにか?【Python オブジェクト指向 の「なぜ?」を「徹底的に」解説』という講座を受講したのでそのレビューです。
Pythonは様々な分野で注目されているプログラム言語です。AI分野ではもちろんのこと、3DCGソフトのスクリプトとしても使用されています。
幸いにもすっきりとした文法で、学習しやすいプログラム言語です(Macでの環境構築などは大変ですが…)。
しかし、文法がわかるようになっても、いざ自分で何かをつくろうとすると何をしてよいか分からずに手が止まってしまいます。その原因のひとつがオブジェクト指向プログラミング(OOP)です。
私はプログラマでもエンジニアでもないのでPythonについてもオブジェクト指向プログラミング(OOP)についてよくわかりません。しかし、プログラミング言語の歴史と本質から学ぶこの講座では「どうしてオブジェクト指向プログラミングが必要なのか?」という問いに「グローバル変数を使わないようにするため」という明快な回答を示してくれました。この一言だけで溜飲を下げた人も多いのではないでしょうか。私もその一人です。
どのような講座か?
Pythonでオブジェクト指向プログラミング(OOP)について学ぶ講座です。
高度な内容ではなく、Pythonでオブジェクト指向プログラミング(OOP)を学ぶために一番最初に学ぶべきこと(歴史と本質)を学ぶ講座です。歴史的にどうしてオブジェクト指向プログラミング(OOP)といったものが必要になったのかがわかります。応えは「グローバル変数を使わないようにするため」です。
かつて私がクラスの概念を学んでいたときに例として「マリオ」と「ルイージ」の話を聞いたことがあります。
「「マリオ」というクラスを継承して「ルイージ」というクラスを作られる。」と。
「マリオ」のジャンプというメソッド(Aボタンを押すとジャンプする)を「ルイージ」のほうでオーバーライドして「マリオ」よりも高く飛べるようにする。また、走るというメソッド(Bボタンを押しながら左右)を「ルイージ」ではすぐには止まれないで滑るようにオーバーライドする。そして、キノコを取ったら大きくなるというメソッドや、スターを取ったら無敵になるというメソッドは再利用します。みたいな話です(もちろん見た目も赤から緑にオーバーライドします)。
非常にわかりやすく概念を理解できる話として今でも覚えていますが、この話を聞いたからと言って当然ながらクラスを自分で使えるようにはなりませんでした。
私のようにこの程度のオブジェクト指向プログラミング(OOP)への理解しかない人に向けての講座だと考えて良いでしょう。
おすすめするポイント
こういう人にはおすすめです。
- オブジェクト指向を学ぼうとしたけれど難しくて挫折した人。
- 概念はなんとなくわかるけれども使い方がわからない人。また、メリットもわからない人。
- init()、add()、__pとかをよく見かける(それどころか使うことさえある)けれども実はよくわかっていない人。
- 引数の参照渡しと値渡しについて理解していない人。
- モジュールとフレームワークの違いついて実はよくわかっていない人。
- オブジェクト指向プログラミング(OOP)についての基本を理解したら次は何を学べばよいのか知りたい人。
- Pythonの学習をしているが、壁にぶつかっている(伸び悩んでいる)人。それはオブジェクト指向がわからないから(?)かも。
この講座ではオブジェクト指向プログラミング(OOP)が生まれた歴史から、なぜオブジェクト指向プログラミング(OOP)が必要なのかがわかるようになります。
その中の一つを紹介するとグローバル変数を使わないようにするためです。
この記事を読んでいる人もなにかとグローバル変数は使わないほうが良いということはどこかで聞いたことがあるでしょう。実はそのような話はこういうところにつながっていたのです。
あと、呪文のような「__init__()」というものを見たことがあるかと思います。これの謎が私はこの講座で解けました。
そして、「Pythonはすべてがオブジェクト」という話も、今まではなんとなく「こういうふうに使うものだ」と覚えていたことが「なるほど」と腑に落ちるようになりました。よくあるパターンが「文法は学んだけれど、いざ自分で何かを作ろうとするとどうしていいかわからない」といったことです。私もまさにこのパターンでその原因のひとつが「オブジェクト指向がよくわかっていないから」といった場合にはまさにこの講座は、あなたのための講座です。
という具合に今までなんとなくそういうものだと覚えていたことの理由(原因)がわかり、Pythonに対する理解が一段階深まりました。
おすすめできない点
こういう人の期待には答えられません。
- プログラム(Python)を全く知らない人(プログラムの完全初心者)。
- Pythonはよく知らないけれどC++などでオブジェクト指向プログラミング(OOP)について理解している人。
- この講座でPythonとオブジェクト指向プログラミング(OOP)のすべてがわかると誤解している人。
プログラム(Python)についての完全初心者はいきなりこの(オブジェクト指向プログラミング(OOP)というよくわからない言葉)の講座を申し込むことはないと思いますが一応注意喚起しておきます。
あとは、オブジェクト指向プログラミング(OOP)についてC++などの他の言語で理解しているが、Pythonではどうなっているのかを知りたいと思っている人はわざわざこの講座を受けなくても良いかと思います。それほどの実力があるならばちょっと調べればわかると思われるので…。
当然のことながら2.5時間のこの講座でオブジェクト指向プログラミング(OOP)のすべてを理解できるわけがありませんし、そのような内容でもありません。オブジェクト指向プログラミング(OOP)をこれから学ぶにあたっての導入の講座です。本格的に学ぶにはこの後にデザインパターンなどを学ばなければなりません。
私は本業がプログラマやエンジニアではないために「デザインパターンまではいいかな」と思っています。それでも私はこの講座を受けてよかったと思っています。本業でプログラマやエンジニアを目指される方にとっては私以上に有益でしょう。
まとめ
- なぜオブジェクト指向が必要なのかがわかる
- よく分からずに放置していた問題がわかってすっきりする
- 内容がピンポイントなので刺さる人は限られている
刺さる人にはピンポイントで刺さる講座です。
そして次はなにを学ぶべきか?
までフォローしています。
この記事を読んで自分には刺さりそうだと思ったならば受講を検討してみてはいかがでしょうか。
私としては「長年喉に引っかかっていた魚の骨が取れた」ような気分で受講してよかったと思いました。
本業がプログラマやエンジニアの方にはもはや当たり前のことなのかもしれませんが、私のような門外漢には非常に勉強になる講座でした。
Pythonでのオブジェクト指向プログラミング(OOP)の基本を学ぶこの講座の2.5時間は、丁度よい長さです。復習する場合にもどの部分をやればよいのかすぐにわかります。
今後Pythonを学ぶにあたってオブジェクト指向プログラミング(OOP)の基礎がわかっているのといないのとでは雲泥の差があるはずです。そう考えるとこの講座の2.5時間に投資する価値は十分にあります。
Python でわかる オブジェクト指向 とはなにか?【Python オブジェクト指向 の「なぜ?」を「徹底的に」解説】このようにudemyなどで学んだよかったと思うことを今後も紹介していきたいと思います。
コメント