Moodle 3.9 マニュアル - frankenstyle

[原文](https://docs.moodle.org/dev/Frankenstyle#Plugin_types)

# Frankenstyle

'Frankenstyle コンポーネント名' は、Moodle プラグインをプラグインとその名前で識別するための命名規則です。Moodle コード全体で（顕著な例外はテーマの css クラス名です）使用されています。

Martin Dougiamas が Petr Škoda が発明した 'frankenstyle' というを単語を命名システムとして記述することを発明しました。

内容

[1 フォーマット](#1-フォーマット)
[2 プラグインタイプ](#2-プラグインタイプ)
[3 コアサブシステム](#3-コアサブシステム)
[4 使用方法](#4-使用方法)
[4.1 関数名](#41-関数名)
[4.2 クラス名](#42-クラス名)
[4.3 定数](#43-定数)
[4.4 テーブル名](#44-テーブル名)
[4.5 プラグイン設定テーブル](#45-プラグイン設定テーブル)
[4.6 ケーパビリティ](#46-ケーパビリティ)
[4.7 言語ファイル](#47-言語ファイル)
[4.8 レンダラー](#48-レンダラー)
[4.9 モジュールサブプラグイン](#49-モジュールサブプラグイン)
[4.10 その他の場所（TODO）](#410-その他の場所todo)
[5 テーマ命名の変形](#5-テーマ命名の変形)
[6 関連項目](#6-関連項目)

#1 フォーマット

Frankenstyle コンポーネント名は接頭辞とアンダースコアで分離されたフォルダ名を持ちます。

* 接頭辞は[プラグインのタイプ](https://docs.moodle.org/dev/Plugin_types)（翻訳準備中）により決定されます。例えば activity モジュールの接頭辞は mod です。
* 名前はプラグインのフォルダ名で常に小文字です。たとえば、Quiz の名前は quiz です。

したがって、quiz モジュールの frankenstyle コンポーネント名は mod_quiz となります。

#2 プラグインタイプ

Moodle においてサポートされるプラグインのタイプとそれらの rankenstyle 接頭辞の全てのリストは[プラグインのタイプ](https://docs.moodle.org/dev/Plugin_types)（翻訳準備中）を見てください。

あなたの Moodle 2.x のバージョンの決定的なリストを得るには print_object(get_plugin_types()); という小さな Moodle スクリプトを使用してみてください。

#3 コアサブシステム

Moodle におけるサブシステムはそれ自体がプラグインではないが core_xxx として言及され xxx がサブシステム名として get_core_subsystems() において定義されるものです。

あなたはこれらが使用されているのを phpdocs の @package パラメータにおいてまたは [webservice function names](https://docs.moodle.org/dev/Web_service_API_functions) において見る事ができます。 コアなサブシステムは、lang/en/{subsystemname}.php にあるファイル経由で自身の文字列を提供することができます。いくつかのものはライブラリ、自動ロードされるクラス群とその他のリソース専用の場所を持っています。

|コアサブシステム|Frankenstyle コンポーネント名|場所|
|---|---|---|
|Access|core_access||
|Administration|core_admin|/admin|
|Antivirus|core_antivirus|/lib/antivirus|
|Authentication|core_auth|/auth|
|Conditional availability|core_availability|/availability|
|Backup and restore|core_backup|/backup/util/ui|
|Badges|core_badges|/badges|
|Blocks|core_block|/blocks|
|Blogging|core_blog|/blog|
|Bulk users operations|core_bulkusers|
|Caching|core_cache|/cache|
|Calendar|core_calendar|/calendar|
|Cohorts|core_cohort|/cohort|
|Comment|core_comment|/comment|
|Competency based education|core_competency|/competency|
|Completion|core_completion|/completion|
|Countries|core_countries||
|Course|core_course|/course|
|Currencies|core_currencies||	
|Database transfer|core_dbtransfer|| 	
|Debugging|core_debug||
|Text editors|core_editor|/lib/editor|
|Education fields|core_edufields||
|Enrol|core_enrol|/enrol|
|Error reporting|core_error||
|Favourites|core_favourites|/favourites|
|File picker|core_filepicker||
|Files management|core_files|/files|
|User filtering|core_filters||
|Forms|core_form|/lib/form|
|Grades|core_grades|/grade|
|Advanced grading|core_grading|/grade/grading|
|Groups|core_group|/group|
|Help|core_help||
|Hub|core_hub||
|IMS CC|core_imscc|| 	
|Installer|core_install|| 	
|ISO 6392|core_iso6392||
|Language pack configuration|core_langconfig||
|License|core_license||
|Maths library|core_mathslib|| 	
|Media|core_media||
|Messaging|core_message|/message|
|MIME types|core_mimetypes||
|MNet|core_mnet|/mnet|
|Dashboard|core_my|/my|
|User notes|core_notes|/notes|
|Page types|core_pagetype||
|Pictures and icons|core_pix|| 	
|Plagiarism|core_plagiarism|/plagiarism|
|Plugins management|core_plugin||
|Portfolio|core_portfolio|/portfolio|
|Privacy|core_privacy|/privacy|
|Course publishing|core_publish|/course/publish|
|Question bank engine|core_question|/question|
|Ratings|core_rating|/rating|
|Site registration|core_register|/admin/registration|
|Repository|core_repository|/repository|
|RSS|core_rss|/rss|
|Roles|core_role|/admin/roles|
|Global search|core_search|/search|
|Tabular data display/download (deprecated)|core_table|| 	
|Tagging|core_tag|/tag|
|Timezones|core_timezones|| 	
|User|core_user|/user|
|User key|core_userkey|| 	
|Web service|core_webservice|/webservice|

# 4 使用方法

Frankenstyle コンポーネント名は以下において使用されます。

# 4.1 関数名

すべてのプラグインの関数はフル frankenstyle 接頭辞で始まらなければなりません。後方互換性モジュールのためにモジュールは modulename_ も接頭辞として使用することが可能です。

# 4.2 クラス名

すべてのプラグインのクラスは frankenstyle 接頭辞で始まらなければなりません。
一例：mod_forum_some_class

# 4.3 定数

すべてのプラグインの定数は大文字の frankenstyle 接頭辞で始まらなければなりません。
一例：MOD_FORUM_XXXX

# 4.4 テーブル名

すべてのプラグインのテーブル名はその frankenstyle 名で始まらなければなりません（標準的な Moodle テーブル接頭辞以降）。

（この規則の例外は Moodle activities が（その歴史的な理由から）そのプラグイン名の先頭に mod_ を持っていません。）

一例：mdl_local_coolreport, mdl_local_coolreport_users

# 4.5 プラグイン設定テーブル

config_plugins テーブルには、plugin という列があり、frankenstyle 名が使用されています。

# 4.6 ケーパビリテイ

プラグインのためのすべてのケーパビリティには _ の代わりに / が 使用されうことを除いて frankenstyle 名が使用されています。

一例：mod/quiz:viewattempt

# 4.7 言語ファイル

それぞれのプラグイン（特徴的には activity モジュールは例外なのですが）のための主要な言語ファイルは frankenstyle コンポーネント名を持っています。

一例： /blocks/participants/lang/en/block_participants.php

# 4.8 レンダラー
# 4.9 モジュールサブプラグイン

基礎となるモジュールのコードを変更することなしにモジュールを拡張することが可能です。詳細は [Subplugins](https://docs.moodle.org/dev/Subplugins) を見てください。

# 4.10 その他の場所（TODO）

* phpdocs における `@package` 宣言は [Coding_style#PHPDoc](https://docs.moodle.org/dev/Coding_style#PHPDoc)（翻訳準備中）を参照してください。
* web サービスの関数名
* Moodle プラグインデータべース

出現してきたらもっと加えてください。

# 5 テーマ命名の変形

テーマは主にその他のテーマの派生であり、アップグレードではなく、その親テーマの派生であるのがわかるようにように明確に命名されるべきです。名前のフォーマットは標準コンポーネントのネーミングフォーマットに従いかつ拡張すべきです。例えば Boost に基づいたテーマは、bootst をコンポーネント名に言及したければ、以下のように名づけられるべきです。

`theme_boost_something`

例えば、`theme_boost_spring`, `theme_boost_summer`, `theme_boost_shiny` その他のように。もちろん親の名前を繰り返す必要はないため（例えば、`theme_spring`, `theme_summer`, `theme_shiny`）それらはただ以下のように名づけることもできます。

`theme_something`

この背景におけるポイントと理由は混乱を避けるためです - 例えば theme_boost2 は正式な Boost の新しいバージョンに見え、貢献されたテーマのためのよい名前とはならないためです。


# 6 関連項目

* [Plugins](https://docs.moodle.org/dev/Plugins)（翻訳準備中）
* [Subplugins](https://docs.moodle.org/dev/Subplugins)（翻訳準備中）
* [Core APIs](https://docs.moodle.org/dev/Frankenstyle#Plugin_types)（翻訳準備中）
* [Automatic class loading](https://docs.moodle.org/dev/Automatic_class_loading)（翻訳準備中）

[カテゴリ](https://qiita.com/intrajp/items/c614c6cffeec422fcb6c)：[プラグイン](https://qiita.com/intrajp/items/528f33ae21e41031ffb8)