Vidyo STCビデオ会議クラウドサービス / VidyoWeb API / WebRTC

弊社では、Vidyo社の会議システムを扱っています。
Vidyoは、会社の規模や、管理システム、利用のシーンに合わせたビデオ会議のスタイルをご利用できます。

https://www.facebook.com/stc.vidyo/
https://www.vidyo.starserv.ne.jp/

Vidyo社のVidyo H264 SVC コア技術は、Googleのハングアウトにも使われています。
VidyoとインターフェースをとるのにAPIでクライアント用ライブラリーやWEB APIインターフェースが提供されており、自社専用のVidyoツールを作成することができます。

クライントネイティブだとAndroid,iOS,Mac OS X,Linux,WindowsそれぞれにAPIライブラリが用意されていますが、
一番やり易いのは、VidyoWeb API(1.0.3)となります。
(ただし、今のところ対応OSはWindows、MacOS Xのみとなります。)
また、次世代のWebRTC 3.0.0 (15) であれば、
Android,Mac OS X,Linux,Windows(Chrome / Firefox)が利用できます。(iPhone[iOS] がまだない><)

今回は、VidyoWeb API(1.0.3)で接続できるか試してみます。
APIを利用するには、vidyoポータルにAPIライセンスが無いとできません。
弊社のVidyoポータルサーバにはまだAPIライセンスを投入していませんので、
Vidyo社よりSandbox用のサイトを用意して頂いたのでそこでテストして見ました。

●事前準備
・VidyoClientAPI_Plugin_VidyoWeb DLLが必要です。
・SOAPサーバが必要(サンプルコードはSOAPを利用しています。)自力で書けば
 必要ないですが、Vidyo社のテスト用のSOAPサーバを利用
・サンプルコード VidyoClientAPI_Sample_VidyoWeb_1_0_3_00060.zip
 注)これらはVidyo社のユーザアカウントがないと利用できません。

結果はご覧のとおり利用できました。次回はWebRTCで動かしてみてカスタマイズしてみたいと思います。

