「いまは不具合が起こっても、個人に責任が行かない環境が整っている」苦境の経験から学んだ、ミスしやすい環境の構築のこと


 kiizankiizanのエンジニアメインメンバーである津守さん、江崎さんのお二人の座談会を開催しました。現在のキーザンのインターンのエンジニアリング体制は津守さん江崎さんがこれまで多くの困難な仕事や苦境を経験し、そこから得た教訓を元に、現在の体制や仕組みをメンバーと共に話し合いながら築き上げてきました。


今回の座談会では、津守さんと江崎さんがそれぞれの経験と学びを通じて、キーザンのエンジニアリング体制の進化について対談をしました。



津守さんのプロフィール

中学からアメリカに移住し、アメリカの大学時代にKiizanにインターンとしてジョイン。その後正社員になり、開発チームの中心としてコーディングから採用まで幅広く従事。常に「ユーザーの価値」に回帰した問題提起を必ずしてくれる。エンジニアの仕事領域に問われず、目的に合わせた発想や意見と行動力を兼ね備えている。

江崎さんのプロフィール

大学時代は京都で、就職で東京のSIerにてワーク。その後に自社開発のフルスタックエンジニアとしてワークするためにKiizanKiizanへジョイン。フロントエンドを中心に開発を担当。Analyticsの解析やユーザーインタビューを通じ、ユーザーの行動を軸にした開発を心がけている。





決済ができていない事件。そして自動テスト導入
今回はキーザンの仕事で一番大変だった仕事のお話を、色々と聞かせてください。よろしくお願いします。

津守:よろしくお願いします!今から3年ぐらい前の「決済ができていない事件」の話なんですが、僕はキーザンのメンズファッションサービスUWearにおける設計とコーディング、テストまで幅広い仕事をしていました。前任からの引き継ぎの時に、江崎さんがKiizanに入社をしましたよね。


江崎:そうそう。僕が入社した時は前任からの引き継ぎ業務が中心で、UWearは新規開発もあって、業務量もわりと抱えている時でした。


津守:そんなバタバタしている時に、一律でお客さんに割引を提供するキャンペーンを実施してたんですよ。


もちろんバタバタしていたことが不具合の理由ではないんですが、そこで決済不具合を起こしてしまいました。2ヶ月にわたり、本来お客様から支払ってもらう料金が支払われていないという問題が発生し、総額で約300万円の未払いがあったことが発覚したんですよね。


江崎:本当にドキドキしました。それが発覚した時、他のことで会議中だったんですけど、一旦中断して決済情報をすぐ確認しました。








不具合の原因はなんだったんですか?

津守:既存のコードに存在した1行のコードを削除してしまっていたことが不具合の原因でした。キーザンではリリースする前に必ずコードレビューを実施していますが、コードレビューを行っても漏れるぐらいの些細な変更だったんです。


江崎:僕が入社3ヶ月のタイミングで担当した案件でした。今考えても、肝が冷える案件です。会社によっては完全にクビになる案件だと思いますね(笑)


津守:いやいや、当時決済情報を見る人が少なかったのもあって、決済で必要なテストの要件が定まっていなかったのも原因の一つなんで、仕方なかったですね。







どう対応をしたんですか?

江崎:まず他のエンジニアメンバーも一緒に、調査して決済を自動で落とせるような処理を急いで作りました。


その時、津守さんがかなり開発チームを引っ張って対応を進めてくださって…助かりました。


津守:引っ張っているように見えて、僕もハラハラしながら決済処理を作ってましたね。間違って別の決済が落ちてしまったら、2次被害に繋がるので。あの時がキーザン史上いちばん集中してたかも(笑)


不具合はすぐに解決できたんですけど、もっと早くに不具合に気付かないといけなかったですね。2か月間も放置されてしまっていて完全に対応が遅れていましたし。







そこから自動テストを導入したんですか?


