【レポート】CROSS2016@横浜大さん橋ホール
初めまして!
あと2ヶ月で後輩が入ってくるF.O.Xチーム新卒Scalaエンジニアの石橋(@b0941015)です!
CyberZでは勉強会に参加することを積極的に奨励していて、勉強会の参加費を会社が負担してくれたり、平日でも業務として勉強会に参加することができる仕組みがあります
今回は今更感が若干漂いますが、2016年2月5日に横浜大さん橋ホールで開催されたCROSS2016に参加してきた様子についてレポートいたします!
CROSS2016は2012年から続く国内最大級のWeb系勉強会で、最新の技術や普段聞くことができない踏み込んだ内容をトークショー形式で聞くことができます
セッション以外にも、「技術力の低い人限定ロボコンMini(通称:ミニヘボコン)」や「なつかしメディア射的」など遊び心溢れる出店もあって、セッションの合間の時間も楽しむことができます
本日、エンジニアサポート #cross2016 にミニヘボコンと懐かしメディア射的で出店中です。射的は12時から! pic.twitter.com/RhQvbs0wa5
— デイリーポータルZ編集部 (@dailyportalz) 2016, 2月 5
セッションレポート
CROSS2016では、A〜E会場まで分かれていて同時並行にセッションが行われます。なので、見に行きたいセッションの時間が被っている場合は、どれか1つのセッションを選ばないといけません!
悩みに悩んで、自分は以下のセッションに参加しました!
後になって気づいたのですが、各セッションの様子はアーカイブ動画として上がっていますので、興味がある人は公式HPよりご覧ください
その中でも特に印象的だったセッションについて、1つ簡単にレポート致します!
A会場(11:20-12:40) 今こそRDBの時代だ!・・いや待て、その前に~最近のRDB四方山話
このセッションでは、RDBの今昔から今後どのように進化していくのかということを論じる内容となっていました
DB処理ができるCPUチップ SPARC M7とは?!
SPARC M7はオラクルが時期プロセッサとして開発されたもので、CPU自体が暗号化処理を行ったり、インメモリクエリ高速エンジンを積んでいるので、DBとして使うことができます。コア数が32で、従来のプロセッサに対して、3倍前後性能が向上するらしいです
ただし、現在はSolaris上でしか動かないとのことなので、今後は他のOSでも動作することが期待されます
MySQL 5.7からデータ型としてJSONが登場!?
2015年10月にMySQL 5.7の正式版がリリースされ、追加された新機能の1つに保存できるデータ型としてJSON型が追加されました!これによって、今までWebサーバー側で行っていたパースのような作業を必要とせず、MySQLにそのまま保存することができるというメリットがあります
ただし、このJSON型の導入について、受け取ったJSONをそのまま保存できることができる反面、保存されたJSONに対して、ソートやインデックスを貼って手続き型のような使い方をするとRDBという本来の意味からは外れてしまうことなどの問題点があげられます
JSON型の適度な使用については便利であるという見解がある一方、RDBに対してJSON型の過度な使い方に対しては、注意が必要みたいです
RDBは今後どのように進化していくか??
データの保存方法にはRDBという選択肢だけではなく、適材適所でパフォーマンスを一番発揮できるような構成にすることが大事です。そこで、今後異なるデータの処理を一括したインターフェースで扱えるようにできたり、スキーマの変更が容易に行える方向に進んでいくのでは無いだろうかという意見もありました
セッションレポートまとめ
このセッションを通じて、現在開発中の機能や最前線で活躍する人々がDBに関する現状に対してどのように感じているのかということを知ることができて、とても良い機会になりました
自分の設計においても、適材適所な技術の選定を心がけ、今後開発していくための1つの指針となるようなセッションでした
MySQL 5.7のJSON型使ってみた!
セッションの中で紹介されていたMySQL5.7のJSON型について興味があったので、少し触ってみました!
MySQL5.7のJSONに関する公式のドキュメントはこちらで確認することができます
JSON型は内部的にバイナリとして管理され、JSONの入れ子構造や配列に対してインデックスで検索するなどの最適化がされています。したがって、JSONを文字列として保存することもできますが、JSON型として扱うことでパフォーマンスの向上が期待されます
データの保存・取得
実際にMySQL5.7をインストールして使ってみます
テーブルの作製
JSONを保存する場合、テーブル作製時にデータ型としてJSONを指定します
mysql> CREATE TABLE t1 (json JSON); Query OK, 0 rows affected (0.03 sec)
データの保存
MySQL5.7の中で認識されるJSONには配列とオブジェクトがあり、JSONの構文が間違っている場合は保存されません
mysql> INSERT INTO t1 VALUES ('{"key1": "value1", "key2": "value2"}'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO t1 VALUES('[1, 2, "a"]'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO t1 VALUES('{1}'); ERROR 3140 (22032): Invalid JSON text: "Missing a name for object member." at position 1 in value (or column) '{1}'. mysql> SELECT * FROM t1; +--------------------------------------+ | jdoc | +--------------------------------------+ | {"key1": "value1", "key2": "value2"} | | [1, 2, "a"] | +--------------------------------------+
また、JSONを結合したり、値を取り出して出力するJSONを整形するためのメソッドも用意されていて、柔軟に扱うこともできます
mysql> SELECT JSON_MERGE('[10, 20]', '{"a": "x", "b": "y"}'); +------------------------------------------------+ | JSON_MERGE('[10, 20]', '{"a": "x", "b": "y"}') | +------------------------------------------------+ | [10, 20, {"a": "x", "b": "y"}] | +------------------------------------------------+ mysql> SELECT JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name'); +---------------------------------------------------------+ | JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name') | +---------------------------------------------------------+ | "Aztalan" | +---------------------------------------------------------+
これらを用いるとRDBにJSONデータを保存しておいて、パースして値を取り出すこともできます
サンプルとして、JSONデータを保存しておいて、特定のカラムについてのデータだけ取り出してみました。SQLで簡単に特定のカラムについてのみ取り出すことが可能です
mysql> SELECT JSON_EXTRACT(json, "$.title"), JSON_EXTRACT(json, "$.link") FROM t1; +--------------------------------------------------------------------------------------+--------------------------------------------------------------+ | JSON_EXTRACT(json, "$.title") | JSON_EXTRACT(json, "$.link") | +--------------------------------------------------------------------------------------+--------------------------------------------------------------+ | "スキルウェンズデー 2016/01/27 開催分まとめ - CyberZ公式エン..." | "http://engineer-blog.cyber-z.co.jp/entry/2016/02/12/154152" | | "Scala Matsuri 2016でLTをやってきました。 #ScalaMatsuri - CyberZ公式..." | "http://engineer-blog.cyber-z.co.jp/entry/2016/02/03/192250" | | "1ヶ月で本番Hadoopクラスタ2つのメジャーアップグレード ~検..." | "http://engineer-blog.cyber-z.co.jp/entry/2015/12/18/190115" | | "スキルウェンズデー 2015/11/25 開催分まとめ - CyberZ公式エン..." | "http://engineer-blog.cyber-z.co.jp/entry/2015/12/01/135502" | | "HiveとImpalaにワークフロースケジューラーに入れてみた(前..." | "http://engineer-blog.cyber-z.co.jp/entry/2015/11/12/100000" | +--------------------------------------------------------------------------------------+--------------------------------------------------------------+
JSON型使ってみた感想
ちょっとだけ使ってみた感想として、保存されたJSONデータに対してSQLで操作することができるので、apiレスポンスなどのログ情報をjsonとしてそのまま保存しておいて、指定された条件の値を取り出すときには便利だと思いました
ただ便利になった一方、JSON型に対応したORMだったり、RDBの概念としてJSONをどう使うか、設計上の部分でまだまだ確立されていない部分も多いと思うので、本当にMySQLにJSONを保存しておくべきなのかどうなのかというところから検討する必要もあるかと思います
アンカンファレンス
フリーなトークテーマで発表を行うアンカンファレンスでは、弊社エンジニアとして上原さん、重村さんのお二方が発表いたしました!
「Terraformの始め方」登壇者:上原
そもそもTerraformとはなんのか、簡単な導入例を通してTerraformのメリット・デメリットについて紹介する内容のプレゼンでした。インフラの最新情報に関して疎い自分にとっては、技術動向を知るきっかけになり、また一つ勉強になりました。
「フリーター、webエンジニアになる」 登壇者:重村
「フリーター、webエンジニアになる」というなかなかキャッチーなテーマで、重村さん自身の経歴となぜエンジニアになったのかという人生を振り返る内容のプレゼンでした。生々しい実体験をもとに自分の道は自分で切り開くという熱い人生の話で、何をやるにも遅すぎることはなく、諦めずに努力を重ねると新たな道がひらけるというメッセージ性の強い内容だと自分は感じました
まとめ
平日にも関わらず多くの人が集まり、Webだけにとどまらず多種多様なコンテンツが集まっていて、まさにいろんな技術がCROSSした勉強会となっていました!
普段触れている技術だけではなく、幅広い分野の情報と接することで、新しい刺激を得ることができた満足の1日でした
以上、石橋がお届けしました!