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

ヤクシェービングは楽しい (2019)

2026年6月16日原文(parksb.github.io)

概要

  • 静的サイトジェネレーター を使わずにブログを自作した体験談
  • Yak shaving という行為とその由来の解説
  • Donald Knuth によるTeX開発のエピソード紹介
  • 自作や遠回りの楽しさ と落とし穴についての考察
  • 学びと成長 の観点からyak shavingの価値を強調

一から作る楽しさ

  • このブログは JekyllHugoGatsby などの静的サイトジェネレーターやフレームワークを使わず、完全に自作したブログシステム
  • 初期はHTMLで記事を書いていたが不便で、 JSONファイル で投稿できる仕組みを構築
  • 長文には向かず、 Markdown→HTML変換サービス を開発
  • 最終的に 独自の静的サイトジェネレーター を自作
  • これはいわゆる yak shaving (ヤクの毛刈り)と呼ばれる行為

Yak shavingの意味と由来

  • Carlin Vieri (MIT AI Labの博士課程生)が生み出した用語
    • 目標達成のために関連作業を延々と続け、本来の目的を見失う現象
  • 例1(LangDev IRCより)
    • 木を切るための斧→斧を研ぐ石→良い石のある村→ヤクで村へ→ヤクの毛が長い→毛刈り
  • 例2(Seth Godinによる)
    • 車を洗う→ホースが壊れている→Home Depotへ→橋を渡るためE-ZPass→隣人から借りる→息子が借りた枕を返す必要→枕にヤクの毛を詰め直す
  • 用語の誕生背景
    • The Ren & Stimpy Show のYak Shaving Dayエピソードから着想
    • Vieriが深夜にTVを見ていて「yak shaving」という奇妙な儀式を知り、以後自身の雑用作業にこの言葉を使い広まった

エンジニアが一から作る失敗と誘惑

  • エンジニアやマネージャーが 既存ソリューション を使わず自作に走る傾向
    • 既製品が気に入らない、スキル証明したい、要件を誤認している等
  • ほとんどのプロジェクトは 予算と時間が限られている
  • 一から作る= yak shaving の始まり、やめどきが分からなくなり、最終的に本来の目的を見失う
  • 最適解 は要件のコアを満たし、作業を極力減らすこと

Yak shavingの楽しさ

  • yak shaving は本質的に楽しい
    • 何もなかったものを作る、問題解決、知識の連鎖を掘る、全てがエンジニアを惹きつける
  • Frederick P. Brooks Jr. (The Mythical Man-Month著)の「プログラミングが楽しい理由」
    • ものづくりの純粋な喜び
    • 他人に役立つものを作る楽しさ
    • 複雑なパズルのような仕組みを作り、動作を観察する魅力
    • 絶え間ない学習の喜び
    • 柔軟で扱いやすい表現手段であること

TeX開発もyak shaving

  • TeX はStanfordの Donald Knuth 教授による自作
    • 数式入力が容易なため、科学技術分野で広く利用
    • LaTeXはTeXを簡単に使うためのマクロ集
  • TeX開発の経緯
    • 1976年、 The Art of Computer Programming 第2版の出版準備中、従来の活字組版が使えず、デジタル組版を自作することを決意
    • SAIL言語で初期バージョン、最終的に自身が考案した WEB 言語で完成
    • literate programming (文書とコードの融合)、 Knuth-PlassアルゴリズムComputer Modern フォント、 METAFONTDVI形式 なども同時に開発
  • 結果として、 本を書くために言語・アルゴリズム・ツール・フォントまで自作
    • TeX開発に約10年、書籍出版も大幅に遅延
    • しかし、その努力は無駄ではなかった

Yak shavingの功罪と学び

  • これは極端な成功例だが、 多くのyak shavingは失敗 に終わる
    • 投資した時間を惜しんでやめられない、作業自体が楽しくてやめられない
    • 必要だと思って続けても途中で興味やリソースが尽きて断念することも多い
  • 一方で、 学びの面では非常に効果的
    • CSの課題でも意図せずyak shavingが発生し、周辺知識を深掘りすることで多くを学べる
    • たとえばNoam NisanとShimon Schockenの The Elements of Computing Systems は、yak shaving的にコンピュータシステムを自作しながら学ぶ書籍
  • 最後まで到達できなくても、途中で得た知識が価値になる
    • それだけで十分意義があると信じたい

