Open edXをさわってみた
こんにちは、エンジニアの藤野です。
スパイスワークスでは、主に「Branding」と「Education」の
2つのカテゴリーのお仕事をさせていただいております。
「Education」カテゴリーでは、
大学さまや企業さまの案件でe-ラーニングの教育系システムを手がけることも多いのですが、
その際にオープンソースのe-ラーニングプラットフォームを活用することがあります。
弊社で過去に実績があるものでいうと、
PHPで動くLMS(Learning Management System)の「moodle」などがあります。
現在、目下新しいプロジェクトで、
英語学習のためのe-ラーニングプラットフォーム構築を手がけさせていただいておりますが、
そちらの案件で「Open edX」というプラットフォームを使用することになりましたので、
今回はこちらについて簡単にご紹介させていただこうかと思います。
edXとは
まず、「edX」とは、
マサチューセッツ工科大学(MIT)とハーバード大学が中心となって創立された
MOOC(Massive Open Online Course)のプラットフォームです。
MOOCとは、インターネット上で誰もが無料で受講できる大規模な開かれた講義のことです。
「Khan Academy」なども有名ですね。
こちらが本家「edX」のサイトです。
さまざまなコースが並んでいますね。
ぼくも試しにユーザ登録してみました。
上部グローバルメニューにある「Courses」の一覧や
検索ボックスにキーワードを入力して好きなコースを探せるようです。
おや!日本からも、東京大学さんが公開しているコースを発見しました!o(^-^)o
しかも歴史好きなぼくには胸熱な内容のようです。。!
さっそくクリックしてみます。
コースの概要ページに遷移しますので、「Enroll Now」ボタンを押しましょう。
こちらは、記載してある料金を支払えば、正式にこちらのコースを受講したという
証明書を発行できるもののようです。
証明書の必要がない場合には、下の青色の「Audit This Course」ボタンをクリックすれば、
無料でコースを受講することが出来ます。
これで、無事自分のダッシュボードからいつでもコースを受講することが出来るようになりました。
上部のグローバルナビに
- Home
- Course
- Discussion
- Progress
- …
といった様々なメニューが並び、多機能であることが窺えます。
主にはこちらの「Course」のページを順番に進めていくことになります。
「Course」の構成は、コース作成者が、
- Section(左サイドメニューの大カテゴリー)
- Subsection(左サイドメニューの小カテゴリー)
- Unit(上部のVideoなどのアイコンが並んだもの)
という階層構造でプログラムを自由に組み立てることができ、
各Unitは、
- Discussion
- HTML
- Problem
- Video
の4つのComponentを組み合わせて自由に作成することが出来ます。
※詳細は後述します。
基本的には、テキストページを読んだり、動画を見たり、選択問題を解いたりしながら
各Unitを進めていく感じで非常に気軽に学習することが可能となっています。
また、「Discussion」(ディスカッション)や「Progress」(進捗状況)などの機能もあり、
非常に多機能な完成されたプラットフォームだなと感じました!
以上、ざっくりと本家「edX」の概要をご紹介しましたが、
こちらのプラットフォームをオープンソースで公開したものが「Open edX」という訳です。
Open edXをインストールしてみる
それでは、実際にサーバーを立ててOpen edXを動かしてみたいと思います。
今回は手っ取り早くOpen edXを動かすために「AWS」を使用することにしました。
なぜなら、「AWS Marketplace」にOpen edXインストール済みのAMIがあったからです!
Open edX powered by Bitnami (HVM)
まず、AWSのカウントを取得してEC2 Management Consoleにログインしましょう。
「インスタンスの作成」画面で左サイドメニューの「AWS Marketplace」をクリックし、
検索ボックスに「Open edX」と入力して検索すると出てきます。
「選択」ボタンをクリックし、その後の画面でインスタンスタイプなどの設定を適当に選択し、
実際にインスタンスを作成してみましょう。
インスタンスを作成する際、キーペアの作成を求められますので、
適当な名前を付けてキーペアをダウンロードしておきましょう。
インスタンスが無事起動したらまずはSSHでログインしてみましょう。
TeraTermなどのSSH接続用クライアントで、
EC2インスタンスの「パブリックDNS」に記載されているホスト名を入力して接続してみます。
※「ec2-***-***-***-***.ap-northeast-1.compute.amazonaws.com」といったホスト名です。
※デフォルトのポート番号は22でOKです。
デフォルトのユーザ名は「ubuntu」となっています。
(TeraTermでいうと)「RSA/DSA鍵を使う」を選択し、
先ほどダウンロードしたキーペア(.pemファイル)を選択して接続します。
いかがでしょうか?無事ログイン出来ましたでしょうか?
また、上記の「パブリックDNS」をブラウザのアドレスバーに入れてアクセスしてみましょう。
私が試した時は(おそらくサーバーのスペックが低かったのか、、)
インスタンス起動後しばらくはInternalServerErrorが出続けてたのですが、
しばらく寝かせて再度アクセスしてしてみたら無事ページが表示されました。(^^;
※インスタンスタイプはスペック高めのものを選んだ方がよさそうです。。
こちらがOpen edXをインストールしたての画面となります。
上記で取りあえずOpen edXが表示されるようになったのですが、
こちらのBitnamiのAMIではそのままでは動かない箇所がありましたので、
以下補足として記載します。
画面上部にある「REGISTER」リンクからユーザ登録をする訳ですが、
起動したての状態ではActivationメールが飛んできませんでしたので、
SSHにて以下の処理を実施しました。
①:(必要であれば)パッケージリストをアップデート apt-get update ②:postfixをインストール apt-get install postfix ③:mailutils、heirloom-mailx、bsd-mailxをインストール apt-get install mailutils heirloom-mailx bsd-mailx ④:/opt/bitnami/apps/edx/conf/lms.env.json の以下の部分を修正 "EMAIL_HOST": "localhost", "EMAIL_USE_TLS": false ⑤:システム全体を再起動 /opt/bitnami/ctrlscript.sh restart
これで無事Activationメールが飛んでくるようになりました!o(^-^)o
※ちなみに、このBitnamiのAMIはインストールしただけでは動かない箇所が
他にもいくつかあるようです。。(´・ω・`)
コース登録画面
Open edXはユーザ登録すると、コースを受講できるだけでなく、
デフォルトでコースを作ることも出来ます。
ポート番号「18010」でブラウザにアクセスしてみてください。
先ほどのパブリックDNSでいうと以下のようなかたちになります。
ec2-***-***-***-***.ap-northeast-1.compute.amazonaws.com:18010
「Studio Home」と題された以下のようなページが開きますでしょうか?
こちらの画面からコースを登録することが出来ます。
操作は直感的ですので、画面に従って、
- Course概要
- Section
- Subsection
とコースの枠組みを構成していき、各SubsectionにコンテンツとなるUnitを追加していきます。
上で少し触れましたが、Unitの内容は
- Discussion
- HTML
- Problem
- Video
の4つのコンポーネントを自由に組み合わせてコンテンツを作成することが出来ます。
Unitの編集画面はこんな感じです。
最下部にある緑色の各コンポーネントのボタンをクリックして追加し、
非常に操作しやすくコンテンツを登録することが出来ます。
動画はYouTubeなどのURLを貼り付けるだけでOKです!
Open edXの構成
上記で構築したOpen edXの構成は以下の通りです。
- OS : Ubuntu
- Webサーバー : Nginx
- DB : mySQL
- プログラム言語 : Python
- 使用されているフレームワーク : Django
あとがき
Open edX自体は非常に多機能で完成度の高いe-ラーニングプラットフォームだなと
感じています。
スパイスワークスではe-ラーニングサービスを手掛けさせていただく機会が多いので、
是非Open edXの知見を習得したいなと考えています。
しかし、新しいプラットフォームですので、情報がすごく少ない(特に日本語の情報が、、)
のがなかなかつらいところではあります。
スパイスワークスでは普段主にPHPを使用しているので、
まったく新しいPython+Djangoという組み合わせに大変苦戦しながらも、
試行錯誤しながら仕様の理解を進めていっております。
ですので、我々もOpen edXについて得た知見はこのようなかたちで
折を見て随時情報発信していければなと思っています!
私は今回のOpen edX案件にはPMとして関わらせていただいておりますが、
無事、サービスがローンチされた際にはまた是非ご紹介させていただければと思います!