最初のコンセプト演習を実装できたら、その次のいくつかの演習は、それを土台に組み立てていきましょう。
basicsコンセプト以外に前提を持たない演習を、3つから5つ用意するのが望ましいと考えています。
よい候補は、そのプログラミング言語の基本的なプリミティブやデータ型です。たとえば、真偽値、基本的な数値型、文字列、アトムなどです。
他のトラックのコンセプト演習を確認して、自分のトラックに合うものがないか見てみるのもよいでしょう。
コンセプトを導入するといっても、そのすべてを立派に説明しなければならないわけではありません。複雑さはいつでも後回しにできます。 言語によっては、場面ごとに役立つ十数種類もの数値型があるかもしれません。演習では、よく使われる整数型と浮動小数点型だけを紹介し、ほかにも種類があることに触れるだけでかまいません。
基本的なデータ型の中には、直接紹介するには複雑すぎるものもあります。たとえば、文字列が文字の配列になっている場合です。そのようなときは、文字列の導入を後回しにして、文字のコンセプト演習と配列のコンセプト演習を別々に設計する必要があります。そうすれば、その2つを前提とする文字列の演習を追加できます。
演習を作っている途中で、思ったより複雑だと気づくこともあります。それはまったく問題ありません。前提として教える必要があるコンセプトをメモしておきましょう。そして、その演習がすでにあるものとして、その単純化を前提に、作業中の演習を仕上げます。その後で、前提となるコンセプトの演習を新しく作りましょう。前提の演習を追加するまでは、その演習にwipを付けておくのを忘れないでください。
この時点で起こりうるもう一つのことは、依存関係が循環してしまうことです。2つのコンセプトを導入する必要があるのに、それぞれがもう一方に依存しています。こういうときは、スタブを使えるかもしれません。もう一方のコンセプトが存在することは説明しつつ、まだ理解しなくてよいと伝えて安心させましょう。もう一つの方法は、ごく簡単に紹介して、学習者がそのハードルを越えられる程度にとどめ、そのコンセプトはあとで詳しく扱うと伝えることです。
トラックに合わないという理由で演習を実装しないことを選んだ場合は(たとえば、高レベルのトラックに低レベルの演習を入れる場合など)、その演習を_対象外_としてマークしてください。
マークするには、トラックのconfig.jsonファイルにあるexercises.foregone配列に、その演習のスラッグを追加します。
実装しないという選択をはっきりさせるだけでなく、configletなどのツールも対象外の演習を無視します。
詳しくは、ドキュメントを参照してください。