最新の技術はこれだ!Technology Radarによる技術トレンド調査
@takkyです。
前回の記事で@yamatoが社内勉強会についての記事を執筆していました。
今回は勉強会の1つであるTeam TechRaderで、TECHNOLOGY RADAR NOV'16の共有会を行ったので、
結果を報告したいと思います。
TECHNOLOGY RADARとは
TECHNOLOGY RADERとはThoughtWorks社が発表している技術トレンド分析の調査結果になります。 年1-2回発表しており、2016年は4月と11月に発表されました。
ユニークな点は、技術トレンドの分析を
Techniques(開発手法) / Tools(ツール) / Platforms (プラットフォーム) / Languages & Frameworks(言語とフレームワーク)
の4分野に分けているところです。
また、評価結果も ADOPT / TRIAL / ASSESS / HOLDの4つに分けているところです。
- ADOPT : プロジェクトにマッチするならば、採用を強くおすすめしている。
- TRIAL : プロジェクトでリスクを管理できればやる価値はある。
- ASSESS: どのような影響をあたえるか理解するために採用するときがある。(今後のために採用するときがある)
- HOLD : 採用する場合は慎重に進める必要がある。
分野や評価結果については以下記事が詳しく書かれていますので、合わせて読むと理解が深まります。
今回は NOV'16を8人で調査したので調査結果を共有します。
また、数が多いため本記事ではADOPTとして取り上げられていた技術について紹介したいと思います
(紹介する内容は調査時の各人のコメントとなっています。)
Techniques
consumer-driven contract testing
- マイクロサービスでのテスト設計のデザインパターン。
- ある機能の供給アプリ、利用アプリのインタフェース仕様を、利用者側から規約としてコード化、そのコードをテストする考え方。
- ツール的にはPactがある。
Pipeline as code
- デプロイパイプラインはツールでなく、コードで定義しよう。
- LambdaCD, GoCD, Concourseでこのテクニックが使えるよ。
Threat Modeling
- 2004年にMicrosoft発祥
- システムの初期設計時点から、どんな攻撃をどのぐらいの頻度でどこにどう受けて、影響度はどのぐらいか、を整理しておく開発プロセス
- 整理してあれば実装フェーズでどのツールで何を守れて何が守れない、等が一目瞭然になる。
Tools
Babel
- ES6,7のソースをES5に変換してくれるコンパイラ。
- これによりES6,7に対応していないブラウザに対応できる。
consul
- Hasicorp(Vagrantとか出しているところ)のツール。
- DNSとHTTPSベースでヘルスチェックなどが出来るツール。
- Consulテンプレートを使うとmod_proxyを利用したクライアントのロードバランサーが簡単に作成できるようになる。
- DockerとConsulを組み合わせて設定を簡単にできる
Grafana
- 様々なソースのデータをダッシュボード化出来るツール。kibanaに似ている。
- 時間軸を同期してくれるのが特徴
Packer
Platforms
Docker
HSTS
- 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
- クライアントサイドMVCフレームワークのひとつ。
- Handlebarsというテンプレート言語を利用してTemplateを技術する。
- TemplateとModelはバインディングされており、Modelのプロパティを変更することによりTemplateは再レンダリングされ、Template(HTML) が変更されるとModelのプロパティが変更される。このため、GUIアプリケーションを構築している時に記述しなければならない、変更イベントの多くを省略できる。
React.js
- Facebook製のViewライブラリ。
- Stateと呼ばれる状態を管理するオブジェクトがあり、Stateを更新するとDOMを再レンダリングする。
- 再レンダリング時には、Virtual DOMという機能を利用して行われる。
- DOMを完全に破棄せずに更新のあった個所のみを切り替えることができる。
- React.jsを使用することにより、DOMのライフサイクルを管理できる。
- 一方通行のデータフローのアーキテクチャ「Flux」を実現しやすいライブラリ。
Redux
- ReactがDOMの管理を解決したが、state(状態)の管理は開発者に委ねられたままなので、Reduxはそこを解決するためのフレームワークである(=stateを管理するライブラリ)。
- ReactではデータフローにFluxを提案しているが、ReduxはFluxの概念を拡張してより扱いやすく設計されている。
- React以外にもAngularJSやjQueryなどと併せて使用することもできる(Reactと使用するのが一番相性がいい)。
Spring Boot
- Spring Frameworkで簡単にアプリケーションを作るためのプラットフォーム。
- Spring frameworkは巨大化したJ2EEへのアンチテーゼとして登場したが、時間が経つにつれJ2EE以上に肥大化した。それをコンパクトにしたのが、Spring Boot。
まとめ
いかがでしたか?
今回はADOPTとして取り上げられている14個について紹介をしました。
DockerやReact.jsのように弊社でも一部プロジェクトで取り入れている技術もありますし、
consulやpackerなど導入を考えたい技術もありました。
トレンドを抑えているだけあって、TECHNOLOGY RADARで紹介されている技術は今すぐ取り入れたいものが多かったです。
TRIALも含め調査して、今後の技術採用の一つの情報源として上手く使用していきたいですね。