IT企業の営業が初めてPythonを学んでみた話②対決!オブジェクト指向篇
2019-06-10
azblob://2022/11/11/eyecatch/2019-06-10-sales-python-challenge-000.jpeg

こんにちは。M&S 竹中です。
前回はノンテク人間である私がどんなやり方でコーディングを学ぶか、の背景をお話しました。私の使ったPyQというサービスには、学習者のスキルややりたいことに合わせていくつかプリセットのコースが用意されています。私はまず「未経験からのPython文法」というニュービー向けのコースから学習開始。

基礎文法--リスト、for文、if文、辞書、タプル。あ、いけるいけるこれ。なんだコーディングって簡単なんだな!(今思えばフラグでしかない)と思ったのもつかの間、かの概念が私の前に立ちはだかりました。

オブジェクト指向って、何?

はい、出ましたオブジェクト指向。いきなりだとやっぱり難しいですね。そこでPyQの説明文から引用してみましょう。これで理解できるはず。

現代のプログラミングの設計方法論として、最もメジャーなものがオブジェクト指向(Object-Oriented)です。オブジェクト指向においては、クラス(Class)という概念を用いて、それを設計の最小単位にします。変数だけを定義するとか、関数だけを定義することを許容せずに、必ず「クラスXXの変数」「クラスYYの関数」という形で、持ち主を明記するようにしています。

https://pyq.jp/quests/oop_basic_1/

…うん。何だか分かるような分からないような。要するにプログラミングを構成する最小単位を”クラス”と定義するようですね。で、それぞれのクラスの中で変数と関数とを定義できると。ちなみにPythonではクラス名.メソッド名()でクラスメソッドという機能を呼び出せます。あー、クラウド業界で有名なあの会社様はここから来てるのね。とやっと知りました(というのは流石に嘘ですが、ようやく元ネタに触れた、という感覚でいます。)

オブジェクト指向って何がうれしいの??

何とかかんとかオブジェクト指向を理解して次に考えたのがこちらです。じゃあオブジェクト指向って何がうれしいんだっけ?と。
私の別の連載にも書かせて頂いておりますが、所謂レガシーと呼ばれている基幹システムではCOBOLという言語が多く使われていたりします。COBOLは代表的な手続き型言語で要するに「関数で処理内容を集約して、変数とリストでデータ構造を表現するぜ!」ということですね。変数やリストをモジュール化するクラスが存在しませんので。
細かなことは私の手には余りますが、オブジェクト指向の良さとは「大きなプログラムを書く際、人間の認知によって理解しやすい」構造にできるということがメリットのようです。これがつまり保守性や改変性の高さにもつながるということのようです。昔の人はえらいこと考えたもんですね。
更に親クラスから子クラスへ処理を継承させることで、共通処理を括り、より抽象→具体な処理へと構造的に記述することができます。できるらしいのですが私にはまだ無理です。誰か助けてください。

ちなみにPyQではオブジェクト指向の演習として自動販売機の制御プログラムやブラックジャックの作り方が用意されています。CardクラスやOwnerクラス、Dealerクラスなどゲームの役割ごとにクラスを分割して記述することで、どこを直せば所望の処理に近づくか、が分かるようになっています。オブジェクト指向すげぇやと正直思いました。

こうしてなんとかかんとか近代プログラミングのキホンのキを理解していたつもりの私の前にさらなる壁が現れました。

次回、フロントエンド vs. 竹中「③ すごいよWebフレームワーク篇 」
お楽しみに。