
Web ブラウザで実現する情報科学・バイオインフォマティクス向け Linux 実習環境 3 選
はじめに
情報科学やバイオインフォマティクスの演習では、受講者への Linux 環境の提供が課題となっています。Windows、Mac の OS の違いなどもあり受講者全員に同じ演習環境を提供するのは容易ではありません。本記事では、Web ブラウザから接続できる Linux 実行環境を検証し、小規模講義向けの最適解を探りました。
課題を解決したい
課題解決のため、Web ブラウザから接続可能な Linux 環境を検討しました。この方法なら受講者の PC 環境に依存せず、全員に同一の学習体験を提供できます。結果として、教員と受講者双方の負担を大幅に軽減できます。
教員・技術スタッフの課題
- 多様な受講者の PC 環境への対応が難しい
- 講義中の技術的なトラブル対応に時間を取られる
- オンライン・オフライン両方の開催形態への対応が必要
受講者の課題
- SSH 接続、ポートフォワーディングなど準備の段階でつまづく
- 環境構築に時間を取られ、本質的な学習に集中できない
想定した前提条件
以下の環境を想定しました。
項目 | 内容 |
---|---|
規模 | 20名以下の小規模クラス |
開催形態 | オンライン・オフライン両方に対応 |
主な対象 | バイオインフォマティクスや、情報科学系の実習講義 |
受講者 | Linux操作の初心者を含む多様な背景の学生 |
管理者スキル | クラウド技術に特別詳しくない教員や技術スタッフ |
運用条件 | 研修室単位でも導入・運用管理が容易であり、ランニングコストも抑えること |
インフラ構成
EC2 1 台で簡潔に構成することを目指しました。単一サーバーでの運用は、AWS をはじめとするクラウドサービスの知識が限られている方でも導入できるよう学習コストを下げる目的です。
OS は Ubuntu 24.04 LTS で検証しています。
触って確かめてみた
以下の 3 つのソリューションを比較検討しました。
ソリューション | 概要 |
---|---|
code-server | Web IDE |
The Littlest JupyterHub | JupyterLabの複数ユーザーアクセス対応版 |
Open OnDemand | HPC向けのWebポータル |
機能比較
実際に各ソリューションを検証した結果、以下のような機能比較になりました。なお、この評価は筆者の主観的な部分も含んでいます。
機能 | code-server | JupyterHub | Open OnDemand |
---|---|---|---|
マルチユーザー対応 | ⚠️ 非推奨 | ✅ ネイティブ対応 | ✅ ネイティブ対応 |
ログイン機能 | ⚠️ パスワード認証 | ✅ 複数の認証方式対応 | ✅ 複数の認証方式対応 |
ファイル編集 | ✅ VS Code互換 | ✅ | ✅ |
ターミナル | ✅ | ✅ | ✅ |
ファイルアップロード | ✅ | ✅ | ✅ |
ファイルダウンロード | ✅ | ✅ | ✅ |
画像ファイル表示 | ⚠️ SSL証明書が必須 | ✅ | ❌ |
単一サーバ運用 | ✅ | ✅ | ⚠️ 非推奨 |
拡張性 | ⚠️ | ️️⚠️ | ✅ ※1 |
導入の容易さ | 低 | 中 | 高 |
学習コスト | 低 | 中 | 高 |
※1: Open OnDemand から Jupyter Notebook, code-server ともに利用可能
code-server
code-server はシングルユーザー向けプロダクトです。公式にはマルチユーザー構成は非推奨とされています。しかし、リバースプロキシを設定することで、シングルホストでもマルチユーザー対応は技術的に可能でした。
ログインユーザーは、Linux 上で一般ユーザーとして作成する必要があります。ログインは一般ユーザーのユーザー名、パスワードではなく code-server の設定ファイルで指定したパスワードを使います。
ログインすると VS Code と同じ画面が開きます。ログインした一般ユーザーの権限でファイル編集やターミナルが使えます。ローカル PC から SSH 接続する必要がありません。
構築方法は以下のブログで紹介しています。
上記のブログで紹介している構成では、リバースプロキシに Caddy というお手軽な Web サーバーを採用しました。画像ファイルを表示させるには SSL 証明書が必要で、Caddy は Let's Encrypt との連携が容易だからです。
Caddy の設定は単純で見通しが良いものの、Web から確認できる情報が少ないため設定値はトライ&エラーで試す必要がありました。長期運用を考えると、より普及している Nginx をリバースプロキシとして採用する方が無難でしょう。
所感
個人的には code-server は、スクラップアンドビルドで必要なときに演習環境を用意する運用する方が向いている思います。
JupyterHub
The Littlest JupyterHub は、マルチユーザー向けに JupyterLab 環境を提供するオープンソースプラットフォームです。
ユーザー認証は柔軟に設定できます。管理者が事前にユーザーを作成しておく方法や、受講者にサインアップしてもらい管理者が承認する方法も選べます。
初回ログイン時に Linux 上に一般ユーザーが自動作成されます。Jupyter Notebook はもちろん、ターミナルも使用可能です。
構築方法は以下のブログで紹介しています。
所感
ユーザー管理機能がデフォルトで搭載されているため、Jupyter Notebook、ターミナル、エディタが必要な用途では最も手軽なソリューションでした。
Open OnDemand
Open OnDemand は HPC クラスタ向けの Web ポータルを提供するオープンソースソフトウェアです。HPC クラスタ向けのソリューションのため、シングルホストでの運用は非推奨です。Web ポータルから Jupyter Notebook や code-server へ接続でき、拡張性は抜群です。
ですが、公開情報が少なく設定するのに時間がかかり検証を打ち切りました。Web ポータルでログインしてターミナルが使用可能なことは確認しました。
ターミナルの利用方法が可能な構築方法は以下のブログで紹介しています。
所感
研究室単位で環境を維持するのは大変。気軽に使うものではなく、HPC クラスタを利用するのに Web UI が欲しいときのソリューションでした。
まとめ
小規模向けの情報科学の演習では、導入・運用の容易さと機能性のバランスから、The Littlest JupyterHub か code-server を推奨します。code-server はシンプルさが利点ですが、マルチユーザー対応は自前で作り込む必要があります。その点、JupyterHub は最初から必要最低限の機能が揃っています。
教員は環境構築・管理の負担を軽減しつつ、受講者は環境構築の複雑さを回避して講義の本質的な内容に集中できる学習環境を実現できるのではないでしょうか。
おわりに
以前、「遺伝統計学・夏の学校」に参加したことがあったのですが、環境構築や、個々の PC 依存の問題で講義中のトラブルシュートでスタッフの方々が大変そうでした。
東京大学 遺伝情報学・大阪大学 遺伝統計学・理研IMS システム遺伝学
今回はコンテナ化するなど様々な方法が考えられましたが、シンプルに EC2 に SSH 接続以外の方法でアクセスさせるのが学習コストが低くて良いと考えました。2 週間かけて様々なソリューションを試した結果をまとめた記事です。