非属人性を意識して 非属人性を意識して

全体を学ぶことができるチャンス

インターネットに接続されたゲーム機を介して、ダウンロードソフトなどが購入できる「ニンテンドーeショップ」は、2011年からサービスを開始し、現在まで10年以上にわたってさまざまなサービスや機能を追加してきました。長期間にわたってサービスの提供をしていますので、実装当時は最新の技術や考え方であっても、時間の経過とともにだんだんと古くなり、保守性が下がるなどの課題が見えつつありました。そのため、サーバー機能のリノベーションを行うことになったのですが、とても大きなシステムでもあるため、一度にすべてを変えるとお客様のご利用にも影響が出てしまう可能性があります。そこで、時間をかけて段階的に、システム全体のマイクロサービス化をしながらリノベーションを行うことになりました。

マイクロサービスとは、一か所に全機能を集中させるのではなく、複数の独立した小規模なサービスを組み合わせて、ひとつの大きなアプリケーションを構築する開発手法です。私がチームに配属された時点で、ニンテンドーeショップのリノベーションは日々行われていましたが、その中で私は、ニンテンドーeショップ上で発生する購入履歴など、さまざまな履歴情報を扱うサーバーの開発を行なうことになりました。

このとき、先輩社員はほかのタスクを掛け持ちで担当していたこともあり、先輩社員がアーキテクチャ検討などに集中できるよう、私が開発タスク全般を担当するようにしました。多種多様なタスクがあるため大変ではありましたが、Web APIサーバー開発やCI構築、負荷試験など、開発の頻出タスク全体を一度に学ぶことができる大きなチャンスでもありました。

ニンテンドーeショップの「ご利用記録」

リスクを想定しながら開発

まず私は、それまで運用されてきた購入履歴情報を扱うサーバーの中身や経緯について調査を行いました。ただ、長い歴史があるものですので、その時々に発生した要件に起因する部分も残っており、過去のコードを読むだけでは理解できないことが多くありました。そこで、わからない部分は私より先に検討を進めていた先輩社員に質問し、今の仕様に至った経緯についての理解を深めていくことで、サーバーを一から再構築しました。このとき私は、最新の技術を使ってただ再構築をするだけでは不十分であると考え、リノベーションに合わせてとことん仕様や実装を整理して、後からチームに入った人でもすぐに理解できる状態にすることを強く意識するようになりました。

開発中の出来事で特に記憶に残っているのは、リリースが近づいた時期に行なった負荷試験で、想定したような結果が出なかったときのことです。ニンテンドーeショップにはクリスマスシーズンにアクセスが集中するため、そのままでは数年後に乗り切れなくなる可能性が出てきてしまうことから、チームメンバーと相談して修正を行うことになりました。そのときに、あらかじめ仕様を整理していたことで、問題のありそうな箇所を早々に絞りこむことができて、素早く最小限の範囲の作業で問題を解決できたときは、それまでの仕事が活きたと実感したことを覚えています。

私はこのプロジェクトを通じて、一人の開発者に依存しないような非属人性を意識して仕事に向き合うようになりました。具体的には、未来の自分も含めて、後に関わる開発者たちが、サーバー開発で検討されてきたことや実装の経緯をすぐに理解できるように、仕様や実装をとことん整理したうえで、ドキュメント化や読みやすいコードを書くことを意識するようになりました。新しいプロジェクトに関わる際にもその考え方は活かすことができています。これからも、任天堂のサービス提供に長期にわたって貢献するために、非属人性を意識して開発に取り組んでいきたいと考えています。

社員略歴

中川技術開発本部/2021年入社
2021年「理工系(ソフトウェア)」入社。
ニンテンドーeショップのバックエンドを構成するサーバー群のうち取引情報の管理を扱うサーバーの開発に携わる。現在はニンテンドーeショップで購入した権利の管理を行うサーバーの開発に従事中。
職種

↑