Ruby on RailsのRFP/要件定義書/提案依頼書について

Ruby on Rails(以下Rails)での開発を外部ベンダーに発注するとき、RFP(提案依頼書)や要件定義書をどう作り込むかが、プロジェクトの成否とTCO(総保有コスト)を大きく左右します。発注側が「Railsで作ってほしい」とだけ伝えると、本当にRailsが自社に最適なのかという検証が抜け落ち、後から「もっと別の技術にすればよかった」という後悔につながりかねません。本記事は、Railsを単なる開発依頼の対象ではなく「技術選定・採用要件」として捉え直し、RFPや要件定義書に何を盛り込むべきかを発注企業の視点で体系的に解説します。

事業フェーズ・想定トラフィック・将来の拡張性・採用市場・引き継ぎ性・保守契約という観点から、「自社はRailsを採用要件として満たすべきか」を判断するチェックリストを提示します。さらに、ベンダーロックインを避け、将来のリプレイス(クックパッドやメルカリのような移行)も見据えた要件の書き方、コーディング規約やドキュメント納品を契約に明記する重要性まで踏み込みます。この領域は競合記事が手薄で、発注側が最も差別化された情報を得られる主戦場です。Railsの全体像をまだ把握していない方は、まずRuby on Rails開発の完全ガイドから読むことをおすすめします。

RailsのRFP・要件定義書で押さえるべき基本構造

Ruby on RailsのRFP基本構造のイメージ

RFP(提案依頼書)は、発注企業がベンダーに「こういうものを作りたいので提案してほしい」と伝える文書です。Railsの場合、技術を指定するか否かの線引きが特に重要になります。ここでは、Rails開発のRFP・要件定義書に盛り込むべき基本構造を整理します。

「技術を指定する」か「目的を伝えて提案させる」かの線引き

RFPで最初に判断すべきは、「Railsで作ってください」と技術を指定するか、「こういう事業を実現したい」と目的だけを伝えて技術提案を求めるか、という線引きです。社内に保守できるRailsエンジニアがいる、既存システムがRailsで統一したいといった明確な理由があるなら、技術指定は合理的です。一方、まだ技術が固まっていない段階で安易にRailsを指定すると、本来もっと適した技術があったかもしれない可能性を閉ざしてしまいます。

推奨されるのは、RFPに「想定するトラフィック」「将来の拡張計画」「社内の保守体制」といった事業要件を明記したうえで、「これらを踏まえて最適な技術構成を提案してください」と求める書き方です。もしRailsが最適なら、ベンダーはその理由を説明してくれますし、別の技術が適しているなら代替案が出てきます。この「なぜその技術なのか」を文書で説明させること自体が、後の意思決定の根拠として残り、社内説明にも使えます。

Railsは立ち上げ期の開発速度に圧倒的な強みがある一方、後述するように成長後のスケール課題を抱えやすい技術です。だからこそRFP段階で「事業フェーズ」を明示し、「いまはRailsで素早く作るが、将来どの規模になったら見直すか」という前提まで共有しておくと、ベンダーの提案も現実的になります。Railsが持つ具体的な機能・特性については、本記事と対をなす機能の記事で詳しく解説しています。

要件定義書に盛り込むべき必須項目

Rails開発の要件定義書には、機能要件と非機能要件の両方を明記する必要があります。機能要件は「会員登録ができる」「商品を検索できる」といった、システムが何をするかの定義です。Railsはscaffoldやエコシステムが充実しているため、標準的な機能なら素早く実装できますが、要件が曖昧だと、ベンダーが想定する範囲と発注側の期待がずれ、後の追加費用や手戻りの原因になります。

見落とされがちなのが非機能要件です。これは「同時に何人が使うか」「どれくらいの速さで表示すべきか」「データはどこまで増える想定か」といった、性能や運用に関する要件です。Railsはデータ量が増えると前述のN+1問題などで遅くなりやすいため、非機能要件を最初に定義しておくことが、性能設計の前提として極めて重要です。「将来1万人が同時利用する可能性がある」と書くか書かないかで、設計の方針が根本から変わります。

さらに、保守・運用に関する要件も要件定義書に含めるべきです。フレームワークのバージョンアップを誰が・どの頻度で・いくらで行うのか、障害発生時の対応体制はどうするのか、といった「納品後」の取り決めです。これらを最初に定義しないと、納品後にバージョンアップが放置され、数年後にセキュリティリスクを抱えるという、発注側に最も多い失敗パターンに陥ります。要件定義は「作って終わり」ではなく「運用し続ける」前提で書くことが鉄則です。

