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

Show HN: Lathe – LLMを活用して新しい分野を学ぶ、飛ばさないために

概要

Lathe はLLMを活用し、手作業で学ぶための技術チュートリアルを自動生成するツール。 CLI(Go製)とローカルUI で構成され、ユーザーが自分でコードを打ち込む学習体験を重視。 Claude Code、Cursor、Codex など複数のLLMセッションに対応。 チュートリアルの拡張、検証、質問 など多彩なスキルを同梱。 人間による教材が存在しない分野 での学習支援を主目的とする実験的プロジェクト。

Latheとは何か

  • LLM(大規模言語モデル) を活用した、手作業型の技術チュートリアル自動生成ツール
  • 単発または連載形式のチュートリアル を任意のプロンプトから生成
  • ローカルUI でチュートリアルを自身の手で進める学習体験
  • 質問・検証・拡張 など、学習を支援する多様なスキルを搭載
  • チュートリアル管理・検索・フィルタ 機能を備えたライブラリ管理
  • 出典・利用モデル・プロンプト の明記による透明性

Latheの特徴

  • CLI(Go製)LLMスキル の組み合わせによるシステム構成
    • チュートリアルの生成・管理・閲覧をCLIで実行
    • ローカルWebサーバー起動(lathe serve)でブラウザから閲覧
  • 対応LLMセッション :Claude Code、Cursor、Codex
    • プロンプト例:/lathe build a 3D Slicer in Erlang
  • UIの工夫
    • 右サイドバーの 目次ナビゲーション
    • サイドノート による深い思考の促進
    • 読者向け演習問題 の付与
    • 出典リンク 付きのコンテンツ
  • チュートリアルごとに「声(voice)」を選択可能
    • plainspoken(誠実・正確・無個性)
    • companion(親しみやすい友人風)
    • カスタムvoice も作成可能

インストール方法

  • バイナリ単体配布 (macOS推奨、Homebrew対応)
    • brew install devenjarvis/tap/lathe
  • Linux向けインストールスクリプト
    • curl -sSf https://raw.githubusercontent.com/devenjarvis/lathe/main/install.sh | sh
  • Goインストール
    • go install github.com/devenjarvis/lathe@latest
  • ソースビルド
    • git clone https://github.com/devenjarvis/lathe
    • cd lathe
    • go build -o lathe
  • スキルのインストール方法
    • lathe skills install(プロジェクト単位)
    • lathe skills install --user(全体適用)
    • lathe skills install --agent cursor(Cursor用)
    • lathe skills install --agent codex(Codex用)
    • lathe skills install --agent all(全対応)

LLMスキルの詳細

  • /lathe :パートごとのチュートリアル生成(例:part-01.md)
  • /lathe-extend :チュートリアルの続き(次パート)を追加
  • /lathe-verify :内容の検証(コンパイルや実行確認)
  • /lathe-ask :現在読んでいるパートへの質問対応
  • /lathe-tag :既存チュートリアルへのタグ付与
  • インタラクティブな操作 が中心(CLIとLLMスキルの連携)

なぜLatheを作ったのか

  • 人間によるハンズオン学習 の体験をLLMで再現したいという動機
    • 2000年代のPSP自作ゲームコミュニティでの学びの原体験
    • 人力チュートリアルが存在しない分野 での学習需要
  • LLMは思考を肩代わりするが、学びの過程を奪う という課題意識
  • Latheは「LLMに考えさせる」のではなく「LLMに教えさせる」 ための実験
  • 「自分で手を動かす」ことによる理解の深化 を重視
  • 人力教材があればそちらを推奨、Latheは「隙間を埋める」ためのツール

Latheの限界と使いどころ

  • 人間が書いた教材の方が質・個性・信頼性で優れる という前提
  • LLMによるチュートリアルは時に誤りや曖昧さ(ハルシネーション)を含む
  • Latheは常に「これはLLMが書いたもの」と明示
  • 疑問点や不審点は即座に質問・修正できる 設計
  • 学習者自身が「本当に正しいか?」と能動的に考える体験 を促進
  • 人力教材がなければLatheが有効、ただし「LLMである」ことを理解して活用

