Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

開発初心者のためのMoodleプラグインの開発と利用(第一部) for Moodle Moot 2015

8,448 views

Published on

本日開催中の moodle moot japan 2015 kyoto で発表させて頂いたスライド資料を公開させて頂きます。参加頂いた皆様、ありがとうございました。なお、資料の枚数が増えてしまうために、1枚のスライドに多くの情報を載せております。見づらい点はご容赦ください。

Part1:Moodleプラグイン開発の概要(40分)
~内容~
1.はじめに(プラグイン開発について)
 Moodleのプラグイン開発についての概要と流れ
2.XAMPP、エディタ、DBツールを使った開発環境の整備
 Moodleの開発環境を無償のツールで揃える方法
3.PHPプログラミング基礎の基礎
 初心者が最低限知っておくPHPの書き方、デバッグの仕方
4.プラグインの開発方法
 プラグインの仕組みと構成、開発の手順を紹介
5.プラグイン開発例(既存ブロックのコピー)
 HTMLブロックをコピーし、オリジナルのブロックを作成

Part2:各種プラグインの開発例(40分)
~内容~
1.ブロック開発のポイント
 Part1に続き、ブロック開発に必要なポイントの紹介
2.テーマの開発とポイント
 Cleanテーマをコピーし、オリジナルを作成 テーマ開発の流れと開発に必要なポイントを紹介
3.活動モジュールの開発とポイント
 モジュールテンプレートをコピーし、オリジナル「15パズル」を作成 活動モジュール開発の流れと必要なポイントを紹介
4.まとめ・質疑応答
 弊社オリジナルの開発事例の紹介(ローカルプラグイン等)、まとめと質疑応答

Published in: Education
  • Login to see the comments

