Exercismコミュニティが直面している問題の一つは、多くの人が多くの異なる演習に対して多くの解答を提出する中で、どうすれば意味のあるフィードバックを返せるかというものです。 この途方もなく大きな作業の範囲を少しでも減らすために、解答は「リプレゼンテーション」へと正規化されます。 たとえば、RubyトラックのTwoFer演習に届いた直近500件の提出物のうち、約380件は固有のものとみなせます(コードのフォーマットやコメントといった些細な違いを正規化した場合)。 さらに踏み込んで正規化すると(関数名や変数名なども正規化すると)、その数はもっと小さくなり、固有のアプローチは250通りほどになるかもしれません。 Exercismコミュニティがこれら250通りのアプローチにフィードバックを用意できれば、今後TwoFerに届くすべての提出物の約99%に対して、有効なフィードバックを準備できることになります。 コンセプト演習では、解答の幅はさらに小さくなります。コンセプト演習は、特定のやり方で解けるように意図的に設計されるからです。
_リプレゼンター_とは、解答を受け取ってその正規化されたリプレゼンテーションを返す、という単一の責務だけを担う小さなコードです。
_リプレゼンテーション_とは、名前やコメント、空白などを正規化しつつ、解答の本質だけを抽出したもので、それでもなお、取られたアプローチを一意に識別できるものです。同じ演習を解く2つの異なるやり方が、同じリプレゼンテーションになってはいけません。
最も単純なリプレゼンターは、解答のソースコードをそのまま返すだけのものです。 ただし、本質的でない細部だけが異なる解答には同じリプレゼンテーションを与えることが目標なので、リプレゼンターは一つ以上の正規化を適用する必要があります。
ある解答について正規化されたリプレゼンテーションができたら、厳選されたメンターのチームがその解答を確認し、(必要であれば)コメントを付けます。 このコメントは、同じリプレゼンテーションを持つ新しい解答それぞれに自動で送られます。 一致するリプレゼンテーションを持つ過去の解答には、通知が送られます。
言語ごとに、その言語で書かれたリプレゼンターがあります。 ウェブサイトは、リプレゼンターと生徒の提出物をつなぐ取りまとめ役を担います。
各リプレゼンターは、ExercismのGitHubオーガニゼーション内にある<track_slug>-representerという名前のリポジトリに置かれています(例:exercism/ruby-representer)。
既存のリプレゼンターはこちらで確認できます。
既存のリプレゼンターの手伝いに参加したい場合は、そのリポジトリでイシューを立てて、手伝える場所があるか尋ねてください。 まだリプレゼンターがない言語のリプレゼンターを作りたい場合は、リプレゼンターの作成の手順に従ってください。
リプレゼンターの構築についてさらに学ぶには、次のドキュメントを利用できます。