軽量なツールの設計は「何をしないか」から始まる — Yomogi の具体例で考える
2026-04-19
はじめに
自作のドット絵エディタ Yomogi を開発していて、一番時間をかけたのは機能の実装ではありませんでした。「この機能は入れない」と決めることに、もっとも頭を使いました。
レイヤーは何枚にするか。キャンバスの上限はいくつか。タイルサイズは自由入力にするかプリセットにするか。こうした問いに対して「増やさない」「広げない」と決断するたびに、コードは単純になり、UI は分かりやすくなりました。
この記事では、Yomogi で実際に設けた制約を具体例として挙げながら、「制約を決めることも立派な設計である」という考え方を整理します。
軽量ツールの設計では、何を「できるようにするか」よりも何を「できなくするか」が重要です。Yomogi のレイヤー数・キャンバスサイズ・タイルサイズなどの制約を実例に、拡張性を追わない設計のメリットと判断基準をまとめます。
「制約の設計」とは
設計というと「拡張性を担保する」「変更に強い構造にする」という方向がまず思い浮かびます。チーム開発や長期運用のプロダクトでは、その方向が正解になることも多いでしょう。
しかし、個人開発の軽量ツールでは事情が異なります。ユーザーは限られ、開発者は自分一人、スコープは狭い。このような環境で拡張性を追うと、使われない抽象化のためにコードが膨れ上がり、結果として開発もメンテナンスも止まります。
さらに、ユーザ視点に立ってみます。高機能なものは既製品を使う方が良いという場合が多いと思います。私自身、自分のやりたいことに対して、機能が多すぎてわかりづらいと感じることがこれまでも多くありましたから、そのような体験をできる限り減らしたいということも考えています。
以前の記事では、個人開発でオーバーエンジニアリングをした経験を書きました。あの記事は「技術のコスト」を知るという話でした。今回はその逆の視点で、コストを払わないために制約を先に決めるというアプローチについて書きます。



