このドキュメントでは、新しいプラクティス演習を追加する方法を説明します。
まだ実装されていないプラクティス演習を確認する最も簡単な方法は、トラックのビルドページ(例:https://exercism.org/tracks/csharp/build)を開き、「プラクティス演習」セクションを確認することです。
ビルドページのデータは、1日に1回だけ更新されます。
新しいプラクティス演習のひな形は、トラックのルートディレクトリでbin/add-practice-exerciseスクリプト(ソース)を実行すると、すばやく作成できます:
bin/add-practice-exercise <exercise-slug>
オプションとして、演習の難易度(-dで指定)や作者のGitHubユーザー名(-aで指定)も指定できます:
bin/add-practice-exercise -d 3 -a foobar <exercise-slug>
このファイルがないトラックリポジトリで作業している場合は、上記のソースリンクを使って自分のリポジトリにコピーしてかまいません。
ひな形のファイルを作成したら、次は次の作業を行います:
.meta/config.jsonファイルで:
authorsキーに追加するconfig.jsonファイルで:
practicesキーに概念を追加する(トラックにコンセプト演習がある場合のみ)prerequisitesキーに概念を追加する(トラックにコンセプト演習がある場合のみ)演習を追加するうえで欠かせないのが、テストの追加です。 プラクティス演習のテストを追加する方法は、大きく分けて2つあります:
canonical-data.jsonファイルのテストケースを使って、テストを一から実装する。https://exercism.org/exercises/<slug>にアクセスすると、特定の演習をどのトラックが実装しているかの概要がわかります)。2つ目の方法は、すぐに結果が得られるので、特に魅力的に思えるかもしれません。 ただし、自分のトラックに最も合うように実装を調整することを忘れないでください。 たとえば、クラスを使わず関数だけで扱うトラックもあります。 一方で、自分のトラックが通常オブジェクトを扱うなら、トラックに最も合う形に実装を適応させるべきです。
テストファイルを自動で(再)生成するために、テストジェネレーターを使うトラックもあります。 テストジェネレーターがあるかどうか、ある場合はその使い方を、トラックのドキュメントで確認してください。
テストにパスするコードが書けることを確かめるために、実装例を追加する必要があります。
コードは必ずしも慣用的である必要はありません。テストにパスしさえすればよいのです。
実装例がすべてのテストにパスするかどうかは、トラックのルートディレクトリでbin/verify-exercisesスクリプト(ソース)を実行して確認できます:
bin/verify-exercises <exercise-slug>
出力を使って、実装例がすべてのテストにパスしていることを確認してください。
このファイルがないトラックリポジトリで作業している場合は、上記のソースリンクを使って自分のリポジトリにコピーしてかまいません。
内部では、bin/verify-exercisesスクリプトが次のようないくつかの処理を行います:
スタブ実装のファイルは、学習者が取りかかるための出発点になります。
スタブファイルには、次の条件を満たす最小限のコードを書くことをおすすめします:
実際には、これはテストスイートがテストする関数やメソッドを定義することを意味します。 スタブコードが最初はすべてのテストに失敗することさえ守られていれば、このコードをどのように用意するかはトラックの自由です。
Python:
def two_fer(name):
pass
Kotlin:
fun twofer(name: String): String {
TODO("Implement the function to complete the task")
}
最後のステップは、リンターを実行して、トラックの(設定)ファイルが構文的にも意味的にも正しく構成されているかを確認することです。
まず、次のコマンドを実行して、configletの最新バージョンを使っていることを確認します:
bin/fetch-configlet
次に、次のコマンドを実行してリンターを実行します:
bin/configlet lint
出力を使って、すべて問題ないことを確認してください。
すべて問題なければ、トラックのリポジトリにプルリクエストを作成できます。
作成する前に、コントリビューター向けプルリクエストガイドとプルリクエストガイドをお読みください。
PRの説明に、追加する演習を必ず記載してください。