🎧 関数型とオブジェクト指向のちがいが、やっと少しわかってきた話

更新日時: 2025/10/28

最近、言語を勉強していて「関数型」と「オブジェクト指向」っていう言葉に出会いました。正直、最初は「なんか難しそうだな……」くらいの印象で、どっちも同じように見えて、何が違うのか全然わかりませんでした。

でも少しずつコードを書いていくうちに、これはただの“書き方の違い”じゃなくて、
「世界をどう見るか」っていう考え方の違いなんだなと感じるようになりました。

🧩 オブジェクト指向は、「世界をまるごと写す」感じです

オブジェクト指向は、現実にある“もの”をそのままプログラムの中に作る考え方です。たとえば「人」というクラスを作って、その中に「名前」や「年齢」を入れて、「話す」や「歩く」といった動作(メソッド)を書きます。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"こんにちは、{self.name}です!")

p1 = Person("りたるだんど", 17)
p1.greet()

Person は設計図みたいなもので、p1 はその設計図から作った“人”です。コードなのに、ちゃんと「僕」という存在を作れるのがなんか面白いんですよね。

🧮 関数型は、「処理を積み重ねる」感じです

関数型はもっとシンプルで、「入力→処理→出力」という流れを淡々と積み上げていく考え方です。

def greet(name):
    print(f"こんにちは、{name}です!")

greet("りたるだんど")

これも同じように動くけど、“世界”というより“計算”のイメージに近い感じがします。余計な情報がなくて、データを渡したら結果が返ってくるだけ。すごくクールで整った世界観だなって思いました。

💭 なんで混乱したのかを考えてみたら

僕が最初に言語を始めたのは、HTMLとCSSでした。HTMLは「構造」、CSSは「見た目」。この2つがはっきり分かれているのが当たり前だと思っていました。

でもPython等では、構造(クラス)と動作(関数)が同じ場所に書かれていて、それが最初はどうしても頭の中で整理できなかったんです。

まあ、HTMLのタグの中にスタイルは書くことができるんですが、、それはまあ置いといて、、

⚙️ C言語は関数型寄りだけど、ちょっと違う

調べてみたら、C言語は「関数型」に近いけれど、正確には「命令型+関数型」という考え方らしいです。main関数から始まって、上から順に命令を実行していく。だから“手で組み上げる”感じが強くて、なんだか「設計図を書く職人」っぽい雰囲気があります。

🌊 僕なりの今の結論

関数型は、論理的で淡々としている。オブジェクト指向は、世界をそのまま描ける

どっちも良さがあって、どっちもむずかしいです。たぶん、どんなふうに世界を見たいかで変わるんだと思います。

僕はまだ初心者なので、「これは関数型?オブジェクト指向?」っていちいち迷ってます。でも、そうやって混乱しながら少しずつ形が見えてくるのが、ちょっと楽しいなって思えてきました。

🎨 おわりに

プログラムって、ただ動かすだけじゃなくて、「どう設計して、どう表現するか」の世界なんだなと思います。

関数型でもオブジェクト指向でも、どっちも自分の考え方や感性がそのまま出るものなんですね。

今日も、コードと音楽のあいだで悩みながら、少しずつ理解していこうと思います。