goo blog サービス終了のお知らせ 

Smile Engineering blog ( スマイルエンジニアリング・ブログ )

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

オムロン株式会社様の家族目線(HVC-C2W)を触ってみました

2016-01-15 13:06:25 | 最新技術動向展開
ある日、ネットサーフィンをしていたところ、
「家族目線(HVC-C2W)SDKモニター募集!」というものを見つけました。

画像解析やセンシングに興味がありましたので、申し込んでみることにしました。

抽選なので「当たらな・・・い・・・」なんて考えていたら、なんと当選!

家族目線(HVC-C2W)が弊社に届きました。

この子です!



アップ、どーん!



なんだか可愛らしいフォルムですね。
ちょっと、スリスリして・・・
ぬくもりがあります。


さて、
今回のモニターですが、SDKのモニターです。
スリスリしているだけではダメなのです。

SDK付属のサンプルアプリのソースコードをみながら、提供されているAPIを使ってみることに。

人体検出、顔検出、顔認証。
年齢推定や表情推定といった面白い機能もあります。

年齢推定、気になりますよね~



30代、うん、よしよし。
48歳!?

ゴホゴホゴホ。

いろいろな用途で使えそうですね。

これを使って入退出管理とか。

モニター期間は1/15(金)まで。


monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業

天体望遠鏡

2015-12-08 09:30:00 | 最新技術動向展開
今年の冬は暖冬と予想されており、
これまでは比較的あたたかい日が続いていましたが、
徐々に朝晩の気温も下がり冬っぽくなってきました。

気温が下がると色々と思う事がありますが、
空気が澄んで星が良く見える事に気付きます。

そこで、今回は天体望遠鏡の仕組みについて、
紹介していきたいと思います。

まず、光学天体望遠鏡についてですが、
大きく分類すると2種類(屈折式、反射式)あります。

・屈折式
  簡単に言うと普通の望遠鏡と同じで、
  長い筒の両端にレンズが取り付けてあります。
  対物レンズで光を集め、接眼レンズで拡大する仕組みです。
  丈夫で設定も簡単なので、入門向けとして適していますが、
  大きいものを望むと、高価になってしまうのが欠点です。

・反射式
  対物レンズを持たず、筒の奥側に反射鏡を持ちます。
  この反射鏡で光を集めますので、中央が少し凹んだ形の鏡になっています。
  イメージとしては、交差点のミラーと反対の形ですね。
  集めた光を接眼レンズで拡大させる仕組みです。
  筒の側面に接眼レンズが付いている望遠鏡もありますが、
  反射させた光を筒内で、更に90度反射させています。
  屈折式と比較して、調整する部品が多いので手間も掛かりますが、
  大きめのものでも、比較的に安価で軽量にできる利点があります。

  有名なところでは、ハッブル宇宙望遠鏡も反射式です。
  人工衛星のように地球の大気外で活動していますので、
  大気による光の屈折を受けずに細かな所まで鮮明に観測できるそうです。

パラボラアンテナで観測したものが画像として表現する仕組みを
完全に理解したわけではありませんが、電波望遠鏡についても紹介します。

 天体からは可視周波数の波だけでなく、様々な波長の波が降ってきますが、
 電波望遠鏡の観測対象は、一般的にはセンチ波(3GHz~30GHz)とミリ波(30GHz~300GHz)です。

 実は、光学望遠鏡の観測対象である光も電波であり、周波数がより高い(405~790THz)というだけで、
 どちらも電磁波という事に変わりはありません。

 そして、電波は周波数が低い(波長が長い)方が遠くまで届きますので、
 電波望遠鏡の方が遠くまで観測できるという事になります。
 電波望遠鏡の存在意義がそんなところにあると思いました。
 (他にも可視光のように物理的な障害物に遮断されないなどのメリットがあります)

