構成

クライアント

  • WebReact 19 / TypeScript / Vite / Tailwind CSS

サーバー

  • APIGo(標準の net/http)
  • 取り込みバッチGo(CLI)

データ

  • DBMySQL 8.4(ngram 全文検索)
  • マイグレーションgolang-migrate

技術的なポイント

  • 冪等な取り込み — 何度実行しても結果は同じです。古いデータは、全件の取り込みが成功したときにだけ削除します。途中で失敗しても、データは消えません。
  • API の制限への対応
    • トークンバケットで、リクエストの速度を制限しています。
    • 制限されたときは Retry-After に従い、サーバーエラーのときは間隔を延ばしながらやり直します(指数バックオフ)。
    • 外部 API のページ数の上限を超えるときは、期間で分けて取り直します。
  • 日本語の全文検索 — MySQL の ngram 全文検索でフレーズを探します。1 文字だけの検索は LIKE に切り替えます。SQL を組み立てる処理は純関数に切り出して、単体テストしています。
実績一覧へ

Contact

開発のご相談・お見積りは、
お気軽にどうぞ。