Moodle Tokyo Cafe #12 Developer's

28
Moodle Tokyo Cafe #12 For Developers 株株株株株株株株株株 株株 株株 (Takayuki FUWA) [email protected]

description

Moodle Tokyo Cafe #12 Developer's

Transcript of Moodle Tokyo Cafe #12 Developer's

Page 1: Moodle Tokyo Cafe #12 Developer's

Moodle Tokyo Cafe #12For Developers

株式会社アットウェア不破 崇行 (Takayuki FUWA)

[email protected]

Page 2: Moodle Tokyo Cafe #12 Developer's

今話をしている人について不破 崇行 ( ふわ たかゆき )今年の 5 月に横浜へ引っ越しました

4 月まで札幌にいました。日本ムードル協会 元理事 ( 〜 2013)

会員管理担当理事でしたMoodle プラグイン「マミライン」作者です。

Page 3: Moodle Tokyo Cafe #12 Developer's

今日の目標Moodle の内部的な動きを理解

プラグインのインストーラからいきましょう。「ブロック」の動きについて理解

どういう処理をしてるのかを見てみましょう「あー、こうやって実装すればいいんだ」と思

えるようになりましょう。

Page 4: Moodle Tokyo Cafe #12 Developer's

デベロッパー視点で見る MOODLE

Page 5: Moodle Tokyo Cafe #12 Developer's

Apr 12, 2023

5Copyright© atWare,Inc. All rights reserved.

実装で使用している言語などPHP

5.4.x 以上推奨ですCSS

2.7 から Bootstrap を使用したテーマが標準になりました。

レスポンシブ対応Javascript

yahoo.com( アメリカ ) が公開している YUI Framework を使っています

が、 jQuery へ徐々に移行している状態

Page 6: Moodle Tokyo Cafe #12 Developer's

Apr 12, 2023

6Copyright© atWare,Inc. All rights reserved.

開発者モード「サイト管理」 -> 「開発」

Page 7: Moodle Tokyo Cafe #12 Developer's

Apr 12, 2023

7Copyright© atWare,Inc. All rights reserved.

デバッグ設定

Page 8: Moodle Tokyo Cafe #12 Developer's

Apr 12, 2023

8Copyright© atWare,Inc. All rights reserved.

ページ下にずらずら出てくる

Page 9: Moodle Tokyo Cafe #12 Developer's

Apr 12, 2023

9Copyright© atWare,Inc. All rights reserved.

開発で特に重要な値contextid

ページに割り振られるユニークな IDcontext の取得方法は状況に応じて色々変わるcontext:: クラスを主に使用するget_context() は 2.7 から廃止 ( 削除されました )2.6 までは一応使えるけど「非推奨」

Page 10: Moodle Tokyo Cafe #12 Developer's

Apr 12, 2023

10Copyright© atWare,Inc. All rights reserved.

キャッシュMoodle 本体でキャッシュを持っている

DB に書き込む形で確保 ブラウザで持っているキャッシュとは別

言語ストリングをキャッシュしているので注意プラグイン開発中に、途中で言語ファイルを書

き換えた場合はキャッシュを削除する管理者設定でキャッシュさせないことができる

Page 11: Moodle Tokyo Cafe #12 Developer's

プラグインの種類ブロック (block)モジュール (mod)クイズタイプ (qtype)ローカル (local)管理者プラグイン (admin)

大きく分けると 3 つになります。

Page 12: Moodle Tokyo Cafe #12 Developer's

モジュール (mod)

Page 13: Moodle Tokyo Cafe #12 Developer's

モジュール (mod)”Activity”( 活動 ) と” Resource”( リソー

ス ) の 2 つがあります

モジュール名 中身 種類

mod_quiz 小テスト Activity( 活動 )

mod_assign 提出課題 Activity( 活動 )

mod_forum フォーラム Activity( 活動 )

mod_url URL リンク Activity( 活動 )

