Webブラウザ経由でLinuxを手軽に操作できる国産クラウドIDE「PaizaCloud」

LinuCのような技術者資格取得の学習のためには、Linuxの環境構築が必須ですが、旧型のWindowsにOSをインストールして利用する実機環境、またはVirtualBoxやVagrantなどを活用する仮想環境の構築が一般的です。

学習環境の構築は大事ですが、OSのインストール作業に絞ってみると、さほど重要ではなく、資格試験の範囲外になります。また、インストールに必要な時間は決して短くはありません。

また、LinuCのような資格試験では特にレベル1などで学習する内容からすれば、必ずしも同じ学習環境を使い続ける必要はありません。

クラウド型の開発環境を提供するサービスを利用すれば、ブラウザだけで操作可能なLinux環境を使えるため、環境を用意する時間や手間を省き、業務や学習に集中できます。

クラウド型IDEにはどんなものがあるのか

クラウド型の開発環境を提供するサービスとして「Katacoda」があります。「Katacodaは海外産のサービスになりますが、同様の国産サービスとして「PaizaCloud」があります。

いずれも、Webブラウザだけで環境構築が構築できる仕組みを採用しており、WindowsやMacなど、OSの種類関係なく、誰もが同じ環境をすばやく用意できるのが特徴。そして、どちらも基本的に無料で利用できます。

また、コンテナ技術をベースにしているため、生成した各種環境いわゆるインスタンスは無限に使えるわけではなく、一定の時間が経過すると無効になるシステムを採用しています。

Katacodaとは

参考 KatacodaO’Reilly Media

Katakodaは、多彩な学習環境をコンテナ技術で提供しているクラウド型学習プラットフォーム。ティム・オライリー氏が創設したコンピュータ技術書籍の企画出版を行う出版社、米O’Reilly Media社が運営しています。Katakodaは日本向けにはローカライズされておらず、全てのサービスが英語で提供されています。

Linux OSでは、資格試験の学習用途にも使えるCentOSとUbuntuといった主要なディストリビューションの実行環境が揃っているのはもちろん、DockerやKubernetesなどのコンテナ技術について学べるコンテンツが充実しています。

Katacodaに関しては、別記事で紹介しているのでそちらをご覧ください。

PaizaCloudとは

参考 PaizaCloudpaiza株式会社

PaizaCloudは、ブラウザを開くだけでエディタ、Webサーバ、DB等の開発環境が整うクラウド開発環境。Ruby on Rails, Node.js, Django, MySQL, WordPress, Java(Tomcat), PHP(LAMP), Laravel, Goなど、主要な開発環境に対応しています。

オンラインのコーディングテストを受けることで、書類選考なしに面接・会社見学可能な求人企業が見つかるスキルアップ/転職サービスを提供しているpaizaを運営しているpaiza株式会社が運営しています。日本国内向けのサービスなので、当然のことながら日本語でサービスが利用ができます。

有料プランも用意されており、利用期限がなくなったり、利用可能なサーバの数が増えたり、サーバの保存が可能になったりします。最上位のプランでは常時起動が可能でサービスの公開まで可能です。

PaizaCloudの主な特徴は以下の通り。

ブラウザを開くだけ、3秒で環境構築が完了

クラウド上に用意されたエディタ、Webサーバ、DBサーバを利用し、ブラウザを開くだけですぐに開発を進めることが可能。

OSの種類を問わない

ブラウザを開くだけなので、WindowsやMacなど、OSの種類関係なく、誰もが同じ開発環境をすばやく用意できる。

ベーシックな環境は設定済み

ベーシックな開発環境は設定済み。Linuxのシェルを使えるため、自由に開発環境を構築することも可能。

サービスの公開、運用も可能

PaizaCloudで開発したWebサービスは、ベーシックプランに移行すれば一般的なホスティングサービスと同様にそのまま公開、運用できる。

PaizaCloudのスペック

OS

Linux(Ubuntu 18.04)

開発環境

Web開発: LAMP, PHP, Ruby on Rails, JSP, Django, Node.js, Laravel, Go, Express, MEAN stack, webpack, Yeoman, etc…

言語環境: Bash, C, C#, C++, Clojure, Cobol, CoffeeScript, D, Elixir, Erlang, F#, Go, Haskell, Java, JavaScript, Kotlin, MySQL, Objective-C, Perl, PHP, Python2, Python3, R, Ruby, Rust, Scala, Scheme, Swift, VB, etc…

データベース: MySQL, PostgreSQL, MongoDB, SQLite, etc…

サーバ: Nginx, Apache, MySQL, PostgreSQL Git, Heroku, wget, MeCab, Jupyter Notebook(iPython Notebook), pandas, nltk, MySQL, etc…

