プロジェクト文書

Drupal日本語翻訳プロジェクトのドキュメントです。

プロジェクト

Drupal日本語プロジェクト(以下、本プロジェクト)は、Drupalを日本語で使い易くすることを目的に、リソース(翻訳データ、モジュール)の作成及び配布を行います。本プロジェクトの配布リソースは、GNU 一般公衆利用許諾契約書(GNU GPL)に従い頒布されます。

なお、ここで言う所の「日本語で使い易く」とは、広義には日本特有の要件を満たすことを含めます。例えば、日本語文節処理や携帯電話対応、日本のソーシャルサービス対応なども、本プロジェクトの目的に含まれます。

本プロジェクトは、現在SourceForge.jpのプロジェクトとして運営、ホームページ共にSourceForge.jpでホスティングされています。

インストールガイド

ここでは、日本語プロファイルを使ったDrupalのインストール方法を説明します。

日本語プロファイルは、SourceForge.jpからダウンロードしてください。

参考サイト


インストール方法

新規インストール方法



Drupal5.x(6.x)を新規インストールする場合の方法です。
ダウンロードした圧縮ファイルを解凍すると出来るjapaneseフォルダをDrupalのprofilesディレクトリ下にコピーし、Drupalルートディレクトリのinstall.phpをブラウザで開いてください。
直後の選択肢で「日本語Drupal」を選択し、以降のインストール処理を行ってください。
jBoxモジュールとUpdate Localeモジュールが自動的にインストールされます。

このインストール手順は、こちらのサイトで詳しくレポートされています: Drupal5.0は楽ちんインストール | Drupal-J.com
Drupal6.xでは若干異なりますが、基本的な流れは同じです。

また、新規インストールを行うと、Update Localeモジュールの「翻訳用CVSレポジトリ」が以下に設定され、翻訳のネットワークインポートが有効となります。

:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/drupal-jp

既存のDrupalへのインストール方法



Drupal-jBox.netで公開していた日本語プロファイルを使って既にDrupal5.xをインストールしている場合は、profiles/japaneseディレクトリを添付ファイルのjapaneseディレクトリと入れ替えてください。(上書きですと不要なファイルが残ります。)

また、日本語プロファイルを使わずにインストールした、或いは、過去のバージョンからDrupal5.x(6.x)にアップデートした場合は、japaneseディレクトリ内にあるmodulestranslationsの2つのディレクトリをDrupalのprofiles/defaultディレクトリ内にコピーしてください。

最後に、モジュール管理画面でjBoxモジュールとUpdate Localeモジュールを有効にすれば、上記の機能が使用可能になります。

参考サイト


システム要件(仮)

追記(2008/11/18):
長らく放置していた間に、原文が大きく変更されていました。折を見て修正いたします。

追記:
System requirements|drupal.org
の抄訳であり試訳です。
ライセンスに関しては、System requirements|drupal.org
左ブロック最下部に記されている通りです。
不精して明記していませんでした。申し訳ありません。
==========================================================================
※素人訳なので間違いはどんどん訂正して下さい。

1. PHP スクリプトを実行できるWEBサーバ

推奨: Apache
UNIX系マシン またはWindows 上にホスティングされている Apache 1.3 または Apache 2.x で動作します。
Drupalを使ったサイト開発の大半は Apache 上で行なわれているため、 Apache のほうがコミュニティの共有経験が豊富です。
クリーンURL(/?q= のないURL)を実現するには Apache の拡張機能である mod_rewrite が必要です。
※IIS での運用も可能のようですがここでは省略します。

2. PHP Drupal 4.7 以上のバージョンでは PHP 4.3.3 またはそれ以上が必要です。 PHP 5.2 は特別で、Drupal 4.7.5(またはそれ以上)か 5.0(またはそれ以上)でないと動作しません。 セキュリティ上の理由と、将来的な互換性を考慮した場合、PHP 4.x. または 5.x の最新バージョンを使用することを推奨します。

*コアシステムのインストールについては約8MBのPHPメモリーが必要です。
実際は、使用する拡張モジュールの数と性質によってもっと高い設定が必要でしょう。
16-24 MB あたりから始めてみるのが妥当だと思われます。

*PHP の XML 拡張機能(注:blogapiモジュール,drupalモジュール,pingモジュールで必要です)。
この拡張機能は、標準的なPHPインストレーションではデフォルトで有効になっています。

