クラスとインスタンスの理解が深まった実務での学び
はじめに
この記事では、実務を通じてクラスとインスタンスに対する理解が深まった過程を記述している。Pythonを使ったETL処理の開発において、オブジェクト指向の考え方が業務効率にどれほど貢献するかを再認識した。また、変数やリスト、メンバーとメソッド、セルフ(self)の役割などの基礎概念も取り上げ、クラス設計の重要性とその利便性についても触れている。最後に、コードの理解と基本の大切さ、エンジニアに求められる知識量についても言及している。
クラスとインスタンスの理解が深まった
最近の仕事では、ETL処理のPython化に取り組んでいる。社内の共通テンプレートにPythonを使用しており、オブジェクト指向が活用されている。5年前にRuby on Railsで学び始めたものの、実務で活用したのは最近であり、クラスやインスタンスに対する理解が格段に深まってきた。
データを保持する「変数」とその集合体「リスト」や「辞書」
プログラミングにおいて、変数はデータを一時的に格納する箱のような存在である。データがないとウェブサイトもアプリケーションも動かず、このブログ記事もデータベースに保存されなければ公開されることはない。複数の変数をまとめたものがリストであり、Pythonにはリストの他にも辞書型という形式もある。
データ型とクラスの柔軟性
Pythonには文字列や数値型といったデータ型がある。クラスはこれらのデータ型以上に柔軟で、異なる種類のデータを扱うための設計図として機能する。たとえば、「現在時刻を取得する」という処理も、クラスとメソッドを使うことで可能になる。これにより、他のファイルからもアクセスしやすくなるのである。
クラス内のデータを操作する「メンバー」と「メソッド」
クラス内にはデータや処理のためのメソッドが格納されている。これらは「メンバー」と呼ばれることもあり、クラスは「設計図」とも表現される。たとえば、PythonでExcelを操作できるopenpyxlモジュールの内部には複数のクラスが存在し、その中の変数やメソッドを利用することで、Excel操作が可能になる。
実務でのオブジェクト指向とその便利さ
今の仕事で使っている社内テンプレートも、オブジェクト指向の考え方に基づいて設計されている。この仕組みによって、全ての処理を書き直さずに済み、車輪の再発明を避けることができる。そのためには、Pythonの文法と、クラスや関数の呼び出し方をしっかり理解しておく必要がある。
オブジェクトの中身を理解する重要性
クラスやインスタンス、関数の仕組みを理解していないと、エラーの原因が分からずに立ち往生してしまうこともある。例えば、アニマルクラスに「吠える」というメソッドが定義されていないと、実行時にエラーが発生する。このエラーを回避するには、クラスの内容をしっかり理解することが必要だ。
セルフ(self)という概念
クラスやインスタンスの理解には、セルフ(self)も重要である。これは、そのインスタンス自身を指し、クラス内のメソッドや変数にアクセスするために使われる。VSコードのデバッグ機能を活用すると、セルフの中身も確認でき、初期値設定のコンストラクタ内での役割が見えてきた。
関数はブラックボックス
オブジェクト指向の話から少し離れるが、関数もブラックボックスとして理解が深まった。関数には引数を渡し、戻り値が返されるが、その内部で何が行われているかは外部からは分からない。これが関数の「ブラックボックス」のイメージである。
コードの量と理解の難しさ
シンプルなコードであれば理解しやすいが、関数やクラスの数が増えると、どのクラスにどのメンバーが入っているのかがわかりにくくなる。コードの量が増えれば増えるほど、しっかりとした基本の理解が重要だと感じる。
1行ごとの理解を深める
プログラム全体を把握するためには、各行の意味を理解することが重要である。テックエキスパートでも教わったように、1行1行のコードの意味を理解していないと、意図した通りのプログラムは作れない。これができれば、どんなプログラムも作れるようになるはずだ。
エンジニアの知識量と学習の必要性
しまぶーさんが出していた動画でも語られていたように、エンジニアとして、士業と同じくらいの知識量が求められることも実感している。学びやすいプラットフォームで知識を得た気になっていても、実際の業務に当たってみると、理解が不十分であることに気づかされることがある。だから、断続的に学び続ける必要がある。忘れる数 < 覚える数となればいいだろう。
まとめ
今回の実務を通じて、クラスやインスタンスに関する理解がさらに深まった。PythonによるETL処理の開発において、オブジェクト指向の考え方がどれほど効率的であるかを実感している。変数やリスト、セルフ(self)など、基礎的な概念を見直すことで、クラス設計の便利さを改めて認識することができた。コードを一行一行理解する姿勢が、複雑なプログラムを組み上げるうえで不可欠であり、知識を深める重要性も再確認できた。
コメントを残す