ライブラリ: Pytnon: Numpy, scipy, pika, matplotlib, scipy, pandas, etc…
Ruby: rails, sinatra, sqlite3, etc… Others: imagemagick

ツール: Jupyter notebook(iPython Notebook), Git, Heroku, wget, curl, ping, traceroute, MeCab, pandas, nltk, awssdk, PHP composer, etc…

推奨動作環境

OS: Windows8.1以降、Mac OS X 10.13以降、iOS12以降、Android8以降
ブラウザ: Google Chrome最新版、Firefox最新版、Safari最新版、Microsoft Edge最新版

登録方法

登録は無料。
メールアドレス、ユーザ名、パスワードで登録可能。
GitHub、Facebook、Googleのソーシャルログインでも利用登録が可能。

無料プランと有料プランの違い

内容無料プランライトベーシック
金額無料月額980円〜月額1,980円〜
利用期間(同じサーバ環境を継続利用できる時間)24時間制限無し制限無し
連続起動時間ブラウザ開いている間 (最大4H)ブラウザ開いている間 (最大4H)常時起動
サービス公開制限公開不可公開不可公開可能
利用可能サーバ数13常時1+3
スペックCPU2コア,メモリ2GB,ディスク1GBCPU2コア,メモリ2GB,ディスク2GBCPU2コア,メモリ2GB,ディスク4GB

Linuxの基礎を学ぶ程度であれば、無料プランで十分です。

実際にPaizaCloudを使ってみよう

PaizaCloudは、ユーザー登録をするだけで無料で利用できます。GitHub、Facebook、Googleのソーシャルログインでも利用登録が手軽でおすすめです。

ログイン後はサーバ作成画面に遷移するので、任意の名前を付けて新規にサーバを立ち上げます。

Linuxだけ操作したい場合は、特に指定せず新規サーバ作成をすればOK。サーバ起動直後は以下のよう画面になります。

初期画面はマルチウインドウモードと呼ばれており、ターミナルやブラウザを同時に表示できます。画面左のメニューからターミナルやブラウザをクリックすれば以下のようにマルチウインドウ形式で表示されます。

ターミナルを画面いっぱいに表示したい場合は、Windowsのようにウインドウ右上のアイコンをクリックします。

Katacoda同様、PaizaCloudもCLI操作が基本ですので、ターミナル画面でコマンドを入力して操作します。

基本的なシステム情報の確認

~$ uname -a
Linux linuxtest 4.15.0-96-generic #97-Ubuntu SMP Wed Apr 1 03:25:46 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
~$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
~$ date
Wed Dec 9 07:10:34 UTC 2020
~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 224744 7752 ? Ss 07:07 0:00 /lib/systemd/systemd --system
root 65 0.0 0.2 78432 5788 ? Ss 07:07 0:00 /lib/systemd/systemd-journald
systemd+ 106 0.0 0.2 70636 4716 ? Ss 07:07 0:00 /lib/systemd/systemd-resolved
root 109 0.0 0.3 516948 7636 ? Ssl 07:07 0:00 /usr/lib/udisks2/udisksd
syslog 110 0.0 0.1 193404 3596 ? Ssl 07:07 0:00 /usr/sbin/rsyslogd -n
root 113 0.0 0.3 300036 6228 ? Ssl 07:07 0:00 /usr/lib/accountsservice/accounts-daemon
root 114 0.0 0.7 169248 15272 ? Ssl 07:07 0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
message+ 115 0.0 0.1 50052 3924 ? Ss 07:07 0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --s
root 123 0.0 0.2 62108 5360 ? Ss 07:07 0:00 /lib/systemd/systemd-logind
root 124 0.0 0.1 30028 3020 ? Ss 07:07 0:00 /usr/sbin/cron -f
root 126 0.0 0.1 20048 2864 ? Ss 07:07 0:00 /bin/bash /usr/local/bin/paizacloud-agent-run-forever
root 130 0.0 0.0 20048 1776 ? S 07:07 0:00 /bin/bash /usr/local/bin/paizacloud-agent-run-forever
root 131 0.0 0.1 14664 2112 pts/0 Ss+ 07:07 0:00 /sbin/agetty -o -p -- \u --noclear --keep-baud console 115200,38400,9600
root 133 0.0 0.1 72300 3480 ? Ss 07:07 0:00 /usr/sbin/sshd -D
root 136 0.0 0.8 185952 17752 ? Ssl 07:07 0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdo
root 137 0.6 2.2 911504 46620 ? Rl 07:07 0:05 node --optimize_for_size --max_old_space_size=100 /usr/local/bin/paizaclo
root 144 0.0 0.3 307216 6460 ? Ssl 07:07 0:00 /usr/lib/policykit-1/polkitd --no-debug
ubuntu 236 0.0 0.1 28548 3228 ? Rs 07:08 0:00 tmux -2 set -g status off ; set -g prefix M-C-b ; set -g set-titles on ;
ubuntu 237 0.0 0.2 21228 4676 pts/2 Ss 07:08 0:00 bash --login
ubuntu 466 0.0 0.1 28372 3500 pts/1 Ss+ 07:10 0:00 tmux attach-session -t n1mcr2gjj8
ubuntu 1257 0.0 0.1 36076 3288 pts/2 R+ 07:21 0:00 ps aux

