先日イベントでこんな相談を受けました。
相談者Aさん
以前、学生さんに安くwebサービスを作ってもらったのですが、そろそろ新しい機能を追加しようと思っています。
今度は別のwebエンジニアさんに相談しているのですが難航しています。
- 既存のソースが複雑で解析不可能
- 使ったことないフレームワークを使っている
という理由でwebエンジニアが仕事を受けてくれません。
どうしたら良いでしょうか?
なんでも最初は学生に安く作ってもらったということですが、ソースが適当だったりして引き継ぎたくないような感じだそうです。(気持ちはわかります^^;)
あとフレームワークも使ったことないものだと億劫ですよね。
例え同じフレームワークであっても自分がなれてるバージョンと違うだけでも抵抗感じます。
開発する側はそれだけ環境の些細な違いでもシビアに感じますね。
私はイベントで酔っ払いつつ、いくつか対応方法を教えて差し上げました。
その後帰宅中に「webエンジニア・発注者のいずれかが対応方法を知っていたら解決する話なのかも」と思いまして記事にしました。
この時期では既存アプリケーションを(もしかしたら)簡単に改修できる方法をお伝えします。
webエンジニアへの発注コストを減らす方法
いくつかのケース別にお答えしたいと思います。
既存のソースが汚くて解読したくない
WEBエンジニア
この場合、「最初から作り直してください!」と言ってください。
難解なソースコードを解析しつつ他人のやり方にあわせて改修をする苦労をするくらいなら、一から作り直したほうが断然楽です。
まっさらな環境なので、自分の好きな言語もフレームワークもバージョンも選び放題!
すべて作り直すとかえって大変なのでやりたくない
WEBエンジニア
既存のwebサービスの画面数が多かったり、今回の作業範囲が狭い場合だと確かに全部修正するのは辛いかもしれませんね。
こんな場合は「マイページの画面だけ一から作り直してください。webサーバーの機能(apacheならmod_rewrite)でその画面のURLの場合「だけ」新規開発画面へ遷移させてください」
どういうことかと言うと、webサーバー側の設定で特定のリクエストを別のディレクトリに振り分けることができるのです。
同じサーバー内の別ディレクトリに振る
図にあるように、例えばマイページ画面が今回の機能追加・修正範囲だったとします。
https://hoge.com/mypageというリクエストの「/mypage」という文字列で検知させ、
リクエストを新規開発した側へ流すことができます。
既存と同じ言語・フレームワークを使って内部的に「/newmypage」みたいな画面を新規作成するケースや、
既存とは別に新しい環境(異なる言語・フレームワークなど)でドキュメントルートを「/var/www/newapp」にして構築するケースでも対応できると思います。
別サーバーに振る
上記の例は同じサーバー内で表示してますが、別サーバーでも可能です。
現行サーバーだと使いたいバージョンの言語やフレームワークが使えない場合は別サーバー用意したほうが楽かもしれません。
あと、レンタルサーバーの場合はwebサーバーの設定に制限があるかもしれません。
(ApacheとPHPの組み合わせだとmod_rewriteと.htaccessが使えることが条件になります)。
その場合、webサーバーの設定を自由に使えるサーバーを別途契約して上記の逆(新サーバー側から旧サーバー側へリクエストを流す)という事もできると思います。
リクエストURLを画面単位で振り分ける
また、さらにリクエストURLを解析すれば、/mypageのプロフィール更新画面(/mypage/edit)だけとか、
改修するページを限定することができます。
このように、うまいこと作業工程を減らしてみてください。
もしリリース後に問題があった場合、webサーバーの設定だけで旧画面に戻すことができるのもメリットです。
ただし、DBの格納データに変更がなければの場合になります。
DB側にも変化があるようでしたら、改修後も新旧のデータを格納するような仕組みにしておけば切り戻し対応も楽にできると思います。
webサーバーの仕組みをいじりたくない
WEBエンジニア
この場合はこのエンジニアに発注しないでくださいw
おそらく断る口実を作っているだけのような気がします。
あなたの発注に魅力を感じていないのかもしれません。諦めましょう。
まとめ
- WEBサービスの既存改修は一から作り直したほうが断然楽
- WEBサーバーの設定を利用すればリクエストURL単位で切り出して新規開発することが可能
- WEBエンジニアが断りたい口実の場合もあるので、ある程度で見極めて諦めましょう