Uploaded avatar of iHiD

自動メンタリング支援プロジェクト

@iHiD
7年以上前

更新:このプロジェクトに対して、MozillaからOpen Source Support Awardを授与していただけることになり、嬉しく思います。詳しくはこちらをお読みください。

このブログ記事は、ExercismのAutomated Mentoring Support Projectの始まりを告げるものです。このプロジェクトでは、ユーザーの解答をプログラムで分析するフレームワークを開発し、学習者へのフィードバックの循環を改善するとともに、メンターの負担を減らすことを目指します。短期的な目標は、所定の合格基準を満たす解答を自動で承認し、よくある改善点についてフィードバックを返せるようにすることです。

この記事の目的は、解決しようとしている問題と、今後数か月にわたってそれをどう進めていくかという大まかな計画を説明することです。今後も記事を続けて、問題の背景やExercismにおける自動分析の歴史、実装戦略の詳細について掘り下げていきます。

なぜメンターの自動サポートが必要なのか

Exercismにとって最も大きな壁は、規模の拡大に対応できるかどうかです。

ボランティアのメンターは、Exercismの成功に欠かせない存在です。学習者の解答をレビューし、その演習の合格基準を満たしているか、改善が必要かを分析し、学習者の考え方を共感をもって理解し、励みになる役立つフィードバックを返し、その言語の慣用的な表現を教えるのが役割です。現在は、メンタリングの需要にどうにか追いついているという状態です。成長を目指すなら、「メンターを増やす」よりも良い戦略が必要です。

Exercismの言語トラックの背骨となる中心的な演習では、提出された解答の約25%が、一度目の挑戦で完了とみなせる出来だと考えています。さらに55%の解答には、よくあるパターンに当てはまる問題があり、フィードバックの定型文をコピー&ペーストするだけでメンタリングできます。メンターが創意工夫を凝らし、よく考えたフィードバックをする必要がある解答は、約20%にすぎません。

メンターの頭を本当に使うことのない80%の解答は、人の役に立ちたいと時間を割いてくれる人にとって、もどかしい時間の浪費であり、せっかくの専門知識を活かしきれていません。

同じように、学習者はフィードバックを受け取るまでに1日から1週間ほど待たされることがあり、その間はトラックを先に進められません。完全に正しい解答の25%に当てはまるものを提出した人にとって、この遅れはとりわけもどかしいものです。それ以外の人にとっても、よくて最適とは言えません。学習者はこの遅れで勢いを失い、この仕組みにもどかしさを感じることがよくあります。

解答を自動で分析し、承認するか、既知の問題に対して定型のフィードバックを返すシステムを開発することで、「退屈な」部分を取り除いてメンターの作業量を大幅に減らし、同時に学習者の体験を大きく改善できると考えています。さらにおまけとして、構造やスタイルに関する問いについては、より一貫したフィードバックを受け取れるようになります。これは、白黒はっきりしない話題について、より面白い会話ができるようになるということでもあります。

どのように機能するのか

長期的な目標は、Exercismが2013年に始まって以来提出された、100万件近い解答の抽象構文木(AST)を分析できるディープラーニングのアルゴリズムを開発することです。そうしたツールは、よくあるパターンと、それに関連するメンターのコメントを検出できるかもしれません。短期的には、メンターが見てきた最もよく繰り返されるエラーをもとに、どんなフィードバックができるかを静的解析で判断することを目指します。

このプロジェクトは、大きく次の領域に分かれます。

  1. プロダクトの変更: この自動分析を現在のメンタリング用UIにどう組み込むか、このフィードバックをどう伝えるか(システムメッセージ、「ボット」など)、そしてそれをExercismのウェブサイトにどう実装するかを考える必要があります。
  2. インフラストラクチャー: 複数の言語にまたがって静的解析を効率よく実行できるインフラストラクチャーを設計・構築します。
  3. 静的解析のプロトタイプ: RubyのTwo-ferで良い解答を自動承認するサンプルのアナライザーを開発し、より多くのコミュニティの人たちが参加できるよう、そのプロセスを文書化します。

2019年半ばまでに、最初のプロトタイプを公開することを目指しています。基盤が整えば、Ruby以外の言語や、Two Fer以外の演習にも広げていきたいと考えています。他の言語や演習をウェブサイトに統合するためのフレームワークは、プロトタイプが進むまで整いませんが、好きな言語や演習のためにアナライザーを書き始めたいなら、待つ必要はありません! このプロジェクトのGitHubリポジトリーでissueを立てて、ぜひ取り組みたいことを教えてください。

すでに静的解析をメンタリングに役立てているExercismコミュニティの人たちと一緒に取り組めることをとても楽しみにしています。tehsphinxとbitfieldは、Goトラックのメンター向けに静的解析ツールを開発しています。そのツールが、膨大な滞留を抱えていたトラックを、Exercismで最も反応の速い言語トラックの一つに変えたことは、自動メンターサポートがどれほど大きな効果を持ちうるかを示しています。

これから数週間で、これらの最初の重要なステップと、物事がどう進むのかについて、さらに詳しくお伝えしていきます。

ご質問があれば、下のコメント欄でぜひお答えしたいと思います! :)

2019年02月07日(木) · 役に立ちましたか?