以上のように、カーネルが4.15.0-96-genericのUbuntu安定版(18.04LTS)で動作していることが確認できます。

ちなみに、Katacodaのように、Dockerが動くか確認してみました。

~$ docker -v
Docker version 17.05.0-ce, build 89658be
~$ docker version
Client: Version: 17.05.0-ce API version: 1.29 Go version: go1.7.5 Git commit: 89658be Built: Thu May 4 22:10:54 2017 OS/Arch: linux/amd64
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.29/version: dial unix /var/run/docker.sock: connect: permission denied

Dockerは導入されていますが動作しません。

~$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.29/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
~$ sudo !!
sudo docker run hello-world
docker: error during connect: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.29/containers/create: read unix @->/var/run/docker.sock: read: connection reset by peer.
See 'docker run --help'.
~$ systemctl status docker
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled) Active: failed (Result: exit-code) since Tue 2020-12-01 06:21:52 UTC; 1min 31s ago Docs: https://docs.docker.com Process: 2111 ExecStart=/usr/bin/dockerd -H fd:// (code=exited, status=1/FAILURE) Main PID: 2111 (code=exited, status=1/FAILURE)
~$ systemctl start docker
Failed to start docker.service: Interactive authentication required.
See system logs and 'systemctl status docker.service' for details.
~$ sudo !!
sudo systemctl start docker
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

katacodaとPaizaCloud、どちらがオススメ

どちらのサービスも一長一短あるのですが、Linuxの学習という観点から見た時には、Katacodaの利用をオススメします。

PaizaCloudは、サービス全体がUbuntuで動作しているので、Debian系特有のコマンド操作の確認などには最適です。一方で、CentOSなどのRedHat系OSの独自のコマンドが利用できません。また、作成できるサーバ(インスタンス)に制約があるようで、本格的な学習には少々使いにくい側面があります。

Katacodaは、CentOSとUbuntu両方ともに自由度の高いインスタンスが利用できます。また、DockerやKubernetesといったコンテナ技術の学習コンテンツが豊富に用意されているだけでなく、CentOSのインスタンスで最新版のDockerを動かすことも可能で、バージョン10でコンテナ技術が試験範囲に含まれるようになったLinuCの学習にも最適です。

デメリットは、いずれも無料で使える範囲ということになりますが、インスタンスを継続して利用することができない点が挙げられます。PaizaCloudは最大でも24時間、Katacodaに至っては操作しない状態が続くとインスタンスが無効化されてしまいます。

こうした環境だけに、Linux技術者資格の試験範囲をクラウド環境だけで学習することは、当然のことながら無理です。コンテナ技術がベースになっているサービスゆえに、使い捨て感覚で利用する方が精神衛生上も良いと思います。

学校や職場では共有マシンを使うことも多いでしょう。共有マシンゆえにセキュリティ的な側面から様々な制限が課せられることも多いですが、クラウド環境ならWebブラウザだけで利用できるので、そうした制限があっても利用できる可能性が高くなります。一時的に人からマシンを借りる場合なども、無駄なリソースを導入する必要がありませんので、迷惑をかけずに済みます。

VirtualBoxのような仮想環境の場合、アプライアンスの立ち上げに時間がかかりますが、クラウド環境ならほんの数分、数ステップでサーバが立ち上がります。

使える時間は限られますが、Linuxの基本的なコマンドは普通に実行できますし、ちょっとしたアプリケーションサーバ構築も問題なくできるので、実機や仮想環境に加える形で、KatacodaやPaizaCloudのような無料のクラウド環境を使いこなして、少しでも学習に役立ててください。

参考 KatacodaO’Reilly Media

参考 PaizaCloudpaiza株式会社

余談

PaizaCloudのシステムは、paizaが運営する初心者〜中級者向けのプログラミング学習サービス「paizaラーニング」にも使用されています。「paizaラーニング」は、Java、Python、Ruby、PHP、Cなどのプログラミング言語を動画と豊富な演習問題で基礎からしっかり学べるサービスですが、Linuxの基礎が学べる講座も用意されています。無料で聴講できる内容もそこそこあるので初学者の方はぜひ活用してみてください。

講座では、下の画像のように、画面の左に動画、右にPaizaCloudが表示されます。右のターミナルは、動画を見ながら操作もできますし、動画終了後の演習にも利用します。