Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。3Browserifyで自作モジュールの依存解決を行うモジュール自体を関数として記述する場合モジュールに複数の処理を含める場合まとめ参考資料Browserifyで自作モジュールの依存解決を行うNode.jsのモジュールと同じように、自作モジュールをrequireメソッドで参照したJavaScriptもBrowserifyでビルドして実行できます。以下では、自作モジュールの記述と参照の方法を紹介します。モジュール自体を関数として記述する場合モジュール内に処理を1個だけ含める(モジュール自体を関数にする)場合はリスト6のように、module.exportsに処理内容を含む関数定義を代入します。処理内容を記述};具体例として、引数で指定されたDateオブジェクトの内容によりあいさつ文を出し分けるあいさつモジュールの例をリスト7に示します。}};リスト7のモジュールを呼び出す記述はリスト8となります。HH24時MI分SS秒");(1)ではrequireメソッドの引数に相対パスでモジュールを記述したJavaScriptファイル名(「.js」は除く)を指定します。取得されるモジュールのオブジェクトは関数そのものなので、(2)のようにして実行します。(3)は画面出力処理です。(4)は、Webページに現在日時をフォーマット表示するためのコードです。これには、Node.jsのdate-utilsモジュールを利用しています。date-utilsを利用するためにはリスト9のコマンドであらかじめインストールしておきます。date-utils以上のサンプルをBrowserifyでビルドして実行すると、図3のように、時間により異なるあいさつ文が画面に表示されます。greetモジュールであいさつ文を表示(hello_browserify_2)モジュールに複数の処理を含める場合1つの処理に対して1つのモジュールを実装するのは煩雑なので、現実的には1つのモジュールに複数の処理を含める場合が多いでしょう。この場合の記述はリスト10のようにmodule.exportsに複数の関数を含むJavaScriptオブジェクトを代入します。}};JavaScriptオブジェクトとしてまとめて代入する代わりに、関数を個別に代入することもできます。リスト11はリスト10と等価です。具体例として、リスト7のあいさつモジュールを内部的に利用して、複数パターンのあいさつ処理を提供する拡張あいさつモジュールの実装例をリスト12に示します。}};(1)のdoGreetメソッドは単純なあいさつ文を取得するメソッドで、requireメソッドでリスト7のgreetモジュールを参照してあいさつ文を出力しています。(2)のdoGreetToPersonメソッドは相手の名前を指定してあいさつ文を取得するメソッドです。引数personNameの内容と、(1)のdoGreetメソッドで取得したあいさつ文を、リスト4で説明したutilモジュールのformatメソッドでフォーマットして出力します。このようにgreetObjモジュールは、内部の処理でgreetモジュールとutilモジュールを利用します。リスト12のモジュールを呼び出す記述は、リスト13です。(1)でgreetObjモジュールのオブジェクトを取得し、(2)で引数に名前を引数にしてdoGreetToPersonメソッドを実行してあいさつ文を取得しています。result;(1)でgreetObjモジュールだけをrequireメソッドで参照している点に注目してください。greetObjモジュールがさらに内部で参照するgreetモジュールやutilモジュールへの依存関係はBrowserifyが自動的に処理してくれます。リスト12、13をBrowserifyでビルドして実行すると、図4のように、名前を指定してあいさつ文が表示されます。greetObjモジュールであいさつ文を表示(hello_browserify_3)まとめ本記事では、Node.jsでモジュールを参照できるrequireメソッドをWebブラウザでも動作させることができるツールBrowserifyの概要と利用例を紹介しました。Node.jsモジュールの多くを利用できるほか、自作JavaScriptファイルもモジュール型式で記述して、煩雑なJavaScriptの依存性管理をBrowserifyに任せることができます。今回は主にコマンドラインを用いた利用法を紹介しましたが、次回はBrowserifyが提供するAPIや、変更を監視しての自動実行、他ツールとの組み合わせなど、より多岐な利用法を紹介していきます。NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Technologies。執筆コミュニティ「WINGSプロジェクト」代表。