<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://organizeseries.com/"
	>

<channel>
	<title>高橋 登史朗 &#8211; HTML5Experts.jp</title>
	<atom:link href="/toshirot/feed/" rel="self" type="application/rss+xml" />
	<link>https://html5experts.jp</link>
	<description>日本に、もっとエキスパートを。</description>
	<lastBuildDate>Sat, 07 Jul 2018 03:14:05 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.19</generator>
	<item>
		<title>NUCで手のひらサイズの格安WebSocketサーバーを立ててみた(アプリ起動編)</title>
		<link>/toshirot/4786/</link>
		<pubDate>Thu, 30 Jan 2014 23:50:59 +0000</pubDate>
		<dc:creator><![CDATA[高橋 登史朗]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[NUC]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[WebSocket]]></category>
		<category><![CDATA[Webアプリ]]></category>

		<guid isPermaLink="false">/?p=4786</guid>
		<description><![CDATA[連載： NUCでWebSocketサーバを立ててみた (3)前回まででNUCのハードを組み立てて、OSやJavaScript実行環境Node.jsなど、基本的なソフトのインストールを準備しました。 今回はいよいよWebS...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/nuc-try/" class="series-157" title="NUCでWebSocketサーバを立ててみた" data-wpel-link="internal">NUCでWebSocketサーバを立ててみた</a> (3)</div><p><a href="https://html5experts.jp/toshirot/4595/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">前回</a>まででNUCのハードを組み立てて、OSやJavaScript実行環境Node.jsなど、基本的な<a href="https://html5experts.jp/toshirot/4718/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ソフトのインストールを準備</a>しました。</p>

<p>今回はいよいよWebSocketサーバーを立ち上げ、アプリを動かします。</p>

<p>WebSocketサーバーといっても、今回はWebSocketサーバーそのものを作るわけではありません。サーバーにはNode.jsのnpmパッケージからwsというWebSocket用モジュールを利用します。</p>

<p>このモジュールはあの有名なSocket.IOで、WebSocketのコアの部分にも使われている高速なWebSocketサーバーを持っています。アイディア次第で、たとえば、チャットサーバーにでも、ゲームデータサーバーにでも、あるいは、ニュース配信サーバーにでも何にでも使えます。</p>

<p>「WebSocket」自体は双方向通信のプロトコルとAPIというだけですので、その使い方次第で用途は無数に考えられるわけです。</p>

<h2>今回作るもの</h2>

<p>今回は、NUCを使って、とりあえずWebSocketサーバーを立ち上げてみようという短期連載ですので、その雰囲気がわかる程度の簡単なものでやってみます。</p>

<p>恐縮ですが拙著「Node.jsプログラミングガイド」のサンプルの中から、WebSocketを使ったリアルタイムチャートを作ってみます。ここでのWebSocketサーバーは、チャートへデータを連続的にプッシュし続ける機能を担います。</p>

<p>まず最初に前回もチラ見した、仕上がりをもう一度見てみましょう。</p>

<p>下の赤い「Play」ボタンをクリックすると動きます。</p>

<p>(invalid jsdo.it code)</p>

<p>上記チャートは<a href="http://ccchart.com/test/ws2.htm" title="ccchart" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ccchart</a>ですが、チャートが変化し続けるためのデータがサーバー側からリアルタイムにプッシュされ続けています。Ajaxなどのように、ブラウザ側からユーザーがリクエストする必要はありません。</p>

<p>このケースでは、すべての接続しているブラウザのチャートへデータが自動的にプッシュされ続けます。</p>

<p>この仕組みを使えば、たとえば、社内の毎時変化するデータなどを関係者全員がリアルタイムに閲覧するといったシステムを作ることも簡単です。</p>

<p>ちなみに参考までですが、ccchartのメリットはCanvasベースなので高速でSVGよりもプラットフォーム依存が少ないことと、インターネットにつながっている必要もないのでイントラネットでも使えることなどでしょうか。</p>

<p>(※今回は解説できませんが、もし、このサンプルが動かない環境なら、ポートを80や443などにする必要があるかもしれません。ただし、Linuxでは80などのwell-known ポートは、今回のようなユーザー権限ではなくroot権限で起動する必要があり、セキュアにすることも考慮すると別途少し手間がかかります)</p>

<p>では、これをNUC内に置いてみます。</p>

<h2>ソースを取得する</h2>

<p>まず、今回使うソースを手に入れます。「Node.jsプログラミングガイド」の<a href="http://jsgt.org/np/code/doc/01.htm" title="Node.jsプログラミングガイド　サンプル" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">サンプルページ</a>
1-Basic Knowledge 基礎知識 から
02-wsserver2にある2つのファイル
<code>
chart.htm
wsserver.js
</code>
をコピーします。クライアント側のHTMLとJavaScript、つまりchart.htmのコードは、下記にもありますが jsdo.itのサンプルからもご確認いただけます。</p>

<h2>アプリ用のディレクトリを用意する</h2>

<p>ファイルを作る場所はお好みですが、今回は、ユーザー名を仮にhogeとして、ホームディレクトリ(/home/hoge) 配下へ前回作っておいた公開用ディレクトリ /home/hoge/public_html を利用して、Apacheで公開してみます。</p>

<p>作成するディレクトリツリーは、次のようになります。</p>

<p><code>
/home/hoge
   ├──public_html/
   │    └─mychart<br />
   │         └─chart.htm 
   └──wsserver.js
</code></p>

<p>まず、ホームディレクトリのpublic_html下にchart.htmを置くためのディレクトリmychartを作ります。
</p><pre class="crayon-plain-tag">cd /home/hoge/public_html
mkdir mychart
cd mychart</pre><p>
mychartディレクトリができたら、そこへ chart.htm をFTPでアップロードしておきましょう。wsserver.jsは、/home/hoge直下へ置きます。</p>

<p>次に、そのひとつ上の非公開ディレクトリ /home/hoge/ 内に node_modules というディレクトリを作ります。
</p><pre class="crayon-plain-tag">cd /home/hoge
mkdir node_modules</pre><p>
これは、Nodeのモジュールが格納される場所で、ディレクトリ/home/hoge配下でインストールするローカルなモジュールは、(インストールコマンドnpmの引数-gを指定しなければ) ここに入ります。</p>

<p>また、wsserver.jsはサーバー側ですので一般的には、公開ディレクトリpublic_htmlではなく非公開な場所(今回は/home/hoge直下)へアップロードします。</p>

<h2>WebSocket用モジュールをインストール</h2>

<p>では次にNodeのWebSocket用モジュールwsを入れてみます。これには高速なWebSocketサーバーとクライアントが同梱されています。</p>

<p>では入れてみましょう。
</p><pre class="crayon-plain-tag">npm i ws</pre><p>
これだけです。(npm install wsと同じ意味です)
では、node_modules下に本当に入ったのかlsコマンドで見てみましょう。
</p><pre class="crayon-plain-tag">ls -l /home/tato/node_modules</pre><p>
すると、下記のように表示されるのでwsが入っていることがわかります。
<code>
total 4
drwxrwxr-x 11 hoge hoge 4096  1月 15 18:36 ws
</code>
作成されたディレクトリツリーは、次のようになっているはずです。</p>

<p><code>
/home/hoge
   ├──public_html/
   │    └─mychart<br />
   │         └─chart.htm 
   ├──wsserver.js
   └──node_modules/ ←追加された
        └─ ws/
</code></p>

<p>これで、設置完了です。簡単でしょう？
でも、ここでhttp://192.168.1.180/~hoge/chart.htmをブラウザで開いても動きません。</p>

<p>サーバーが起動していないからです。</p>

<p>では、動かしましょう。</p>

<h2>WebSocketサーバーを起動する</h2>

<p>以下のおまじないを打ち込みます。ホームディレクトリ/home/hoge/下のwsserver.jsをNodeで動かすという意味です。
</p><pre class="crayon-plain-tag">node ~/wsserver.js</pre><p>
node /home/hoge/wsserver.jsでも同じ意味になります。</p>

<p>もし、ここでエラーが出なければ、同一ネットワーク内の他のパソコンのブラウザで http://192.168.1.180/~hoge/chart.htm を開いてみてください。</p>

<p>動いてますね。さらに、別のパソコンで開いても見ることができます。</p>

<h2>永続化</h2>

<p>「node ~/wsserver.js」でサーバーを起動しましたが、このままでは、sshの接続を切るとサーバーが止まってしまいます。</p>

<p>そこで、永続化やNUCの再起動時も自動で立ち上がるための仕掛けが必要です。</p>

<p>永続化には、foreverというモジュールがよく使われます。再起動時の自動起動は、/etc/init.dへの登録などの方法がありますが、残念ながら紙面の都合で書ききれませんので、不明な方はこれらのキーワードで調べてみてください。</p>

<p>この連載のアクセスが多ければ続きを書けるかもしれません(笑)。
でも、それを待つよりも、もしわからなければ、自分で調べると身につきますよ。</p>

<h2>サーバー側のコード</h2>

<p>参考までにサーバー側ソースは次のようなものです。</p>

<p>手短に言うと、指定したポートへクライアントから接続があると、0.3秒ごとに生成しているデータをすべてのクライアントへプッシュしています。詳しくはソースとコメントをご覧ください。</p>

<p></p><pre class="crayon-plain-tag">//WebSocket Serverモジュールを読み込む
var WsServer = require('ws').Server;
//port: 3001でリッスンするサーバーを作成する
var ws = new WsServer({ port: 3001 });
//タイマーID
var tid;

broadCast();//データ配信開始

function broadCast(){
  //0.3秒ごとにデータを送信する
  tid = setInterval (function(){
    //データを作る
    var dataAry = mkData();
    //すべてのクライアントへ送信する
    ws.clients.forEach(function(client) { 
      client.send(JSON.stringify(dataAry));
    });
  }, 300);
}

// 送信用ランダムデータを作成する(実際には必要なデータを与える)
function mkData(){
  //送信データ形式の雛形
  var data = [
      ["時間"],
      ["s2"],
      ["s3"]
    ];

  //時間の文字列を作成する
  var now = new Date();
  var H = now.getHours();
  var M = now.getMinutes();
  var S = now.getSeconds();
  H = (H &lt; 10)?&#039;0&#039;+H:H;
  M = (M &lt; 10)?&#039;0&#039;+M:M;
  S = (S &lt; 10)?&#039;0&#039;+S:S;
  
  //送信データを作成する
  data[0]=H +&#039;:&#039; + M +&#039;:&#039; + S;
  data[1]=Math.floor(Math.random(10) * 96 );
  data[2]=32 + Math.floor(Math.random(10) * 18);
  return data;
}</pre><p></p>

<h2>クライアント側のコード</h2>

<p>ccchart自体の使い方は今回は紙面の都合で触れませんが、ポイントは、ccchartのwsメソッドの引数でサーバー側のIPアドレスとポートを指定している部分です。そこから流れてきたデータを自動的にconfigで指定した形式にチャート化します。</p>

<p></p><pre class="crayon-plain-tag">&lt;script src="http://ccchart.com/js/ccchart.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;canvas id="hoge"&gt;&lt;/canvas&gt;
&lt;script&gt;

var chartdata = {
 //チャートの設定
 "config": {
    "title": "WebSocket TEST",
    "subTitle": "列データをリアルタイム受信描画 受信パターンはoneColAtATime",
    "type": "bezi2",//チャートタイプベジェ曲線 他にline, barなど
    "width" : 465,//幅
    "lineWidth": 2,//線の太さ
    "minY": 0,//最小Y値
    "xScaleSkip": 5,//垂直目盛のスキップ
    "colorSet": //カラーセット
          ["#DDA0DD","#3CB000"]
  },
  //データの雛形
  "data": [
    ["時間"],
    ["s2"],
    ["s3"]
  ]
};

ccchart
  .init('hoge', chartdata) //要素hogeへチャートデータchartdataを出力する
  .ws('ws://192.168.1.180:3001') //このURLをサーバー側のIPとポートに合わせる
  .on('message', ccchart.wscase.oneColAtATime);//このパターンで受信する
        // oneColAtATimeは、WebSocketの受信パターン関数
        // 一度に1列ずつ [["2013"],[435],[600]] といった配列で届く場合用
        // 参照: http://ccchart.org/test/someCols/test-2.htm
&lt;/script&gt;</pre><p></p>

<h2>最後に</h2>

<p>以上、駆け足で手のひらサイズのWebSocketサーバーを組み立ててみました。</p>

<p>ほんの10年ほど前までは、一般的には、手のひらサイズのサーバーなどほとんど考えることもありませんでしたが、今、それはすでに目の前にあります。</p>

<p>一方に社外クラウドサーバーを利用する大きな流れがありますが、同時に、目の前には、わずか数万円でモニタの裏にも貼れるような小さな内製サーバーを作れるという選択肢も生まれたわけです。</p>

<p>エクセルを使って仕事の効率を上げるように、ちょっとした業務には、どこにでも持っていける小さな内製サーバーを使って効率を上げるということも可能な時代になりつつあります。</p>

<p>多くの業務と製品がネットワーク経由のサービスと無縁ではなくなりつつある今、たとえば、機動性の高いサービスをより現場に近い場所で、NUCを使って次々と立ち上げるといった未来が、文字通り、今、私たちの手の上にあります。</p>

<p>NUC 自体の用途は限定されていません。さて、どんな未来を作りましょうか？</p>

<p>＜関連レポート＞<br>
<a href="https://html5experts.jp/toshirot/4595/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><strong>NUCで手のひらサイズの格安WebSocketサーバーを立ててみた(ハード組立編)を読む⇒</strong></a><br>
<strong><a href="https://html5experts.jp/toshirot/4718/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">NUCで手のひらサイズの格安WebSocketサーバーを立ててみた（OSインストール編）を読む⇒</a></strong><br></p>
]]></content:encoded>
		
		<series:name><![CDATA[NUCでWebSocketサーバを立ててみた]]></series:name>
	</item>
		<item>
		<title>NUCで手のひらサイズの格安WebSocketサーバーを立ててみた(OSインストール編)</title>
		<link>/toshirot/4718/</link>
		<pubDate>Thu, 30 Jan 2014 01:00:23 +0000</pubDate>
		<dc:creator><![CDATA[高橋 登史朗]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NUC]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[WebSocket]]></category>

		<guid isPermaLink="false">/?p=4718</guid>
		<description><![CDATA[連載： NUCでWebSocketサーバを立ててみた (2)前回は、NUCのハードを組み立ててましたが、次は、ソフトのインストールです。慣れてる方には無用な講義ですが、一応ざっくりとした手順をメモしてみました。 もちろん...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/nuc-try/" class="series-157" title="NUCでWebSocketサーバを立ててみた" data-wpel-link="internal">NUCでWebSocketサーバを立ててみた</a> (2)</div><p><a href="https://html5experts.jp/toshirot/4595/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">前回</a>は、NUCのハードを組み立ててましたが、次は、ソフトのインストールです。慣れてる方には無用な講義ですが、一応ざっくりとした手順をメモしてみました。</p>

<p>もちろん、必ずしもこの手順通りである必要はありません。また、目安の時間を入れてありますが、あくまでも目安であって、休憩時間も含みません(笑)。</p>

<p>焦らずに、もしわからないところがあればネットなどで調べながらでも着実にやっていきましょう。</p>

<h3>【30分】OSダウンロード</h3>

<p>OSは最近人気のLinuxディストリビューションUbuntuサーバーでバージョン13.10を入れました。下記でダウンロードしてDVDに焼いて準備します。</p>

<p>Ubuntu入手先
<a href="http://www.ubuntu.com/download/server" title="Ubuntuサーバー ダウンロード先" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">http://www.ubuntu.com/download/server</a></p>

<h3>【12分】OSインストール</h3>

<p>DVDをUSBへ接続してNUCを起動すると、Ubuntuのインストールが始まります。</p>

<p>※インテルによるOSインストールの<a href="http://www.intel.com/jp/support/motherboards/desktop/sb/cs-033935.htm" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">説明ページ</a>もあります。</p>

<p>今回は、最初はssh以外は特に何もいれず、必要なものは後から必要な時に追加する方針でタイトなインストールをしました。Ubuntuサーバー自体の詳細なインストール方法はここでは省略しますが、miniSSDのせいか、HDDのPCで20～30分かかるこの作業が、なんと10分程で終わりました。</p>

<p>特別な設定がなければ、・ユーザー名とパスワード・ディスクへの書き込み許可・ソフトウェアの選択で「OpenSSH server」をスペースキーで選ぶ以外は、質問にほぼ改行するだけでもインストールできます。</p>

<p>ネットワーク設定はもしDHCPで割り当てのある環境なら最初はお任せでも構いませんし、もし、IPを決めてあるなら設定しておくとあとの手間が省けます。</p>

<p>ここでは、ユーザー名は仮にhogeとしました。
そして、OSインストール後の作業は次の通り。</p>

<h3>【1分】自分のIPアドレスを確認してみる</h3>

<p>OSインストール後、再起動してログインしたら、IPアドレスを確認してみましょう。
</p><pre class="crayon-plain-tag">ifconfig</pre><p>
と打ってみます。するとたとえば次のように表示されます。
<code>
hoge@ubuntu:~$ ifconfig<br />
em1       Link encap:Ethernet  HWaddr ec:a8:6b:fe:a3:eb<br />
          inet addr:192.168.1.180  Bcast:192.168.1.255  Mask:255.255.255.0
　　　：
</code>
この NUC の場合は「inet addr」のあとの 192.168.1.180 が IP アドレスです。自分でIPアドレスを指定する場合は、/etc/network/interfaces を修正します。もし、ルーターやバーチャルドメインなどを設定すれば、普通のサイトのようにサーバーを外部へ公開することも可能ですが、今回はそこは省略します。</p>

<h3>【1分】SSHクライアントからログイン</h3>

<p>Ubuntuインストール時に入力したアカウント(今回はhoge)で他のパソコンから上記IPアドレスへログインします。Macならターミナルを使い、たとえば、パスワード認証なら、次のように打てば対話形式で入れます。
</p><pre class="crayon-plain-tag">ssh hoge@192.168.1.180</pre><p>
Windows なら SSH クライアントがなければ<a href="http://sourceforge.jp/projects/sfnet_poderosa/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"> Poderosa </a>などをインストールし、それでログインします。</p>

<h3>【30秒】apt-get（パッケージ管理システム ）のアップデート</h3>

<p>apt-getは必要なパッケージのダウンロードからインストールを依存関係も含めて自動的に行ってくれる便利な管理システムです。次のコマンドでそのパッケージ・リストをまず更新しておきます。sudoでアカウントのパスワードを要求されるので入力するとアップデートが始まります。
</p><pre class="crayon-plain-tag">sudo apt-get update</pre><p></p>

<h3>【20秒】FTP（ファイル転送サーバー）のインストール</h3>

<p>HTMLやjsファイルをNUCへアップロードするために FTP サーバーも入れておきます。下記apt-getですぐに動作しますが、各種設定をする場合は別途ネットなどでご確認ください。
</p><pre class="crayon-plain-tag">sudo apt-get install proftpd</pre><p>
対話形式で設問に答えますが、起動方法でinetdかスタンドアロンかを聞かれます。ここでは inetd で設定しました。</p>

<h3>【20秒】Apache（Webサーバー）のインストール</h3>

<p>WebSocket単体で使う場合や、Nodeなどでhttpサーバーを立てるならまったく不要ですが、やはりApacheはあると便利なので入れておきます。今回は、HTMLはApache で表示し、WebSocketサーバーからのデータをそのHTML内の JavaScript で受け取るという形にしてみます。
</p><pre class="crayon-plain-tag">sudo apt-get install apache2-mpm-prefork</pre><p>
ちなみにここで他のパソコンから、http://192.168.1.180と打てば下記画像のように「It/ works!」と表示され、もうすでにWebサーバーが動作してることがわかります。このHTMLファイルはデフォルトで /var/www/index.html にありますので、もう、これを書き換えるだけで HTTPサーバーは使えますが、今回のアプリはユーザーディレクトリに作ります。</p>

<p><img src="/wp-content/uploads/2014/01/itworks1.png" alt="Apache Webサーバーの動作確認" width="450" height="350" /></p>

<h3>【30秒】ユーザー用公開ディレクトリを用意する</h3>

<p>今回はユーザー(hoge)のディレクトリ配下にアプリを作ってみます。次のようにして公開ディレクトリを用意します。</p>

<ol><li>1行目・ユーザーディレクトリを作成する</li><li>2行目・ユーザーディレクトリを有効にする</li><li>3行目・Apacheをリスタートする</li></ol>

<p></p><pre class="crayon-plain-tag">mkdir ~/public_html
sudo a2enmod userdir
sudo service apache2 restart</pre><p>
ここで http://192.168.1.180/~hoge/　と打って
下記画像のようなユーザーディレクトリが表示されればOKです。</p>

<p><img src="/wp-content/uploads/2014/01/userhoge.png" alt="ユーザーディレクトリの表示" width="450" height="350" /></p>

<h3>【2分】nvm（Nodeバージョン管理マネージャー）インストール</h3>

<p>nvmは、複数のNode.jsバージョンをインストールし、切り替えて使うことを可能にするマネージャーです。Nodeはバージョンのアップデートが早いのでモジュールの依存対応も含めて簡単に切り替えられるnvmなどのバージョン管理マネージャーを入れておくと便利です。
gitを使ってインストールし、ログイン時の自動起動もセットしておきます。nvmの詳細は別途ご確認ください。</p>

<ol><li>1行目・git-coreをインストールする</li><li>2行目・gitから/home/hoge/nvmへダウンロードする</li><li>3行目・nvmを起動する</li><li>4行目・nvmのヘルプを見てみる</li><li>5行目・ログイン時にnvmが自動起動するように/home/hoge/.bashrcへ起動スクリプトをセットする</li></ol>

<p></p><pre class="crayon-plain-tag">sudo apt-get install git-core
git clone git://github.com/creationix/nvm.git ~/nvm
. ~/nvm/nvm.sh
nvm help
echo ". ~/nvm/nvm.sh" &gt;&gt; ~/.bashrc</pre><p></p>

<p>途中で[yes, no]と聞かれたら、特に意図が無ければ普通は、yesと答えます。</p>

<h3>【2分】Node.js（JavaScript実行環境 ）インストール</h3>

<p>そして、Nodeの最新安定バージョン今回は(v0.10.23)をインストール</p>

<ol><li>1、2行目・ビルド用のパッケージ群などをあらかじめ入れておく</li><li>3行目・nvmでNodeのv0.10.23をインストールする</li><li>4行目・nvmのヘルプを見てみる</li><li>5行目・ログイン時にv0.10.23が使えるようにセットする</li></ol>

<p></p><pre class="crayon-plain-tag">sudo apt-get install build-essential
sudo apt-get install libssl-dev
nvm install v0.10.23
echo "nvm use v0.10.23" &gt;&gt; ~/.bashrc</pre><p></p>

<p>さて、ここまでで今回のWebSocketサーバー用の環境ははぼ完成です。
もうNode.jsは使えるようになっています。</p>

<p><a href="https://html5experts.jp/toshirot/4786/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">次回</a>はいよいよ、WebSocketサーバーを入れてアプリを立ち上げてみます。</p>

<p>＜関連レポート＞<br>
<strong><a href="https://html5experts.jp/toshirot/4595/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">NUCで手のひらサイズの格安WebSocketサーバーを立ててみた(ハード組立編)を読む⇒</a></strong><br>
<a href="https://html5experts.jp/toshirot/4786/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><strong>NUCで手のひらサイズの格安WebSocketサーバーを立ててみた(アプリ起動編)を読む⇒</strong></a></p>
]]></content:encoded>
		
		<series:name><![CDATA[NUCでWebSocketサーバを立ててみた]]></series:name>
	</item>
		<item>
		<title>NUCで手のひらサイズの格安WebSocketサーバーを立ててみた(ハード組立編)</title>
		<link>/toshirot/4595/</link>
		<pubDate>Wed, 29 Jan 2014 01:00:31 +0000</pubDate>
		<dc:creator><![CDATA[高橋 登史朗]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CPU]]></category>
		<category><![CDATA[NUC]]></category>
		<category><![CDATA[WebSocket]]></category>

		<guid isPermaLink="false">/?p=4595</guid>
		<description><![CDATA[連載： NUCでWebSocketサーバを立ててみた (1)2012年11月からインテルが出荷をはじめたNUC (Next Unit of Computing)という製品群が自作系PCながら意外にひそかな(?)注目を集め...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/nuc-try/" class="series-157" title="NUCでWebSocketサーバを立ててみた" data-wpel-link="internal">NUCでWebSocketサーバを立ててみた</a> (1)</div><p>2012年11月からインテルが出荷をはじめたNUC (Next Unit of Computing)という製品群が自作系PCながら意外にひそかな(?)注目を集めています。<a href="http://www.google.co.jp/trends/explore#q=Next%20Unit%20of%20Computing" title="Googleトレンド" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">※1</a></p>

<p>今回はこのNUCを使って、手のひらサイズの格安 WebSocket サーバーを立ち上げ、それで動くアプリを作ってみました。</p>

<h2>NUCって何？</h2>

<p>NUCは、本体にメモリやストレージなどを追加して自分で組み立てる、いわゆる自作パソコンの仲間ですが、その特徴は、10com四方の超小型でありながら、最新性能で格安ということです。</p>

<p>それは、こんな外観です。
<img src="/wp-content/uploads/2014/01/8__.jpg" alt="NUC DCCP847DYE" width="500" /></p>

<p>手のひらサイズで総額3～7万円程度で仕上がるにも関わらず、ストレージはminiSSD、CPUはCore i5も選べて無線 LAN・bluetooth タイプもあり、さらに全機種マルチモニター出力可能というフルスペック以上なマシンです。</p>

<p>性能も十分高いので、小さなパソコンとしてだけではなく、社内のいろいろなサーバー用途や、あるいは、複数ディスプレイをつなげるなどして、これから普及が見込まれるリアルタイムデジタルサイネージ（電子看板）などでも重宝しそうという優れもの。</p>

<p>多くの業務と製品がネットワーク経由のサービスと無縁ではなくなりつつある今、わずか数万円でどこにでも持ち歩ける手のひらサイズのサーバーを作り、たとえば、機動性の高いサービスをより現場に近い場所で、NUCを使って次々と立ち上げるというのも面白いかもしれません。</p>

<p>最近はスマートフォンなどの進撃に押されつつある巨人インテルですが、Next Unit of Computingという名称に込めたインテルの気合いが伝わってきます。</p>

<p>インテルは長友だけではないのです^^;。</p>

<h2>今回作るサンプルをチラ見</h2>

<p>さて、ここから、NUCの組み立てからOSやFTP、Apache、Nodeなどのインストールをこつこつやっていきますが、多少地味な作業なので、モチベーションを維持するべく、今回のお題の最終到達地点をチラ見しておきましょう。</p>

<p>WebSocketによるプッシュデータを受け取って表示するリアルタイムチャートです。
下の赤い「Play」ボタンをクリックすると動きます。(※もし、このサンプルが動かない環境ならポートを80や443などにする必要があるかもしれません)</p>

<p>(invalid jsdo.it code)</p>

<p>この仕組みを使えば、たとえば、社内の毎時変化する様々なデータの推移状況(たとえば、刻々と変わる販売チャートや様々なセンサー監視チャート、サーバーログチャート)などを関係者全員がリアルタイムにリロードなしで閲覧するといったシステムを作ることもできます。しかも、わずか数万円で。</p>

<p>では、材料から集め始めましょう。</p>

<h2>今回使った材料</h2>

<p>今回の素材は昨年2月に発売された格安版「NUC、DCCP847DYE」。</p>

<p>CPUはCeleronですが、miniSSDを付けて駆動すれば充分使えます。そして何より安い！今回は1万7千円弱程度で買えました。（※2014年1月現在。価格は変動します）</p>

<h2>レシピ</h2>

<p>このNUCを普通のデスクトップとしてではなく、今回はLinuxのUbuntuを入れ、Node.js+WebSocket サーバーとして、HTML5 Experts.jpらしく料理してみます。</p>

<ul>
    <li><strong>名前：</strong>手のひらサイズの格安 WebSocket サーバー</li>
    <li><strong>所要時間：</strong>2時間弱(うまくいけば小1時間)</li>
    <li><strong>難易度： </strong>Linuxを少し使える(または、使いたいという意思を持っている)方</li>
    <li><strong>素材 ハード：</strong>(総額約3万円程度 *価格は変動します)<ol>
　　　 <li>NUC DCCP847DYE　16,600円</li><li>ストレージ　 8,889円 PLEXTOR PX-64M5M SATA 6Gb/s対応の高速 mSATA SSD64GB </li><li>メモリ　5,615円  G.Skill F3-1600C9D-8GRSL (1.35 V対応) 4G</li><li>電源ケーブル　490円 BUFFALO 3P型ミッキープラグ BSACC0802BK 0.2m</li><li>(上記の他にキーボード、マウス、HDMI ケーブルとOSインストール用 USBタイプのDVDディスクドライブも用意しますが、サーバーなので Win や Mac から SSH でリモート接続して使うと稼働後はほぼ不要なので他のパソコン用のものを流用しました。)</li></ol></li>
    <li><strong>素材 ソフト：</strong>（0円）<ol>　　　 <li>OS　Ubuntu Server  13.10</li><li>JavaScript実行環境 Node.js v0.10.23</li><li>WebSocketサーバー ws</li><li>その他 パッケージ管理 npm, バージョン管理nvm, Webサーバー Apache</li></ol></li>
</ul>

<p>一応、作業時間もメモしておきますが、これらはあくまで目安ですのでご了承ください。</p>

<h3>【20分】組み立てます</h3>

<p>では組み立ててみます。
(時間を節約するためにできれば、下のOSダウンロードも平行して進めておきましょう)</p>

<h6>パッケージを開けると、おなじみインテルCMのあのジングルが鳴る♪</h6>

<p><img src="/wp-content/uploads/2014/01/3__.jpg" alt="パッケージをあけるとおなじみインテルCMのあのジングルが鳴る♪" width="300" height="200" /></p>

<h6>mSATA SSDはこんなに小さい(別売)</h6>

<p><img src="/wp-content/uploads/2014/01/10.jpg" alt="SATA SSDはこんなに小さい(別売)" width="300" height="200" /></p>

<h6>裏ぶたを外して、メモリとmSATA SSDを取り付け。説明図見ながら付ける。</h6>

<p><img src="/wp-content/uploads/2014/01/5__.jpg" alt="裏ぶたを外して、メモリとmSATA SSDを取り付け" width="300" height="200" /></p>

<h6>ふたを閉める。もう完成！</h6>

<p><img src="/wp-content/uploads/2014/01/6__.jpg" alt="ふたを閉める。もう完成！" width="300" height="200" /></p>

<h6>モニタの裏に取り付けるVESA規格のパーツもついてる</h6>

<p><img src="/wp-content/uploads/2014/01/IMG_4316.jpg" alt="モニタの裏に取り付けるパーツもついてる" width="300" height="200" /></p>

<p>あっという間に完成です。</p>

<p><a href="https://html5experts.jp/toshirot/4718/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">次回</a>は、このNUCにソフトをインストールします。</p>

<p>予習：OSはUbuntuサーバーを使いますが、次回のためにあらかじめ下記のOSをダウンロードして、DVDに焼いておきましょう。Ubuntu入手先(Ubuntuサーバー　バージョン 13.10)
<a href="http://www.ubuntu.com/download/server" title="Ubuntuサーバー ダウンロード先" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">http://www.ubuntu.com/download/server</a>　*もし、DVDの焼き方がわからなくても自力で調べてやってみましょう。</p>

<p>＜関連レポート＞<br>
<strong><a href="https://html5experts.jp/toshirot/4718/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">NUCで手のひらサイズの格安WebSocketサーバーを立ててみた（OSインストール編）を読む⇒</a></strong><br>
<a href="https://html5experts.jp/toshirot/4786/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><strong>NUCで手のひらサイズの格安WebSocketサーバーを立ててみた(アプリ起動編)を読む⇒</strong></a></p>
]]></content:encoded>
		
		<series:name><![CDATA[NUCでWebSocketサーバを立ててみた]]></series:name>
	</item>
	</channel>
</rss>
