忍者ブログ
2017.06 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

プロフィール

HN:
kamera25
職業:
電気工事
趣味:
ゲーム制作

一言

仕事で失敗し、丸坊主になった人のイラストです。 (プロフィール画像変わりました。)

フリーエリア



カテゴリー

最新CM

[10/03 ora exacta]
[09/22 F19]
[03/24 F19]
[01/29 森下 拓]
[11/14 F19]

WebTouchMeeting #78 に参加してきましたよ。

広島市で隔月で開催されているIT勉強会、WebTouchMeetingに参加してきました。WTMは先週も開催されました、まとめていますので良ければご覧ください。

今回は特別ゲストが東京から来られました、IIJというインターネット系の老舗会社の岩永さんという方です。岩永さんはArduinoのIoT入門などの記事を手掛けられている著名な方です。広島の大学に通われていた縁で、今回このようなイベントを開催するに至ったようです。

それでは感想など書いていきます。

Node.jsとは
Node.jsというのは、Javascriptのサーバサイドの処理系です。といっても分からないですよね。

Javascriptというのをご存知な人が多いと思います、よくWebサイトを作る時に利用しますよね。普通のJavascriptはそんな感じに使います。

ただ最近ではJavascriptを色々な方向性で利用しようという動きが高まっています。Node.jsは普通のJavascriptでは出来ない、ファイルの読み書きやHTMLの通信処理などを簡単にすることができます。

Node.jsの特徴に非同期I/O(Async Input Output)があります。I/Oと言うのは、ファイルの読み書きの事です。

フツーのプログラミングだと、CPU君がファイルの読み込みを命令すると、ファイルの読み込みが終わるまで何もせずに待ちます。ただその待ち時間が目茶苦茶長いのです。なぜかと言うとHDDが遅いからです。その間CPU君は暇なので、電力を無駄に食います。(これが同期I/O)

そして非同期I/Oというのは、ファイルの読み込みを命令すると、すぐに次の命令をCPU君が読み始めます。時間かかるならその間、別の事をCPU君にやらせてしまった方が効率が良いということですね。

少し専門的な話になりますが、Node.jsはLibuvというのを基にしています。これによって同じソースコードでも、WindowsやLinuxで非同期I/Oを使えるようにしています。LibuvがそれぞれのOSにあった非同期命令処理を投げてくれるという事です。

またNode.jsはイベントドリブンです。最初にCPU君に「○○のデータが来たら、⋄⋄の処理をしといてねー」と事前お話しておきます。これは非同期I/Oと相性が良いのです。対して同期I/Oでは「○○のデータが来たら教えてね。次の処理を教えるから。」と言う感じです(これは、フロードリブン)。

ちなみにNode.jsではイベントループが重要な要素になるそうです。Node.jsはCPU君にやるべき処理をお話した後、CPU君はI/Oが来ているか何度も何度もチェックします。この繰り返しをイベントループと呼びます。

なおCPU君がI/Oを命令して、待つことをリッスン(Listen・聞く)と言います。Node.jsはプログラムを最後まで実行しても、リッスンしてるI/Oが無くなるまで起動し続けます。

ところで岩永さんはNode.jsを緊急地震速報の開発時に使い、システムの低コスト高パフォーマンスを実現したそうです。

Node.jsハンズオン ~リアルタイムウェブアプリを爆速で開発しよう~

Node.jsをインストールしてプログラミングをしてみました。やはり非同期I/Oは慣れませんね…大抵フロードリブンで書きまくるので、難ありです。

Node.jsのインストールには、nvmを利用しました。Node Version Managerというもので、好きなバージョンのNode.jsを入れたりする事が出来ます。

Linuxだとパッケージマネージャでインストールする事も出来ますが、バージョンが勝手に上がって動かなくなったりする事もあるので、基本nvmを利用すべきだそうです。

また色々新機能を追加するのに、npmを利用すると良いそうです。npmはNode Package Managerというもので、XMLパーサとかフレームワークとかを入手できます。これを使えば、車輪の再開発をしなくても良くなります。

さらにnpmを利用するコツとして、ダウンロード数が多いものがお勧めだそうです。少ない物だと途中で更新が無くなったりするそうで。

最初のハンズオンではHTMLサーバを立てました、Apache以外のHTMLサーバは新鮮ですね。最終的にNode.jsを使ったTodoアプリのコードをビルドしました。

Todoアプリにはangular-fullstackを利用されていました。これはWebアプリケーションのためのフレームワーク(CakePHPやRuby on Railsと同じ)で、これを使うと目茶苦茶早くアプリが作れるそうです。

ただ難易度としては少し難しかった気がします。最後のTodoアプリはもう少し簡易的なモノで良かった気がしますね。



WebTouchMeetingは来月も開催される予定です。

まだ詳細なスケジュールは決まっていませんが、是非お時間があれば参加してみてください。
PR
Leave a Reply
name
title
color
mail
URL
comment
password   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
管理人のみ観覧可