複雑なシステム開発やビジネス設計において、よく耳にする「抽象化」と「メタ化」という言葉。皆さんは、この2つの違いをクリアに説明できますか? 変化の激しい今の時代、小手先のスキルだけでなく、こうした「本質的な思考力」が改めて求められています。今回は、SNSでも「分かりやすい!」と話題になっていた素敵な記事「 ソフトウェア設計における抽象とメタの違い 」のエッセンスを、実務への活かし方も交えてご紹介します。 抽象化とメタ化は何が違うのか? 元記事では、この2つを以下のように明快に整理しています。 抽象化 : 現実の複雑なものから、目的に合わせて「必要な要素だけを取り出す」こと。 メタ化 : 取り出した要素を、「データについての記述(ルールや型)」として書き出すこと。 元記事で挙げられている「駅の路線図」の例がとても腑に落ちます。 実際の線路のカーブや距離を無視して、乗客の目的に必要な「駅の繋がり」だけを抜き出すのが抽象化。それを「路線名」「駅名」という枠組み(データ構造)として定義するのがメタ化です。 ソフトウェアの世界では、頭の中で「抽象化」した瞬間に、それをコードの型やスキーマとして「メタ化」して記述することが多いため、この2つは混同されがちです。しかし、思考のステップとしては全く別物なのです。 私たちが陥りがちな「間違った抽象化」 特にグサッときたのが、記事の中にあった次の言葉です。 「抽象化が足りない」とは、選択がないという意味ではない。選択が、目的ではなく実装や画面都合によって決まっているという意味である。 私たちも仕事の中で、「とりあえず今の画面で見栄えが良いから」「今のツールで実装しやすいから」という理由でルールを決めてしまうことはないでしょうか。それは「本質的な抽象化」ではなく、単なる「都合に合わせた妥協」になってしまっているかもしれません。 明日からの仕事の質を上げるために この学びを日々の実務に活かすために、これからは以下のステップを意識していきたいと感じました。 まず「目的」に立ち返る : 画面の都合やツールの制限を一度忘れ、「この仕組みの本質的な目的は何か」を突き詰めて抽象化する。 その後に「型」を作る : 抽象化した本質を、ブレないデータやルール(メタ)に落とし込む。 表面的な都合に振り回されず、この「抽象」と「メタ」のサイクルを意識することで...
お風呂の洗面器や椅子にこびりついた、頑固な水垢や石けんカス。これまでは定番のスコッチブライトの「 SWIFT SCRUB 」などでゴシゴシ落としていましたが、面でこするのってけっこう力もいるし、時間もかかるのであります。「もう少しラクに掃除できないものか・・・」と探して出会ったのが、お掃除のプロの間でも話題になっている、錫村商店の「 根岸棒 」であります。 正体は、厚さ2mmのアクリル樹脂製のヘラ。石けんカスが気になる部分に当てて、少しだけ力を入れてスライドさせるだけで、あっという間にザラザラがツルツルに!力を分散させず、ピンポイントで汚れの層を削り落とせるのが本当に気持ちいいです。ちなみに削り取った石けんのカスを残しておくと再付着の原因になるので、最後に洗剤をつけてしっかり洗い流しましょう。 以前ご紹介した無印良品の「 スチール製爪切り 」に引き続き、またしても日常のQOL(生活の質)が爆上がりする隠れた名品に出会ってしまいました。お風呂の水垢や石けんカスがどうしても落ちなくて悩んでいる方は、ぜひ一度試してみてください!