言葉と文法|形式名詞を「クラス」として理解する

ハイブリッドラボ

形式名詞

日本語の「形式名詞(こと・もの・ところ・わけ…)」は、意味が希薄で学習者にはつかみにくい存在です。
これをプログラミングの基本概念──「クラス」「インスタンス」「オブジェクト」「メソッド」に例えると、理解がすっきりします。


プログラミングの基礎用語

まず、比喩に使う4つの概念を簡単に説明します。

クラス(Class)

  • 設計図や雛形。
  • どんな性質やふるまいを持つかを定義するが、それ自体はまだ具体物ではない。

インスタンス(Instance)

  • クラスから作られた具体的な実体。
  • 設計図から製品を1つ組み立てたようなもの。

オブジェクト(Object)

  • 実体化された存在を指す総称。
  • 多くの場合「インスタンス」とほぼ同じ意味で使われる。

メソッド(Method)

  • クラスやオブジェクトが持つ「ふるまい」や「処理」。
  • 例:犬クラスが持つ bark() メソッド=「ワンと吠える」

普通名詞「犬」

普通名詞「犬 = dog」は、プログラミングのクラスでは「具象クラス(concrete class)」と呼ばれ、
そのままインスタンス化(製品化)できます。

class Dog {
    void bark() { System.out.println("ワン!"); } // メソッド
}

Dog pochi = new Dog();   // インスタンス生成
pochi.bark();            // メソッド呼び出し
  • Dog = クラス(犬という設計図)
  • pochi = インスタンス/オブジェクト(具体的な犬の1匹)
  • bark() = メソッド(犬が吠えるというふるまい)

形式名詞との対応

一方、形式名詞「こと」は、抽象クラス(abstract class)で、直接インスタンス化できないオブジェクト「枠組み」だけが与えられたものです。

  • 形式名詞(こと・もの) → 抽象(abstract)クラス
  • 動詞や形容詞の内容(走る・考える・不思議だ) → メソッド
  • 「走ること」 → クラスにメソッド「動詞」を渡してオブジェクト化したもの
  • 「そのこと」 → 文脈から得られたデータを「指示詞」として引数に与えてできた具体的オブジェクト

コード風に表すと:

abstract class Koto {
    String action;
    Koto(String a) { action = a; }
}

Koto hashiruKoto = new Koto("走る");        // 「走ること」
Koto sonoKoto    = new Koto("前に述べた事"); // 「そのこと」

[Koto]という昼食クラスに、[a;・・・]というメソッドをわたして Koto → hashiruKotoというインスタン


ポイント

プログラミング比喩を用いると、形式名詞と普通名詞の違いを、その意味の強さ「インスタンス」として理解できる

  • 動詞や形容詞は「メソッド」
  • 両者が結びついて「名詞句(オブジェクト)」として働く

抽象クラスと具象クラスの違い

プログラミング概念特徴日本語での対応点訳での扱い
抽象クラス (abstract class)– 直接インスタンス化できない
– 抽象メソッドを持つ
– サブクラスで実装が必要
形式名詞:「こと」「もの」「ところ」など
例:「走ること」「不思議なもの」
前の語と一体化して区切らない
具象クラス (concrete class)– 直接インスタンス化できる
– メソッドの中身が定義済み
普通名詞:「人」「子」「娘」など
例:「その人」「若い娘」
自立語なので区切る(「その|人は」「若い|娘が」)

点訳の方法(まとめ)

  • 抽象クラス(形式名詞) → 意味が弱く前に修飾要素が必要であり、単独ではオブジェクトになれない
    • 前の語と一体化 → 区切らない。
  • 具象クラス(普通名詞) → 具体的的な意味を持ち、そのままオブジェクトになれる
    • 自立語 → 区切る。