世界を動かす技術を、日本語で。

良い道具は目に見えない

2026年7月10日原文(gingerbill.org)

概要

  • 優れたツール は本来 「見えない存在」 であるべきという主張
  • ツールの 欠点を「楽しいパズル」として美化 する風潮への批判
  • ツール選択が自己同一化や部族的アイデンティティ になりやすい問題
  • 生産性の錯覚 (「できた気分」と「実際の成果」の違い)の指摘
  • 本当に良いツール とは、使っていることを 意識させないもの であるという結論

ツールの本質は「見えない」こと

  • 理想的なツール は、作業の邪魔をせず 背景に溶け込む存在
  • ツールの欠点 を「パズルゲーム」として楽しむ風潮への違和感
  • vimemacs のようなエディタで、 不便さを楽しむこと を「良さ」として語る傾向
  • Sublime Text を長年愛用する理由は、 ショートカットの一貫性複数カーソル操作 の快適さ、 余計な「パズル」 が少ない点
  • ツールの不便さ を「楽しい」と感じてしまうと、 本質的な生産性 を見失う危険

ツールとアイデンティティ

  • ツール選択 が個人の アイデンティティや部族的シグナル になりやすい現象
  • 「hacker vibe」 のような雰囲気や自己表現の一部としてツールを選ぶ傾向
  • ツールの欠点 を正当化し、 積極的に擁護・誇示 してしまう心理
  • ツールの批判自己否定 に感じられるため、 冷静な議論が難しくなる 問題

生産性の錯覚

  • 難しい問題を解決する過程 で感じる「達成感」が 実際の生産性 と一致しないこと
  • 作業にかかった時間ミスの数 こそが本当の指標
  • 「できた気分」「実際の成果」 を混同しない重要性
  • ツールの使い心地 ではなく 作業効率 で評価する姿勢の重要性

TUIとGUIの議論

  • ターミナルUI(TUI)GUI の優劣論争への指摘
  • 「キーボードだけで操作できないからGUIはダメ」 という意見は、 設計の問題 であり本質的な欠点ではない
  • TUIが優れている のではなく、 現状のGUIが不十分 なだけという視点
  • カテゴリ全体の欠点 を本質的なものと誤解しない注意喚起

Linuxデスクトップ普及の遅れ

  • Linuxデスクトップ が一般化しない理由の一端は、 「設定いじり=楽しみ」 という文化
  • 初期設定やカスタマイズ に多くの時間を費やすことへの疲弊
  • 「良いデフォルト」 の重要性と ツール制作者の責任
  • 高いカスタマイズ性 は「目的」ではなく「必要な時の選択肢」であるべき
  • ユーザーの時間を尊重 する設計思想の大切さ

学習コストを美徳とする危うさ

  • 「学習曲線が急=優れたツール」 という論理への反論
  • 学習コスト は本来「投資」であり、 見返りが生産性 でなければ意味がない
  • 「苦労したから価値がある」 という サンクコストの論理 に注意

結論:本当に良いツールの条件

  • ツール選択そのもの は自由で良い
  • ツールの欠点を美化 したり、 自己表現の一部 にしたりする思考を見直す必要
  • 本当に良いツール は、 使っていることを意識させず 作業に集中できるもの
  • ツールの欠点に目をつぶらず、冷静に評価 する態度の重要性
  • 「ストーリー」ではなく、「忘れてしまうほど自然な使い心地」 こそが最良のツールの証

Hackerたちの意見

長年ターミナルを使ってきたから、みんながそれを理解できないのはあまり驚かないな。議論は大体こんな感じになることが多いよね。— 「ターミナルでは、簡単なコマンドでこんなことができる」 — 「でも、私のFrobnicatorStudioでは、Ctrl+Alt+Soのショートカットがあって、これが永遠に続くんだ」みたいな、あんまり意味のない比較に入っていく。「vimでは、4つのキーを押すだけで24行削除できる」(Sublimeユーザーにはそんなの必要ないし) vs 「Sublimeでは複数のカーソルが使える」(vimユーザーにも必要ないよね)。ここでの正しい議論は、ターミナルが小さなCLIツールをパイプラインに組み合わせることで、無限のユースケースをカバーするけど、確かに学習曲線があって、実際に快適に使えるようになるまでには1年くらいかかるってこと。そこに達したら、平均的なGUIユーザーよりもずっと生産的になれるけど、そのためにはちょっとした献身や苦痛が必要で、みんな無意識にそれをやってることが多い。私の場合、最初の仕事では、顧客のサーバーをsshで管理する必要があって、そのサーバーには最低限のものしかインストールされてなかった(たいていvi、vimじゃない)。だから、この環境で効率的に物事を進める方法を見つけるしかなかったんだ。その経験がなかったら、ターミナルでの作業を始める苦痛を乗り越えられたかどうかわからない。

