SlideShare a Scribd company logo
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
Part2 : 各種プラグインの開発例(40分)
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
Page. 2
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
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
発表内容 –Agenda- ※2部構成40分+40分
• Part2 : 各種プラグインの開発例(40分)
– ブロック開発のポイント
• Part1に続き、ブロック開発に必要なポイントの紹介
– テーマの開発とポイント
• Cleanテーマをコピーし、オリジナルを作成
テーマ開発の流れと開発に必要なポイントを紹介
– 活動モジュールの開発とポイント
• モジュールテンプレートをコピーし、オリジナル「15パズル」を作成
活動モジュール開発の流れと必要なポイントを紹介
– まとめ・質疑応答
• 弊社オリジナルの開発事例の紹介(ローカルプラグイン等)
• まとめと質疑応答
Page. 4
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■あいさつブロック(第一部で作成したブロック)
単純にメッセージを表示するだけのブロックです。
Part2 : 各種プラグインの開発例
1. ブロック開発のポイント①
Page. 5
ホーム画面の右上に「あいさつ」を
配置したところ
独自の設定項目の追加
こんばんは! Admin さん!
の「こんばんは!」の部分
プラグイン「あいさつ」
として認識
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■プラグイン「ブロック」の開発手順(第一部の紹介と同じ)
1)目的・機能を決定する(要件)
2)機能の動作やデータを格納する構造を考える(設計)
3)プラグインのテンプレートまたは既存のプログラムをコピーする
4)データ構造定義ファイル(XML)や権限定義を用意する
5)プラグイン内のファイル名やプログラムの関数名などを書き換える
6)version.phpやlang/プラグイン名.phpなどの基本情報を書き換える
7)一旦Moodleへプラグインを配置し、正常登録できるか確認する
8)各プラグインの主要処理を仕様に沿って作成する
⇒ この部分の設計(文書作成)・実装・テストが主な開発作業
9)ブラウザでMoodle上に配置されたプラグインの動作を確認する
10)8~9を繰り返しで完成させたら、7~9の動きをテスト
Part2 : 各種プラグインの開発例
1. ブロック開発のポイント②
Page. 6
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■プラグイン「ブロック」の構成
moodle/blocks フォルダ内にプラグインをフォルダごと置く
※Backup(バックアップ・レストア時の処理)、
DB(データベース、アクセス権定義)、Pix(画像ファイル)、
Test(テストシナリオを置く)等のフォルダ
lib.php、settings.phpなどのファイルは無くても動きます。
Part2 : 各種プラグインの開発例
1. ブロック開発のポイント③
Page. 7
フォルダ/ファイル 説明/役割
lang/言語 /プラグイン名.php 言語定義ファイル(en や ja)を配置する
block_プラグイン名.php メインプログラム(ブロックの表示)
edit_form.php 配置したブロックの設定画面
(lib.php) ブロックの共通処理
(settings.php) ブロックの管理者用設定画面
version.php プラグイン(ブロック)の定義
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■言語定義ファイル(lang/言語/プラグイン名.php)
●言語ごとにフォルダを作成し、プラグイン名のファイルを作成する
例)lang/en/hello.php
lang/ja/hello.php
●決められた言語定義および独自で利用する言語定義を記述する
$string[“項目名”] = ”値”;
例)項目名 ‘pluginname’ (プラグインの名前)の場合
en … $string[‘pluginname’] = ‘Hello’;
ja … $string[‘pluginname’] = ‘あいさつ’;
●定義はget_string関数を使って取得し利用
$結果 = get_string(“項目名”, “プラグイン名”)
※言語定義ファイルが無いと既定(en)になります
※英語以外の言語を保存するときは文字コードに注意(UTF8が基本)
Part2 : 各種プラグインの開発例
1. ブロック開発のポイント④
Page. 8
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■メインプログラム(block_プラグイン名.php)
● 配置されたブロックの表示内容を記述する(ひな形がある)
⇒ block_baseを継承(=機能を引き継いで)して作る
● function get_content() 内に表示する内容を記述する
いろいろやりたいことを書いて、最後に return $this->content
例)
$this->content->text = “”;
$this->content->text .= “<div style=‘color:blue; font-size:24pt;’>";
$this->content->text .= "こんにちは $USER->username さん!";
$this->content->text .= “</div>";
return $this->content;
※「.=」は文字列をつなげるという記述です
Part2 : 各種プラグインの開発例
1. ブロック開発のポイント⑤
Page. 9
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■ブロックの設定編集画面(edit_form.php)
● 設定画面のひな形も予め用意されている
⇒ block_edit_formを継承(=機能を引き継いで)して作ることで
設定の読み込みや書き込みなどの処理は省略できる(Moodleお任せ)
● フォームAPI「$mform」を利用して入力項目を作成
function specific_definition ⇒
例)
$mform->addElement(‘text’, ‘config_hello’, ‘あいさつ文字');
$mform->setType(‘config_title', PARAM_TEXT);
※上記コードの意味(細かくは説明しきれません)
1行目: あいさつ文字のテキストボックスを用意
2行目: 入力値は制限なしの文字列
Part2 : 各種プラグインの開発例
1. ブロック開発のポイント⑥
Page. 10
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■プラグイン(ブロック)の定義(version.php)
プラグインに関する定義を記述する(ブロックに限らず共通)
●モジュールの名前を定義
$plugin->component = “mod_モジュール名”;
●モジュールの内部バージョン、リリースバージョン
$plugin->version = 2014051200; // YYYYMMDD00の形式
$plugin->release = “v2.7.x”; // Moodleバージョンと合わせると良い
●Moodleの必須バージョンとプラグイン成熟度
$plugin->requires = 2014051200; // YYYYMMDD00の形式
$plugin->maturity = MATURITY_STABLE; // 安定板
※その他 cron を使ったスケジュール処理や依存関係の記述など
細かな指定がある(無くても良いので省略!)
https://docs.moodle.org/dev/version.php
Part2 : 各種プラグインの開発例
1. ブロック開発のポイント⑦
Page. 11
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■季節のテーマ「Seasons」(これから作成します)
季節(今回は春のみ)をイメージしたテーマ
Part2 : 各種プラグインの開発例
2. テーマ開発のポイント①
Page. 12
Cleanテーマをコピーして作成
※簡易的に作っているため、フォントや
色しか変更されていませんが、レイアウ
トなども自由に変更できます
普通のテーマなのでもちろん
適用前のプレビューもあります。
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■テーマの開発
テーマもブロックと同じくコピーして直す方が早い(かも)。
Moodle 2.7以降、標準テーマが限定された ⇒ Cleanを真似て作る
■プラグイン「活動モジュール」の開発手順(ブロックと一緒です)
1)デザイン・レイアウトを考える(要件)
2)既存のテーマ(Clean等)のプログラムをコピーする
3)プラグイン内のファイル名やプログラムの関数名などを書き換える
4)version.phpやlang/プラグイン名.phpなどの基本情報を書き換える
5)一旦Moodleへプラグインを配置し、正常登録できるか確認する
6)考案したデザイン・レイアウトに合わせて layouts の中のプログラムや
スタイルシート(CSS)などを作成する
7)ブラウザでMoodle上に配置されたプラグインの動作を確認する
8)6~7を繰り返しで完成させたら、5~7の動きをテスト
⇒ テーマはレイアウト(主にHTML)やCSSのスタイル修正
&ブラウザ表示を繰り返して作業します
Part2 : 各種プラグインの開発例
2. テーマ開発のポイント②
Page. 13
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■季節のテーマ「Seasons」の開発例
■手順1)「clean」をコピーして「seasons」にする
■手順2)clean の記述をすべて seasonsに変更
■手順3)ファイル名 clean を全て seasons に変更
Part2 : 各種プラグインの開発例
2. テーマ開発のポイント③
Page. 14
・langフォルダ内の「theme_clean
.php」を「theme_seasons.php」
にする
・PHPプログラムの clean を seasons
に書き換える(エディタ一括置換)
Langフォルダの
ファイル名を変更
フォルダをコピーし、
リネームする
エディタの置換機能で
clean ⇒ seasons へ
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■手順5)MoodleのThemeフォルダにコピーする
■手順6)管理者にてMoodleにログイン、プラグインのインストール
■手順7)最低限の動作を確認できたら、layoutsのデザインやstyleのスタイルを修正
■手順8)完成!
Part1:Moodleプラグイン開発の概要
2. テーマ開発のポイント④
Page. 15
・Themeフォルダに「seasons」を戻す
・管理者でログインするとプラグインのインストール
画面が表示される。プラグインをインストール。
・テーマを適用してみる(Cleanと同じになる)
・layouts/xxx.phpやstyle/custom.cssを修正
MoodleのTheme
フォルダにコピー
「Moodleデータベー
スを更新」を押して
インストールする
テーマに配置されるので適用
してみる(何も変わらない)
custom.cssに独自のスタイル定義を追加
(スタイル定義内容については省略)
※後ほどMoodle情報サイトからDLできます
春(ピンク)っぽい?
デザインに変更されます
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■プラグイン「テーマ」の構成
moodle/theme フォルダ内にプラグインをフォルダごと置く
※テーマは他のプラグインと比べ構成が少し異なります
Part2 : 各種プラグインの開発例
2. テーマ開発のポイント⑤
Page. 16
フォルダ/ファイル 説明/役割
lang/言語 /theme_プラグイン名.php 言語定義ファイル(en や ja)を配置する
layout/レイアウト名.php 画面表示のレイアウト(外観)の定義
pix/各種画像等、screenshot.jpg 各種画像、テーマプレビュー画像
style/スタイルシート.css テーマに利用するスタイル
config.php テーマのパターン定義(レイアウト等)
lib.php テーマの共通処理
settings.php テーマの管理者用設定画面(共通設定)
version.php プラグイン(テーマ)の定義
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■レイアウト定義(layout/レイアウト名.php)
● Moodleの各ページに適用するレイアウト定義
⇒ <html><head><body>の共通部分はここ
■テーマ定義(config.php)
● 外観に関する各種定義を記述する
● どのページがどのレイアウトを使うかは
config.php および 各処理で呼ばれるページAPI($PAGE)で決定
例)config.php 内の記述
$THEME->layouts = array(
“standard” => array(“file” => “レイアウト.php”,)
),
特定ページの処理
$PAGE->set_pagelayout(“standard”);
Part2 : 各種プラグインの開発例
2. テーマ開発のポイント⑥
Page. 17
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■スライドパズル(SlidePuzzle)モジュール(これから作成します)
15パズル(実際9マスですが)をおこない完成タイムで評価?
Part2 : 各種プラグインの開発例
3. 活動モジュール開発のポイント①
Page. 18
開始前の画面、画像は Moodle moot
2015 Kyoto のチラシです。
クリックするとゲーム開始となります。
画像を元の形に戻すと完成。
画面下に経過時間が表示されます。
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■プラグイン「活動モジュール」の開発手順(他と一緒です)
1)目的・機能を決定する(要件)
2)機能の動作やデータを格納する構造を考える(設計)
3)プラグインのテンプレート(newmodule)をコピーする
4)データ構造定義ファイル(XML)や権限定義を用意する
5)プラグイン内のファイル名やプログラムの関数名などを書き換える
6)version.phpやlang/プラグイン名.phpなどの基本情報を書き換える
7)一旦Moodleへプラグインを配置し、正常登録できるか確認する
8)各プラグインの主要処理を仕様に沿って作成する
⇒ この部分の設計(文書作成)・実装・テストが主な開発作業
9)ブラウザでMoodle上に配置されたプラグインの動作を確認する
10)8~9を繰り返しで完成させたら、7~9の動きをテスト
Part2 : 各種プラグインの開発例
3. 活動モジュール開発のポイント②
Page. 19
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■プラグイン「活動モジュール」の開発手順の補足
既存モジュールのコピーは・・・少し難しい(複雑なものが多い)
セオリー通り「テンプレート」を利用するのがおすすめ。
テンプレートの説明と場所
●テンプレートの説明(moodle.org)
https://docs.moodle.org/dev/NEWMODULE_Documentation
●テンプレート newmodule のダウンロード先
https://github.com/moodlehq/moodle-mod_newmodule
右下の「Download ZIP」をクリックしてダウンロード
Part2 : 各種プラグインの開発例
3. 活動モジュール開発のポイント③
Page. 20
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■稼働とモジュール「スライドパズル」の開発例
■手順1)newmodule.zip を展開し「slidepuzzle」にする
■手順2)「newmodule」の記述をすべて slidepuzzle に変更
■手順3)ファイル名 newmodule を全て slidepuzzle に変更
■手順4)(大変なので)今回はとりあえず使わないファイルは残す(消してもOK)
Part2 : 各種プラグインの開発例
3. 活動モジュール開発のポイント④
Page. 21
ファイル名を変更するの
は langフォルダ位です
ZIPを解凍し、
リネームする エディタの置換機能で
newmodule ⇒ slidepuzzle へ
※対象ファイルの量が多い
・newmodule.phpをslidepuzzle.php
にする
・PHPプログラムの newmodule を
sildepuzzle に書き換え
(エディタの一括置換)
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■手順5)MoodleのModフォルダにコピーする
■手順6)管理者にてMoodleにログイン、プラグインのインストール
■手順7)最低限の動作を確認できたら、PHPのコードを記述(スライドパズル埋込)
■手順8)完成!
Part2 : 各種プラグインの開発例
3. 活動モジュール開発のポイント⑤
Page. 22
・Modフォルダに「slidepuzzle」を戻す
・管理者でログインしプラグインをインストール。
・コースに「スライドパズル」を配置(エラーでない)
・素材(画像・音楽・スクリプト)を配置
・view.php内に「スライドパズル」を埋め込む
MoodleのMod
フォルダにコピー
「Moodleデータベー
スを更新」を押して
インストールする
コースに活動モジュールの
追加から「スライドパズル」
を配置してみる
view.phpにスライドパズル用のHTMLソースを埋め込む
※スライドパズルそのものはMoodleと関係なくHTML5で作成
「スライドパズル」
の完成(遊べます)
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■プラグイン「活動モジュール」の構成
moodle/mod フォルダ内にプラグインをフォルダごと置く
Part2 : 各種プラグインの開発例
3. 活動モジュール開発のポイント⑥
Page. 23
フォルダ/ファイル 説明/役割
backup/moodle2/xxx.php コースのバックアップ・リストア時の処理
db/access.php、install.xml DBのテーブル定義、権限、ログ処理等
lang/言語 /プラグイン名.php 言語定義ファイル(en や ja)を配置する
pix/各種画像等、icon.png 各種画像、プラグインのアイコン
index.php 活動モジュールの共通ページ(管理向け)
lib.php 活動モジュールの共通処理
mod_form.php 活動モジュールの設定画面
view.php メイン画面のプログラム
version.php プラグイン(活動モジュール)の定義
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■活動モジュールの共通処理(lib.php、locallib.php)
コースへの追加・削除時等のプラグインで定義された振る舞いを記述する
● モジュールの追加・変更・削除イベント(Moodle本体から呼ばれる)
function モジュール名_add_instance (モジュール情報)
function モジュール名_update_instance (モジュール情報)
function モジュール名_delete_instance (モジュールのID)
● その他のイベント(こちらも記述があればMoodle本体から呼ばれる)
function モジュール名_complete
⇒ 受講者が完了させたときの処理
function モジュール名_cron
⇒ スケジューリング処理
function モジュール名_extend_navigation
⇒ ナビゲーションの処理(独自メニューを追加等)
Part2 : 各種プラグインの開発例
3. 活動モジュール開発のポイント⑦
Page. 24
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■メインプログラム(view.php)
●活動モジュールのメイン画面(講師や受講者がコース内で閲覧する画面)
⇒ 記述内容は自由だが、ある程度流れが決まっている。
プログラムの流れ
1)Moodleの設定(config.php)、ライブラリ(lib.php)の読み込み
2)コース内モジュールIDの取得とモジュール・コース情報のロード
3)ログイン・権限チェック
4)ページURL・タイトル・ヘッダー情報のセットと出力
5)モジュール独自の処理と出力(ここがメイン)
6)フッター情報の出力
Part2 : 各種プラグインの開発例
3. 活動モジュール開発のポイント⑧
Page. 25
・echo $OUTPUT->header(); から
echo $OUTPUT->footer();の間に記述
・HTMLを埋め込んでも良い
(スライドパズルの場合はHTMLを埋込み
クライアントJavaScriptで動作させる)
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■DBのテーブル定義、権限、ログ処理等(db/)
●独自のDBテーブルを利用する場合の定義ファイル(install.xml)
⇒ XMLで記述するとプラグインインストール時にDBの表を自動生成
(MoodleのXMLDBEditorを使って作ると簡単です)
XMLDBの構成例
<XMLDB …>
<TABLES><TABLE NAME=“テーブル名”><FIELDS>
<FIELD NAME=“id” PE=“int” NOTNULL=“true” SEQUENCE=“true” NEXT=“course”/>
<FIELD NAME=“course” TYPE=“int” NOTNULL=“true” PREVIOUS=“id” NEXT=“name”/>
<FIELD NAME=“name” TYPE=“char” LENGTH=“255” NOTNULL=“true” PREVIOUS=“course” NEXT=“myfield1”/>
<FIELD NAME=“myfield1” TYPE=“char” LENGTH=“255” NOTNULL=“true” PREVIOUS=“name” />
</FIELDS></TABLE></TABLES>
</XMLDB>
●その他のファイル
・ access.php ⇒ 権限(アクセス制御)の定義を記述
・ install.php、upgrade.php、uninstall.php
⇒ プラグインのインストール・更新・アンインストール時に
独自の処理を追加可能
・log.php ⇒ プラグインのログ(イベント)の種類を定義
Part2 : 各種プラグインの開発例
3. 活動モジュール開発のポイント⑨
Page. 26
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■補足)開発中に陥りやすい?こと
●Moodle画面が急に真っ白になった!
【原因】作成したプログラムの構文エラー等でMoodleが停止
対応① 直前に修正したファイルをMoodleフォルダから移動
それでもダメならプラグインのフォルダごと移動
対応② サイト管理 ≫ 開発 ≫ デバッグの設定を変更
デバッグメッセージを NONEからNORMAL等に変更
Part2 : 各種プラグインの開発例
4. まとめ・質疑応答①
Page. 27
行(ステートメント)の終端
「 ; 」が無い → 構文エラー
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■補足)開発中に陥りやすい?こと
●プログラムやJS・CSSを修正したはずなのに動作が変わらない!
【原因】Moodleまたはブラウザがキャッシュしている
対応① ブラウザのキャッシュを消去
対応② サイト管理 ≫ 開発 ≫ すべてのキャッシュを削除する を実行
対応③ サイト管理 ≫ アピアランス ≫ テーマ ≫ テーマ設定
「テーマデザインモード」にチェックを入れる(テーマ開発時)
Part2 : 各種プラグインの開発例
4. まとめ・質疑応答②
Page. 28
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■弊社の過去の開発例(自社内利用含む)
Moodleの構築、バージョンアップ、移行、コース・コンテンツデザインの
他に以下のような開発対応をおこなっています。
● コンビニ・カード決済機能(活動モジュール、ブロック、ローカル)
● 組織階層管理機能(活動モジュール、ブロック、ローカル複合)
● フランチャイズ(総代理店・代理店)管理機能( 〃 複合)
● メール一斉配信(DM)機能(ローカル、メッセージ)
● コースを跨いだ進捗レポート機能(ローカル、レポート)
● Moodle画面のフルカスタマイズ(テーマ、本体修正)
● レーダーチャート表示プラグイン(活動モジュール、ローカル)
● プログラムソースコード判定プラグイン(問題タイプ)
● 自動出欠モジュール、共有カードのカスタマイズ
● オリジナルテーマおよびUIフルカスタマイズ
● MoodleとMaharaの連携プラグイン(※別会社委託)
Part2 : 各種プラグインの開発例
4. まとめ・質疑応答③
Page. 29
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
■第1部・第2部のまとめ
本日の発表では、「プログラミングの知識が無くても
プラグイン開発の第一歩を踏み出せること」が目標でした。
●開発をするにあたって必要なこと
1)Moodleに関する基礎知識(コースやモジュール、ユーザーなどの概念)
2)HTMLおよびPHP(プログラミング)の知識
3)開発をするための環境・ツールの用意
4)やってみようという好奇心・やらなきゃいけない状況に追い込む
●プラグインの開発方法
1)Moodle.org からテンプレートをダウンロードして利用する
2)既存のモジュールをコピーしてオリジナルにする
Part2 : 各種プラグインの開発例
4. まとめ・質疑応答④
Page. 30
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
●開発の流れ
1)目的・機能を決定し、プラグインの種類を決める
2)必要なデータ構造を考える(独自にデータを格納する場合)
3)プラグインのテンプレートまたは既存のプログラムをコピー
4)自動インストール用のデータ構造定義ファイル(XML)を用意する
5)プラグイン内のファイル名やプログラムの関数名などを書き換える
6)version.phpやlang/プラグイン名.phpなどの基本情報を書き換える
7)一旦Moodleへプラグインを配置し、正常登録できるか確認する
8)各プラグインの主要処理を記述する
9)ブラウザでMoodle上に配置されたプラグインの動作を確認する
10)8~9を繰り返しで完成させたら、7~9の動きをテスト
Part2 : 各種プラグインの開発例
4. まとめ・質疑応答⑤
Page. 31
これをきっかけにMoodleのプラグイン開発に興味を
持っていただけたら幸いです(ちょっと堅いですが…)
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
Page. 32
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/
スライドパズルの音楽に「小さなおもちゃ箱」「チョコレート大作戦」を
お借りしました。
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
Page. 33
内容に関するお問い合わせは、以下へお願い致します。
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
Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。
7th Conference for Moodle Teachers and Developers
Page. 34

