Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
これまでに一番苦労したプロジェクト
Search
とんと
July 29, 2023
0
19
これまでに一番苦労したプロジェクト
私が 6 年間のエンジニア人生で一番苦労したプロジェクトの話をします。
とんと
July 29, 2023
Tweet
Share
More Decks by とんと
See All by とんと
推しの VTuber の公式 Web サイトを作った Part.2
ryuseinomi
0
22
推しの VTuber の公式サイトを作った
ryuseinomi
0
150
ぼっちがリモートワークやってみた
ryuseinomi
0
69
Kanazawa.rbを振り返る
ryuseinomi
0
79
もう僕は勤怠を入力しなくても良い
ryuseinomi
0
40
Goで始めるWebsocketプログラミング
ryuseinomi
0
130
AWS Lambdaでファイルをこねくり回す
ryuseinomi
0
360
iOSアプリをリリースするまで
ryuseinomi
2
360
ベトナムエンジニアと 仲良く仕事を進めるには?
ryuseinomi
3
300
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
401
65k
Building Better People: How to give real-time feedback that sticks.
wjessup
359
19k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Building Flexible Design Systems
yeseniaperezcruz
325
38k
Making Projects Easy
brettharned
113
5.8k
Faster Mobile Websites
deanohume
304
30k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
89
16k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
36
1.7k
Learning to Love Humans: Emotional Interface Design
aarron
270
40k
Designing for Performance
lara
604
68k
Transcript
@27ma4_ton10 github.com/RyuseiNomi 人生で一番苦労したプロジェクト
Ryusei Nomi # Webエンジニア # マリオカート # VTuber # Go
/ Javascript @27ma4_ton10
事業システムのカバレッジ向上 (2018/4 ~ 2019/6) 苦労したプロジェクト
🛠 技術スタック ・PHP 5.1 ・PHPUnit 4.x ・Docker ・Selenium ・ShellScript
📝 プロジェクト概要 ・ PHP のバージョンアップをしよう! ・そのためにテストカバレッジを上げよう
🥺 困難な点 ・ PHPUnit が古すぎて private メソッドのモックが作れない ・巨大な public
メソッドのテストが困難
None
∑(゚Д゚)!?
🛠 runkit 関数とは? ・メソッドや組み込み関数の 動作を変更したり、抹消したり出来る😈
None
・ return10 が 10 以外を返せること ・ add10 を呼んだ時に return10 を通らないこと
・他のテストケースに影響しないこと
先に理想の テストコードを 書いてみた
これ 1 行で モックを 作りたい!
❓モック化する手順 1. 本番コードのクラス名とメソッド名を受け取り、ランダムな文字列にリネーム 2. メソッド名とランダムな文字列を紐づけるために、プロパティにスタック 3. 該当するメソッド名と同じ名前の偽メソッドを作成 4. 偽メソッドが本番コードになりすましている間にテストを実行 5.
テストが終わったら偽メソッドを消して、プロパティから本番コードを取り出し、元の名前にリネーム
本番コードのクラス名とメソッド名を受け取り、ランダムな文字列にリネーム
メソッド名とランダムな文字列を紐づけるために、プロパティにスタック
該当するメソッド名と同じ名前の偽メソッドを作成
偽メソッドが本番コードになりすましている間にテストを実行
テストが終わったら偽メソッドを消して、プロパティから本番コードを取り出し、元の名前にリネーム ・必ず後ろから順に削除する ・プロパティの中身を全て削除する
None
💰 何が得られたか? ・よりテストコードを書きやすくなった ・社内ライブラリとして公開することで みんなテストを書いてくれるようになった
📣 今後に活かせること ・作ったものは自慢しよう ・自分たちがやっている仕事をアピールしよう ・その成果が誰かを幸せにするかも知れないから
None