プロフィール:
北海道札幌市のイメージナビ株式会社のエンジニアによるブログです。
実績紹介、技術情報などを不定期ですがポストしていきます。
よろしくお願いいたします!

2014年10月30日にAWS(アマゾン・ウェブ・サービス)の無料クラウドカンファレンス「AWS Cloud Roadshow 2014 札幌」が札幌プリンスホテルで開催されました。

このカンファレンスは札幌(10/30)から始まり、福岡(11/6)、名古屋(11/25)、大阪(12/2)で開催されています。
北海道エリアでは初めてとなるAWSカンファレンスで、AWSの導入事例や技術的な話、開発での活用方法などを直に聞けるチャンスなので参加してきました。来場には事前登録が必要ですが参加費用は無料です。

 
201411141
 

午前のセッションは基調講演とスペシャルセッションとして北海道での導入事例紹介、午後はユースケーストラック(4セッション)とテクノロジートラック(4セッション)に分かれての講演となっていました。各セッションとも満員で道内でもAWSクラウドの注目度が高まっていると感じました。

 

■AWS利用実績は2万社以上
最初の基調講演ではクラウドを利用するメリットと導入事例の紹介がありました。AWSは日本では既に2万社以上での利用実績があり、利用方法も既存のオンプレミス環境をクラウドに移行したり、クラウド上でデータを解析・需要を予測、大手のプライベートクラウドを丸々移行など様々な実績があるとのことでした。
 
こうしたクラウドへの移行でAWSが利用されるのはこのような理由からのようです。
・顧客のフィードバックに基づくイノベーションのペース
・高いセキュリティ
・運用不可の軽減
・コスト削減、低コスト
 
また初期投資が不要、リソースの調達・変更に時間がかからないため失敗のコストが下がり、手軽に「トライ」が可能になってビジネスが加速できるのも大きなメリットです。弊社でもAWSを利用しているのでこのメリットは大きいと実感しています。

aws-logo

■酪農とクラウド
導入事例では北海道の株式会社ファームノートさんの牛個体管理アプリの紹介がありました。酪農家の減少と大規模化が進み、個体管理が煩雑になっている現状を改善するためのシステムを構築するにあたりAWSを利用したとのことでした。酪農とクラウドの組み合わせというのは北海道らしい事例だと思います。
 
AWSを利用した理由は下記にあるようです。
・運用管理コストを極限まで押さえられる
・容易にスケールできる環境がある
・導入事例あり
 
このアプリは飼育頭数により料金が変わりますが100頭未満は無料とのことでした。料金を抑えることができたのもAWSのクラウド化のおかげではないでしょうか。ゆくゆくは世界展開もしていくというお話しでした。

 

■セッション
午後のセッションはユースケーストラックとテクノロジートラックに分かれており、ユースケーストラックではクラウド環境構築時に役立つデザインパターンや、開発者がAWSを利用するメリット、活用方法や利用テクニックなど実際に利用する上での具体的な話題となっていました。

 
201411142
 

テクノロジートラックでは、AWSは安全なのか、コストはどのくらいかかるのか、オンプレミス環境に比べて遅くないのか等のこれからクラウドを利用するにあたっての初歩的な疑問点から、新しく利用できるようになったサービスや機能についての紹介、利用例などの話題となっていました。

AWSをこれから利用する人、既に利用している人、利用しているけどよく分からない人など、それぞれのケースに合わせて興味のあるセッションを選ぶことが出来たのはよかったと思います。

残念ながら会場内は撮影禁止だったため写真で雰囲気をお伝えすることは出来ませんが、どのセッションも興味深くとても勉強になるイベントでした。

 

■おみやげ
帰り際、受付でアンケートに答えると景品がもらえました。いくつかのノベルティグッズの中から好きな物を1点選べるということでしたのでAWSロゴ入りマグボトルを選びました。AWSと共に活用していきます。

 
201411143
 

■最後に
札幌と福岡は既に終了していますが、名古屋と大阪はまだ間に合いますので近隣にお住まいでクラウドやAWSに興味のある方は是非参加してみてはいかがでしょうか。

 

