🎃

金融知識を学びながらの開発:新NISA機能拡充

に公開

はじめに

ロボアド開発グループ サービス機能開発チームのユダです。ロボアドバイザー(ロボアド)のサービスサイトとスマホアプリ用のAPIの開発をしているエンジニアです。

以前、金融未経験からウェルスナビへ転職についての話を投稿させていただきました。転職が成功し、入社してからもうすぐ1年間が経ち、金融未経験としてその間、様々な新しい挑戦をしてきました。

多くの金融機関はビジネス面を内部で行い、システム的な面は完全に外注するケースが多いそうです。しかし、ウェルスナビは社内システムも含めロボアドのシステムも内製化しています。その中のエンジニアとしては技術だけではなく、金融のドメイン知識を持っていれば日々の開発業務がスムーズに進められるではないかと思いました。金融未経験の私が金融知識学びながら開発をしていた新NISA機能拡充についてお話しできればと思います!

新NISAの2年目に向けて対応

ウェルスナビのロボアドのユーザーは「通常の口座(特定口座または一般口座)」(課税)と「NISA口座」(非課税)の両方を利用できます。NISA制度は2024年から新しい制度に変わり、ウェルスナビもそれに対応できるように様々な取り組みをしています。

全自動で新NISA制度で資産運用できるように取り組みはもちろんですが、UIでユーザに情報を分かりやすく表示するためにも取り組みをしています。例えば2024年からの新NISAは利用できる非課税枠が「つみたて枠」と「成長投資枠」が併用できるようになり、ウェルスナビのおまかせNISA画面には枠別でどれくらい利用したかを表示しています。


2024年のウェルスナビのおまかせNISAのホーム画面の非課税枠利用状況

利用状況が毎年リセットされますので、年が変わったら2025年の利用状況が表示されます。年が変わったら前年度の利用状況が見えなくなるので、新NISA2年目の対応の一つとして、前年度の利用状況も画面で確認できるようにする開発をすることが決まりました。

企画チーム、デザインチーム、サービス機能開発チームの3チーム体制で進めていく企画で、サービスサイトとAPIは私が担当させていただくことになりました!

開発前の事前調査と情報収集

企画チームの要件とデザインチームが作ったUIを実現するために調査と情報収集を行いました。

  • ドメイン知識
    • 実装に必要なNISA取引仕組みについて
      • 社内に有識者がいる場合は聞く
  • 既存システムへの影響
    • 機能追加によるデグレが発生しないように対応が必要か
  • 既存システムによる制限
    • すでに稼働している機能に追加する形なので、制限されること、実現できないこと、合わせないといけないことがあるか。
      • スマホアプリチームと相談しながらAPIの作成方針決める
  • 開発にかかる工数
    • UIやロジックの複雑さ
    • 再利用できるパーツがあるか

上記様々な調査や情報収集を行いましたが、学びが多かったことについて話したいと思います。

新NISA制度を知る

私はウェルスナビに入社する前からもNISA口座を開設し、毎月定額でお金を入れて資産運用はしています。この口座で資産運用をすると、利益が課税されないことはわかっていましたが、それ以上はあまりわかっていませんでした。そして2024年からは新NISAとなり、「つみたて投資枠」と「成長投資枠」が併用できるようになったので、私はほとんど何もわからない状態でした。
金融庁の説明でなんとか基礎知識を補いました。

また、NISAの残高は受渡日ベースなので、約定日が年内であっても、受渡日が翌年になる場合は、翌年の非課税枠を利用した取引になります。

約定日・受渡日

NISAも含めて証券取引では約定日と受渡日があります。ウェルスナビのFAQページにも説明がありますが、基本的には:

  • 約定日:株式などの金融商品の売買が成立した日。
  • 受渡日:成立した売買の決済(受け渡し)をする日。

前年度の表示タイミングと元となるデータを調査

既存画面の切り替えタイミングを理解する

おまかせNISAのホーム画面の非課税利用状況の年度は2024/12/24 20:00以降、2024年の情報から2025の情報に切り替わることがわかりました。


2024年


2025年

なぜ2024/12/24の20:00に切り替わるのかはわからなかったのですが、Short Answerはそれ以降の取引の受渡日が年明けになるためでした。

Long Answer

