フルスタックエンジニアが契約時に注意すべき事

Pocket

先日、契約についてもやもやしたものがあり、うまく表現する事が出来なくてずっと考えていました。
ようやく自身が懸念していたことの論点を言語化できたので備忘的に書きます。

フリーランスが契約時に注意すべきことというタイトルが妥当な内容かもしれません。
対象は、業務委託、準委任契約と呼ばれる契約です。

改めて考えれば基本的なことで、フルスタックエンジニアとは関係ないことが大半ですが、これからフリーランスを目指す方などの参考になればと思います。

持ち込みPCは有りか無しか

現場によっては、自身のPCを持ち込むことを契約に含まれる場合があるかもしれません。
普段から自身が利用している環境を使えるので、IDEなどが特に指定されない現場では作業がしやすいという考え方が有ります。

ただ、私はPC持ち込みは歓迎していません。
観点はコストとリスクです。

PCが貸与される現場であれば、PCが万が一不調になった場合でも、自身が負担するものはありません。
修理代も無ければ代替機の用意の必要も有りませんし、作業途中のソースコードが消失しても、貸与されたPCに起因するものなので、作業が遅延しても、自身が責を負う必要が有りません。
最近ではgitを用い、プルリクエストを作成するまでローカルリポジトリでのみコミットするということもあるかと思いますが、数日分でもリポジトリが消失してしまうのは痛いですし、作業が遅延しますが、それでもやはり自身が責を負うことは無いでしょう。

一方で、持ち込みPCであれば、PCの不調に対する責任は全て自身が負う必要が有ります。
PCが起動しなくなった場合、その復旧や代替機の用意、作業遅延に対する責任、日々のデータバックアップなどの義務などが考えられます。
実際、ノートPCなどで、マザーボードとHDD/SSDが同時に不調となった場合、代替機を用意するしかありません。
自身の利用で不調になったPCの対応を行うのは当然ですが、業務利用による不調であるならば、そのコストやリスクについて、予め相応の対価を契約金額に含むべきということが私の考えです。

とはいえ、コストとリスクに対する相応の対価を具体的に算出するのは難しいでしょうし、実際に契約金額に含めるのは難しいでしょう。
ですので、自分のスタンスとしてPCを持ち込まないことを予め明確に伝えておきたいものです。
もちろん、これは週4や週5の稼働の場合においてのみで、週2ぐらいの稼働でPC貸与を求めるのは難しいかもしれません。

最後にセキュリティリスクについて触れますが、これについては、現場の環境次第だと考えます。
作業がプログラミングに限定され、取り扱うデータなどから個人情報が削除されている場合などは、漏洩リスクが少ないと言えるかもしれません。

瑕疵担保責任と不具合修正の義務

請負ではなく、業務委託であれば、通常瑕疵担保責任が契約の条項に挙がることはまず無いと思います。
しかし、以前に瑕疵担保では無いものの、「不具合修正の義務」という条項が記載されている契約書を頂いたことがあります。
結論、その点について受け入れることが出来ませんでしたので、契約金の増加の打診もありましたが、見送りをさせていただきました。

専門の知識と技術を有して業務にあたるわけですので、その作業に関して品質を確保するための努力は当然としても、やはり人が行なうことですので、不具合が完全に0だと言い切るには無理が有ると考えています。

期限付きではあったとしても、別の現場で就業している際に、過去の契約の不具合修正などが降り掛かってくれば自身の日常が大変になるのは目に見えています。

損害賠償責任の上限

損害賠償の条文が必須になるのは避けられないと思いますので、その賠償額をいくらにするかということは気にされると思います。
業務が開発フェーズであればリスクは少ないかと思いますが、運用中の、それも影響範囲の広いインフラ作業を委託される場合はセンシティブになってしまいます。

インフラの運用では、何かしらの改変を適用する際に、商用環境と全く同一の条件で試験できない場合も多いかと思います。
開発・検証環境では問題なかったが、商用では環境差異や負荷の差異のために障害となった経験が多くありますし、充分に試験ができなかったケースも多々あります。

こうした障害がサービスの停止やデータの損壊に至った場合、その行為が故意でなかったにしろ、賠償責任を問われるリスクがあります。
決済や個人情報といった重要情報を取り扱うシステムや、ビッグデータを扱うなどデータ容量が多かったり、解析データを生成するのに時間(コスト)が多大に掛かるシステムでは、有事の際の責任範囲、損害範囲が大きくなりますので、相応の対価を検討すべきだと考えています。

契約書のチェックが細かいのは異常系の想像力があるということ

契約書についてあれこれと指摘し過ぎるのは、クライアントに対して印象の良いものではないかもしれません。
せっかく前に進んだ話を取り逃がしたくないという気持ちが起きると思います。
それでも、リスクヘッジは必ずしたいものです。

痛い思い、怖い思いをしたことがあるからこそ、契約書の条項に留意するということは、物事の進め方が堅実であること、経験が豊富であるということだと、説明すべきなのかもしれません。
また、インフラの運用を長く経験すると、有事が起こらないための想像力を鍛えられたり、万が一に有事が起こった際の対処に就いて計画を立てることが当たり前となるので、そうした意識が契約という行為にまで及ぶということなのかもしれません。

作業範囲は責任範囲、責任の度合いはコストとリスクの度合い

上述までは、フリーランスとして一般的に留意すべき事項だと思いますが、ようやくフルスタックエンジニアならではの注意したい事項について記述します。

契約書には作業の範囲が定義されるかと思います。
それが、プログラミング(コーディング)だけなのか、デプロイ作業まで含まれるのか、インフラの構築をするのか、運用まで面倒を見るのかによって、求められる作業範囲が異なります。
作業範囲が異なるという事は、責務が異なるわけですが、当然のことながら、作業の内容によって、不手際をした際のシステムに対する影響範囲が異なります。

