論文斜め読み:「オンラインプログラミング環境Bit Arrowを用いたC言語プログラミングの授業実践」
「オンラインプログラミング環境Bit Arrowを用いたC言語プログラミングの授業実践(情報教育シンポジウム2017年8月)」長慎也 他
自書の「楽しく学ぶC言語」で利用しているオンラインプログラミング環境の「Bit Arrow」の授業実践報告です。著書の監修いただいた長先生が論文執筆者です。
全体的な記述
「はじめに」ではC言語を学習する理由とその困難さを述べています。C言語を学習する理由として
・コンピュータのデータ構造の理解
・メモリモデルの理解
・JavaやJavaScriptに言語仕様の一部が引き継がれている
と述べてます。またC言語学習の困難さは
・メモリの範囲外へのアクセスなど、実行じのエラーに対するチェックがないための原因不明のエラーに遭遇する
といったことを述べています。
・そのため情報学部でもC言語は初めてのプログラミング言語になる場合が多いが躓きの原因になっている
と述べています。プログラミングに興味を持つためにはグラフィックやアニメーションが有用けれど普通のC言語の環境では難しく文字列などのプログラム学習になってしまっていてそれを解決する仕組みとしてBit Arrowがあるという流れです。
Bit Arrowの仕組み
「2. Bit Arrowの設計」ではBit Arrowでは入力されたプログラミング(C言語)がクライアント側でJavaScript、サーバー側でPHPに変換するとあります。これをトランスパイルと呼ぶそうです。
コンパイルとは異なって、TypeScriptみたいなもで。ある言語から別の言語に変換する仕組みを指すそうです。Bit Arrowの場合は、C言語をJavaScriptに変換してクライアント側で実行するので、サーバー側の負荷が少ないそうです。
これはBit Arrowがサクサク動く強みだと思います。一般的には例えばサーバーに入力されたファイルを送信して、サーバー側のコンパイラを利用しコンパイルし、結果を返すもののためサーバー負荷が高くなる傾向にあります。
Bit Arrowのメリット
1. ブラウザがあれば開発管渠を導入する必要なく実行可能である。
2. 基本処理はクライアント側で行われるのでサーバーが側の負荷が少ない。
C言語の開発環境を用意するのは難しいところがあるのですが、ブラウザだけで開発が始められるのは強みだと思います。
また「3. 関連研究」ではトランスパイルのところで話が出たように、他のオンラインプログラミング環境CloudCoder、CodeWrite、Online Python Tutorなどはサーバー側で処理を行うためサーバーの負荷が高い。Bit Arrowは多くの処理をクライアント側で行うためにサーバー負荷が相対的に低くなるということでこれは強みと言っていいと思います。
C-JSの変換規則
「4.C-JSの実装」ではトランスパイルの説明、C言語からJavaScritpへの変換について述べられています。言語の違いをいかに吸収するかという話と、ブラウザの互換の話、特にイベント処理の話が記述されています。この章は配列やポインタの話など少し専門的なところになっています。
4章の中でも重要と思われるのは「4.2 初学者へのサポート」です。サーバー&クライアント方式であるため、学習者の情報を収集し間違いやすいポイントを改善しているとあります。「メモリ範囲外のアクセス」「無限ループ対策」「初期化対策忘れ」が述べられていますが、学習解析による学習環境の改善という重要な点を示唆しています。
教員支援機能
「5.授業実践」では実際に授業に利用した結果の報告になります。私も多くの授業でBit Arrowを利用しています。効率よくBit Arrowを利用するための方法は参考になります。
あまり私は活用できていませんが、Bit Arrowには教員支援機能があり、課題の提出と採点ができるようになっています。まだBit Arrowには「4.2 初学者へのサポート」でも利用したと思われるログの機能があるそうです。ログの分析から「コンパイルエラーが発生した頻度とその原因」「コンパイルエラーからの復帰時間」「#include 忘れによる「未定義変数・関数」」「大文字小文字違いによる「未定義変数・関数」と言ったところを分析しています。
また、時間がかアクセスも分析でき、「プログラミング能力が高い中上級者」によるアクセスが多かったとしています。
まとめ
ここまで「実践報告」を見ながらBit Arrowの概要等見てきましたが、個人的には「学習解析機能」が今後重要になってくると思っています。
学習解析には「個人」「教員」「グループ」など組織単位での分析軸と時間などの分析軸が存在し、とても興味深い分野と思っています。今後は少し学習解析を軸に論文をよんてみたいと思います。