オールアバウトTech Blog

株式会社オールアバウトのエンジニアブログです。

最新の技術はこれだ!Technology Radarによる技術トレンド調査

@takkyです。

前回の記事で@yamatoが社内勉強会についての記事を執筆していました。

allabout-tech.hatenablog.com

今回は勉強会の1つであるTeam TechRaderで、TECHNOLOGY RADAR NOV'16の共有会を行ったので、
結果を報告したいと思います。

TECHNOLOGY RADARとは

www.thoughtworks.com

TECHNOLOGY RADERとはThoughtWorks社が発表している技術トレンド分析の調査結果になります。 年1-2回発表しており、2016年は4月と11月に発表されました。

ユニークな点は、技術トレンドの分析を
Techniques(開発手法) / Tools(ツール) / Platforms (プラットフォーム) / Languages & Frameworks(言語とフレームワーク)
の4分野に分けているところです。
また、評価結果も ADOPT / TRIAL / ASSESS / HOLDの4つに分けているところです。

  • ADOPT : プロジェクトにマッチするならば、採用を強くおすすめしている。
  • TRIAL : プロジェクトでリスクを管理できればやる価値はある。
  • ASSESS: どのような影響をあたえるか理解するために採用するときがある。(今後のために採用するときがある)
  • HOLD : 採用する場合は慎重に進める必要がある。

分野や評価結果については以下記事が詳しく書かれていますので、合わせて読むと理解が深まります。

dev.classmethod.jp

今回は NOV'16を8人で調査したので調査結果を共有します。
また、数が多いため本記事ではADOPTとして取り上げられていた技術について紹介したいと思います
(紹介する内容は調査時の各人のコメントとなっています。)

Techniques

consumer-driven contract testing

  • マイクロサービスでのテスト設計のデザインパターン
  • ある機能の供給アプリ、利用アプリのインタフェース仕様を、利用者側から規約としてコード化、そのコードをテストする考え方。
  • ツール的にはPactがある。

Pipeline as code

  • デプロイパイプラインはツールでなく、コードで定義しよう。
  • LambdaCD, GoCD, Concourseでこのテクニックが使えるよ。

Threat Modeling

  • 2004年にMicrosoft発祥
  • システムの初期設計時点から、どんな攻撃をどのぐらいの頻度でどこにどう受けて、影響度はどのぐらいか、を整理しておく開発プロセス
  • 整理してあれば実装フェーズでどのツールで何を守れて何が守れない、等が一目瞭然になる。

Tools

Babel

babeljs.io

  • ES6,7のソースをES5に変換してくれるコンパイラ
  • これによりES6,7に対応していないブラウザに対応できる。

consul

www.consul.io

  • Hasicorp(Vagrantとか出しているところ)のツール。
  • DNSHTTPSベースでヘルスチェックなどが出来るツール。
  • Consulテンプレートを使うとmod_proxyを利用したクライアントのロードバランサーが簡単に作成できるようになる。
  • DockerとConsulを組み合わせて設定を簡単にできる

Grafana

grafana.org

  • 様々なソースのデータをダッシュボード化出来るツール。kibanaに似ている。
  • 時間軸を同期してくれるのが特徴

Packer

www.packer.io

  • Hasicorpのツール
  • AWSなどのマシン・イメージに関する作業を単純化できる
  • Packer用のテンプレートファイルで管理する

Platforms

Docker

www.docker.com

  • Linux名前空間とcgroupsを用いて、通常のプロセスにOSのような実行環境を構築する。
  • あくまで通常のプロセスなので、軽量。
  • アプリケーションとその実行環境を含めた管理を容易にする。

HSTS

developer.mozilla.org

  • TrialからAdoptになった。
  • HTTP Strict Transport Securityの略。
  • 一般的にhttps化する際にhttp→httpsへのリダイレクトをする事が多い。
  • ただし、httpが残っているとダウングレード攻撃等のリスクが増える。
  • HTTPレスポンスのヘッダーにHSTSのヘッダーを追加することで、ブラウザにSSL対応済みだと記憶させ、常にhttpsにアクセスするようにすることができる。
  • あるプロジェクトのhttps化の際に導入したが、GCPのLBのヘルスチェックが検証時点(2016/11)でhttpしか対応していないため、無限ループになってしまう問題があった。

Linux security modules

  • SELinuxをはじめとするLinuxのセキュリティを高める為のモジュール群
  • 基本的にはホワイトリスト形式のアクセス管理。
  • Grsecurityが利用できるようになったので、注目を集めている。
  • sysctlで制御できる。

Language & Frameworks

Ember.js

emberjs.com

  • クライアントサイドMVCフレームワークのひとつ。
  • Handlebarsというテンプレート言語を利用してTemplateを技術する。
  • TemplateとModelはバインディングされており、Modelのプロパティを変更することによりTemplateは再レンダリングされ、Template(HTML) が変更されるとModelのプロパティが変更される。このため、GUIアプリケーションを構築している時に記述しなければならない、変更イベントの多くを省略できる。

React.js

facebook.github.io

  • Facebook製のViewライブラリ。
  • Stateと呼ばれる状態を管理するオブジェクトがあり、Stateを更新するとDOMを再レンダリングする。
  • レンダリング時には、Virtual DOMという機能を利用して行われる。
  • DOMを完全に破棄せずに更新のあった個所のみを切り替えることができる。
  • React.jsを使用することにより、DOMのライフサイクルを管理できる。
  • 一方通行のデータフローのアーキテクチャ「Flux」を実現しやすいライブラリ。

Redux

Read Me · Redux

  • ReactがDOMの管理を解決したが、state(状態)の管理は開発者に委ねられたままなので、Reduxはそこを解決するためのフレームワークである(=stateを管理するライブラリ)。
  • ReactではデータフローにFluxを提案しているが、ReduxはFluxの概念を拡張してより扱いやすく設計されている。
  • React以外にもAngularJSやjQueryなどと併せて使用することもできる(Reactと使用するのが一番相性がいい)。

Spring Boot

Spring Boot

  • Spring Frameworkで簡単にアプリケーションを作るためのプラットフォーム。
  • Spring frameworkは巨大化したJ2EEへのアンチテーゼとして登場したが、時間が経つにつれJ2EE以上に肥大化した。それをコンパクトにしたのが、Spring Boot。

まとめ

いかがでしたか?
今回はADOPTとして取り上げられている14個について紹介をしました。
DockerやReact.jsのように弊社でも一部プロジェクトで取り入れている技術もありますし、
consulやpackerなど導入を考えたい技術もありました。

トレンドを抑えているだけあって、TECHNOLOGY RADARで紹介されている技術は今すぐ取り入れたいものが多かったです。
TRIALも含め調査して、今後の技術採用の一つの情報源として上手く使用していきたいですね。