SlideShare une entreprise Scribd logo
1  sur  33
アップデートとテスト
自己紹介
名前:キグレアキヒコ
職業:フリーランス プログラマ
サラリーマンの聖地界隈で、Angular 書いています
Profiee 始めました
https://profiee.com/i/lifewood
今日お伝えしたい事
• 公式ドキュメント
• ソースコード
これらをきちんと読もうな!
※自戒を込めて
V6 => v8 での分かった事
https://update.angular.io/
ここで手順を確認せずに・・・・
$ ng update --all --fource
やるなよ!
絶対に、やるなよ!
やって分かった事その1
関連するパッケージの最新バージョン情報が一律把握できた
やって分かった事その2
ERROR in The Angular Compiler requires TypeScript
>=3.4.0 and <3.5.0 but 3.5.1 was found instead.
その時は、冷静にpackage.jsonの以下の修正をして、
再度 npm i "typescript": "~3.5.0" => "typescript": "~3.4.5”
※現在は、v3.5.3でも大丈夫です。
やって分かった事その3
ポリフィル
core-jsが、v2.x => v3.x になった影響で、
tsconfig.jsonのpathsに追記が必要になりました。
やって分かった事その4
コードコンバート
• loadChildren
• v6 => v8 NG
• v7 => v8 OK
コードコンバート
• ViewChild第二引数
• v6 => v8 OK
• v7 => v8 OK
やって分かった事その5
karma, jasmineのバージョンも
同時にアップしたので、
テストコードの修正も発生しました。
バージョンアップ前
spyOn(~~~, 'xxx').and.returnValue(() => of());
xxx: http系関数
バージョンアップ後
spyOn(~~~, 'xxx').and.returnValue(() => of(new HttpRespopnse()));
spyOn(~~~, 'xxx').and.returnValue()
バージョンアップ前
const spy_scroll = spyOn(component, 'scrollEvent').and.callThrogh();
spy_scroll.calls.argsFor(0)[0].target.scrollTop;
spy_method.calls.argsFor(0)[0].subscribe(() => {}):
バージョンアップ後
(<HTMLElement> spy_scroll.calls.argsFor(0)[0]).target) .scrollTop
(<Observable<void>> spy_method.calls.argsFor(0)[0]) ) .subscribe(() => {})
argsFor
やって分かった事その6
rxjs v6.3.3 => 6.5.2
Observable.create => new Observable();
https://git.io/JensD
Subject.create => new Subject();
https://git.io/JensQ
rxjs v6.3.3 => 6.5.2
tap(undefined, () => {}) => tap( { complete(): () => {} } )
tap(undefined, () => {}) => tap( () => {} )
https://git.io/Jensd
rxjs v6.3.3
rxjs v6.5.2
やって分かった事その7
Ivy
ERROR in There is no format with import statements
in '/Users/lifewood/work/ng-migrate-
sample/node_modules/ng-click-outside' entry-point.
対処
ライブラリのgithubにissueがあるかつ
ビルドエラーになった時にivyオプションの使用を
取りやめました。
追記:その後
解決されました。
やって分かった事その8
Swagger Code Generator
コード生成後にビルドエラーになった定義
• multipart/form-data
• パラメータにblobを使用
対処
対象のコードを正規表現で置換するシェルを
実装して対処しました。
Before
let formParams: { append(param: string, value: any): void; };
Afeter
let formParams: { append(param: string, value: any): void | HttpParams; };
ユニットテストを実装して分かった事
状況
• コンポーネント数
• テスト数: 約2400件
テスト開始当初
• jenkins 実行時間: 約60分
テスト改善後
• jenkins 実行時間: 約12分
テスト改善の為にやったこと
• モックを作る
• スタブを作る
• NO_ERRORS_SCHEMA を実装する
• 不要なモジュールをインポートしない
• 画面系モジュールのインポート実装を削除しただけで、
2〜3秒変わった
https://angular.jp/guide/testing
テスト実装効率化の為にやったこと
*.spec.tsのみのビルドスクリプトを実装
今現在の状況
• component: 406
• module: 26
• service: 57
• helper: 19
• pipe: 11
• model: 42
• enum 23
• const: 14
test 件数: 3353(skip: 158)
手元計測:約18min
告知1 10/05
第11回:Angular もくもく会@グンマー
告知2 11/09
第1回 ng-saitama@大宮
ご清聴有難うございました!

Contenu connexe

Tendances

201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園Y Watanabe
 
ASP.NET MVCはNullReferenceExceptionを潰している件
ASP.NET MVCはNullReferenceExceptionを潰している件ASP.NET MVCはNullReferenceExceptionを潰している件
ASP.NET MVCはNullReferenceExceptionを潰している件Joni
 
Vagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようVagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようTakuma Morikawa
 
Force.comサイトで動かすWeb Starter Kit
Force.comサイトで動かすWeb Starter KitForce.comサイトで動かすWeb Starter Kit
Force.comサイトで動かすWeb Starter KitTaiki Yoshikawa
 
今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おうHayashi Yuichi
 
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LTY Watanabe
 
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分松田 千尋
 