光学、電波どちらも新しい技術は進歩を続けていますが、
それぞれの技術の方向性に少し触れたいと思います。

 電波望遠鏡の方は、アンテナで受信した信号をどう処理するかという方向で進んでいるようです。
 有名なところでは、アルマ望遠鏡でしょうか。
 日本を含めた数か国共同の施設で、チリの高知(山頂施設は標高5000m)に設置されています。
 広範囲に設置した複数のアンテナから信号を拾い、電波の受信タイミングの差を
 スーパーコンピューターで計算して画像化したり・・・
 2012年から本格的に運用されており、公式サイトで画像が閲覧可能となっていますので、
 興味のある方は検索してみると良いと思います。

 一方、光学望遠鏡の新しいものといえば、2017年の運用開始を目指して
 巨大な反射式望遠鏡を国内で製作中です。
 反射鏡を計18枚のパネルから構成して、直径3.8mの一枚の反射鏡の役割をさせようというものです。
 各パネルはナノメートルレベルの誤差で製作され、反射鏡として稼働させる際も
 50ナノメートル単位でパネル角度を制御する事を目標としているようです。

いろいろ調べたりするうちに、天体望遠鏡が欲しくなりました(笑)
最後に、技術者の端くれとして一度はこういうプロジェクトに係わってみたいものです。

monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業

HTML5のお勉強 第4回 ~WebStorage~

2015-11-27 20:21:59 | 最新技術動向展開
ブラウザによるデータの保存について、旧来の仕組みにはCookieというものがありました。
しかしCookieは容量が4KBと少なく、
通信のたびに必ずサーバへ送られるためにセキュリティ上の課題もありました。
HTML5が普及し始めた現在では、「WebStorage」や「Indexed Database」
「FileSystem API」などがCookieを代替する技術として登場しました。

今回はその内の「WebStorage」についてご紹介します。


■WebStorageとは
WebStorageとは、ブラウザにデータを保存する仕組みになります。
JavaScriptからKey-Value方式でデータを保存することができます。

WebStorageには、「sessionStorage」と「localStorage」の2種類があります。

◆sessionStorage
ブラウザのタブやウィンドウ単位で保存される一時的なデータです。
開いていたタブやウィンドウを閉じると、データはすぐに削除されます。
また、複数のタブで同じURLのページを開いていても、ページ間のデータは共有されません。

◆localStorage
こちらはオリジン(※)単位でデータを永続的に保存します。
開いていたタブやウィンドウを閉じてもデータは削除されません。
同じオリジンであれば、複数のタブでデータを共有することができます。
※オリジン ... 「http://domain.com:80」のような、プロトコル、ドメイン、ポート番号の組み合わせ


■保存できるデータ形式と保存容量
保存できるデータはテキストや数値のみになります。
それ以外のデータを渡すと強制的に文字列に変換されます。
例えば、オブジェクトを渡すと "[object Object]" に変換されてしまいます。
必要に応じて JSON.stringify() などで変換すると良いですね。

保存容量はブラウザによって異なりますが
現在は「1オリジンにつき5MBまで」という仕様がW3Cから推奨されています。


■使い方
sessionStorage、localStorageともに使用方法は同じです。
localStorageを題材に使用方法をご紹介します。
見てもらえればわかりますが、とても簡単に使うことができます。


◆データの保存
localStorage.setItem("key", "value");

◆データの取得
localStorage.getItem("key");

// 存在しないキーを指定するとnullが返ります。
localStorage.getItem("unknown-key");

◆データの削除
localStorage.removeItem("key");

◆データの全削除
localStorage.clear();

◆データ数の取得
localStorage.length

◆キーの取得(「n番目のキー」という形で取得する)
localStorage.key(0);

// length以上の整数を指定するとnullが返ります。
localStorage.key(localStorage.length);


setItem, getItem, removeItemなどの関数があらかじめ用意されています。
それらを呼ぶだけで、簡単にデータの記録、取得、削除が行えます。

また、下記のような書き方でも操作できるようです。
しかし、誤動作を防ぐためにも使用しないほうが良さそうです。

