GIGAスクール端末でどこまで開発環境が整えられるか(chromebook編)

2023/2/9 紹介するツールが少ないですが、順次追加していく予定です。
windows編は[こちら](https://qiita.com/harryp0tterK/items/1d1b6a85d3bf9d51ada5)

## はじめに
初投稿です。
GIGAスクール構想として一人一台端末が配布されてから約二年が経ちました。
現役中学生の自分が、2年間端末を使ってみて、プログラミングがどこまでできるのか試して感じたことを書こうと思います。
GIGAスクール構想について詳しいことは[こちら](https://www.mext.go.jp/a_menu/other/index_0001111.htm)で説明されています。
GIGAスクール構想のなかで、2020年度からプログラミングの授業が必修となりましたが（高校でも情報Ⅰができました）、現状、3学年の技術科で数時間程度扱うだけです（2年生なので受けたことはありません）。そのプログラミングも、scratchなどのビジュアルプログラミングのみが必修となっており、高校に入ってテキストベースの疑似プログラミングを学ぶとき、苦労するのではないかと思いました。
そこで、htmlをはじめ、どのような言語がどのような環境でできるのかを試してみました。

## 端末スペック
自分の中学校では[この](https://jp.ext.hp.com/prod/notebooks/business/chromebook_x360_11_g3_ee/)端末が配布されました。
スペックはceleron N4120、メモリ4GB、ストレージはemmc32GBです。

## 前提条件
1\. Chromebookでのlinux環境を使うことはできません。自治体によっては使えるところもあるようですが、自分の端末は教育委員会によって制限されています。
2\. ブラウザのフィルタリングがあります。githubなどはブロックされていませんが（今の所）、ブログや個人サイトはブロックされやすい傾向があります。特に、.comや.jpといった主要なドメインはブロックされがちです（理由が教育というのもある）。
3\. USBブートによるOSの起動はできません。1.と同じく、開発者モードが使えないためです。
4\. androidアプリは許可されたもの以外インストールできません。

## おすすめツール
自分が使ってみてよかったツールを紹介します。

### 必須級

1\. [VSCode ブラウザ版](https://vscode.dev/)
まずはど定番です。ブラウザで使えるテキストエディタはこれが一番使いやすいです。chromeos標準のテキストエディタもwindowsのメモ帳よりは使いやすい(html,css,javascriptは色分けされる)のですが、インデントも自動でやってくれてほぼすべての言語に対応しているのでいいですね。デスクトップ版の拡張機能なども一部使えますが、pythonなどの拡張機能はまだ使えないようです。リリースから一年も立っていないので、今後の進化が楽しみです。アカウント無しで使えるのも好印象です。

2\.[Github Codespace](https://github.co.jp/features/codespaces)
linuxを使える人ならこれをおすすめしたいです。CPU4コア,RAM8GB,ストレージ32GBも使えて無料です！！使った感じ、WSLに近いような気がします。
ubuntuがそのまま入っているので、pythonを始め、ほとんどのプログラミング言語が使えます。ポート開放などもボタン一つでできるので素晴らしいです。ちなみにsshもできます。VPSのように外部に公開したりとかはできないのと、GUIは使えない（当たり前）のが少し惜しい気もしますが、スキルさえあれば、ほとんどのことができるでしょう！無料になってから半年も経っていないので、情報はあまりないですが......
　
ただし、githubアカウントが必要なので、メールを受信できる環境（スマホでもなんでもいいので）が必要です。githubもgoogleとかmicrosoftで認証できればな......

3\.[Google Colabratory](https://colab.research.google.com/?hl=ja)
知っている人も多いと思いますが、pythonならこれじゃないでしょうか。ファイル読み込みもできるし、ほとんどのライブラリが使えるし、もう言うことなしです。ngrok経由で公開もできたはず。ただ、自分の学校ではgoogle系のサービスで謎に使えない時期が一年ぐらいありました。そこは自治体の裁量次第ですね。

4\. [Github Pages](https://docs.github.com/ja/pages/getting-started-with-github-pages/about-github-pages)
デプロイできるのは自分の環境だとこれぐらいですかね。静的ファイルに限りますが、ホームページとかデプロイするには丁度いいと思います。ファイルも25MBまでならドラック&ドロップでアップロードできるので、コマンドが使えなくても使えるのはいいですね。

### 初心者向け
[Scratch](https://scratch.mit.edu/)
説明しなくてもいいぐらい有名ですね。ビジュアルプログラミングだったらこれ一択でしょう。
ゲームから入れるのでハードルも高くないですし、公開して他の人と自分の作品を共有することもできます。アカウントなしでもできるのがいいですね。

[Monaca クラウド IDE](https://ja.docs.monaca.io/products_guide/monaca_ide)
Scratchを卒業したあと、いきなり書いてみるのは難しいな......という人におすすめです。
HTML,css,javascript,pythonを使って、スマホアプリなどを作ることができます。
SEGAがぷよぷよをつくるチュートリアルを公開したことで知りました。
ただ、クラウド版だと、プロジェクトが一度に3つしか保存できなかったりするので、本格的にやりたいのならあまりおすすめしません。

[PyWeb](https://pyweb.ayax.jp/PyWeb.html)
最近できたばかり（まだβ版）なので、あまり知名度はないですが、pythonをブラウザだけでやってみるのにはこれぐらいしかまともなのがありません（競プロとかは別）。クラウド保存ができるのと（googledriveに保存できる）、チュートリアルがいくつかあるので初心者にはぴったりだと思います。予測変換があるのもありがたいです。webスクレイピングまでできるのはいいですね。
ただ、CUIだけでの実行になるので、アプリを作ったりするのはできません。

### マイナー系
[DartPad](https://dartpad.dev/)
Flutterで使われるDartのIDEです。Flutterは環境構築がめんどくさかったりするのですが、このサイトは一切そういうことをしなくていいので楽ですね。パッケージのインポートとかも自動でやってくれます。Flutterの利点であるホットリロードが使えないのと、firebase系のパッケージは今のところ使えないですね。手軽にFlutter触って見るには一番いいと思います。

※Flutterも少しずつ人口が増えてきていていいですね。Dart3.0でサーバーサイドまで作れるようになったのでもう少し頑張って開発しようかなー。マルチプラットフォームって点ではFlutter最強だと思います。

## まとめ
ということで、chromebook（ブラウザ）でできそうなことを集めてみました。GithubCodespaceはchromeosのlinux環境より優秀かもしれません。
ただ、このツールが使えるか使えないかは、ブラウザのフィルタリングと自治体の制限によるので、なんとも言えないですね。
ここで紹介したもの以外にも便利なツールは山ほどあると思うので、こんなのがあるよ、などコメントに書いてもらえると嬉しいです。
制限のある中で、いかにうまく環境を整えるかも面白いですね。
学校でも、良いプログラマーライフを！