フォルダーと複数のファイルを使ったプログラミング課題をブラウザーで作る
実際のプログラムは1つのファイルでは終わりません。ヘルパーモジュールを持つ Python のパッケージ、クラスとパッケージに分かれた Java のプロジェクト、lib フォルダーとデータフォルダーを持つ Node のアプリ。コーディング課題はそのどれにでもでき、すべてブラウザーの中で書いて実行できます。学校のパソコンには何もインストールしません。
生徒は全員、プロジェクト全体の自分専用のコピーを受け取り、教員が作ったのと同じファイルツリーを見て、1ファイルの演習と同じ「実行」ボタンで動かします。非表示のテスト、採点、提出などは、1ファイルの課題とまったく同じように動きます。
ファイルツリー
コーディング課題のファイルは、エディターの横にツリーとして表示されます。「新しいファイル」と「新しいフォルダー」で作成し、「アップロード」でコンピューターからテキストファイルを取り込み、「名前の変更・移動」ではパス全体を指定します。lib/helpers.py と入力すると lib フォルダーにファイルが入ります。各ファイルはそれぞれの言語で開くので、README.md は Markdown、.csv はプレーンテキスト、helpers.py は Python になります。
「削除」を押すとすぐにファイルが消え、数秒間は横の「元に戻す」で戻せます。フォルダーはファイルが入っている間だけ存在するため、新しいフォルダーは最初のファイルと一緒に作ります。ツリーでは矢印キーでファイル間を移動してフォルダーを開閉し、Enter でファイルを開き、F2 で名前を変更し、Delete で削除します。
- 課題をエディターで開く. どのコーディング課題でも使えます。Python、Java、Go、Node の JavaScript と TypeScript、Bash、その他のプログラミング言語です。
- ファイルとフォルダーを追加する. 「新しいファイル」を押して lib/helpers.py のようなパスを入力するか、「新しいフォルダー」を押すか、「アップロード」で手元のテキストファイルを取り込みます。
- 実行されるファイルを確認する. プログラムは「実行の起点」と表示されたファイルです。
- 配布する. 生徒は全員、すべてのファイルの自分専用のコピーを同じツリーで受け取ります。
自分のパソコンで動かすのと同じように動く
プログラムは「実行の起点」と表示されたファイルで、ほかのファイルと同じように名前を変えたりフォルダーに移したりできます。拡張子は言語のものから変えられず、Java、C#、Haskell、Kotlin のプログラムはどこに置いても名前は変わりません。
ファイルはツリーのとおりに配置されるので、コードは置いた場所でファイルを見つけます。Python のプログラムはフォルダーからインポートでき、Java のプロジェクトのクラスは src/main/java の下のパッケージに置け、Go のモジュールは自分のサブパッケージをビルドし、Node の JavaScript と TypeScript はフォルダーをまたいでインポートできます。プログラムはどのファイルもパスで開けるので、CSV のデータフォルダーは data/readings.csv として読めます。
プロジェクトに置けるもの
プログラムのほかに最大50個のファイル、1ファイル64 KB まで、合計1 MB までで、フォルダーは7階層までです。テキストのみで、アップロードしたファイルは名前ではなく中身を読んで確認します。そのため data.csv と名前を変えた画像は受け付けられず、拡張子のないテキストファイルは受け付けられます。
名前は英字、数字、アンダースコアのいずれかで始まり、その後は英字、数字、アンダースコア、ドット、ハイフンを使えます。スペースは使えません。生徒のプログラムのコマンドラインがうまく動かない原因として、スペースがいちばん多いからです。
生徒が受け取るもの
課題を配布すると、すべてのファイルが各生徒にコピーされます。生徒には同じツリーが表示され、自分のコピーではどのファイルも編集できます。生徒が自分でファイルを追加できるのは課題が複数のファイルを許可している場合だけで、あなたが渡したファイルの名前は変わりません。練習用ファイルとプレイグラウンドにも同じツリーがあるので、生徒はモジュールの外でも自分のプロジェクトを試せます。
テストのファイルとパッケージリストは、これまでどおり1つずつです。パッケージリストはツリーの最上位にある requirements.txt や pom.xml のような実際のファイルで、このマニュアルに専用のページがあります。非表示のテストは、課題のファイルがいくつあっても非表示のままです。
演習を1ファイルのままにしたいとき
課題の設定タブで「複数のファイル」のチェックを外します。すでにあるファイルはそのまま残り、名前の変更や移動もできますが、誰もファイルを追加できなくなります。Web ページと SQL の課題には追加のファイルを持たせられません。ペインそのものがそれらの構成だからです。
よくある質問
- 手元にあるプロジェクトを取り込めますか?
- はい。「アップロード」でコンピューターのテキストファイルをツリーに取り込めます。Git リポジトリにあるプロジェクトは、「Git から読み込む」でフォルダーごとまとめて読み込めます。こちらはこのマニュアルに専用のページがあります。
- 生徒は自分でファイルを追加できますか?
- はい。課題が複数のファイルを許可していれば追加でき、新しいコーディング課題はそうなっています。あなたが渡したファイルの名前は変わらないので、テストはいつでもそれを見つけられます。
- Java のプロジェクトは1つのクラスにまとめる必要がありますか?
- いいえ。クラスごとにファイルを分け、必要ならパッケージに入れてください。プログラムは「実行の起点」と表示されたファイルです。
- 生徒のパソコンに IDE は必要ですか?
- いいえ。ツリー、エディター、「実行」はすべてブラウザーの中にあり、コードは毎回新しいコンテナーで当社のマシン上で実行されます。