More Related Content

What's hot

Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
JustSystems Corporation
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
 
[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?
Makoto SAKAI
 
魅せるPowerPointビジネスプレゼン【実践編】 
魅せるPowerPointビジネスプレゼン【実践編】 魅せるPowerPointビジネスプレゼン【実践編】 
魅せるPowerPointビジネスプレゼン【実践編】 
schoowebcampus
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
 
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかDDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
Koichiro Matsuoka
 
ウォーターフォールとアジャイル開発の比較 
ウォーターフォールとアジャイル開発の比較 ウォーターフォールとアジャイル開発の比較 
ウォーターフォールとアジャイル開発の比較 Unicast Inc.
 
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
 
GUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPS
GUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPSGUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPS
GUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPS
ARC SYSTEM WORKS
 
今日から使おうSmalltalk
今日から使おうSmalltalk今日から使おうSmalltalk
今日から使おうSmalltalkSho Yoshida
 
アジャイルな開発組織のOKRベストプラクティス&アンチパターン
アジャイルな開発組織のOKRベストプラクティス&アンチパターンアジャイルな開発組織のOKRベストプラクティス&アンチパターン
アジャイルな開発組織のOKRベストプラクティス&アンチパターン
真吾 吉田
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
Rails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) APIRails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) API
Yohei Yasukawa
 
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
 
