/home/by-natures/dev*

ソフトウェア開発者として働く人の技術的なメモ

「第7弾 週末ランサーズ」~NoSQLのイノベーションの歴史~ に参加しました

ランサーズさんの勉強会に参加してきましたので、その様子をお伝えします。

[toc]

週末ランサーズとは?

ランサーズ株式会社 主催の「週末ランサーズ」は、以下の目的で主催されています:

WEBエンジニア・クリエイターのための「週末ランサーズ」とは、普段WEBサービスを作る方たちが集まり、技術やデザインについて語り、開発を行い、交流を深めることを目的とする勉強会です。

月に1回程度実施されているということで、第7回となる今回(ATNDページはこちら)は、NoSQL の歴史について株式会社インテリジェンスの大谷 祐司氏にお話いただき、その後は大谷さんがハマッているという、地図APIを使ったアプリケーションを考えました。

この勉強会の面白いところは、講師の方によるお話とは別に、2時間程度のハッカソンタイムがあることです。参加者間での交流も深まりますし、2時間で何か形にしなければいけないので、かなり頭を使います(笑)。こちらの様子も後ほどお伝えいたします。

「第3弾 週末ランサーズ」に参加しました(AngularJS に関するお話)も合わせてご覧ください。

NoSQL のイノベーションの歴史

株式会社インテリジェンスの大谷 祐司氏に、NoSQL のイノベーションの歴史をお話いただきました。

メモリの大容量化に伴う KVS の変化

NoSQL というと、その先駆けは memcached でしょうか。Key-Value のデータ形式で、全てメモリ上に保持するため、非常に高速に動作します。しかし2003年にメジャーバージョンアップがリリースされた当時はメモリは今より高価で、本当に必要なもののみ memcached に乗せる使い方が主流でした。

今ではメモリの価格も下がり、数百GB のメモリなんていう環境を用意している企業も多いのではないでしょうか。そんな中で登場する Redis は、データは全てメモリに保持しつつも、HDD にもデータを保持する永続性をもつ KVS です。一時的なキャッシュとしてしか利用しなかった memcached とは違い、通常のストレージとしてインメモリ KVS を利用することができます。

2013年から AWS 上の Elastic Cache では、memcached か Redis のどちらを利用するか選択することができます。Redis の台頭が伺えますね。

ローカル KVS も進化している

ローカル KVS というと SQLite が有名ですが、近年では Google 社の LevelDB, facebook 社の RocksDB なども登場しています。メモリの大容量化でローカル KVS も何十・何百GB のメモリを使って動作させることができ、外からの通信を考慮しない簡易な設計のため、高速に動作するとのこと。

NoSQL という観点でローカルKVSを眺めることが無かったので新鮮でした。ローカル KVS を利用することがあれば、試してみたいです。

大規模データ利用基盤の変化

2004年に Google 社から MapReduce の論文が発表されて以来、大規模データの処理技術も進化を遂げています。Google 社の BigTable, それをもとにした HBase, Facebook 社の Cassandra, Amazon 社の DynamoDB, そして Hadoop 等々、KVS や 列指向 DB など、多くの技術が登場しています。

日本では2013年に登場した、Amazon RedShift も大きな衝撃を与えました。RedShift では、高価なオンプレ環境を用意せずとも、AWS 上でスケール可能な DWH を利用することができます。Hadoop と違い、SQL で気軽にデータを取得・分析できるのも大きな魅力です。

感想:業界によって技術的な格差が開く?

NoSQL の勉強会ということで、実際に使っている人はいますか?という質問がありました。答えた方はソーシャル業界で働いている方だったのですが、それぞれの KVS を使ったときの印象や使い心地などを聞くことが出来ました。

一方で、NoSQL について勉強したいけれども、業務で使うシーンはないという悩みをもった方もいました。こういった悩みは NoSQL に限りませんが、データありきの技術は、働く環境によって技術的な格差が開いてしまうのかも…と感じました。Hadoop の勉強会でも参加者同士で同じような話をしたのを思い出しました。大規模データ基盤が Google, facebook, Amazon 社などの大企業から生まれていることからも、必要は発明の母…といったところでしょうか。だからこそ、必要なときにすぐに動けるように、こういった勉強会や書籍などで情報やトレンドを把握しておく必要がありそうです。

ハッカソン:地図APIを使ってみよう

NoSQL の話とは変わり、ハッカソンタイムでは大谷氏が最近熱中している「地図API」についてのアプリを考えてみようというお題でした。

地図APIというと Google Maps API が有名です。名称等から緯度経度に変換する Geocoding API なども利用して、各自がアプリを考えて、2時間後に懇親会をかねて発表しました。

大枠のお題が与えられるだけで、開発環境などは一切縛りがないこの2時間のハッカソンタイム。2時間1人で取り組むので、通常のハッカソンとは雰囲気が異なります。自分ができる精一杯を2時間で出し切る…と言えばよいのでしょうか。技術調査 → 地図APIを使って何が出来るかを考える → 実際のコーディング…という流れになり、かなり神経を使います。

順位が付いたり商品が出る訳ではないですし、2時間の間に調べたことのみを発表する方もいて、終始和やかな雰囲気ではありますが、せっかくだから何か作って見せたい!という欲が湧くのが面白いです。勉強会だと知らない人が多いため、見栄を張りたがるのかもしれません(^_^;

地図情報というと東日本大震災を思い浮かべる方も多いのではないでしょうか。当時は多くのボランティア活動やウェブサイトが立ち上がり、Google Maps API を利用したサービスが生まれました。今回の発表でも被災地の写真や震度情報を利用したアプリケーションを考えた方がおり、震災当初のボランティア活動やウェブサイト立ち上がりの雰囲気を垣間みることが出来ました。

私は現在、社員同士のコミュニケーションを促す制度をシステムを通常業務の傍らに作成していたので、それに地図APIを使って面白いことができないかと考えました。制度利用の場面で、社員同士がランチに行った金額を入力する画面があるのですが、その画面に「どこにランチに行ったか」が入力・記録できるようにフロントの JavaScript を実装しました。制度自体の面白さもあり、発表ウケがとても良かったです。

以下は作成した画面のキャプチャです。Google Maps API には初めて触れましたが、とても簡単に地図情報の扱いができて想像以上に楽しかったです。

GoogleMapsAPIを利用したサンプル

「週末ランサーズ」は初めての方も楽しめるイベントです。土曜の午後という参加しやすい時間なのも嬉しいです。ご興味があればぜひ参加してみてください(^_^

Google Maps API 利用に参考にしたページ

以下の Web ページを参考にさせていただきました。

Google Maps API - more

本家本元ですが、デモが非常に豊富で、見ているだけで楽しいです。

Google Maps API V3 基本的な使用方法と設定についてのまとめ

V3 の設定方法が非常に丁寧に・見やすく解説してあります。

Google Maps JavaScript API v3 - Places search box

検索BOXをおきたかったのですが、input フォームを重ねるという方法で実現するしかないようです。オプションであるかと思っていたので驚きました。。