アウフヘーベンの設計思想

2023年1月25日

プログラミング 哲学

eyecatch アウフヘーベンって、知ってますか?
アウフヘーベン 止揚(しよう、ドイツ語: Aufheben, アウフヘーベン)とは、ドイツの哲学者であるヘーゲルが弁証法の中で提唱した概念。揚棄(ようき)ともいう。 止揚は、「あるものをそのものとしては否定するが、契機として保存し、より高い段階で生かすこと」「矛盾する諸要素を、対立と闘争の過程を通じて発展的に統一すること」という意味を有する。 参考 : https://ja.wikipedia.org/wiki/止揚
実は、ついこの間耳にした言葉だったんですが、 自分の脳ミソで理解できるように解釈すると、「何かの物事の矛盾を追及し続けていくこと」なのではないか・・・と思った。 これ、プログラミングの設計にめちゃくちゃ活かせるやん! と考えて、このアウフヘーベンを使ってプログラミングの設計に活かすとどのようになるかを考えてみました。 ちなみに、ユゲタはこのアウフヘーベンに関して詳しくないので、細かく間違っている箇所などあれば、こっそりご指摘ください。

プログラミング設計に活用できるアウフヘーベン

プログラミングは、古いものよりも新しいものの方がいいという、まるで食べ物の鮮度のように思われる場合が多いが、 たま〜に、古いレガシープログラムが秀逸であるとして、骨董品のような扱い方をされる場合があります。 自分でプログラミングしたソースコードなどは、過去に書いたものは確実にそれよりも未来に書いたものの方がキチンと整理されてるし、構造体なども整っていて、手直しがしやすくなっている場合が多くないですか? なので、リファクタリングという行為は、アウフヘーベンなのではないかと考えてみました。
古いプログラミングコードを、見た目を整えるために、新しく書き直す。 関数やクラスなどの構造を見直し、よりわかりやすく細分化して、再利用しやすい形に作り直す。
そもそもリファクタリングを行っていないソースコードは、年月が経つと不思議と錆びていく感覚が、デジタルなのになんとも実際のモノのような感じが、個人的にたまらなく哲学的で好きです。

リファクタリングってアウフヘーベンなの?

非常に荒っぽい言い方になるかもしれませんが、上記した通り、プログラミングにおけるアウフヘーベンはリファクタリングであると考えてもいいでしょう。 ここで重要な思考は、古くていいモノを残しつつ新しいモノに置き換えていくという事が重要ですよね。 自分以外の人が書いたプログラムソースコードって、外部から呼び出された関数の返り値が同じであればそれでいいと考えられますが、設計としてのその部分は残るわけですね。 内部に残る矛盾をバグとして考えて、それらを改修するという役割も、リファクタリングにはあるかもしれませんが、それはリファクタリングではなく修正作業なので、この点勘違いしないようにしないと行けないポイントです。
リファクタリング (refactoring) とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理することである。また、いくつかのリファクタリング手法の総称としても使われる。ただし、十分に確立された技術とはいえず、また「リファクタリング」という言葉に厳密な定義があるわけではない。 参考 : https://ja.wikipedia.org/wiki/リファクタリング_(プログラミング)
あれ?なんか最後に、「厳密な定義があるわけではない」って書いてある。 ってことは、別に修正をやってもいいかもしれない・・・ こういう気付きも、自己思考におけるアウフヘーベンなのかもしれないかな?

矛盾と向き合う思考

プログラミングは、矛盾する内容だと、確実にバグが発生するという分かりやすいツールでもあります。 でも人は自分の矛盾になかなか気が付かない事が多いので、思考を整理するためにプログラミングしてみるというのも悪くないかもですね。 何かのシステムを作る時に、あっちとこっちとどちらがいいかチームで会議を何時間もするぐらいなら、同じ時間で簡易なモックアップ(評価版)を作って実際に触って見てみるほうがよほど生産性が高くなりますからね。 相手の矛盾をしてきするのがアウフヘーベンと勘違いしてはいけません。 自分の矛盾を追求して、それを改善するまでが、アウフヘーベンですよ。 そんな校長先生のような言葉が頭の中を無限ループしてしまいました。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