🏫

GIGA スクール構想における Web の重要性

2024/09/23に公開

文部科学省が 2019 年から、児童生徒向けの 1 人 1 台の端末と、高速大容量の通信ネットワークを全国的に、一体的に学校に整備することを進めています。
これを、 GIGA スクール構想と呼びます。これにおける Web というプラットフォームの重要性について話したいと思います。
学校向けの開発をするときに役に立つかもしれません。
また、学校向けの開発の Tips も紹介します。

対象読者

  • Web が好きな人
  • GIGA スクール構想をターゲットにした開発をしようとしている人

どういう端末なの?

n=1 の前提で話していきます。(多分だいたい公立なら同じ)。

フィルタリングがかかっていて、また端末の動作が制限されています。
具体的には

  • Web サイトへのアクセスが制限される
  • アプリのインストールが制限される

といった制限があります。

私の自治体の端末は iPad です。このように制限されたアプリのみがインストールされています:
IMG_3766

Web サイトへのアクセスが制限される

これは、有害なサイトや SNS から生徒を守るためにあります。私の自治体の場合、ブラックリスト型のフィルタリングが採用されています。話を聞いた限りほとんどの自治体がこれだと思います。
つまり、特定のサイトがブロックされて、それ以外はアクセスできるということです。作りたての有害サイトはブロックされません。

アプリのインストールが制限される

私の自治体では、 iPad に対するアプリのインストールが制限されます。 App Store が使えないということです。
アプリのインストールには、教育委員会などの許可になっていて、個別ではなく全体に適応されるため、非常にアプリのインストールのハードルが高いです。信頼できる開発者ではないとインストールできず、例えば学習アプリを作ったとしても GIGA 端末で使ってもらえるハードルは高いかもしれません。

Web の重要性

書いた通り、GIGA スクール構想での端末にはさまざまな制限がついています。ネイティブアプリを作ったとしても、インストールされるハードルは高いかもしれません。

そこで Web です!
前述の通り、ブロックされなければどのような Web サイトにもアクセスすることができるのです!

ネイティブアプリが使えなくても、 Web で解決することができます。

Web の強み

Web は、インストールしなくてもブラウザさえあれば開いて、使うことができます。インストールが制限される学習用端末に最適です。
また、最近の Web はできることがたくさんあります。ネイティブアプリの代わりに Web で開発すれば、ネイティブアプリより多くの学校ユーザーを獲得できることでしょう。

いい感じに GIGA 端末と相性がいい、それが Web です。

私の学校で、学校としてネイティブアプリを使わず、 Web 上で使っているサービスを紹介します。

  • Quizlet
    • IMG_3767
    • 単語カードによる暗記アプリです。アプリ版もありますが、Web を用いています。
  • Kahoot!
    • オンラインでクイズをして、その結果を競うことができます。
  • Padlet
    • 生徒が書き込んでいく、情報共有のための掲示板です。

これらのサービスは、Web でなかったらきっと採用されていないでしょう。

GIGA スクール構想向けサービスを作るときの Tips

私がいろいろ開発してきた中での Tips です。私の自治体の環境のみの情報ですが、役に立つかもしれません。

リアルタイムアプリの注意点

Long Polling または SSE を実装することをおすすめします。

私の環境では、プロキシを用いてフィルタリングを行なっています。(詳しくは以下の記事:)
https://zenn.dev/nakasyou/articles/20231022_about_school_filter#フィルタリングの仕組み

WebSocket はこのプロキシでブロックされてしまう可能性があるので、その他のリアルタイム通信手段を使う必要がある場合があります。

例えば、以下のコードは

const ws = new WebSocket('ws://example.com/realtime')
ws.onmessage = (e) => console.log(e.data)
ws.send('hello world')

以下のように EventSource + fetch で置き換えることができます。

const sse = new EventSource('/realtime-sse')
sse.onmessage = (e) => console.log(e.data)
await fetch('/realtime-send', {
  method: 'POST',
  body: 'hello world'
})

SSE は私の環境だとなぜか使えないので、私は Long Polling でリアルタイム処理を実装しています。Socket.IO などを使うのもいいかもしれません。

ローカルファイル操作に気をつける

ファイルをユーザーに操作させる必要がある場合、そこに注意が必要です。ファイルの移動などができない端末もあるため、ローカルファイルの操作を意識させない作りにすることがじゅうようです。

同じ IP アドレスからの大量のリクエスト

フィルタリングの際に、全国のフィルタリングサービスを使っている生徒からのアクセスが、少数の IP アドレスのプロキシから大量にまとめられてくる可能性があります。
不審に思い 429 などをすると、学校やフィルタリングサービス単位でサービスが使えなくなるかもしれません。ブロックするのではなく、Captcha などを使用するのが効果的かもしれません。

学校の端末で ChatGPT や Quizlet にアクセスすると、高確率で Cloudflare が Turnstile を出してきます。

まとめ

GIGA スクール構想で、Web は重要だと思います!
Web 開発者がもっと増えるといいですね。

GitHubで編集を提案

Discussion