good-arrow’s blog

https://good-arrow.net/

CS50 学習環境のオフライン版を ストア版 Ubuntu 20.04 に構築する

CS50とは

「CS50」は ハーバード大学で実施されているコンピュータサイエンスのコースです。
edX でも無料で受講できます。$199ドル で 修了証の発行 も実施しています。
ドル払いですが、VISA や Mastercard のクレジット決済が可能なので簡単です。

修了証発行の条件は、
9つの問題セット(つまり、プログラミングの課題)と最終プロジェクトで満足のいくスコアを獲得した学生は、証明書の資格があります。
となっています。



全体の流れ

  • WSL2(Windows Subsystem for Linux)をインストールする
  • ストア版 Ubuntu 20.04 をインストールする
  • Ubuntu に Docker & Compose をインストールする
  • Ubuntu に pip3 をインストールする
  • pip3 で CS50 IDE パッケージをインストールする



WSL2(Windows Subsystem for Linux 2)の有効化

  • WSL の有効化
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  • WSL バージョン2 で使う
wsl --set-default-version 2  


ストア版 Ubuntu 20.04 LTS のインストール

> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-20.04    Running         2

[ストア版Ubuntu 再インストール時にエラーが出る時]
https://answers.microsoft.com/ja-jp/windows/forum/windows_10-windows_store/%E3%82%B3%E3%83%BC%E3%83%89-0x80073d05/7f62b276-896f-4077-af6c-a6e076d2abfd


ストア版 Ubuntu を起動すると、最初にユーザーの作成が求められますので、
任意でユーザーIDとパスワードを設定してください。



Docker Engine のインストール

ここからは Ubuntu での操作です。
1行ずつ以下のコマンドを実行してください。

sudo apt-get remove docker docker-engine docker.io containerd runc

sudo apt-get update

sudo apt-get -y install apt-transport-https ca-certificates curl gnupg lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get -y install docker-ce docker-ce-cli containerd.io
  • Docker の起動と hello-world テスト
    ストア版 Ubuntu は systemctl が素直に動作しないので service コマンドを使用。
sudo service docker start

sudo docker run hello-world

Docker Compose のインストール

最新バージョンを確認する https://github.com/docker/compose/releases
URLのバージョン部分を書き換える。現時点では「1.29.2」。

sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose



pip3 のインストール

sudo apt -y install python3-pip



ide50 のインストール

sudo pip3 install ide50



CS50 IDE の展開と起動

sudo ide50 start

初回は少し時間がかかります。

Running on http://0.0.0.0:1337
:::1337/. Run `ide50 stop` to stop.

と表示されると起動完了です。
ブラウザで http://127.0.0.1:1337 を開くと CS50 IDE が表示されます。


ストア版 Ubuntu にサービスの自動起動の設定がないため、
Ubuntu を起動する度に Docker と CS50IDE も起動する必要があります。

sudo service docker start

sudo ide50 start



CS50x のコード実行してみる

各 Week の [Lecture → Source Code → Zip] からサンプルコードがダウンロードでき、
CS50 IDE にフォルダーごとアップロードも可能です。
bash ターミナルから ls コマンドで確認してみてください。

f:id:harukeee:20210701143947p:plain