BYOD 下におけるプログラミング演習環境の統一に向けて
玉田 春昭†1

概要：プログラミング演習において，受講生間での演習環境の統一は重要である．頻繁なバージョンアップが行われている昨今では特に重要な課題である．そこで本稿では，Visual Studio Code で利用できるRemote Containers プラグインを用いた環境統一手法（以降 devcontainer）について述べる．そして，devcontainer で構築したい環境や，利点，欠点について議論する．

1. はじめにこれらを解決するため，本稿では Visual Studio Codeを用いた devcontainer*6 による演習環境の構築と，利点，多くの高等教育機関において，BYOD（Bring Your Own

欠点について述べる．devcontainer とは，Docker コンテDevice）が浸透して久しい [1]．プログラミング教育では，ナにローカル環境のソースコードをマウントし，コンテナプログラムの実行環境の統一が望ましいが，BYOD の場内の環境で開発を進める．そして，そのコンテナ内のファ合完全な統一は難しい．昨今では，プログラミング言語自イルをローカル環境の Visual Studio Code から編集する体のバージョンアップも頻繁に行われている．バージョンというものである（図 1）．なお，devcontainer の導入にが更新されると新たな API の登場や古い API が非推奨には，コンテナイメージ構築のための Dockerfile の作成指定されることがある．これにより，過去の講義資料が誤と devcontainer 環境構築の設定ファイル群の準備が必要りになる可能性がある．これを防ぐためには，バージョンである．

アップによる更新内容と，講義資料の内容の両方を詳細に把握する必要がある．しかしながら，これには非常に多大

2. これまでの演習環境統一への試みなコストが必要となる．
特に Java 言語は半年ごとに新しいバージョンがリリー

これまでに演習環境を統一するために，様々な試みが行われてきた．それらの手法と問題点を表 1 に示す．

スされている*1 ．この場合，複数のバージョンが利用可能

現状の著者の勤務校では，受講生の環境を統一するため，であるため，指定したバージョン以外を利用する受講生もHomebrew*7 や asdf*8 ，Sdkman*9 などのバージョン管理存在する可能性がある．加えて，再履修生の場合，古い環システムを用いており，(2) に相当する．

境を更新しないまま授業に臨む場合もある．
これを解決するため，オンラインのプログラミング環境を

3. 演習環境統一で行いたいこと
演習環境の統一以外にも以下のことが期待できる．

用意し，演習に利用する方法が古くから提案されている [2]．
ただし，このような環境の準備に多大なコストを要する点

品質測定

プログラミング演習で提出される課題プログラ

ムの評価観点は大きく，正しさ，品質，その他の 3 つが問題となる．一方で近年では，Google Colaboratory*2 やReplit*3 ，GitHub Codespaces*4 ，CodeRunner*5 などのオンライン IDE も充実している．ただしこれらの場合，教育ローカル環境用のために用意した外部ツールを導入するのに手間がかかるのが問題である．
†1*1*2*3*4*5

現在，京都産業大学
Presently with Kyoto Sangyo University
https://www.oracle.com/java/technologies/
java-se-support-roadmap.html
https://colab.research.google.com/
https://replit.com/
https://github.com/features/codespaces
https://coderunner.org.nz/

コンテナ環境VSCode Server

VSCode

利⽤するソースコード

図 1*6*7*8*9

マウント

ソースコード

Java
品質測定
ツール

devcontainer の構成図

https://code.visualstudio.com/docs/remote/containers
https://brew.sh/https://asdf-vm.com/
https://sdkman.io/表 1 演習環境統一手法とそれらの問題点
方法

(0)
(1)
(2)
(3)
(4)

概要

問題点

学内の教室に PC を設置し，必要なツール群をインストール運用に多大なコストが必要となる．特定ツールの導入は難ししておく．各受講生はその PC を利用する．

い．BYOD 化により採用できない場合が多い．

各受講生による個各受講生が講義資料に書かれた指示に従って，個別に必要なインストールサポートが必要．再履修生は古い環境のままで別インストールソフトウェアをインストールする．

ある場合がある．

インストール作業

シェルスクリプトなどで必要なソフトウェアをインストール

再履修生は古い環境のままである場合がある．インストールの自動化する．

スクリプトのメンテナンスコストが必要になる．

ネットブート [3]ネットワーク経由で OS イメージをダウンロードし，起動す環境構築，運用に大きなコストを要する．受講生のいつものる．PC は thin クライアントとして用いる．

