【プロジェクト概要】
運用中の法人向けクラウドサービスの、WebアプリリニューアルにおけるAPIサーバの一新プロジェクト。既存のAPIv1を元に、新たに必要になるAPIv2の洗い出しや、実装、既存APIのドキュメント化及びリファクタリングなどを担当。
リニューアルプロジェクトの人数は十数人、うち自身が担当しているAPI開発チームは3~5人で、それぞれがドキュメントの作成から実装、テスト作成までを一貫して担当している。
【ドキュメントの作成】
APIBluePrintに基づいたMarkdownによるAPIドキュメントを初めに作成する。作成したドキュメントは、Aglioを用いてドキュメントサーバとしてチーム内で閲覧できるようにし、それを見るだけで実装及びAPIの利用ができる状態を作る。
【実装】
Ruby on Rails5によるAPIの実装。各モデルの読み書きに関するRubyコードを、徹底的にDRYになるようにモジュールを切り出したり、サービス層を積極的に導入するなど、詳細設計にも拘り、レガシーコードが抱えてきた可読性が低い問題を根本から解決する。実装作業は後述のテストコードを書きながら、半テスト駆動開発になることが多い。
【テスト作成】
RSpecによるAPIテストを作成する。前述の実装と順番が前後したり並行して行うことも多い。テストはカバレッジには特に拘らず、実装の難易度や変更可能性などを考慮してブラックボックスに書いたりホワイトボックスに書いたり、様々なテストケースを検証する。いくつかのAPIでは外部サービスに依存するロジックがあったりするので、その場合は必要に応じてドライバ、スタブを用意し、テストの範囲を明確にすることもある。
【プルリクエスト及びレビュー】
実装が完了後は、Githubのコードレビュー機能を用いてプルリクエスト(プルリク)を作成する。プルリクエストでは、どこを何故どのように変更したかのコードの説明を客観的に書くことでセルフレビューを徹底するようにしている。他のメンバーが作成したプルリクに対してのレビューも積極的に行い、そのコード書いた意図や背景をレビューしながら確認することで、自身が理解している範囲を広げるように心がけている。