We are atWare blog! — 株式会社アットウェア

Viewing entries tagged
conference

Couchbase Live Tokyo 2015

Share

Couchbase Live Tokyo 2015

みなさん、こんにちは。アットウェアの矢納です。
先日8/31(月)に豊洲で開催されたCouchbase Live Tokyo 2015にスピーカとして参加してきました。今回は発表の内容を紹介して行きたいと思います。

IoT Platform 「Yanoh!(TBD)」

今回のセッションのタイトルは"IoT Platform 「Yanoh!(TBD)」"です。「Yanoh!」は正式名ではありません。正式名は後ほど。

プラットフォーム名

zabuton-couch.png

内容の紹介に入る前にプラットフォーム名をご紹介します。

Zabutton




なぜZabutonなのか?

Couchbaseからカウチ(ソファ)を連想することができると思います。ソファは家人や来客がゆったりとくつろげるようにする物です。カウチの歴史は18世紀にフランスで誕生したものです。つまり西洋風の物なのです。
では和風な家人や来客がゆったりとくつろげるようにする物はなんでしょうか。そうです。座布団です。さらに座布団はどこにでも持ち運びが可能でどこでも使う事ができます。

これらの意味をこめて「Zabuton」という名がつきました。

Couchbase Mobile × IoT

さて、「IoTの分野にCouchbase Mobileは合致するのだろうか」という率直な疑問に答えていきましょう。

  • IoTの分野では多くのデータのやり取りを行います。リアルタイムを求められる状況で1ms以下の応答時間は非常に大事な物になって行きます。
  • 複数デバイスとの同期 IoTの分野ではセンサー等を使い、多くの場所からのデータを取得すると思います。その際のデータの同期処理を独自で実装するには非常にコストがかかります。この同期の処理が非常に簡単に書く事できます。

この2つの要点からCouchbase MobileとIoTのコラボができることを判断しました。

Office × IoT

CouchbaseとIoTをコラボさせるのは分かっていただけたでしょうか。では、次はどの分野とコラボするかです。今日、IoTは様々な分野に進出しています。家や鉄道、農業、学業、オフィス、商業施設など様々です。その中、今回選択したのは オフィス です。
農業じゃないのか!?と思われた人もいるかもしれません。確かに気温や空気流れ等を測定し、温度調整や換気窓の開閉の制御など色々と思い浮かべるかもしれません。ですが、農業とコラボをしようするとかなり多くのコストがかかります。自分でビニールハウスを建てるわけにはいきません。農家さんと協力が得れても、窓の開閉に使うモータの設置にコストがかかります。
それに比べオフィスはどうでしょう。私たちに身近なところにもなります。みなさん、会社の中を見回してみてください。解決したい問題なのに軽視されているものはありませんか。今回考えたユースケースはそのような問題に対してのソリューションです。

Technology

ユースケース紹介の前に「Zabuton」がどのような技術を使って実現しているかを見て行きましょう。

ベースレイヤー

ここはCouchbase社の Couchbase Mobile です。Couchbase Mobileは "Couchbase Server""Sync Gateway""Couchbase Lite" で構成されています。
Sync Gatewayを使う事により、複数のモバイル端末とデータの同期を簡単に行う事ができます。

エンドレイヤー

ここは 人とモノをつなげる 部分をなります。
iBeaconやNFC、各種センサーを使い、身の回りのデータを集めます。

ミドルレイヤー

ベースレイヤーとエンドレイヤーだけではデータを集めて、それを保存しているだけです。この二つのレイヤーだけでは動きません。 なので 収集したデータを中継・表示する ものが必要となります。スマートフォンやブラウザ、RaspberryPi等を使って、それらをやります。

アプリケーション

では、今回作成した「Zabuton」の紹介と「Zabuton」を使ったアプリケーションを紹介していきます。
ここで今回考えたユースケースを簡単に理解してもらうために動画を用意致しました。こちらをどうぞ。

今回考えたユースケースはこちらになります

  • リソース空き状況確認
  • チェックイン/チェックアウト
  • トラッキング

リソース空き状況確認

最初は リソース空き状況確認 ですね。動画でもあった通りトイレの空き状況チェックアプリです。

オフィスビルだとトイレの数はそれほど多くないのですぐに渋滞になることがあります。またオフィスビルだけでは無く、将来的に商業施設への展開を考えました。トイレについてから状況が分かっても仕方ないのです。トイレに着く前に空いているトイレがどこかを知りたいのです。

