オールアバウトTech Blog

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

新卒入社してから投稿し続けたQiita:Teamの日報を可視化してみた

f:id:allabout-techblog:20170315142553p:plain

Switchで筋肉痛になりました。@amymdです。

2016年度入社の新卒エンジニアが記事を投稿する連載企画!

ということで、今回は2本目の記事を、2016年度入社の開発エンジニアである@amymdが投稿いたします。 よろしくお願いいたします!

はじめに

突然ですが、みなさんは日報を書いていますか?
自分は2016年4月にオールアバウトに入社したのですが、配属された5月から12月28日まで、社内のQiita:Teamに日報を投稿し続けていました。

f:id:allabout-techblog:20170321163453p:plain:w500

せっかく書き続けたこの日報を、何かの役に立てたい……と思い、今回はこの約8ヶ月間書き続けた日報のデータをテキストマイニング等で分析してみて、この一年間の振り返りをしてみたいと思います。

続きを読む

【新卒応援】Macを手に取ったらまず入れるべき業務効率化ツール5選

今週から、オールアバウトで一年間働いてきた新卒エンジニアが投稿する連載企画
「テックブログ新卒週間」を始めます!
f:id:allabout-techblog:20170314092153p:plain 今回は3本連載のうちの一本目、2016年度入社 開発エンジニアのTKKが投稿をさせていただきます。 よろしくお願いいたします!

はじめに

社会人になり、PCの買い替えや会社からの貸与によって、初めてMac端末に触れる方は多いのではないでしょうか。 かくいう自分も、そんな一人。Macを受けとったものの最初はどんなソフトウェアから入れればいいのかわからず、苦労しました💦
そんな苦労から得た、実際に業務に役立った「まずは入れるべき業務効率化ツール」を5つご紹介します。 自分と同じ境遇の方々の力になれれば幸いです。

Spectacle

https://www.spectacleapp.com/

概要

ショートカットキーで各ウィンドウの移動、サイズ調整ができる

f:id:allabout-techblog:20170314092205g:plain

オススメポイント

キーボード操作のみでウィンドウの移動やサイズ調整ができます。
サイズ調整は「フルスクリーン、2/3、1/2、1/3」と微調整が効くので嬉しいですね。
また、このアプリはサブディスプレイ間での位置移動が可能です!

アプリ間移動を行なうショートカットキー[command+tab]と組み合わせて使えば
ひらき放題になったウィンドウもキー操作のみで素早く整理することができますよ。

続きを読む

グラフDBのNeo4jでカフェのレコメンド機能を実験してみた

お世話になります。オールアバウトのsutchanです。
今回は、"Neo4j“というグラフデータベースを触って遊んでみた話をしたいと思います。

Neo4j(グラフデータベース)とは

まず、グラフデータベースとはなんぞやという話から。 グラフデータベースはグラフ構造を持ったデータを扱うのに特化したデータベースです。 グラフ構造は、電車の経路やSNSソーシャルグラフ、ドラマの人物相関図のようなものと言えば、イメージしやすいかもしれません。 図にあるように、グラフデータベースは、データの実体であるNodeと、それらをつなぐRelationで構成されていることがわかります。 NodeとRelationには、Property(Key-Value形式の付加情報)も付けることができます。 グラフデータベースは、その特徴から、電車の乗換案内や地図アプリの経路探索、SNSの「知り合いかも?」など、レコメンド機能によく使われているそうです。

f:id:allabout-techblog:20170222174934p:plain

では、このNeo4jを使ってどう遊ぶのか…… 今回は、弊社のスマホアプリ「CafeSnap」を題材に、 自分におすすめのカフェを推薦する機能(= カフェレコメンド機能)を実現する ことを目指して、Neo4jで遊んでみます!

続きを読む

最新の技術はこれだ!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も含め調査して、今後の技術採用の一つの情報源として上手く使用していきたいですね。  

機械学習、React + Flux、Pepperなど、オールアバウトの社内勉強会をご紹介

こんにちは、yamatoです。
オールアバウトには現在30人くらいエンジニア社員が居るのですが、社内での勉強会がどんどん活発に行われるようになってきています。

f:id:allabout-techblog:20170120112426j:plain

勉強会をやる意義

  • スキルアップ
    エンジニアを取り巻く環境は常に変化しているので、常に学んでスキルを伸ばしていくことはとても重要です。
    エンジニアとして様々な引き出しを持っておくことは、会社の事業にも活きると思います。
    また、弊社のビジョンでは個人の「自立」を謳っており、社員もそういった意識で向上心を持って仕事に取り組んでいます。
  • 業務で使う新技術の啓蒙活動
    採用したい技術があるが、チームメンバーのスキルが追いついていない場合、きちんと教育を行う必要があります。
    そのために勉強会を行う場合もあります。

上記のような意義がありますが、ポイントは一人でなく複数人で行うことで挫折せずに継続できるというところだと思います。

オールアバウトで行われている勉強会

全体ワークショップは部で公式に運用しているものですが、それ以外のものは必要に応じてメンバーが自発的に始めた「野良勉強会」です。

続きを読む