Page 14: Moodle Tokyo Cafe #12 Developer's

モジュールの特徴評点が出来る

(Grade” 評定”にアクセスできる )

Page 15: Moodle Tokyo Cafe #12 Developer's

モジュールの特徴ページを持たせる

Page 16: Moodle Tokyo Cafe #12 Developer's

モジュールのコツ生徒側のアクション ( 受講や提出など ) が大き

い場合ページ遷移が多い場合「受講」 (attempt) というアクションがある

場合

いずれかに該当する場合は mod での開発をおすすめします。

Page 17: Moodle Tokyo Cafe #12 Developer's

ブロック (block)トップ ( コース ) ページの左右に付随「ウィジェット」的存在

Page 18: Moodle Tokyo Cafe #12 Developer's

ブロック (block) の特徴 学生の目にとまりやすい

注意を引きつけるのに便利 条件をつけて表示できる

締め切りが近づいたらおしらせするとか

パーミッションで表示を切り替える事ができる 教員ロールを持っているユーザにだけ表示させるなど

何かと自由度が高い Moodle で 2番目ぐらいに自由で型破りなことが出来る

お手軽に作れる 今日のターゲットはこれです!

Page 19: Moodle Tokyo Cafe #12 Developer's

ブロックの実例お知らせ系Moodle 上の更新情報RSS リーダー

学校HP の RSS やニュースサイト

Page 20: Moodle Tokyo Cafe #12 Developer's

ブロックの実例Sharing CartMoodle では出来ない「コースをまたいだ」教材のコピーが出来る

コピーしたいコースにブロックを追加

Page 21: Moodle Tokyo Cafe #12 Developer's

ブロックの実例マミライン

Page 22: Moodle Tokyo Cafe #12 Developer's

実装例 : 「かぶせもの」ポップアップでウィンドウを作って「かぶせ

る」方法Moodle からある程度切り離す

ウィンドウを作って表示させる

Page 23: Moodle Tokyo Cafe #12 Developer's

Apr 12, 2023

23Copyright© atWare,Inc. All rights reserved.

「かぶせもの」のメリット使いたい API だけを選んで使えるMoodle のテーマを無視できる

テーマを読み込まないように出来る デザインを自由に設定出来る

Page 24: Moodle Tokyo Cafe #12 Developer's

Apr 12, 2023

24Copyright© atWare,Inc. All rights reserved.

MOODLE-API について

Page 25: Moodle Tokyo Cafe #12 Developer's

Apr 12, 2023

25Copyright© atWare,Inc. All rights reserved.

API?Moodle 本体の機能として、 API を用意して

います。プラグインは API を使用して Moodle と通信

をして動作しています。

Page 26: Moodle Tokyo Cafe #12 Developer's

Apr 12, 2023

26Copyright© atWare,Inc. All rights reserved.

HTML タグを出力html_writerhtml タグを生成するクラス

セキュリティ的な観点から、 html_writer の利用を推奨します。エスケープ処理を Moodle 側でやってくれる

echo html_writer::tag(‘div’, ‘ あいうえお’ );

これは

echo ‘<div> あいうえお </div>’;

と等価

Page 27: Moodle Tokyo Cafe #12 Developer's

Apr 12, 2023

27Copyright© atWare,Inc. All rights reserved.

グローバル変数によるアクセスグローバル変数から Moodle API にアクセス

$DB, $OUTPUT, $PAGE, $USER などなど。

global $DB;

$data = $DB->get_records(‘mdl_users’, array(///));

でデータベースからデータを取得できる

Page 28: Moodle Tokyo Cafe #12 Developer's

Apr 12, 2023

28Copyright© atWare,Inc. All rights reserved.

次回はどうする ?block_cafe_attend ブロックに機能をどんど

ん追加する方向で話を進めていきましょう!

次回はデータベースへの接続へDB を定義する xml ファイルSQL を書かずに DB へ接続してデータを取得しよう 出欠情報を記録できれば OK