処理フロー

  1. IR Sensar(赤外線センサー)で人を認識。常にONになっているiBeaconをOFFにします。
  2. RaspberryPiがiBeaconのステータスを監視
  3. iBeaconのステータスを更新。
    iBeaconのステータスを更新する際に今回作成した「Zabuton」の一部、 "Zabuton Server"のAPI を呼びます。この"Zabuton Server"がSync GatewayのREST APIを使いデータを更新します。
  4. スマートフォンとはSync Gatewayにより自動同期され、空き状況を確認することができます






「なぜRaspberryPi上にCouchbase Liteを起動させないのか」と疑問を持たれた方もいるのではないでしょうか。
開発初期の頃はRaspberryPi上にCouchbase Liteを起動させ、Sync Gatewayを使って自動同期を行っていました。ですが、データ同期に10秒以上という非常に時間がかかっていました。この問題を解決するために"Zabuton Server"を開発し、そのAPIを呼ぶようにしました。
では、なぜ同期に時間がかかったのでしょうか。簡単な話でした。Couchbase ServerとSync Gatewayを動かしているサーバのスペック不足でした。サーバのスペックを上げたところ、同期にかかる時間が1秒近くになりました。

チェックイン/チェックアウト

次に2つ目の チェックイン/チェックアウト です。動画ではある場所についた際、アプリを使ってその場所のロックを解除することができるものでした。当初はiBeaconを使ってそれを実現しようと考えていましたが、時間との都合がつかず完成に至りませんでした。
ですが、その人がある場所に来たというのをNFCを利用して実現することができました。

処理フロー

  1. ICカードリーダでカード情報読みます。
  2. カードのIDをKEYにして、その人がどの場所に入った(出た)かを記録します。
    この際も"Zabuton Server"を経由してデータを更新しています。
  3. チェックイン状況はWEBから確認することができます。


これで誰がどこに行ったかは記録できるのですが、どのNFC(RaspberryPi)がどの場所なのかを事前に登録しておく必要が有ります。これは専用のサイトから登録が可能です。





トラッキング

最後に3つ目のトラッキングです。動画ではボスの位置を把握して慌てずに会議室に行くというものでした。ボスの位置を見ながらではなく、時間前に会議室に行くのがベストですよ。
さて、これを実現するにはこれは各所にiBeaconが配置されている前提です。各所に配置されたiBeaconを使ってその人がどこにいるかを記録するものです。

処理フロー

  1. スマートフォンでiBeaconシグナルを受けとる。
  2. 10秒以上連続でシグナルを受け取っている場合にその場所にいると判断する
  3. データの更新


これを利用すればチェックイン/チェックアウトにも適用することは可能です。





今後

「Zabuton」があることでほんの少し皆さんが幸せになるのではないのでしょうか。
ですが、まだ問題はたくさんあります。トラッキングでは個人がどこに行ったのかがまるわかりになってしますので、プライバシーの問題になりかねません。また、各所に配置するiBeaconの情報登録サイトは作成したのですが、セキュリティがありません。全員がすべてのiBeacon情報を更新することができます。
もちろん問題だけではありません。期待もあります。限度はあると思いますが、個人の情報を集めることができますので、その人だけの情報をお届けすることが可能となります。

スマートフォン向けのライブラリは現状Androidしかありません。iOS版は作成中です。また、RaspberryPi上でCouchbase Liteを動作させていませんでしたので、Couchbase Liteを使ったタイプを作成する予定です。
今回作成したライブライはatWareのGithubで公開予定です。公開した際にはこのブログで紹介したいと思います。

開発協力者

名前:Nguyễn Anh Huy(ベトナムインターンシップ生)
ニックネーム:ジャック
好きなこと:食、旅行、スポーツ、音楽
スキル:英語、Android、Go言語

名前:Tue Ngo(ベトナムインターンシップ生)
ニックネーム:けんじ
好きなこと:飲み、スポーツ
スキル:ハードウェア、Python

名前:Priyatam Mudivarti
会社:Facjure, LLC
「Zabuton」の名付け親

名前:北野弘治
役職:福社長
「Zabuton」のアドバイザー

Share

XP祭り2015に参加してきました

Share

XP祭り2015に参加してきました

みなさんこんにちは。KEYチームの武永です。

今回は、先日行われた 「XP祭り2015 “俺も!!”」 に参加してきましたのでそのレポートになります。

XP祭りとは

日本XPユーザグループ(XPJUG)が主催しているイベントです。
2002年より毎年秋に開催されています。
私は今回が初めての参加です。

今回参加したセッション一覧

