開発環境はどう作る?
情報教育委員会の片岡です。
本校でも、Google Colaboratory、Adobe Express、Canva等々、多くのWebブラウザをベースとしたサービスを生徒、職員も活用しています。
しかし、一歩踏み込んだ使い方をしようとすれば、サーバーの構築を行い、プログラミングをして、様々な処理を行う必要があります。
学校の先生がそのようなことをする必要があるのか?と問われれば、なかなか難しい話ですが、「STEAM」にはEngineeringの要素もあるため、やはり、ある一定の開発能力は必要だと思います。
個人的には、「Nginx」、「PHP」、「MySQL(MariaDB)」のさわりの部分くらいは、プログラミング教育が必須となった昨今、すべての教員が体験しておいても損はないと思います(^^)
これらを先生自身が学ぶ場合、
MacやPCにVMwareやParallelsを入れて仮想OSで試す
VPSを借りてそこで試す
MacやPCのローカル環境にインストールする
MacやPCにコンテナベースの仮想環境を作る
おもに4つの方法が考えられます。
1については、主にハイパーバイザーという技術を用いた仮想化技術です。Linux環境を丸ごとインストール出来るメリットやSSDにイメージを持ちバックアップをとれるメリットがある反面、ベースOS上で仮想化アプリケーションを動作させ、その上でフルスペックのOSを動かすために、相当のオーバーヘッドがあります。プロセッサはM1Pro、M2 Pro、M3 Pro、かつメモリは32GB以上が必須でしょう。
2については、サーバー環境を外に移すことが出来るため、ローカルマシンについてはVS CodeとGitHubクライアントが動作すれば十分かと思います。ちなみに私、電気科片岡はSourcetree派です。
しかし、インターネット上のサーバーを管理するわけですから、FWによるパケットフィルターなども自分で行う必要がありますし、実験環境と実運用環境を2つ用意するとなると、費用もかさみます。
また、設定が行き詰まった場合はアクセス不能に陥る可能性、設定ミスで踏み台にされる可能性も考慮すると、手軽ですがハードルは高いと思います。
ただ、コンテナベースのサービスをVPSの環境に構築して、VPSは基本機能のみ、あとはコンテナベースという運用も考えられます。(個人的にはAWSやGCPの料金が折り合えば、そこにコンテナを展開ということもやってみたいと思っています)
3について、自分のマシンですので、好きなように設定が出来ます。ローカルで動作しますから、相当な動作速度を得られます。多くの方が、この環境を試すことと思いますが、「自分のマシンの環境が汚れる」という最大の欠点があります。
例えば、macOS SonomaにはXcodeコマンドラインをインストールすることでPython3.9.6がインストールされますが、2024年6月現在は3.12.X系が最新です。これを、ネット情報を頼りに無理矢理インストールした際に、標準の3.9.6の扱いはどうなるのか、OS的に大丈夫なのかと心配になります。そのためのvenvではあるのですが…。
ですので、お勧めは4の「コンテナベース」の仮想環境です。
図の様に、VMWareやParallelsとともに、ゲストOSをインストールするのではなく、LInuxベースとなるコンテナエンジン(Dockerなど)をホストOSにインストールし、その上でコンテナと呼ばれるアプリケーションのパーツを動かすことがポイントです。
例えば、HTMLの勉強をしたいので、「Nginx」を導入する場合は、「1」の例ですと、Parallelsのインストール→LinuxOSのインストール→Nginxのインストールとなります。コンテナ技術を使うと、ホストOSにDockerのインストールは必要となりますが、ネット上のDocker HUBから、Nginxのコンテナをダウンロードするだけで動作します。Nginxだけですから、容量も小さいため動作も軽快です(ゲーム機のカセットを抜き差しする感覚です)。
コンテナ技術の良いところは、もう一つあります。仮に、ダウンロードした「Nginx」環境がテスト&テスト&テストでめちゃくちゃになってしまった場合でも、そのコンテナを「削除」すれば終わりです。ハイパーバイザー型の環境の場合は、最悪OSごとインストールし直しですから、その点でも学習コストは低いと言えます。
前述のDocker HUBには様々なコンテナがあるほか、Docker Fileなるテキストファイルを記述することで、「サービスA」と「サービスB」を持ったコンテナを簡単に何度も作ることが出来ます。
なかなか研修の時間が取れない時代ですが、ぜひDockerにチャレンジしてみてください。自分のMac環境を汚さずに楽しい研究が出来ますよ!
なお、このような開発を行うためには、「macOS」または「Linux」がお勧めです。WindowsにはWSL2がありますが、元の環境はUNIXではありません。macOSやLinuxは、OSそのものが「UNIX準拠」ですので、インターネットの技術と親和性が高くなります。
Raspberry PI 5もなかなか高速ですが、SDカードの速度が極めて遅いので、おすすめしません。
当然ですが、コンテナ=Dockerでありません。コンテナ技術そのものは大変注目度が高いため、さまざまなメーカーや団体のコンテナ技術が存在します。自分はFlaskやNuxt、Firebaseで遊んでいるだけですが、K8s(クーベネティス)が理解出来たら、どれほど楽しいことでしょうか(^^)
DockerのMacへの導入に関しては、下記サイトがとても参考になります。