■ログイン後の画面
v2
■接続
下段 私(Windows 7 / Chrome 、上段 他の人(test1 Android4.3 Vidyo Mobile)にグストリンクを送って接続
v3
資料共有もできます。

Vidyo STCビデオ会議クラウドサービスに興味を持たれた方は、
こちへ、
http://www.seiwatec.co.jp/

Team Developer開発手順

総合開発ツールのTeamDeveloperは、
大人数でのシステム開発に力を発揮致します。

とあるプロジェクトでシステムの開発を行う場合、
各プログラマーはどのようにして、
「プログラムソースのファイルを管理するのか?
-手順をご紹介。(※手段は色々ですが一般的手法を紹介)

TeamDeveloperの開発ツールで作成したファイルは基本的に
下記の3つで保存する形になります。
①アプリケーションファイル
②アプリケーションライブラリファイル
③テキストファイル

01

①のアプリケーションファイルはシステムの共通画面を作成したソースが保存されています。
(例:ログイン、メニュー画面)

②のアプリケーションライブラリファイルでは、
各プログラマーが担当するフェーズ(発注処理など)を作成したソースが保存されます。
システムのフェーズ毎に
②のアプリケーションライブラリはファイルが保持されるイメージです。

③のテキストファイルでの保存はあまり行うことがありませんが、、、
他ツールでのソースの改変やバージョンの差異を確認する場合に
テキストファイルに落とすことがよくあります。

①のアプリケーションファイル内で
②の各アプリケーションライブラリファイルをインクルードすることにより、
システムが統合されたひとつのアプリケーションファイルが作成されます。
その後コンパイル⇒完了 といった流れです。
共通フレーム等も②のファイルで管理することにより、
担当のプログラマーは
他担当者のソースファイルを改変することなく安全にバージョンアップを行えます。

バージョン管理はSVN等を使用しましょうね。
次は実際にツールを使います。

Web APIをShellで使おう!(jqをCentOS6.5にインストール編)1

みなさん、こんにちは。
Arakawaです。最近CUIがシンプルで心地よく感じる時があり、できるならば
CUIで過ごせないかと時々画策しています。
small__5450429373
photo credit: blakespot via photopin cc

さて、CUIで過ごしていると、どうしてもいろんな情報をCUIで取得したくなります。
天気予報であったり、ニュースであったり、技術情報であったり・・。
そーいうのをLynxでみるのも悪くはないですが、もっとシンプルに
取得したい・・・。思いついたのがWeb APIでした。

Web APIは、XMLやJSONで提供されていることが多いと思います。そこでそれらを
簡単に処理できるアプリがないかなぁ~と思いいろいろググっていますと、
jqというアプリが便利だということがわかってきました。

jqを一度インストールしてみて、いろいろ画策(笑)していきたいと思います。

——————–
インストール実施した内容ログ

1.http://stedolan.github.io/jq/download/からバイナリを適当なところにダウンロードします。

#cd /tmp
#wget http://stedolan.github.io/jq/download/linux64/jq

2.実行権限を与えました。755にします。

#chmod 755 jq

3.では、動くかどうか、試してみたいと思います。Web APIでまずテストといえば
天気予報が簡単でよさそうな気がしています。Livedoorさんのサービスをお借りしたいと思います。
http://weather.livedoor.com/weather_hacks/webservice
から京都のデータをゲットしたいともいます。2014/11現在このアドレスでデータが取得できるようです。
http://weather.livedoor.com/forecast/webservice/json/v1?city=260010

では、実際に試してみます。

#wget -q -O - http://weather.livedoor.com/forecast/webservice/json/v1?city=260010 | ./jq '.'

こんな感じで表示されました。

{
  "pinpointLocations": [
    {
      "link": "http://weather.livedoor.com/area/forecast/2610000",
      "name": "京都市"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2620400",
      "name": "宇治市"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2620600",
      "name": "亀岡市"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2620700",
      "name": "城陽市"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2620800",
      "name": "向日市"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2620900",
      "name": "長岡京市"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2621000",
      "name": "八幡市"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2621100",
      "name": "京田辺市"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2621300",
      "name": "南丹市"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2621400",
      "name": "木津川市"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2630300",
      "name": "大山崎町"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2632200",
      "name": "久御山町"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2634300",
      "name": "井手町"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2634400",
      "name": "宇治田原町"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2636400",
      "name": "笠置町"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2636500",
      "name": "和束町"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2636600",
      "name": "精華町"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2636700",
      "name": "南山城村"
    },
    {
      "link": "http://weather.livedoor.com/area/forecast/2640700",
      "name": "京丹波町"
    }
  ],
  "link": "http://weather.livedoor.com/area/forecast/260010",
  "forecasts": [
    {
      "dateLabel": "今日",
      "telop": "晴のち曇",
      "date": "2014-11-12",
      "temperature": {
        "min": null,
        "max": {
          "celsius": "21",
          "fahrenheit": "69.8"
        }
      },
      "image": {
        "width": 50,
        "url": "http://weather.livedoor.com/img/icon/5.gif",
        "title": "晴のち曇",
        "height": 31
      }
    },
    {
      "dateLabel": "明日",
      "telop": "曇時々晴",
      "date": "2014-11-13",
      "temperature": {
        "min": {
          "celsius": "9",
          "fahrenheit": "48.2"
        },
        "max": {
          "celsius": "13",
          "fahrenheit": "55.4"
        }
      },
      "image": {
        "width": 50,
        "url": "http://weather.livedoor.com/img/icon/9.gif",
        "title": "曇時々晴",
        "height": 31
      }
    },
    {
      "dateLabel": "明後日",
      "telop": "曇時々晴",
      "date": "2014-11-14",
      "temperature": {
        "min": null,
        "max": null
      },
      "image": {
        "width": 50,
        "url": "http://weather.livedoor.com/img/icon/9.gif",
        "title": "曇時々晴",
        "height": 31
      }
    }
  ],
  "location": {
    "city": "京都",
    "area": "近畿",
    "prefecture": "京都府"
  },
  "publicTime": "2014-11-12T11:00:00+0900",
  "copyright": {
    "provider": [
      {
        "link": "http://tenki.jp/",
        "name": "日本気象協会"
      }
    ],
    "link": "http://weather.livedoor.com/",
    "title": "(C) LINE Corporation",
    "image": {
      "width": 118,
      "link": "http://weather.livedoor.com/",
      "url": "http://weather.livedoor.com/img/cmn/livedoor.gif",
      "title": "livedoor 天気情報",
      "height": 26
    }
  },
  "title": "京都府 京都 の天気",
  "description": {
    "text": " 近畿地方は、湿った空気の影響で雲が広がり、弱い雨の降っているところ\nがあります。\n\n 今日の京都府は、湿った空気の影響で雲が広がりやすく、午後は日本海か\nら気圧の谷が南下するため、北部では夕方から雨の降るところがあるでしょ\nう。\n\n 明日の京都府は、気圧の谷や寒気の影響で北部を中心に雲が広がり、雨や\n雷雨となるところがある見込みです。",
    "publicTime": "2014-11-12T10:36:00+0900"
  }
}

ちゃんと整形されていますね。めでたしめでたし。
では、せっかくなので、どこからでもアクセスできるようにしておきましょうかね。
4. 設定

#mv jq /usr/local/bin/
#wget -q -O - http://weather.livedoor.com/forecast/webservice/json/v1?city=260010 | jq '.'

皆さん動きましたか?./ がついていないことを確認してくださいね。
動かない人は、どこにパスが通っているか確認してください。

#echo $PATH

では、次は、これらを使ってもう少し、面白そうなことをしていこうと思います。
では。($・・)/~~~

PDF帳票印刷サーバ

PDF帳票印刷サーバのWindows Server 2003からWindows Server 2008 R2 / 2012 R2に移行検討の中で、PDFツール SumatraPDFを見つけた。

帳票印刷サーバに、安定性、サポート体制、潤沢な開発システム費用があればウイングアークのSVF一択なのですが、それほどの規模もぜんぜんなく、簡単なPDFファイルを指定のプリンターに印刷するシステムを構築したい場合、以前 アクロバットリーダー AcroRd32.exeを呼び出して印刷していました。

“C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe” /h /s /t “C:\app\pdfserver\spool\1_TEST_Canon LBP9200C.pdf” “Canon LBP9200C”

これで印刷は十分できるのですが、いかせんGUIツールですので、サービスプログラムから起動したプロセスから更にAcroRd32.exeをCreate呼び出しても印刷できませんでした。
(GUIツールでもサービスから動作するものもあります。)
ですので、スタートアップに登録して、ログイン状態でないと使えませんでした。

今回、Sumatra PDFというPDF表示、印刷ツールを見つけました。
ソースコード付ですのでカスタマイズも可能です。(すばらしい。)ライセンスは、 GNU General Public License version 3.0 (GPLv3)です。

http://sourceforge.net/projects/sumatrapdf.mirror/
https://code.google.com/p/sumatrapdf/downloads/list

サービスプログラムから起動したプロセスからSumatraPDF.exeをCreate呼び出して試して見たところ、問題なく指定のプリンターに印刷できました。

“C:\apps\SumatraPDF.exe” -exit-on-print -print-to “Canon LBP9200C” “C:\apps\pdfserver\spool\1_TEST_Canon LBP9200C.pdf”

※-exit-on-print -print-toでダイアログ表示無しでサイレントで実行できます。
※デフォルトプリンターへ出力したい場合は、-print-to-default

次回の案件より、簡単なPDF帳票印刷サーバが必要な時はSumatraPDFでシステム構築提案したいと思います。

以上、メモ。

iBeacon CentOS 7で受信

iBeaconは、iOS7で追加された近距離無線を利用した通信機能です。
Estimote社がBeaconセンサーを開発し、iPhone 5sに搭載されています。
認識範囲はNFCよりも広範囲で50m程度あり、ビーコン発信側は、
UUID:128ビット文字列(RFC4122で規)
Major値:16ビット整数
Minor値:16ビット整数
です。
受信端末側は、電場強度の情報を使って、数m単位で距離を認識でき、メジャーコードやマイナーコードから任意に定義づけられた情報からそれぞれの応答・動作をします。

今後、いろんなシーンで使われていくと思われます。
「国内iBeaconサービス、続々登場!」
http://smartphone.r25.jp/news/114338
10/31リリース!「京都の市バスはiBeaconで次のバスの到着時間」
http://www.aplix.co.jp/?p=11330
当社は京都:烏丸通りに面した場所にありますので、もしかしてデータを受信できるかも?(これについてはまた別の機会に)

さて、今回は手持ちの機器でiBeaconの送信、受信を体験してみたいと思います。
まず、iBeaconは、Bluetooth Low Energy 対応の機器がないとダメです。
デバイスはBluetooth 4.0であればAndroidでも使えます、ただしAndroid端末の場合はOSが4.3以降でないとだめです。
また、Androidは今のところiBeaconの送信はライブラリーがないのでできません。受信だけとなります。

手落ちのNexus 7は2012モデルでBluetooth 3.0ですので、残念ながら受信できません。(2013モデルだとOKです。)
Screenshot_2014-11-01-22-44-51

最終的に以下の組み合わせで送受信できました。
I)iPhone同士(iPhone5sとiPhone5c) ::当然ですが。
Estimote (free) をインストール
https://itunes.apple.com/us/app/estimote-virtual-beacon/id686915066