私が参加したセッションは以下になります。 オープニングは間に合わず基調講演からの参加になりましたが。。。

基調講演「XP lives, XP dies, XP lives again!!」

角征典さんによる基調講演のスライドは以下になります。

基本的に全てスライドに書いてあるので御覧ください。
個人的に印象に残っているのは「ときめき」というワードです。

  • TDD -ときめき駆動開発-とは
    こんまり流片付け術 では「捨てるモノ」ではなく「残すモノ」を選ぶが、 残すかどうか迷った時に「それはときめくか?」と先生は聞くらしい。
    ときめきは個人的なもので教えるものではない、最強のツール。
    エクストリームプログラミング の23章「時を超えたプログラミングの道」は、
    ときめきの道であり、 XPをやるときもみんなが「ときめく」必要がある。
    「ときめくプラクティス」を選ぶべきである。
    XPは「価値」と言ってるけど、それは届けた後にしか分からないよね?
    だから「無駄」とか「価値」じゃなくて、「ときめき」が重要。
    これが「ときめき駆動開発」。TDDだよね!

プラクティスを選定するときに「ときめく」ことが重要というのは個人的にもスゴく共感出来ました。
実際にプラクティスを選定する場面に立ち会わせたことはありませんが、
何かしらの課題を抱えていて、それを解決してくれるかもしれないものに出会った時に「ときめく!」のだろうなとはなんとなく感じることができるので。
このあと1日中「ときめき」というワードがどこかから聞こえてくることや、 セッションの資料に出てくることもあったのでみなさん同じ気持だったのかなとか想像してました。

結構笑えるネタが盛り込まれていたらしいのですが、
私には分からないネタが多くて反応できなかったことが結構ありました(汗)

“共感”でつながるアジャイルチーム

こちらは「共感コミュニケーション」というものをワークショップで体験してみるセッションでした。
スライドは以下になります。

4つのプロセス

  • 観察
    録画再生のように明らかな事実
  • 感情
    自分/相手が感じていること
    エンジニアは感情を出しづらい/感情を抑える傾向にある職業だと本に書かれているらしいです
  • ニーズ
    何を必要としているか
    感情の裏には自分が必要としているものがあるはず
  • リクエスト
    具体的な要求
    叶わなくてもいいから口にだしてみる

このワークショップでは、「感情」と「ニーズ」の部分について 「感情」と「ニーズ」を結びつける練習を行いました。

最初に「自分の感情」を感じるということをしました。
例えば

  • ときめくプラクティスを聞いた時は「面白かった」。なぜなら「ひらめきが欲しい」、「刺激が欲しい」というニーズが「満たされた」からだ。
  • 基調講演を聞いて「ショックを受けた」。なぜなら一部理解できない話があり、「情報や知識がほしい」というニーズが「満たされなかった」からだ。

というように、どのような感情を持っているのか、その感情の元となるニーズを探ることで、
自分・相手が欲しているものは何かということを探っていくことをしました。

「自分の感情」を実際に他の人に上の例文のような形で話してみると 「本当にこの感情とニーズは合致しているな」と改めて納得した部分もありました。
しかし、「この感情はこのニーズと合致しているのか?」と自分に疑問を持って相手と本当のニーズを探してみると新たな発見もありました。
自分のことなのに実際に口に出してみると相手にも伝わるし、自分も新たな発見ができるという非常に面白い体験でした。

次にペアの人の話を聞いて、その裏にある「感情とニーズを探る」ということを行いました。
何かの感情にまつわる1つの出来事を相手に話して、相手はその裏にある「感情」を当てたあと、2人でニーズを探していくという練習でした。

これが非常に難しくもあり、面白い時間でした。
相手の話の裏に隠れている感情を探るのは難しく、そこからニーズを探るのはさらに難しかったですが、
探ろうとして深堀りして聞いていくうちに新しい情報が出てきてもっと相手のことが知れたり、
自分のことを知ってもらえるようになるのだなと感じた時間でした。

TDDライブコーディング

こちらは「ときめき駆動開発」ではなく本当に「テスト駆動開発」の方のTDDライブコーディングです。
まずはTDDについて説明と登壇者のきょんさんが大事にしていることの説明がありました。

TDDの3原則 by Uncle Bob

  • 失敗するテストが出来るまでプロダクトを書いてはいけない
    最初Greenにした時に、一気に追加実装してしまうのはTDDあるあるだがやってはいけない
  • 失敗するテストがある場合にはそれ以上テストを追加してはいけない
  • テストを成功させるプロダクトがある場合にはそれ以上プロダクトを追加してはいけない

