SlideShare a Scribd company logo
TeachmeBizを⽀える
フロントエンドの
アーキテクチャと品質担保
2019/10/30 Vue.jsアーキテクチャリング勉強会
笹⽊ 信吾 @ 株式会社スタディスト
⾃⼰紹介
• 笹⽊ 信吾 @株式会社スタディスト
• 2015卒(27歳)
• Rails/Vue がメインのWebエンジニア
• ← デグー5匹飼ってます︕
• @HousouP
Web版が
Vue/Vuex
本⽇お話する内容
本⽇お話する内容
本⽇お話する内容
伝えたいこと概要
TeachmeBizのフロントエンド開発を例に、
Vue/Vuexアプリケーション開発のお悩みあるあると、
弊社での解決策をご紹介
(※いうほどアーキテクチャの話じゃないかも)
(※あくまで弊社での事例で、ベストプラクティスとは限らないです)
本⽇お話する内容
Vue/Vuexあるある(※弊社調査)
● Vuexでどこまで状態管理したら良いんだろう︖
● コンポーネントはどんなふうに分割する︖
● コンポーネントの品質どうやって評価する︖
● フロントエンドのテストコードって何書いたらよい︖
本⽇お話する内容
本⽇お話しない内容
本⽇お話しない内容
● vue/vuex 及び周辺技術、ツールの基礎
● Nuxt
● サーバサイド
本⽇お話しない内容
Vue/Vuexあるある(※弊社調査)(再掲)
● Vuexでどこまで状態管理したら良いんだろう︖
● コンポーネントはどんなふうに分割する︖
● コンポーネントの品質どうやって評価する︖
● フロントエンドのテストコードって何書いたらよい︖
本⽇お話する内容
Vuexでどこまで状態管理したら良いんだろう︖
Vuex
Vuexでどこまで状態管理したら良いんだろう︖
なんの状態を管理するか︖
Vuexでどこまで状態管理したら良いんだろう︖
ベタな例
Vuexでどこまで状態管理したら良いんだろう︖
画⾯ごとに、画⾯内で使⽤する状態を管理する
(画⾯駆動Vuex)
Vuexでどこまで状態管理したら良いんだろう︖
マニュアル⼀覧画⾯ マニュアル閲覧画⾯ マニュアル編集画⾯
Store A Store B Store C
l マニュアルの⼀覧の取得管理
l ページング情報
l 検索パラメータ
l タブの選択状態
l マニュアルの選択状態
l …etc
l マニュアルの取得管理
l トグルメニューの開閉状態
l ⼊⼒中のコメント
l …etc
l マニュアルの取得管理
l 編集中の内容
l 更新系アクションの管理
l …etc
Vuexでどこまで状態管理したら良いんだろう︖
マニュアル⼀覧画⾯ マニュアル閲覧画⾯ マニュアル編集画⾯
Store A Store B Store C
● 画⾯を構成するコンポーネント間での状態の共有が容易
● ⼦コンポーネント、孫コンポーネントへのバケツリレーを回避
● 画⾯単位での設計、実装がしやすく初期開発が素早く⾏える
● 画⾯で独⽴しているので修正の影響範囲が画⾯を越えない
画⾯駆動Vuexのメリット
画⾯駆動vuex最強か︖︖
Vuexでどこまで状態管理したら良いんだろう︖
画⾯駆動vuex最強か︖︖
Vuexでどこまで状態管理したら良いんだろう︖
そんなことはなかった
画⾯総数は開発規模に⽐例する
Vuexでどこまで状態管理したら良いんだろう︖
画⾯総数は開発規模に⽐例する
Vuexでどこまで状態管理したら良いんだろう︖
何をもって「画面」と数える??
似たような画面ではstoreを使い回す??
異なる画面に跨って扱うデータどうする??
てかstoreってグローバル変数なのでは??
モジュール分割どうするよ??
画面の数だけstoreを分ける??
画面ごとの共通処理は??
そして破綻
Vuexでどこまで状態管理したら良いんだろう︖
という経緯があり、
⼀度開発中に設計を⾒直しました
Vuexでどこまで状態管理したら良いんだろう︖
そもそも私たちはVuexに何を望んでいたのか
Vuexでどこまで状態管理したら良いんだろう︖
ドメイン駆動Vuex
Vuexでどこまで状態管理したら良いんだろう︖
参考: スタディスト 開発ブログ
Vuexでどこまで状態管理したら良いんだろう︖
https://medium.com/studist-dev/ddd-vuex-c47055f6c1ba
フロントエンドの主役はあくまでUI/UX
Vuexでどこまで状態管理したら良いんだろう︖
UIを提供する
コンポーネント
と
ビジネスロジック
を完全に分離
Vuexでどこまで状態管理したら良いんだろう︖
引⽤ スタディスト開発ブログ
つまりこう
Vuexでどこまで状態管理したら良いんだろう︖
つまりこう
APIと複雑なドメインを理解して、
UIに優しいデータを提供する
Vuexでどこまで状態管理したら良いんだろう︖
UIの表現
のみ集中
引⽤ スタディスト開発ブログ
ドメイン駆動Vuexによる責務
Vuexでどこまで状態管理したら良いんだろう︖
● APIにリクエストすること
● レスポンスを保持すること
● レスポンスを整形して返すこと
Vuexフロー要約
Vuexでどこまで状態管理したら良いんだろう︖
引⽤ スタディスト開発ブログ
state
Vuexでどこまで状態管理したら良いんだろう︖
● 各種APIのレスポンスをそのまま保持する
● 画⾯の状態などは⼀切持たない
● ドメインのリソース単位(マニュアル/ユーザ/フォルダ/…etc) でモジュール分割される
action
Vuexでどこまで状態管理したら良いんだろう︖
● APIを呼び出してmutationをコミットする
● APIの⼊⼒仕様を唯⼀理解している
● UI側からUI都合の要求を受取り、複雑なAPIリクエストパラメータの構築を吸収
mutation
Vuexでどこまで状態管理したら良いんだろう︖
● APIレスポンスを受け取って、stateを更新(mutate)する
● ここはとっても普通
getter + モデル
Vuexでどこまで状態管理したら良いんだろう︖
● APIの出⼒仕様を唯⼀理解している
● 複雑なAPIレスポンスを、UIにとって理想的なモデルデータに変換、提供する
ドメイン駆動Vuexによるメリット
Vuexでどこまで状態管理したら良いんだろう︖
● Storeの責務が明確なのでチーム開発でも迷いが⽣じにくい
● UIがサーバサイドの影響を⼀切受けないため、API側の修正や置き換えに対
してもstore側で全て吸収できる
● UIにビジネスロジックが混ざらないためテスタビリティが⾼い
Q: UIの状態をstoreで管理しないの⾟くない︖
Vuexでどこまで状態管理したら良いんだろう︖
A. 意外と⾟くない
● コンポーネントを跨いで画⾯全体で使い回したいデータは、⼤半がAPIから取得
したドメインデータでした
● コンポーネント内に閉じた状態ならdataで持てば良いし、多少のバケツリレー
は受け⼊れたほうがテスタビリティも⾼い
Vuexでどこまで状態管理したら良いんだろう︖
と⾔いつつ抜け道は⽤意してる
Vuexでどこまで状態管理したら良いんだろう︖
モーダルアラート
フラッシュメッセージ
● あらゆる画⾯で使⽤するUIの状態管理は例外
● フラッシュメッセージ
● モーダルアラート
● …etc
と⾔いつつ抜け道は⽤意してる
Vuexでどこまで状態管理したら良いんだろう︖
モーダルアラート
フラッシュメッセージ
● Vueプラグインを定義して、グローバル変数のように扱う
さらなる詳細は別スライドに
※ 本スライドは上記スライドのリスペクトです
https://speakerdeck.com/komiyamast/vuetogong-nizou-tutahurontoentorihureisu1nian-jian
Vue/Vuexあるある(※弊社調査)
● Vuexでどこまで状態管理したら良いんだろう︖
● コンポーネントはどんなふうに分割する︖
● コンポーネントの品質どうやって評価する︖
● フロントエンドのテストコードって何書いたらよい︖
Vuexでどこまで状態管理したら良いんだろう︖
コンポーネントはどんなふうに分割する︖
状態管理はわかった。
コンポーネントはどう設計したら良い︖︖
コンポーネントはどんなふうに分割する︖
Atomic Design を採⽤
コンポーネントはどんなふうに分割する︖
コンポーネントはどんなふうに分割する︖
● Webデザインのアプローチ
● UIデザインは化学元素に似ているという発想から、UIパーツを階層化する
● Atoms (原⼦)
● Molecules (分⼦)
● Organisms (有機体)
● Templates (ページテンプレ)
● Pages (画⾯)
※ TeachmeBizはSPAなので、Templatesを使わなかったり、共通Layoutコンポーネントを作ったりのアレンジもあり
Atomic Design
コンポーネントはどんなふうに分割する︖
Atomic Design
コンポーネントはどんなふうに分割する︖
Atomic Design
コンポーネントはどんなふうに分割する︖
Atomic Design
コンポーネントはどんなふうに分割する︖
Atomic Design
コンポーネントはどんなふうに分割する︖
Atomic Design
分類 ⽤途 Store参照 例
Pages ユーザが⼀度に利⽤する画⾯そのもの 可
Organisms Moleculesを組み合わせてユーザにUXを提供する 可
Molecules Atomsを組み合わせて、単⼀の機能を提供する 不可
Atoms それ以上分割できないUIの最⼩単位 不可
コンポーネントはどんなふうに分割する︖
Atomic Design のメリット
● 分割の基準が明確で、作りやすい、探しやすい、管理しやすい
● 下位コンポーネントは上位コンポーネントを知る必要が⼀切ないので、再利⽤
性が⾼いコンポーネントを作りやすい
● storeへアクセスできる層を限定することで、下位コンポーネントのテスタビリ
ティが⾼い
Vue/Vuexあるある(※弊社調査)
● Vuexでどこまで状態管理したら良いんだろう︖
● コンポーネントはどんなふうに分割する︖
● コンポーネントの品質どうやって評価する︖
● フロントエンドのテストコードって何書いたらよい︖
コンポーネントはどんなふうに分割する︖
コンポーネントの品質どうやって評価する︖
⼤量のコンポーネントの品質どうやって評価する︖
● Propsの組み合わせごとの挙動を試すの⾯倒
● 多⾔語の確認するのしんどくない︖
● APIに依存するようなコンポーネントの動作確認は︖
● デザイナなどステークホルダとのすり合わせは︖
● …etc
コンポーネントの品質どうやって評価する︖
Storybookの⼒で全て解決する
コンポーネントの品質どうやって評価する︖
Storybookの特徴
コンポーネントの品質どうやって評価する︖
● コンポーネントをカタログ化して、単体での動作確認を可能にする
● 依存データをモック化することにより、サーバの存在も無視できる
● 必要に応じて依存コンポーネントをモック化するなども可能
● 豊富すぎるアドオンによって夢が広がる
ex1. 多⾔語の検証が⾯倒なとき
コンポーネントの品質どうやって評価する︖
英語⽇本語 タイ語
knobsでロケールを爆速で切り替える
コンポーネントの品質どうやって評価する︖
knobsでロケールを爆速で切り替える
コンポーネントの品質どうやって評価する︖
knobsでロケールを爆速で切り替える
コンポーネントの品質どうやって評価する︖
knobsでロケールを爆速で切り替える(実現⽅法)
コンポーネントの品質どうやって評価する︖
vue-i18nのlocale情報を書き換える
詳細は開発ブログに個別記事があります
(“スタディスト 開発ブログ” でけんさくけんさくー)
https://medium.com/studist-dev/internationalization-in-storybook-4be77773494c
ex2. サーバを⽤意せずに画⾯遷移を検証したい
コンポーネントの品質どうやって評価する︖
マニュアル一覧
API
フォルダ一覧
API
サブフォルダ一覧
API
画面遷移画面遷移トップページ フォルダ⼀覧画⾯ サブフォルダ⼀覧画⾯
storybook上でstoreをモックすることで、サーバなしで画⾯遷移する
コンポーネントの品質どうやって評価する︖
※ gifアニメなのでスライドショーでしか再⽣しません
storybook上でstoreをモックすることで、サーバなしで画⾯遷移する
(実現⽅法)
コンポーネントの品質どうやって評価する︖
詳細は開発ブログに個別記事があります
(“スタディスト 開発ブログ” でけんさくけんさくー)
https://medium.com/studist-dev/storybook-d879178318b2
● storybook-router を⽤いて、vue-routerを使えるように
● APIを叩くactionは全て正常系のモックに差し替える
● getterを全てモックに差し替える
Storeモックの例(⼀部)
ex3. 成果物をステークホルダと共有する
コンポーネントの品質どうやって評価する︖
実装してみたんで
チェックお願いします!
プログラマ
成果物どこで見れます?
デザイナ
プルリクの段階で誰でもstorybookを閲覧できるように
コンポーネントの品質どうやって評価する︖
① PushしてCIを実⾏
④ StorybookのURLを
コミットステータスに添付
② storybookを静的ビルド
③ 成果物をS3にアップロード
プルリクの段階で誰でもstorybookを閲覧できるように
コンポーネントの品質どうやって評価する︖
デザイナ
確認できました!
● ブランチ単位でstorybookを閲覧できるURLが⽣成されるので、
URLをステークホルダに渡すだけ︕
● プルリクのステータス欄にも添付されるので、コードレビュー時
にコンポーネントの振る舞いも確認できる
プルリクの段階で誰でもstorybookを閲覧できるように
(実現⽅法)
コンポーネントの品質どうやって評価する︖
例によって開発ブログに個別記事があります
(“スタディスト 開発ブログ” でけんさくけんさくー)
https://medium.com/studist-dev/sharing-documents-in-pull-request-3409e23ade88
Vue/Vuexあるある(※弊社調査)
● Vuexでどこまで状態管理したら良いんだろう︖
● コンポーネントはどんなふうに分割する︖
● APIレスポンスのデータ構造がフロントに馴染まない︖
● コンポーネントの品質どうやって評価する︖
● フロントエンドのテストコードって何書いたらよい︖
コンポーネントの動作確認どこまでやる︖
フロントエンドのテストコードって何書いたらよい︖
フロントエンドのテストコードって何書いたらよい︖
フロントエンドのテストコードって何書いたらよい︖
● Vue/vuexから分離したピュアロジック
● Vueコンポーネント
● VuexのStore
主なテスト対象
フロントエンドのテストコードって何書いたらよい︖
フロントエンドのテストコードって何書いたらよい︖
● Vue/vuexから分離したピュアロジック
● Vueコンポーネント
● VuexのStore
主なテスト対象
※ サーバサイドやvue以外のフロントと⼤差ないので割愛
フロントエンドのテストコードって何書いたらよい︖
フロントエンドのテストコードって何書いたらよい︖
● 振る舞いのテスト
● デザインのテスト
● actionのテスト
● mutation のテスト
● getterのテスト
コンポーネントのテスト Storeのテスト
フロントエンドのテストコードって何書いたらよい︖
フロントエンドのテストコードって何書いたらよい︖
● 振る舞いのテスト
● デザインのテスト
● actionのテスト
● mutation のテスト
● getterのテスト
コンポーネントのテスト Storeのテスト
コンポーネントの振る舞いのテスト
フロントエンドのテストコードって何書いたらよい︖
Vue-test-utils を使用して、コンポーネントのprops/dataによる振る舞いの変化を
主に検証する
● atom
● molecule
● organism
● page
Organismのコンポーネントだけをテスト対象とする
コンポーネントの振る舞いのテスト
フロントエンドのテストコードって何書いたらよい︖
テスト対象コンポーネント
フロントエンドのテストコードって何書いたらよい︖
フロントエンドのテストコードって何書いたらよい︖
● 振る舞いのテスト
● デザインのテスト(実験中)
● actionのテスト
● mutation のテスト
● getterのテスト
コンポーネントのテスト Storeのテスト
Storycap × reg-suit
によるビジュアルスナップショットテスト
Vuexでどこまで状態管理したら良いんだろう︖
Storycap × reg-suit
によるビジュアルスナップショットテスト
Vuexでどこまで状態管理したら良いんだろう︖
Storybookのスクショ
を撮る専⽤ツール
Storycap × reg-suit
によるビジュアルスナップショットテスト
Vuexでどこまで状態管理したら良いんだろう︖
画像差分を⾒て
回帰テストを⾏うツール
Storycap × reg-suit によるスナップショットテスト
フロントエンドのテストコードって何書いたらよい︖
① Storycapで、Storybookの全ストーリーのスクショを取得
Storycap × reg-suit によるスナップショットテスト
フロントエンドのテストコードって何書いたらよい︖
② 正となるスクショをS3に配置し、CIごとに再度撮影したスクショと⽐較
Storycap × reg-suit によるスナップショットテスト
フロントエンドのテストコードって何書いたらよい︖
③ 検出した差分を⾒て、正を更新する
Storycap × reg-suit によるスナップショットテスト
フロントエンドのテストコードって何書いたらよい︖
③ 検出した差分を⾒て、正を更新する
Storycap × reg-suit によるスナップショットテスト
フロントエンドのテストコードって何書いたらよい︖
③ 検出した差分を⾒て、正を更新する
Storycap × reg-suit によるスナップショットテスト
フロントエンドのテストコードって何書いたらよい︖
● Storybookのストーリーをある程度スナップショットテストを前提とした構成にする
必要がある
● 前述の、コンポーネントの評価検証のためのStorybookとの使い分けが難しい
● E2Eテスト書いて、その中で取得したスクショを使うのもありかも
依然実験中
フロントエンドのテストコードって何書いたらよい︖
フロントエンドのテストコードって何書いたらよい︖
● 振る舞いのテスト
● デザインのテスト
● actionのテスト
● mutation のテスト
● getterのテスト
コンポーネントのテスト Storeのテスト
actionのテスト
フロントエンドのテストコードって何書いたらよい︖
● Actionが責務正しく満たしているかを評価する
● APIリクエストパラメータを正しく組み⽴てること
● 適切なmutationをコミットすること
actionのテスト
フロントエンドのテストコードって何書いたらよい︖
● Actionが責務正しく満たしているかを評価する
● APIリクエストパラメータを正しく組み⽴てること
● 適切なmutationをコミットすること
アクションに id のみを渡した場合
APIへのリクエストパラメータ上の by_name がfalseになる
アクションに name のみを渡した場合
APIへのリクエストパラメータ上の by_name がtrueになる
axios-mock-adapter
でAPIをモック
actionのテスト
フロントエンドのテストコードって何書いたらよい︖
● Actionが責務正しく満たしているかを評価する
● APIリクエストパラメータを正しく組み⽴てること
● 適切なmutationをコミットすること
レスポンスが { id: 1 } の場合
{ id: 1} をパラメータにコミットする
フロントエンドのテストコードって何書いたらよい︖
フロントエンドのテストコードって何書いたらよい︖
● 振る舞いのテスト
● デザインのテスト
● actionのテスト
● mutation のテスト
● getterのテスト
コンポーネントのテスト Storeのテスト
mutationのテスト
フロントエンドのテストコードって何書いたらよい︖
● mutationが責務正しく満たしているかを評価する
● パラメータに応じてstateを更新(ミューテート)すること
mutationのテスト
フロントエンドのテストコードって何書いたらよい︖
● mutationが責務正しく満たしているかを評価する
● パラメータに応じてstateを更新(ミューテート)すること
空だったstateが
パラメータに応じて更新(ミューテート)される
フロントエンドのテストコードって何書いたらよい︖
フロントエンドのテストコードって何書いたらよい︖
● 振る舞いのテスト
● デザインのテスト
● actionのテスト
● mutation のテスト
● getterのテスト
コンポーネントのテスト Storeのテスト
getterのテスト
フロントエンドのテストコードって何書いたらよい︖
● getterが責務正しく満たしているかを評価する
● APIレスポンスから⽣成したモデルが取得できること
getterのテスト
フロントエンドのテストコードって何書いたらよい︖
● getterが責務正しく満たしているかを評価する
● APIレスポンスから⽣成したモデルが取得できること
正常系のAPIレスポンスはモックを使う
基本的に例外系を網羅する
storeのテスト総評
フロントエンドのテストコードって何書いたらよい︖
● テスト対象の責務がわかりやすくなる
● API側の仕様変更によるデグレを検出しやすい
● カバレッジ100%にしようとすると、実装と同じコードをテストでも書くだ
けになりがち…。
● 何をモックして何をテストしているのかの背景を理解しないと、コピペテス
トコードが量産されがち…。
フロントエンドのテストコードって何書いたらよい︖
フロントエンドのテストコードって何書いたらよい︖
● 振る舞いのテスト
● デザインのテスト
● actionのテスト
● mutation のテスト
● getterのテスト
コンポーネントのテスト Storeのテスト
カバレッジ
(感覚)
10%ぐらい
0%(実験中)
95%ぐらい
95%ぐらい
95%ぐらい
フロントエンドのテストコードって何書いたらよい︖
フロントエンドのテストコードって何書いたらよい︖
● 振る舞いのテスト
● デザインのテスト
● actionのテスト
● mutation のテスト
● getterのテスト
コンポーネントのテスト Storeのテスト
カバレッジ
5%ぐらい
0%(実験中)
95%ぐらい
95%ぐらい
95%ぐらい
Vue/Vuexあるある(※弊社調査)
● Vuexでどこまで状態管理したら良いんだろう︖
● コンポーネントはどんなふうに分割する︖
● コンポーネントの品質どうやって評価する︖
● フロントエンドのテストコードって何書いたらよい︖
フロントエンドのテストコードって何書いたらよい︖
まとめ
TeachmeBizのフロントエンド開発の特徴
ご(清|静)聴ありがとうございました
● ドメイン駆動Vuexで、状態管理をAPIが関わるドメイン領域に限定してるので楽
● コンポーネントの分割はAtomic Designに従っておけば楽
● Storybook活⽤しておけば無敵
● フロントのテストはstore/component共に責務に応じて必要⼗分書く
● スタディスト 開発ブログ 読んでね
● デグーはいいぞ