iPhone5sをビーコン発信
iPhone5cでレーダ受信  (受信できたら小さな端末アイコンが表示されます。)
20141101_223239

受信した端末のアイコンをタップするとUUID,major,minorが分かります。
20141101_223300

II)iPhone5s ビーコン発信 / CentOS 7で受信
(CentOS 7はVmwareで動かしています。ホストPCはWindows8.1 DELL Inspiron 15 7000でBluetoothは4.0です)

CentOS 7で動かす為に必要なモジュールをインストールします。
1)BlueZ パッケージ(bleaconをインストールに必要)
#yum install bluez-libs-devel

2)#yum install npm*
#npm -v
1.3.6

3)#yum install node*
#node -v
v0.10.30

4)#npm install bleacon
エラーがなければOK

https://www.npmjs.org/package/bleacon

5)#hciconfig

hci0: Type: BR/EDR Bus: USB
BD Address: 80:86:F2:D3:00:F8 ACL MTU: 1021:5 SCO MTU: 96:5
DOWN
RX bytes:568 acl:0 sco:0 events:29 errors:0
TX bytes:390 acl:0 sco:0 commands:29 errors:0

DOWNの場合UPさせる。

  #hciconfig hci0 up

hci0: Type: BR/EDR Bus: USB
BD Address: 80:86:F2:D3:00:F8 ACL MTU: 1021:5 SCO MTU: 96:5
UP RUNNING
RX bytes:1115 acl:0 sco:0 events:56 errors:0
TX bytes:774 acl:0 sco:0 commands:56 errors:0