要求や設計の反映

テストが失敗した時に判断できるようにする

  • バグを埋め込んでしまったからか。
  • 意図された振る舞いは変わらず関連性があった部分が何処か別の場所に移されていたのか。
  • 振る舞いがもはや正しくない。システムの前提が変わってしまっているのか。

分析と設計

  • 分析には主にミカドメソッドを使う
  • 設計には主にTDD/BDDを使う

そして実際にライブコーディング。
https://gist.github.com/kyonmm/6102436 にあるTODOリストをTDDでコーディングするのを見ていくセッションでした。
もっと時間があればワークショップにしても良かったらしいですが、90分枠でライブコーディングになったらしいです。

ライブコーディングの様子

そして出来上がったコードがコチラ

最初Greenにした時に一気に追加実装してしまうのは割りとやりがちなので気を引き締めたいところです。
きょんさんは非機能系(パフォーマンスとか)のテストも最初から入れるとのことで、
特に性能テストとかは最初から書いておくらしいです。
実際にどういうテストを書くのかあまり想像できていないので個人的に聞いてみたいです。

LT祭り

そしてLT祭り。
毎年レベル高いと聞いていたのですが、噂通りでした。

それぞれ公開されているスライドを以下に紹介しておきます。

クロージング

最後の最後に協賛の出版各社様からの献本が参加者にプレゼントされました。

私はプレゼントを貰える条件の1つ

XP祭りに初参加で、入社5年目以内

という条件に当てはまったのでこちらを頂きました。ありがとうございました。

最後に

非常に良い刺激を受け続けた1日でした。
一度読みましたが、もう一度エクストリームプログラミングを呼んでみようと思いました。
そして今回聞いたものですぐに使えそうなのものはどんどん実践していきたいです。
例えば共感コミュニケーションなどは非常に練習が必要だと思うので常に意識しながら会話していきたいですね。
今回参加できなかった他のセッションも興味深いものが多いので、スライドをあとで見ようと思います。
来年もきっと参加します!!

Share

Share

ScalaDays San Francisco 2015 Recap

Sunset over the Golden Gate bridge

Sunset over the Golden Gate bridge

Last March, I attended ScalaDays in San Francisco. It was a fantastic experience!

I came away with a much better understanding of the Scala ecosystem, and was really impressed with the caliber of speakers at the event. I volunteered as a staff member, which is something I would recommend to others.

In fact, I should put in a plug for this- last year at OracleWorld I volunteered to teach kids to program with Devoxx4kids. I would highly, highly recommend it to anyone even remotely interested. It was an incredibly rewarding experience, and I got to meet awesome people.

This volunteer event was a bit different- I didn't get to hang out with kids interested in programming, for one, and I had to do manual labor. But I still got to meet awesome people, so it was worth it. If you're going to a conference, it's good to meet people. If you just go there, absorb the lectures, drink beer and hang out with your coworkers, I think you are missing out. So next time, volunteer, and you'll have a better time.

Ok, with that aside, here are some thoughts a month or so after the event.

The Future is Tasty

Martin Odersky introduced Tasty files to me during the keynote at Scaladays. I had never heard of them before, and they are still somewhat of a mystery to me. I'm dying to work with them. It is such a cool idea, I just have not had the time yet to see what is available now and figure out how it will work.

The gist is that Tasty files will solve binary compatability issues going forward for Scala, and at the same time will also allow the compiler to convert Scala to both class files and Javascript. To paraphrase something I attribute to Odersky but can not longer seem to find on the internet, Scala is no longer be a single platform language. So I've got that going for me, which is nice.

Spark

If you are a developer and do not live under a rock then you have probably heard of Apache Spark. Reynold Xin gave a really nice recap of the effort required to take a vanilla Spark instance turn it into a Sort Benchmark winner.

What you may not know is that Spark was initially developed with Akka. I'm not sure if it still uses Akka or not.

Shapeless

I attended the Shapeless talk and came away feeling a bit shapeless about the whole thing, actually. But after reading a little bit about it, it's easy to see why the talk was so well attended. The generic programming library is definitely worth looking at further.

ScalaJS

My one regret was not attending a ScalaJS talk, it was brought up repeatedly in the key note, and it's definitely worth looking at further. ScalaJS has support for use with ReactJS and Angular,

Here are the complete list of talks from the conference if you're interested in checking them out.

One last bit- I attended Advanced Akka Training after the conference. It was put on by BoldRadius. One of the instructors, Michael Nash, also spoke at the conference. The training was excellent.

Share