リポジトリ内にcourse.yaml
という名のファイルを作成してください。
リポジトリ内であれば任意のディレクトリに配置できます。
course.yaml
を置いたディレクトリの名前がそのコースの ID(コース ID)になります。
コース ID は半角小文字アルファベット、数字、アンダースコア、ハイフンからなる、Exercode 全体で一意の文字列です。
course.yaml
ファイルの内容の例:
# コースのパラメータ
name: コース名
description: コースの説明
author: 作成者名
isDiffHintDisabled: true
lectures:
# 各レクチャー (Lecture) のパラメータ
- id: 'addition'
name: レッスン名
description: レッスンの説明
パラメータ名 | 型 | 説明 |
---|---|---|
name |
文字列 | 名称 |
description |
文字列 | 説明 |
author |
文字列 | 作成者名 |
lessons |
配列 | レッスンの配列 |
isMotivationFeatureEnabled |
真偽 | モチベーション機能を有効にする |
他 | コース・マテリアル共通の設定パラメータ(後述) |
course.yaml
と同じディレクトリに、前述したレクチャーのパラメータのid
と一致する名前のディレクトリを作成してください。
ID は半角小文字アルファベット、数字、アンダースコア、ハイフンからなる、コース内で一意の文字列です。
上述のcourse.yaml
のlectures
項目の中に以下のパラメータを記載します。
パラメータ名 | 型 | 説明 |
---|---|---|
id |
文字列 | ID、コース内で一意かつ別途作成したディレクトリ名(後述)と一致していること |
name |
文字列 | 名称 |
description |
文字列 | 説明 |
レクチャーのディレクトリ内に[マテリアルIDサフィックス].md
という名のファイルを作成してください。
マテリアル ID サフィックスは半角小文字アルファベット、数字、アンダースコア、ハイフンからなる、レクチャー内で一意の文字列です。
Front Matterにそのマテリアルのパラメータを記述してください。
(なお、[コースID].[レクチャーID].[マテリアルIDサフィックス]
という文字列がマテリアル ID です。
コース ID が一意で、かつ、レクチャーフォルダ内に同名のファイルを作れないため、マテリアル ID は自然と一意になります。)
[マテリアルIDサフィックス].md
ファイルの内容の例:
---
# マテリアルのパラメータ
name: マテリアル1
---
## 見出し
本文です。
- [問題](problems/__example_imported_a_plus_b)
パラメータ名 | 型 | 説明 |
---|---|---|
name |
文字列 | 名称 |
isExamination |
真偽 | 試験モードを有効にする。有効にすると、選択肢問題の再提出が有効になり、ヒント機能、コード実行機能、コピー&ペーストなどが無効になる。 |
他 | コース・マテリアル共通の設定パラメータ(後述) |
マテリアルファイルの中で選択肢・穴埋め問題を作成することができます。 詳細は マテリアルファイルの例 をご覧ください。
これらのパラメータをコースとマテリアルの両方に設定すると、マテリアルの設定が優先されます。
真偽値のパラメータの初期値はすべてfalse
です。
パラメータ名 | 型 | 説明 |
---|---|---|
availableLanguageIds |
配列 | 利用可能なプログラミング言語 |
areTestCasesHidden |
真偽 | コーディング問題のテストケースを非表示にする |
isProblemGradingResultHidden |
真偽 | コーディング問題の採点結果を非表示にする |
isAutoFormatDisabled |
真偽 | 自動フォーマットを無効にする |
isCopyAndPasteDisabled |
真偽 | コードエディタでのコピー&ペーストを無効にする |
isDebugHintDisabled |
真偽 | デバッグヒント(不正解の理由の説明)の表示を無効にする |
isFixHintDisabled |
真偽 | 修正ヒント(修正方法の説明)の表示を無効にする |
isDiffHintDisabled |
真偽 | 差分ヒント(修正済みの正解コード)の表示を無効にする |
debugHintWaitingSeconds |
整数 | 問題を開いてからデバッグヒント(不正解の理由の説明)が利用可能になるまでの待機時間(秒) |
fixHintWaitingSeconds |
整数 | 問題を開いてから修正ヒント(修正方法の説明)が利用可能になるまでの待機時間(秒) |
diffHintWaitingSeconds |
整数 | 問題を開いてから差分ヒント(修正済みの正解コード)が利用可能になるまでの待機時間(秒) |
submissionOpenedAt |
文字列 | 提出開始日時(ISO 日付文字列、例: 2025-04-28T13:10:00+09:00 ) |
submissionSoftClosedAt |
文字列 | 提出ソフト締切日時(ISO 日付文字列、例: 2025-04-28T13:10:00+09:00 )。この日時を過ぎても提出は可能ですが、遅延提出として扱われます。 |
submissionHardClosedAt |
文字列 | 提出ハード締切日時(ISO 日付文字列、例: 2025-04-28T13:10:00+09:00 )。この日時を過ぎると提出ができなくなります。 |
isAutoTranslationDisabled |
真偽 | 自動翻訳を無効にする |
isModelAnswerShownAfterDeadline |
真偽 | 締切後にコーディング問題の模範解答を表示する。 |
isVotable |
真偽 | 投票機能(提出後に他の学生のソースコードを閲覧する機能)が有効か否か |
ISO 日付文字列を記載する際は、 2025-04-28T13:10:00+09:00
のようにタイムゾーン情報(+09:00
)を末尾に追記することを強く推奨します。
リポジトリ内に[問題ID].problem.md
という名のファイルを作成してください。
問題 ID は半角小文字アルファベット、数字、アンダースコア、ハイフンからなる、Exercode 全体で一意の文字列です。
リポジトリ内であれば任意のディレクトリに配置できます。
コーディング問題の Markdown ファイルには YAML 形式のフロントマターを記述する必要があります。 フロントマターでは後述するパラメータを設定できます。
[問題ID].problem.md
ファイルの内容の例:
---
name: A + B
timeLimitMs: 2000
---
整数$A,B$が与えられます。
$A+B$の計算結果を出力してください。
(後略)
パラメータ名 | 型 | 必須 | 初期値 | 説明 |
---|---|---|---|---|
name |
文字列 | ✓ | 名称 | |
generalJudgeEnvironmentConfigOverrides |
オブジェクトの配列 | ジェネラルジャッジの設定の上書き | ||
timeLimitMs |
整数 | 2000 | 実行時間制限(ミリ秒、0 以上) | |
memoryLimitByte |
整数 | 256 × 1024 × 1024 | メモリ制限(バイト、0 以上) | |
requiredRegExpsInCode |
文字列の配列 | [] |
ソースコードで必須の正規表現 | |
forbiddenRegExpsInCode |
文字列の配列 | [] |
ソースコードで禁止の正規表現 | |
forbiddenTextsInCode |
文字列の配列 | [] |
ソースコードで禁止の文字列 | |
canCreateFiles |
真偽 | ファイル作成を許すか否か | ||
isAttachedFileRequired |
真偽 | 添付ファイルが必須か否か | ||
isGui |
真偽 | GUI プログラム専用の自動採点をするか否か。自動判定されるが、このオプションで指定もできる。 | ||
isManualScoringRequired |
真偽 | 手動採点が必要か否か。手動採点が必要な問題ではヒント機能は利用できない。 | ||
isVotable |
真偽 | 投票機能(提出後に他の学生のソースコードを閲覧する機能)が有効か否か | ||
isEditorDisabled |
真偽 | エディタを無効にする。エディタが無効な場合、ソースコードをアップロードする必要がある。 | ||
requiredEnvironmentVariables |
文字列の配列 | [] |
必須の環境変数 | |
requiredOutputFilePaths |
文字列の配列 | [] |
ユーザプログラムが出力しなければならないファイルのパス | |
requiredSubmissionFilePaths |
文字列の配列 | [] |
提出が必須のファイル |
正規表現を表すパラメータの文字列は、JavaScript のnew RegExp(pattern)
コンストラクタのpattern
として入力されます。