トラックは、さまざまな要素から成り立っています。
トラックの設定とメタデータは、config.jsonファイルで定義します。ここには、トラックの演習、概念、エディターの設定など、さまざまな情報が記述されています。詳しくは、config.jsonのドキュメントを参照してください。
トラックの概念演習と練習演習は、すべて_概念_を扱います。これらの概念は、それぞれが独立した存在です。詳しくは、ドキュメントを参照してください。
トラックの概念演習で教える概念は、_シラバス_を構成します。_シラバス_は、_概念マップ_として学習者に表示されます。_シラバス_の概念マップをどのように構築するかについては、_概念マップ_のドキュメントを参照してください。
シラバスの設計方法について詳しくは、シラバスのドキュメントを参照してください。
トラックには、次の2種類の演習があります。
各演習には、任意で「さらに深く掘り下げる」セクションを設けることができ、そこには次の内容を含められます。
なかには、個々の演習に固有のものではなく、_すべて_の演習に共通して適用されるファイルもあります。詳しくは、ドキュメントを参照してください。
各トラックには、必須のドキュメントファイルがいくつかあります。詳しくは、ドキュメントを参照してください。
トラックの一部の要素は、ウィジェットとして表示できます。
すべてのドキュメントは、スタイルガイドに従う必要があります。Markdownドキュメントは、Markdown標準にも従う必要があります。
csharp ├── config | ├── exercise_readme.go.tmpl | └── maintainers.json ├── docs | ├── ABOUT.md | ├── INSTALLATION.md | ├── LEARNING.md | ├── RESOURCES.md | └── TESTS.md ├── concepts | └── numbers | ├── about.md | ├── introduction.md | └── links.json └── exercises | ├── concept | | └── cars-assemble | | ├── .docs | | | ├── hints.md | | | ├── introduction.md | | | └── instructions.md | | ├── .meta | | | ├── config.json | | | ├── design.md | | | └── Exemplar.cs (track-specific) | | ├── CarsAssemble.cs (track-specific) | | ├── CarsAssemble.csproj (track-specific) | | └── CarsAssembleTests.cs (track-specific) | ├── practice | | └── leap | | └── .docs | | | └── instructions.md | | └── .meta | | | ├── config.json | | | └── Example.cs (track-specific) | | ├── Leap.cs (track-specific) | | ├── Leap.csproj (track-specific) | | └── LeapTests.cs (track-specific) | └── shared | └── .docs | ├── debug.md | ├── help.md | └── tests.md └── config.json
各トラックには(自動的に)メンテナンスカテゴリが割り当てられ、これによってトラックメンテナーのGitHubリポジトリ権限が決まります。
演習に変更を加えるトラックのPRをマージすると、学習者が公開した解答の最新イテレーションが_すべて_再テストされます。 人気のある演習では、これは_非常に_コストのかかる処理です(極端な例では、PythonのHello Worldで7万回のテスト実行にもなります!)。
こうした事態をむやみに引き起こさないようにしましょう。
マージされるコミットが次のいずれかに当てはまる場合、解答は再テストされません。
.docsや.metaファイル、その他ユーザーが直接触れないファイルだけを変更している[no important files changed]が含まれているマージされるコミットが次の両方に当てはまる場合、解答は再テストされます。
[no important files changed]がない.meta/config.jsonファイルで指定されているもの)を変更している
いくつかの例を挙げます。
[no important files changed]を付けてマージしたため、テストは実行されませんでした