7)iBeacon受信プログラム

recv.js

//—————————————-
var Bleacon = require(‘bleacon’);
Bleacon.startScanning();
Bleacon.on(‘discover’, function(bleacon) {
console.dir(bleacon);
});
//—————————————-

#node recv.js で受信待ち。

8)iPhone5s Estimote ツールでビーコン発信
9)CentOS7受信結果

{ uuid: ‘xxxxxxxxxxxxxxxxxxxxx43fe94921d8’,
major: 11305,
minor: 17710,
measuredPower: -57,
rssi: -47,
accuracy: 0.5200019057155468,
proximity: ‘near’ }
{ uuid: ‘xxxxxxxxxxxxxxxxxxxxx43fe94921d8’,
major: 11305,
minor: 17710,
measuredPower: -57,
rssi: -44,
accuracy: 0.4273723450154846,
proximity: ‘immediate’ }

距離情報
近接度(proximity) [接近(Immediate),近い(Near),遠い(Far),不明(Unknown)]
精度(accuracy)

で受信できることが分かりました。
CentOS7で送信を試しましたがこちらはうまく動作しませんでしいた。
デバイスが悪いのか、モジュールが悪いのか不明です。

以前、NFCで非接触ICカードを使いログインアプリを組んだことがありますが、AndroidでBluetooth 4.0端末が入手できたら何かアプリを作成したいと思います。
iPhone iOS7から標準搭載されたiBeaconですが、O2Oは「Online to Offline」の要となっていくかと思います。