開発:コーディング
このページはMoodleのコーディングガイドラインを説明するためのトップレベルのページです。 あなたがMoodleのコードをどのように書くか知りたい場合、ここから始めてください。
Moodleアーキテクチャ
Moodleではインストール、利用、アップグレード、他のシステムとの統合が容易でありながら、可能な限り多くの人々のためにできるだけ幅広いプラットフォームでも動作するよう心がけています。
詳細はMoodleアーキテクチャをご覧ください。
プラグイン
Moodleにはモジュール化という一般的な哲学があります。 30種類近い標準的なプラグインタイプおよびさらに多くのサブプラグインタイプがありますが、これらのプラグインタイプはすべて同じように動作します。そして、ブロックおよび活動は唯一の小さな例外です。
詳細は MoodleプラグインおよびMoodleサブプラグインをご覧ください。
コーディングスタイル
一貫したコーディングスタイルはどんな開発プロジェクトにおいても重要であり、多くの開発者が関わる場合は特にそうです。標準的なスタイルはコードが読みやすく、理解しやすいことを保証して、全体の品質向上に役立ちます。
この方法でコードを書くことはあなたのコードがMoodleコミュニティにより受け入れられるための重要なステップです。
私たちのMoodleコーディングスタイルドキュメントではこの規約を説明しています。
セキュリティ
セキュリティとは私たちのすべてのユーザの利益およびデータを守ることです。 Moodleは銀行のソフトウェアではないかもしれませんが、プライベートな議論および成績のような多くの機密かつ重要なデータを外部の目 (または学生のハッカー!) から保護して、さらに私たちのユーザをスパム発信者および他のインターネット犯罪者から保護しています。
Moodleは人々のサーバ上で動作するスクリプトでもあるため、責任あるインターネット市民である必要があり、動作するサーバにクラッカによる不法アクセスを可能にする脆弱性を持ち込まないようにしなければなりません。
Moodleコアまたはサードパーティモジュールの スクリプト1つで何千ものサイトに脆弱性をもたらせるため、すべての開発者は私たちの Moodleセキュリティガイドライン に厳密に従うことが重要です。
XHTMLおよびCSS
Moodleはすべての一般的なアクセシビリティガイドライン (http://www.w3.org/TR/WCAG20/ W3C WAG 2.0], ARIA など) に準拠した厳格で的確な HTML 5 コード (可能であれば [[XHTML|XHTML 1.1] と下位互換性のあることが望ましい) の生成が重要です。
レイアウトにはCSSを使用してください。Moodleにはいくつかのテーマがインストールされています。バージョン2.7以降、「クリーン」テーマのみがMoodleの基本コードに含まれています。「標準」テーマは他のテーマのビルディングブロックとして動作するのに適したプレーンなテーマであるべきです。このテーマにはMoodleの外観を整え機能的にするための最小限のスタイルが含まれていなければなりません。そして、Moodleには見た目が良くテーマ構築のための様々なテクニックを示す他のいくつかのデフォルトテーマが付属しています。
これはブラウザ間の一貫性をきれいに低下させて (特に非ビジュアルブラウザまたはモバイルブラウザを使用している人)、テーマデザイナの生活を向上させるのに役立ちます。
JavaScript
Moodleの新しいJavscriptはES6スタイルのバニラJavscriptとして記述されるべきです。jQuery、YUI、およびその他のフレームワークの使用は強く推奨されません。これらのオブジェクトの使用を必要とするレガシーインターフェースを扱う場合を除き、コアに受け入れられることはありません。
一般に削除されたインターフェースを表示したり、ページ読み込み中に新しいインターフェースを追加しないようコードを記述する必要があります。
すべてのJavascriptはアクセス可能でなければなりません。
国際化
私たちが言語パックの言語文字列およびロケール情報をコードから分離することに細心の注意を払っているため、Moodleは84以上の言語で動作します。
しかし、すべてのコード、コメントおよびドキュメントのデフォルト言語は英語(AU)です。
詳細: ストリングAPI
アクセシビリティ
Moodleは可能な限り多くの人々にうまく動作する必要があります。
詳細はMoodleアクセシビリティをご覧ください。
ユーザビリティ
詳細はインターフェースガイドラインをご覧ください (作成中)。
パフォーマンス
上の理由から、運用サイトでは推奨されないいくつかの機能 (特に開発者のための機能) が存在します。
最も重要な特性はスケーラビリティであり、ユーザ数、コース数、コース内の活動数等が多少増えたとしても、サーバの負荷はそれに比例して増加するだけです。
詳細な情報およびアドバイスに関してパフォーマンスおよびスケーラビリティをご覧ください。
データベース
Moodleには私たちが書いたXMLDBと呼ばれる強力なデータベース抽象化レイヤがあります。 これにより、同じMoodleコードがMySQL/MariaDB、PostgreSQL、MS SQL ServerおよびOracleで動作します。Oracleを使用する場合、既知の問題があります。Oracleは完全にサポートされていないため、実運用環境には推奨されません。
私たちにはテーブル定義および変更のためのツールおよびデータベースからデータを出し入れするためのメソッドがあります。
概要: Moodleデータベースガイドライン
イベント
Moodleは「イベント」でモジュール間のコミュニケーションを可能にします。 モジュールは特定のイベントを「起動」できます。また、他のモジュールはそれらのイベントを「処理/観察」できます。
詳細:
ウェブサービス
ウェブサービスは命名規則を含むWebサービスAPI関数およびコアへのWebサービス関数寄稿方法に従って実装する必要があります。
手動テスト
コアコードベースに統合されたすべての問題は統合時にテストされます。その後、私たちのテストチームによりテストされます。テストの多くの部分は自動化されていますが、自動化できない部分も多く、手動でのテストが必要です。
Moodleには明確なテスト指示の書き方のガイドラインがあります。このガイドラインを読んだ上で従うことをお勧めします。
単体テスト
単体テスト単なる技術ではなく、ソフトウェア開発の哲学でもあります。
このアイデアは (あなたの開発と同じタイミングで) 開発中の関数の各ビットについて自動化可能なテストを作成することです。これは後でソフトウェアの動作を確認するのに役立つだけでなく、開発自体にも役立ちます。なぜなら、非常に明確に定義された構造およびゴールを持つモジュール方式で作業することを強制されるからです。
MoodleではPHPUnitと呼ばれるフレームワークを使用しているため、単体テストを簡単に記述できます。
詳細はPHPUnit をご覧ください。
受け入れテスト
PHPUnitは関数およびクラスの内部実装を主にカバーしています。ユーザインタラクションのテストはBehatフレームワークで自動化できます。
詳細は受け入れテストをご覧ください。
サードパーティライブラリ
Moodleにはあなたのコードにサードパーティライブラリをインクルードするための標準的な方法があります。詳細はhttps://docs.moodle.org/dev/Third_Party_Librariesをご覧ください。
その他の規約
Moodleのコーディングスタイルおよびデザインはかなり独特であり、PEARコーディング規約または他の一般的なPHP規約とは互換性がないことに留意してください。