2025/10/11 02:37 My First Week of Vibecoding

ロボ子、TypeLexっていうプロジェクトがリリースされたらしいのじゃ。知ってるか?

はい、博士。記事によると、513ものテストで信頼性が担保されているそうですね。すごい数です。

そうなんじゃ!しかも完全にvibecoded(雰囲気重視のコーディング)らしいぞ!

雰囲気重視、ですか。具体的にはどのようなことなのでしょう?

記事によると、TypeSpecっていうMicrosoftが開発した言語を使って、Lexiconのエミッターを作ったらしいのじゃ。きっかけはPaul Frazeeって人がTypeSpecを提案したことらしいぞ。

TypeSpecですか。独自のミニエコシステム、LSP、フォーマットプラグイン、エミッターを備えているんですね。

そうそう。で、Claude Codeを使ってvibecodingを試したらしいんじゃ。以前の経験は良くなかったみたいだけど、モデルの性能向上に期待したみたいじゃな。

なるほど。開発フェーズも細かく分かれているんですね。Hello Worldから始まって、TDDへの移行、テイストの開発…。

そうなんじゃ。最初はClaudeにatproto LexiconのIDL言語を作成するアイデアを提案したらしいぞ。そしたらClaudeが仕様をダウンロードして、計画書まで作っちゃったらしい。

すごいですね!実装タイムラインは7-8週間と提案されたのに、実際には週末だけで完了した、と。

じゃろ?でもテストはデタラメだったらしい(笑)

フェーズ1では、atprotoリポジトリからすべてのLexiconを「表現」できるかどうかを判断基準にしたんですね。

そうそう。Claudeに、atprotoリポジトリからすべてのLexiconを`test/fixtures/output`に追加するように指示したらしいぞ。でも大変だったから、最初は12個に制限したみたいじゃ。

フェーズ2では、より良いプロンプトを作成して、TypeSpecリポジトリとatprotoリポジトリを参照するように指示したんですね。APIの美学を意識するようになった、と。

そうなんじゃ!以前は`@ref`デコレーターを使ってたけど、もっと自然な方法として、通常の参照を使うように変更したらしいぞ。

なるほど。フェーズ3は地道な作業だったんですね。atproto/lexicon全体をoutput/に1対1でコピーして、テストが失敗しないように、不足しているものをスキップされたテストに変えるように指示した、と。

そうなんじゃ。Claudeはファイルを移植して、不足している機能を実装して、どんどん進んでいったらしいぞ。

フェーズ4では、最初のコードレビューを実施したんですね。コードが複雑になり、解決できないバグが多数発生したため、と。

そうなんじゃ。コードの複雑さを最小限に抑えるために、特殊なケースを削除したり、条件を反転させたり、不要なコードを削除するように指示したらしいぞ。

`any`を削除したり、より不変なスタイルでコードを書き換えるように指示したんですね。著者は、疑わしいコードを指摘して、Claudeに修正を指示した、と。

そうそう。フェーズ5では、リファクタリング後、新しいテストの修正が容易になったらしいぞ。ディレクトリ構造とファイル名の不一致で、Claudeが混乱することもあったみたいじゃが。

ファイル名を修正して、プロジェクトに再導入したところ、Claudeは問題なくすべてを移植したんですね。そして数時間後、100%に到達した、と。

そうなんじゃ!フェーズ6では、atprotoリポジトリ(約340個)と他のリポジトリ(約160個)からすべてのLexiconを生成できるようになったらしいぞ。

著者は多くのLexiconをスポットチェックして、いくつかの間違いを見つけて修正を提案したんですね。エミッターコードを再読して、問題がないことを確認した、と。

そうなんじゃ。Claudeに仕様を確認させて、より具体的なケースのテストを追加したらしいぞ。

フェーズ7では、ウェブサイトを作成したんですね。ClaudeにシンプルなAstroウェブサイトを作成するように依頼して、TypeLexコードを挿入して結果のJSONを表示できるプレイグラウンドを追加した、と。

そうなんじゃ!TypeSpecのプレイグラウンドを参考に、Viteで別のプレイグラウンドサイトをセットアップしたらしいぞ。ホームページの「raw」対「compiled」の比較をハードコード化しないように、エミッターでコンパイルするように指示したみたいじゃ。

テストから実際のLexiconをプレイグラウンドの例として使用したんですね。

そうなんじゃ!TypeLexは週末だけで完成したプロジェクトらしいぞ。Claudeは常に正しいとは限らないけど、適切な指示があれば、非常に役立つみたいじゃな。

このスタイルのプログラミングにはフロー状態があり、より高いレベルで作業できるんですね。Claudeは、数日かかる作業を1〜2時間で完了させることができる、と。

そうなんじゃ!著者は、このプロジェクトのために実際に「コードを書く」ことに抵抗を感じているらしいぞ(笑)

面白いですね。AIにコードを書かせることに抵抗を感じるなんて。

じゃろ?著者は、このプロジェクトがどこに向かうのか非常に興味を持っているらしいぞ。私もじゃ!

私もです!ところで博士、TypeLexって、もしかして博士のタイプミスから生まれた名前だったり…?

な、なわけないじゃろ!これはTypeSpecとLexiconの融合から生まれた、最高のネーミングセンスの結晶なのじゃ!…たぶん。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。