環境とは異なる環境で演習に臨むことになる．

必要なソフトウェアがインストールされた仮想マシンイメー

受講生のいつもの環境とは異なる環境で演習に臨むことになジを配布し，その仮想マシン上で演習を実施する．

る．必要とするディスク容量が大きい．OS のライセンスに情報処理教室

仮想マシン注意が必要である．

(5)

(6)

オンラインエディ

ブラウザから扱えるエディタを用いて演習を行う．演習向け

環境構築が必要なケースでは運営に大きなコストを要する．

タに環境構築が必要なケース，一般向けのオンラインエディタ

オンラインエディタを利用するケースでは，演習用の独自を利用するケースがある．

ツールの導入が難しい場合がある．

Docker コンテナ上にマウントされたソースコードをローカエディタが Visual Studio Code に限定される．シェル環

ル環境の Visual Studio Code から編集する．

境が受講生の環境とは異なる可能性がある．

devcontainerに分類できる．受講生自らが自身のプログラムの品質

プログラミング環境を統一するための準備，運営が簡便なを測定できる環境を用意する．例えば華山らが提案す方法である devcontainer について述べた．実際に導入しるように，品質の可視化による教育手法の導入も期待た事例を見ると，devcontainer は必ずしも全受講生に受けできる [4]．

入れられるわけではない [6]．また，devcontainer のセッ

自動採点

課題の出題形式は，大きく分けて，写経，穴埋め，デバッグ，文章題，自由課題の 5 つに分類できる．

トアップが難しい受講生が 18%いたと報告されている．

devcontainer への議論の種として，以下の点を挙げる．

文章題では，文章で与えられた仕様に基づいてプログ• 利用する是非，ラムを作成する．このような問題が正しく実装できた• devcontainer が活きる言語，かを受講生自身が評価するため，単体テストの活用に• 導入したいツール等，より，プログラムの自動評価を狙う．

• 運用ノウハウ，進捗把握

演習中に課題の進捗状況をリアルタイムに把握• 受講生に求める実行環境への理解の度合い．

することは，きめ細やかな指導のためには不可欠であ

謝辞る．従来から様々な手法で取り組まれている [5]．

この研究は JSPS 科研費 20K11761 の助成を受けた．

4. devcontainer の利点と欠点
• 利点

参考文献
[1]

– ツールの同梱が容易．著名なツール，独自のツールのどちらもほぼ同じ手順で同梱できる．

[2]– 受講生のローカル環境を汚さない．
– 受講生の利用 OS に依存しない．
• 欠点

[3]

– Visual Studio Code に限定される．
– 実行環境の理解が，受講生にはハードルが高い．
– ターミナルでの操作も Visual Studio Code 上に限定

[4]される．ただし，devcontainer cli が 2022 年 5 月より提供されている*10 ．しかし，利用するには実行環[5]境の理解がある程度必要となるため，初学者向けの講義で利用することは困難であると思われる．

5. まとめと議論の種
本稿では，プログラミング演習科目において，受講生の*10

https://code.visualstudio.com/blogs/2022/05/18/
dev-container-cli[6]

ICT 利活用調査部会：2016 年度 BYOD を活用した教育改善に関する調査研究概要と報告，技術報告，大学 ICT 推進協議会 (2018).
Goldman, M., Little, G. and Miller, R. C.: Collabode:
Collaborative Coding in the Browser, Proc. 4th International Workshop on Cooperative and Human Aspects ofSoftware Engineering, p. 6568 (2011).
大本英徹：NetBoot による学生ノートパソコンの教育専用端末化環境の構築と運用，情報処理学会関西支部大会(2009).
華山魁生，まつ本真佑，肥後芳樹，楠本真二：プログラミ
ング教育における実績可視化システムの提案と評価，情報処理学会論文誌， Vol. 61, No. 3, pp. 644–656 (2020).
槇原絵里奈，井垣 宏，吉田則裕，藤原賢二，飯田 元：プ
ログラミング演習における探索的プログラミング行動の自動検出手法の提案，コンピュータソフトウェア， Vol. 35,
No. 1 (2018).
Valstar, S., Griswold, W. G. and Porter, L.: Using DevContainers to Standardize Student Development Environments: An Experience Report, Proceedings of the 2020
ACM Conference on Innovation and Technology in Computer Science Education, ITiCSE ’20, pp. 377–383 (2020).