2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

✨「個人開発」抽象⇄具象という思考パターンとは

Last updated at Posted at 2025-08-21

はじめに

今日はプログラミングの本質について少し考えてみました。

私は、 抽象と具象は、プログラミングに対して最も重要な考え方。 とお思います。

抽象は本質を捉えるための手段であり、具象はそれを具体的に実現するための手段です。

ゲームの例

たとえば、ゲームというのは:

  • プレイヤー
  • ルール
  • データ

で構成されています。

プレイヤー1とプレイヤー2は、ルールに従って戦略を練り、操作を通じてゲーム内のデータを変化させ、場面を進行させていきます。

即ち、すべては次の3要素に還元できます:

主体・行動・状態

🧩主体→変数a
🔧行動→メソッドf
🔄状態→代入’=’

即ち世界は

a=f(a)

(当然これだけじゃないですが、本質の本質がこれと思います)
プログラミングとは、この三つの関係性を設計し、抽象し、具象化していく営みだと私は思います。

抽象と情報量

この話から進みます。今までの話は正しいですが、それ自体には意味がありません。まるで
「人はいずれ死ぬ」
と言うようなものです。そう、抽象化が進めば進むほど情報量はどんどん少なくなっていきます。逆に、具象化は情報量を増やしていきます。

抽象⇄具象の例

具象は、目標を明白する

💻システム機能について

抽象:「このシステムにはログイン機能がある」

具象:「ユーザーはメールアドレスとパスワードでログインできる。さらに二段階認証を設定すれば、ログイン時にスマホアプリへ6桁の確認コードが送られる」

具体化することで、やるべき事と任務を明白にする

🎲カードゲーム開発からの学び

自然に考えれば、カードゲームには プレイヤーカード、そして ルール が必要です。

  • プレイヤーは手札、デッキ、ライフ、これまでに使用したカードといった多くのデータを管理します。
  • カードはコスト、体力、カード名、イラスト、効果などのデータを持ちます。
  • ルールはカードバトルやゲーム内の各種効果処理など含みます。

その中でも、特に面白いのは カード効果 です。ここで私は 5W2H を用いました。

例として「ダメージを与える効果」を挙げてみます。

  • When(いつ):自分のターン中、カードを引いたとき
  • Where(どこで):自分の場にあるとき
  • Who(誰に):エネミーのモンスタ
  • What(何を):ダメージを与える
  • Why(なぜ):カードを自分のデッキから手札に加えたから
  • How(どのように):ランダムに1体選ぶ
  • How many(どのくらい):1ダメージを与える

これを効果文にまとめると:

このカードが自分の場にあるとき、自分のターン中、カードを自分のデッキから手札に加えるたび、ランダムな相手のリーダーか相手のフォロワー1体に1ダメージ。

image.png
リーダー効果のカードなので、“Where”は分かりづらいと思い、表現を変更しました

抽象は、選択肢を増やす

💰支払い処理を例に考える

例えば、こんな処理があります

「金額を入力して、クレジットカードや銀行振込など、指定された支払い方法で決済する」
→ この段階では「どのように支払うか(カード決済なのか、振込なのか)」がプログラムに深く結びついています。

ここで抽象してみます。

「金額と支払い方法を入力すれば、支払いが実行される」
→ これにより、決済手段を変更したいでも、内部のコードは変更不要になります。

さらに抽象してみます。

「入力は整数の int と、int を受け取って void を返す executeメソッド。」
ここまで抽象すると、もはや「支払い」である必要すらありません。

ただし、適用できる範囲はぐっと広がります。

🎮サバイバル建築ゲーム

具体:「木を切る → 木材を得る → 小屋を建てる」

抽象:「資源 → 建築」

一度抽象すると、こう考えられます:
プレイヤーが自分で集める必要はあるのか?
ゲーム自身が資源を収集・生産する仕組みを作れるのではないか?
image.png

🕹️ RPG / アドベンチャー

具体:「モンスターを倒す → 装備がドロップする」

抽象:「挑戦(行動) → 報酬(資源)」

一度抽象すると、こう考えられます:
モンスター討伐に限らず、マップ探索、謎解き、取引、さらには放置でも「資源」を得られる仕組みが考えられる。
image.png

最後

これまでのところ、あくまで一個人の開発者としての拙い私見にすぎません。開発経験はまだ十分ではありませんが、少しでも自分の考えを共有したく書きました。どなたかの助けになれば幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?