開発初心者のためのMoodleプラグインの開発と利用(第一部) for Moodle Moot 2015

  1. 1. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers 開発初心者のための Moodleプラグインの開発と利用 Time: 2015.2.21 09:30-11:00 Room: 5405 株式会社テクノウォーカー 山岡 茂治 7th Conference for Moodle Teachers and Developers Moodle moot japan 2015 Page. 1 Part1:Moodleプラグイン開発の概要(40分)
  2. 2. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers Page. 2
  3. 3. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers 発表内容 –Agenda- ※2部構成40分+40分 • Part1:Moodleプラグイン開発の概要(40分) – はじめに(プラグイン開発について) • Moodleのプラグイン開発についての概要と流れ – XAMPP、エディタ、DBツールを使った開発環境の整備 • Moodleの開発環境を無償のツールで揃える方法 – PHPプログラミング基礎の基礎 • 初心者が最低限知っておくPHPの書き方、デバッグの仕方 – プラグインの開発方法 • プラグインの仕組みと構成、開発の手順を紹介 – プラグイン開発例(既存ブロックのコピー) • HTMLブロックをコピーし、オリジナルのブロックを作成 Page. 3
  4. 4. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers 発表内容 –Agenda- ※2部構成40分+40分 • Part2 : 各種プラグインの開発例(40分) – ブロック開発のポイント • Part1に続き、ブロック開発に必要なポイントの紹介 – テーマの開発とポイント • Cleanテーマをコピーし、オリジナルを作成 テーマ開発の流れと開発に必要なポイントを紹介 – 活動モジュールの開発とポイント • モジュールテンプレートをコピーし、オリジナル「15パズル」を作成 活動モジュール開発の流れと必要なポイントを紹介 – まとめ・質疑応答 • 弊社オリジナルの開発事例の紹介(ローカルプラグイン等) • まとめと質疑応答 Page. 4
  5. 5. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■はじめに moodle moot 2014 Okinawa に引き続き発表をさせて頂きます。 前回は、弊社サイトや事例を中心に紹介しましたが、今回はMoodleの プラグイン開発に関する仕組みや開発手順の紹介です。 ■開発をするにあたって必要なこと ① Moodleに関する基礎知識(コースやモジュール、ユーザーなどの概念) ② HTMLおよびPHP(プログラミング)の知識 ③ 開発をするための環境・ツールの用意 ④ やってみようという好奇心・やらなきゃいけない状況に追い込む 本日の発表では、プログラミングの知識が無くても プラグイン開発の第一歩を踏み出せることが目標です Part1:Moodleプラグイン開発の概要 1. はじめに(プラグイン開発について)① Page. 5
  6. 6. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■Moodleの開発者向け情報 ・Moodle.orgに(昔より)充実した情報 (但し英語です) https://docs.moodle.org/dev/Main_Page ・弊社Moodle情報サイトにも今後開発者向け情報を掲載予定です。 http://www.twalker.co.jp/moodle/ Part1:Moodleプラグイン開発の概要 1. はじめに(プラグイン開発について)② ページには以下の内容が掲載 ●Overview 概要やロードマップなどの情報 ●Plugin development 各種プラグイン開発の情報 ●Core APIs Moodleの内部APIについての情報 ●Guidelines 開発についてのガイドライン ●Developer tools 開発ツールの紹介等 ●Projects Moodleの特定分野に関するプロジェクト Page. 6
  7. 7. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■開発をするための環境1 Moodle本体の用意 当然ですが、Moodle本体が必要です。 Moodle本体を動かすには「Apache・PHP・MySQL」も必要です。 ⇒ Moodle.org から XAMPP+Moodleをダウンロード Part1:Moodleプラグイン開発の概要 2. XAMPP、エディタ、DBツールなどの開発環境の整備① ダウンロード&Moodleセットアップ手順 ① Moodle.orgの「Downloads」から、画面左下の「Latest release」をクリック ② 更に「Moodle installer package for xxx」をクリック ③「Download.zip」から、ZIPファイルをダウンロード Page. 7
  8. 8. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■開発をするための環境1 Moodle本体の用意(続き) Part1:Moodleプラグイン開発の概要 2. XAMPP、エディタ、DBツールなどの開発環境の整備② Page. 8 ダウンロード&Moodleセットアップ手順 ④ デスクトップやCドライブへZIPファイルを解凍 ⑤ 解答したフォルダ内の Start Moodle.exe をWクリック ⑥ ブラウザを起動し http://localhost/ (またはlocalhost:8080)と入力 ⑦ Moodleのセットアップを実行 ※⑤にて、既に80番ポートが他のアプリケーション等で起動できない場合は Apacheの動作ポートを80から8080等に変更します。 ServerApacheConfhttpd.conf をメモ帳で編集し 58行目付近のListen 80 を Listen 8080 に変更・保存します
  9. 9. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■開発をするための環境2 エディタ・DBツールの用意 高価な開発ツールもありますが、最初は以下のものがあれば十分です ●テキストエディタ 「EmEditor」 https://jp.emeditor.com/ 「さくらエディタ」http://sakura-editor.sourceforge.net/ ⇒ メモ帳だと少し物足りないが、色が付く程度の機能があれば良い Part1:Moodleプラグイン開発の概要 2. XAMPP、エディタ、DBツールなどの開発環境の整備③ Page. 9 メモ帳で config.php を 開いたところ EmEditorで config.php を 開いたところ
  10. 10. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■開発をするための環境2 エディタ・DBツールの用意 高価な開発ツールもありますが、最初は以下のものがあれば十分です ●DBツール 「A5:SQL Mk-2」http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/ ⇒ matsubara様が開発・公開している無償のツールです。 リモートDB管理(SSH転送)、ER図の作成、SQLや定義書の生成など Part1:Moodleプラグイン開発の概要 2. XAMPP、エディタ、DBツールなどの開発環境の整備④ Page. 10 ※弊社の場合は XAMPP+ Visual Studio+PHP拡張機能 とEmEditor、A5:SQL Mk-2、 Subverion(ソース管理)に て開発をしています ホームページ(ソフト本体は Vectorからダウンロード) 開発環境のMoodleDBに接続し、 Userテーブルを編集している画面
  11. 11. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■PHPのプログラミングについて MoodleはPHPという言語で作られています。 PHPやプログラミングを知らなくても、以下のことだけ知っておく。 1)PHPの記述方法、コメント ⇒ プログラムの中身は知らなくても、書き方は理解しておきます 2)変数とは ⇒ 何らかのデータが入った箱(変数)の概念について理解しておく 3)echo と exit、var_dump ⇒ Moodleの動きを知るためで必要(途中で中身を見る・止める) ※もちろん、本格的に開発をするなら覚える必要はあります ( PHPについては、市販のテキストや講習会なども豊富です) Part1:Moodleプラグイン開発の概要 3. PHPプログラミング基礎の基礎① Page. 11
  12. 12. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers 1)PHPの記述方法・コメント ●ファイル名は xxxxx.php とする 例)hello.php ⇒ PHPのプログラム(かもしれない) ●プログラムは <?php … ?> の … の部分に書く <?php echo “こんにちは”; ?> <?php …(いろいろなプログラム処理) ?> ●HTML(ホームページの記述方法)と混在して記述する 例)<h1><?php echo $title; ?></h1> ● // または /* ~ */ でコメント (コメント部分はプログラムは実行されない) 例)// echo “こんにちは”; ⇒ 実行されない Part1:Moodleプラグイン開発の概要 3. PHPプログラミング基礎の基礎② Page. 12
  13. 13. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers 2)変数とは ・データを格納する「箱」 数学の方程式 x=1 と同じ、上書きされる ・PHPでは $名前 と指定する ・変数の中には、文字列、数値、日時、オブジェクト(機能の集まり) などが格納される(これらをデータ型という) Part1:Moodleプラグイン開発の概要 3. PHPプログラミング基礎の基礎③ Page. 13 ID: 2 Lastname: 山田 Email: xxxx@xxxxx $count $count = 1 1 $count $count = 3 31 後の処理で上書きされる $count = $count + 4 3 3 + 4 $count 上書きの前に、変数の値を 足しこんで格納(=7) $count 1.23 $text “あいう” $date “2014/4/1 12:34:56” $USER
  14. 14. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers 3)echoとexit、var_dump …プログラムのデバッグ(調査)に必要 ● 中身を画面に表示させる echo 文字列; または echo $変数; ● プログラムをその場で終了させる exit; (と書くだけ) ●とにかく何が入っているかを見る var_dump($変数); Part1:Moodleプラグイン開発の概要 3. PHPプログラミング基礎の基礎④ Page. 14 例) echo “<hr>”; var_dump($PAGE); exit; /index.php の最終行 echo $OUTPUT->footer(); の処理の上に $PAGE(ページ情報の格納した変数)に関する情報を出力した例
  15. 15. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■プラグインの開発方法 一般的?には以下のどちらかからスタート ① Moodle.org からテンプレートをダウンロードして利用する(第二部) ⇒ まっさらな状態から開発するため、手間はかかるが、 その分、自由に作成しやすい ② 既存のモジュールをコピーしてオリジナルにする(第一部) ⇒ 各種処理が自前で実装しなくて作業量が減るがモジュール名の 書き換え作業の漏れなども発生しやすい ■開発の流れ 1)目的・機能を決定し、プラグインの種類を決める 2)必要なデータ構造を考える(独自にデータを格納する場合) 続く Part1:Moodleプラグイン開発の概要 4. プラグインの開発方法① Page. 15
  16. 16. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■開発の流れ(続き) 3)プラグインのテンプレートまたは既存のプログラムをコピー 4)自動インストール用のデータ構造定義ファイル(XML)を用意する 5)プラグイン内のファイル名やプログラムの関数名などを書き換える 6)version.phpやlang/プラグイン名.phpなどの基本情報を書き換える 7)一旦Moodleへプラグインを配置し、正常登録できるか確認する 8)各プラグインの主要処理を記述する 9)ブラウザでMoodle上に配置されたプラグインの動作を確認する 10)8~9を繰り返しで完成させたら、7~9の動きをテスト ※通常のソフトウェア開発会社の場合は、工程管理の上で 要件定義書や設計書の作成など、体系的に組織して開発をお こなっています。 Part1:Moodleプラグイン開発の概要 4. プラグインの開発方法② Page. 16
  17. 17. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■Moodleのプラグインの種類(一例) サイト管理 – プラグイン – プラグイン概要 ※その他、数多くのプラグインが定義されている 開発するプラグインが、どの種類に該当するかによって、 ルール(規約)が異なります。プラグインの目的・機能を 明確にし、プラグインの種類に合わせて開発をおこないます Part1:Moodleプラグイン開発の概要 4. プラグインの開発方法③ Page. 17 種類 内容 ブロック 画面左右に配置し、補助的な機能を提供 テーマ Moodle画面のデザインを提供する 活動モジュール コース内のコンテンツを提供する ローカルプラグイン 独自の機能などを提供する
  18. 18. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■Moodleの主要APIと機能 Moodleの各種機能をプログラムから利用 ⇒ Moodle Core API 良く利用する主要API https://docs.moodle.org/dev/Core_APIs Part1:Moodleプラグイン開発の概要 4. プラグインの開発方法④ Page. 18 APIの種類 内部表記 内容 権限チェック ログインや権限のチェック機能など データ操作 $DB データベースの内容の取得・追加・更新・削除の機能 ファイル操作 ($file) 保存されたファイルの取得やファイルの格納 ログ操作 ($event) Moodleログの入出力機能 ページ $PAGE ヘッダーやフッターの設定をおこなう 出力 $OUTPUT ヘッダーやコンテンツの出力(レンダリングされる) 言語定義 $string[‘’] 言語ごとの表記定義 設定 $CFG Moodle本体やプラグイン設定の取得と更新 ユーザー $USER ログインしているユーザーの情報
  19. 19. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■ $CFG(表記固定) … Moodle本体やプラグイン設定の取得と更新 ●$CFG->設定名 にてMoodleの設定が取得できる 例)echo $CFG->wwwroot; // MoodleのURL(http://localhost 等) ●各種モジュールの設定は、get_configを使って取得可能 $設定値 = get_config(モジュール名, 設定名); ●各種モジュールの設定は、set_configを使って設定可能 set_config(設定名, 初期値, モジュール名); ■ $USER(表記固定) … ログインしているユーザーの情報 ●ログインしているユーザーのプロファイル情報を取得できる $USER->id … ログインしているユーザーの内部ID $USER->username … ユーザーのログイン名 $USER->preference … パスワード更新日時、ログイン失敗回数など それぞれ困ったら var_dump で中身を探ってみると良いかも ※function ~ の中で使うには global $CFG, $USER の宣言が必要 Part1:Moodleプラグイン開発の概要 4. プラグインの開発方法⑤ Page. 19
  20. 20. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■ $PAGE(表記固定) … ヘッダーやフッターの設定をおこなう ●ページ情報の設定例 $PAGE->set_title(“ページタイトル”) … ページのタイトルを変更 $PAGE->set_pagelayout(“standard”) … テーマのレイアウトを変更 $PAGE->requires->js(“xxxxx.js”) … 独自のJSファイルをセット ■ $OUTPUT(表記固定) … ヘッダーやコンテンツの出力等 ●Moodleで独自ページを生成する場合(ローカルプラグイン等) echo $OUTPUT->header(); echo “HTMLなどのコンテンツ本体”; echo $OUTPUT->footer(); ※$PAGEや$OUTPUTは通常のプラグイン開発では あまり意識しないことが多いです。独自のページを作る 場合などに用います。 Part1:Moodleプラグイン開発の概要 4. プラグインの開発方法⑥ Page. 20
  21. 21. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■ $DB(表記固定) … データベース(表)のデータの取得や更新 ●データの取得(1件) $結果 = $DB->get_record(モジュール名, 取得条件); 例)$course = $DB->get_record('course', array('id'=>2)); ●データの取得(複数) $結果 = $DB->get_records(モジュール名, 取得条件, 並び順); ●データの追加・更新・削除 $登録後ID = $DB->insert_record(モジュール名, $変数) $DB->update_record(モジュール名, $変数) $DB->delete_records(モジュール名, 条件) 例)$id = $DB->insert_record('book', $book); ●SQLの実行 $DB->execute(“SQL文”); Part1:Moodleプラグイン開発の概要 4. プラグインの開発方法⑦ Page. 21
  22. 22. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■Moodleの主要関数 Moodle Core APIに含まれており、どこからも利用できる関数 良く利用する主要関数 ●ログインチェック require_login(); // 未ログインの場合にログインページへ ●セッションチェック require_session(); // 想定されている操作か調べる(入力フォーム等) ●値(ユーザー入力値等)の取得 $結果 = required_param(名前, 値の種類); // 失敗時エラー $結果 = optional_param(名前, 既定値, 値の種類); // 失敗時既定値 例) $id = required_param(“id”, PARAM_INT); $name = optional_param(“name”, PARAM_RAW); echo $id; echo $name; ※他にも多くの関数や機能がありますが、本日はここまで。 Part1:Moodleプラグイン開発の概要 4. プラグインの開発方法⑧ Page. 22
  23. 23. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■既存モジュールのコピーからブロックモジュールを作ってみる 簡単そう?(失礼!)なHTMLモジュールをコピーして作成 (ブロックのHTMLモジュールは実装も分かりやすく良い手本) 【オリジナルモジュールへの手順】 1)ブロックモジュール「html」をコピーして「hello」にする 2)モジュール名「html」の記述をすべて hello に変更する 3)ファイル名 block_html を全て block_hello に変更する 4)(大変なので)余計なファイル・コードを消す 5)MoodleのBlocksフォルダにコピーする 6)管理者にてMoodleにログイン、プラグインのインストール 7)最低限の動作を確認できたら、PHPのコードを記述 8)完成! それでは実際にやってみます。 Part1:Moodleプラグイン開発の概要 5. プラグインの開発例(ブロックモジュール)① Page. 23
  24. 24. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■手順1)「html」をコピーして「hello」にする ■手順2)「html」の記述をすべて hello に変更 ■手順3)ファイル名 block_html を全て block_hello に変更 ■手順4)(大変なので)余計なファイル・コードを消す Part1:Moodleプラグイン開発の概要 5. プラグインの開発例(ブロックモジュール)② Page. 24 ・x_html_x.php などのファイル名を すべて x_hello_x.phpにする ・Backup、DB、Testsフォルダを削除 ・PHPプログラムの html を hello に 書き換える(エディタの一括置換) Langフォルダ以外削除 ファイル名を変更 フォルダをコピーし、 リネームする エディタの置換機能で html ⇒ hello へ
  25. 25. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■手順5)MoodleのBlocksフォルダにコピーする ■手順6)管理者にてMoodleにログイン、プラグインのインストール ■手順7)最低限の動作を確認できたら、PHPのコードを記述 ■手順8)完成! Part1:Moodleプラグイン開発の概要 5. プラグインの開発例(ブロックモジュール)③ Page. 25 ・Blocksフォルダに「hello」を戻す ・管理者でログインするとプラグインのインストール 画面が表示される。プラグインをインストール。 ・あいさつプラグインを配置してみる(エラーでない) ・block_hello.php内のget_contentsプログラムを修正 MoodleのBlocks フォルダにコピー 「Moodleデータベー スを更新」を押して インストールする ホームに「あいさつ」 を配置してみる block_hello.phpの80行目付近に以下の行を追加 global $USER; $this->content->text = “こんにちは $USER->username さん!”; オリジナル「あいさつ」 ブロックの完成!
  26. 26. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers Page. 26 7th Conference for Moodle Teachers and Developers Moodle moot japan 2015 ■参考出典元・著作物利用 ● Moodle.org(Moodle公式サイト)http://moodle.org/ ダウンロード、開発者向け情報を主に紹介。 ● EmEditor(テキストエディタ)https://jp.emeditor.com/ Moodle開発ツールとして紹介。弊社で利用しているテキストエディタです。 ● さくらエディタ(テキストエディタ)http://sakura-editor.sourceforge.net/ Moodle開発ツールとして紹介。弊社で利用しているテキストエディタです。 ● A5:SQL Mk-2(matsubara様) http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/ Moodle開発ツールとして紹介。弊社で利用しているDB設計・監理ツールです。 ● いらすとや様(かわいいフリー素材集) http://www.irasutoya.com/ 京都・金閣寺のかわいいイラストをお借りしました。 ● 甘茶の音楽工房様 http://amachamusic.chagasi.com/ スライドパズルの音楽に「小さなおもちゃ箱」「チョコレート大作戦」を お借りしました。
  27. 27. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers Page. 27 内容に関するお問い合わせは、以下へお願い致します。 moot期間中は展示ブースにおります。お気軽にお声をおかけください。 ご静聴ありがとうございました 株式会社テクノウォーカー 担当: システム企画部 山岡 茂治 電話: 03-5155-1830(東京) 052-453-3393(名古屋) メール: sol@twalker.co.jp テクノウォーカーHP: http://www.twalker.co.jp Moodle情報サイト: http://www.twalker.co.jp/moodle/ 7th Conference for Moodle Teachers and Developers Moodle moot japan 2015
  28. 28. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers Page. 28

×