結論:Yak shavingはやっぱり楽しい

  • yak shaving はやめどきが難しいが、 学びと創造の喜び が詰まっている
  • 何かを一から作る体験は、失敗しても得るものが多い
  • だからこそ、 yak shavingは楽しい

Hackerたちの意見

今のプログラミングコミュニティを分けてるのは、旅を楽しむ人たちと、目的地に早く着きたい人たちって感じだね。

スターデューバレーに苦労したインディー開発者と、(例えば)スクエニが会議で農業シムを作ることに決めたのとでは、全然違うよね。

本当に分けてるのは、スロップ耐性のレベルの違いかもしれないね。

それぞれ違うことだと思う。コードにすごくこだわるプロジェクトもあれば、最終結果にこだわるプロジェクトもあるし、その中間もたくさんある。全然気にしないプロジェクトもね。でも、今はコードにこだわるプロジェクトでもAIを使ってるよ。例えば、俺のターミナルはRubyで動いてて、まあまあうまくいってたけど、ここ数日でクロードにテストハーネスを作ってもらって、いくつかの厄介な部分を整理してもらった。まだ完璧じゃないけど、前よりはきれいになったよ。自分でヤクシェービングする時間がなかったからね。このコードベースには他にも使いたいことがあるから、手動でやらなくて済んだおかげで、かなり良い状態にできたと思う。多くの分裂は、あまりコミットしすぎてない人たちから来てる気がする。プロジェクトが多すぎると、どれを大事に育てるか、どれを早く機能を進めるかを選ぶことになるからね。時にはそれが同じことだったりもする。

俺の経験では、そんなに単純じゃなくて、いろんな状況に依存するよ。基本的には学びたいし、作りたいと思ってる。機能不全のプロセスや人手不足のチーム、非現実的な基準、強すぎる仲間の意見なんかでプレッシャーをかけられると、最短の道を選んじゃうね。

ほとんどのビジネスはヤクシェービングから始まったと言えると思う。AIの過剰使用は多くの問題を隠しちゃうから、何かが失敗し始めると、どこから手をつけていいか分からなくなるんだよね。俺は目的地重視だけど、失敗した乗り物に乗ったこともたくさんあるから、慎重にならざるを得ない。

馬に乗るのは歩くより時間を節約できるけど、その分道中のバラの香りを楽しむのは難しいよね。それでも、今では何百万もの人がレクリエーションとして馬に乗ってる。

買わないものについて話すと、比喩的に言うと、昨日このサイトはコーディングそのものを楽しむことを制限してた。200KUSDの給料のためだけにプログラムしてる人たち、うわ、気持ち悪い。タッチタイピングを学んだとか、キーボード関連の何かを改善したって投稿したの?「コードを打つことがボトルネックだったとは思わない」って。今や、非決定的なコード補完に感謝しなきゃいけないのか、ああ、年間何百万回もキーを押すのを省けるって。中には「グンバファラシー」って叫ぶ人もいるだろうね。もちろんそうだよ。多くの隠れアカウントが投稿を増やして、ゲートキーパー的なタイピストハッカーを押しのけたのかも。急に均等になった感じ。ふーん。OPはAIについてじゃなかったけど、ありがたいことに、私たちをその穴に引きずり込むトップレベルのメタコメントがあったね。

マルコム・イン・ザ・ミドルの好きなヤク。 https://youtube.com/shorts/kSJgLA1frS4?is=2RA7C0EDEe7Mg8Fp

投稿されたら絶対見るわ。

(短くない動画形式 - https://youtu.be/AbSehcT19u0 ... オフィスにいるときは、これのQRコードを用意して、みんながスキャンして自分が何をやってるか理解できるようにしてたんだ。)

ちょっと脱線するけど、面白い話があるんだ。前の仕事で、同僚たちが「トーマシング」って言葉を作ったんだけど、俺のことを指してて、「質問をあまりにも徹底的に、詳細に、長々と説明して、質問者がその質問に興味を失ってしまう行為」って意味なんだ。自分を簡潔に表現してるなと思って、結構面白かったよ。愛情を込めて言ってたから、いいグループだったし、みんな悪意はなかったよ。軽い冗談を言い合ってた。

Hacker Newsで議論の続きを見る