先生のためのDocker入門レポート

2021年7月20日(火)18:30から、「先生のためのDocker入門」を開催しました。本記事ではこのハンズオンおよびその後の意見交換の模様をレポートします。

「先生のためのDocker入門」をやろう!

今回のイベントを企画した背景には、「さくらの学校支援プロジェクト」を通じて知り合った先生との何気ない会話がありました。Facebookでとある公立小学校の先生がDockerの勉強を始めようとしているという投稿があり、筆者が反応したところから企画がスタートしました。さくらインターネットでは初心者向けのDocker入門ハンズオンをすでに何度か開催していたため、ハンズオン用の教材はありましたし、講師も確保できる状況にありました。

ただ、問題はひとつ。先生(主に公立の小中高の先生)をターゲットにして参加者は集まるのか?ということ。試しにDockerの勉強をしようとしている先生の投稿にこのような投げかけをしてみました。

需要はありそうでしょうか?とお訊ね

いいね!をしてくださった先生方が今回の参加者となったのですが、「Docker」という単語に反応し、それを勉強したいと思う方が、Facebookの知り合いという狭い範囲でも複数人いらっしゃるということがわかりました。

われわれも、小中高校の学びの変革や、学校のDX推進といった場面で、Dockerを使って具体的に何ができるのかイメージできていない面もあり、一緒に勉強をしようということで、今回少人数でのハンズオンと意見交換を実施することになりました。

DockerでScratchを動かす

1時間ほどは座学でDockerの基本をお勉強。参加された先生方は、書籍などでDockerについてあらかじめ概要を把握しており、講師からの詳細な説明で理解を深めていました。特に、仮想サーバーとDockerの違いや、コンテナとDockerの関係性については丁寧な説明がありました。

初心者向け…とはいえ、ここまでの説明はサーバーについての基礎知識やサーバーの運用経験がないと理解が難しい部分です。

Dockerについての説明

基礎講義の後は早速Dockerの環境をさくらのクラウド上に構築していくハンズオンに入っていきます。講師の指示により、それぞれがさくらのクラウドのコントロールパネルにログインし、指定のサーバー(CentOS 7.9 64bit / CPU:4仮想core / memory:4GB)を立ち上げます。

サーバの作成

立ち上げたサーバーにそれぞれSSHで接続し、Dockerの構築をしていきます。

接続のためのターミナルソフトなどは先生方の方ですでに準備がされている前提で話は進んでいきますが、特に質問もなくスムーズに進んでいきます。

今回構築するDockerイメージには、「Scratch GUI」を搭載しました。Scratch」とは、ブラウザ画面を通してプログラミングでき、小学校プログラミング教育でも使われる環境です。この Scratch から SNS のコミュニケーション機能を取り外し、プログラミングだけを利用できるようにしたものが「 Scratch GUI 」です。Scratch GUIはオープンソースとして公開されています。Scratch GUI を使うためには、Node.jsが必要になるため、通常であれば最低でも以下のような手順が必要になります。

  1. Scratch GUI のインストール
  2. Node.jsのインストールとセットアップ
  3. Node.jsの起動
  4. Scratch GUI の起動

LinuxでもWindowsでも同じことが言えますが、複数のアプリケーションをインストールする場合、それぞれの依存関係などを気にする必要があります。ある程度の期間運用していくことを考えると、OSやそれぞれのアプリケーションのバージョンアップなどにより、今まで動いていたものが急に動かなくなることもあるでしょう。

Dockerイメージを使うと、そういった依存関係を維持したまま簡単に環境の複製ができ、元となるサーバーOSが何であろうが同じように使えるというメリットがあります。

1つのサーバー内で、複数のScratchを別々の環境として稼働させる場合、更に手順は複雑になります。各所の名前が重複しないようにしなければなりませんし、Node.jsをScratchがどのように利用するかによっても設定が異なってきます。もし、アプリケーションのバージョン変更をすることになれば、複製した1つ1つに対して作業が必要になり、ミスも発生しやすくなります。そうした環境で起こったミスを発見して修正するのは、大変なことですね。

