SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所

Node.jsのWebフレームワーク「Sails」を使ってpub/subアプリを作ってみる

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所 第11回


プロジェクトの作成

 チャットアプリのためのプロジェクトを作成します。作成はsailsコマンドのnewオプションを利用します。

$ sails new simpleChat --linker

 実行すると以下のようなメッセージが表示され、プロジェクトが生成されます。

debug: Building new Sails.js app in ./simpleChat...
info: Using asset linker...

info: New app created!

 newオプションは作成したいアプリ名を渡して実行します。ここではさらにnewオプションのオプションとしてlinkerを指定しています。linkerオプションはSailsで用意されているアセットのマネージメント機能を利用する場合に必要なディレクトリ構成を準備してくれます。アセットについては、後ほどまた説明することにします。

 出来上がったプロジェクトのひな形は、以下のような構成になります。

simpleCath
 |___Gruntfile.js
 |___README.md
 |___api/ ・・・・アプリ作成時に軸となる各実装の配置ディレクトリ
 |  |___adapters/ ・・・・DB接続やTwitterのような外部サービスへのアダプターを配置
 |  |___controllers/
 |  |___models/
 |  |___policies/ ・・・・configディレクトリ以下のACLの設定から参照される処理の実装を配置
 |  |___services/ ・・・・アプリ内で共通で利用するような処理の実装を配置
 |
 |___app.js
 |
 |___assets/ ・・・・画像ファイルなどの静的ファイルの配置ディレクトリ
 |  |___favicon.ico
 |  |___images/
 |  |___linker/ ・・・・viewにリンクをインジェクションするための各ファイルの配置ディレクトリでlinkerオプションにより作成される
 |  |  |___js/
 |  |  |___styels/
 |  |  |___templates/
 |  |___robots.txt
 |
 |___config ・・・・アプリ全体の動作に関わる設定を行う各ファイルを配置するディレクトリ
 |  |___400.js
 |  |___403.js
 |  |___404.js
 |  |___500.js
 |  |___adapters.js
 |  |___bootstrap.js
 |  |___controllers.js
 |  |
 |     ・
 |     ・
 |     ・
 |___node_modules/ ・・・・アプリで利用するmoduleの配置ディレクトリで、デフォルトでは以下の4つが組み込まれている
 |  |___ejs/
 |  |___grunt/
 |  |___optimist/
 |  |___sails-disk/
 |  
 |___package.json
 |
 |___views/ ・・・・viewファイルの配置場所
    |___403.js
    |___404.js
    |___500.js
    |___home/
    |  |___index.ejs
    |
    |___layout.ejs

 アプリ実装中に主に扱うことになるのは、apiディレクトリ以下の各要素とviews以下のビューファイルです。すでにMVCフレームワークを利用したアプリ開発を経験されている方にはおなじみのスタイルでしょう。servicesやpoliciesといった辺りは若干見慣れないかもしれません。servicesはアプリ内で共通して利用する処理などを実装したファイルを配置します。policiesは各コントローラーやそのアクションへのアクセス制御に関する処理を実装したファイルを配置します。

 views以下のディレクトリは、デフォルトの設定では、ディレクトリ名とコントローラー名とを対応させて作成することで自動的にパスが設定されます。各コントローラーのアクションから呼び出すビューは、それぞれのディレクトリに配置することになります。ビューのテンプレートエンジンはデフォルトではejsを利用しますが、jadeを選択することも可能です。また、すべてを試してはいませんが、expressで利用可能なテンプレートエンジンであればhamlなど他のエンジンも使うことができるはずです。

 assetsとconfig以下については、必要に応じてファイルの追加や設定の変更を行うことになります。assetsには先程プロジェクト作成時に指定したlinkerオプションによってlinkerディレクトリとlinkerディレクトリ以下のディレクトリ構成が追加で生成されています。

 この何も実装を追加していない状態で、いったんsailsコマンドを使ってアプリを起動してみましょう。起動はliftオプションで行います。プロジェクトのディレクトリに移動し、以下を実行します。

$ sails lift
sails lift時のコンソール
sails lift時のコンソール

 sails liftを実行すると、上記イメージに示したコンソール画面のようにアプリが起動します。起動後にブラウザからアクセスして、正しくプロジェクトが作成され、アプリが起動できているか確かめてみましょう。デフォルトのポートは1337です。この状態でブラウザからlocalhost:1337にアクセスして、以下のイメージのようになれば正常に起動しています。

デフォルトの起動時画面
デフォルトの起動時画面

 起動が確認できたら、機能を作りこんでいきます。

次のページ
チャットルームの作成

この記事は参考になりましたか?

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所連載記事一覧

もっと読む

この記事の著者

佐伯 純(TIS株式会社)(サエキ ジュン)

TIS株式会社 AIサービス事業部AIサービス企画開発部所属入社後、アジャイルで商品先物取引のシステム開発という当時としてはかなり尖ったチームに放り込まれ、以来SIerとは思えない辺境を歩き続けている。現在の部門に異動してからはRubyOnRailsを利用した社内向けサービスの開発に参加後、Andr...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7696 2014/04/02 13:24

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー