技術的飛ばし
技術的負債は、時には、或いは短期間なら、悪くない場合も有りましょうけれど、確実に不味いものとして、技術的飛ばしが有ると思います。
「飛ばし」という用語は、どこにも包括的な意味が書いていませんでしたが、
- 複雑なスキームを絡めて
- 訳が分からない様にして、
- 損を先送りにする
と、私は理解しました。
「対象や射」のレベルと「モナド」のレベルの間
「対象や射」のレベルと「モナド」のレベルの間には、「関手」という数学的な対象が有る様ですが、
この辺で、
- 数学的により良い
という見方が出てくる様です。例えば、
- 圏 (数学) (Wikipedia 日本語版) → 圏の大きさ
の欄に、
- 数学における重要な圏の多くは、小さくないとしても、少なくとも局所的に小さい。
という記述が有りますが、「重要な圏」というのは、「数学的により良い」方向だと思います。
どこで「飛ばし」をしているか?
- ソフトウェアを表す圏は、
- 局所的にも小さく無い(大きい)
という可能性が有りますが、それを複雑なスキームを絡めて、
- 局所的に小さいとするなら
と強弁し、いつの間にか、
- 局所的に小さいというのが真である
としてしまうやり方こそが、技術的飛ばしでは無いでしょうか?
その飛ばしと引き換えに、
- ずっと使える自動テストが簡単に作れる
議論が成立してしまうのです。
結果、
- 損を先送りにされ、
- 後の人間が保守不能になる
という、新規開発者からすると夢の様な枠組み(保守担当者にとっての悪夢)になる訳です。
「技術的負債」では善悪に踏み込めない
「技術的負債」は、良い面(さっさと収益を得て、先に繋げる)も有り、非難の対象としづらい面が有ります。
しかし「技術的飛ばし」なら、
- 訳が分からない様にして、
という悪意が前提となり、より純粋に善悪に踏み込めると思います。
結論
これからも「圏論の無駄遣い」でプログラミングが嫌いになる人は存在し続けることでしょう。