memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

デバッグ支援ツールがちゃんと動いてプチ感動

自分用メモです。

背景

この3年間くらいRails学習時の学生のつまずきについて分析してきました。

本来であれば元々ソフト屋なのでソフトウェア工学の研究がしたいのですが現場を離れると問題感もモチベーションも湧きにくく、そもそも評価に付き合ってもらえる企業もこちらではつてがなく(内部情報の解析になるのでお互いかなり深い信頼関係がないと難しい)。

そこでずーっとあれこれ研究テーマを試行錯誤してきた結果、やはり身近な問題感ということで教育改善に関する研究テーマにいきついています(本当はモノづくりしたいんですけどね。。。作っただけでは論文化しにくいところが難しい)。自分の担当授業であれば改善すれば学生さんらにフィードバックできますし自分も知りたいことが知れるモチベーションがあります。しかも普通に授業をしているだけでデータが取れるわけです。大学教員にとって非常にやりやすい(やりがいのある)テーマの1つといえると思います。

デバッグ支援ツール

で、どんなのを作っているのか?今年の春にローカル学会向けにまとめた査読なし論文から図を自己引用します。RailsはWebアプリの稼働状況をログファイルに吐き出す仕組みが標準で備わっています。そのファイルを監視してもし「Error」という文字があれば、エラー情報やファイルをサーバーに送ります。ちなみにこれまでの分析ではGitリポジトリを利用していて自動的にコミットしてあとから課題とあわせてRailsディレクトリを提出してもらって解析してきました。その部分をエラー発生時にサーバーに送信するように今回修正したのでした。Gitは開発でも使うのでこれに頼っていてはダメですからね。

ツールをインストールしてもらう手順が1ステップ増えるのですが、できるだけ簡単にしようと数日前に書いたようにbrewのマネをしてみたということです。一度インストールしてもらえばあとは「rails server」というサーバー起動コマンドを実行すると監視ツールが起動するようにできるため管理は難しくありませんでした。

memorandums.hatenablog.com

さらに、サーバー側も授業で教えている範囲でRailsで作成しました。サーバーはRailsチュートリアルと同様にRender.comを利用しています。一昨日、授業で学生さんに初めて使ってもらったのですが、その使用量は以下になります。無料版なので枠内に収まるかヒヤヒヤしてましたが大丈夫のようです。

Webサーバインスタンス

PostgreSQLインスタンス

1回授業が終わるごとにデータはダウンロードして消す予定です。

過去に発生したエラー情報をこのシステムを使って収集し、そのエラー情報に解決方法をコメントします。その後、エラー情報が送られてきたときに類似度計算し、最も類似するエラー情報に書かれた助言を学生に提示する、という発想です。

Railsチュートリアルで有名な(うちの研究室でも研究費で少し使わせていただいています)YassLabさんはAIを利用したデバッグ支援ツールを開発されているそうです。

note.com

ただね、エラーメッセージだけではエラー情報は不足しているんですよね。。。もちろんそんなことは私よりもっと前からRailsに関わっているYassLabさんはわかっていると思いますが。エラーメッセージって被害者であるケースもあるのでそこが直接原因ではない場合があります。エンジニアなら誰もが知っていることで。その場合の情報はエラーメッセージには現れてきません。なので僕はソースコードも合わせて収集しているわけですけどね。その情報は授業以外では、ProgateさんやPaizaさんのようにプラットフォームを持っていない限り集めにくいのですね。難しい。

ツールだけではなく、ワークフローをスムーズに流して、学生と教員が協力してデバッグを少しずつ上達するように支援する、これってプロになるには必須の技術・経験ですから、心折れずに進められるように支援していきたいな、と思っています。今年が科研の現テーマの最終年度なので今年中には論文にまとめます。あくまで初学者向けなので、デバッグを自分でできる方には不要なものですけどね。少しは世の中のためになるんじゃないかなと考えています。ちなみに開発者の方ならわかると思いますが、別にRailsに特化したツールではないと思います。別のフレームワークでもログ出力するものであれば何でも適用できるでしょうね。誰か一緒に研究しませんか😁