Railsを採用要件として満たすべきかの判断フレーム

Ruby on Rails採用要件の判断フレームのイメージ

RFPの構造を押さえたら、次は「そもそも自社はRailsを採用要件として満たすべきか」を判断する番です。ここでは、事業フェーズ・拡張性・採用市場という三つの観点から、Railsが要件に合うかを見極めるフレームを示します。

事業フェーズ・拡張性・トラフィックで見極める

Railsが採用要件に合致するかは、事業フェーズが最大の判断軸になります。新規事業の立ち上げやMVP(実用最小限の製品)の検証段階なら、開発速度に優れるRailsはほぼ最適解です。クックパッドやメルカリも立ち上げ期はRailsで素早く作り、市場での勝負を優先しました。「まず作って検証したい」という要件があるなら、Railsを採用要件として満たすと判断してよいでしょう。

一方、すでに膨大なデータと高いトラフィックを捌く必要がある段階や、特定の処理で極限の性能が求められる場合は、Railsだけで要件を満たせないことがあります。クックパッド(媒体:AMBI)が100万行のRailsを分割し、Baseconnect(媒体:Baseconnect Tech blog)がRailsからGoへ移行したのは、まさにスケールという要件にRailsだけでは応えきれなくなったためです。要件定義の段階で「将来どの規模まで伸びる想定か」を明示し、その時点でRailsを補完・移行する前提を共有しておくことが現実的です。

つまりRailsの採用判断は「YESかNOか」ではなく、「いまの事業フェーズではRailsが最適だが、どの規模に達したら見直すか」という時間軸を含めた判断になります。STORESやリクルートがRailsとSpring・Goを併用しているように、全システムを一技術で統一する必要はありません。要件定義書に「現在フェーズの最適技術」と「将来の見直し基準」を併記することが、賢い発注の形です。

採用市場・保守内製化の観点を要件に組み込む

技術選定は、開発だけでなく「その技術のエンジニアを採用・定着させられるか」というHR(人材)の観点と切り離せません。将来的に保守を内製化したいなら、その技術を扱えるエンジニアを採用しやすいかが要件になります。Railsは長年にわたり国内のWeb開発で広く使われてきたため、扱えるエンジニアの母数が一定あり、保守人材を確保しやすい点は採用要件として有利に働きます。

ただし近年は、新しい言語やフレームワークへ関心が移る技術者も増えており、「モダンな技術を使っていないと優秀な人材が集まりにくい」という採用ブランディングの観点も無視できません。Railsを採用するなら、最新バージョンへの追従や良い設計を維持することが、人材確保の面でも効いてきます。逆に古いバージョンのまま放置されたRailsプロジェクトは、保守を引き受けたがるエンジニアが減り、採用難に拍車をかけます。

要件定義書には、こうした採用市場の観点を「保守をどう継続するか」という形で組み込むべきです。内製化を目指すのか、ベンダーに長期保守を委ねるのか、その方針によって求めるべき成果物(ドキュメントの詳しさなど)が変わります。技術選定を開発・採用・保守の三位一体で捉えることが、長期的に持続するシステムの要件定義につながります。各技術のメリット・デメリットを定量データで比較する視点は、関連するメリット・デメリットの記事でも扱っています。

ベンダーロックインを防ぐ要件と契約の取り決め

Ruby on Railsのベンダーロックイン回避のイメージ

要件定義で最も見落とされがちで、しかし最も発注側の利益を守るのが「ベンダーロックインの回避」です。引き継ぎ性は技術選定そのものより、契約と要件の書き方で決まります。ここでは、特定ベンダーへの依存を防ぐ要件と契約の取り決めを解説します。

コーディング規約とドキュメント納品を要件化する

引き継ぎ性を決めるのは、実は技術の種類よりも「コードの書き方が標準化されているか」です。Railsには規約に沿った標準的な書き方が確立されており、それに加えてベンダーが守るべきコーディング規約をRFP・契約に明記すれば、別のエンジニアでも理解しやすいコードになります。逆に、規約を定めず各人が好きに書いたコードは、それを書いた本人にしか分からないブラックボックスとなり、ベンダー変更を困難にします。

同様に重要なのが、設計ドキュメントの納品を要件に含めることです。システム構成図、データベース設計、主要な処理の説明といったドキュメントがあれば、将来別のベンダーに引き継ぐ際の学習コストが大幅に下がります。「動くコードさえあればいい」という発注は短期的には安く済みますが、ドキュメントがないと引き継ぎ時に膨大な調査費用がかかり、結果的に最初のベンダーに依存し続けるロックインを招きます。

