このドキュメントはMoodleデザインのいくつか、およびあなたがどのように貢献できるかに関して説明したものです。
現在、内容が十分なものではありません - 最終的により良いドキュメンテーションが作成されます!
このドキュメントのセクション:
システム管理者の観点から、Moodleは下記の基準に従って設計されています。
- Moodleは最大範囲のプラットフォームで動作すべきである。
ほとんどのプラットフォームで動作するウェブアプリケーションは、PHPとMySQLを使用したものです。そしてMoodleは、この環境で開発 ( Linux、WindowsおよびMac OS X上で ) されています。また、Moodleはデータベース・アブストラクションにADOdbライブラリを使用していますので、10種類以上の異なるデータベースブランド を利用することができます ( 残念ながら、まだこれらのデータベースに関してテーブルのセットアップを行うことができません - 将来的に対応する予定です )。
- Moodleは簡単にインストール、学習および修正することができるべきである。
Moodleの最初のプロトタイプ ( 1999 ) は、Zope - 先進的なオブジェクト指向ウェブアプリケーションサーバを使用して開発されました。残念なことに、技術的には非常に素晴らしいのですが、学習曲線がとても険しく、システム管理に関して柔軟性に欠けていました。他方で、PHPスクリプト言語は非常に簡単に習得することができます ( 特に、あなたが他のスクリプト言語を使ってプログラミングの経験がある場合 )。早い段階で、クラス指向デザインの使用を避けること - さらに初心者にも簡単に理解できるようにすることを決定しました。代わりにコードの再利用は、明確に名前をつけられた関数および一貫性のあるスクリプトファイルのレイアウトによって実現されています。また、PHPはインストール ( バイナリはあらゆるプラットフォームで利用可能 ) が簡単で、ほとんどのウェブホスティングサービスが標準的に提供しているため、幅広く利用可能です。
- 1つのバージョンから次のバージョンに簡単にアップグレードできるべきである。
Moodleは自身のバージョンを理解することができ ( 同様にプラグインモジュールのバージョンも ) 、Moodleが適切に新しいバージョンにアップグレードできるような仕組みが組み込んであります ( 例えば、データベースのリネームまたは新しいフィールドの追加を行うことができます )。例えば、UnixでCVSを使用している場合、「 cvs update -d 」を実行して、サイトホームページにアクセスすることで、アップグレードを完了することができます。
- 発達のためにモジュールであるべきである。
Moodleには、テーマ、活動、インターフェース言語、データベーススキーマ、およびコースフォーマットを含む数多くのモジュールがあります。このことにより、メインのコードベースに機能を追加したり、モジュールを独立して配布することができます。詳細は下記にある次のセクションをご覧ください。
- 他のシステムと結合して使用できるべきである。
Moodleが行う1つのことに、1コースの全てのファイルをサーバの単一標準ディレクトリに保存することがあります。このことによりシステム管理者は、Appletalk、SMB、NFS、FTP、WebDAV等のシームレスなファイルレベルのアクセスを教師に提供することができます。認証モジュールにより、MoodleはLDAP、IMAP、POP3、NNTPおよび他のデータベースをユーザ情報のソースとして使用することができます。他に行われていない開発作業があります。Moodleの将来のバージョンで計画されている機能は: ( IMSおよびSCORMを含む ) XMLベースのフォーマットを使用したインポートおよびエクスポート、および ( 他のウェブサイトと視覚的に統合できるように ) インターフェースフォーマットにおけるスタイルシートの更なる利用です。
先に述べたように、Moodleにはモジュールとして数多くの機能があります。プログラマーではなくても、あなたが変えること、手伝うことがあります。
学習活動
非常に重要なモジュールは「mod」ディレクトリの中に入っています。 数多くのデフォルトモジュールがあります: 課題、投票、フォーラム、小テスト、調査、Wiki等です。各モジュールは個別のサブディレクトリに格納され、次の必須要素を含みます ( 加えて各モジュール特有の特別なスクリプト ):
- mod.html: 設定、またはモジュールのインスタンスを更新するためのフォーム
- version.php: メタ情報の定義およびアップグレードコードの提供
- icon.gif: モジュールの16x16アイコン
- db/: 全ての必要なテーブルおよびデータのSQLダンプ ( 各データベースタイプ用 )
- index.php: コースの全てのインスタンスを一覧表示するページ
- view.php: 特定のインスタンスを表示するページ
- lib.php: モジュールで定義された全ての関数はここに記述されます。 モジュールがwidget ( ウィジェット ) から呼ばれる場合、必要な関数が含まれます:
- widget_add_instance() - widgetの新しいインスタンスを追加するコード
- widget_update_instance() - 既存のインスタンスを更新するコード
- widget_delete_instance() - インスタンスを削除するコード
- widget_user_outline() - インスタンスを渡すと、ユーザのコントリビューションに関する要約を返す
- widget_user_complete() - インスタンスを渡すと、ユーザのコントリビューションに関する詳細を返す
- 可能性のあるコンフリクトを避けるため、全てのモジュール関数のネーミングは先頭にwidget_を付け、定数は先頭にWIDGET_ を付けるべきです。
- 最後に、各モジュールはモジュールのストリングを含んだいくつかの言語ファイルを持ちます。下記をご覧ください。
新しい学習活動モジュールの開発を開始する一番簡単な方法は、 mod/newmodule_template.zip のテンプレートを使用することです。 解凍して、中に入っているREADMEに従ってください。
最初に、Using Moodleの活動モジュールフォーラム に投稿するのも良いでしょう。
テーマ
テーマ ( またはスキン ) はサイトの外観を定義します。メインディストリビューションでは数多くのシンプルなテーマが提供されています。しかし、独自のテーマを独自の色、ロゴ、スタイルおよび画像を使用して作成することができます。
各テーマはサブディレクトリ「theme」の中にあり、少なくとも下記のファイルを含んでいます:
- config.php: CSSファイルが、どのように連携して動作するか定義します。スタンダードまたは他の親テーマ上に、いくつかのCSSファイルを含む、または含まない独自のテーマを作成することができます。
- styles.php: CSSファイルへのブリッジを構築します。このファイルを編集する必要はありません。
- header.html: 各ページのトップを含みます。例えば、ページのトップにロゴを追加したい場合に編集する必要があります。
- footer.html: 各ページのボトムを含みます。
- styles_color.css: 全てのカラー属性に関するCSSスタイルです。
- styles_fonts.css: フォント、フォントサイズ、テキストの高さ等に関するCSSスタイルです。
- styles_layout.css: ページレイアウト、位置等に関するCSSスタイルです。
- styles_moz.css: Mozillaの特別な曲線コーナーに関するCSSスタイルです。
現バージョンのMoodleに独自のテーマを作成するには:
- 既存のテーマフォルダの1つを新しいフォルダ名でコピーしてください。スタンダードテーマで開始されることをお勧めします。
- 必要に応じてconfig.phpを編集してください。
- あなたのスタイルにCSSファイルを編集してください。
- 新しいロゴを追加、またはレイアウトを変更するために、header.htmlおよびfooter.htmlを編集してください。
Moodleのアップグレードは、少しだけテーマを壊す可能性がありますので、カスタムテーマを使用している場合はリリースノートを注意深く確認してください。
Moodleテーマに関する詳細な説明は、Moodle Docs をお読みください。
テーマに関する更なるディスカッションは、Themes forum on Using Moodle をご覧ください。他の人が使いたくなるような素晴らしいテーマをあなたが作成した場合、zipファイルをテーマフォーラムに投稿してください!
言語
Moodleは国際化対応として設計されています。インターフェースの一部として表示されるテキストの各「ストリング」または「ページ」は、一連の言語ファイルより出力されます。各言語はディレクトリ「lang」のサブディレクトリに入ります。 言語ディレクトリの構造は下記のとおりです:
lang/en - 1つの言語の全てのファイルを含むディレクトリ ( 例 英語 )
- moodle.php - メインインターフェースのストリング
- assignment.php - 課題モジュールのストリング
- choice.php - 投票モジュールのストリング
- forum.php - フォーラムモジュールのストリング
- quiz.php - 小テストモジュールのストリング
- resource.php - リソースモジュールのストリング
- survey.php - 調査モジュールのストリング
- .... ある場合は、加えて他のモジュールのストリング
これらのファイルから呼ばれるストリングは、 get_string() または print_string() 関数を使用します。 それぞれのストリングは異なる言語での変数の利用を実現するため、変数の置換をサポートします。
例 $strdueby = get_string("assignmentdueby", "assignment", userdate($date));
特定の言語でストリングが存在しない場合、代わりに同等の英語ストリングが自動的に使用されます。lang/en/help - 全てのヘルプページ ( 文脈依存のポップアップヘルプ用 )
メインのヘルプページはここにあり、各モジュールのヘルプページはモジュール名のサブディレクトリ内にあります。
ヘルプボタン機能と共に、ページにヘルプボタンを挿入することができます。
例 helpbutton("text", "テキストに関するヘルプはここをクリック");
モジュールにも挿入することができます:
helpbutton("forumtypes", "Forum types", "forum");
「言語設定」内の管理ウェブツールを使用して、オンライン上で言語ファイルを編集することができます。 このツールは新しい言語ファイルを作成するだけではなく、既存の言語ファイルに磨きをかけることもできます。 新しい言語ファイルの作成を開始する場合、Martin Dougiamas にご連絡ください。
また、Using MoodleのLanguageフォーラム にも投稿することができます。
あなたが進行中の言語ファイルを整備している場合、直接ファイルを整備できるように MoodleソースコードのCVS書き込み権 を与えることができます。
データベーススキーマ
テーブルが定義されたデータベースにおいて、Moodleで使用されるシンプルなSQLは幅広い種類のデータベースブランドで快適に動作します。
Moodleが最初のインストールで試みる、データベースに新しいテーブルを自動的作成する処理に問題があります。 全てのデータベースは非常に異なり、まだ単独のプラットフォームで処理する方法が無いからです。各データベースで、この自動処理をサポートするには、データベースにMoodleテーブルを作成するための必要なSQLを記載するスキーマを作成することができます。これらのファイルは、lib/db および 各モジュールのdbサブディレクトリ内にあります。
現在、この方法に関してMySQLおよびPostgreSQLが完全にサポートされています ( 他のデータベースブランドに関しては誰もスキーマを書いていません )。
Moodle 1.2では、これらの方法を必要としない、新しい方法であるデータベース独自のXMLスキーマを使用します。
コースフォーマット
現在、Moodleはウィークリー、トピックおよびソーシャルの3つの異なるコースフォーマットをサポートしています。
コードの後に少しだけしか追加 ( 従って「追加可能」余地が少ない ) できませんが、新しいコースフォーマットを簡単に追加することができます。
あなたが追加したい異なるコースフォーマットにアイディアがある場合、またはあなたが見たい場合、私にご連絡ください。それらのコースフォーマットが将来的なリリースで利用できるよう最善を尽くします。
ドキュメンテーションおよび論文
あなたがMoodleのチュートリアル、論文、学術論文を書きたいと思う場合は、どうぞお書きください!
執筆したものをウェブサイトに置いて、間違いなく次の行を入れてください: http://moodle.org/
バグ・トラッカーへの参加
最後に、あなたが見つけたバグを投稿して、恐らく議論および修正に参加することができるように、「バグ・トラッカー」 ( http://moodle.org/bugs ) への登録をお勧めします。
「バグ」は、現在のバージョンのMoodleに含まれているソフトウェアバグだけではなく、新しいアイディア、機能のリクエストおよび既存の機能に対する建設的な批評を意味します。オープンソースの美しさは、誰でも独自の方法で参加して、私達全てが楽しむことができるように、より良いプロダクトの開発を支援できることにあります。このプロジェクトでは、あなたの投稿を心より歓迎いたします!
Moodleをご利用頂きましてありがとうございます!
Martin Dougiamas, Lead Developer
Version: $Id$