localStorage.foo = "bar";
console.log(localStorage.foo);
delete localStorage.foo;


WebStorageを使うことで、簡易的なキャッシュを用意したり、
入力履歴を保存しておいたり、サイトへのアクセス回数をカウントしてみたり...
などなど、いろいろな用途に活用できそうですね。
使い方も簡単なので、Webエンジニアの皆様、ぜひ使ってみてください。

monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業

「Vaadin」というフレームワーク

2015-10-30 13:27:38 | 最新技術動向展開
JavaのコードのみでAjaxを利用したWEBアプリケーションを開発することができる「Vaadin」というフレームワークを使ってみました。
今回は、このフレームワークのレポートです。

「Vaadin」、"ヴァーディン"と読みます。
当初フィンランドのIT Mill社が開発していたWEBアプリケーション開発用のフレームワークです。
現在、IT Mill社はVaadin社に社名が変わっています。

https://vaadin.com/home

同フレームワークのライセンスは、Apache License 2.0です。いわゆるオープンソースです。
2001年ぐらいから開発を開始しており、2007年にオープンソースとして公開されました。
Vaadinは、Google Web Toolkit(GWT)を拡張する形で実装されています。
GWTは、JavaのAWT/Swingのコーディング感覚でUIのJavaプログラムを記述すると、
これをJavaScriptに変換することができるものです。
つまるところ、Vaadinは、
JavaのコードのみでAjaxを利用したWEBアプリケーションを開発することができるフレームワークということです。
「Javaでのプログラミングは得意だけど、Ajaxを利用したリッチなものをJavaScriptで開発するのは苦手」
こんな方には嬉しいフレームワーク、それがVaadinということです。
※「Vaadin Elements」というものもありますが、今回は「Vaadin Framework」についてです。

概要を理解したところで、早速Vaadinに触れてみたいと思います。

Vaadin、どのように使うのでしょうか?
Vaadinですが、Javaの代表的なIDEであるEclipseおよびNetBeansでの開発をサポートしています。
例えば、EclipseにVaadinのプラグインをインストールすると、EclipseでVaadin Frameworkを用いたWEBアプリケーションの開発ができるということです。
イメージとしては、Eclipseで「新規 -> プロジェクト -> Vaadinプロジェクト」という感じで簡単にWEBアプリケーションのプロジェクトが出来るということです。

EclipseでのJava開発に慣れている人は「Vaadinを使った開発、簡単そう」と思ったことでしょう。
Javaでなくても、何らかのIDEで開発を行っている方も、簡単そうなイメージは感じとって頂けたかと思います。

ちょっとコードを書いてみました。
主要なコードだけ記しています。

--------------
@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);

TextField userName = new TextField("Username");
PasswordField passWord = new PasswordField("Password");
layout.addComponent(userName);
layout.addComponent(passWord);

Button button = new Button("Login");
button.addClickListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
Notification.show("LOG IN!!", Type.HUMANIZED_MESSAGE);
}
});
layout.addComponent(button);
}
--------------

「TextField」と「PasswordField」のインスタンスを生成して、
layout.addComponent(userName) を呼び出していますね。
何かに貼りつけていますね。

こんなコードで出来た画面がこちら。



HTMLのソースはこんなです。

--------------
<head>


<style type="text/css">html, body {height:100%;margin:0;}</style>
<link rel="shortcut icon" type="image/vnd.microsoft.icon" href="./VAADIN/themes/hello_vaadin/favicon.ico">
<link rel="icon" type="image/vnd.microsoft.icon" href="./VAADIN/themes/hello_vaadin/favicon.ico">
</head>
<body scroll="auto" class=" v-generated-body">


<noscript>
You have to enable javascript in your browser to use an application built with Vaadin.
</noscript>