* PHPにおいては、Drupalを動作させるために次のようなコンフィグレーションディレクティブが必要です。
デフォルトの php.ini-dist / php.ini-recommended と相違するディレクティブのみを記述します:
o session.save_handler: user

また次の設定を推奨します:
o session.cache_limiter: none
o error_reporting set to E_ALL & ~E_NOTICE.
※Drupal6に向けてこれを E_ALL に変更する作業が行なわれています。

* これらの設定のいくつかはDrupalに同梱されているデフォルトの .htaccess ファイルに含まれているため明確に設定する必要はありませんが、
.htaccess によるPHPのコンフィグオプション設定は次の条件でしか作用しないことに留意してください:
o Apache (または互換性のあるWEBサーバ)
o .htaccess ファイルが、例えば AllowOverride は None ではないと読み込んでいる場合
o PHP が Apache のモジュールとしてインストールされている場合

* PHPへの他のインターフェースのためのコンフィグ設定の変更の仕方については PHP マニュアルを参照してください。

3. PHPがサポートするデータベースサーバ

推奨: MySQL 4.1 または MySQL 5.0.

* Drupal は v3.23.17 と 4.0 でも動作しますが、将来的なDrupal6との互換性を考慮して、4.1 または 5.0 を使用することを強く推奨します。
Drupal6 は4.1 または 5.0 よりも古いバージョンの MySQL をサポートしない予定です。

* 注: Drupal は廉価な共用レンタルサーバでは利用できない場合のあるいくつかの機能を使用していますので、
お使いのレンタルサーバで次の機能を使用できるかを確認してください:

SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES

注: お使いのシステム/ホストが 4.1 以降の MySQL を使っていて、かつ次のようなエラーメッセージ
"Client does not support authentication protocol requested by server"
が出た場合は、MySQL AB の
http://dev.mysql.com/doc/refman/4.1/ja/old-client.html
を参照してください。
MySQL 5+ において主として Windows 上でOSに起因する問題が発生することがありますが、UNIX環境でも同様の例が見られるようです。

※PostgreSQL でも動作しますが、拡張モジュールが対応していない場合があるので割愛します。

翻訳

ネットワークインポート用に配布している翻訳ファイルは以下通りです。

TortoiseCVSで翻訳ファイルをコミットしよう!

zoracさんが、『TortoiseCVSでSSHを使おう!』で記述したコメントの一部を抜粋してリンクを付けただけですが、とりあえず投稿します。必要に応じて随時修正して下さい(許可不要です)。



作業手順

  1. TortoiseCVSのダウンロード

  2. 翻訳ファイルのチェックアウト

  3. 翻訳ファイルのコミット

  4. sourceforge.jpのアカウント取得

  5. TortoiseCVSでSSHを使おう!




1.TortoiseCVSのダウンロード

以下から最新バージョンをダウンロードします
http://www.tortoisecvs.org/download.shtml

TortoiseCVSは1.8.31が最新だったと思います。
日本語化は、「preference...」メニューのダイアログで「language」を指定できます。

取り敢えず、CVSをご存知かどうか判らないので、簡単に説明しますね。
CVSはファイルサーバのようなものだと考えて貰っていいと思います。作られた目的が違いますが、結局のところ「バージョン管理ができるファイルサーバ」です。

ファイルの保管場所をCVSでは「レポジトリ」と呼び、レポジトリからローカルディスクへファイルをコピー(チェックアウト)したり、その逆を行います。レポジトリにファイルを書き込んだ(コミット)場合、上書きで前のデータが消えてしまうのではなく、差分が保管されます。ですから、チェックアウト時にファイルのリビジョンを指定してやれば、昔のファイルを読み出すことができます。
そうやって、履歴を残しつつファイルを共有するのがCVSで、CVSを使った開発作業では、「チェックアウトしたファイルを修正・変更してコミット」を繰り返します。


2.翻訳ファイルのチェックアウト

まず、チェックアウトの方法ですが、
どこかのフォルダ(デスクトップで構いません)上で右クリックして、「CVSチェックアウト」メニューを選び、ダイアログの「CVSROOT」欄に、

:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/drupal-jp

を、「モジュール」欄に

translations

を入力してOkボタンを押してください。
すると「translations」フォルダができて、中にLICENSE.txtがあるはずです。これが「チェックアウト」です。
CVSのレポジトリ(CVSROOTとほぼ同義)から「translations」モジュール(レポジトリ内のサブフォルダ)をチェックアウトしたことになります。