プライベートAPIとの闘い
プライベートAPIとの闘いプライベートAPIとの闘い
プライベートAPIとの闘い107steps
 
behatエクステンションの作り方
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方Ryo Tomidokoro
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活をRyunosuke SATO
 
Pinoco phptal-phpcon-kansai
Pinoco phptal-phpcon-kansaiPinoco phptal-phpcon-kansai
Pinoco phptal-phpcon-kansaiHisateru Tanaka
 
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷javaY Watanabe
 
React入門-JSONを取得して表示する
React入門-JSONを取得して表示するReact入門-JSONを取得して表示する
React入門-JSONを取得して表示するregret raym
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?Masahiro Sano
 
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話Y Watanabe
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIWataru MIYAGUNI
 
Chrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるにはChrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるにはYosuke HASEGAWA
 
第5回名古屋若手Webエンジニア交流会
第5回名古屋若手Webエンジニア交流会第5回名古屋若手Webエンジニア交流会
第5回名古屋若手Webエンジニア交流会Yuta Mizui
 

Tendances (20)

201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
 
ASP.NET MVCはNullReferenceExceptionを潰している件
ASP.NET MVCはNullReferenceExceptionを潰している件ASP.NET MVCはNullReferenceExceptionを潰している件
ASP.NET MVCはNullReferenceExceptionを潰している件
 
Vagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようVagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみよう
 
Force.comサイトで動かすWeb Starter Kit
Force.comサイトで動かすWeb Starter KitForce.comサイトで動かすWeb Starter Kit
Force.comサイトで動かすWeb Starter Kit
 
今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう
 
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
 
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
 
プライベートAPIとの闘い
プライベートAPIとの闘いプライベートAPIとの闘い
プライベートAPIとの闘い
 
behatエクステンションの作り方
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活を
 
Pinoco phptal-phpcon-kansai
Pinoco phptal-phpcon-kansaiPinoco phptal-phpcon-kansai
Pinoco phptal-phpcon-kansai
 
REACT & WEB API
REACT & WEB APIREACT & WEB API
REACT & WEB API
 
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
 
React入門-JSONを取得して表示する
React入門-JSONを取得して表示するReact入門-JSONを取得して表示する
React入門-JSONを取得して表示する
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
 
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
 
Chrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるにはChrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるには
 
第5回名古屋若手Webエンジニア交流会
第5回名古屋若手Webエンジニア交流会第5回名古屋若手Webエンジニア交流会
第5回名古屋若手Webエンジニア交流会
 
V8 Iginition Interpreter
V8 Iginition InterpreterV8 Iginition Interpreter
V8 Iginition Interpreter
 

Similaire à 20191003 classi night-04

JobScheduler Code Reading
JobScheduler Code ReadingJobScheduler Code Reading
JobScheduler Code ReadingShinobu Okano
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 Hideo Takahashi
 
ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築Masahiro Wakame
 
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
既存Objective-CプロジェクトをSwiftに移行した時ハマったことapuruni
 
Behat Driven Development
Behat Driven DevelopmentBehat Driven Development
Behat Driven DevelopmentRyo Tomidokoro
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室Yusuke Ando
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Makoto Nishimura
 
こんなに違う!Unityアプリケーション講座
こんなに違う!Unityアプリケーション講座こんなに違う!Unityアプリケーション講座
こんなに違う!Unityアプリケーション講座Unity Technologies Japan K.K.
 
Hatena blogdevelopmentflow
Hatena blogdevelopmentflowHatena blogdevelopmentflow
Hatena blogdevelopmentflowYasuhiro Onishi
 
20090704rubyist九州
20090704rubyist九州20090704rubyist九州
20090704rubyist九州koki_h
 
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersIntroduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersTakeshi Arabiki
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺Shogo Kawahara
 
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみようHoriguchi Seito
 
AmazonElasticBeanstalk
AmazonElasticBeanstalkAmazonElasticBeanstalk
AmazonElasticBeanstalkTaisuke Oe
 
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京hecomi
 
Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3Kiyotaka Oku
 

Similaire à 20191003 classi night-04 (20)

JobScheduler Code Reading
JobScheduler Code ReadingJobScheduler Code Reading
JobScheduler Code Reading
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
 
ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築
 
Angular2実践入門
Angular2実践入門Angular2実践入門
Angular2実践入門
 
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
 
Behat Driven Development
Behat Driven DevelopmentBehat Driven Development
Behat Driven Development
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
 
こんなに違う!Unityアプリケーション講座
こんなに違う!Unityアプリケーション講座こんなに違う!Unityアプリケーション講座
こんなに違う!Unityアプリケーション講座
 
Word bench7月号
Word bench7月号Word bench7月号
Word bench7月号
 
Hatena blogdevelopmentflow
Hatena blogdevelopmentflowHatena blogdevelopmentflow
Hatena blogdevelopmentflow
 
20131227_appium+rspec
20131227_appium+rspec20131227_appium+rspec
20131227_appium+rspec
 
20090704rubyist九州
20090704rubyist九州20090704rubyist九州
20090704rubyist九州
 
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersIntroduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature Engineers
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺
 
