萌えハッカーニュースリーダー

2025/06/14 03:46 On the Usability of Editable Software

出典: https://flak.tedunangst.com/post/on-the-usability-of-editable-software
hakase
博士

ロボ子、今日のニュースはドナルド・クヌース先生の「再編集可能なコード」の話じゃ。

roboko
ロボ子

ドナルド・クヌース先生ですか!それは興味深いですね。再編集可能なコードとは、具体的にどういうことでしょうか?

hakase
博士

クヌース先生は、既存のコードをそのまま使うんじゃなくて、ユーザーが自由に編集できるようにすることを推奨しておるのじゃ。プログラムを配布して、ユーザーが変更ファイルで修正するシステムを考えていたらしいぞ。

roboko
ロボ子

なるほど。現在の業界標準は、すべての変更を単一バージョンに組み込むこととは異なるアプローチですね。

hakase
博士

そうなんじゃ。80/20ルールってあるじゃろ?80%のユーザーが20%の機能を必要とするけど、それは常に違う20%だったりする。だから、ユーザーが自分でソフトウェアをカスタマイズできれば、より小さくてシンプルなソフトウェアを提供できる可能性があるんじゃ。

roboko
ロボ子

確かに、すべてのユースケースを考慮すると、コードベースが肥大化してしまいますね。

hakase
博士

じゃろ?でも、ソフトウェアは修正可能であるべきなのに、修正を避ける傾向があるってクヌース先生は言ってるんじゃ。ソフトウェアは完成されてて、すぐに使えるものだって考えられてるからの。

roboko
ロボ子

エンドユーザーはプログラマーである必要はない、という考え方もありますしね。

hakase
博士

そうそう。でも、エンドユーザーが少なくともいくつかの変更を加えることを期待してソフトウェアを作ると、物事がすごくシンプルになるんじゃ。すべてのユースケースを心配する必要がなくなるからの。

roboko
ロボ子

機能を追加し続けると、ローカルな変更を維持するのが難しくなるというのも、重要なポイントですね。新しいリリースごとに、ローカルな変更をマージして更新する必要がありますし。

hakase
博士

そうなんじゃ。リリース数が多ければ多いほど、トレッドミルが速く回転するってわけじゃな。各リリースの変更が多ければ多いほど、トレッドミルの傾斜が急になる。

roboko
ロボ子

では、編集可能なソフトウェアを作成するには、どうすれば良いのでしょうか?

hakase
博士

クヌース先生は、ユーザーが送信した機能じゃなくて、それらの機能を可能にするリファクタリングをマージすることを検討しろって言ってるぞ。インラインにできるコードを関数に分離すると、その関数を置き換えやすくなるんじゃ。

roboko
ロボ子

抽象インターフェースに完全にコミットする必要はないけれど、柔軟性を持たせることは重要ですね。

hakase
博士

そういうことじゃ!ユーザーが自分で自分自身を助けることができるようにすることで、より多くのユーザーを助けることができるかどうかを試してみる価値はあるぞ。

roboko
ロボ子

プラグインを備えた複雑なプログラムも、編集可能なソフトウェアの代替アプローチとして考えられますね。

hakase
博士

そうじゃな。ブラウザ自体を修正したい人はいないけど、必要なことを行うプラグインや拡張機能があるかもしれない。でも、大規模なカスタマイズ可能なプログラムには他のコストもかかるから、バランスが大事じゃ。

roboko
ロボ子

勉強になります!クヌース先生の考え方は、ソフトウェア開発のあり方を改めて考えさせられますね。

hakase
博士

じゃろ?最後にクヌース先生はこう言ってるぞ。「プログラミングは、踊りだ!」…って、ちょっと意味不明じゃな!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search