致命的なバグを改修し、「リリース延期」のピンチを救った
パソコンやスマホからオンラインで注文し、食料品や日用品が自宅に届く「クイックコマース」。注文から30分程度で商品を配送する即配サービスは、巣ごもり消費が増え、需要が拡大しています。そんな中、大手コンビニエンスストアが「店頭商品を最短30分で宅配するサービス」を開始。今後の成長が期待されている重要サービスと位置付けています。
ユーザーは、たとえば「在宅ワーク中にコンビニに行きたいけど、時間がない」ときにこのサービスを使い、自宅に居ながらコンビニのお弁当や商品を取り寄せることが可能。平日休日を問わず、いつもの生活の中で「日常のデリバリー」として使うことができます。
本サービスは無事リリースされ、アプリのダウンロード数が想定の2倍以上と、ユーザーからの着実な支持を得ています。そしてジャパンシステムは本サービスの中で、アプリの開発・改修に携わりました。
メンバープロフィール
Y.K
2022年入社。システムエンジニア(SE)。入社後、試験チームのテスト業務の担当などを経て、2023年6月より本プロジェクトに参加。
K.I
2020年入社。システムエンジニア(SE)。入社後、製造チームでテストやリリース管理、品質管理などを担当。2023年6月より本プロジェクトに参加。
T.M
2019年入社。システムエンジニア(SE)。入社後、AI案件でモバイルアプリの開発や、スマートシティ案件で開発を担当。2023年6月より本プロジェクトに参加。
S.E
2010年入社。マネージャー。入社後、製造チーム(プログラムを書いて単体テストを行うチーム)で詳細設計やサブリーダーを担当し、4年目からリーダー、12年目からマネージャーに。2023年5月、クライアントから案件の打診があり、本プロジェクトに参加。
アプリを正常に動かすために、ジャパンシステムが助っ人として呼ばれた
■プロジェクトの概要
――今回、ジャパンシステムが参画したプロジェクトの概要から教えてください
大手コンビニエンスストアのクイックコマース・アプリ開発です。アプリのバグ(不具合)があまりに多く、リリース延期が決定された段階で、我々がそのアプリを正常に動かすために助っ人として呼ばれました。
コンビニエンスストアを運営する会社から委託を受けた大手システム開発会社が直接のクライアントで、ジャパンシステムとのお付き合いが長く、確固とした信頼を得ています。
そのクライアントが、アプリのバグを解決できるシステム開発会社を探していたところ、ちょうど私の開発チーム9名が携わっていた別のプロジェクトが終了したタイミングだったので、打診を受けてそのまま本プロジェクトに参画しました。私たちが「すでにチームが安定稼働している」ことと、「経験豊富なスキル保持者がチームに揃っている」ことが打診の理由だと聞いています。
アプリのバグを改修し、一刻も早くリリースするという難易度の高い案件でしたが、「さまざまなプロジェクトで成果を挙げてきた自分たちなら、このミッションもクリアできる」という自信があり引き受けました。
――参画後は、何から始めたのですか?
まずはアプリの仕様を理解し、「本プロジェクトの開発で行われてきたこと」や「コンビニ業務の内容把握」に努めました。そして3ヶ月後のリリースに向けて、「絶対に修正しなければいけない致命的なバグ」を洗い出し、優先順位をつけました。
優先順位の上位は、主にユーザーが直接操作する画面と支払いに関わるシステム部分といった、本アプリにとって重要なUI/UXに関する改修です。たとえば「エラー発生時の画面遷移がユーザーフレンドリーでない」「操作性が他のアプリと比べて劣る」、「誤解を招く金額表示」など、決済まわりのバグです。
■本プロジェクトの担当業務
――今回、S.Eさんとチームメンバー3名の方にお伺いしますが、それぞれの担当業務を教えてください。
私は、アプリのリリース前は「解析・改修チーム」のリーダーとしてマネジメントを担当。リリース後は「開発チーム」のリーダーとして引き続きマネジメントを担当しています。スケジュールやコスト、メンバーの管理が主な役割です。
アプリの中で「支払い方法を選び、決済をする」という、もっともコアな領域の改修を担当しました。参画当初、このアプリは、正しい決済ができない状況でした。中には、フロントエンドでは「通信エラーが出て、『決済を失敗しました』と表示されているのに、バックエンドでは決済が完了してしまっていた」という致命的なバグもあり、このような、特に決済以外の画面や機能に影響が出てしまうバグから優先的に改修していきました。
私が担当したのは、主に「カート(買い物かご)」画面の改修です。改修内容は、たとえば「ユーザーがクレジットカード決済時に入力を間違えてエラーが出た」場合に、入力ミスの部分をエラー表示するだけではユーザーにとっては「どこを間違えているか分からない」状態になる恐れがあるため、「ユーザー離れを防止するためにはユーザビリティに配慮し、エラー箇所を赤く強調表示する」というような不具合の改修などを担当しました。
私も「カート」画面と、あとは「プッシュ通知」に関する部分を担当しました。たとえばスマホに「コード決済キャンセル通知」のプッシュ通知が来た際に、「通知ボタンを押したらこの画面に遷移するが、表示されるべき画面が表示されない」というような不具合の改修をしました。プッシュ通知はアプリだけでなく、スマホ側のシステムも関わっているのでつくりが複雑で、それを理解して改修するのに苦労しました。
■開発で苦労したこと
――改修するうえではほかに、どのようなことに苦労しましたか?
進めるうえでのハードルは2つありました。
ひとつは、本プロジェクトに関連する業務知識がなかったので、そこをどう補うかでした。たとえば「この商品はどう分類されるか?」や「この商品の購入には年齢確認が必要」など、コンビニの小売り業務に関する知識です。
もうひとつは大規模プロジェクトへの途中参画に関するハードルで、「最初につくった人じゃないと分からない部分」が多々あったことです。設計書を読んでもよく分からず、つくった人に確認する必要がありました。また、改修作業中も設計変更や要件変更が頻発したので、一時はチーム人数を増員するなど、調整力が求められました。
今回は、典型的なウォーターフォール開発(開発工程を上流から下流へと順番に進めていく開発手法)だったため、上流工程の開発内容を自分自身も把握しないと、根本的な問題を解決できませんでした。しかも大規模開発なので、ホーム画面、カート画面、注文画面、決済画面など画面ごとに最初の開発者が異なり、開発者を突き止めるまでは、戸惑うことが多かったですね。
また「誰かがつくったものを改修する」難しさも感じました。考え方が違う人がつくったものなので、その人なりのルールやプログラムのクセがあり、そこを理解する必要があります。自分たちでゼロからつくるのとは違いましたね。すでにあるものを「理解」して、どうやって改修するかを考えるのに頭を使いました。
故障対応で苦労したのは「チケットの重複」です。「チケット」とは、故障内容が書かれたタスクのことで、バグを発見した人がその都度発行します。そのため領域が複数にまたがるバグの場合、A領域とB領域で同じ内容のチケットが発行されることが多々ありました。
自分も「B領域のチケットを受け取り、バグを改修しようとすると、すでにA領域のチケットを受け取った人がそのバグを直していた」なんてことがありました。それを経験してからは二度手間が起きないよう、同じ内容のチケットがないかを確認しながら進めるようにしました。
自分は2年目で、圧倒的に経験値や知識が足りておらず、最初のうちは分からないことだらけでした。そこで意識したのは「報連相を大事にする」ことです。業務はテレワークが中心だったので、自分の状況を積極的に報告しなければ、周囲から「何をやっているのか分からない」と思われてしまいます。そこで自分の状況をいつも以上に早い段階で積極的に報告や相談を行うことで、有識者や上位レイヤーの方々の負担を減らすよう努めました。
アプリがリリースされたとき、「自分が携わったものが世に出る」ことに喜びを感じた
■クライアントからの評価
――バグを改修し、クライアントの反応はどうでしたか?
我々が参画した後は、予定していた納期に間に合い、リリースに遅れは出ませんでした。クライアントからは「参画初期の立ち上がりスピードの速さ」や「チームとしての対応力の高さ」について良い評価をいただきました。
またプロジェクト状況に応じてフィージビリティ(実現可能性)を確保したことも評価していただきました。たとえば、バグを改修する中で「このランクのバグはいつまでに」と期限が設けられた場合、ジャパンシステムのメンバーやリソースの中でどれだけ対応できるかは、その時々によって変わります。その際に「今の状況なら、これくらいの対応ができます」とその都度クライアントと調整して体制を作って実現していきました。
本プロジェクトは、終盤の大詰めの時期に参画しまして、関係者の多くは各種の対応で逼迫状態にありました。そのような状況でも目先の対処に捉われることなく、「アプリのリリースに必要なことを中心に据える」「優先順位の高い低いを適切に判断して対応する」、そして「個人プレーではなくチームプレーを徹底」したことが成功につながったと考えています。
■プロジェクトで大事にしていること、やりがい
――最後に、本プロジェクトで大事にしたことと、やりがいを感じたことを教えてください。
大事にしたのは「自分たち本位にならない」こと。クライアントあってこその仕事なので、お互いにメリットがあり、Win-Winになれる関係を目指しました。
また私は本プロジェクトに限らず、「目的に沿った物事の本質を見極める」ことを大事にしています。「このプロジェクトで真に求められていること」や「このプロジェクトにおけるジャパンシステムの果たすべきミッション」など本質の理解を間違えていると、チーム全体の舵取りをミスすることになりかねません。今回も、参画当初にその部分をしっかりと整理・理解し、メンバーに「本プロジェクトにおける我々のミッション」として伝えました。本質を見極めるのはリーダーの最重要任務だと考えています。
やりがいでいうと、世の中に同じプロジェクトは存在しないので、参画したプロジェクトごとに様々な学びとやりがいを実感できることです。良し悪しはもちろんありますが、その経験と学びを「次にどう活かすか」が重要です。
自分が大事にしているのは「省エネルギー&高パフォーマンス」。「いかにコスパ・タイパよく、生産性を高めるか」を意識し、周りに助けてもらいつつ、少ない労力で大きな成果を出せるよう心がけています。
今回、アプリ開発の新技術を経験できたのが自分にとって大きなやりがいに繋がりました。スキルや言語、未知の領域を広げていくのが好きなので、今後も先陣を切って新しい分野への道を切り開きつつ、可視化してチームに展開、メンバーと共有していきたいと考えています。
大事にしているのは「相手にきちんと伝える」ことです。基本的に情報共有はチャットを使ってするので、相手にきちんと伝わらないと「どういうこと?」など確認の手間が増えてしまいます。自分から発する時点で情報をまとめ、伝わるように書くことを心がけています。
今回は、新しい開発言語を経験できたのが嬉しかったです。今後も業務で経験を積み、スキルを広げていきたいです。
自分が大事にしているのは「相手が答えたくなるような質問をする」ことです。チャットでのコミュニケーションは、自分の書き込みが埋もれて後回しにされてしまうことがあります。そうなると自分の業務が進められないので、相手がすぐに理解し、答えたくなるよう、結論から書いたり、なるべく簡潔にしたり、図を入れるなどの工夫をしています。
やりがいを感じたのは、このアプリがリリースされたとき。「自分が携わったものが世に出た」ことに喜びを感じました。実際にアプリをインストールして使ってみました。でも気になることの方が多くて、いろんなボタンを押したり、動作確認をしたりと、仕事みたいなことをしてしまいました(笑)。アプリやモノが実際に世の中でリリースされて、「ここ俺がつくったんだぜ」と言えるのは楽しい仕事だと思います。