䞍具合で身の朔癜を蚌明できず1日半を朰した話

2022-12-31T02:28:07.584Z

クラむアントさんから「䜜業前ず比べお䞍具合が出おいる」ず連絡を受け血県で原因究明したものの、結局Chromeのアップデヌトが原因で1.5日を無駄にしたずいう䜕ずも悲しい経隓をしたので、同じ蜍を螏たないために今回の反省点やポむントに぀いおたずめおおきたす。

トラブルの経緯

今回の䞍具合は「Chromeブラりザだけでフォヌム呚りのJavaScriptによる挙動がおかしい」ずいうものでした。もずもず2週間前にサむトの改善のご䟝頌を受けお実斜したものの、そもそもの構造的に改善が難しいこずが分かり、前入金の䞀郚を返金する手続きの途䞭の状態でした。

䞍具合の連絡を受けた時、手元のパ゜コンで再珟を確認したもののChromeのデベロッパヌツヌルのConsoleを芋おも䜕が原因かはすぐには分かりたせんでした。たた䜜業から数日経っおおり蚘憶が薄れおいるこずもあったず思いたす。

1番の原因は元に戻せなかったこず

原因が䞍明なので元の状態に戻そうずしたしたが、それがやりにくい原因がいく぀かあり、今回の「䞍具合が自分のせいじゃ無いず蚀い切れない」ずいう状況を招いおしたったのだず思いたす。

完党なバックアップを取っおいなかった

今回、Amazon EC2 ずいう初めおのサヌバヌ環境で、SFTPによる接続たでは出来たもののサむトのデヌタ量があたりにも膚倧FileZillaで1時間かけおも䜜業キュヌに远加する䜜業すら終わらないで、䞀郚のファむルしかバックアップを取りたせんでした。

AWSコン゜ヌル偎でバックアップはおそらく取れるのですが、今回はコン゜ヌルぞのアクセス暩は芁求せずFTP情報ずSSH甚のPPKファむルしか貰っおいたせんでした。

埌になっお芋返すず觊ったフォルダなのにバックアップを取っおいないファむルが倚数あり、䜜業前に完党に戻すこずがそもそも手元のデヌタだけでは出来ない状態でした。

倧容量デヌタのバックアップの難しさ

そもそも毎回バックアップは取るのですが、今回それを怠った原因ずしおバックアップしたいサヌバヌ䞊のデヌタが倧容量すぎお、時間的にも僕のパ゜コンの容量的にも「こんなの党郚バックアップ取っおらんないよ」ずいう状態だったから取らなかったのです。

おそらく10GBはあったのではず思いたすが、SFTPでの接続だったからFileZillaでの転送速床が遅かった可胜性もありたす。

こういったクラむアントワヌク時のお客さんの倧容量サヌバヌデヌタの良いバックアップ方法がググっおも出なかったので、もし良い方法があれば教えお欲しいです。

それでもバックアップは取れ

バックアップに時間がかかるからずいうのは結局「めんどくさい」ずいう蚀い蚳なので、たず䜜業前にサヌバヌ内の構造を芋極めお今回線集するファむル矀はこれだずいうのを把握しおから、少なくずもその觊る可胜性がある画像以倖のファむルはバックアップしおおくべきでした。

jQueryのバックアップが本圓に䜜業前のものか怪しかった

今回フォヌム呚りの制埡を䞭心にjQueryを倚甚しおいる構造のようで、サヌバヌ䞊のjquery-3.3.1.min.jsファむルをヘッダで読み蟌んでいる圢でした。しかしこのバックアップを取った時にbeautifyするためかでjQueryのサむトのv3.3.1のものをコピヌしたり䞊曞きしたような蚘憶があったのです぀たり「このサむトではサヌバヌ䞊のファむルから読み蟌んでいるけど䞭身は同じjQueryだからサむトから持っおきおも同じでしょ」ず安易に考えた可胜性があったのです 。

ここ最近、Google Chrome でaddEventListenerで付䞎されるpassiveずいうプロパティがデフォルトでtrueになっおおり、jQueryの原文のたたではChrome Console に譊告が出るだけでなく実際にサむトに䞍具合が出たりしたのです。

今回の䞍具合が出たサむトにもConsoleに同様の䞍具合が出たため、「もずもずのサヌバヌ䞊のjquery-3.3.1.min.jsは䞊蚘の察策をしたものだったのでは」「それを原文のコヌドで䞊曞きしたから䞍具合が出おるのでは」ずいう䞍安があり、か぀それを元に戻せないため、自分のせいでは無いずいう蚀い切りができたせんでした 。

お客さんが䜜業埌にファむルを觊っおた

ちょっずズレたすが、今回お客さんが僕の䜜業埌に新たにHTMLに結構な線集を加えおいたした。にもかかわらず非゚ンゞニアでは仕方ないかもですがサヌバヌ䞊のファむルを盎接線集したそうで、僕はそれを持っおいるファむルで䞊曞きしおしたいたした。

結局はお客さんの手元に最新のファむルが残っおいたのですが、gitによるバヌゞョン管理もしおおらず、バック゚ンド偎もGitHubなどのクラりドサヌビスは利甚されおいたせんでした個人のパ゜コン䞊のgit利甚のみ。

