Umi Blog
ウミブログ
本日は Drupal コミュニティで提案されているスタンダードの中で JavaScript API のドキュメントに関するスタンダードを翻訳してご紹介できればと思います。
今回のものはこれまで続けてきた Drupal コーディングスタンダード日本語訳の中でも少しマニアックな部類に入るでしょうか。コードそのものではなくコードの合間に書くドキュメンテーション/コメントのためのスタンダードとなっています。もとのドキュメント自体がまだ発展途上・作成途中ということもあり、内容は比較的コンパクトです。
以下がその翻訳文となります。最終更新日が 2014 年 01 月 28 日のバージョンをもとにしています。日本語としてのわかりやすさを意識し、ところによって原文直訳、ところによって大幅な意訳にしてします。原文の厳密なニュアンスが知りたい方はぜひ原文の方にあたってみてください。
このコンテンツはいまだ作成中です。全体の議論については #1337022: [policy,do no patch] JS ドキュメンテーションパーサと互換性のある javaScript ドキュメントスタンダードの作成/適用 を、 drupal.js についてはこちらのサンプルドキュメンテーションを、 Backbone オブジェクトについてはこちらのサンプルドキュメンテーションをご覧ください。
JavaScript コードはドキュメンテーションヘッダとあわせて書くようにしましょう。ドキュメンテーションヘッダは http://drupal.org/node/1354 で説明されている PHP ドキュメンテーションヘッダとよく似たものにするべきです。コードとドキュメントをパースする最初のステップとして、 JSDoc3 パーサを使用するための変更点があります。全般的に PHP スタンダードにできるかぎり従った上で、次の変更点を押さえておきましょう:
サンプルはこちらです:
// drupal.js ファイルより:
/**
* JavaScript の settings やその他 Drupal のための情報を保持する。
*
* @namespace
*/
var Drupal = Drupal || {
// ...
/**
* Drupal の behaviors を保持する。
*
* @namespace
* @name Drupal.behaviors
*/
'behaviors': {},
// ...
}
// tabledrag.js のようなファイル内:
/**
* @file ドラッグ可能なテーブルのための JavaScript。
*/
(function ($) {
/**
* テーブルにドラッグのふるまいを付加する。
*
* @property {function} attach
* このアタッチ関数特有の説明はここに書く。
*/
Drupal.behaviors.tableDrag = {
attach: function (context, settings) {
// ...
}
};
/**
* カレントウィジェットの foo の値を返す。
*
* Drupal 名前空間の中の通常の関数の説明はここに書く。
*
* @return
* カレントウィジェットの foo の値。
*/
Drupal.getCurrentFoo = function () {
// ...
};
/**
* テーブルドラッグオブジェクトを生成する。
*
* @param {HTMLTableElement} table
* ドラッガブルなテーブルのための DOM オブジェクト。
* @param {object} tableSettings
* テーブルのための設定。
*
* @constructor
* @classdesc テーブルとそのフィールドを操作するためのドラッグ機能を提供する。
*/
Drupal.tableDrag = function (table, tableSettings) {
// ...
}
/**
* ウェイトと親となるフォーム要素を含んだ列を非表示にする。
*
* @fires columnschange
* @see Drupal.tableDrag.showColumns
*/
Drupal.tableDrag.prototype.hideColumns = function() {
// ...
/**
* Indicates that columns have changed in a table.
* テーブル内の列が変化することを示す。
*
* @param type
* 変更のタイプ: 'show' か 'hide' 。
*
* @event columnschange
*/
$('table.tableDrag-processed').trigger('columnschange', 'hide');
// ...
};
/**
* ウェイトと親となるフォーム要素を含んだ列を表示する。
*
* @fires columnschange
* @see Drupal.tableDrag.hideColumns
*/
Drupal.tableDrag.prototype.showColumns = function() {
// このイベントは Drupal.tableDrag.hideColumns で説明されています
$('table.tabledrag-processed').trigger('columnschange', 'hide');
};
}(jQuery));
・・・以上です。
いかがだったでしょうか?
Drupal 開発者にとって、 JS のドキュメントをここまで念入りに書く機会というのは比較的少ないのかなとは思いますが、実際にこういう機会がめぐってきたときにはサクサク書けるようベースの部分だけでも押さえておきたいところです。
小さなご意見も、私たちにとっては大きなヒントです!
ぜひ率直なご感想をお寄せください
この

Masters of Drupal Engineering.
人に、