あわせて、テストコードの納品も要件化すべきです。前述のとおりRailsはテスト文化が根付いており、自動テストが整備されていれば、別のベンダーが改修する際も「既存機能を壊していないか」を確認しながら安全に作業できます。コーディング規約・設計ドキュメント・テストコードの三点を要件として明記することが、引き継ぎ性を担保する最も効果的な手段です。

保守契約とバージョンアップ・TCOを要件に明記する

要件定義書には、初期開発費用だけでなく、その後の保守・運用にかかるTCO(総保有コスト)を見据えた取り決めを明記すべきです。Railsはバージョンアップが活発なフレームワークで、放置すると古いバージョンに取り残され、セキュリティ上の脆弱性が放置される危険があります。「フレームワークのバージョンアップを年に何回、誰がいくらで行うか」を保守契約として要件化しておくことが、長期的なセキュリティと安定運用を守ります。

TCOには、初期開発費・インフラ費・保守費・バージョンアップ費・障害対応費が含まれます。複数社から見積もりを取る際、初期費用だけを比較すると、保守を手薄にした安い見積もりが魅力的に見えますが、それは数年後に高くつく可能性があります。要件定義書で「5年間のTCOを提示してください」と求めれば、各社の保守姿勢の違いが見え、本当の意味でのコスト比較ができます。

さらに、将来のリプレイス(技術の乗り換え)を見据えた要件も検討に値します。メルカリが4年がかりで作り替えたように、成功したサービスほど将来の移行を迫られます。要件定義の段階で「データの取り出しやすさ」「他システムとの連携のしやすさ」を要件に入れておけば、将来別技術へ移行する際のコストを抑えられます。要件定義とは、目先のシステムを作るだけでなく、その後の数年間の選択肢を確保する作業でもあるのです。

まとめ

Ruby on Railsの要件定義まとめイメージ

RailsのRFP・要件定義で最も重要なのは、「Railsを使うこと自体」を目的化せず、「事業要件を満たす技術としてRailsが妥当かをベンダーに検証させ、文書化させる」ことです。事業フェーズ・トラフィック・拡張性・採用市場という観点でRailsの適合を見極め、現在の最適技術と将来の見直し基準を要件定義書に併記することが、賢い発注の形になります。クックパッドやメルカリの移行事例が示すように、技術選定は一度きりではなく時間軸を含む判断です。

そして、コーディング規約・設計ドキュメント・テストコードの納品を要件化し、保守・バージョンアップ・障害対応を含むTCOで複数社を比較することが、ベンダーロックインを防ぎ、長期的なコストを抑える鍵です。これらは競合の情報が手薄な領域であり、発注側が最も差をつけられるポイントでもあります。riplaは、こうした発注側視点の要件定義を、技術検証から契約設計まで一気通貫で支援します。

株式会社riplaでは、IT事業会社出身のプロフェッショナルが「Impact-Driven型支援」を通じて、プロダクトやシステムの納品・提供を目的とせず、お客様と同じ目線で、事業成果の達成をゴールとして、高品質なDX/開発支援をいたします。

また、弊社独自の開発テンプレート「Boxシリーズ」による標準機能の高速開発と、AI駆動開発の独自フレームワーク「GoDD」による独自機能のAI実装を組み合わせることで、低コスト・短期間で開発を実現いたします。

もし、システム開発やプロダクト開発に関するご要望がございましたら、お気軽にお問い合わせください。

・サービス概要資料のURLはこちら >>>
・お問合せページのURLはこちら >>>
・お役立ち資料のURLはこちら >>>

執筆者プロフィール
張田谷凌央
張田谷凌央

株式会社ripla 代表取締役CEOとして、システムパッケージ活用、システム開発、データ分析、生成AI活用、SaaS開発、アプリ開発、EC構築など、幅広い領域で企業のDX推進と事業成長を支援している。IT事業会社出身のプロフェッショナルが集う株式会社riplaにおいて、「Impact-Driven型支援」を掲げ、単なるシステム納品にとどまらず、クライアントと同じ目線で事業成果の実現に向けた伴走支援を行う。早稲田大学卒業後、ラクスル株式会社、LINEヤフー株式会社にて事業開発やDX推進などに従事した後、株式会社riplaを創業。

 

ブログ|株式会社riplaをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む