More Related Content

Similar to TeachmeBizを支えるフロントエンドのアーキテクチャと品質担保

eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティスeZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
ericsagnes
 
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
Recruit Lifestyle Co., Ltd.
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVC
Ryunosuke SATO
 
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話
Kazuki Murahama
 
Reactnative はじめの一歩
Reactnative はじめの一歩Reactnative はじめの一歩
Reactnative はじめの一歩
PIXTA Inc.
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
Yasuhito Yabe
 
⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1
Nishida Kansuke
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチMonadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Tomoharu ASAMI
 
スマホにおけるWebGL入門
スマホにおけるWebGL入門スマホにおけるWebGL入門
スマホにおけるWebGL入門
Yohta Kanke
 
Webpackにトライ 基本編
Webpackにトライ 基本編Webpackにトライ 基本編
Webpackにトライ 基本編
シオリ ショウノ
 
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化
Toshio Ehara
 
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
Takuya Ueda
 
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話
Shohei Okada
 
AngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃおAngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃお
Toshio Ehara
 
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
pinmarch_t Tada
 
1画面から始めるStoryboard
1画面から始めるStoryboard1画面から始めるStoryboard
1画面から始めるStoryboard
Yuichi Fujishige
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEWMasahiro Wakame
 
続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5j続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5jToshiaki Maki
 