最近、すべてのIDEが使うのが痛いほど遅くなったので、ターミナルの設定を一新したよ(デバッガーとgitの統合がIntelliJの最後の砦だったけど、nvim-dapとlazygitを学ぶ時間をかけたら、素晴らしいものになった)。AIも、変な設定の落とし穴を理解するのに非常に役立ってる。あと、vimの複数カーソルのYAGNIを確認してくれてありがとう。最初にそれが必要だなんて全然思いつかなかったから。

まさにその通り。GUIツールの非構成可能性と非標準化が、私の主な問題だね。すべての問題を解決するために同じツールキットを使うのは大変だけど、最終的にはもっと効率的だと思う。ただ、これを売り込むのは難しい。コマンドラインツールのシンプルさを理解するのは、そうしたツールを使って解決できなかった問題を解決するまで簡単じゃないからね。

CLIアプリとTUIアプリの違いを考えると、この記事は特に後者について話していると思う。CLIアプリ(コマンドラインに重点を置く)とは、grepやsort、cp、git、ls、tarなどのことを指す。これらは通常、シェルでコマンドを書くことで操作するので、普通に使えるならスクリプトでも使える。つまり、これらをパイプラインに組み合わせることができる。TUIアプリとは、VimやEmacs、Tmux、Lynx、Tig、Midnight Commander、Claude Codeなど、使用中にターミナルを占有するインタラクティブなアプリのことを指す。これらをパイプラインに組み込むことはない。もっと正確に言うと、通常の使い方でパイプラインに使うことはない。使えるとしたら、アプリがTUIに加えてコマンドラインインターフェースを提供することに決めたからだろう。

コマンドラインを使って20年近くになるけど、そのうちの数年はvimをメインエディタとして使ってた。でも、結局Sublimeに移行してからは戻ってない。とはいえ、仕事ではコマンドラインをたくさん使ってる。ビルドやテストを実行する時は、Sublimeの「ビルドシステム」サポートを使う代わりに、いつもkonsoleウィンドウを開いてalt+tabしてる。vimを使うのは、sshが必要な時か、スマホでTermuxを使ってる時だけ。 > ここでの適切な議論は、多分これだと思う:ターミナルは、小さなCLIツールをパイプラインに組み合わせることで無限のユースケースをカバーするし、拡張可能なGUIツール(SublimeやVSCodeなど)も無限のユースケースをカバーするけど、より信頼性が高く再現可能な実行環境を提供してくれる。こういう議論が終わらない理由は、人々が一般的に閉鎖的になりがちだからだと思う。他人の立場に立つのは難しいし、自分が間違っている可能性を考えるのはもっと難しい。でも、結局これが重要なのは初心者だけ。十分な経験を積めば、何を使っても生産性のボトルネックは道具じゃなくなる(edを除いて…)。

開発者チームのためにいくつかの内部ツールを設計してきたけど、全く同感だよ。以前は「内部を見せておく」傾向があって、ユーザーは開発者だからそうした方がいいと思ってた。でも、それは実際にはチームメイトが仕事をするのを妨げるだけだった。チームメイトは、会社が必要とする仕事を達成するために私が作ったツールを使わなきゃいけないし、他では見つけられないような小さなツールをいじりたいわけじゃない。今でも多くの逃げ道は残してるけど、ユーザーが成功するための落とし穴に落ちるような設計を心がけてる。編集: それと、エラーメッセージ、エラーメッセージ、エラーメッセージ、そして一般的なエラーに対する自動提案も大事だね。編集2: 投稿の例にだけ反応して、投稿の精神に触れない人が多いのは…残念だね。

ユーザーが成功の落とし穴に落ちるようにする これ以上付け加えることはないけど、この表現は素晴らしく印象的だと思った。

