抽象化の話

プログラミングをやっていると「抽象化」と呼ばれる概念がよく出てくる。多くの場合プログラムというのは、個別具体の問題を解決するために書き始められるケースが多い。しかしこの場合、問題解決の対象が狭すぎるため産業的には旨味がない。いわゆるスケールしない製品、といった状態である。

そこでその製品を産業的にもスケール可能な状態にするために、プログラムの抽象度を上げる作業が行われる。もともとAという問題にのみ解決手段を提供していたプログラムを、B・C・Dといった他の問題にも対応するように汎用性を持たせようというわけだ(実際には、A〜Dに対する問題解決手段の方法はプログラムに渡すパラメータによって調整できるように設計されたりする)。プログラミングの世界で言う「ライブラリ」は、まさにプログラミングの一部を抽象化して切り出したものだと言えるし、昨今のビジネスシーンでバズワードとなっている「SaaS」も、従来のベンダー企業がクライアントに対してオーダーメイドで提供していた製品を抽象化して1プロダクトで提供できるように仕立てたソリューションであると言えるだろう。

さて、突然話は変わり、こうしてブログを書いていると私はなんのために、はたまた誰のためにブログを書いているのだろう、と思う場面がある(決して悲観的な意味ではなく、定期的に訪れる素朴な自問自答といった程度である)。毎回その疑問がふと自分の中に湧いてはあまり明確な答えが出る場面はなかったのだが、冒頭の抽象化の話を考えているときにふと気づいたのである。このブログを書く作業がまさに抽象化の訓練なのではないかと。

ブログを書くという行為は筆者がその時期に体験した物事を書いていると思われがちだが、実際にはそうではない。いや、厳密には私の場合はそうではない。特に仕事に関わることを書く場合、あまりに直近のことばかりを書いていると、内容によっては関係者に対してネガティブな印象を持たれてしまう可能性があるためだ。従って、私は書きたいことを文章に起こす前に、個別具体の案件を直接連想しない程度に内容の具体性をぼかす作業を(無意識に)行っている。これこそが、抽象化の訓練なのかもしれないと思った。

もちろん文章の抽象化とプログラミングの抽象化では使う頭もまた違っているかもしれない。ただ、自分の中でブログを書く目的意識が曲がりなりにも1つ見つかったと言うことで。抽象化しながらも、書きたいことの本質がマイルドになりすぎないようするにという塩梅は結構難しいんですよね。日々鍛錬でございます。今後とも何卒よろしくお願い致します。

つぎの日 根尾昂選手の話

ランダムな日

まえの日 興味を発掘する習慣

ランダムな日

loading loading