次に、「translations」フォルダ上で右クリックして、CVSサブメニューから「特殊アップデート」を選んでください。ダイアログの「タグ・ブランチ・リビジョンを取得する」をチェックして、その右欄に「DRUPAL-5」と入力、Okします。
これで「translations」フォルダ内に「ja」フォルダができ、その中に翻訳ファイルが入っています。

「アップデート」とは、チェックアウトしたローカルフォルダをCVSレポジトリの最新状態に合わせて更新することで、「特殊アップデート」はアップデートの際に特定のリビジョン等を指定して更新する機能です。

CVSの履歴は「ブランチ」(枝)を使って枝分かれさせることができます。ブランチにより、同じモジュールの異なるバージョンを履歴管理します。
上記の「チェックアウト」ではデフォルトの「HEAD」ブランチがチェックアウトされました。そして、「特殊アップデート」で「DRUPAL-5」ブランチの最新版に更新したわけです。

最初の「チェックアウト」ダイアログの「リビジョン」タグで「DRUPAL-5」を指定すれば、「DRUPAL-5」ブランチを直接チェックアウトすることも可能で、同じ結果となります。

長くなりますので、取り敢えずここまではOkでしょうか?


CVSについての予備知識

(^^
 「ブランチ」が解り辛いかと思うのですがどうでしょう?
 視覚的に「ブランチ」を見るには、チェックアウトしたファイルの上で、右クリックによるCVSメニューから「リビジョングラフ」を選んで頂けば、グラフが図示されます。

 今回の翻訳ファイルは修正を行っていないので、まだ解り辛いかもしれませんが、例えばtranslations/ja/ja.poのリビジョングラフを見て頂けば:

(ja.po)
 |
 +--[1.1]---(DRUPAL-5)
|
[1.1.2.1]

このようなグラフになっていると思います。(絵はズレますが感じは判りますよね?)
 数字を含んだ四角が、そのファイルの各リビジョン(過去のある時点でのファイル内容)で、角丸四角がブランチです。
 DRUPAL-5のブランチに新たに修正を加えると、次のリビジョンは「1.1.2.2」となります。また、デフォルトのブランチ(枝というより幹?) は、グラフに表示されていませんがHEADという名前で「1.1」の下に繋がります。そこに新しい修正を加えれば、次のリビジョンは「1.2」です。

 ブランチの使い方は開発のポリシーによりますが、ここでは本家CVSのポリシーにあわせています。Drupalの各バージョンに対応した開発はそれようのブランチで行い、バージョンアップの際はHEADから新たにブランチを発生させます。
ですから、「DRUPAL-5」はDrupal 5.x用の開発ブランチですね。

 新たな翻訳ファイルも「DRUPAL-5」のブランチに加えていってください。update_localeモジュールは、実行中のDrupalのバージョンにあったブランチから翻訳をインポートしますので。


3.翻訳ファイルのコミット

 さて、前置きが長くなりましたが、翻訳ファイルを加える方法です。以下にその方法を書きますが、まだその通りしないでください。理由は後で説明します。

 まず、「DRUPAL-5」ブランチをチェックアウト(アップデート)したローカルのディレクトリ内に新しい翻訳ファイルをコピーします。モジュールの翻訳ファイルは、translations/ja/modules/の下に「プロジェクト名.po」のファイル名です。

 次に、コピーしたファイルの上で「CVS 追加」メニューを選び、ダイアログでコピーしたファイルがチェックされているのを確認してOkします。これで、レポジトリに追加されます。
 が、これではまだ追加を予約しただけで、実際にファイルは追加されていません。

 実際に追加するには、ファイルの上で「CVS コミット」メニューを選びます。そのダイアログでコメントを書いてOkすれば、レポジトリに実際にファイルが追加されます。

 コメントも履歴に残りログに出力され、そのリビジョンの変更がなぜ行われたかなどの情報を書き記す為に使われます。でも、余り気にせずに書いて構いません。日本語も入れられます。

 既にあるファイルを修正する場合は、そのファイルを修正した後、同じように「コミット」します。ローカルフォルダで行った追加、修正をレポジトリに反映させる操作が「コミット」です。

 翻訳ファイルをレポジトリに入れる基本作業は以上です。

 それで本番ですが、「:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/drupal-jp」は読み出し専用ですので、ここには書き込み(追加)出来ません。(^^
 開発作業は、http://sourceforge.jp/cvs/?group_id=1932 の下側に書かれている「SSHを使った開発者向けアクセス」で行わなければなりません。が、アクセス方法が若干異なるだけで、作業自体は上述したものと同じです。

 さて、この「SSHを使った開発者向けアクセス」を行うためには、まず、amayadoriさんのsourceforge.jpユーザを開発者登録しなければなりませんので、ユーザ名を教えていただけますか?
 その上で、SSHの設定を行って頂かなければなりません。SSHはTortoiseCVS付属のものが使えますので、新たにソフトをインストールする必要はありません。

 ということで、また次回。(^^
 次回は「TortoiseCVSでSSHを使おう!」です(笑


4.sourceforge.jpのアカウント取得

こんばんは。sourceforge.jpのアカウントは、

https://sourceforge.jp/account/register.php

ここで取得できます。もちろん無料です。(^^

(注)アカウント取得後にプロジェクト開発者として登録する必要があるので、このページにコメントで申請するか、またはこのサイトのブログにその旨を記載して下さい。


5.TortoiseCVSでSSHを使おう!

さて、amayadoriさんのsourceforge.jpのアカウントは、プロジェクト開発者として登録しました。これで、CVSへの追加/修正が可能です。

で、その方法ですが、前回書いたとおりSSH経由でレポジトリにアクセスする必要がありますので、TortoiseCVSでSSHを使えるように設定します。

まず、SSHは公開鍵方式の暗号化を行いますので、公開キーと非公開キーの2つを作成します。そして、公開キーをsourceforge.jpに登録し、非公開キーをTortoiseCVSから参照できるようにします。

具体的な手順ですが、TortoiseCVSのフォルダにあるputtygen.exeを使います。

puttygen.exeを起動してGenerateボタンを押すと上の部分にメータが出ますので、その下辺りでマウスをぐりぐりしてください。メータが2回最後まで達すると公開キーと非公開キーが出来上がります。

次に、Save private keyボタンを押して非公開キーをファイルにセーブします。このファイルはCVSを使う度に使用しますので、ご自分のフォルダに保管しておいてください。

公開キーはsourceforge.jpに登録しますので、puttygen.exeのダイアログは閉じずに、sourceforge.jpにログインしてください。そして、「アカウント管理」メニューから管理ページに移動し、ページの一番下の[鍵の編集]リンクをクリックしてください。「CVS/SVN/SSHで共有する公開鍵」ページに移りますので、そこに公開キーをコピペして「更新」ボタンを押します。
公開キーはputtygen.exeのダイアログ上部の"ssh-rsa"で始まる英数字の羅列です。これをコピペしてください。

「更新」ボタン後のページの一番下で「CVS/SVN/SSHで共有する公開鍵」が"1"になっていればOkです。公開キーが登録されました。

今度は、TortoiseCVSの設定です。右クリックのCVSメニューから「オプション」を実行してください。ダイアログの「ツール」タブを選び、一番下の「SSH parameters」欄を、

-i "非公開キーファイル" -l "%u" "%h"

とします。先頭に-iオプションを書き加えればいいと思います。非公開キーファイルは、先ほど保存したファイルのフルパスを入れてください。

これで「Ok」すれば設定終了です。

SSHの設定が済めば、レポジトリに開発者向けアクセスができます。
チェックアウトの際、CVSROOTに

:ext:amayadori@cvs.sourceforge.jp:/cvsroot/drupal-jp

を指定すれば開発者向けアクセスになります。その他の手順は以前書いたものと同じです。

配布モジュール

ここでは、プロジェクトで配布しているモジュールの説明を行います。

各モジュールは、SourceForge.jpからダウンロードできます。

jBox

概要



jBoxモジュールは、日本語環境で有用となる細かな機能を提供します。

現在jBoxモジュールが提供する機能は、次の通りです。

  1. メールのJISコード化。(字化け対策)
  2. 日本語日付フォーマットの追加。

メールのJISコード化



Drupalでは、非英語(非ASCIIコード)のメールをUTF-8にエンコードして送信します。しかし、UTF-8に対応していない日本語用メーラはまだ多く存在します。その様なメーラでは、Drupalサイトからのメールが字化けしてしまいます。

jBoxモジュールをインストールすると、日本語メールを日本語メーラ標準のJISコードにエンコードして送信します。

日本語日付フォーマットの追加



Drupalでは、日付の表示に幾つかの日付フォーマットを選択して使用できます。しかし、日本で一般的に使われる日付フォーマットは含まれていません。

jBoxモジュールをインストールすると、日本で一般的に使われる日付フォーマットが追加されます。

参考リンク


開発版スナップショット


Locale Ex

この項目は書きかけです。

概要


Locale Exモジュールは、Drupalのモジュールから文字列を抽出し、.po形式の翻訳ファイルを作成します。

翻訳ファイルの取り扱い



Locale Exモジュールは、モジュールのソースファイルから原文を抽出し、DBにインポートされている翻訳データから対応する訳文を引用して翻訳ファイルを作成します。このため、作成された翻訳ファイルを配布される場合は、ライセンスにご注意ください。

ここでは原文及び翻訳文字列が著作物に相当するか否かの判断は控えますが、drupal.orgで配布されているモジュールはすべてGNU GPLでライセンスされており、Drupal日本語プロジェクトで配布している翻訳ファイルに関しても同様です。ですので、作成された翻訳ファイルを配布する場合もGNU GPLでライセンスするのが一番安全でしょう。

使用メモリ量



大きなファイルが含まれたモジュールの文字列を抽出するには、多くのメモリが必要となります。もし、メモリが足りなかった場合は、翻訳ファイルがダウンロードされず、ブラウザの表示が真っ白になったりします。
また、サーバのエラーログには以下の様なエラーが記録されます。

Allowed memory size of 33554432 bytes exhausted (tried to allocate 44 bytes)

このような時は、PHP.INIファイルのmemory_limitの設定値を大きくして使用メモリ量を増やすしかありません。memory_limitの設定変更はサーバ管理上の都合もありますので、無理でしたらそのモジュールの文字列の抽出は別の方法で検討してください。

なお、目安として、Drupalコアの文字列の抽出に約16Mバイト必要です。
大抵のモジュールはこれ以下で動作すると思いますが、なかにはとても大きなファイルを持ったモジュールもあります。

参考リンク


開発版スナップショット


PDA theme

概要



PDA themeモジュールは、携帯電話を含むPDAからサイトにアクセスした際、専用のテーマで表示するモジュールです。

その他、PDA用テーマに機器に最適な画像表示が行う機能を提供します。

使用方法



PDA themeモジュールを有効にすると、テーマ管理画面に「PDAテーマ」タブが追加されます。そのタブで、PDA用のテーマを選択してください。

本プロジェクトで配布しているテーマ"pda"を使用すると、携帯電話の小さな液晶に合わせた表示になります。

ToDo


  • cookieに対応していない機器(ほとんどの携帯電話)でのログイン
  • 画像の最大サイズを機器毎に対応

開発版スナップショット


Update Locale

概要



Update Localeモジュールは、翻訳の自動インポート機能を提供します。

翻訳の自動インポートは、モジュールのインストール時に翻訳を自動的にインポートする機能です。モジュールのpoディレクトリにja.poファイルがあればインポートします。ただし、プロフィールディレクトリのtranslations/ja/modulesディレクトリ内に「モジュールディレクトリ名.po」ファイルがある場合は、そちらをインポートします。(これにより、プロフィール毎に独自の翻訳を提供できます。)

翻訳のネットワークインポート



Update Localeモジュールは、翻訳のネットワークインポートを行えます。これにより、翻訳ファイルをダウンロードしてインポートしなくとも、モジュールを有効にすれば自動的に日本語化されます。(翻訳サーバに翻訳ファイルが登録されているモジュールのみ)

ネットワークインポートの設定は、「ローカライゼーション」画面の「文字列の更新」タブで行います。「翻訳用CVSレポジトリ」を以下に設定すると、ネットワークインポートが有効となります。

:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/drupal-jp

また、「更新間隔」を設定すれば、新たに追加された翻訳や修正された翻訳が一定間隔で自動的に反映されます。これにはcronの設定が必要です。

更に、翻訳文字列をカスタマイズしない場合は、「モデレーション」を無効とすればすべて自動で翻訳が更新されます。

参考リンク


開発版スナップショット


その他

その他の情報です。

Drupalコーディング規約

以下の文章は、Drupal Coding Standardsの記事を意訳したものです。 誤訳がありましたら適当に修正して下さい。また入力フィルターの影響かわかりませんが、意図しない所で行間があいてしまったりしているので、適切に整形出来るようでしたら、そちらの修正も御願い致します。



注釈:Drupalコーディング規約はDrupalに組み込まれるコードに適用されます。
この規約は、PEAR Coding standardsを参考にして作成されました。



インデント


2つのスペースを1つのインデントとして使用します。インデントとしてタブは使用しません。

制御構造


if, for, while, swithなどの制御構造の記述について。例としてそれらの中で最も複雑なifステートメントの例を記載します。
if (condition1 || condition2) {
  action1;
}
elseif (condition3 && condition4) {
  action2;
}
else {
  defaultaction;
}

制御文を関数呼び出しと区別する為に、制御キーワードと括弧の間には1つのスペースを挿入します。
技術的にはオプションであっても、常に中括弧を使用する事が強く推奨されます。そうする事によって、可読性が向上し、行が追加された時のロジックエラーの発生を減少出来ます。

switch文の場合の例:

switch (condition) {
  case 1:
    action1;
    break;

  case 2:
    action2;
    break;

  default:
    defaultaction;
    break;
}



関数呼び出し


関数を記述する際は、関数名と左括弧、最初のパラメータの間にはスペースを挿入しません。またカンマと各パラメータの間にはスペースを挿入し、最後のパラメータと右括弧、右括弧とセミコロンの間にはスペースを挿入しません。以下、例を記載します。
$var = foo($bar, $baz, $quux);
上記のように、関数の戻り値を変数に代入する場合は、イコール記号の両端に1つづつスペースを挿入します。
関連した値の代入ブロックの場合は、可読性を向上させる為に1つ以上のスペースを挿入しても構いません。
$short         = foo($bar);
$long_variable = foo($baz);


関数定義


function funstuff_system($field) {
  $system["description"] = t("This module inserts funny text into posts randomly.");
  return $system[$field];
}
デフォルト値を持つ引数は、引数リストの最後にします。
値を返す関数の場合は、どんな条件でも必ず値を返すようにします。

配列


配列は、それぞれの要素間と代入演算子との間に1つのスペースを挿入します。
$some_array = array('hello', 'world', 'foo' => 'bar');
もし1行が80文字以上になる場合(フォームやメニュー定義の場合は、よくそうなります)は、おのおのの要素を1行に分割して、1レベルインデントします。
$form['title'] = array(
  '#type' => 'textfield',
  '#title' => t('Title'),
  '#size' => 60,
  '#maxlength' => 128,
  '#description' => t('The title of your node.'),
);

最後の配列要素の後ろにあるカンマはタイプミスではありません!
そうする事によって、もし別の配列要素を最後に追加する事になった場合でも、エラーが発生する事を防ぐ事が出来ます。

コメント


クラスの内容を記載するインラインドキュメントは、Doxygenの規約にのっとって記載します。
Doxygenについてのより詳しい情報は、以下をご参照ください。
Drupalは次のドキュメントブロック構文を使用します。
/**
 * Comments.
 */

またDoxygenコマンドは、/ ではなく @ をプレフィックスとして使用します。
ドキュメント生成の為でないコメントも強く推奨されます。
一般的な経験則として、コードブロックを見たときに「再度作成したくないなぁ」と思う場合は、忘れる前にそれらがどのような働きをするかを記述するべきでしょう。
Cスタイルのコメント(/* */)とC++標準のコメント(//)のどちらも使用できます。
Perl/shellスタイルのコメント(#)は使用できません。

インクルードコード


無条件にクラスファイルをインクルードする場合は、require_once()を使用します。また条件付でクラスファイルをインクルードする場合(例えばfactoryメソッドのように)は、include_once()を使用します。
どちらの場合でもファイルは、一度だけインクルードされる事が保証されます。
それらは同じファイルリストを共有する為、require_once()によってインクルードされたファイルが、include_once()で再度インクルードされる事を心配する必要はありません。

注意: include_once()とrequire_once()は関数ではなく、ステートメントなので、挿入されるファイル名についての説明を記載する必要はありません。



PHPコードタグ


PHPのコード範囲を定める場合は、省略形の<? ?>ではなく、常に<?php ?> を使用します。
これは、Drupalの規約というだけでなく、異なったオペレーションシステムや環境にPHPコードを移植し易くする為の方法でもあります。
すべてのコードファイル(モジュールやインクルードファイルなど)において、最後の?>は、省略するという事に気をつけて下さい。
クロージングデリミタは"?>"はオプションであり、それを取り除く事によってシステム上のどこかで問題を引き起こしかねないファイル最終行の空白を予防出来ます。
これについてのより詳細な情報は、PHP Code tagsをご参照下さい。

ヘッダコメントブロック


Drupalのコアとして配布されるすべてのソースコードは、以下の
コメントブロックをヘッダとして含める必要があります。
<?php
// $Id$

このタグは、CVSによって以下のような有用な情報に変換されます。
<?php
// $Id: CODING_STANDARDS.html,v 1.7 2005/11/06 02:03:52 webchick Exp $


CVSの使用方法


おのおののファイルにCVSキーワードの"Id"を含めます。
ファイル編集時にもしIdが含まれていなかった場合は記述を追加し、"Last Modified:"などのような表記になっていた場合は、それを置換します。

この章の以下の文章は、あなたがCVSタグとブランチについての基本的な知識をもっていると仮定して記述しています。

CVSタグは、あなたのパッケージファイルのどのリビジョンが特定のリリースに所属しているかをラベル付けする為に使用されます。
以下は、必要なCVSタグの一覧です。

DRUPAL-X-Y

(必須)リリースをタグ付けするのに使用する。
もしこのタグを使用しない場合は、CVSサーバーからリリース時の状態のパッケージを取得する方法がなくなります。



サンプルURL


すべてのサンプルURLとして、RFC 2606に準拠した "example.com"を使用します

ネーミングルール


関数とメソッド
関数名とメソッド名は、アンダーバーで接続された小文字の単語にします。さらに、関数名はモジュール間での名称の重複をさける為に、モジュール名をプレフィックスとして使用します。
プライベートクラスメンバー(宣言されたクラスの中からしか使用されないクラスメンバー;PHP4は正しい制約をもったプライベートネームスペースをサポートしません)は、1つのアンダーバーで始まる名称にします。以下、例を示します。
_node_get()
$this->_status

定数
定数はすべて大文字にし、アンダーバーで単語を接続する名称にします。
また定数が含まれるモジュール名の大文字をプレフィックスとして使用します。

グローバル変数
グローバル変数を定義する必要がある場合は、1つのアンダーバーにモジュール/テーマ名を続け、さらにアンダーバーを続ける名称にします。
注意
規約上は上記のようになっていますが、実際には、下記の例のように"モジュール/テーマ名"にアンダーバーを続ける名称で定義されている場合が多いようです。
recaptchaモジュールの例
$recaptcha_api_server

ファイル名
すべてのドキュメントファイルは、Windowsで参照し易いように ".txt"拡張子を付けます。またファイル名はすべて大文字(readme.txt ではなく、README.txt)、拡張子はすべて小文字(TXT ではなく txt)にします。
例: README.txt, INSTALL.txt, TODO.txt, CHANGELOG.txt など



改行コード


以下は翻訳内容ではなく、訳者の追記事項です。

改行コードについての規約は記載されていませんが、Drupalコアの内容を参照すると以下のようになっていますので、それに倣った方が無難だと思います。

モジュール関連ファイル(.module, .inc, .info, .install)
Unixフォーマット改行コード(\n)

テーマ関連ファイル(.tpl.php, template.php, .css)
Windowsフォーマット改行コード(\r\n)

ドキュメントファイル(.txt)
Windowsフォーマット改行コード(\r\n)

Perl Tips:「Drupal」のまとめ

リンク先サイトが消失しています。
ttp://perltips.twinkle.cc/drupal/

拡張モジュール情報 5.X

自分の頭を整理するために今どのくらいのモジュールがあるのか調べてみました(5.X )。
すでに650を超えています(^^;;

(下記のサイトに移しました)
http://www.google.com/notebook/public/03347809845507770298/BDQ6YIgoQu5uC1qQi
また、
http://www.google.com/notebook/user/03347809845507770298
のほうで、自分なりにモジュールをカテゴライズして、一言紹介を書いてます(書いていないのもあります(^^;;)

コラボレートしてくださる方募集です。よし、俺も私も、という酔狂な方はご協力お願いします。
Google notebook をダウンロードして、
ryo_drupal at users.sourceforge.jp
宛にメールして下さい。私のメールアドレスを知っている人はそちら宛でも構いません。

ところで
External linksというモジュールを導入して設定すると、
外部リンクが別ウィンドウで開くようになるので便利かも。