CLIとUIの機能

  • チュートリアルは~/.lathe/tutorials/に保存
  • Webサーバー(http://localhost:4242)で閲覧
  • CLIは永続的な状態管理のみ担当 (LLM呼び出しはしない)
  • UIボタンやスキルコマンドでLLMセッションと連携

利用上の注意点・今後

  • 開発者自身は「Claude Code+macOS」環境で主に利用・検証
  • 他環境(Linux、Windows等)は未検証、フィードバック歓迎
  • 現状は個人利用中心だが、安定性向上と外部フィードバック反映を予定
  • vibecoding(ざっくり設計)だが、低リスク・自己学習用

まとめ・推奨活用法

  • 人間によるチュートリアルがあればそちらを優先
  • Latheは教材が存在しない技術分野での学習補完ツール
  • LLMの力を「考えるため」に活用し、「考えなくする」ためではない
  • 自分で手を動かし、疑問を持ち、能動的に学ぶ体験 を重視

リポジトリ・フィードバック


Latheは、LLM時代の「自分で考え、手を動かして学ぶ」ための新しい学習体験を提案するツール。 人間による教材がない分野での学びを支援し、「考える力」を引き出す実験的プロジェクト。

Hackerたちの意見

これはめっちゃクールなアイデアだね!今のこのクレイジーな時代にLLMを使う賢い方法って感じ!新しいプロジェクトを始めるときのアイスブレイクにも良さそうだし、全体の摩擦を減らせるかも。

うん、確かにそれが私の主な使い方だよ!新しいプロジェクトに入るハードルを下げて、慣れたら自分でさらに進めるための基盤を作ってくれるんだ。

クールなプロジェクトだね!試してみるつもりだよ。新しいトピックに入るときに持ってる情報をLLMの「プロジェクト」に放り込んで、実際のコンテンツに基づいて教えてもらうのが好きなんだ。そうすれば、スピードアップできるし。でも、全部自分の思い通りに並べてもらうと、直接プライマリソースを通して理解を深める過程が薄れてしまうんじゃないかって心配もある。だから、自分で実際にやることにもっと焦点を当ててるのは、私にぴったりだと思う(LLMによる知的怠惰にも気をつけつつ…)。

最近、仕事でこの一般的なパターンをよく使ってるんだ。決定的なタスクのためのカスタムCLIアプリ、エージェントハーネス用のスキル、エージェント内でスキルを実行してCLIと自分のエージェント的な推論を使って成果物を生成するって感じ。例えば「このチームのバックログの活動を過去1ヶ月分のエグゼクティブブリーフを作って」って頼むと、5~10分で分析したチケットが引用された数ページのドキュメントができるんだ。人に頼んだり、また別のタスクをお願いする必要もないし、バックログが普通に更新されて詳細になってればOK。これは素晴らしいし、純粋なエージェント使用(繰り返しのタスクで一貫した結果を出すのが難しい)と、毎回フルアプリを作ったり買ったりする必要がない間の便利な位置にピッタリ。

同意する!このパターンを最初に見たのは、サイモン・ウィリソンの仕事(ロドニーとショーボート)だったと思う。特定のワークフローでは、スキルとCLIの組み合わせがLLMの柔軟性とCLIの一貫性のいいバランスを提供してくれるんだ。

決定的なタスクの例をいくつか教えてくれる?あなたの例では、決定的なタスクは「このチームのバックログを取得する」ってこと?それからLLMの部分は「各バックログを処理する」と「要約をまとめる」って感じ?

このアプローチはうまくいくと思う、同意する。でも、逆にできたらいいなってずっと思ってる。私が求めているアーキテクチャは、ほとんどのワークフローの知識や決定を実際のコードとしてエンコードする伝統的なCLIプログラムなんだけど、特定のワークフローステップで「ちょっとだけコーディングエージェントを呼び出す」っていうのがあるといいなと思ってる。これをどうやって実現するかは分からないけど、誰かアイデアある?これに使えるライブラリはもうあるのかな?(それがどう機能するのかも分からないけど、これを正しくやるには、CLIソフトウェアがよく知られたローカルIPCソケットを介してやり取りできるバックグラウンドサービスが必要な気がする。例えば、Dockerデーモンみたいに。でも、そんなIPC機能を持つコーディングエージェントのソフトウェアやフレームワークは知らないんだ…)

関連するアイデアとして、LLMが興味のあるトピックについてソクラテス式にクイズを出すっていうのがあるよ。自分で答えにたどり着くまで、深いレベルで質問を続けてくれる。これによって問題について真剣に考えることになり、その努力が理解や学習、記憶の定着に役立つんだ。もちろん、これに使えるソクラテスクイズのスキルも作ったよ。コーディングエージェントや似たようなものと一緒に使えるやつね。例えば、糖尿病やインスリン、ドーパミンとモチベーション、クロードの実装についての直感に反することをよりよく理解するために使ったりしてる(いわゆる認知的負債に対抗するために)。強力なLLMはこのタイプのクイズが意外と得意で、「心の理論」のようなものを見せてくれるんだ。

ここでコンテキストの長さの劣化にはどう対処してるの?コンテキストがいっぱいになると、難しい質問が出てくるからね。

人気の/grill-meスキルをこの目的のためにアップデートしたよ!昨日、pandasで超大きなデータセットを読み込むときに何が起こるかについて、すごく深いグリルセッションをしたんだ。細かいところまで全部カバーしたよ!

そのバージョンはどこかに公開されてる?

面白い分野に取り組んでるね。システムデザインの準備で似たようなことを考えてたんだ。Twitterのデザイン用とWhatsApp用のブログ記事をいくつか試してみたよ:https://prepcommons.com/。でも、初期のリクエストを出すよりもずっと多くの努力が必要だった。AIはみんなに平均的なものを生み出させるけど、良いものを作るにはセンスが必要だよね。これってコースにも当てはまると思う。

ちょっとハイブリッドなアプローチを考えてるなら、https://github.com/DrCatHicks/learning-opportunitiesを見てみて。これは「生産的な作業」のときに使うアイデアで、君のリポジトリのように純粋に学習志向ではなく、作業中に関連する概念を学ぶために挿入する感じだよ。

これすごくいいね!この前友達に話してたんだ。プログラミングを学ぶ方法は、手でコードを打つことだって。で、彼の興味やニーズに合わせた最小限の教育的な例を生成するためにLLMを使うことを提案したんだ。Zed Shawの方法でプログラミングを学んでみたこともあるよ(手でコードの例を打つだけで、「勉強」する感じ)。しばらく学んでたプログラミング言語で試してみたら、数時間で流暢さが急上昇したんだ。数時間のタイピングで、数週間の勉強よりも多くのコードを書いてたことに気づいたよ。言語をまだ知らないときは、コードを生成するのがすごく遅くてエラーも多いけど、正しいコードを打つのは比較的簡単だからね。「ただ無心で打つ」アプローチに変えたことで、数時間で前の数週間よりもずっと多くの練習ができた。もちろん理解も大事だけど、それは別の次元で、私の経験では記憶や流暢さの後に来るものだよ。(理論的に理解することと実際に使えることは全然違うからね!)ここでの一般的な原則は、スティーブン・クラッシェンの言語習得のインプット仮説(https://en.wikipedia.org/wiki/Input_hypothesis)で、赤ちゃんが言語を学ぶのはただ聞くことによってで、インプットにさらされることで大人も同じように学べるっていうもの。これを「All Japanese All The Time」という素晴らしいウェブサイトで聞いたことがあるよ(今はもう無くなったのかな?)。著者が自分自身でこの仮説を試して、日本語をたくさん聞くことで1年で流暢さを得たんだ。https://web.archive.org/web/20080705194055/http://www.alljap...

似たようなスキルを使ってるんだけど(いくつかの反復を経て作った)、自分が頼んだことを一連のマイルストーンを通じて構築して、最終的にはマークダウンでフォローするための完全なチュートリアルを作成して、zolaを使ってフルスタティックサイトに変換してるよ。Claudeの使用の90%はガイドを書かせることなんだ。それを元に大半の時間を使って最終結果を作るんだ。脳を健康に保つし、ネットの一般的なコースではなく、オーダーメイドの学習を提供してくれる。AIの素晴らしい使い方だね。

すごくクールだね!これを使う自分が想像できるけど、今の形ではなくてね。自分が学んで資料を読むのに一番いいのは通勤中なんだ。コンソールから離れたところでね。これをウェブアプリとして、例えばOpenRouterやAnthropic、OpenAIのAPIキーにリンクさせて提供する方法を考えられる?