
この記事の目的
クロスワードWebに使ったソースコードを公開します。ファイルを開いたときだけコードを読み込みます。
使用したツール
- Next.js 15、React 19、TypeScript: 待合室、ゲームルーム、API
- node:sqlite: 盤と入力の記録の保存
- Ollama の gemma4: 盤の設計と問題の作成。OpenAI 互換 API で呼ぶので、別のモデルに替えられます。
- Google ニュースの RSS、韓国語版ウィキペディアの API: 時事の見出しとランダムな単語
- OpenSubtitles の韓国語頻度順位: 単語の等級
フォルダ構成
- lib/puzzle.ts: 難易度の設定、盤を問題リストに変える処理、基準の検査
- lib/gridFill.ts: 盤の検証・補正、あらかじめ描いた盤、単語の埋め込み、単語連結型の配置器
- lib/dynamicBank.ts: AIによる盤の設計、AIによる問題作成、ニュース・ウィキの単語
- lib/words.ts、freqRanks.ts: 単語バンクと頻度順位
- lib/db.ts: 記録DB、途中保存、空の盤の整理
- app/page.tsx、app/play/page.tsx: 待合室とゲームルーム
- app/api: 新しい盤、記録の保存・一覧・続きから解く API
- components/CrosswordBoard.tsx: 盤の描画
- scripts/text-agent.ts、ai-pipeline-test.ts: 生成器とAIの過程を文字でテストするツール
実行するときは .env.local.example を .env.local にコピーして、モデルのアドレスを入れます。モデルがなければ、単語バンクとウィキの単語だけで盤を作ります。記録DB、広告・デプロイのスクリプト、サーバーの監視プログラムは載せていません。
全ソース
32ファイル · 6,788行 — フォルダを開いてファイルを押すとコードを読み込みます。
プロジェクトルート
.env.local.example
コードを読み込んでいます…
next.config.ts
コードを読み込んでいます…
package.json
コードを読み込んでいます…
tsconfig.json
コードを読み込んでいます…
app/
app/api/game/[code]/move/route.ts
コードを読み込んでいます…
app/api/game/[code]/route.ts
コードを読み込んでいます…
app/api/game/abandon/route.ts
コードを読み込んでいます…
app/api/game/list/route.ts
コードを読み込んでいます…
app/api/game/route.ts
コードを読み込んでいます…
app/api/puzzle/route.ts
コードを読み込んでいます…
app/globals.css
コードを読み込んでいます…
app/layout.tsx
コードを読み込んでいます…
app/page.module.css
コードを読み込んでいます…
app/page.tsx
コードを読み込んでいます…
app/play/page.tsx
コードを読み込んでいます…
app/play/play.module.css
コードを読み込んでいます…
components/
components/CrosswordBoard.module.css
コードを読み込んでいます…
components/CrosswordBoard.tsx
コードを読み込んでいます…
lib/
lib/db.ts
コードを読み込んでいます…
lib/dynamicBank.ts
コードを読み込んでいます…
lib/freqRanks.ts
コードを読み込んでいます…
lib/gameTypes.ts
コードを読み込んでいます…
lib/gridFill.ts
コードを読み込んでいます…
lib/guest.ts
コードを読み込んでいます…
lib/puzzle.ts
コードを読み込んでいます…
lib/recentWords.ts
コードを読み込んでいます…
lib/services.ts
コードを読み込んでいます…
lib/words.ts
コードを読み込んでいます…
scripts/
scripts/ai-pipeline-test.ts
コードを読み込んでいます…
scripts/dev-with-ts.mjs
コードを読み込んでいます…
scripts/text-agent.ts
コードを読み込んでいます…
types/
types/node-sqlite.d.ts
コードを読み込んでいます…
COMMENTS · CHAPTER 04
全ソースコードと使用したツール コメント 0
まだコメントはありません。気になった点や補足があれば残してください。
コメントを登録するには、Googleで始めてニックネームとメールアドレスを登録してください。
Googleで始める