この記事に関するご感想、その他ご用命などございましたら、こちらよりお願いいたします。

前回の「iBeaconについて(基本編)」では、iBeaconとはどういうものかという説明をしましたので、今回は実際に使用してみたいと思います。

 

■実際に使用してみました
まず始めにiPhone側でビーコン信号を検出するための簡単なアプリをObjective-Cで作成しました。始めて使うので調べるのに2~3日かかりましたが、手順が解れば1日かからずに作れると思います。iBeacon専用のSDKというものは無く、CoreLocationFrameworkをXCodeで設定します。
今回はデバイスにiPhone5c(iOS7.1)、ビーコン発信器にAplix社製のMB001 AcというUSBスティック型の製品を使用しました。

 

では、早速検証してみます。図2のように弊社入口前(13階)の共用フロアにビーコン発信器を設置しました。

beaconmap_2_500

[図2] iBeacon受信状況

赤:ビーコン発信器の設置場所
橙:Immidiate(ごく近い)
緑:Near(近い)
青:Far(遠い)
ピンク:ビーコンを認識せず

 

iPhoneを持って発信器から半径約10mのエリアに入るとビーコン信号を認識し、取得した情報を作成したアプリで全て表示できました。

SS250

[図3]取得した情報をアプリで表示

 

情報が取得できたので、次に電波の強弱を調べるため先ほどのエリアから離れてみたところ、ビーコン信号を受信しなくなりました。また、非常階段内(金属製ドアを閉めた状態)でも受信しませんでした。

ibeacon_notfound
[図4]ビーコン信号を認識しない状態

 

逆にImmidiate(ごく近い)となる場所まで発信器に近づき、発信器に背を向けると電波強度が下がりNear(近い)に変わりました。
今度は発信器を設置した13階の真下の12階に移動しましたが、こちらでも信号は受信でき、その下の11階までは受信できることが確認できました。さらにその下の10階ではほぼ受信できない状態となりました。
ibeacon_far
[図5]信号がかろうじて届いている状態

 

このことから、障害物に左右されるものの発信器から上下左右10m程度が問題なく受信出来るエリアになり、発信器から離れるほど信号は弱くなるようです。

SS2_250

[図6]iOS7.1以降であればアプリを起動していなくとも、ビーコンを認識すると通知を受けられるようになっています。

 

■使用して解ったこと
受信できる情報と範囲については先ほどの検証で解りましたが、もう一つ解ったのはiBeaconの状態更新に時間がかかるということです(1秒に1回程度)。これは、1秒間に電波強度の平均を取り、なるべく正確な情報を提供するためのようです。そのため自動車、自転車など移動スピードが速いものには向かないようです。
同様に、iBeaconのエリアから出た時の認識も遅いようです。これもエリアを出てから20秒後に通知される仕様になっているためで、iBeaconのエリア境界にいる場合で頻繁にエリアを出入りしてしまうという誤判定を防ぐためです。
そして、特徴のところでも書きましたが、距離の測定については、とても近い/近い/遠いの3段階でしか判定できない仕様のため、アバウトな判定しか出来ませんでした。

※参考:距離を割り切って3段階に分類(日経テクノロジーオンライン)

 

また、電波なので発信器とデバイスの間に障害物などがあると一気に電波強度が落ちることがありました。先ほどの検証でもあったように金属製ドアを挟んだり、発信器に背を向けるだけでも距離精度に変化がありました。
このことから、発信器の設置場所を考慮しないと障害物や電波状況などにより認識しにくくなるため、なるべく見通しの良い場所、壁/柱など遮蔽物が無いところを選ぶことがポイントになります。
また、周囲の電波状況にもよりますが、設置後は電波強度の調整も合わせて考慮した方がよさそうです。(1mあたりの閾値となる電波強度を調整できます)

 

■大量のビーコン発信器を管理する場合
今回は発信器を1つだけ使用しましたが、実サービスでは複数の発信器を使用することもあると思います。今回使用したAplix社製品の場合は、webの管理ツールと連動する一括設定を簡単に行えるiPhoneアプリがあり、発信器に近寄ってデータを書き替えることになります。その際には他の発信器の情報と間違えて書き替えないような運用も必要になります。

 

