Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Frontend Architecture of teamLab

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for simochee simochee
November 16, 2019

Frontend Architecture of teamLab

チームラボはアートだけでなくWebやアプリの受託開発も行っています。

そんなチームラボのフロントエンドチームで使用しているアーキテクチャを実例を交えてご紹介します。

Frontend Conference Fukuoka 2019 にて登壇しました。
https://frontend-conf.fukuoka.jp/sessions#a-3

Avatar for simochee

simochee

November 16, 2019
Tweet

Other Decks in Programming

Transcript

  1. 自己紹介 • 1997年6月28日生まれ(22歳) • 山口県下関市出身 • 宇部工業高等専門学校 制御情報工学科卒 • 2018年4月

    チームラボに新卒入社 • 好きなもの:鉄道、東京03 • 好きなエディタ:VS Code ◦ テーマ:Netflix Red theme • 気になるもの: Parcel v2 / TypeScript 3.7 田村 亮弥 @lollipop_onl チームラボ株式会社 フロントエンドチーム 4
  2. チームラボの各チーム 6 • Webアプリケーションチーム • フロントエンドチーム • スマホアプリチーム • インタラクティブチーム

    • 機械学習チーム • サーチ・レコメチーム • ハードウェアチーム など • UI / UX デザイナー • ビジュアルデザイナー など 650人 • カタリスト
  3. チームラボの受託開発は、初期の提案フェーズから行う。 エンジニアはすべてのフェーズに参加する。 チームラボの受託開発 7 提案 見積もり、実現の可否 1 要件定義 仕様の詰め、外部ベンダーとの連携 2

    設計 / 実装 考える、作る、レビューする 3 テスト 仕様通りに動作するか確認 4 リリース リリースしてからがスタート 5 保守・追加開発 不具合、障害対応・追加開発 6
  4. フロントエンドチーム • メンバー:12人(平均: 27歳) • 受託開発 / アート案件のJavaScript実装 ◦ Node.jsでのツール開発やサーバー開発を行うこともある

    • 仕様やデザイン、API設計をそれぞれの担当者と検討 ◦ プロジェクトの中心で各方面と連携 • チーム内の活動 ◦ 週定例・タスクチェック ◦ ナレッジ共有会 … 案件で利用した技術や体験の共有 ◦ 勉強会 … 担当者持ち回りで隔週で開催。最近の話題はReasonML、Svelte、DIなど 9
  5. 21 • The Progressive Vue.js Framework • サーバーサイドレンダリング(SSR) • ルーティング

    ◦ ディレクトリ構成からのルーティングの自動生成 • Webpack開発環境 • 静的サイトジェネレータ ◦ SEOを意識したSPAアプリのビルド • TypeScriptの公式サポート(Nuxt TypeScript) Nuxt.js - The Vue.js Framework
  6. 22 • 静的型付け、型推論 ◦ 型による動作保証 • 11/5に TypeScript 3.7.2 がリリースされた

    ◦ Optional Chaining ▪ ? をつけると値がなくても {} と解釈される ◦ Nullish Coalescing ▪ Null/Undefined のみ false となるOR比較 TypeScript - JavaScript that scales.
  7. 苦労①:ライブラリの使用 • ライブラリの読み込みがうまく行かない ◦ window or document undefined ◦ Tree

    Shakingはしたい ➢ プラグインとして読み込み 28 window or document undefined - NuxtJS
  8. フロントエンドとWebpack 39 • フロントエンドチームでの開発環境の主力は Webpack ◦ 少し前の案件はGulp + Webpackの構成が多い ◦

    小規模な案件ではParcelが使わることもある • マークアップをすることも多い • PugのためだけにGulpは使用したくない ➢ Webpack でマークアップしたい
  9. Pugファイル更新時のHMR • Pugファイル更新時にリロードされない ◦ webpack-dev-server の Hot Reload の設定と競合 ➢

    browser-sync でHMRさせる ◦ webpackだけでpugをビルドする環境を作る - Qiita 43 webpackだけでpugをビルドする環境を作る - Qiita