約定日から起算して3営業日なのに、なぜ受渡日が年明けになるのか、私は疑問に思いました。
有識者に確認した結果:

  • ウェルスナビは当日20:00までの入金があれば、翌営業日1:30(米国時間前営業日12:30)に米国で取引を行う。
    • 12/25は米国の祝日、12/28〜12/29は土日、12/31~1/5は年末年始であることを意識した上で、
    • 12/24 20:00までの入金場合、12/26の1:30(米国12/25 12:30)には米国祝日による取引が発生しません。
    • 発生しなかった分、12/26 20:00までの入金とまとめて、12/27の1:30(米国12/26 12:30)に米国で取引を行う。
      • 約定日は(日本)12/27、(米国)12/26ですので、そこから3営業日起算すると、国内(日本)の受渡日が翌年の1/6となる。

ここで祝日や休日が多い年末年始の取引の仕組みについて理解が深まったことは嬉しいことでした。

前年度非課税枠利用状況の表示条件を決める

既存おまかせNISA画面の年度が変わる条件がわかりました。
ただし、年度が変わるタイミングと前年度の非課税利用額が確定になるまでは少し時間が空いていることがわかりました。

なぜ?

12/23の入金があり、新NISA枠で買付があった場合、外部からの情報連携が12/25の朝方に行うこと。それで、当年の非課税枠利用額が変わる。

それでどうすれば良いか?を議論した結果、お客様に確定になった状態の前年度の枠利用状況を表示したいので、何段階かで表示を切り替えることが決定しました。

2024/12/24 19:59まで:2024年の利用状況を表示
2024/12/24 20:00以降:2025年の利用状況を表示、前年度非課税枠利用状況を見るためのリンクはまだ非表示。
2024/12/25 朝:2025年の利用状況を表示、前年度非課税枠利用状況を見るためのリンクを表示し、前年度非課税枠利用状況画面への遷移も可能とする。

調査と情報収集結果を設計書としてまとめる

調査や検討した結果をチームのNotionページに起こして、ついに一番楽しい実装(ものづくり)に挑みました。
コーディング後のプルリクエスト(PR)にコードに起こした複雑な条件分岐などをレビュワーに理解してもらえるように、作ったNotionページの該当する箇所のリンクを貼ってたりします。

サービスサイト、APIの実装

サービスサイトとAPIの開発に進めました。

サービスサイト

仕事のタイトル上はバックエンドエンジニアですが、サービスサイトはバックエンドもフロントエンドもフルスタックで担当しています!形が見える画面を実装するのが嬉しいポイントです。

バックエンド

  • サービスサイト、APIは基本的に同じロジックを使いたいので、共通ライブラリにロジックを追加する。
  • 既存のおまかせNISA画面の拡充ということで、それと同じControllerの中に前年度枠利用画面のエンドポイントを追加する。
    • URL直打ち条件満たさない場合の表示を防ぐためにチェックをする。
  • データ取得は既存と変わらないため、Repositoryクラスをそのまま再利用しました。
  • 様々なパターンでテストコードも追加する。

フロントエンド

  • デザインのFigmaを参照しながらHTML、CSS、Javascriptで画面を作成する。
  • PCブラウザ、スマホ(iOS, Android)ブラウザでも使っていただいてるため、レイアウトが崩れないことを確認する。
  • 画面遷移も正しく動くかも確認する。

API

  • スマホアプリのおまかせNISA画面アクセス時に呼び出しているエンドポイントのレスポンスに前年度の枠利用情報を追加する。
    • 情報取得ロジックはサービスサイトと同じ共通ロジックを使うこと。
  • APIレスポンスを変えたとしても、アプリ側がエラーにならないことを確認。
    • エラーになる場合、スマホアプリのリリース時に強制アップデートをしないといけないので、それを避けたいため。
  • 認識の齟齬がないようにAPIの仕様や開発進捗についてスマホアプリチームと定期的に情報共有をする。

リリース

実装、QAテストを行い、リリースに進みました!
リリースの日はシステム基盤の方との協力で本番環境モジュールを更新し、その後初動確認を行いました。リリース当時は次の年度に切り替わるまで期間が空いていましたので、ひとまず本番環境のおまかせNISA画面が正常に動いたことを確認しました。
そして、切り替わる時期になり、期待通りに今年度と前年度の非課税口座枠利用情報が表示できました!

2025年の非課税枠の利用状況が表示されるおまかせNISAホーム画面


前年度の非課税枠利用状況新画面

まとめ

これらの対応した結果、無事リリースができ、ユーザーにより便利な情報を提供できるようにしました。
小さな機能追加の開発でも、多くの学びになりました。NISAについてや自社の取引の仕組みについても理解が深まった経験でした。技術面もそうですが、開発を通してチーム横断のコミュニケーションや金融知識も学べて有意義な1年でした。
今後もおまかせNISAをもっと使いやすくなるための開発を継続していきたいと思います!

WealthNavi Engineering Blog

Discussion