例えば、コーディングだけをする仕事で、ソースコードレビューをも行う業務であれば、何かしら不具合を生じさせた場合でもコーダーとレビュアーの連帯責任と捉えることができますし、そもそも不具合のリスクも最小化されていくと思われます。
一方で、潤沢な開発・検証環境を持たない、OSS主体のインフラを持った稼働中のシステムを管理する立場だった場合、何かしらミドルウェアの改変を行う場合には慎重な対応が求められると思われます。

プログラマーは数人在籍しても、インフラ要員が少なかったり、一人であったりすることもあるかもしれません。
インフラ管理者が一人であれば、非常に慎重に作業をしなければならないでしょうし、ベンダーのサポートが無いOSSミドルウェアを扱う際には、情報収集にコストが掛かる場合も多々あることだと思います。

慎重な対応=コストのかかる作業、責任の重い作業ではないでしょうか。
また、不具合や障害が起きた際の影響範囲が大きいからこそ慎重にならざるを得ない訳で、リスクのある業務内容と言えます。

フルスタックエンジニアは広範な技術と経験を売りにしているわけで、必然的にリクエストも多種多様となり、それだけコストやリスクを抱える業務に就く可能性が高まりますので、契約する業務内容と対価の釣り合いが取れているかを意識すべきだと考えています。

案件探しの際には事前に契約条項のチェックまたは条件の提示を

案件を探すために、人材紹介会社やエージェント会社と面談する際に、条件面の話というのは、ほとんどが契約金額(単金)の希望だけだろうと思います。

人材会社を通して契約(再委託契約)を行う場合であれば、人材会社に予め契約書の雛形を提示してもらうことで、条項をチェックすることができます。
案件を紹介する会社からの再委託契約ではなく、クライアントと直接契約する場合は、面談前に予め仲介となるしエージェント会社に契約の条項について希望を伝えておくことが基本となるかと思います。
後出しで条件を追加していくとトラブルの元になりかねないので、できれば面談時にそれらを直接クライアントに伝えておくべきだとうと思います。

条件チェック項目

以下、今のところ私がチェックすべきだと考えている項目です。

  1. 契約金額は外税
    内税で表記する人材紹介会社もあるかと思いますが、消費税が今後とも上がる可能性があるので、外税で契約したいところです。
  2. 契約期間は原則3ヶ月
    当初から納得できる単価であれば問題有りませんが、若干お試し価格として提示している金額で契約することもあるかもしれません。後日の交渉の余地を残す為に、3ヶ月契約としたいものです。
    契約金額が上がるかどうかは、貢献次第だと思いますが、自分の就業に自信があるのであれば、最初から長期の契約はしたくないところです。 
  3. 契約更新は自動更新でなく、都度更新時に契約書を交わすとする。
    書面での通達をしない限り、自動更新するといった契約内容の場合が有るかと思います。
    秘密保持契約等であれば仕方ないと思いますが、契約金額の見直しが都度可能となるように、契約終了1ヶ月前に都度契約書を交わす形態にしたいところです。
  4. 瑕疵担保責任、不具合修正義務は無し
    最も避けたい条項です。 
  5. 損害賠償については、月額の契約金を上限とする
    フリーランスの場合、多大な損害賠償を請求されても、支払い能力が無い場合もあるかと思いますが、それでも損害実費の全てを賠償金の対象とする契約を求められる事があると思います。
    できる限り調整したいものです。
  6. 支払いサイトは末締め、翌月末払い
    人材会社からの再委託では、末締め翌々月末払いもあるかと思いますが、直接契約であれば、末締め、翌月末払いとしたいものです。キャッシュフローは大事ですね。
  7. 業務範囲については明確に
    前述にあるように、業務範囲によってその責任の度合いも変わりますので、就業前に明確にしておきたいところですし、責任の度合いを強い業務をリクエストされるならば、契約金額に反映するようにしたいものです。
  8. 自己負担の内容を明確に
    交通費等が自己負担であるのは当然としても、それ以外の費用を許容するような条項があれば注意したいところです。

余談1:外部リソースは消耗品であることを忘れない

外部の技術者に対して親切丁寧な企業もあれば、所詮外部リソースだとして捉える企業もあります。
フリーランスとは、安定が約束された稼業ではないということを常に意識したいものです。

余談2:やっぱり特定派遣はありがたい

有期雇用の温床であるとして(というと正確ではないかもいしれませんが)、特定派遣が廃止となりそうです。
有期とはいえ、リスクヘッジの点で、フリーランスより恩恵が多い就業形態だと、最近では感じます。

余談3:フリーランスを続けたいのか?

いえ、私個人は早くフリーランス稼業やエンジニア稼業を早く終わりにしたいと考えています。
手に職を持つという考えから技術者になったのですが、技術者としての収入が主となると、自身の労働力を超えた収入は望めないということ、自身の体調不良が起きた際には収入が途絶えるリスクが拭えないことから、一日も早くエンジニア稼業を卒業できるように、目下努力中です。

最後に自己紹介

最後に、この記事をどのような人物が書いているかをお知らせします。
私がギークなのか、フルスタックと呼んで良いのか、自分ではなんとも言えないのですが、[GEEK図鑑]遅咲きのフルスタックエンジニア、IT起業家までの道のりという記事を掲載していただいています。

近頃であれば、iOS/Andoroidアプリの経験や動画サイトの経験まで含んでいないと、フルスタックとは呼びづらい気もしますが、それなりに経験して来たエンジニアだろうと思います。

 

Pocket