先日こんなツイートをしました。
よほど信頼できるクライアント、信頼できるコードベース 、リスクに見合う金がなければ「請負契約」で仕事受けるのはまずい。
不確実性が高いプロジェクトには月額いくらの「準委任契約」で入らないと、炎上したり要件変更あったときに自分ばかり損をすることになる。人月契約は最強の契約。
— yukito ohira@システム開発おじさん (@yohira_dev) February 13, 2020
「まだ要件が確定してないので、実装しながら要望を見てアジャイルにやっていきたいです」みたいなこと言ってる顧客なら絶対に請負じゃなくて準委任にすべき。契約時に納品物が未定なのに請負にできるわけがない。
契約リテラシーないと技術力以前で訴訟敗訴損害賠償で市場から退出することになる。 https://t.co/5cbLSh6j5e
— yukito ohira@システム開発おじさん (@yohira_dev) February 13, 2020
こちらのツイートがそこそこ拡散したので、今回の記事では、フリーランスエンジニアにとって避けては通れない契約周りの話について書いていきたいと思います。
まず結論
まず最初に結論を書いてしまうと、「フリーランスエンジニアは請負契約を避けるべき」です。
請負契約を避けるべき3つの理由
入金までが遅く資金繰りがきつくなる
原則的に、請負契約の入金条件は「完成品を納品して、発注側の検品でOKが出た時点」です。
スモールスタートが持て囃される現在においても、案件によっては、実際に納品可能なプロダクトができるまで、要件定義から半年以上かかることはザラにあります。
半年〜一年以上、入金なしで当面の生活の凌がなければならないことになるケースもあります。
もし検収でNGが出たなら、追加で対応を迫られ、その対応が完了するまで入金が延期される、といった最悪の事態も想定すべきです。
プロジェクトを完遂したときのリターンが十分見込めて、かつもしあなたが、手元の資金に十分余裕があるか、あるいは低金利で融資をいくらでも引ける状況ならこのリスクを取る選択もあります。
が、ほとんどのフリーランスにとってはこれは許容できないリスクになるのではないでしょうか。
契約時点での不確実性に対応できない
請負契約は「契約時点で予め合意を取った仕様のもとで、その成果物を納品する」ために利用されるべきものです。
この「契約時点で予め合意を取った仕様のもとで」というのがポイントです。
請負契約においては契約時点で仕様を確定させておかなければならないし、その後の要件変更は基本的には無いものという前提で進めるべきものです。
「ビジネス環境の変化に柔軟に対応する」アジャイル開発が持て囃されて久しいですが、こういった開発サイクルを取りたいならば後述する「準委任契約」を活用すべきです。
特に「まだ要件が確定していないので、手を動かしながら、変化に対応しつつ柔軟にアジャイルにやっていきたいです」みたいなことを言われたときは特に注意です。
明文化された合意された仕様が存在しないまま進めてしまった場合、納品後に「ん〜なんか違うんだよねぇ〜、ちょっといい感じにやり直して!」みたいなちゃぶ台返しを食らっても文句は言えないことになります。
入金もされず、追加工数の費用も払われず、「あいつは俺の考えた最高の仕様通りにシステムを作らずに飛んだ!ビジネス要件の変化に対応しなかった!瑕疵担保責任で損害賠償するわ!」といった最悪のケースも想定すべきです。
もちろん、ここまでイカれたクライアントを掴むほうが難しいとは思いますし、実際に法廷で争えば勝てるのかもしれませんが。。。あまり気持ちのいい金のとり方でもないですよね。
リスクがある以上、契約を安全側に倒しておくのはビジネスマンとして当たり前のことではないでしょうか。
重要なのは、そもそもそういった契約書にハンコをつかないことです。
そもそも、発注側も請負契約と準委任契約の違いを知らない
「どういったケースで請負契約をすべきで、どういったケースで準委任契約を選択すべきか?」
「請負事業者にしてはいけないことは何か、準委任契約者にしてはいけないことは何か、雇用契約を結んでいる人にしかできないことは何か?」
現状、こういったことをしっかり理解している発注者はあまりいません。
予算を持って発注できる立場になれる人というのは限られているので、企業研修などでも漏れがちになるテーマであることが原因ではないかと個人的には考えています。
何はともあれ、請ける側としてはリスク回避として請負契約をまず回避するべきでしょう。
請負契約には瑕疵担保責任があり、すべての個人事業主には無限責任があります。
この2つが噛み合うとプロジェクトの失敗は最悪、自分自身の自己破産を以て償わなければいけない事態も、可能性としてはありえます。(ほとんどありえないとは思いますが)
「プロフェッショナルならば、ごちゃごちゃ言わずに事業成果にコミットすべき」と言う人もいるかもしれません。
もちろん仕事をしていくマインドとしては素晴らしいものですが、「自身がどのような法的責任を負うのか?」は分けて考えるべきです。
補足
公正取引委員会から、下請法に関するガイドラインが公開されています。
自衛するための知識として一読しておくと良いと思います。
また、ソフトウェア開発に関するビジネスモデルの違いについては以下のnoteで解説しています。
準委任契約(業務委託)を利用しよう
月次精算にすることで資金繰りを健全化
請負契約では完成・検品の合格が入金条件でしたが、準委任契約では月次の稼働を持って入金条件とすることができます。
これによって安定した売上が定期的に入ってくるので、資金繰りの負担は軽減されます。
瑕疵担保責任の回避
準委任契約では瑕疵担保責任はありません。(かわりに「善管注意義務」は負うことになりますが、本旨から外れるので詳細は省きます)
たまに紹介の仕事などで、準委任契約なのに瑕疵担保責任がついている契約書が出てくることがありますが、必ず交渉して条項を外してもらうべきです。
もしあなたが、クライアントと同じ方向を見て、プロジェクトを成功させてその先の共栄を目指したいと思うならば、自分だけがリスクを負うことは避けるべきです。
結局、リスクを背負わされた側が自己防衛に走り、態度を硬直化させてしまうという話はよく聞きます。
「責任を回避」というと、なんだか不誠実な仕事をしているように聞こえるかもしれませんが、それはちょっと違っていて、後述する「不確実性への対応」に対して柔軟でいることができます。
不確実性への対応
「契約時に不確実なことが多く、仕様を決めることができないケース」では特に準委任契約は有効です。
特に「ウォーターフォール開発から、ビジネス環境の変化に柔軟に対応できるアジャイル開発へ」というトレンドが発生している現在では、基本的に準委任契約にしておいたほうがトラブルになりません。
稼働の精算幅を設けておけば、仕様変更やプロジェクトの炎上で稼働時間が増大するリスクもある程度はヘッジすることができます。
「時間貸しなんてエンジニアじゃない」なんて、言いたい外野には言わせとけ
前段で述べましたが、仕事する上でのマインドと「自身がどのような法的責任を負うのか?」は分けて考えるべきです。
SNSでよく「時間契約のフリーランスなんてただのハケンで技術で食ってるとは言えないよね〜」とか言ってる人を見かけますが、こういった法的な知識が欠如している(あるいは、知識がなくてもなんとかなっている立場にすぎない)人なので、
言いたいやつには言わせとけ。
それでも請負契約を利用したいときは
請負契約はリスクが高い契約であることはこの記事で説明したとおりです。
それでも利用したい場合は、以下の3つのポイントを抑えて計画的に利用するべきかと思います。
- 契約時点で仕様を固定するよう立ち回る
- 設計フェーズでは準委任契約を利用し、実装フェーズになってから請負契約に切り替える
- リスク相当の金額を上乗せした金額にする
補足:民法改正によって準委任契約にも瑕疵担保責任がつく場合がある
2020年4月の民法改正によって、準委任契約でも瑕疵担保責任をつけられるようになります。
もちろん契約によりますが、必ず契約のときに契約書は読むようにしましょう。(できている人には当たり前のことかもしれませんが)
詳細は省きますが、参考リンクを張っておくので適宜見ておくと良いと思います。
まとめ
- 請負契約のデメリットとして、完成まで入金されない、瑕疵担保責任、仕様を契約時に確定させる必要がある
- 月額契約の準委任契約でリスクヘッジすべき(民法改正にも注意)
- フリーランスは事業者なので契約リテラシーは必須。不当に重い責任を負って市場から退場させられないように