23
2015 6 10 Slide 1 深読み業界トレンド 深読み業界トレンド 中村正三郎 http://iiyu.asablo.jp/ https://twitter.com/shownakamura 門司のじーも君 アンテナハウス株式会社 http://www.antenna.co.jp/

Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 1深読み業界トレンド

       深読み業界トレンド

中村正三郎http://iiyu.asablo.jp/

https://twitter.com/shownakamura

門司のじーも君

アンテナハウス株式会社http://www.antenna.co.jp/

Page 2: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 2深読み業界トレンド

ウェブは LAMPからMEANへ

2000 年代は LAMP LAMP=Linux+Apache+MySQL+PHP 2010 年代は MEAN MEAN=MongDB+Express+AngularJS+Node.js 単一言語 JavaScript で全部書いてしまおう!

Page 3: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 3深読み業界トレンド

MEAN登場の背景その1

JavaScript 全盛時代へ

JavaScript は、どこにでもある

クライアント ( ブラウザ ) にもサーバにもある

劇的に実行スピードが速くなった (Chrome V8) サーバ、クライアントでいくつものプログラミング言語を使うのは面倒

Page 4: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 4深読み業界トレンド

MEAN登場の背景その2

JavaScript は 2010 年代のアセンブラ

1980 年代は、 C へコンパイル

C++, Kyoto Common Lisp 2000 年代は、 Java 仮想マシンのバイトコードへ

Scala, Clojure, JRuby, JPython 2010 年代は、 JavaScript へコンパイル

CoffeeScript, TypeScript, ClojureScript, Scala.js など多数

Page 5: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 5深読み業界トレンド

MEAN登場の背景その 3

C10K 問題 ( クライアント1万台接続問題 ) 極力、ページ遷移がない UI/UX がほしい

データのリアルタイム更新が必要

株価やニュースほか、 Twitter のツイートやらSNS 系は特に

ウェブアプリ向けプログラミング言語多すぎ

クライアント ( フロントエンド ) とサーバ ( バックエンドで ) 多くの言語を使いわけるのが大変

多くの言語を書ける奴がなかないない

1つの言語で書けないのか

Page 6: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 6深読み業界トレンド

MEANの目指すもの

JavaScript で、ネットと DB 対応のデスクトップアプリを作る

非同期 I/O で、 C10K 問題を解決

クライアントもサーバも JavaScript で全部書く

やり取りするデータも JSON(Java Script Object Notation)

SPA(Singple-Page Application) ページ遷移を極力しない ページのあちこちを部分的にリアルタイム更新

Page 7: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 7深読み業界トレンド

MEANと従来との違い その1 従来

ユーザがデータ入力して、サーバにページ内のデータを全部送る。

サーバは、 DB を検索したりして、 HTML のページ全体を生成

クライアント ( ブラウザ ) がそれを表示

サーバが、ほとんどやってしまう

Page 8: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 8深読み業界トレンド

MEANと従来との違い その2 MEAN/SPA

ユーザがデータ入力、サーバの API に REST でアクセス・更新

サーバの API は、 DB を検索したりして、データをJSON で返す

Socket.io(WebSocket の JavaScript) でリアルタイム更新

クライアント ( ブラウザ ) は、受け取ったデータでページの一部を更新

クライアントが主導権を持つ

Page 9: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 9深読み業界トレンド

MEANと従来との違い その3

昔からある、クライアントとサーバの力のバランスがいったりきたりする歴史の繰り返しの1つ

サーバは、 DB 処理、データ、計算パワーを提供する API 群 (RESTful なAPI)

クライアントで、多くのロジック処理、データ更新、レンダリング

往年のクラウアント・サーバ方式 (C/S) の復活

C/S をウェブ技術で再発明

Page 10: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 10深読み業界トレンド

その他のキーワード

直接、 MEAN を特徴づけるものではないが、 MEAN/SPA 界隈で出てくるキーワード

レスポンシブル (responsible) いろんなサイズの端末 (PC, スマホ、タブレット )に1つのコードで対応

CSS3 を駆使

リアクティブ (reactive) 懐かしのデータフローアーキテクチャーを、今風に言い換えたものにみえる。並列分散メカニズムのウェブ的再発明

FRP(Functional Reactive Programming) も登場

Page 11: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 11深読み業界トレンド

MEANの各要素の概要 その1

Node.js MEAN すべての基盤

ライブラリとしても、エコシステムの土台としても

非同期 IO で、C10K 問題 ( クライアント 1 万台接続問題 ) を解決

Express Node.js の上に作られたライブラリ

抽象度を上げて使いやすくしたもの

Page 12: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 12深読み業界トレンド

MEANの各要素の概要 その2

AngularJS クライアントのビューと動作を記述

MVC アーキテクチャ (Model-View-Controller) 双方向データバインディグ

