Deep Breath

DIY, 科学, IT, 環境, LIFE

見た目と中身・その2 ~ ダックタイピング

time 2022/11/20

 ”If it walks like a duck and quacks like a duck, it must be a duck.”
「アヒルのように歩きアヒルのように鳴くのなら、それはアヒルに違いない。」「ダックタイピング」というプログラミングスタイルは、この英語の童謡の一節に由来して名付けられた。

 ダックタイピングとは、オブジェクトの型に関係なく、同じインターフェースを持つものを同じように扱うことで、型に縛られない柔軟性を持たせるプログラミングスタイルのことを言う。PythonやRuby、Javascriptなど、動的な型付け言語でよく用いられる。そのオブジェクトがどのクラスに属するかではなく、そのオブジェクトがどのように振舞うかだけに着目する、つまり中身や出自ではなく、オブジェクトの「見た目」に着目するスタイルである。

 静的型付け言語であるJavaには「インターフェース」、C++にも「テンプレート」という、型ではなく振る舞いをまとめるための機構がある。これらは動的型言語のダックタイピングと全く同じではないにせよ、その良いところを言語仕様に取り込んで、プログラミング言語としての幅を広げている。こういった工夫があるので、Pythonのようなとっつきやすくて高機能な言語が隆盛な昨今でも、JavaもC++も、型安全と実行速度のメリットとあいまって、長期間に渡り人気を維持している。

 最近、詐欺師を騙す詐欺師を主人公にしたTVドラマが面白くて、毎週見ている。詐欺師は、さも信用のありそうな別人になりきって、その別人のように歩き、喋ることで相手を騙す。騙すのはもちろん良くないが、見た目と中身が全く異なる人の典型である。プログラミングのダックタイピングは、同じ振舞いをするものをグルーピングすることで、保守性や拡張性を高めている。そのメソッドを呼び出す側から見ると、そのオブジェクトがどんな型かを気にせずに、同じ振舞いをするものを同じように呼び出せるので、ある意味で別の型のアヒル達に騙されているという解釈もできる。

 うまく騙し騙されることで、型の堅苦しさから自由になれて、柔軟な構造を手に入れられる。ダックタイピング、なかなかに奥深い。

2022.11.20.日
写真:アヒル 無料素材より

down

コメントする




自然と人工の間

Toshi's Profile

会社員(製造業・雇用延長)。元SE、元大学非常勤講師、元ロルファー。DIYと散歩とメモが趣味。Moleskineを持ち歩いている。愛知県岡崎市在住。
toshi@ueba.sakura.ne.jp
DIY作品集はこちら