大阪電気通信大学

プログラミング初学者の検索・エラー解決を補助するwebアプリケーションの開発

内容梗概 

 本研究では、「エラー読解力」「検索力」が乏しいプログラミング初学者をサポートするためのWebアプリケーションを開発した。プログラミング学習において効率的な学習を行うためには、出力されたエラーメッセージを読み解き、現状の発生している問題の原因と解決策を導き出す力が必要となってくる。また、自分の知識だけでは解決できない問題に遭遇した際に、的確なワードで検索を行い、効率的な情報収集を行う力も重要となってくる。しかし、プログラミング初学者には、これらの力が不足していること多い。そこで、本研究では、出力されたエラーメッセージを入力することで、エラーの解決に必要な情報を抽出し、それに対する解説や検索ワードを提示するアプリケーションを開発する。

アプリケーションの構成

 アプリケーションを運用するサーバとしてHeroku を採用し、アプリケーションサーバ / web アプリケーションフレームワーク / データベース / 静的ファイルの配信用パッケージという構成になっている。

アプリケーションの構成図

アプリケーションの仕様

 まず、本アプリケーションに「エラーメッセージ全文」と、「現在取り組んでいること」の二つを入力として与える。入力された値は、エラーメッセージに関する解説文の生成や、検索ワードを提案するために利用される。

 入力として与えるエラーメッセージ全文とは、具体的に、下記の画像のようなエラーメッセージ最上部から、ソースコードが示される手前までの文章のことを指す。エラーメッセージ全文をコピー&ペーストできるようにすることで、エラーの読み方が分からない初学者でも利用できるようになっている。

入力として与えるエラーメッセージ

 また、本アプリケーションでは、プログラミング言語であるRubyのwebアプリケーションフレームワークであるRuby on Railsのエラーを対象としている。その理由は、webアプリケーションフレームワークの中では比較的難易度が低いとされており、多くのプログラミングスクールのカリキュラムでも採用されていることから、プログラミングについての知識が浅い人に利用されることが多いと考えられるためである。

アプリケーションの各機能

 初学者をサポートする機能として、アプリケーションには、エラー解決に必要な情報を抽出する機能、エラーメッセージの構成と役割を提示する機能、そして、検索ワードを提案する機能がある。各機能の詳細について、順に述べていく。

エラーメッセージから必要な情報を抽出する機能

 まず、エラーメッセージの文章から、エラー解決をするために必要な情報の抽出する機能について説明する。この機能は、抽出した文を活用し、エラー解決のための解説の出力や検索ワードの提案を行うために実装した。文の抽出には、正規表現の処理を可能にするre というPython のモジュールを使用した。

 本機能では、与えられたエラーメッセージから、「エラーの概要」と「エラーの説明文」の二つの文章を始めに抽出する。エラーの概要とは、”NoMethodError in BooksController#create” のような、大かなエラーの内容と、エラー発生時に実行していたコントローラとアクション名が示されている文のことである。抽出した二つの文章から更に、エラーが発生したファイル名や、エラーの解決に繋がる文章などの情報を抽出することにより、エラーについての解説をより詳細的に行えるようになっている。