怜収期間䞭ずいっおも明確に日数を定めおなかったに䞍具合の連絡がきたので、おっきり「僕が䜜業した埌の状態のたた確認する時間がなくお攟眮しおたのかな」ず解釈しおしたっおいたしたが実際は远加ファむルを觊っおいたした。

䜕ずなく嫌な予感がなかった蚳ではないものの、結局「お客さんっお自ら無償修正しおもらえる可胜性を䞋げたり、支払いが発生するような面倒なこずは進んでやっおくれないんだ」ずいうこずを再認識させられたした。

すごく䞍誠実を感じおお客さんに文句を蚀いたくなりたすが、結局は自分も含めお人間であり、経営の鉄則は「回収は早く、支払いは遅く」なので、僕もこの鉄則に則っお早く回収を迫るべきでした。

なんかずおも悲しい気持ちになりたす。

サヌバヌの蚭定ファむルをVimで盎接線集した

埌述したすが今回はNginxを利甚しおおり、etc/nginx/nginx.confのような蚭定ファむル矀がいく぀かありたす。パヌミッションの関係かこれらのファむルだけはSFTP接続しおいるFileZilla経由では䞊曞きができず、たたパヌミッションを倉曎しおも負荷なのでMacのタヌミナルからSSH接続語にsudo vim nginx.confのコマンドを叩いおVimで盎接ファむルをいじりたした。

しかしそのせいで元の環境に戻す時に「たたタヌミナルでSSH接続しおVimで線集しなきゃいけない」ずいう億劫さがあり、元の状態に戻すこずぞの障害のひず぀ずなっおしたいたした。

Amazon EC2 (AWS) を甘く芋おいた

今回、Amazon EC2 + Nginx + Ubuntu ずいう環境で正盎どれもがほが初めお觊る環境でした。

「觊ったこずないから出来たせん」なんお蚀っおたら仕事なんお出来ないので圓然調べながらXSERVERやApacheずの違いを探っおいく蚳ですが、流石に未知の領域が深すぎお無謀だったかなず反省しおいたす。

AWSやNginxは結構前から定番になっおいるはずなので、やはりAWS勉匷䌚に参加したり、サヌバヌ呚りに詳しい゚ンゞニアの友達を䜜っお、定期的にもくもく䌚などで亀流する必芁性を感じたした。

たたFileZillaやSourcetreeなどのGUIツヌルばかりに頌っおCLIタヌミナルでのコマンド操䜜を結構避けおきたした。しかしSSHを始めただただコマンドでないず出来ないこずが倚いず感じ、今埌はなるべくコマンド操䜜を芚えおいこうず思いたす。

Nginxコマンド

ちなみにNginxも今回が初めおだったので䜿ったコマンド䞀芧をメモしおおきたす。

たずWindows甚のSSHキヌである.ppkファむルをもらったので、これをMac甚の.pemファむルに倉換する必芁がありたす。この倉換はググったら倉換゜フトなどが出おきたす。

SSH接続

それをナヌザヌのルヌトドメむン配䞋の.sshディレクトリに配眮しお以䞋コマンドを叩くずSSH接続できたす。

 ssh -i ~/.ssh/sample.pem [ナヌザヌ名]@[IPアドレス]

Amazon EC2 ならナヌザヌ名は基本ec2-userになるのですが、今回はOSがUbuntuだったためか違いたした。

Super User 暩限でファむルを線集

sudo vim nginx.conf

Nginxの再起動

sudo service nginx restart

他の蚘述方法も色々あるみたいです。今回Ubuntuだったから䞊蚘だったのかも。

デバッグ力のなさ

サヌバヌサむドの話から䞀転しお今床はフロント゚ンドの話ですが、䞻にChrome Developer Tools を利甚したデバッグ術の匱さを改めお感じたした。

䞀般的なElementsタブの利甚やCSSのリアルタむム線集、Networkタブで読み蟌みファむルや読み蟌みスピヌドを把握したりくらいは出来おいたした。Coverageタブで䜿甚されおいないCSSを割り出すずかも出来たす。

しかしブレヌクポむントの貌り方のコツや Event Listeners の項目の利甚法などが匱く、぀たるずころJavaScriptをちゃんず䜓系的に理解できおいないです。

jQueryないの蚘述を読んでも関数ずメ゜ッドの違いや、「そもそもEvent Listener っお䜕だ」ずいう状態だったのでデベロッパヌツヌルを芋おもそれを䜿いこなすための知識が䞍足しおいる感じでした。

熟緎の゚ンゞニアならこのツヌルを駆䜿しお今回の原因や、少なくずも今回觊った箇所が原因でないなどを特定できそうですが、うたく出来ずでした。

Webの情報を持りながらの付け焌き刃の知識の限界を感じたす。本で䜓系的な知識を぀けるか、やはり䌚瀟などで先茩から教えおもらうのが䞀番ですね。はぁ、䌚瀟での人間関係のストレスが無い人っおいるんだろうか。

フリヌランスずしおの心埗

心埗ずしお蚀い切れるかただ埮劙なので、疑問圢でメモしおおく。

  • 怜収期間っお蚭定した方がいいのかな
  • 固定IPな方がアクセス制限やGAの陀倖などに郜合が良い
  • GitHubのPrivate Repositoryに招埅しおもらい玍品はPull Requestずいう玍品圢態が䞀番良いのかも