【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう
Unity Technologies Japan K.K.
 
Fbx解説 (1 構文編) (1)
Fbx解説 (1  構文編) (1)Fbx解説 (1  構文編) (1)
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
 Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_ Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
Unity Technologies Japan K.K.
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
 

What's hot (20)

Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
 
[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?
 
魅せるPowerPointビジネスプレゼン【実践編】 
魅せるPowerPointビジネスプレゼン【実践編】 魅せるPowerPointビジネスプレゼン【実践編】 
魅せるPowerPointビジネスプレゼン【実践編】 
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
 
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかDDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
 
ウォーターフォールとアジャイル開発の比較 
ウォーターフォールとアジャイル開発の比較 ウォーターフォールとアジャイル開発の比較 
ウォーターフォールとアジャイル開発の比較 
 
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
 
GUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPS
GUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPSGUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPS
GUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPS
 
今日から使おうSmalltalk
今日から使おうSmalltalk今日から使おうSmalltalk
今日から使おうSmalltalk
 
アジャイルな開発組織のOKRベストプラクティス&アンチパターン
アジャイルな開発組織のOKRベストプラクティス&アンチパターンアジャイルな開発組織のOKRベストプラクティス&アンチパターン
アジャイルな開発組織のOKRベストプラクティス&アンチパターン
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Rails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) APIRails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) API
 
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション
 
