Gaiaコードベースにあなたの変更を加え始める前に、全体がどう構成されているか、コードの慣習が適用されているかについての基礎を理解しておくべきです。この記事では両方の点について説明します。
Gaia ブランチ
Gaia コードベースには色々なブランチがあり、それは何の作業をしているかによります (またはどの端末を持っているか) masterブランチをダウンロードや、ハック、makeしたいのではないかもしれません。ここに最も普通で、たぶん興味を持たれるリポジトリの簡単なガイドがあります:
- master — 最新の開発ブランチです。新機能の開発 (やバグ修正) や、電話機・エミュレータで最新の Gaia を実行する場合、このブランチを使います。
- v2.1, v2.0, v1.4, など。 — Gaia 2.1, 2.0, 1.4, などの機能凍結バージョンです。特定の Gaia バージョンのバグ修正や、アプリを開発して特定の Gaia バージョンで動作確認をする場合、 (例えば、Firefox OS ビルディングブロックを変更して動かし、他のGaiaバージョンでも自分のレイアウト動作するか確かめたい場合。)このブランチを使います。
- v1.3t — Gaiaの低メモリ版で、Tarako や Spice Fire Oneといった低メモリ端末で実行するために開発されました。このような端末向けのアプリを開発したい場合、このブランチで作業すべきです。
Gaiaコードベースの構造
以下の章では、Gaiaコードベースの最も重要な部分を概説します。
apps/
このディレクトリには主なGaiaアプリがあります。ホームスクリーンに表示されるアプリ(カレンダーやカメラのようなもの)と下にあるアプリ(システム、ホームスクリーン、キーボードといったもの)との両方のアプリがあります。このアプリの動作は少しずつ異なる方法で、ただ多くの共通機能があります、それは:
index.html
: 各アプリの中心のファイルmanifest.webapp
: アプリを定義するマニフェストファイルlocales
: そのアプリ用の翻訳文字列test
: アプリに固有のユニットテストと統合テストjs
,style
: そのアプリ用のスクリプトやスタイルresources
: 画像、音やその他資産
記: 実際に動くアプリの詳細情報は Gaia apps guide で見つかります。
build/
ビルドスクリプトを含むディレクトリ
dev_apps/
このディレクトリはカスタマイズにより同梱されるアプリを含みます。例えば、カスタムビルド時に同梱したいカスタムアプリをここに入れます。
記: Gaiaのカスタムの詳細情報については Market customizations guide を読みます。
keyboard/
keyboardディレクトリには異なる言語用のキーボード辞書やレイアウトがあります。
locales/
このディレクトリには languages_all.json
というJSONファイルがあり、Gaiaでどの言語をサポートするかを定義します。アプリをどうローカライズするかの詳細な洞察については Getting started with app localization を読みます。
shared/
このディレクトリには、複数のアプリが利用している多くのリソースがあります; 主要ないくつかは:
gaia/shared/js
: 共通機能を行う、JavaScript ライブラリl10n.js
: 端末のロケールを判定するローカリゼーションライブラリで、ローカライズ可能な文字列をアプリのlocalesフォルダにある文字列に置換します。ローカライズ可能な文字列は、data-l10n-id
属性エレメントが同梱されます。gaia/shared/locales
: 異なるロケール向けのローカライズされたリソース。gaia/shared/resources
: アイコン、着信音、アラームサウンドトラックといった共通の資産gaia/shared/style
: スタイルシートや、ボタン・プログレスバー・ツールバーなどの共通アイテム用のその他のスタイルリソース。これらの詳細情報は Firefox OS Building Blocksを見て下さい。gaia/shared/style_unstable
: 不安定または実験的なスタイルリソースgaia/shared/test
: ユニットテストや統合テストを定義するJavaScript
tools/
toolsディレクトリにはビルドスクリプトやテスト向けのツールがあります。
Gaiaコーディングスタイル
GaiaはGoogle JavaScriptコーディングスタイルに従っています。
背景の情報:
- コーディングスタイル: General practices
- コーディングスタイル: JavaScript practices
- コーディングスタイル: Naming and formatting code
特有のルール
- HTML ファイルが
<!DOCTYPE html>
(すなわち、HTML5文書)と宣言されているか確認して下さい。未定義なら、Internet Explorer 9 以降では互換モードで読み込まれます。 JavaScriptファイルの先頭に"use strict"
;
宣言を(このように、クォート含め)入れて、strict(厳密な)モードにして下さい。- 常にタブでなく、2文字の半角スペースでインデントして下さい。
- コードの論理的な部分に分けるのに、改行を使用して下さい!
- 複数の単語のファイル名は"アンダースコア"文字で単語を分けます、
like_this.js
のように。 - 文字列用には、ダブルクォーテーションの代わりにシングルクォーテーションを使います。
- 展開した条件構造を使います:
悪い例 if (expression) doSomething(); 正しい例 if (expression) { doSomething(); }
- Systemアプリで作業している場合、ガイダンス一覧を確認して下さい。
コミットごとのコーディングスタイルチェック
Gaia は jshint を使って、各コミット前(pre-commit フック経由)に JSのコーディングスタイルを自動的にチェックしています。いったんGaia リポジトリにプルリクエストを送信すると、Travis(GithubのCI)サーバがこの linter で全スタイルが正しいかをダブルチェックします。 make
コマンドが実行されると、gaia/tools/pre-commit にあるpre-commit フックスクリプトがプロジェクトの .git/hooks
フォルダにコピーされます。
記: かつては gjslint をコーティングスタイルチェックに使用していましたが、jshint の方がより厳密で良い結果が出るため、その使用を廃止しました。Firefox OS 1.4 以降ではJSHintを使用しており、gjslint はJSHintに移行されていない、古いファイル用にのみ推奨します。
Gaia経由で手動lintチェックを実行する
パッチを投げる前に、JSHintを手動で実行して、スタイルエラーをチェックする事を推奨します。
Gaia内のjshintに関するより詳しい情報については、gaia/build/jshint ディレクトリの中を見て下さい。 Gaia はビルドスクリプトを提供しています。実行するには:
$ make lint
として gjslint と jshint 両方のスタイルチェックができます。あるいは
$ make hint
と実行して単なる jshint スタイルチェックができます。
$ make eslint
と実行して単なる eslint スタイルチェックができます。
記: Gaiaを使わず、自分専用の jshint をインストールしたい場合、下記を使用できます:
npm install jshint -g jshint myfile.js