Tips本記事では、Meteorのファイル構成について説明します。Meteorのファイル構成は複雑ではありませんが色々決まりがあるため理解する必要があります。CSSでそれぞれ1ファイルで合計3ファイルだけを使います。練習としてはこれで十分ですが、分割すると便利なことがあります。公式マニュアルに詳しい説明がありますので、合わせて参照してください。原則としてプロジェクトディレクトリに置かれたファイルはmeteorが認識して自動で読み込まれます。ファイルは拡張子やディレクトリ名で分類されます。複数のファイルに分割されている場合でも同じ種類のファイルはMeteorが自動で結合します。特殊ディレクトリ次に特殊ディレクトリについて説明します。clientclientという名前のディレクトリはクライアント側のファイル専用になり、サーバ側では読み込まれなくなります。{}のブロック内に記述するのと同じになります。JavaScriptファイルとCSSファイルは結合されます。production環境ではさらにminifyされます。HTMLファイルの結合方式は少し特殊で、すべてのHTMLファイルから<head>と<body>が抜き出されて結合されたものが初回のページロードで送られます。serverserverという名前のディレクトリはサーバ側のファイル専用になり、クライアント側では読み込まれなくなります。{}のブロック内に記述するのと同じようになりますが、server内のファイルはクライアント側には一切送られないことが異なります。認証機能などクライアント側から見られたくないファイルはここに置きます。private以外のディレクトリのJavaScriptファイルは一つにまとめられてサーバ(Node.js)に読み込まれます。publicpublicという名前のトップディレクトリはそのままの形でクライアント側に渡されます。ファイルの結合は行なわれません。画像ファイルなどはここに置きます。/>のように参照すると、public/bg.pngのファイルを指します。privateprivateという名前のトップディレクトリはサーバ側のJavaScriptコードやAssetsからのみアクセスできます。ここには外部から読み込まれたくないデータファイルなどを置きます。client/compatibilityclientの中のcompatibilityディレクトリには必要に応じて旧来のJavaScriptライブラリファイルを入れます。これらのJavaScriptファイルは通常の読み込みとは異なり、新しい変数スコープに閉じられません。var宣言された変数をグローバルスコープに出したい場合に使います。これらのファイルは外のclientのJavaScriptファイルより先に読み込まれます。teststestsという名前のディレクトリはテスト用のコードを置くディレクトリです。ここのファイルはどこからも読み込まれません。特殊ディレクトリ以外に置かれたファイル上記の特殊ディレクトリ以外に置かれたJavaScriptファイルはサーバ側でもクライアント側でも読み込まれます。Meteor.isClientによって、実行を制御することができます。HTMLファイルはクライアント側のみで読み込まれます。ファイルの読み込み順序まず原則としてはファイルの読み込み順に依存せずコードを構成することがよいでしょう。これにはMeteor.startup()を利用したり、パッケージ化を行って依存性を明確にする方法があります。しても読み込み順を制御したい場合には、下記のルールを参考にしましょう。HTMLファイルは何よりも先に読み込まれますmain.で始まるファイルは最後に読み込まれますlibディレクトリのファイルが次に読み込まれます深い階層にあるファイルが次に読み込まれます上のルールで同じ順になったファイルはフルパスのアルファベット順に読み込まれますこのルールに従うと例えば正しい読み込み順に並べられたファイルは下記のようになります。123456789nav.htmlmain.htmlclient/lib/methods.jsclient/lib/styles.jslib/feature/styles.jslib/collections.jsclient/feature-y.jsfeature-x.jsclient/main.jsまとめMeteorではファイルは比較的自由に分割して配置することができます。自動で読み込んで結合してくれるので手軽です。特殊ディレクトリについても少し覚えれば分かりやすいものでしょう。ファイルの読み込み順についてはルールがあるものの複雑な構成にすると分かりにくくなる可能性があります。できればおすすめされているように読み込み順に依存しないように構成できるとよいのではないでしょうか。パッケージ化は、コードの分離や再利用性を考えるとよい選択肢であると思われます。ファイルの分割は単なる整理上の話だけではなく、ホットコードプッシュにも影響するようです。クライアント側のJavaScriptファイルのみを編集した場合は、クライアント側のみが更新され、サーバ側には影響がないため、共通JavaScriptファイルでMeteor.isClientで分けるより高速な場合があるようです。PocketMeteorで初めてのユーザアカウント本記事は公式チュートリアル9の内容に沿って説明するものです。本記事は公式チュートリアル8の内容に沿って説明するものです。