【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう
 
Fbx解説 (1 構文編) (1)
Fbx解説 (1  構文編) (1)Fbx解説 (1  構文編) (1)
Fbx解説 (1 構文編) (1)
 
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
 Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_ Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 

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

Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストAtsuhiro Kubo
 
Eclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテストEclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテストAtsuhiro Kubo
 
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig
Tom Hayakawa
 
mobylet ケータイサイト30分クッキング
mobylet ケータイサイト30分クッキングmobylet ケータイサイト30分クッキング
mobylet ケータイサイト30分クッキング
Shin Takeuchi
 
Moodle情報サイトと無償管理ツールの紹介 for Moodle Moot 2014
Moodle情報サイトと無償管理ツールの紹介 for Moodle Moot 2014Moodle情報サイトと無償管理ツールの紹介 for Moodle Moot 2014
Moodle情報サイトと無償管理ツールの紹介 for Moodle Moot 2014
Shigeharu Yamaoka
 
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
アシアル株式会社
 
MTDDC Tokyo テーマ編 プレゼン資料
MTDDC Tokyo テーマ編 プレゼン資料MTDDC Tokyo テーマ編 プレゼン資料
MTDDC Tokyo テーマ編 プレゼン資料Toshihito Gamo
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築Hideharu MATSUFUJI
 
