Slide 1

Slide 1 text

DevTools を 開いたら 人類滅亡 2018/03/24 ACCESS CO., LTD. Daisuke Kondo @diescake

Slide 2

Slide 2 text

ACCESS CO., LTD. Daisuke Kondo @diescake * Frontend / xR * 大喜利エンジニア * Vim * きのこの山 * iPhone * ガチャピン * 目玉焼き→ソース派 * たいやき→頭から * クラフトビール * テニス * せいそくち 浅草 自己紹介

Slide 3

Slide 3 text

ACCESS CO., LTD. Daisuke Kondo @diescake * Frontend / xR * 大喜利エンジニア * Vim * きのこの山 * iPhone * ガチャピン * 目玉焼き→ソース派 * たいやき→頭から * クラフトビール * テニス * せいそくち 浅草 自己紹介 会社が休みになるボタン https://qiita.com/diescake/items/d4e1fb2dccc2fd4c92d8

Slide 4

Slide 4 text

ACCESS CO., LTD. Daisuke Kondo @diescake * Frontend / xR * 大喜利エンジニア * Vim * きのこの山 * iPhone * ガチャピン * 目玉焼き→ソース派 * たいやき→頭から * クラフトビール * テニス * せいそくち 浅草 自己紹介 布団から腕すら出さずに会社を休む [Google Home] https://qiita.com/diescake/items/4f354a5dc7cb738efd4f

Slide 5

Slide 5 text

DevTools を 開いたら 人類滅亡?

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

devtool-meteor * DevTools が開かれたら、人類滅亡動画が ウィンドウ一杯で再生されるだけの ジョークライブラリ $ npm install --save devtool-meteor import 'devtool-meteor'; https://github.com/diescake/devtool-meteor

Slide 10

Slide 10 text

仕組み

Slide 11

Slide 11 text

devtools-detect * DevTools の開閉が検出可能な EventListener を提供 $ npm install --save devtools-detect windows.addEventListener('devtoolschange', (e) => { console.log(`is DevTools open? ${e.detail.open}`); }); * 要するに devtools-detect 使って、 iframe で YouTube 展開しただけ… https://github.com/sindresorhus/devtools-detect

Slide 12

Slide 12 text

window.outerWidth window.innerWidth 仕組みは単純 >160px then detected !!

Slide 13

Slide 13 text

window.outerHeight window .innerHeight 仕組みは単純 >160px then detected !!

Slide 14

Slide 14 text

単純過ぎない? 副作用とかありそう…

Slide 15

Slide 15 text

window.outerWidth window.innerWidth あっ…、サイドバー… >160px !!

Slide 16

Slide 16 text

window.outerWidth window.innerWidth あっ…、サイドバー… >160px !!

Slide 17

Slide 17 text

Pros/Cons * Pros * Chrome, Firefox, Safari, Edge に対応 * 今後対策される可能性は低い * Cons * DevTools を別ウィンドウにされると 手も足もでない * 性質上 false positive な面が強い

Slide 18

Slide 18 text

他の手段

Slide 19

Slide 19 text

Object の id を利用 const e = document.createElement('any'); Object.defineProperty(e, 'id', { get:() => { alert('devtools open !!') } }); setInterval(() => { console.log(e); }, 2000); * DevTools 表示時に console.log が処理され id が取得される性質を利用

Slide 20

Slide 20 text

Pros/Cons * Pros * Chrome, Safari, Edge に対応 * DevTools が別ウィンドウでも検出可能 * Cons * Firefox 非対応 * 今後対策される可能性がある

Slide 21

Slide 21 text

まとめ * DevTools を検出する銀の弾丸はない * DevTools が利用される前提の作りを * ヘイトを集めるような使い方は NG * 本気出されたら何やっても無理 * 大喜利楽しい

Slide 22

Slide 22 text

エンジニア絶賛募集中 https://www.access-company.com

Slide 23

Slide 23 text

ご清聴ありがとうございました