食べログのフロントエンドリプレース戦略
食べログのフロントエンドリプレース戦略食べログのフロントエンドリプレース戦略
食べログのフロントエンドリプレース戦略
Tsuji Yuko
 
WordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイトWordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイト
Takuma Nishiyama
 

Similar to TeachmeBizを支えるフロントエンドのアーキテクチャと品質担保 (20)

eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティスeZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
 
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVC
 
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話
 
Reactnative はじめの一歩
Reactnative はじめの一歩Reactnative はじめの一歩
Reactnative はじめの一歩
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチMonadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
 
スマホにおけるWebGL入門
スマホにおけるWebGL入門スマホにおけるWebGL入門
スマホにおけるWebGL入門
 
Webpackにトライ 基本編
Webpackにトライ 基本編Webpackにトライ 基本編
Webpackにトライ 基本編
 
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化
 
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
 
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話
 
AngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃおAngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃお
 
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
 
1画面から始めるStoryboard
1画面から始めるStoryboard1画面から始めるStoryboard
1画面から始めるStoryboard
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEW
 
続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5j続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5j
 
食べログのフロントエンドリプレース戦略
食べログのフロントエンドリプレース戦略食べログのフロントエンドリプレース戦略
食べログのフロントエンドリプレース戦略
 
WordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイトWordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイト
 

Recently uploaded

論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 

Recently uploaded (16)

論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 

TeachmeBizを支えるフロントエンドのアーキテクチャと品質担保