NuGet でゲット! Visual Studio パッケージ マネージャ―概要
NuGet でゲット! Visual Studio パッケージ マネージャ―概要NuGet でゲット! Visual Studio パッケージ マネージャ―概要
NuGet でゲット! Visual Studio パッケージ マネージャ―概要
Akira Inoue
 
【プログラミング教室】テキスト
【プログラミング教室】テキスト【プログラミング教室】テキスト
【プログラミング教室】テキスト
Manabu Ikarashi
 
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話Hidenori Goto
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
 
Dakota+openFoam1
Dakota+openFoam1Dakota+openFoam1
Dakota+openFoam1
守淑 田村
 
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
アシアル株式会社
 
DELPHI BOOT CAMP / DELPHIでビジュアル開発に挑戦しよう ◆ DAY2: DELPHIでUI設計のポイントを学ぼう
DELPHI BOOT CAMP / DELPHIでビジュアル開発に挑戦しよう ◆ DAY2: DELPHIでUI設計のポイントを学ぼうDELPHI BOOT CAMP / DELPHIでビジュアル開発に挑戦しよう ◆ DAY2: DELPHIでUI設計のポイントを学ぼう
DELPHI BOOT CAMP / DELPHIでビジュアル開発に挑戦しよう ◆ DAY2: DELPHIでUI設計のポイントを学ぼう
Kaz Aiso
 
アジャイル開発&TFS導入
アジャイル開発&TFS導入アジャイル開発&TFS導入
アジャイル開発&TFS導入
You&I
 
Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編
株式会社 NTTテクノクロス
 
TFSUG : TFS2010ハンズオンラボ資料
TFSUG : TFS2010ハンズオンラボ資料TFSUG : TFS2010ハンズオンラボ資料
TFSUG : TFS2010ハンズオンラボ資料Hiroyuki Wada
 
5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方
Yuki Takahashi
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦urasandesu
 

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

Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテスト
 
Eclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテストEclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテスト
 
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig
 
mobylet ケータイサイト30分クッキング
mobylet ケータイサイト30分クッキングmobylet ケータイサイト30分クッキング
mobylet ケータイサイト30分クッキング
 
Moodle情報サイトと無償管理ツールの紹介 for Moodle Moot 2014
Moodle情報サイトと無償管理ツールの紹介 for Moodle Moot 2014Moodle情報サイトと無償管理ツールの紹介 for Moodle Moot 2014
Moodle情報サイトと無償管理ツールの紹介 for Moodle Moot 2014
 
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
 
MTDDC Tokyo テーマ編 プレゼン資料
MTDDC Tokyo テーマ編 プレゼン資料MTDDC Tokyo テーマ編 プレゼン資料
MTDDC Tokyo テーマ編 プレゼン資料
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
NuGet でゲット! Visual Studio パッケージ マネージャ―概要
NuGet でゲット! Visual Studio パッケージ マネージャ―概要NuGet でゲット! Visual Studio パッケージ マネージャ―概要
NuGet でゲット! Visual Studio パッケージ マネージャ―概要
 
【プログラミング教室】テキスト
【プログラミング教室】テキスト【プログラミング教室】テキスト
【プログラミング教室】テキスト
 
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
Dakota+openFoam1
Dakota+openFoam1Dakota+openFoam1
Dakota+openFoam1
 
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
 
DELPHI BOOT CAMP / DELPHIでビジュアル開発に挑戦しよう ◆ DAY2: DELPHIでUI設計のポイントを学ぼう
DELPHI BOOT CAMP / DELPHIでビジュアル開発に挑戦しよう ◆ DAY2: DELPHIでUI設計のポイントを学ぼうDELPHI BOOT CAMP / DELPHIでビジュアル開発に挑戦しよう ◆ DAY2: DELPHIでUI設計のポイントを学ぼう
DELPHI BOOT CAMP / DELPHIでビジュアル開発に挑戦しよう ◆ DAY2: DELPHIでUI設計のポイントを学ぼう
 
アジャイル開発&TFS導入
アジャイル開発&TFS導入アジャイル開発&TFS導入
アジャイル開発&TFS導入
 
Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編
 
TFSUG : TFS2010ハンズオンラボ資料
TFSUG : TFS2010ハンズオンラボ資料TFSUG : TFS2010ハンズオンラボ資料
TFSUG : TFS2010ハンズオンラボ資料
 
