Launched
teclub 全世界の人と輪読会のアイコン

teclub 全世界の人と輪読会

技術書のオープン輪読会サービス「teclub」を公開。ISBN検索、Markdownコメント、お気に入り、Cloudflare Workers / D1 / R2 と React Router で実装した個人開発の紹介です。

Visit Product
プロダクトの感想・意見はこのエリアに表示されます
アイキャッチ画像

技術書の輪読会をオンラインで全世界の人と — teclub を作った話

技術書を読んでも、メモは散らばり、疑問は一人で抱えがちです。
「同じ本を読んだ人と、章ごとに語り合える場所」がほしくて teclub を作りました。

MVP として公開中です。著作権を尊重し、書籍本文・図表・サンプルコード・ページ画像の転載は禁止しています。本の代替ではなく、読んだあとの学びを共有する場です。


こんな人向け

  • 技術書を読んでいるが、感想や疑問を置く場所がない
  • 他の人の感想や考えを知りたい
  • 輪読会・読書会に興味はあるが、日程調整や参加者集めが重い
  • 「理解したこと / わからなかったこと / 試したこと」を残したい

teclub でできること

  1. ISBN またはタイトルで技術書を検索して、サイトに追加する
  2. 書籍ページに、理解したこと・疑問・試したことを Markdown で投稿
  3. 自分のコメントを 編集・削除
  4. 他の読者のコメントを読む・いいねする
  5. 本を お気に入り(公開) / ブックマーク(非公開) に入れて見返す

進め方はシンプルです。

  1. 技術書をさがす
  2. 読んでコメントする
  3. 他の読者から学ぶ

一人で読むより、書く前提で読むと積読が減り、理解の穴も見えやすくなります。


技術スタック

領域採用技術
フレームワークReact Router v8(Framework Mode) / React 19 / Vite
言語TypeScript
UITailwind CSS v4 / shadcn/ui / Lucide
ランタイムCloudflare Workers
DBCloudflare D1 + Drizzle ORM
ストレージCloudflare R2(表紙キャッシュ / ユーザーアイコン)
認証Auth.js(@auth/core)+ Drizzle アダプタ(メール+パスワード / Google)
書籍 APIopenBD / 国立国会図書館サーチ / Open Library
バリデーションZod
i18n自前辞書 + URL ロケール接頭辞

フロントも API も Worker 一本に載せています。サーバーレスで完結しつつ、D1・R2・Cache API まで同じプラットフォームで扱えるのが都合よかったです。


こだわったところ

1. 書籍メタデータのフォールバック

和書・洋書どちらも扱いたいので、単一 API には頼っていません。

ISBN で 1 冊を特定するとき

  1. openBD(和書に強い)
  2. Open Library(洋書・不足項目の補完)
  3. 国立国会図書館サーチ(上の 2 つが知らないとき)
  4. 表紙が無い場合はタイトル付きプレースホルダー

タイトル検索は NDL と Open Library を並列で引き、結果を交互に混ぜています。
NDL は和書に強く、Open Library は洋書に強いので、単純連結だと偏るためです。取得した ISBN は openBD で一括補正し、表紙や邦題を整え直します。

ISBN は ISBN-13 に正規化して一意キーにしています。上流障害時は null を返すだけでページ全体は止めず、「見つからない」と「取得できない」を区別して表示します。

NDL / Open Library のパース結果は Workers の Cache API に 24 時間載せています。未キャッシュだと 10〜20 秒かかることもありますが、2 回目以降は上流を叩かずに済みます。検索ページはストリーミングするので、待ち時間中もページ自体はすぐ出ます。

以前は Cookie で言語を切り替えていましたが、それだと全言語が同じ URL を共有し、クローラーが既定言語しか見つけられません。

今は次の方針です。

  • 日本語: /books
  • 英語: /en/books
  • /ja/... はあえて 404(日本語の正規 URL を二重にしない)

辞書は TypeScript の型でキーを揃え、英語側は satisfies Messages で抜けをコンパイル時に検出します。複数形が絡む文言はテンプレート文字列ではなく関数にしています。

おわりに

teclub は、技術書を読んだあとの学びを、無理なく残せる場所を目指しています。
気になる本があれば teclub.dev で検索して、最初のコメントを残してみてください。

サイト:

Explore More
関連記事はありません。
Trends