Beginners scala 20121113
Beginners scala 20121113Beginners scala 20121113
Beginners scala 20121113
 
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
 
AmazonElasticBeanstalk
AmazonElasticBeanstalkAmazonElasticBeanstalk
AmazonElasticBeanstalk
 
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
 
Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3
 

Plus de Akihiko Kigure

Angular + Typedoc + Github Page
Angular + Typedoc + Github PageAngular + Typedoc + Github Page
Angular + Typedoc + Github PageAkihiko Kigure
 
Wo t~chirimenのこれまでとこれから
Wo t~chirimenのこれまでとこれからWo t~chirimenのこれまでとこれから
Wo t~chirimenのこれまでとこれからAkihiko Kigure
 
誰得?CHIRIMEN Tips
誰得?CHIRIMEN Tips誰得?CHIRIMEN Tips
誰得?CHIRIMEN TipsAkihiko Kigure
 
CHIRIMEN Open Hardware Community の紹介
CHIRIMEN Open Hardware Community の紹介CHIRIMEN Open Hardware Community の紹介
CHIRIMEN Open Hardware Community の紹介Akihiko Kigure
 
Welcome to hello real world
Welcome to hello real worldWelcome to hello real world
Welcome to hello real worldAkihiko Kigure
 
Welcome to hello real world short
Welcome to hello real world shortWelcome to hello real world short
Welcome to hello real world shortAkihiko Kigure
 
osc群馬個人的振り返り
osc群馬個人的振り返りosc群馬個人的振り返り
osc群馬個人的振り返りAkihiko Kigure
 
お前(俺も)はまだChirimenを知らない
お前(俺も)はまだChirimenを知らないお前(俺も)はまだChirimenを知らない
お前(俺も)はまだChirimenを知らないAkihiko Kigure
 
oscooヤラナイカ?
oscooヤラナイカ?oscooヤラナイカ?
oscooヤラナイカ?Akihiko Kigure
 
AWS Summit Tokyo IoT アイディアソン&ハッカソン 2015
AWS Summit Tokyo IoT アイディアソン&ハッカソン 2015AWS Summit Tokyo IoT アイディアソン&ハッカソン 2015
AWS Summit Tokyo IoT アイディアソン&ハッカソン 2015Akihiko Kigure
 
20150411コードリーディング
20150411コードリーディング20150411コードリーディング
20150411コードリーディングAkihiko Kigure
 
20150117 gunmaweb Firefox OSの紹介
20150117 gunmaweb Firefox OSの紹介20150117 gunmaweb Firefox OSの紹介
20150117 gunmaweb Firefox OSの紹介Akihiko Kigure
 
20141115グンマーのヤボー
20141115グンマーのヤボー20141115グンマーのヤボー
20141115グンマーのヤボーAkihiko Kigure
 

Plus de Akihiko Kigure (14)

Angular + Typedoc + Github Page
Angular + Typedoc + Github PageAngular + Typedoc + Github Page
Angular + Typedoc + Github Page
 
Wo t~chirimenのこれまでとこれから
Wo t~chirimenのこれまでとこれからWo t~chirimenのこれまでとこれから
Wo t~chirimenのこれまでとこれから
 
誰得?CHIRIMEN Tips
誰得?CHIRIMEN Tips誰得?CHIRIMEN Tips
誰得?CHIRIMEN Tips
 
CHIRIMEN Open Hardware Community の紹介
CHIRIMEN Open Hardware Community の紹介CHIRIMEN Open Hardware Community の紹介
CHIRIMEN Open Hardware Community の紹介
 
Welcome to hello real world
Welcome to hello real worldWelcome to hello real world
Welcome to hello real world
 
Welcome to hello real world short
Welcome to hello real world shortWelcome to hello real world short
Welcome to hello real world short
 
osc群馬個人的振り返り
osc群馬個人的振り返りosc群馬個人的振り返り
osc群馬個人的振り返り
 
お前(俺も)はまだChirimenを知らない
お前(俺も)はまだChirimenを知らないお前(俺も)はまだChirimenを知らない
お前(俺も)はまだChirimenを知らない
 
oscooヤラナイカ?
oscooヤラナイカ?oscooヤラナイカ?
oscooヤラナイカ?
 
AWS Summit Tokyo IoT アイディアソン&ハッカソン 2015
AWS Summit Tokyo IoT アイディアソン&ハッカソン 2015AWS Summit Tokyo IoT アイディアソン&ハッカソン 2015
AWS Summit Tokyo IoT アイディアソン&ハッカソン 2015
 
20150411コードリーディング
20150411コードリーディング20150411コードリーディング
20150411コードリーディング
 
20150822 osc島根
20150822 osc島根20150822 osc島根
20150822 osc島根
 
20150117 gunmaweb Firefox OSの紹介
20150117 gunmaweb Firefox OSの紹介20150117 gunmaweb Firefox OSの紹介
20150117 gunmaweb Firefox OSの紹介
 
20141115グンマーのヤボー
20141115グンマーのヤボー20141115グンマーのヤボー
20141115グンマーのヤボー
 

20191003 classi night-04