それはフレーミング次第だと思う。特にスキルを育てる楽しい仕事は、みんなが思ってるよりも価値がある。組織の観点からは、従業員のライフタイムエンゲージメントにおけるパフォーマンスの最高曲線を作ることが目標だし、従業員の観点からはキャリアが重要。これには関わる人たちの関係が大きく影響する。自分の視点から言うと、引越し屋が前日に働いてたら、筋肉が痛くて仕事が遅くなるから、ネットマイナスだと思う。引越し会社から見れば、もっと強くなって次の仕事ができるから良いけど、もしその日に辞めたり解雇されたら、また悪くなる。実際の評価は、マクロとSublimeの編集の違いじゃなくて、マクロを作る思考プロセスが他のことにどう影響するか、そして彼らがその前に何をしていたかだ。自分の経験では、誰もマクロを書いたりVimを学ぶために費やした時間を、実際に意味のある仕事に使うことはない。みんな退屈だったり燃え尽きて、今は楽しいと思える別のことを考えたいからやってる。問題は、従業員がランダムなスクリプトを書くことじゃなくて、彼らが現在のタスクに対して緊急感や関心を持っていないことだ。

ちょっと前に、こんな抽象的なことを考えたんだ。「うちの会社でCloudFrontを使ってる人たちは、実装の詳細なんて気にしてない。とりあえず、いくつかのパスがキャッシュされてればいいんだ」って。これを同僚に説明したら、時間はかかったけど理解してくれた。2ヶ月後、誰かがPRをマージして、俺のインターフェース「このパスとこのパスをキャッシュしてほしい」が、AWSの生のインターフェースをそのまま使うシンプルなパススルーに置き換えられた。同じことがS3バケットにも起こって、ほとんどの人が「X日後に自動でファイルを削除する」っていう機能だけを求めてるのに気づいた。俺は1年かけてマネージャーに「サービスを作る開発者はシンプルなデプロイボタンが欲しい」って説明し続けたけど、結局「インフラをコードとして教える」ことに力を入れた。結果的に、俺たちと関わってくれたのは一人だけで、その人はいつもAI生成のPRを送ってきて、エラーを見つけるとそれをChatGPTにコピペして、返ってきた答えを俺に送ってきた。プロジェクトは最終的に俺の元のアイデアにシフトしたけど、全くデザインもなく、非常に苦痛な方法で進んだ。マネージャーが「Xをサポートする必要はない」と言ったかと思えば、2ヶ月後には「Xのサポートを追加する」というJiraチケットが出てくるんだから。

設定可能性は、ツールがどれだけコアな仕事の機能や役割に重要かに依存すると思う。つまり、彼らや雇用主が価値を置くタスクを直接実行するのを助けるために非常に価値があるか、彼らがあまり価値を置かない問題を取り除くのをどれだけ許すかの違いだ。例えば、Gustoが給与計算や税金、書類の提出を処理してくれる方法が大好きで、基本的にその問題について考えたり、いじったりする必要がないから。でも、給与計算や会計、税金を専門にしている人にとっては、逆に害になることもある。彼らはそれに対抗しなければならないから(あるいは少し厳しく言えば、仕事が簡単すぎるから)。もう一つの大きな問題は、実際にお金を払う決定をするのは誰か、そしてそれが防御的(例えば、監査可能性、セキュリティ、望ましくない行動に対する制約)か創造的な目的に役立つかということ。創造的なものは魅力的だけど、定量化が難しくて、エンドユーザーはそれがどれだけ役立つか、あるいは彼らの役割にどれだけ重要かに対して、それほどお金を払う意欲がない。

道を開けることは重要だ。なぜなら、人々は毎日何十ものツールを使っているから。残念ながら、バランスを取るべきことがまだあって、それは人々に正しいことをさせることだ。正しく何かをすることで妨げられていると感じる人たちが必ずいるから、彼らはそれを時間の無駄だと感じている。

この言葉を思い出すな。「いつも頭を下げて、気を使っている人に気づくことがある。そして、彼はなんて謙虚なんだろう!と思う。でも、本当に謙虚な人は目立たない。世界は彼を知らない。」〜ティト・コリアンダー

Hacker Newsで議論の続きを見る