アイスタイルを支える技術2019

こんにちは。メディア開発統括部のshiratahです。
最近は、新規サービスのサーバーサイドの開発を担当してます。

アイスタイルには、化粧品クチコミサイト@cosmeを中心とした、様々なサービスが開発、運用されています。

社外の人からアイスタイルってどんな技術使っているんですか?と聞かれた時に、うーん、よくわからん!wと答えてしまうことが多いので、社内で利用されている技術をアンケート調査結果をもとに、まとめてみました。

技術分野ごとに紹介していきます。
2019年4月19日現在の調査結果です。

ちなみに、このアンケートの回答率は約85%でした。
お忙しい中ご協力いただいたみなさんありがとうございました。

フロントエンド

言語

ほとんどのプロジェクトで、ES6が採用されています。

一部、昔からあるサービスでは未だにES5以前のJavascriptも使われています。

MakeupAlley(アイスタイルのグループ会社)のプロジェクトでは、Typescript + Angular.jsが採用されていますが、アイスタイル本社ではまだフロントエンドにTypescriptは使っていません。

フレームワーク

アイスタイルでは、多くのプロジェクトでVue.jsを採用しています。
Vue Fes Japan2019にブースを出展します!!ぜひ遊びに来てください!
一部プロジェクトでWeb component, Angular, Reactも使われていますが、そこまでメジャーではないです。

その他

Vue製の主要コンポーネントでは、エンジニア、デザイナー共に開発や確認がしやすいようにstorybookが導入されています。

アトミックデザインの導入事例もあるので、興味のある方はこちらスライドをご覧ください!

バックエンド

言語

圧倒的PHP率
45%のプロジェクトで、PHPが採用されています。
@cosmeや他のサービスがPHPで作られていることから、社内にPHPのナレッジを持つ人が多いため、よくPHPが採用されています。

次いで、JavaとGolangが使われています。

社内でGoの導入事例が増えてきたので、Slackのgolangチャンネルがいつも盛り上がっています。

一部のチームでは、Scalaの導入も増えてきています。

フレームワーク

アイスタイルと言えば、Laravelですね?

今年の2月に行われたLaravelJPカンファレンスにスポンサーとして出資しています。(CTOの竹澤さんが実行委員長でした)

【奇跡のConference】Laravel Jp Conference を満喫してきたのでレポート書いてく

シンプルにAPI開発ができることから、goaを採用するプロジェクトも増えています。

ちなみに、@cosmeはZendFrameworkで作られています。

その他

  • DDD(Domain Driven Design)
  • Elasticsearch
  • Kafka Streams
  • Spark Streaming
  • Spark SQL
  • Lambda Architecture
  • HAL+JSON
  • Docker

アプリ

iOSチームとAndroidチームの2チームに分かれています。
アプリ用のGatewayはアプリチームの中で作ることがほとんどです。そのため、アプリチームにもGoが書ける人がチラホラいます

iOS

言語      Swift
フレームワーク RxSwift
その他ライブラリ・アーキテクチャ Clean Architecture, MVVM, Alamofire, SDWebImage, Carthage, SwiftLint, fastlane, DeployGate, Firebase, Repro

Android

Androidチームでは、JavaとKotlin両方使われています。
新規機能追加の際は、基本的にKotlinを使っていますが、まだまだJavaのコードも残っています。

言語      Java, kotlin
フレームワーク RxJava
その他ライブラリ・アーキテクチャ Room, DeployGate, Dagger2, Retrofit2, Picasso, fastlane, Firebase, Repro

インフラ

最近クラウドインフラ始めました。
オンプレとクラウドの双方の長所を組み合わせて使うハイブリッドクラウド構成です。

自社サービスのマイクロサービス化に伴い、コンテナ化を推進しています。

       
IaaS AWS、GCP
PaaS BigQuery
SaaS Vaddy、CuentoteFC
Caas Kubernetes(RancherOS)
OS CentOS、Windows、Server、Ubuntu、AmazonLinux
仮想化 VMWare
構成管理 Ansible、Terraform、Chef、Serverspec
CDN Cloudfront
Web/AP nginx、Apache、Tomcat
キャッシュ memcached、couchbase、redis
データベース SQL Server、MySQL、RDS Aurora MySQL、PostgreSQL
ログコレクター td-agent
監視 Zabbix、CloudWatch、nagios、cacti
キュー RabbidMQ      
メッセージングミドルウェア Kafka 系
データマート Hadoop / cloudera
ジョブ管理 Rundeck

技術開発(R&D部)

アイスタイルでも技術開発(R&D)をする部があります。

最近では弊社の大量にあるデータをHadoopに投入し、機械学習を利用することでレコメンドに役立てるための仕組みを作ったり、全社的に利用される基盤アプリケーション(画像投稿プラットフォーム)のリプレイス、他にもWebページの表示速度を向上させるための取り組みを行っています。

巨大化していくアプリケーションを効率的に保守していくためには、新しいアーキテクチャの採用などが必要です。R&D部では積極的に新しい言語やミドルウェアなどを選定・採用し、全社的にナレッジを共有できるように努めています。

データ分析基盤 機械学習
言語 Scala Python
ミドルウェア Apache Kafka
Apache Spark
Apache Hadoop
Apache Spark
Apache Hadoop
監視 Grafana

デザイン

デザイナーさんには、普段使用しているツールを聞いてみました。
合計の回答件数が12件なので、アイスタイルに在籍しているデザイナーの約3分の1の方に回答を頂きました。

グラフィックデザイン

Illustoratorがダントツ!次いで、Photoshop
安定のAdobeですね

ワイヤーフレーム、モック

アイスタイルでは、よくCaccoを使って、ワイヤーフレームやモックを作成しています。
最近はSketchもよく見ます。

企画や事業部などを含めたミーティングではよくCaccoを見ながら議論を進めることが多いです。

プロトタイピング

Prott、Adobe Xd、InVision Studioが上位を占める結果になりました。
最近は社内でInVisionを見ることが多くなってきた気がします。

フロントエンド(デザイナー)

アイスタイルには、フロントエンドが書けるデザイナーもいます。マークアップデザイナーもいます。

CSSプリプロセッサ

Less, Sass, Scssと意外と色々使っているんですね、、、

その他

CI/CD

  • Jenkins
  • Circle CI
  • Bamboo
  • Capistrano
  • Gradle
  • CodeDeploy
  • Shipit

ソースコード管理/プロジェクト管理

gitlab runnerでCIが回せるので、よくGitLabを使っています

  • Github
  • GitLab
  • Jira
  • Redmine

社内wiki

  • Confluence
  • owl(自社ツール) … 過去のドキュメント類がまとめられている

「で、アイスタイルってどんな技術使っているんですか?」

PHPで作られているアプリケーションが多いので、ざっくり言えばPHPの会社です。

と言いたいところですが、プラットフォームとしてまだまだ成長途中なので常に何かしらの新規の
プラットフォーム機能・サービス開発が走っており、それぞれの性質に合わせた最良の言語、フレームワーク、インフラ、デザインを都度採用する会社です!
また多種多様で大量のサービスデータを保有&大量のリクエストが来るので、それらをさばききるインフラ、アプリケーションの設計が求められます。

以上です(=゚ω゚)ノ最後まで読んでいただきありがとうございました!

PHPに限らず幅広い技術・職種でクリエイターを募集しています。
詳細はこちらから!
https://recruit.istyle.co.jp/career/

#新卒入社1年目 #Vue.js #ReactNative #Laravel # 岩手エンジニア