■セキュリティの問題
iBeaconはビーコンのIDを取得できれば成りすましが行えてしまえます。これにより不正にアプリを反応させることができてしまうため、その場でしか受けられないサービス(クーポン発行)など、成りすまされても実害が無いサービスを企画(ネットだけで完結してしまうのではなく、リアルに店舗や場所と関わるもの)したり、成りすまされると問題のある企画の場合はGPS等との併用や、ビーコンモジュールに備えられたセキュリティの仕組み(Aplixのサービス:http://www.aplix.co.jp/?page_id=9656)を使うなど、対策が必要になります。

 

このように多少制約や問題があるものの、最近のiPhoneであればほぼ内蔵されている機能でデバイスの普及率も高く手軽に使えるので、使い方次第では用途も広がるのではないでしょうか。弊社でもiBeaconを利用したサービスを企画できればと思います。

 

iBeaconに関するお問い合わせ、その他ご用命などございましたら、こちらよりお願いいたします。

iBeaconというのを最近よく耳にするようになりました。これは一体どのようなものか調べて実際に使ってみました。

ibeacon-logo-small

■iBeaconとは
iBeaconとは2013年にApple が発表したもので、ビーコン(Beacon)と呼ばれる信号を発信する発信器と、それを受信するデバイスで信号をやりとりする機能のことです。ビーコン発信器を中心とする半径数m内にあるデバイスの入出の検知と距離(おおまかな)計測、特定などを行うことができます。
iBeaconは近距離無線通信技術のBluetooth Low Energy(以下、BLE)と呼ばれるBluetooth仕様の一種で、消費電力が非常に小さいことが特徴です。この規格はApple固有の技術ではないためAndroidでも使用可能です。
対応OSはiOS7以降で、端末はiPhone4S/iPad(3rd generation)/iPad mini/iPod touch(5th generation)以降となっており、iOS7.1以降ではアプリを非起動状態から通知を受けることができるようになっています。Androidの場合はOSがAndroid4.3以降、BLE搭載端末となっています。

※AndroidからiBeaconを受信するためには、BLEの仕様がわかれば自作できますが、アビダルマ株式会社様よりSDKがリリースされています。このSDKについては未検証のため今回は割愛します。

 

■iBeaconの用途
iBeaconの主な用途としてはO2O(Online to Offline)を想定していますが、多様な用途に使用できます。実際に運用されているサービス・アプリとしては、店舗内で使用できる割引クーポンの発行、博物館・美術館の展示物の情報の提供、スタンプラリーなどがあります。

※主な導入例
・米大リーグ(MLB.com At the Ballpark)
・スマポ(http://www.smapo.jp/)
・館ナビ(http://www.kan-navi.com/)
・AppleStore(米国のみ)
・スマート座布団(http://www.keyvalue.jp/?stage=press_smartchair)

 

■iBeaconの仕組み
iBeaconは発信器が発するビーコン信号を受け取ったデバイスがエリアに入ったかどうかを判断するだけのモジュールなので、決済を行う仕組みやコンテンツ(画像やポイントなど)を送信する仕組みはありません。また、アプリケーションから発信器に対してデータを送ることや、アプリ(iOS端末)間と相互の通信もできません。
決済やコンテンツを送信する仕組みが必要な場合は、アプリとの連携が必要になるため別途実装する必要があります。例えば、アプリ側が受信したiBeaconの識別IDを元に、コンテンツや情報をサーバーから(もしくはアプリケーション内のリソースから)取得・処理するといった方法です。

 

■iBeaconで取得できる情報
iBeaconは発信器から直接コンテンツや情報を送信するものではありません。送信される情報はiBeaconの識別IDや、距離(方角は取得できません)、電波強度などの情報となります。

・UUID(ビーコン領域を示す識別ID)
・majorID(ビーコンを特定するID)
・minorID(majorIDに紐づくビーコンID)
・距離(Immediate:ごく近い(十数cm), Near:近い(約1m前後), Far:1m以上)
・測定精度(距離の誤差がどれくらいか[m])
・電波強度(電波の強さ[dBm])

 

■設置例
下の図は設置例です。
beaconSetting
[図1]衣料品店でのビーコン設置例

 

※同一店舗内に設置するビーコンのUUIDは統一しておき、支店がある場合は支店毎にUUIDを決めておきます。
※ビーコン発信器にMajorID、MinorIDを設定します。発信器は一意に特定できるようにするため、店舗内で同一のMajorID,MinorIDを持つ発信器が存在しないようにします。
(図1の例では男性向け衣料のビーコンA,BにMajorID=1を設定しており、MinorIDはAに1,Bに2を割り当てることで、どのビーコンのエリアに入ったかが特定できるようにします)
※今回の実験で使用したAplix社製の場合ビーコンの場合、UUID、majorID、minorIDは自由に設定可能です。(メーカーによっては自由に設定できないものがあるため、導入の際は調査が必要です。発信器を複数調達する場合はメーカーを揃えた方がよいでしょう)

 

次回の「iBeaconについて(実践編)」では、実際にiBeaconを使用して検証してみたいと思います。

 

iBeaconに関するお問い合わせ、その他ご用命などございましたら、こちらよりお願いいたします。

前回の「Windows8タッチパネル環境を用いた物件検索ビューアの開発(概要)」では、物件検索システムの概要を紹介しました。

今回は技術的な部分を紹介します。このシステムで必要な環境は次のようになっております。

・サーバー環境
Linux(Redhat/CentOSなど)系OS
Apache、MySQL、PHP、Yii(PHPフレームワーク)
インターネット環境(クライアントとの通信)

・クライアント環境(物件ビューアインストール条件)
Windows8
.NET Framework 4.5
解像度1920×1080ピクセル(フルHD)のタッチパネルディスプレイ
インターネット環境(サーバーとの通信)

・管理用クライアント環境
Webブラウザが動作するPC
インターネット環境(サーバーとの通信)

 

■アプリケーションの動作
物件検索ビューアは.NetFreamworkを用いたWindows8アプリケーションです。このアプリケーションでサーバーと通信し、管理用クライアントであらかじめ登録しておいた物件のデータや写真データを検索します。

物件検索ビューアを使うには.NET Framework 4.5がインストールされたWindows8コンピュータと解像度1920×1080ピクセル(フルHD)のタッチパネルディスプレイが必要となります。

物件検索ビューアを起動するとまず最初に認証処理が行われます。認証に成功するとサーバーから全ての写真データを取得してローカルコンピュータに保存します。ここで取得するデータは、前回取得したデータに対しての差分情報となります。(初回のみ全て取得)
処理完了後、全ての写真データが保存され最新の状態となります。

このようにデータサイズが大きくなりがちな写真データをローカルコンピュータに保存することで、検索の度にサーバーからの写真データ読み込みに待たされることが無く、検索結果のスクロール中でも非常にスムーズな動作を実現しています。

 

■システム全体の動き
物件検索ビューアから検索処理や写真データ取得処理を行う際にサーバーとの通信を行っています。サーバーでは主にWebサーバー(Apache)、データベースサーバー(MySQL)が稼動しています。Webサーバー内では、Web APIやPHPベースの管理用Webアプリケーションが稼動しています。

14091211

今回はサーバーにAWS(Amazon Web Service)のEC2インスタンスを使用していますが、他のクラウド環境や仮想サーバー、もちろん物理サーバーでも使用可能です。

また、当システムで実装されている検索処理は全てWeb APIを用いており、内部ではJSONベースでデータの取得を行っております。検索処理の機能をアプリケーションから分離させることにより、他のプラットフォームへ移植する際、データベースアクセス処理を作り直すこともなく、そのまま利用する事ができます。そして、当システムは物件検索だけではなく、他の用途にも流用できると考えております。

 

■快適な操作のために
現在では導入先のお客様からもご好評をいただいている当システムですが、開発中は検索結果で写真データの点数が多くなると処理が重くなってしまい、スクロールが滑らかに動かない問題がありました。このままでも一応動作はしますが、せっかくのフリック操作の魅力が半減してしまうので何とかしようと考えました。

最初は全ての写真を一度に読み込んでしまう処理にしていたため、例えば検索結果が数千点もある場合などに滑らかなスクロールが出来なくなっていました。そこで、写真を一度に読み込む件数を定義し、スクロールでそれらが全て表示された際に必要な分だけ次の写真を読み込むような実装に変更しました。

また、スクロールにより画面から消えた写真はメモリ内から消去するようにもしています。これにより検索結果の最終までスクロールを行った場合でも、処理がもたつくことも無くスムーズなスクロールを実現できるようになりました。

基本は左右スクロール側にそれぞれ3ページ分読み込んだ状態としています。

14091212

※1ページ内に表示される写真は、大サイズで6枚、中サイズで15枚、小サイズで32枚。
※数字はページ番号。

画面をスクロールさせ、末端までスクロールさせます。

14091213

末端までスクロールさせると、新しく3ページ分読み込み、古い3ページ分はメモリ内から消去されます。

14091214

こうすることでスムーズかつ滑らかなスクロールを実現しています。

 

■使用技術など
Microsoft C#、WPF(Windows Presentation Foundation)、Microsoft .NET Framework 4.5、JSON、MySQL、AWS(Amazon Web Services)、PHP、Yii(PHPフレームワーク)

 

当システムや物件検索ビューアに関するお問い合わせ、その他ご用命などございましたら、こちらからお願いいたします。

弊社ではビルやマンションなどの物件を紹介するための検索システムを開発しました。まずは、このシステムがどのようなシステムなのか機能の概要を紹介いたします。

14091201

■このシステムで出来ること
このシステムではクライアントPCにインストールしたアプリ(物件検索ビューア)からサーバーに登録してある物件データを検索することができます。物件検索ビューアはWindows8のタッチパネル機能を使用しており、全ての機能をタッチ操作で行うことができます。
また、大型タッチパネルディスプレイを用いてお客様に物件の紹介を行うような使い方も想定しております。

 

■物件検索ビューアでの検索について
物件検索ビューアでの検索方法は地図から探す方法と、建物の写真から探す方法の2通りがあります。

・地図から探す
地図から探すモードは、登録されている物件が地図上にマーカーとして表示されますので、どのエリアに存在するのかがわかります。マーカーをタッチすると物件の写真と簡易的な情報を表示するウィンドウが表示され、ここから更により詳しい情報を表示するための詳細画面へ遷移することもできます。

また、検索条件の指定もでき、住所の直接入力や都道府県を選択して地域を絞ることもできます。

14091202

・写真から探す
写真から探すモードでは、タッチパネルのフリック操作により、慣性スクロールを用いたスムーズな水平方向スクロールで全ての写真を閲覧することができます。また、一度に表示する写真枚数の変更も可能です。

14091204

写真から探すモードの場合は、検索条件も指定可能でキーワード検索やタグ検索なども可能です。

14091206

 

■詳細画面
検索結果に表示された物件の写真をタッチすると詳細画面を表示することができます。詳細画面ではこのように物件の詳細情報と関連写真を表示します。

14091205

 

■検索履歴
一度詳細画面を表示した物件については、アプリケーションを終了するまで履歴に残っており、再度物件を確認することができるようになっています。履歴一覧で件数が多い場合はタッチ操作で縦にスクロールを行います。

14091207

また、QRコードを表示することも可能で、QRコード表示ボタンを押すと画面にQRコードが表示され、スマートフォンなどで物件の場所を確認することができます。(ブラウザ+MapFan、ゼンリン、Google Mapsなどの地図情報サービスが必要)

 

簡単ではありますが、以上がこのシステムの機能となります。

次回の「Windows8タッチパネル環境を用いた物件検索ビューアの開発(詳細)」では、必要な環境や仕組みについて技術的な部分を紹介いたします。

 

当システムや物件検索ビューアに関するお問い合わせ、その他ご用命などございましたら、こちらよりお願いいたします。