SlideShare a Scribd company logo
1 of 19
Download to read offline
モダンJavaScriptフレームワークで
技術的負債を作らないために
株式会社ヤプリ
鬼木悠貴
鬼木悠貴
▸ 2017年2月にヤプリに入社
▸ 入社後はインフラ、バックエンド、フロントエンドを経験
▸ AWS、Ansible、PHP、Laravel、Ruby、Ruby on Rails、JavaScript、
TypeScript、React.js、Vue.js、Golang
▸ 現在は新CMSのサーバーサイド(Golang)実装、フロントエンド
(Vue.js、Nuxt.js)実装、設計
自己紹介
現在やっていること
CMS2
CMS3
新CMS
(実装中)
Replace
モダンJavaScriptフレームワークで
難しいと感じていたところ
モダンJavaScriptフレームワークで難しいと感じていたところ
▸ 書き方の自由度が高く、設計・チームで統一するのが難しい
▸ コンポーネント指向ゆえに、おおもとのデータや関数の把
握が難しい
▸ デザイナーとの領域が曖昧
コンポーネント指向ゆえに、おおもとのデータや関数の把握が難しい
モダンJavaScriptフレームワークで難しいと感じていたところ
▸ 書き方の自由度が高く、設計・チームで統一するのが難しい
▸ コンポーネント指向ゆえに、おおもとのデータや関数の把
握が難しい
▸ デザイナーとの領域が曖昧
フロントエンドとサーバーサイドのチーム体制
フロントエンド
エンジニア
サーバーエンド
エンジニア
2名(+2名) 7名
HTML、CSSなど
デザイン以外の
部分を実装する
デザイナーとの領域が曖昧
▸ (サーバーサイドエンジニア目線で)実際に処理が動くところ
までやろうとすると、コンポーネントがないと実装できな
い
▸ 上記のような部分が先行後続関係になる
▸ 両チームで使用するライブラリや規約等を柔軟に分けられな
い
対処するために行ったこと
画面上ユースケースの集約
画面上ユースケースの集約
Vue.js
データ
関数
コンポーネント
画面上ユースケースの集約
Vue.js Vuex
コンポーネント
データ
アクション
changeFieldTitle
changeFieldTitle
changeFieldTitle
changeFieldTitle
changeFieldTitle
changeFieldTitle
changeFieldTitle
changeFieldBody
addField
changeFavicon
changeField
LinkTitle
changeField
LinkIcon
onFocus
outFocus
save
Vuex
画面上ユースケースの集約
Vue.js Vuex Golang
フロントエンド
エンジニア
サーバーサイド
エンジニア
ユースケース集約によって受けた恩恵
▸ フロント開発を行うサーバーサイドエンジニアが実装する部
分がVuexに集約されることで、Vue.jsの事前知識が少なくて
も開発に入ることができる
▸ デザイナーはコンポーネント作成に集中できる
▸ 概要書とVuexのactions(ユースケース)を見れば、画面上
のユースケースとその処理を把握できる
▸ 境界が明確なので適切なスコープで規約決めなどを行える
プロダクトを作るチームベースで
設計すること
設計を通して大事だと思ったこと
プロダクトを作るチームベースで設計すること
▸ 規約を決めること
▸ 共通言語を決めること
▸ スコープを決めること
▸ 上記をやりやすいような仕組みを作ること
ご清聴ありがとうございました

More Related Content

What's hot

( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!Yuki Ishikawa
 
High Performance Gulp
High Performance GulpHigh Performance Gulp
High Performance GulpKeisuke Imura
 
S14 t3 yosuke_yamashita
S14 t3 yosuke_yamashitaS14 t3 yosuke_yamashita
S14 t3 yosuke_yamashitaTakeshi Akutsu
 
svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発Shuichi Takaya
 
いまNode Express4で書いてるディレクターが
初めて書き始める2ヶ月前くらいの自分に言っておく
いまNode Express4で書いてるディレクターが
初めて書き始める2ヶ月前くらいの自分に言っておくいまNode Express4で書いてるディレクターが
初めて書き始める2ヶ月前くらいの自分に言っておく
いまNode Express4で書いてるディレクターが
初めて書き始める2ヶ月前くらいの自分に言っておくTakahiro YAMAGUCHI
 
AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。Toshio Ehara
 
僕の Serverless web application
僕の Serverless web application僕の Serverless web application
僕の Serverless web application祐樹 夏目
 
React Nativeでお絵描きしてみた
React Nativeでお絵描きしてみたReact Nativeでお絵描きしてみた
React Nativeでお絵描きしてみたkazuki matsumura
 
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~Shinichi Tomita
 
20161115 okubo mt_cloud_handson
20161115 okubo mt_cloud_handson20161115 okubo mt_cloud_handson
20161115 okubo mt_cloud_handsonSix Apart
 
タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜Masaya Kogawa
 
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancyNarami Kiyokura
 
SVGの基本&活用法。SVGのメリットと事例を基礎から学ぶ。
SVGの基本&活用法。SVGのメリットと事例を基礎から学ぶ。SVGの基本&活用法。SVGのメリットと事例を基礎から学ぶ。
SVGの基本&活用法。SVGのメリットと事例を基礎から学ぶ。Daisuke Koshimizu
 
SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」Naoyuki Kataoka
 
Innovation eggcloudnative
Innovation eggcloudnativeInnovation eggcloudnative
Innovation eggcloudnativeTakuro Sasaki
 
コミュニティと自分
コミュニティと自分コミュニティと自分
コミュニティと自分祐樹 夏目
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Takuya Mukohira
 
WordPressをVPS/クラウドで利用する際の注意点
WordPressをVPS/クラウドで利用する際の注意点WordPressをVPS/クラウドで利用する際の注意点
WordPressをVPS/クラウドで利用する際の注意点Endoh Shingo
 

What's hot (20)

( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!
 
High Performance Gulp
High Performance GulpHigh Performance Gulp
High Performance Gulp
 
S14 t3 yosuke_yamashita
S14 t3 yosuke_yamashitaS14 t3 yosuke_yamashita
S14 t3 yosuke_yamashita
 
React.js + Flux
React.js + FluxReact.js + Flux
React.js + Flux
 
svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発
 
いまNode Express4で書いてるディレクターが
初めて書き始める2ヶ月前くらいの自分に言っておく
いまNode Express4で書いてるディレクターが
初めて書き始める2ヶ月前くらいの自分に言っておくいまNode Express4で書いてるディレクターが
初めて書き始める2ヶ月前くらいの自分に言っておく
いまNode Express4で書いてるディレクターが
初めて書き始める2ヶ月前くらいの自分に言っておく
 
AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。
 
僕の Serverless web application
僕の Serverless web application僕の Serverless web application
僕の Serverless web application
 
React Nativeでお絵描きしてみた
React Nativeでお絵描きしてみたReact Nativeでお絵描きしてみた
React Nativeでお絵描きしてみた
 
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
 
20161115 okubo mt_cloud_handson
20161115 okubo mt_cloud_handson20161115 okubo mt_cloud_handson
20161115 okubo mt_cloud_handson
 
タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜
 
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy
 
SVGの基本&活用法。SVGのメリットと事例を基礎から学ぶ。
SVGの基本&活用法。SVGのメリットと事例を基礎から学ぶ。SVGの基本&活用法。SVGのメリットと事例を基礎から学ぶ。
SVGの基本&活用法。SVGのメリットと事例を基礎から学ぶ。
 
SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」
 
Innovation eggcloudnative
Innovation eggcloudnativeInnovation eggcloudnative
Innovation eggcloudnative
 
コミュニティと自分
コミュニティと自分コミュニティと自分
コミュニティと自分
 
Jaws ug shimane-1
Jaws ug shimane-1Jaws ug shimane-1
Jaws ug shimane-1
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
 
WordPressをVPS/クラウドで利用する際の注意点
WordPressをVPS/クラウドで利用する際の注意点WordPressをVPS/クラウドで利用する際の注意点
WordPressをVPS/クラウドで利用する際の注意点
 

Similar to モダンJavaScriptフレームワークで技術的負債を作らないために

CSSフレームワークとCMS+RWDテンプレでレスポンシブWebデザインサイトを構築しよう
CSSフレームワークとCMS+RWDテンプレでレスポンシブWebデザインサイトを構築しようCSSフレームワークとCMS+RWDテンプレでレスポンシブWebデザインサイトを構築しよう
CSSフレームワークとCMS+RWDテンプレでレスポンシブWebデザインサイトを構築しようMasayuki Abe
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門miso- soup3
 
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - 健人 井関
 
WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】
WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】
WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】masaya yamao
 
Stripeを1年使ってみて思ったこと
Stripeを1年使ってみて思ったことStripeを1年使ってみて思ったこと
Stripeを1年使ってみて思ったことtomoaki koshi
 
Visual Studio TypeScript npm WebPack
Visual Studio TypeScript npm WebPackVisual Studio TypeScript npm WebPack
Visual Studio TypeScript npm WebPackAkihiro Ehara
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancyNarami Kiyokura
 
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいはじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいKazumi IWANAGA
 
Voxer loves Drupal
Voxer loves DrupalVoxer loves Drupal
Voxer loves DrupalY M
 
Nginx勉強会
Nginx勉強会Nginx勉強会
Nginx勉強会Yuji Otani
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話terurou
 
Node.jsで始める Modern JavaScript Framework
Node.jsで始める Modern JavaScript FrameworkNode.jsで始める Modern JavaScript Framework
Node.jsで始める Modern JavaScript Frameworkkamiyam .
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装Kenjiro Kubota
 
KnockoutJS勉強会 プロジェクトにmvvmを適用する狙い
KnockoutJS勉強会 プロジェクトにmvvmを適用する狙いKnockoutJS勉強会 プロジェクトにmvvmを適用する狙い
KnockoutJS勉強会 プロジェクトにmvvmを適用する狙いToshihiro Kawachi
 
PWAを使ってWebXRコンテンツをオフラインで動くようにする手順について
PWAを使ってWebXRコンテンツをオフラインで動くようにする手順についてPWAを使ってWebXRコンテンツをオフラインで動くようにする手順について
PWAを使ってWebXRコンテンツをオフラインで動くようにする手順についてWheetTweet
 
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてアプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてSato Shun
 
株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料leverages_event
 
サーバーレスの話
サーバーレスの話サーバーレスの話
サーバーレスの話真吾 吉田
 

Similar to モダンJavaScriptフレームワークで技術的負債を作らないために (20)

CSSフレームワークとCMS+RWDテンプレでレスポンシブWebデザインサイトを構築しよう
CSSフレームワークとCMS+RWDテンプレでレスポンシブWebデザインサイトを構築しようCSSフレームワークとCMS+RWDテンプレでレスポンシブWebデザインサイトを構築しよう
CSSフレームワークとCMS+RWDテンプレでレスポンシブWebデザインサイトを構築しよう
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
 
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
 
WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】
WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】
WordPressのローカル開発環境構築【WordBench Nagoya 5月度勉強会】
 
Stripeを1年使ってみて思ったこと
Stripeを1年使ってみて思ったことStripeを1年使ってみて思ったこと
Stripeを1年使ってみて思ったこと
 
Visual Studio TypeScript npm WebPack
Visual Studio TypeScript npm WebPackVisual Studio TypeScript npm WebPack
Visual Studio TypeScript npm WebPack
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancy
 
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいはじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
 
Voxer loves Drupal
Voxer loves DrupalVoxer loves Drupal
Voxer loves Drupal
 
Nginx勉強会
Nginx勉強会Nginx勉強会
Nginx勉強会
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
 
Node.jsで始める Modern JavaScript Framework
Node.jsで始める Modern JavaScript FrameworkNode.jsで始める Modern JavaScript Framework
Node.jsで始める Modern JavaScript Framework
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装
 
KnockoutJS勉強会 プロジェクトにmvvmを適用する狙い
KnockoutJS勉強会 プロジェクトにmvvmを適用する狙いKnockoutJS勉強会 プロジェクトにmvvmを適用する狙い
KnockoutJS勉強会 プロジェクトにmvvmを適用する狙い
 
PWAを使ってWebXRコンテンツをオフラインで動くようにする手順について
PWAを使ってWebXRコンテンツをオフラインで動くようにする手順についてPWAを使ってWebXRコンテンツをオフラインで動くようにする手順について
PWAを使ってWebXRコンテンツをオフラインで動くようにする手順について
 
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてアプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
 
株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料
 
React Native 入門
React Native 入門React Native 入門
React Native 入門
 
サーバーレスの話
サーバーレスの話サーバーレスの話
サーバーレスの話
 

モダンJavaScriptフレームワークで技術的負債を作らないために