Skip to main content
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
属人化したフロントエンドのJavaScriptを、
‘新規機能開発を止めずに’改善するために行った取り組みについて。
及びその経過報告。
2018年2月15日
パーソルキャリア株式会社 Innovation Lab. MyReferグループ
鈴木 潤
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
• 自己紹介
• サービス紹介
• おはなしすること
• 取り組み内容について
• 実際やってどうだったのか
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
自己紹介
名前:鈴木 潤(すずき じゅん)
・大学卒業後SI系企業に勤務(主にJava)
・2015年5月にパーソルキャリアに入社。
・MyReferグループ(主にフロントエンド)
所属:パーソルキャリア
Innovation Lab.
MyReferグループ
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
• 自己紹介
• サービス紹介
• おはなしすること
• 取り組みの内容について
• 実際やってどうだったのか
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
サービス紹介
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
• 自己紹介
• サービス紹介
• おはなしすること
• 取り組みの内容について
• 実際やってどうだったのか
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
おはなしすること
属人化したフロントエンドのJavaScriptを、
‘新規機能開発を止めずに’改善するために行った取り組みについて。
及びその経過報告。
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
おはなしすること
• 取り組みの内容について
• 実際やってみてどうだったのか
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
• 自己紹介
• サービス紹介
• おはなしすること
• 取り組みの内容について
• 実際やってどうだったのか
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
取り組みの内容について
• 課題を明確にする
• 課題をどう改善するかを決める
• 改善していくための方針を決める
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
• 自己紹介
• サービス紹介
• おはなしすること
• 取り組みの内容について
• 実際やってどうだったのか
課題を明確にする
課題をどう改善するかを決める
改善していくための方針を決める
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題を明確にする
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題を明確にする
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題を明確にする
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題を明確にする
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題を明確にする
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題を明確にする
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
• 自己紹介
• サービス紹介
• おはなしすること
• 取り組みの内容について
• 実際やってどうだったのか
課題を明確にする
課題をどう改善するかを決める
改善していくための方針を決める
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
1. 複数のファイルをまたがっていることによる複雑さ
2. DOMとイベントリスナが離れすぎている
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
1.複数のファイルをまたがっていることによる
複雑さ
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
<script type="text/javascript" src="/assets/plugins/../plugins/jquery/2.2.0/jquery.min.js?1501033302"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-cookie/1.4.1/jquery.cookie.min.js?1501033302"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-ui/jquery-ui.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-ui-multiselect/jquery.multiselect.min.js?1488949047"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/select2/js/select2.full.min.js?1501033303"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery/jquery.plugins.js?1514427457"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/library2.0.6.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/velocity-1.2.2.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/twn-0.9.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/odometer/odometer.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/js/corp/common.js?1518052858"></script>
<script type="text/javascript" src="/assets/js/util.js?1513229868"></script>
<script type="text/javascript" src="/assets/js/corp/staff_list/clipboard.min.js?1488949046"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/taggle/taggle.js?1501033303"></script>
<script type="text/javascript" src="/assets/js/support.js?1513229868"></script>
<script type="text/javascript" src="/assets/js/modules/corp/vendor.js?1518053117"></script>
<script type="text/javascript" src="/assets/js/app.js?1518053117"></script>
<script type="text/javascript" src="/assets/js/facebook_checker.js?1515552101"></script>
<script type="text/javascript" src="/assets/js/corp/dashboard/index.js?1516794464"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/easy-pie-chart/jquery.easypiechart.min.js?1488949047"></script>
<script type="text/javascript" src="/assets/js/push_notification/main.js?1515552101"></script>
<script type="text/javascript" src="/assets/js/modules/corp/dashboard/index.js?1518053117"></script>
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
<script type="text/javascript" src="/assets/plugins/../plugins/jquery/2.2.0/jquery.min.js?1501033302"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-cookie/1.4.1/jquery.cookie.min.js?1501033302"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-ui/jquery-ui.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-ui-multiselect/jquery.multiselect.min.js?1488949047"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/select2/js/select2.full.min.js?1501033303"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery/jquery.plugins.js?1514427457"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/library2.0.6.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/velocity-1.2.2.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/twn-0.9.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/odometer/odometer.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/js/corp/common.js?1518052858"></script>
<script type="text/javascript" src="/assets/js/util.js?1513229868"></script>
<script type="text/javascript" src="/assets/js/corp/staff_list/clipboard.min.js?1488949046"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/taggle/taggle.js?1501033303"></script>
<script type="text/javascript" src="/assets/js/support.js?1513229868"></script>
<script type="text/javascript" src="/assets/js/modules/corp/vendor.js?1518053117"></script>
<script type="text/javascript" src="/assets/js/app.js?1518053117"></script>
<script type="text/javascript" src="/assets/js/facebook_checker.js?1515552101"></script>
<script type="text/javascript" src="/assets/js/corp/dashboard/index.js?1516794464"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/easy-pie-chart/jquery.easypiechart.min.js?1488949047"></script>
<script type="text/javascript" src="/assets/js/push_notification/main.js?1515552101"></script>
<script type="text/javascript" src="/assets/js/modules/corp/dashboard/index.js?1518053117"></script>
大量の <script src=“…”></script>タグ
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
<script type="text/javascript" src="/assets/plugins/../plugins/jquery/2.2.0/jquery.min.js?1501033302"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-cookie/1.4.1/jquery.cookie.min.js?1501033302"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-ui/jquery-ui.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-ui-multiselect/jquery.multiselect.min.js?1488949047"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/select2/js/select2.full.min.js?1501033303"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery/jquery.plugins.js?1514427457"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/library2.0.6.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/velocity-1.2.2.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/twn-0.9.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/odometer/odometer.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/js/corp/common.js?1518052858"></script>
<script type="text/javascript" src="/assets/js/util.js?1513229868"></script>
<script type="text/javascript" src="/assets/js/corp/staff_list/clipboard.min.js?1488949046"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/taggle/taggle.js?1501033303"></script>
<script type="text/javascript" src="/assets/js/support.js?1513229868"></script>
<script type="text/javascript" src="/assets/js/modules/corp/vendor.js?1518053117"></script>
<script type="text/javascript" src="/assets/js/app.js?1518053117"></script>
<script type="text/javascript" src="/assets/js/facebook_checker.js?1515552101"></script>
<script type="text/javascript" src="/assets/js/corp/dashboard/index.js?1516794464"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/easy-pie-chart/jquery.easypiechart.min.js?1488949047"></script>
<script type="text/javascript" src="/assets/js/push_notification/main.js?1515552101"></script>
<script type="text/javascript" src="/assets/js/modules/corp/dashboard/index.js?1518053117"></script>
これらのファイルのどれかで定義している
Hoge.fuga 関数 を修正しなくてはなりません。
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
2.DOMとイベントリスナが離れすぎている
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
<button class=“js-hoge-button”>hoge</button>
$(‘.js-hoge-button’).click(function() { … });
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
<button class=“js-hoge-button”>fuga</button>
$(‘.js-hoge-button’).click(function() { … });
変数に代入されていたり
動的に作られていたり
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
どう解決するか
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
1.複数のファイルをまたがっていることによる
複雑さ
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
<script type="text/javascript" src="/assets/plugins/../plugins/jquery/2.2.0/jquery.min.js?1501033302"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-cookie/1.4.1/jquery.cookie.min.js?1501033302"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-ui/jquery-ui.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-ui-multiselect/jquery.multiselect.min.js?1488949047"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/select2/js/select2.full.min.js?1501033303"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery/jquery.plugins.js?1514427457"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/library2.0.6.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/velocity-1.2.2.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/twn-0.9.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/odometer/odometer.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/js/corp/common.js?1518052858"></script>
<script type="text/javascript" src="/assets/js/util.js?1513229868"></script>
<script type="text/javascript" src="/assets/js/corp/staff_list/clipboard.min.js?1488949046"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/taggle/taggle.js?1501033303"></script>
<script type="text/javascript" src="/assets/js/support.js?1513229868"></script>
<script type="text/javascript" src="/assets/js/modules/corp/vendor.js?1518053117"></script>
<script type="text/javascript" src="/assets/js/app.js?1518053117"></script>
<script type="text/javascript" src="/assets/js/facebook_checker.js?1515552101"></script>
<script type="text/javascript" src="/assets/js/corp/dashboard/index.js?1516794464"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/easy-pie-chart/jquery.easypiechart.min.js?1488949047"></script>
<script type="text/javascript" src="/assets/js/push_notification/main.js?1515552101"></script>
<script type="text/javascript" src="/assets/js/modules/corp/dashboard/index.js?1518053117"></script>
これらのファイルのどれかで定義している
Hoge.fuga 関数 を修正しなくてはなりません。
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
<script type="text/javascript" src="/assets/plugins/../plugins/jquery/2.2.0/jquery.min.js?1501033302"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-cookie/1.4.1/jquery.cookie.min.js?1501033302"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-ui/jquery-ui.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery-ui-multiselect/jquery.multiselect.min.js?1488949047"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/select2/js/select2.full.min.js?1501033303"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/jquery/jquery.plugins.js?1514427457"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/library2.0.6.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/velocity-1.2.2.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/library/twn-0.9.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/odometer/odometer.min.js?1488949048"></script>
<script type="text/javascript" src="/assets/js/corp/common.js?1518052858"></script>
<script type="text/javascript" src="/assets/js/util.js?1513229868"></script>
<script type="text/javascript" src="/assets/js/corp/staff_list/clipboard.min.js?1488949046"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/taggle/taggle.js?1501033303"></script>
<script type="text/javascript" src="/assets/js/support.js?1513229868"></script>
<script type="text/javascript" src="/assets/js/modules/corp/vendor.js?1518053117"></script>
<script type="text/javascript" src="/assets/js/app.js?1518053117"></script>
<script type="text/javascript" src="/assets/js/facebook_checker.js?1515552101"></script>
<script type="text/javascript" src="/assets/js/corp/dashboard/index.js?1516794464"></script>
<script type="text/javascript" src="/assets/plugins/../plugins/easy-pie-chart/jquery.easypiechart.min.js?1488949047"></script>
<script type="text/javascript" src="/assets/js/push_notification/main.js?1515552101"></script>
<script type="text/javascript" src="/assets/js/modules/corp/dashboard/index.js?1518053117"></script>
これらのファイルのどれかで定義している
Hoge.fuga 関数 を修正しなくてはなりません。
どこで定義しているのかが
分かれば良い
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
import Hoge from ‘./sample/hoge.js’;
import ActionHelper from './actions-helper.js';
import ContactStore from '../stores/contact-store.js’;
class SampleClass {
piyo() {
return Hoge.fuga(‘hello world.’);
}
}
課題をどう改善するかを決める
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
import Hoge from ‘./sample/hoge.js’;
import ActionHelper from './actions-helper.js';
import ContactStore from '../stores/contact-store.js’;
class SampleClass {
piyo() {
return Hoge.fuga(‘hello world.’);
}
}
課題をどう改善するかを決める
ファイルの場所
がわかる!
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
webpack
モジュールバンドラー
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
import Hoge from ‘./sample/hoge.js’
import ActionHelper from './actions-helper.js';
import ContactStore from '../stores/contact-store.js’;
class SampleClass {
piyo() {
return Hoge.fuga(‘hello world.’);
}
}
課題をどう改善するかを決める
これらもまとめて
1つのファイルに出力する
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
2.DOMとイベントリスナが離れすぎている
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
<button class=“js-hoge-button”>hoge</button>
$(‘.js-hoge-button’).click(function() { … });
課題をどう改善するかを決める
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
<button class=“js-hoge-button”>hoge</button>
$(‘.js-hoge-button’).click(function() { … });
このふたつが同じファイルに書かれていればいい
課題をどう改善するかを決める
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
React
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
<button class=“js-hoge-button”>hoge</button>
$(‘.js-hoge-button’).click(function() { … });
課題をどう改善するかを決める
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
import React from 'react’;
export default class HogeButton extends React.Component {
handleClick() {
console.log('hoge’);
}
render() {
return <button onClick={ this.handleClick }>hoge</button>;
}
}
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
React Developer Tools
コンポーネント名を確認できる
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
import React from 'react’;
export default class HogeButton extends React.Component {
handleClick() {
console.log('hoge’);
}
render() {
return <button onClick={ this.handleClick }>hoge</button>;
}
}
jQueryとは共存
簡単に離れられない。
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
課題をどう改善するかを決める
export default class DatePickerComponent extends React.Component {
componentDidMount() {
this.$input.datepicker(…);
}
componentWillUnmount() {
this.$input.datepicker('destroy');
}
render() {
return <input ref={ (input) => { this.$input = $(input); } }/>
}
}
jQueryプラグインなどを
Reactでラップして利用
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
ESLint
JavaScript用静的検証
ツール
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
ESLint
MyReferでの導入理由
グローバルに存在する名前空間の見える化
var, let, const 忘れによるグローバル変数化を防ぐため
課題をどう改善するかを決める
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
• 自己紹介
• サービス紹介
• おはなしすること
• 取り組みの内容について
• 実際やってどうだったのか
課題を明確にする
課題をどう改善するかを決める
改善していくための方針を決める
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
MyReferでの方針
改善していくための方針を決める
• 新規で追加する機能はReactで
• 既存機能の改修の際は、Reactを使用するかを都度検討
• ESLintでErrorになったコードはpushしない
• まずは画面毎にReact化が完了されている状態を目指す
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
改善していくための方針を決める
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
MyReferでの方針
改善していくための方針を決める
• 最終的には バックエンドはAPIのみを提供する
• APIを スマホアプリと同じ物使用するようにする
• Webのフロントエンドを最終的にはSPAにする
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
MyReferでの方針
改善していくための方針を決める
フロントエンドの改善/検証
バックエンドの改善バックエンド技術検証
フロントエンドの改善
今ここに取り組んでいる
Step1 Step2
ここでSPA化完了
順次APIを作成
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
• 自己紹介
• サービス紹介
• おはなしすること
• 取り組みの内容について
• 実際やってどうだったのか
うまくいってること
うまくいってないこと
その他
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
うまくいってること
新規機能の開発について
うまくいっている
既存機能の改修について
部分的にうまくいっている
既存のUtility系は随時ESモジュール化を進めている
仕様が単純な画面に関しては
実際やってどうだったか
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
• 自己紹介
• サービス紹介
• おはなしすること
• 取り組みの内容について
• 実際やってどうだったのか
うまくいってること
うまくいってないこと
その他
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
実際やってどうだったか
うまくいってないこと
複雑な既存のコードに改善するための着手ができない
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
• 自己紹介
• サービス紹介
• おはなしすること
• 取り組みの内容について
• 実際やってどうだったのか
うまくいってること
うまくいってないこと
その他
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
その他
型チェック
TypeScript2.3以降で使用できる.jsファイルに対する型チェック機能
JavaScriptファイルの JsDoc をもとに型チェック
JavaScript用ユニットテスト
自信を持ってリファクタできるようにする。
コメント文の修正でOK
なところが◎
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
その他
既存のコードをESモジュールとして使用した際に
hoge = ‘hoge’;
strictモードでは
var, let, const 忘れは
実行時エラーになる
webpack導入よりも先に
ESLintで未定義の変数の利用をチェックしておけば防げた。
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
その他
導入に伴う共有など
・Reactについてのチーム内勉強会
・webpackについて共有
・各エディタの設定に関する共有
・Visual Studio Code
・Sublime Text
etc…
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
まとめ
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
まとめ
・Reactと、モジュール機能を使用することで、改善できた。
・既存のコードは、機能の改修がある際に随時改善できている。
・ただし、複雑な機能のコードに対する改善に難航している
自信を持ってリファクタリングできる環境を作ることで改善できるか。
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
まとめ
フロントエンドの改善/検証
バックエンドの改善バックエンドの検証
フロントエンドの改善
今ここに取り組んでいる
Step1 Step2
ハッシュタグ:#devsumiDhttps://github.com/jsuzuki20120311/devsumi-2018-15-d-2
まとめ
・Reactと、モジュール機能を使用することで、改善できた。
・既存のコードは、機能の改修がある際に随時改善できている。
・ただし、複雑な機能のコードに対する改善に難航している
自信を持ってリファクタリングできる環境を作ることで改善できるか。
・上記の課題を解決できれば、
着実に次のステップにすすんでいけるはず。