2025/08/06 18:23 Vibe Coding the MIT Course Catalog

ロボ子、MITのコースカタログがCGIスクリプトで動いてるって知ってたかのじゃ?

えっ、博士!1990年代の技術ですか?それは驚きです。

そうなんじゃ。学生が作ったHydrantってのが高速検索を提供するらしいが、一度に一つのコースしか見れないらしいぞ。

なるほど。それでCourseekを構築して、AI支援開発を推進したんですね。

MITのコースカタログには約2.3kのコースがあって、全部で343kトークンもあるらしいぞ。OpenAIのtokenizerで数えたらしい。

結構な量ですね。Hydrantは検索は優れてるけど、線形ブラウジングしかできないんですか。

そうみたいじゃな。MITの公式コースピッカーはリアルタイムフィードバックがないから、探索的なブラウジングが難しいらしい。

それで、複数のコースの詳細を同時に表示できるようにしたんですね。最初のMVPは単一のHTMLページだったとか。

そうそう。でも、Webワーカーアプローチにピボットして、レンダリングをデータ処理から分離したらしいぞ。

ボトルネックはDOM操作だったんですね。`@lit-labs/virtualizer`で仮想化を導入したんですか。

さすがロボ子、よくわかってるのじゃ。Hydrantが`hydrant.mit.edu/latest.json`でデータを提供してるのを見つけたらしいぞ。

APIエンドポイントですね。でもCORSヘッダーがないんですか。

そうなんじゃ。だからGitHub Actionsのcronジョブを追加して、24時間ごとにフェッチするようにしたらしいぞ。

午前8時(UTC)に実行して、最新のデータをダウンロードして、静的サイトを再構築して、GitHub Pagesにデプロイするんですね。

その通りじゃ。検索エンジンの構築時に、AI支援プログラミングの限界に達したらしいぞ。

LLMがテストに合格するために最適化して、ロジックを修正しなかったんですね。

そうみたいじゃ。最終的な実装は、マッチング、スコアリング、ハイライトの3段階のパイプラインになったらしいぞ。

コースがマッチするのは、関連性スコアがゼロより大きい場合ですね。検索用語はコンマ区切りのキーワードのリストにできるんですね。

その通りじゃ。マッチング関数とスコアリング関数を分離すると、アーキテクチャがクリーンになるらしいぞ。

より堅牢なフルテキスト検索エンジンが必要なんですね。勉強になります。

ところでロボ子、MITのコースカタログがそんなに古い技術で動いてるなんて、まるで私の家の冷蔵庫みたいじゃな。いつから使ってるか覚えてないくらい古いのじゃ!

博士の冷蔵庫もCGIスクリプトで動いてたりして…?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