5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
 

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

  • 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 Part2 : 各種プラグインの開発例(40分)
  • 2. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers Page. 2
  • 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. 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. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■あいさつブロック(第一部で作成したブロック) 単純にメッセージを表示するだけのブロックです。 Part2 : 各種プラグインの開発例 1. ブロック開発のポイント① Page. 5 ホーム画面の右上に「あいさつ」を 配置したところ 独自の設定項目の追加 こんばんは! Admin さん! の「こんばんは!」の部分 プラグイン「あいさつ」 として認識
  • 6. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■プラグイン「ブロック」の開発手順(第一部の紹介と同じ) 1)目的・機能を決定する(要件) 2)機能の動作やデータを格納する構造を考える(設計) 3)プラグインのテンプレートまたは既存のプログラムをコピーする 4)データ構造定義ファイル(XML)や権限定義を用意する 5)プラグイン内のファイル名やプログラムの関数名などを書き換える 6)version.phpやlang/プラグイン名.phpなどの基本情報を書き換える 7)一旦Moodleへプラグインを配置し、正常登録できるか確認する 8)各プラグインの主要処理を仕様に沿って作成する ⇒ この部分の設計(文書作成)・実装・テストが主な開発作業 9)ブラウザでMoodle上に配置されたプラグインの動作を確認する 10)8~9を繰り返しで完成させたら、7~9の動きをテスト Part2 : 各種プラグインの開発例 1. ブロック開発のポイント② Page. 6
  • 7. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■プラグイン「ブロック」の構成 moodle/blocks フォルダ内にプラグインをフォルダごと置く ※Backup(バックアップ・レストア時の処理)、 DB(データベース、アクセス権定義)、Pix(画像ファイル)、 Test(テストシナリオを置く)等のフォルダ lib.php、settings.phpなどのファイルは無くても動きます。 Part2 : 各種プラグインの開発例 1. ブロック開発のポイント③ Page. 7 フォルダ/ファイル 説明/役割 lang/言語 /プラグイン名.php 言語定義ファイル(en や ja)を配置する block_プラグイン名.php メインプログラム(ブロックの表示) edit_form.php 配置したブロックの設定画面 (lib.php) ブロックの共通処理 (settings.php) ブロックの管理者用設定画面 version.php プラグイン(ブロック)の定義
  • 8. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■言語定義ファイル(lang/言語/プラグイン名.php) ●言語ごとにフォルダを作成し、プラグイン名のファイルを作成する 例)lang/en/hello.php lang/ja/hello.php ●決められた言語定義および独自で利用する言語定義を記述する $string[“項目名”] = ”値”; 例)項目名 ‘pluginname’ (プラグインの名前)の場合 en … $string[‘pluginname’] = ‘Hello’; ja … $string[‘pluginname’] = ‘あいさつ’; ●定義はget_string関数を使って取得し利用 $結果 = get_string(“項目名”, “プラグイン名”) ※言語定義ファイルが無いと既定(en)になります ※英語以外の言語を保存するときは文字コードに注意(UTF8が基本) Part2 : 各種プラグインの開発例 1. ブロック開発のポイント④ Page. 8
  • 9. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■メインプログラム(block_プラグイン名.php) ● 配置されたブロックの表示内容を記述する(ひな形がある) ⇒ block_baseを継承(=機能を引き継いで)して作る ● function get_content() 内に表示する内容を記述する いろいろやりたいことを書いて、最後に return $this->content 例) $this->content->text = “”; $this->content->text .= “<div style=‘color:blue; font-size:24pt;’>"; $this->content->text .= "こんにちは $USER->username さん!"; $this->content->text .= “</div>"; return $this->content; ※「.=」は文字列をつなげるという記述です Part2 : 各種プラグインの開発例 1. ブロック開発のポイント⑤ Page. 9
  • 10. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■ブロックの設定編集画面(edit_form.php) ● 設定画面のひな形も予め用意されている ⇒ block_edit_formを継承(=機能を引き継いで)して作ることで 設定の読み込みや書き込みなどの処理は省略できる(Moodleお任せ) ● フォームAPI「$mform」を利用して入力項目を作成 function specific_definition ⇒ 例) $mform->addElement(‘text’, ‘config_hello’, ‘あいさつ文字'); $mform->setType(‘config_title', PARAM_TEXT); ※上記コードの意味(細かくは説明しきれません) 1行目: あいさつ文字のテキストボックスを用意 2行目: 入力値は制限なしの文字列 Part2 : 各種プラグインの開発例 1. ブロック開発のポイント⑥ Page. 10
  • 11. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■プラグイン(ブロック)の定義(version.php) プラグインに関する定義を記述する(ブロックに限らず共通) ●モジュールの名前を定義 $plugin->component = “mod_モジュール名”; ●モジュールの内部バージョン、リリースバージョン $plugin->version = 2014051200; // YYYYMMDD00の形式 $plugin->release = “v2.7.x”; // Moodleバージョンと合わせると良い ●Moodleの必須バージョンとプラグイン成熟度 $plugin->requires = 2014051200; // YYYYMMDD00の形式 $plugin->maturity = MATURITY_STABLE; // 安定板 ※その他 cron を使ったスケジュール処理や依存関係の記述など 細かな指定がある(無くても良いので省略!) https://docs.moodle.org/dev/version.php Part2 : 各種プラグインの開発例 1. ブロック開発のポイント⑦ Page. 11
  • 12. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■季節のテーマ「Seasons」(これから作成します) 季節(今回は春のみ)をイメージしたテーマ Part2 : 各種プラグインの開発例 2. テーマ開発のポイント① Page. 12 Cleanテーマをコピーして作成 ※簡易的に作っているため、フォントや 色しか変更されていませんが、レイアウ トなども自由に変更できます 普通のテーマなのでもちろん 適用前のプレビューもあります。
  • 13. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■テーマの開発 テーマもブロックと同じくコピーして直す方が早い(かも)。 Moodle 2.7以降、標準テーマが限定された ⇒ Cleanを真似て作る ■プラグイン「活動モジュール」の開発手順(ブロックと一緒です) 1)デザイン・レイアウトを考える(要件) 2)既存のテーマ(Clean等)のプログラムをコピーする 3)プラグイン内のファイル名やプログラムの関数名などを書き換える 4)version.phpやlang/プラグイン名.phpなどの基本情報を書き換える 5)一旦Moodleへプラグインを配置し、正常登録できるか確認する 6)考案したデザイン・レイアウトに合わせて layouts の中のプログラムや スタイルシート(CSS)などを作成する 7)ブラウザでMoodle上に配置されたプラグインの動作を確認する 8)6~7を繰り返しで完成させたら、5~7の動きをテスト ⇒ テーマはレイアウト(主にHTML)やCSSのスタイル修正 &ブラウザ表示を繰り返して作業します Part2 : 各種プラグインの開発例 2. テーマ開発のポイント② Page. 13
  • 14. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■季節のテーマ「Seasons」の開発例 ■手順1)「clean」をコピーして「seasons」にする ■手順2)clean の記述をすべて seasonsに変更 ■手順3)ファイル名 clean を全て seasons に変更 Part2 : 各種プラグインの開発例 2. テーマ開発のポイント③ Page. 14 ・langフォルダ内の「theme_clean .php」を「theme_seasons.php」 にする ・PHPプログラムの clean を seasons に書き換える(エディタ一括置換) Langフォルダの ファイル名を変更 フォルダをコピーし、 リネームする エディタの置換機能で clean ⇒ seasons へ
  • 15. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■手順5)MoodleのThemeフォルダにコピーする ■手順6)管理者にてMoodleにログイン、プラグインのインストール ■手順7)最低限の動作を確認できたら、layoutsのデザインやstyleのスタイルを修正 ■手順8)完成! Part1:Moodleプラグイン開発の概要 2. テーマ開発のポイント④ Page. 15 ・Themeフォルダに「seasons」を戻す ・管理者でログインするとプラグインのインストール 画面が表示される。プラグインをインストール。 ・テーマを適用してみる(Cleanと同じになる) ・layouts/xxx.phpやstyle/custom.cssを修正 MoodleのTheme フォルダにコピー 「Moodleデータベー スを更新」を押して インストールする テーマに配置されるので適用 してみる(何も変わらない) custom.cssに独自のスタイル定義を追加 (スタイル定義内容については省略) ※後ほどMoodle情報サイトからDLできます 春(ピンク)っぽい? デザインに変更されます
  • 16. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■プラグイン「テーマ」の構成 moodle/theme フォルダ内にプラグインをフォルダごと置く ※テーマは他のプラグインと比べ構成が少し異なります Part2 : 各種プラグインの開発例 2. テーマ開発のポイント⑤ Page. 16 フォルダ/ファイル 説明/役割 lang/言語 /theme_プラグイン名.php 言語定義ファイル(en や ja)を配置する layout/レイアウト名.php 画面表示のレイアウト(外観)の定義 pix/各種画像等、screenshot.jpg 各種画像、テーマプレビュー画像 style/スタイルシート.css テーマに利用するスタイル config.php テーマのパターン定義(レイアウト等) lib.php テーマの共通処理 settings.php テーマの管理者用設定画面(共通設定) version.php プラグイン(テーマ)の定義
  • 17. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■レイアウト定義(layout/レイアウト名.php) ● Moodleの各ページに適用するレイアウト定義 ⇒ <html><head><body>の共通部分はここ ■テーマ定義(config.php) ● 外観に関する各種定義を記述する ● どのページがどのレイアウトを使うかは config.php および 各処理で呼ばれるページAPI($PAGE)で決定 例)config.php 内の記述 $THEME->layouts = array( “standard” => array(“file” => “レイアウト.php”,) ), 特定ページの処理 $PAGE->set_pagelayout(“standard”); Part2 : 各種プラグインの開発例 2. テーマ開発のポイント⑥ Page. 17
  • 18. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■スライドパズル(SlidePuzzle)モジュール(これから作成します) 15パズル(実際9マスですが)をおこない完成タイムで評価? Part2 : 各種プラグインの開発例 3. 活動モジュール開発のポイント① Page. 18 開始前の画面、画像は Moodle moot 2015 Kyoto のチラシです。 クリックするとゲーム開始となります。 画像を元の形に戻すと完成。 画面下に経過時間が表示されます。
  • 19. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■プラグイン「活動モジュール」の開発手順(他と一緒です) 1)目的・機能を決定する(要件) 2)機能の動作やデータを格納する構造を考える(設計) 3)プラグインのテンプレート(newmodule)をコピーする 4)データ構造定義ファイル(XML)や権限定義を用意する 5)プラグイン内のファイル名やプログラムの関数名などを書き換える 6)version.phpやlang/プラグイン名.phpなどの基本情報を書き換える 7)一旦Moodleへプラグインを配置し、正常登録できるか確認する 8)各プラグインの主要処理を仕様に沿って作成する ⇒ この部分の設計(文書作成)・実装・テストが主な開発作業 9)ブラウザでMoodle上に配置されたプラグインの動作を確認する 10)8~9を繰り返しで完成させたら、7~9の動きをテスト Part2 : 各種プラグインの開発例 3. 活動モジュール開発のポイント② Page. 19
  • 20. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■プラグイン「活動モジュール」の開発手順の補足 既存モジュールのコピーは・・・少し難しい(複雑なものが多い) セオリー通り「テンプレート」を利用するのがおすすめ。 テンプレートの説明と場所 ●テンプレートの説明(moodle.org) https://docs.moodle.org/dev/NEWMODULE_Documentation ●テンプレート newmodule のダウンロード先 https://github.com/moodlehq/moodle-mod_newmodule 右下の「Download ZIP」をクリックしてダウンロード Part2 : 各種プラグインの開発例 3. 活動モジュール開発のポイント③ Page. 20
  • 21. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■稼働とモジュール「スライドパズル」の開発例 ■手順1)newmodule.zip を展開し「slidepuzzle」にする ■手順2)「newmodule」の記述をすべて slidepuzzle に変更 ■手順3)ファイル名 newmodule を全て slidepuzzle に変更 ■手順4)(大変なので)今回はとりあえず使わないファイルは残す(消してもOK) Part2 : 各種プラグインの開発例 3. 活動モジュール開発のポイント④ Page. 21 ファイル名を変更するの は langフォルダ位です ZIPを解凍し、 リネームする エディタの置換機能で newmodule ⇒ slidepuzzle へ ※対象ファイルの量が多い ・newmodule.phpをslidepuzzle.php にする ・PHPプログラムの newmodule を sildepuzzle に書き換え (エディタの一括置換)
  • 22. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■手順5)MoodleのModフォルダにコピーする ■手順6)管理者にてMoodleにログイン、プラグインのインストール ■手順7)最低限の動作を確認できたら、PHPのコードを記述(スライドパズル埋込) ■手順8)完成! Part2 : 各種プラグインの開発例 3. 活動モジュール開発のポイント⑤ Page. 22 ・Modフォルダに「slidepuzzle」を戻す ・管理者でログインしプラグインをインストール。 ・コースに「スライドパズル」を配置(エラーでない) ・素材(画像・音楽・スクリプト)を配置 ・view.php内に「スライドパズル」を埋め込む MoodleのMod フォルダにコピー 「Moodleデータベー スを更新」を押して インストールする コースに活動モジュールの 追加から「スライドパズル」 を配置してみる view.phpにスライドパズル用のHTMLソースを埋め込む ※スライドパズルそのものはMoodleと関係なくHTML5で作成 「スライドパズル」 の完成(遊べます)
  • 23. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■プラグイン「活動モジュール」の構成 moodle/mod フォルダ内にプラグインをフォルダごと置く Part2 : 各種プラグインの開発例 3. 活動モジュール開発のポイント⑥ Page. 23 フォルダ/ファイル 説明/役割 backup/moodle2/xxx.php コースのバックアップ・リストア時の処理 db/access.php、install.xml DBのテーブル定義、権限、ログ処理等 lang/言語 /プラグイン名.php 言語定義ファイル(en や ja)を配置する pix/各種画像等、icon.png 各種画像、プラグインのアイコン index.php 活動モジュールの共通ページ(管理向け) lib.php 活動モジュールの共通処理 mod_form.php 活動モジュールの設定画面 view.php メイン画面のプログラム version.php プラグイン(活動モジュール)の定義
  • 24. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■活動モジュールの共通処理(lib.php、locallib.php) コースへの追加・削除時等のプラグインで定義された振る舞いを記述する ● モジュールの追加・変更・削除イベント(Moodle本体から呼ばれる) function モジュール名_add_instance (モジュール情報) function モジュール名_update_instance (モジュール情報) function モジュール名_delete_instance (モジュールのID) ● その他のイベント(こちらも記述があればMoodle本体から呼ばれる) function モジュール名_complete ⇒ 受講者が完了させたときの処理 function モジュール名_cron ⇒ スケジューリング処理 function モジュール名_extend_navigation ⇒ ナビゲーションの処理(独自メニューを追加等) Part2 : 各種プラグインの開発例 3. 活動モジュール開発のポイント⑦ Page. 24
  • 25. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■メインプログラム(view.php) ●活動モジュールのメイン画面(講師や受講者がコース内で閲覧する画面) ⇒ 記述内容は自由だが、ある程度流れが決まっている。 プログラムの流れ 1)Moodleの設定(config.php)、ライブラリ(lib.php)の読み込み 2)コース内モジュールIDの取得とモジュール・コース情報のロード 3)ログイン・権限チェック 4)ページURL・タイトル・ヘッダー情報のセットと出力 5)モジュール独自の処理と出力(ここがメイン) 6)フッター情報の出力 Part2 : 各種プラグインの開発例 3. 活動モジュール開発のポイント⑧ Page. 25 ・echo $OUTPUT->header(); から echo $OUTPUT->footer();の間に記述 ・HTMLを埋め込んでも良い (スライドパズルの場合はHTMLを埋込み クライアントJavaScriptで動作させる)
  • 26. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■DBのテーブル定義、権限、ログ処理等(db/) ●独自のDBテーブルを利用する場合の定義ファイル(install.xml) ⇒ XMLで記述するとプラグインインストール時にDBの表を自動生成 (MoodleのXMLDBEditorを使って作ると簡単です) XMLDBの構成例 <XMLDB …> <TABLES><TABLE NAME=“テーブル名”><FIELDS> <FIELD NAME=“id” PE=“int” NOTNULL=“true” SEQUENCE=“true” NEXT=“course”/> <FIELD NAME=“course” TYPE=“int” NOTNULL=“true” PREVIOUS=“id” NEXT=“name”/> <FIELD NAME=“name” TYPE=“char” LENGTH=“255” NOTNULL=“true” PREVIOUS=“course” NEXT=“myfield1”/> <FIELD NAME=“myfield1” TYPE=“char” LENGTH=“255” NOTNULL=“true” PREVIOUS=“name” /> </FIELDS></TABLE></TABLES> </XMLDB> ●その他のファイル ・ access.php ⇒ 権限(アクセス制御)の定義を記述 ・ install.php、upgrade.php、uninstall.php ⇒ プラグインのインストール・更新・アンインストール時に 独自の処理を追加可能 ・log.php ⇒ プラグインのログ(イベント)の種類を定義 Part2 : 各種プラグインの開発例 3. 活動モジュール開発のポイント⑨ Page. 26
  • 27. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■補足)開発中に陥りやすい?こと ●Moodle画面が急に真っ白になった! 【原因】作成したプログラムの構文エラー等でMoodleが停止 対応① 直前に修正したファイルをMoodleフォルダから移動 それでもダメならプラグインのフォルダごと移動 対応② サイト管理 ≫ 開発 ≫ デバッグの設定を変更 デバッグメッセージを NONEからNORMAL等に変更 Part2 : 各種プラグインの開発例 4. まとめ・質疑応答① Page. 27 行(ステートメント)の終端 「 ; 」が無い → 構文エラー
  • 28. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■補足)開発中に陥りやすい?こと ●プログラムやJS・CSSを修正したはずなのに動作が変わらない! 【原因】Moodleまたはブラウザがキャッシュしている 対応① ブラウザのキャッシュを消去 対応② サイト管理 ≫ 開発 ≫ すべてのキャッシュを削除する を実行 対応③ サイト管理 ≫ アピアランス ≫ テーマ ≫ テーマ設定 「テーマデザインモード」にチェックを入れる(テーマ開発時) Part2 : 各種プラグインの開発例 4. まとめ・質疑応答② Page. 28
  • 29. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■弊社の過去の開発例(自社内利用含む) Moodleの構築、バージョンアップ、移行、コース・コンテンツデザインの 他に以下のような開発対応をおこなっています。 ● コンビニ・カード決済機能(活動モジュール、ブロック、ローカル) ● 組織階層管理機能(活動モジュール、ブロック、ローカル複合) ● フランチャイズ(総代理店・代理店)管理機能( 〃 複合) ● メール一斉配信(DM)機能(ローカル、メッセージ) ● コースを跨いだ進捗レポート機能(ローカル、レポート) ● Moodle画面のフルカスタマイズ(テーマ、本体修正) ● レーダーチャート表示プラグイン(活動モジュール、ローカル) ● プログラムソースコード判定プラグイン(問題タイプ) ● 自動出欠モジュール、共有カードのカスタマイズ ● オリジナルテーマおよびUIフルカスタマイズ ● MoodleとMaharaの連携プラグイン(※別会社委託) Part2 : 各種プラグインの開発例 4. まとめ・質疑応答③ Page. 29
  • 30. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ■第1部・第2部のまとめ 本日の発表では、「プログラミングの知識が無くても プラグイン開発の第一歩を踏み出せること」が目標でした。 ●開発をするにあたって必要なこと 1)Moodleに関する基礎知識(コースやモジュール、ユーザーなどの概念) 2)HTMLおよびPHP(プログラミング)の知識 3)開発をするための環境・ツールの用意 4)やってみようという好奇心・やらなきゃいけない状況に追い込む ●プラグインの開発方法 1)Moodle.org からテンプレートをダウンロードして利用する 2)既存のモジュールをコピーしてオリジナルにする Part2 : 各種プラグインの開発例 4. まとめ・質疑応答④ Page. 30
  • 31. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers ●開発の流れ 1)目的・機能を決定し、プラグインの種類を決める 2)必要なデータ構造を考える(独自にデータを格納する場合) 3)プラグインのテンプレートまたは既存のプログラムをコピー 4)自動インストール用のデータ構造定義ファイル(XML)を用意する 5)プラグイン内のファイル名やプログラムの関数名などを書き換える 6)version.phpやlang/プラグイン名.phpなどの基本情報を書き換える 7)一旦Moodleへプラグインを配置し、正常登録できるか確認する 8)各プラグインの主要処理を記述する 9)ブラウザでMoodle上に配置されたプラグインの動作を確認する 10)8~9を繰り返しで完成させたら、7~9の動きをテスト Part2 : 各種プラグインの開発例 4. まとめ・質疑応答⑤ Page. 31 これをきっかけにMoodleのプラグイン開発に興味を 持っていただけたら幸いです(ちょっと堅いですが…)
  • 32. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers Page. 32 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/ スライドパズルの音楽に「小さなおもちゃ箱」「チョコレート大作戦」を お借りしました。
  • 33. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers Page. 33 内容に関するお問い合わせは、以下へお願い致します。 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
  • 34. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 7th Conference for Moodle Teachers and Developers Page. 34