Encupsulation
カプセル化
オブジェクト指向プログラミング(OOP)において使われる概念。関連する要素を、中身の隠蔽された新しいまとまりとして定義することをいいます。機能の抽象化のうち、特に基本的で重要な概念のひとつです。 この考におけるカプセル化は、単なるグループ化や共通化と区別されます。Illustratorのスタティックシンボル機能は、グラフィック中に登場する同じ要素をシンボルとして登録し、一元的にアップデートする仕組みです。しかし、配置された個々のシンボルはサイズと位置を除いて同一のものです。カプセル化は単なる要素の使い回しに留まらず、要素のまとまりの実体をカプセル内部に隠蔽した上で、まとまり全体に関する属性や機能をパラメーターとして露出し、インスタンスごとにバリエーションを持たせることを可能にします。
https://scrapbox.io/files/6329d1f5e6c173002396cb27.png
カプセル化によって可能な操作は、例えばこんな具合です:
四角と三角のまとまりからなる「矢印」というコンポーネントがあるとします。矢印には「矢印の長さ」「矢の大きさ」という2つのパラメーターをもたせ、それに応じて四角と三角の大きさと位置が連動するように設定してあります。矢印オブジェクトを使用するときは、異なる長さや矢の大きさをもった矢印を自由に配置することができます。このとき、矢印が実際には四角と三角から出来ていることや、それらが矢印全体のパラメーターに応じて自動的に再配置される仕組みを意識する必要はありません。三角や四角と同様ソフトに元から備わっていたかのように、矢印オブジェクトを自由に使うことができます。
グループ化は要素にまとまりを作り出します。共通化によって、まとまりを再利用することが可能になります。そしてカプセル化によって、ユーザーが変更できる機能や属性をもったまとまりを作り出すことができます。
カプセル化のデザインツール実装といえる例
After Effects - Essential Graphics
本来はPremiereで使えるタイトルテンプレート機能として開発されたようですが、カプセル化機能として利用することができます。
Figma - コンポーネント機能
引用
心理学的に観て、プログラミング言語の強力さは、手元にある(古い)操作から新しい複合操作を定義するということを何度も何度も繰り返して、巨大で複雑な操作を構築できるという能力にあるといえよう。これは生物学的進化の初期段階を思い起こさせる。複雑さや想像作用の上向きらせんの中で、低級分子からより高級な分子が出てきたという進化を考えるとよい。これは、産業革命にも一脈通ずる。初期の単純な機械を使って、より複雑な機械を作る。その機械を使ってまたより複雑な機械を作る。これも複雑さや想像作用の上向きらせんを昇る過程にほかならない。進化においても、産業革命においても、段階を追って、産物は柔軟性と複雑さをマシ、より知能的になり、反面、微妙な虫や故障に対してもろくなってきた。