Raspberry PiとNode.jsで作る独立稼働モバイルサーバ
Raspberry Piを購入したきっかけ
筆者がRaspberry Piを購入したのは、3,500円程度でLinuxが動くという理由からでした。よく使用するArduino Uno※1が3,000円くらいでマイコンレベルなのに比べると、性能的にはるかに安かったのです。しかし、買った時点では特に何に使おうかは考えていませんでした。とりあえず起動して、安いのにXウィンドウ動いてスゴイな、という印象でした。ところがふとしたことから、次に取り上げるNode.jsが動くらしいという情報を得て、本格的にいじり始めました。
まずはNode.jsをRaspberry Piにインストールして、チャットアプリを作成するところまでを説明していこうと思います。後半ではRaspberry PiでNode.jsを使ったプロトタイピングの例を紹介します。
- ※1 Arduino Uno: プロトタイピングデバイスとも呼ばれる。初心者でも使える小型マイコンボード
Node.jsとは
Node.jsはサーバーサイドJavaScriptとも呼ばれ、サーバ側もクライアント側もJavaScriptで記述できるのが大きな特徴です。またNode.jsは大体の場合、WebSocketの実装であるSocket.IOモジュールと組み合わせて使われ、リアルタイムWebを実現するためのサーバとして利用されるパターンが多いようです。Node.jsのインストールからSocket.IOを使ったチャットアプリの作成までの過程を、順を追って説明していきます。
準備
まずはRaspberry Piに公式のカーネル一式がインストールされて起動していて、リモートログインしている、という前提から始めます。早速Node.jsをインストールするのですが、Node.jsは開発のスピードが速くバージョンがすぐに上がってしまいます。そのため、Node.jsのバージョンを管理するためのマネージャをまずインストールし、実際に使用するバージョンのNode.jsをインストールするようにします。今回はnodebrewというバージョンマネージャを使用します。
pi@raspberry ~ $ sudo apt-get update pi@raspberry ~ $ sudo apt-get install vim # エディタとしてvimをインストールしておく(他でもよい) pi@raspberry ~ $ curl -L git.io/nodebrew | perl - setup
.bashrcにパス(export PATH=$HOME/.nodebrew/current/bin:$PATH)を追加して読み込み直します。
pi@raspberry ~ $ vim .bashrc # エディタで"export PATH=$HOME/.nodebrew/current/bin:$PATH" を追加 pi@raspberry ~ $ source .bashrc
Node.jsのインストール
Node.jsの最新バージョンはv0.11.15(8/12現在)ですが、今回はv0.10.12を使用します。Raspberry Piは、以前はソースを落としてきてセルフビルドに2時間近く掛かっていたのですが、現在は下記のようにバイナリをインストールできるようになっています。
pi@raspberry ~ $ nodebrew install-binary v0.10.12
このバージョンを使えるように下記コマンドを使用します。
pi@raspberry ~ $ nodebrew use v0.10.12 v0.10.12 current: v0.10.12
複数のバージョンをインストールしたい場合は、同じように他のバージョンもインストールできます。使用するバージョンを切り替える場合は、上記コマンドで使用するバージョンを指定して切り替えられます。インストールされているNode.jsのバージョンを調べるには、下記コマンドを使用します。
pi@raspberry ~ $ nodebrew list
これでNode.jsのインストールは完了です。
expressのインストール
次にNode.jsでよく使われるWebフレームワークのexpressをインストールします。ここでnpmというコマンドを使いますが、これはnodebrewのインストール時に同時にインストールされています。npm : Node Package Manager で、Node.jsに関するインストールその他を管理するモジュールです。通常npmコマンドを使用してインストールすると、カレントディレクトリに展開されます。今回のexpressはカレントディレクトリではなく、-gオプションを付けてグローバルインストールしておきます。
pi@raspberry ~ $ npm install -g express
expressを使ったサンプルアプリを動かす
では、expressを使ってNode.jsサーバを作って動かしてみましょう。expressを使う時にテンプレートエンジンとして-eオプションでEJSを指定します。
pi@raspberry ~ $ mkdir work # workディレクトリ作成 pi@raspberry ~ $ cd work pi@raspberry ~/work $ express -e sample create : sample create : sample/package.json create : sample/app.js create : sample/public create : sample/public/javascripts create : sample/public/images create : sample/public/stylesheets create : sample/public/stylesheets/style.css create : sample/routes create : sample/routes/index.js create : sample/routes/user.js create : sample/views create : sample/views/index.ejs install dependencies: $ cd sample && npm install run the app: $ node app
出力された指示通りにします
pi@raspberry ~/work $ cd samaple && npm install
さて、あとは実行するだけです。ifconfigで予めRaspberry PIのIPアドレスを調べておいてください。
pi@raspberry ~/work/sample $ node app.js Express server listening on port 3000
PCなどのブラウザから"Raspberry PIのIP"である3000ポートにアクセスして、下記の画面が表示されればOKです。これでNode.jsを使ったWebサーバが動作しました。
図1: Express起動画面
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- expressで開発したWebアプリをeXcaleで動かす
- Socket.IOを使ってNode.jsでリアルタイムWebアプリを開発する
- リアルタイム通信で活用!注目の技術「Node.js」とは【初心者向け】
- 簡単なリアルタイムチャットアプリを作成する
- 2017年に見ておきたい12のJavaScriptライブラリ
- クロスドキュメントメッセージングやWebSocketを使ってみる
- Arduino vs. Raspberry Pi:あなたにぴったりのDIYプラットフォームはどっち?
- 123d CircuitsとArduino実機で電子工作(1)
- ミニ四駆の遠隔操作を実現しよう!- Arduino Pro Mini組み立て編
- Arduinoを用意して簡単なプログラミングをはじめよう