<script type="text/javascript" src="./VAADIN/vaadinBootstrap.js?v=7.5.8"></script>
<script type="text/javascript">//click here or press ESC to continue.",
"url": null
},
"authErrMsg": {
"caption": "Authentication problem",
"message": "Take note of any unsaved data, and click here or press ESC to continue.",
"url": null
},
"sessExpMsg": {
"caption": "Session Expired",
"message": "Take note of any unsaved data, and click here or press ESC key to continue.",
"url": null
},
"vaadinDir": "./VAADIN/",
"debug": true,
"standalone": true,
"heartbeatInterval": 300,
"serviceUrl": "."
※一部省略
--------------

不思議です。「Username」や「Password」はどこにいったのでしょうか。
次回、Vaadinの内部を探ってみたいと思います。

monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業

CPUの歴史

2015-10-09 09:00:00 | 最新技術動向展開
今回はCPUについてです。
最新のものに目を向けがちですが、
歴史を踏まえて紹介していきたいと思います。

1970年以前
 コンピュータのようなものは存在していましたが、演算装置には
 現在のCPUのような1つのIC(集積回路)ではなく、
 真空管やトランジスタ、複数のICを組み合わせて構成されていました。
 そして、1970年に世界初のワンチップのマイクロプロセッサが登場しました。
 F14戦闘機の飛行制御用に開発され、動作周波数は50Hz程度だったそうです。

1970年代
 性能的にCPUと呼べる程度のものが、この頃から世の中に出回り始めました。
 前半は電卓程度のプロセッサでしたが、後半に入ると8ビットのCPUが主流となり、
 やっとパソコンと認識できるようなものが世に出回りました。
 この年代に開発された8ビットCPUから派生したCPUが、初代ファミコンで採用されています。
 動作周波数は5MHz程度まで上がってきました。

1980年代
 16~32ビットCPUが主流となり、業務用ワークステーションという分野が一気に広がりましたが、
 パソコンの分野では16ビットCPUがまだまだ主流でした。
 Pentiumが登場するのは次の年代ですが、動作周波数は100MHzまで上がりました。
 なお、この時代に開発された32ビットCPUが、初代プレイステーションで採用されています。

1990年代
 初の64ビットCPUが登場し、サーバー用の高性能CPUとして採用されました。
 一方、パソコンの分野では16ビットから32ビットへの転換期でした。
 Windows95が発売された時は、ニュースでも大きく取り上げられましたが、
 OS自体は16ビットでしたので、32ビットOSであるWindowsNTを使用する人もいました。
 この頃から自作パソコンが復旧し始め、速度を求める流れが始まった気がします。
 動作周波数は1GHzを超えてきました。
 プレイステーション2では128ビットCPUが専用開発されたりもしました。
 
2000年代
 中盤までは速度重視の流れを引き継ぎましたが、動作周波数が4GHz程度まで上がると、
 それ以降は技術的な問題で、速度を上げられない領域に入りました。
 CPU内ではプロセッサとレジスタ(プロセッサ内部のメモリ)で
 データの出し入れをしながら演算しますが、すべて電気信号に乗せて行われます。
 電気が伝わる速度は変えられないため、プロセッサとレジスタの距離を近付けて製造することにより
 動作周波数を引き上げてきましたが、それも限界に来たようです。
 では、限界が来たからそのままかと言うと、そうではありません。
 次はマルチコア化と低電力化が進みました。

2010年代
 マルチコア化と低電力化は今も継続されていますが、単にプロセッサ数を増やすだけでなく
 パソコン用途では画像処理用のプロセッサを同居させたり、スマホ・タブレット用途では
 通信制御を行うプロセッサを同居させたり、今までのCPUとは違った付加価値を持たせるようになりました。

最近知って驚いたのですが、あのスパコン(京)の動作周波数が2GHzだという事です。
単に動作周波数だけで性能が決定されるのではなく、ディスク装置とかデータ転送方式とか
全体としての性能を決定付ける部分が重要になってきているのでしょう。

CPUの今後の性能向上はそれほど見込めない模様ですが、
その反面、CPU以外の部分にアイデアが注ぎ込まれるようになったと思います。
なにかいいアイデアを出して、一山当てたいですね(笑)

monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業