今回は、すでに作成済のDockerイメージを展開する方法で、環境構築を行ってみました。手順は大きく分けると以下の2つです。

  1. Dockerのセットアップ
  2. Scratch GUIコンテナの実行

説明を聞きながらそれぞれの環境を構築し、参加者各自が自分のサーバーのIPアドレスにブラウザでアクセスして、Scratch3.0が表示されるところまでできました!サーバーの作成からここまでで約20分。作成済のDockerイメージを利用していますので、非常に簡単にサーバー上の環境構築ができました。

Scratchが動作する様子

今回の場合、CentOSにインストールしたScratch3.0を、Node.js経由で、クライアントはブラウザを通して見ていることになります。

今回作成した環境と、アプリ版、オンライン版を比較すると、このような違いがあります。

アプリ版 オンライン版 今回
クライアントPC・タブレットへのインストール 必要 不要 不要
アクセス先 PC・タブレットにインストールしたアプリケーション ScratchのWebサーバー(ブラウザ経由) 今回作成したサーバーに保存したアプリケーション(ブラウザ経由)
Scratchプログラムの保存先 PC・タブレット内 Scratchのサーバー内(要アカウント作成)またはPC・タブレット内 PC・タブレット内
他のScratchファイルの共有 できない(クラウドストレージ等を使えばできる) 世界中に共有できる(共有範囲は絞れない) できない(クラウドストレージ等を使えばできる)

サーバーにDockerを使ってScratchの環境を構築することにより、例えば学校の制約で自由にアプリケーションがインストールできないクライアントPCでScratchを利用することができる、1台1台のクライアントPCへのインストールが不要であるため、アプリケーションのバージョン変更があってもサーバー側で入れ替えるだけですぐに使えるなどの利点があります。

オンライン版を利用するという方法ももちろんあるのですが、例えばインターネット環境があまり良くない場合、インターネットに接続しなくても校内LANの中でクライアントPCがサーバー内のアプリケーションにアクセスするといった使い方もできるでしょう。

今回は、一つの例としてScratchをDocker環境で動かしてみましたが、こういった選択肢も含めてこれからの教育の中でどのような使い方ができるのかを考えてみる良いきっかけとなったと思います。

Docker×学校教育 どんな未来が待っている?

意見交換の様子

ハンズオンの後は、実際にDocker環境を構築してみた先生方と、学校でDockerを利用することによって広がる可能性について意見交換を行いました。

ご自身でも開発をされ、学校で利用できるツールの試行錯誤をされている先生は、ツールの配布が手軽にできるのではないかとお話しされていました。また、悩ましいところですが現状で学校側のセキュリティ要件に合わせた場合、Scratchのオンライン版を利用できないケースがあり、対処療法的ではありますが課題解決の一つの方法かもしれないという話がありました。

高校あたりでは、このDockerを使って個人に自由に使える開発環境を配分するという方法が具体的に利用できそうだという話があり、気になるのは必要なサーバーのスペックやサーバー費用がどの程度かかるのかということであるという話が出ました。個別環境を渡すことができれば、プログラミングだけでなくコンピューターやネットワークの仕組みを学ぶためにも利用できそうだということで利用イメージは広がります。教材準備で使え、先生のリテラシーに合わせた段階的なDockerイメージの配布などが、先生方の助けになりそうだというご意見がありました。

先生方にいろいろなアプリケーションやコンピューターのさまざまな機能を心置きなく試してもらい、自信をつけていただくためにも、セキュリティの心配がなく、機材やアプリケーションが壊れることを気にしなくてもいいDocker環境上での研修機会があると良いのではといったご意見もありました。

今回は、学校教育でのICT活用において最先端と言える先生方を中心にハンズオンを実施しましたが、学校のDX化を考える上ではICT支援員や教育委員会などにももっとDockerを使ってできることについてアピールしていく必要がありそうです。

また、IT企業のエンジニアに近い程度のリテラシーを持つ先生が、多くはないが現場にいらっしゃることを踏まえ、「最先端の先生」の活躍の場をどう作っていくのかといったことも考えていきたいです。

私たちも今回の学びを元に、さらにその内容を検討していきたいと思います。