はじめに
断っておきますが、タイトルからも分かるようにポエムです。
「技術的負債」について、一枚の写真をネタに語ってみようという(技術的な?)エッセイ。
あるいは「汚垂石(おだれいし)」という縁の下の力持ち的存在を知って、その存在を楽しんでくれたらこの文章の狙いとしては成功です。
このポエムの主題
- 汚いものや話は嫌ですよね?
- でも避けては通れません
そんな話です
今日の主役=1枚の写真
女性の方は見慣れないかもですが…
男性には身近なトイレの小便用コーナー
この便器の下の特別な床部分を
汚垂石(おだれいし)
といいます!
汚垂石(おだれいし)のこと
その働きとは…!?
といったことになるので
- 対腐食(対アンモニア、対酸)
- 高い硬度(傷のつきにくさ)
- 撥水
- 抗菌、消臭
- 掃除、メンテナンスの良さ
といった用途やコストのバランスから
トイレの床を部分的に別な材質の床材にしているのです。
汚垂石用に特化した素材(結晶化ガラスの汚垂石 パリトーンステップ)なんていうのもあります!
また、大抵、色と小さな段差で意匠・デザイン的に区分けされたエリアを作っています。
これは用を足す人を 一歩前 に誘導して零しにくい位置に誘導するという
アフォーダンス的な副次的効果も狙っているのです。
汚垂石がやっていること
- 問題領域の区分けと閉じ込め
- 適材適所なリソースやソリューションの選択
- コストバランス
- 適切な行動へ誘う誘導
え、これって…!?
技術的負債(Technical debt)のこと
技術的負債とは…
問題のあるコードを借金と見立て、負債や利子の累積や返済に例えた話(ある種のポエム的な…?)から来ています。
「負債とは要するに借金のことですが、システム開発においても技術的な借金、つまり「技術的負債」(Technical debt)がある、という表現がしばしば使われます。お金の借金をすると利子を払い続けなければならないのと同じように、技術的負債を抱えると、そのツケを払い続けなければならなくなる、という比喩です」(「技術的負債」とは何か。原典とその対応策を探るより)
似た用語で「コードの臭い」というのもあります
「技術的負債」(Technical debt)という用語は、WikiWiki の発明者で著名なプログラマとして知られるウォード・カニンガム氏が、1992年に行われた ACM 主催のイベント「OOPSLA '92 」(Object-Oriented Programming, Systems, Languages & Applications) で使ったのが原典とされています。
ただ、カニンガム氏のサイトで公開されている「The WyCash Portfolio Management System」をみると、あくまで始まりとしては「負債」(debt)によるメタファーで語るという形で「技術的負債」という単語にまでは至ってなかったようです。
ソフトウェアは負債化しない?
金銭の負債は返済をしていかないと利子という形で時間とともに具体的に累積していきますが、
電子的存在であるソフトウェアは金銭ではありせんから時間軸とともに負債化しないようにも見えます…
しかし負債化するのです、それは時間軸でみると
- 求められることの変化(速度、量)
- 最適解の変化(知識、考え方、↑との関連)
- 依存環境・ライブラリのアップデートや変化
といった面から逃れられないからです。
主な発生要因と影響
- その場での「やっつけ仕事」
- 細かい変更の積み重ねでの複雑化や混乱
- リソースの制限(時間、労力、知識…)
- テストが無い・足りない
などがありますが、
こうして溜まっていった負債をどこかで返していかないと、
あるいは許容範囲内にコントロールしていかないと、
手痛いコストとして跳ね返ってきます。
ただ、技術的負債は必ずしも悪とは言いきれない、ある種の現実的な妥協・解決策の結果な面があることも否めないです。
特に凍結した環境(=時間軸が影響しにくい)、うまく動いている、役に立っているが正義な視点だけからみれば。
ただ、その凍結した環境を捨てるのではなく、どこかで解凍の時を迎えるものならばやはり技術的負債とは無縁とは言えないと思います。
技術的負債は過去の話ですか?
負債というと既に起こってしまった過去についての話なのでしょうか?
いえ、未来志向でもあります!
- ゼロにはできないのが現実
- ベストは変わる
からです。
将来を見越した話でもあります。
技術的負債はシステム内部の話?
「技術的」負債と言われると、システム内部やコード的な話なのでしょうか?
いえ、外部に様々に影響します!
- 負債が溜まると様々な問題(不具合、修正が困難、セキュリティリスク等)を起こしコスト増
- 新しい要求・変化に答えられなくなる
- チームのやる気が落ちる
「汚れ」は当然という考え方
技術的負債と汚垂石
技術的負債を考慮した立場とは、
- 最初から「汚れ」の発生を見込み対策をしていく
- 汚れやすい場所の見極め
- 縦横での適切な分離と疎結合化(汚染の閉じ込め)
- 掃除をしやすくし、汚れを抑える
- 適切なリソース配分
- 適切な行動へ誘う学習
といったものです。
そう、汚垂石での考え方と通じるわけです!笑
目指すは!?
- 汚れ=負債と共に歩む覚悟
- 汚れを腐敗させず発酵へw
目指すは「綺麗」ではなく「味のある」コードやシステム!?
学びは色々な意匠から!
トイレの汚れ対策への意匠(デザイン)からでも学ぶべきところはあるわけです。
「デザインパターン」だって建築家クリストファー・アレグザンダーの『パターン・ランゲージ』がネタ元ですし…
参考
汚垂石について
- タイルで、トイレの清潔をデザインする。 @ LIXIL
- 結晶化ガラスの汚垂石 パリトーンステップ @ 株式会社ウイング
- 汚垂れ石推進委員会 @ 株式会社ウイング