モデルが変化したらリアルタイムでビューをレンダリング

モデルの変化 ( データを追加 ) でビューが変わる

例 HTML 上の表が変化

ビューの変化でモデルもアップデート 例 フォームにフィールドに値を入れるとでモデルが変化

Page 13: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 13深読み業界トレンド

MEANの各要素の概要 その3

MongoDB ドキュメント指向 DB いわゆるNoSQL の1つ。 RDB ではない

データは、BSON( バイナリ JSON) で格納

JSON, JavaScript と親和性高い

ドキュメントモデル 複雑なリレーションを単純化できる

データモデル ( スキーマ ) の見通しがいい

トランザクションがない

Page 14: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 14深読み業界トレンド

MEANのアーキテクチャ 出展What Developers Mean When They Build a MEAN Stack

Page 15: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 15深読み業界トレンド

ビューは戦国時代

軽量なものから重厚なものまで百花繚乱

AngularJS は、がっちりした作りで手軽ではない

大規模向けじゃない、お手軽なライブラリがほしい

MVC/MVVM など百花繚乱

MVC以外のやり方もあるだろう

MVVM(Model-View-ViewModel) を採用するものも

例 Vue.js  実演

将来的には、 Web Components か

ビューの部品の標準仕様

実装 Polymer.js

Page 16: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 16深読み業界トレンド

MEANの欠点、短所 その1

いろんな JavaScript ライブラリの寄せ集め

ライブラリ間、バージョン間の非互換

百花繚乱 ( 特にビュー ) で、安定、成熟にはほど遠い

オールインワンのフレームワーク

Meteor, hapi, Sails.js

Page 17: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 17深読み業界トレンド

MEANの欠点、短所 その2

クライアント・サーバの欠点はそのまま?

TCO(所有コスト ) 、メンテナンスコストは?

ファットサーバ、シンクライアントは単純 パワフルなサーバで好きなようにやれた ロジックもサーバに集中

MEAN は、クライアントとサーバにロジックが分散

複雑になってメンテ、拡張が困難になる

Page 18: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 18深読み業界トレンド

MEAN参考文献

実践Node.js プログラミング

原書は、第2版がMEAP 。 2016 年初め完成予定 アマゾンへ

MongoDB イン・アクション

原書は、第2版電子書籍完成 (2015 年 5 月 ) アマゾンへ

シングルページ Web アプリケーション アマゾンへ

AngularJS はあまりいい日本語版がない。英語では大量に出ているが、まだ翻訳されてない。

Page 19: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 19深読み業界トレンド

MEAN関連リンク

MEAN.IO MEAN.JS MEANスタックで始めるWebアプリ開発入門

MEANスタックが優れている理由

LAMPに代わる構成として注目のMEANスタック

今流行りの「MEANスタック」についてまとめ

雑把の UI アーキテクチャー史(MVCからMVVMへ)

Page 20: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 20深読み業界トレンド

JavaScript忍者になるには

特に面白かったので、ピックアップ

ジョン・レシグ , ベア・ビボー著 , 吉川 邦夫訳「 JavaScript Ninja の極意」

関数を制する者は、 JavaScript を制す

攻殻機動隊など日本のアニメ好き

原書は、第2版のMEAP がはじまったばかり。 2016 年初め完成予定

アマゾンへ

原書

Page 21: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 21深読み業界トレンド

JavaScript参考文献

JavaScript 第 6版 アマゾンへ

JavaScript リファレンス 第 6版 アマゾンへ

JavaScript クックブック アマゾンへ

JavaScript Ninja の極意 アマゾンへ

コア jQuery+プラグイン /jQuery UI 開発実践技法

アマゾンへ

Page 22: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 22深読み業界トレンド

JavaScript参考文献2

JavaScript デザインパターン アマゾンへ

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

アマゾンへ

メンテナブル JavaScript ― 読みやすく保守しやすい JavaScript コードのための作法

アマゾンへ

JavaScript パターン ―優れたアプリケーションのための作法

アマゾンへ

Page 23: Slide 1 深読み業界トレンドki4s-nkmr/Q-Univ-2017/trend-2015.pdf · 2015年6月10日 Slide 7 深読み業界トレンド MEAN と従来との違い その1 従来 ユーザがデータ入力して、サーバにページ内のデー

2015年 6月 10日 Slide 23深読み業界トレンド

JavaScript関連リンク

JavaScript忍者、 JavaScript ジェダイになりたいなら、これを読め!「 JavaScript Ninja の極意」

ブログへ

入門 モダン JavaScript, Node クックブック。 Node.js のこと。

ブログへ

Backbone.jsガイドブック ブログへ

メンテナブル JavaScript, JavaScript は 2010 年代のアセンブラ。 CoffeeScript, ClojureScript

ブログへ