# プロジェクト概要
旧バックエンドが古く、テストもないのでRuby on Rails(以下RoR)で書き直そうということになっている。2021年あたりから始まっているプロジェクトで、そこに2023年2月より参加。別件の課金システム移行など同チームメンバーで他プロジェクトの対応なども行っている。
# チーム情報
旧バックエンドをメインで触っていた人が1人、新バックエンドをメインで触っていた人が2人(+私)の4人体制。
アプリや一部フロントは別チームが開発。PCフロントの一部はバックエンドチームで作業することもある。
2023年下期からはバックエンドチームとして旧バックエンド(PHP)も保守するようになった。
基本的にはモブプロで作業しつつ、コアタイム外で個人作業を行っている。
# プロジェクト詳細
【概要1】漫画アプリのバックエンド移植
【どのような機能の開発・実装か】
ブラウザ、アプリ両方から呼ばれるバックエンド。現在はPHPで書かれているがほとんどテストが存在しないため、RoRでテストを書きながらテーブル構成や処理を整理しつつ移植を行っている。
【課題・問題点】
移植段階のためDBが共通なためDBの改修までが遠く、リファクタしきれない部分が多くある。
既に使われていないカラムもたくさんあるため、見つけるたび都度調査をして削除していかなければならない。
長く運用されているサービスのため、歴史的経緯が存在したりしておりドメイン知識が必須な場面が多々ある。(ほとんど同じ意味合いのカラムだが使い道が別、など)
【打ち手・使用した技術】
チーム全体でモブプロ/ペアプロの形を取りながら移植を進めている。ドライバーの場合は都度仕様や背景を質問しながら作業する。ナビゲーターの場合はRubyの言語的な仕様やよりよい書き方を適切なドキュメントや内部実装を読み解きながら提示したり、エッジケースの漏れなどを指摘している。
移行元であるPHPの言語的知識は少ないため、Rubyとは違う構文やディレクトリ構成などは教えてもらいつつどのような実装がされているか確認し、過不足なくRoRへの移植を行うようにしている。
使用した技術:Ruby、Ruby on Rails、PHP(リーディングのみ)、terraform
【概要2】課金システム移行
【どのような機能の開発・実装か】
他社が開発していた課金システムを自社のものに移植しなければならない。という話になり行ったもの。この作業を行っている間は上記バックエンド移植は行っていない。
【課題・問題点】
他社(グループ内)の開発したシステムだったため、内部でどのような処理が行われているのか全くわからない状態での移植だった。
ドキュメントは共有されていたがかなり前に開発されたものだったのでドキュメント自体も保守されておらず、本当に正しいか怪しかった
課金周りなので問題なく移植し、システムメンテを可能な限り行わずに運用移行する必要があった。
【打ち手・使用した技術】
チーム全体での開発を行った。全体的に処理自体は単純だったため、ドライバーとして動いた時間が多かった。
開発自体は自分達がどのような処理を行うことを想定してAPIを叩いているか洗い出して実装を進めた。
受け取ったDBのレコードを確認し、こちらで実装した処理と齟齬がないか確認を行った。実際にはいくつか想定外の処理が存在していたが、ヒヤリハットで済んでいる。
並行運用を行い移行後システムと同時に書き込みを行うことでレコードの差分や残高などを確認し、問題ないことを確認してから切り離しを行った。
使用した技術:Ruby、Ruby on Rails
【概要3】非エンジニアからの依頼対応
【どのような機能の開発・実装か】
企画の特別対応や通常運用の改善依頼など。不定期で差し込まれるためタイミングによってはバックエンド移植ではなくこちらにかかりきりになることも。
【課題・問題点】
本当に必要なのか、やりたいことはなんなのかがあやふやな状態での依頼も多いため、そういった部分のヒアリングから行う必要がある。コストに見合うかどうかなども判断する必要がある。
時折緊急のものが発生するため、そういった作業は割込で着手する。
【打ち手・使用した技術】
週に1回リファインメントがあるため、その場で確認出来ることはしつつ、技術調査が必要なものはリファインメント後などに調査し回答を行っている。ドメイン知識が必要なものが多いため、この部分については他メンバーが行っていることがほとんど。
コアタイムはメイン作業を行いたい気持ちもあるため、方針だけ固めてコアタイム外で個人作業を行うことで効率化した。
使用した技術:PHP、Ruby、Ruby on Rails、BigQuery、LookerStudio
【概要4】Rails7.1へのアップグレード
【どのような機能の開発・実装か】
Rails最新を基本的には追従しているが、今回は簡単に出来なさそうだったので調査や修正などを行う。個人で判断出来ないものは共有した上でチーム全体での作業とした。
【課題・問題点】
Rails7.1.2までいくつかのリリースが含まれており、リリースノートが結構な量だった。
複合主キーを用いており、Rails7.1からはRails自体が複合主キーに対応してくれたため、Railsの処理に乗っかる必要がある。
予約語が厳密化されており、一部予約語を利用している箇所があったためDBを修正しないといけない。
使用しているgemに含まれているRBSにバグが存在しており、レスポンスの速度の都合もありすぐの修正が望めない。
【打ち手・使用した技術】
基本的に個人で調査、修正を行った。
リリースノートをさらって、関係のありそうな部分のみ抜粋してチーム内に共有、問題がないか確認してもらった。
予約語については共有の上でチーム全体で対処。カラム名変更で対応したが、特に問題なくmigration出来た。
複合主キーについてはライブラリのissueで確認してみたところ、Rails7.1の機能で充分とのことだったのでそのまま修正。
RBSについてはPRを出した上でrbs collection上でignoreすることで対応した。
使用した技術:Ruby、Ruby on Rails