@@ -18,6 +18,8 @@ npx prisma dev
1818ルートディレクトリに .env または .env.local という名前のファイルを作成し、以下の内容を記述
1919``` dotenv
2020API_KEY=GeminiAPIキー
21+ OPENROUTER_API_KEY=OpenRouterAPIキー
22+ OPENROUTER_MODEL=foo;bar
2123BETTER_AUTH_URL=http://localhost:3000
2224DATABASE_URL="postgres://... (prisma devの出力)"
2325GOOGLE_CLIENT_ID=
@@ -26,7 +28,9 @@ GITHUB_CLIENT_ID=
2628GITHUB_CLIENT_SECRET=
2729```
2830
29- * ` API_KEY ` はGeminiのAPIキーを作成して設定します。未設定の場合チャットが使えません
31+ * チャット用にGeminiのAPIキーまたはOpenRouterのAPIキーのいずれかが必要です。未設定の場合チャットが使えません
32+ * OpenRouterを使う場合は使用するモデルをセミコロン区切りで ` OPENROUTER_MODEL ` に設定してください (エラー時に2番目以降にフォールバックします)
33+ * 両方設定されている場合はOpenRouterが使われます
3034* ` GITHUB_CLIENT_ID ` ` GITHUB_CLIENT_SECRET ` はGitHub OAuthのクライアントIDとシークレットを設定します。未設定の場合「GitHubでログイン」が使えません。
3135作り方については https://www.better-auth.com/docs/authentication/github を参照
3236* ` GOOGLE_CLIENT_ID ` ` GOOGLE_CLIENT_SECRET ` はGoogle OAuthのクライアントIDとシークレットを設定します。未設定の場合「Googleでログイン」が使えません。
@@ -54,8 +58,10 @@ npm run lint
5458```
5559でコードをチェックします。出てくるwarningやerrorはできるだけ直しましょう。
5660
61+ ### データベースのスキーマ
62+
5763* データベースのスキーマ(./app/schema/hoge.ts)を編集した場合、 ` npx drizzle-kit generate ` でmigrationファイルを作成し、 ` npx drizzle-kit migrate ` でデータベースに反映します。
58- * また、mainにマージする際に本番環境のデータベースにもmigrateをする必要があります
64+ * 本番環境のデータベースのmigrateはmainにpushされた際にGitHub Actionで実行されます
5965* スキーマのファイルを追加した場合は app/lib/drizzle.ts でimportを追加する必要があります(たぶん)
6066* ` npx prisma dev ` で立ち上げたデータベースは ` npx prisma dev ls ` でデータベース名の確認・ ` npx prisma dev rm default ` で削除ができるらしい
6167
@@ -72,6 +78,11 @@ Cloudflare Worker のビルドログとステータス表示が見れますが
7278
7379## ドキュメント
7480
81+ ``` bash
82+ npm run checkDocs
83+ ```
84+ でドキュメントの読み込み時にエラーにならないか確認できます (index.ymlの間違いなど)
85+
7586* ドキュメントはセクション(見出し)ごとにわけ、 public/docs/言語id/ページid/並び替え用連番-セクション名.md に置く。
7687* ページはディレクトリの名前によらず 言語id/index.yml に書かれている順で表示される。
7788* セクションはセクションIDによらずファイル名順で表示される。
@@ -111,6 +122,8 @@ Cloudflare Worker のビルドログとステータス表示が見れますが
111122* REPLのコード例は1セクションに最大1つまで。
112123 * コードエディターとコード実行ブロックはいくつでも置けます。
113124* ページ0以外の各ページの最後はレベル2見出し「この章のまとめ」と、レベル3見出し「練習問題n」を置く
125+ * 編集したドキュメントにローカルの開発環境でアクセスする際は `npx tsx ./scripts/checkDocs.ts --write` でrevisions.ymlを更新してください。チャットを正しく動作させるために必要です。基本的には手動でこのファイルを編集する必要はありません。
126+ * 本番環境ではドキュメントの変更がmainブランチにpushされた際に自動で更新されます。gitのコミットidを参照して更新するため、ローカルで更新したrevisions.ymlはpushしないでください。
114127
115128# ## ベースとなるドキュメントの作り方
116129
@@ -141,18 +154,17 @@ Cloudflare Worker のビルドログとステータス表示が見れますが
141154 - Canvasを使われた場合はやり直す。(Canvasはファイル名付きコードブロックで壊れる)
142155 - 太字がなぜか `**キーワード**` の代わりに `\*\*キーワード\*\*` となっている場合がある。 `\*\*` → `**` の置き換えで対応
143156 - 見出しの前に `-----` (水平線)が入る場合がある。my.code();は水平線の表示に対応しているが、消す方向で統一
144- - `言語名-repl` にはページ内で一意なIDを追加する (例 : ` 言語名-repl:1` )
145157 - REPLの出力部分に書かれたコメントは消えるので修正する
146158 - ダメな例
147159 ` ` ` `
148- ` ` ` js-repl:1
160+ ` ` ` js-repl
149161 > console.log("Hello")
150162 Hello // 文字列を表示する
151163 ` ` `
152164 ````
153165 - 以下のようにすればok
154166 ` ` ` `
155- ` ` ` js-repl:1
167+ ` ` ` js-repl
156168 > console.log("Hello") // 文字列を表示する
157169 Hello
158170
@@ -162,10 +174,11 @@ Cloudflare Worker のビルドログとステータス表示が見れますが
162174 ` ` `
163175 ````
164176 - 練習問題のファイル名は不都合がなければ `practice(章番号)_(問題番号).拡張子` で統一。空でもよいのでファイルコードブロックとexecコードブロックを置く
165- - 1章にはたぶん練習問題要らない。
166177
167178# # markdown仕様
168179
180+ 実行環境の説明は ./packages/runtime/README.md を参照
181+
169182````
170183` ` ` 言語名-repl
171184>>> コマンド
@@ -174,10 +187,7 @@ Cloudflare Worker のビルドログとステータス表示が見れますが
174187````
175188
176189でターミナルを埋め込む。
177- * ターミナル表示部は app/terminal/terminal.tsx
178- * コマンド入力処理は app/terminal/repl.tsx
179- * 各言語の実行環境は app/terminal/言語名/ 内に書く。
180- * 実行結果はSectionContextにも送られ、section.tsxからアクセスできる
190+ * 実行結果はEmbedContextにも送られ、チャットフォームが参照できる
181191
182192````
183193` ` ` 言語名:ファイル名
@@ -186,13 +196,12 @@ Cloudflare Worker のビルドログとステータス表示が見れますが
186196````
187197
188198でテキストエディターを埋め込む。
189- * app/terminal/editor.tsx
190- * editor.tsx内で `import "ace-builds/src-min-noconflict/mode-言語名";` を追加すればその言語に対応した色付けがされる。
199+ * app/terminal/editor.tsx内で `import "ace-builds/src-min-noconflict/mode-言語名";` を追加し、packages/runtime/src/languages.tsにも追加すればその言語に対応した色付けがされる。
191200 * importできる言語の一覧は https://github.com/ajaxorg/ace-builds/tree/master/src-noconflict
192201* 編集した内容は app/terminal/file.tsx のFileContextで管理される。
193202 * 編集中のコードはFileContextに即時送られる
194203 * FileContextが書き換えられたら即時すべてのエディターに反映される
195- * 編集したファイルの一覧はSectionContextにも送られ、section.tsxからアクセスできる
204+ * 編集したファイルの一覧はEmbedContextにも送られ、チャットフォームが参照できる
196205
197206````
198207` ` ` 言語名-readonly:ファイル名
@@ -210,8 +219,7 @@ Cloudflare Worker のビルドログとステータス表示が見れますが
210219
211220で実行ボタンを表示する
212221* 実行ボタンを押した際にFileContextからファイルを読み、実行し、結果を表示する
213- * app/terminal/exec.tsx に各言語ごとの実装を書く (それぞれ app/terminal/言語名/ 内に定義した関数を呼び出す)
214- * 実行結果はSectionContextにも送られ、section.tsxからアクセスできる
222+ * 実行結果はEmbedContextにも送られ、チャットフォームが参照できる
215223
216224
217225# # 技術スタック・ドキュメント・メモ
0 commit comments