高難度のイシューやブラウザ依存のバグにはどう対応する?
ここからは、坂村氏が経験した技術的事例を紹介する。まずは、小学生向けの新しい学習コンテンツ「スライドコンテンツ」だ。これは、従来のものよりも動画や音声を活用し、よりインタラクティブな学習体験を提供する。
着手時点で要件が固まっておらず、仕様も複雑で高難度なイシューだった。開発タスクはリードエンジニアとペアプログラミングで進めたが、常に同期的に作業できるわけではない。例えば、あらかじめチャットで作業順序の同意をとるなど、1人で開発する場合とは異なるコミュニケーションスキルを習得する必要があった。
同時に、この案件はバックエンドタスクへの「染み出し」(自分の役割を超えて、別の領域の仕事にも挑戦すること)の契機ともなった。坂村氏は前職や副業でバックエンドの経験があり、今後のキャリアを考えるとバックエンドのスキルや実務経験も伸ばしていきたいという強い意欲があった。坂村氏が「やっていき」と呼ぶ、このやる気を原動力に、設計から実装、テスト作成まで担当し、先輩にこまめにレビューしてもらったという。
この案件を振り返り、坂村氏は「後方互換性を担保する設計や開発の難しさを体験できました。また、複数サービスからなる大規模サービスの開発を経験できたのも良かったです」と話す。「染み出し」については、「フロント担当だからといってバックエンドやUI/UXを知らなくていいわけではない。『やっていき』がある人が少しずつ他の領域に染み出していくことで、チーム全体の能力が広がっていく」とその重要性を強調した。
もう1つの事例は、ブラウザ依存のバグ対応だ。国語の教材では、ブラウザであまり見ない縦書き表示をするため、ブラウザ依存のバグに遭遇することがある。このようなバグは再現性が低く、調査に困難が伴うことも多い。実際に坂村氏も、縦書き表示で左から右へスクロールしようとボタンをタップすると、スクロールが右端にリセットされてしまう現象に遭遇した。
このバグに対し、坂村氏はパフォーマンスタブを使用してブラウザの挙動を地道に細かく調べることで、何とか解決につなげることができた。この経験を振り返って、「実務でないとなかなか経験できないことですが、成長のために必要なスキルかなと思っています」と語った。