SlideShare ist ein Scribd-Unternehmen logo
1 von 34
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

Weitere ähnliche Inhalte

Was ist angesagt?

なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - 健人 井関
 
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発TylerShukert
 
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みモバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みMorioImai
 
はじめてのUnreal Engine 4
はじめてのUnreal Engine 4はじめてのUnreal Engine 4
はじめてのUnreal Engine 4Shun Sasaki
 
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜Taiji Tsuchiya
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例kazuhcurry
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~モノビット エンジン
 
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 日本マイクロソフト株式会社
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)NTT DATA Technology & Innovation
 
TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介Takeo Imai
 
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方Fixstars Corporation
 
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界Shingo Kitayama
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたKohei Nakamura
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠Sho Okada
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
UE4で使えるSpatialized Audio Plug-inどう違うの?どれ使えばいいの?
UE4で使えるSpatialized Audio Plug-inどう違うの?どれ使えばいいの?UE4で使えるSpatialized Audio Plug-inどう違うの?どれ使えばいいの?
UE4で使えるSpatialized Audio Plug-inどう違うの?どれ使えばいいの?Satoru Okubo
 

Was ist angesagt? (20)

UE4アセットリダクション手法紹介
UE4アセットリダクション手法紹介UE4アセットリダクション手法紹介
UE4アセットリダクション手法紹介
 
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
 
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
 
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
 
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みモバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
 
はじめてのUnreal Engine 4
はじめてのUnreal Engine 4はじめてのUnreal Engine 4
はじめてのUnreal Engine 4
 
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
 
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介
 
初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座(1)初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座(1)
 
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
 
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
UE4で使えるSpatialized Audio Plug-inどう違うの?どれ使えばいいの?
UE4で使えるSpatialized Audio Plug-inどう違うの?どれ使えばいいの?UE4で使えるSpatialized Audio Plug-inどう違うの?どれ使えばいいの?
UE4で使えるSpatialized Audio Plug-inどう違うの?どれ使えばいいの?
 

Ähnlich wie 開発初心者のための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_customizinigTom 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 2014Shigeharu 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
 
書籍『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
 

Ähnlich wie 開発初心者のための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 杉浦
 

Kürzlich hochgeladen

My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」inspirehighstaff03
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」inspirehighstaff03
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」inspirehighstaff03
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfoganekyokoi
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」inspirehighstaff03
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfoganekyokoi
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfinspirehighstaff03
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」inspirehighstaff03
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドKen Fukui
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdfoganekyokoi
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」inspirehighstaff03
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」inspirehighstaff03
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドKen Fukui
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドKen Fukui
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」inspirehighstaff03
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」inspirehighstaff03
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドKen Fukui
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slidessusere0a682
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」inspirehighstaff03
 

Kürzlich hochgeladen (20)

My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdf
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
 

開発初心者のための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