津守:そうですね!ひとつひとつの画面のボタンをポチポチしながら、きちんと仕様通り動作するかの確認をするんではなくて、自動的にそういった確認ができるコードを書いて常にテストができる状態にするんですよ。ただ、当時キーザンでは自動テストの環境はありませんでした。


以前までは新しい機能を、自分の手で動作確認して、テストが終わったらリリースしていましたが、今回の事件をきっかけに、決済部分はちゃんと自動テストを作っておこうってなりました。


江崎:そうですね。不具合を防ぐ仕組みを作っていくことは大事です。自動テストの環境が無いと、個人が不具合を起こさないように意識することになり、個人の負担が大きくなります。


これから入ってくる新人の教育を考えたうえで、自動テストを作っておけば、そのテストを読めば仕様がわかるようにしておけるっていうのもすごく便利かなと思います!


津守:ただ、一気に全部の機能に対して、自動のテストコードを書くのは、めちゃくちゃ時間かかるので、どの機能が大事なのか優先順位をつけてやりました。「決済のテストはマストだよね」とエンジニアチームで優先順位を話し合いながらやりました。


江崎:そのすり合わせとテストに、けっこう時間をかけましたね。多分2週間はかかったと思います。


津守:もうこんな決済のミスは嫌だって思ってたのか、その時の江崎さんの迫力はすごかった(笑)


江崎:そうなりますよ(笑)だって僕が絶対に決済のテストを作りたいと思ってやっていたんで、なんとしてでもやり遂げないとなと思ってました。


津守:頑張って自動テストを作ったおかげで、今は不具合が起こっても個人に責任が行かないようになっています。トラブルがおこったときもみんなで話し合いながら解決できるようなチーム作りが出来てきました。





この経験から、プラスになったことはありますか?


津守:お客様に新しいものや、使いやすい機能を届けたいっていう気持ちはありましたが、以前は、あんまりシステムの根幹部分は触りたくないなぁって気持ちがありました。大事な部分を、イジってミスしたくない気持ちが強かったんですよね。


でも今は、テストで質を担保されてるよっていう状況を作ったんで、こんな画面を作ったらお客さんが便利かなとか、こういう使い方を提供することで良いUXになるかなと、色々とお客様目線やサービスファーストでやろうという気持ちが強くなってきました。


江崎:確かに。今は、なんでもまずはやってみようという気持ちが強いですね。


津守:本来、エンジニアにとって、テストコードを書くのは、ちょっと嫌なんですよね。新しい機能を実装するのは楽しいですが、検証するコードも時間かけて作らないといけません。頑張ってテストコードを作っても、テストコードはお客さんの目には見えないじゃないですか。そういう形にならないものを作るのは、ちょっと嫌になってくるんですよね。


でもテストを書きたくないなって気持ちよりも、テストがあることで出来ることが増えたり、新機能開発に取り組むときの気楽さを知っているので、テストコードをきちんと書くことは大事だよね!って気持ちに変わりましたね。


江崎:そうですね。新人のエンジニアが入ってきたときも、チャレンジをしてもらいやすくなりました。本当に危ない部分の、ここをミスったらサービスがうまく回らなくなる部分は、しっかりとお互いに確認やフィードバックを強めてやっていきますが、重要じゃない箇所は自動テストでミスした箇所がわかるので、失敗してもらっています。失敗を通じて、みんな丁寧にコードを書けばよかったなという気づきを得るような環境ができました。失敗をして学ぶきっかけにもなってきました!


津守:そういったミスしやすい環境をつくれてるってことが、社内の雰囲気作りに良く貢献しているなと思ってますし、ある程度のクオリティでサービスづくりが出来る環境になっていっていると思ってますね。


江崎:結論、決済の失敗はもうしたくないです(笑)





コメント

このブログの人気の投稿

「洋服を通じて、楽しくなる世界を作りたい。楽しくなるための仕掛けづくりは、まだまだできていない。」キーザンキーザン代表インタビュー

「人への興味が起業の理由」kiizankiizanのCEO井上にインタビュー 〜 小学生でのモノを売る体験とアパレルでやりたいこと〜