エラーの構成と意味を提示する機能

 次に、エラーの構成と意味を提示する機能について述べていく。この機能は、エラーメッセージから抽出したワードの役割やエラーメッセージの読み方の解説を行う。それにより、ユーザのエラーメッセージを読む力を育み、根拠を持ったエラー解決ができるようにするという狙いがある。解説文は、大きく以下の3つの段落に分かれている。各段落の内容について順に述べていく。

  • 読み解く文章を確認する
  • エラーの概要と大まかな発生場所を理解する
  • エラーの詳細を理解する

 まず、「読み解く文章を確認する」の段落について述べていく。この段落ではエラーメッセージの全体を示し、ユーザに読み解いていくエラーメッセージの内容を再認識させる。それにより、ユーザが、次段落からのエラーメッセージに関する解説を理解するための準備を整えられる。

 次に、「エラーの概要と大まかな発生場所を理解する」の段落について述べていく。この段落では、エラーメッセージの中でも最上部のエラーの概要が示されている文に着目し、「エラーの大まかな発生理由を理解する」「実行したコントローラとアクションを把握する」の二つの項目がある。

 「エラーの概要と大まかな発生場所を理解する」では、初めにエラーの大まかな発生理由が示されている記述を示し、その記述に対する参考記事を示すことで、提示したワードの意味と役割をユーザに理解させる。

 「実行したコントローラとアクションを把握する」では、初めにコントローラ・アクション名が示されているエラーメッセージの記述を提示し、この記述からエラーが発生している場所を絞り込むことができるという解説文を表示している。

 最後に、「エラーの詳細を理解する」の段落について述べていく。この段落では、「エラーの具体的な発生場所を把握する」「エラーの具体的な原因を特定する」の二つの項目がある。「エラーの具体的な発生場所を把握する」に関する解説は、入力されたエラーメッセージに、エラーの発生したファイルのパスが示されている場合にのみ表示される。まず、エラーが発生したファイルのパスと行数が示されている文を提示する。その後、提示した文の役割と読み方を解説を行う。そうすることで、ユーザのエラー解決時に参照するファイルを絞り込む力を育む。

 「エラーの具体的な原因を特定する」の項目では、まず入力されたエラーメッセージの中に含まれるエラーの直接的な原因が示されている文を提示する。その後、提示した文に応じたエラーの原因を特定するための解説文を表示する。そうすることで、ユーザのエラーメッセージに書かれている原因を読み解き、根拠を持ってエラーを解決する力を育む。

検索ワードを提案する機能

 最後に、検索ワードを提案する機能について述べていく。検索ワードは、エラーメッセージの解説と同時に提示され、解説文だけではエラーを特定できない場合などに検索を行えるようになっている。検索ワードは、「エラーの大まかな発生理由」と、「エラーの具体的な原因を特定する」の、2つの項目で提示される。

 また、どのような基準で検索ワードを提案しているかユーザに理解してもらうため、「検索のコツ」という章を「エラーの大まかな発生理由」の解説の途中に実装した。この章では、検索ワードの策定方法と同時に、検索ワードに含めるべきではない単語などの注意点と、悪い検索の例も同時に示している。それにより、ユーザがプログラミング学習において、効率的に欲しい情報を得る力を育むことができる。

有効性の評価

 本研究では、アプリケーションの有効性の評価を実施した。まず、Ruby on Rails での開発経験が無い者に対し、3 時間程度のRuby on Rails の基礎知識に関する講義を実施する。その後、被験者にRuby on Rails を用いたアプリケーションの制作課題を課し、課題に取り組む際に出力されたエラーメッセージに対して、開発したアプリケーションを使用してもらう。アンケート形式によりアプリケーションの有効性を評価する。

 今回の検証では、被験者が2 名、合計11 件のエラーメッセージに対しての回答を得ることができた。設問内容と設問に対して高評価を得られた割合を以下の表に示す。

 以上のように、全ての設問において高い評価を得ることができた。しかし、今回の検証では、被験者数・回答数ともに少ないため、正確な評価には、より大人数・多数のエラーに関する回答が必要と考える。

まとめ

 本研究では、Ruby on Rails から出力されたエラーメッセージを入力値として与えることで、エラー解決に必要な情報を抽出し、それに応じた解説と検索ワードを提示するweb アプリケーションの開発を行った。Ruby on Rails 未経験者に本アプリケーションを実際に使用してもらい、有効性を評価した結果、本アプリケーションは、エラーメッセージの読み方に関する学習やエラーの解決を支援する効果があるということが分かった。

 今後の課題としては、エラーの詳細文を抽出する精度の向上や、複数のエラーの対する解説文の追加、より多くの被験者・エラーでの有効性の評価が挙げられるだろう。

作者プロフィール

石田 幸暉

大阪電気通信大学 総合情報学部 情報学科3年 高速ネットワーク研究室所属の石田幸暉と申します。

オンラインプログラミングスクールにてメンターの長期インターンを行っています。

メンターとして受講生様のプログラミング学習を支えてきた経験を活かし、プログラミング学習の躓きを少しでも減らせるようなアプリケーションを作成できるように心がけました。

コメント