オブジェクト指向は、すぐわからなくて普通です
IT学習者、とくにC#やUnityを学び始めた方が、高確率でぶつかる壁があります。
それが、
オブジェクト指向(Object-Oriented Programming)
です。
私は長年IT業界にいますが、正直に言うと、私自身もこの概念にかなり苦しみました。
電気工学を学び、
システム開発を経験し、
ネットワーク設計や大規模インフラ構築にも携わってきました。
アセンブラ、C言語、COBOL、VBA、Java、C#など、多くの言語にも触れてきました。
それでも――
オブジェクト指向が「腹落ちした」と感じるまで、半年以上かかりました。
今日は、その話を書きます。
「3日わからない」くらいで諦めなくていい
IT学習で、よくこんな声を聞きます。
- 何回聞いても class がわからない
- new が何をしているのかわからない
- インスタンスって何?
- オブジェクト指向に向いてない気がする
でも、まず伝えたいのはこれです。
オブジェクト指向がすぐわからないのは普通です。
むしろ、最初から理解できる人のほうが少数です。
なぜなら、これは単なる文法ではないからです。
オブジェクト指向は「世界の見方」
例えば、手続き型の発想はこうです。
1. プレイヤーを作る
2. 移動させる
3. 敵と当たる
4. ダメージ計算
5. HPを減らす
これは「処理の流れ」を考えています。
順番に追えば理解しやすい。
一方、オブジェクト指向では発想が変わります。
考えるのは、
- Player は何を持つ?
- Enemy は何を持つ?
- ダメージ計算は誰の責任?
- UI更新は誰がやる?
- GameManager はどこまで担当?
つまり、
処理の順番
ではなく
誰が責任を持つか
を考え始めます。
ここが難しい。
私が苦労した理由
今振り返ると、私が苦労した理由は明確です。
私はもともと、
- ハードウェア
- 通信
- ネットワーク
- システム設計
寄りの人間でした。
つまり、昔からこう考える癖がありました。
- 信号はどう流れるか
- パケットはどう届くか
- CPUは何をするか
- この処理はどの順番か
これは「フロー思考」です。
オブジェクト指向は違う。
そこに、
責務分離
という別軸が入ってきます。
つまり、
流れを見る脳(処理順序・制御フローを追う力)
+
役割を分ける脳(どのクラスが何を担当すべきか考える力)
両方が必要になる。
最初は脳が混乱します。
オブジェクト指向理解には段階がある
私は、理解には段階があると思っています。
レベル1:文法だけ知る
class Player {}
書ける。
でも意味は曖昧。
レベル2:使える
Player p = new Player();
インスタンス生成できる。
ただ、まだ本質理解ではない。
レベル3:分割できる
- Player
- Enemy
- Weapon
など、クラス分けができる。
レベル4:設計できる
ここが本物です。
例えばレビューでこう思える。
その処理、GameManagerに持たせるの変では?
ここまで来ると、かなり理解できています。
Unityはさらに難しい
Unity学習者が混乱しやすい理由があります。
Unityは最初から、
- MonoBehaviour
- GameObject
- Transform
- Instantiate
- Component
など、
オブジェクト指向の塊
を使うからです。
だから、こういう現象が起きます。
Unityでゲームは作れる
でも
オブジェクト指向は説明できない
これは珍しくありません。
半年かかっても遅くない
もし今、
- クラスがわからない
- インスタンスがわからない
- オブジェクト指向が難しい
そう感じているなら、安心してください。
私はこう思っています。
- 1週間でわからない → 普通
- 1か月でわからない → 普通
- 半年かかる → かなり普通
- 実務で数年かけて理解 → あるある
実際、現役エンジニアでも、
- God Class(全部入りクラス)
- 密結合
- 責務崩壊
を作る人はいます。
つまり、
オブジェクト指向を知っている
と
オブジェクト指向で設計できる
は別です。
ただし、誤解しないでほしいこと
私が半年かかったのは事実です。
でも、それは
半年間、何もしなくても突然わかった
という意味ではありません。
その間ずっと、
- 自分でコードを書く
- 動かす
- 壊す
- なぜそうなるか考える
- 実務で使う
を繰り返していました。
ここが重要です。
わからない期間が長いこと
と
考えないこと
は、全く違います。
考え続ける人は、遅くても前進します。
でも、
- 丸写し
- AI任せ
- エラーを読まない
- 理解しようとしない
なら、半年経っても1年経っても苦しいままです。
最後に
オブジェクト指向で苦しんでいる人へ。
今わからなくても、大丈夫です。
大事なのは、
わからない状態で考えることをやめないこと。
私は半年以上、霧の中でした。
でも、
- コードを書く
- 読む
- 設計を考える
- 間違える
- また考える
これを続けた結果、ある日つながりました。
オブジェクト指向は暗記ではありません。
ある日、視界が開けるタイプの学習です。
だから焦らなくていい。
ただし――
苦しむのは構いません。
わからなくても構いません。
でも、自分で考えることだけは、やめないでください。
それが、理解への最短ルートです。







ディスカッション
コメント一覧
まだ、コメントがありません