初期の演習を追加する


hello-world演習を実装したら、次は他の演習を20以上実装します。

演習の種類

実装できる演習には、2つの種類があります。

  • 概念演習:学習者に1つ以上の概念を教えるために設計されています。詳しくはドキュメントを確認してください。
  • 実践演習:学んだ概念を練習するために設計されています。詳しくはドキュメントを確認してください。

一般に、新しいトラックでは、まず実践演習を実装することをおすすめします。実装が簡単で、事前に考えることも少ないからです。概念演習は、トラックがきちんと動くようになってから、いつでも追加できます。

演習を選ぶ

トラックが実践演習を実装しやすくするために、exercism/problem-specificationsリポジトリを用意しました。このリポジトリには、100以上ある実践演習のメタデータが含まれており、各トラックはこれを使って、そのトラック向けのバージョンの演習を実装できます。そのため、同じ演習が多くのトラックで実装されているのを目にすることになります。

では、この100以上の演習の中から、どのようにして20以上を選べばよいのでしょうか? いくつかの指針を紹介します。

学習者がさまざまな概念を練習できる演習を選ぶ

100以上の演習で使われる概念は、じつにさまざまです。学習者が多様な概念を練習できる演習を実装することを目指しましょう。文字列だけに焦点を当てた演習を20個実装するのではなく、それぞれ異なる概念に焦点を当てた演習を実装してみてください。

いくつかの概念と、その例となる演習を挙げます。

概念 演習
ビット操作 allergies, secret-handshake
真偽値 leap
クラス circular-buffer, robot-name
並行処理 bank-account
条件分岐 raindrops
日付と時刻 gigasecond, meetup
等価性 clock
浮動小数点数 darts, space-age
遅延評価 alphametics, zebra-puzzle
配列 resistor-color, spiral-matrix
ループ collatz-conjecture, protein-translation
マップ nucleotide-count
数値 leap, grains
乱数 dnd-character, robot-name
文字列 bob, isogram,
ツリー binary-search-tree, pov

難易度に幅のある演習を選ぶ

演習によって、実装の難しさは異なります。初級・中級・上級が混ざるように、難易度に幅を持たせて演習を実装することを目指しましょう。

演習の難しさは、関わる概念やトラックの言語など、いくつかの要素によって決まります。同じ演習を実装している他のトラックで、その演習がどんなものかを見ておくと、実装がどんな形になりそうかをつかみやすくなるでしょう。

難易度ごとに、演習の例を挙げます。

自分のトラックに合った演習を選ぶ

すべての演習が自分のトラックに合うとは限りません。トラックに合う演習だけを選びましょう。意味をなさない演習を実装するより、その演習を_実装しない_ほうがよいのです。たとえば、lens-person演習では、学習者が_レンズ_を扱いますが、これをサポートしていない言語もたくさんあります。

トラックに合わない演習を見つけたら、そのスラッグをトラックのconfig.jsonファイルにあるexercises.foregone配列に追加できます。こうすると、ツールがその演習を無視するようになります。

カリキュラムの例

もう少し具体的にすると、最初の演習の選び方の一例は、次のようになります。

演習 難易度 概念
hello-world 初級 なし(最初の演習)
leap 初級 数値、真偽値
gigasecond 初級 日付と時刻
isogram 初級 文字列
resistor-color 初級 配列
nucleotide-count 初級 マップ
collatz-conjecture 初級 ループ
darts 初級 浮動小数点数
two-fer 初級 文字列フォーマット、省略可能な引数
high-scores 初級 コレクションの処理
raindrops 中級 条件分岐
bob 中級 文字列
allergies 中級 ビット操作
series 中級 例外
circular-buffer 中級 クラス
meetup 中級 日付と時刻
yacht 中級 配列
dominoes 上級 タプル、遅延評価
diamond 上級 文字列フォーマット
alphametics 上級 遅延評価
forth 上級 パース

演習を実装する

トラックに含めたい演習を選んだら、次のステップはそれらを実装することです。実践演習の追加に関するドキュメントに、実践演習を追加する方法が詳しく書かれています。