フリーランスになってから実際に体験したトラブル達

[僕がフリーランスのWEBエンジニアになった時の話](https://qiita.com/dala00/items/33fcfe2480459a85f48f) でも書きましたが、会社に属さず適当にフリーランスのWEBエンジニアとして世の中をよく知らないまま仕事をはじめると、割と色々なトラブルが発生します。

こういったトラブルは、大抵自分の無知が悪いです。もし何も考えずにとりあえずフリーランスになろうと思っている方がいれば役に立つ可能性もありそうなので諸々書いておきます。

## サーバーが動かなくなる

ある夜、カラオケに行っていると急に電話がかかってきました。当時仕事をもらっていたお客様で、どうもサイトが閲覧できなくなっているので確認してほしい、とのこと。カラオケには入ったばかりでしたが急いで家に帰って確認しました。

そのサイトは僕が作ったもので、サーバーは当時お客様が借りた専用サーバーを使っていました。リブートしたのか重い処理を修正したのかは忘れましたが、何にしろ改善は出来ました。

家でデスクトップPCを使って開発をしていましたが、この事件をきっかけに、いつでもどこでも急な作業が出来るようにノートPCを買いました。

### 解決方法

フリーランスの場合、チームなどに属していない場合は自分一人で全てを行わなくてはなりません。サーバーがダウンした時に対処するのももちろん自分で行う必要があります。24時間どんな時でも。

そのため、サーバー管理は軽い気持ちで請け負ってはいけません。一人で24時間見るというのは物理的に不可能ですので。やるならやはり複数人でやっている案件に参加するか、お客様の方でサーバー管理をしている案件に携わるのが安全です。

これ以来僕はサーバー管理については断るか、もしどうしてもと頼まれる場合は何かあっても急には対応できない、というのを予め伝えたうえで管理するようにしています。

#### MySQLのインデックスを貼る

当たり前のことですが、独学のみでやっている人はインデックスの存在自体知らなかったりします。（今でもたまにインデックスの皆無なDBをみかけたりします）

インデックスを貼ってないとほんとにすぐとんでもないことになるので気をつけましょう。

## 費用を払ってもらえない

### ケース１

朝８時から深夜２時までほとんど休み無しで数カ月働かされた上に、費用を半額しか払ってもらえず、結局100万くらいは未払いのまま依頼主が逃げてしまったことがありました。ほんとに地獄の数カ月でした。

#### 解決方法

##### 払ってもらえるなら作業する

そもそも、１度でも未払いが発生したらすぐに作業を中断しましょう。今やめたら前月の分も払ってもらえなくなるんじゃ…と思って続けてしまってはいけません。なんとか払ってもらえるようにするのではなくて、ちゃんと払ってくれるお客様とだけ仕事をしましょう。払ってくれないならそれはそもそもお客様ですらありません。

その時同じ案件に携わっていた他のエンジニアの方等は払ってもらえるまでちゃんと納品しない、のようなやり取りをちゃんとしていました。

##### 契約書を結ぶ

あと、その頃はフリーランスなりたてだったので契約書なども無しでやっていました。契約書を交わすのは仕事上あたりまえの事なので、相手が何も言ってこなくてもちゃんと自分で用意しておいて結びましょう。契約書も結んでくれない相手とは仕事をするべきではないです。もちろん契約書があるから絶対安心、ということはありませんが、相手を判断する材料にはなります。怪しければ仕事はしないことです。

##### 仕事量は自分で決める

依頼されたからと言って無理に応じる必要はありません。フリーランスになったのであれば自分のスタンスで仕事をしましょう。僕はこの件以来、基本的に残業はしません。リモート案件なら当然ですし、SESでも基本的には定時で帰ります。（トラブった時や、チームの人が残業をせざるを得ない状況でヘルプを求められた時は別です）

普段から時間外で作業をすると、そういう人だと思われてしまい、当たり前のように頼まれる事になってしまうので、「この人はやってくれない人」というのをちゃんと相手に植え付けておくべきです。

基本的に案件は複数並行になることもありますし、完了までの予定も必ず多めに言いますので、このようなやり方でも間に合わなかった、ということは一度もありません（もちろんSESなどになると勝手に予定が組まれることも多いと思いますので難しいとは思いますが）。時間は自分でマネージメントしましょう。

### ケース２

何度か案件をもらっているお客さんがいました。そのお客さんからまた新しい案件をいただき、おおよそ完成させて確認してもらってました。

しかし月日は流れ、そのお客様とは疎遠に。結局支払ってもらうこと無く関係が終了しました。催促もしましたが一切音沙汰無し。

#### 解決方法

このパターンはどうしようもない気がします。連絡もとれませんし、訴訟を起こすほどの額でもなかったので。逃げ得最悪です。

他のまともなお客様は時間がたっても催促すればちゃんと支払ってくれます。やはり、怪しい相手とは仕事をやらないか、今回の場合は無理ですが、高額の場合は毎月ちゃんと払ってもらう、というところになるかと思います。 

## 魅惑のレベニューシェア

レベニューシェアを持ちかけられたら断りましょう。僕はレベニューシェアを持ちかけられ、快諾しました。そもそもレベニューシェアが何なのかよく分かってなかったのと、費用が実働分より不足していたら補ってもらえるだろう、というよく分からない判断で作業をし、結局タダ働きをさせられただけの事がありました。

（とはいえ、相手も途中から遠慮したのか費用を払って依頼してくれるようになったため、さほどタダ働き分は多くありませんでした）

ビジネスというのは毎日毎日大勢の人が新しいアイデアを生み出し実際に形にしていきますが、ほとんどが失敗します。どれだけ相手がうまいことを言って将来成功して荒稼ぎできそうな雰囲気を醸し出していても、ほとんど失敗します。基本的に信じるべきではありません。

特に一人でやっているのであれば自分の稼ぎが全てですので、今現在の費用も払ってもらわずに仕事をするのは避けましょう。

そもそも、ちゃんと新規事業に取り組もうとする会社は、費用をちゃんと確保し、開発者に支払うことでサービスを育てます。開発者に負担をかぶせて仕事をさせるような相手とは仕事をすべきではありません。

## 仕事を依頼した時

仕事を依頼してみることも何度かあったのでその時のトラブル。

月額で依頼していた仕事で、全然仕事がすすまずあまり連絡も来なくなったので電話して聞いてみたところ、案件のプログラムが難しくて分からなくてずっと泣く日々を過ごしていたとのこと。

### 解決方法

失った時間は決して取り戻せないので、依頼している相手に何かあった時はちゃんと自分でフォローできるようにいつでも考えておく必要があります。問題の原因は依頼相手ですが、責任を負うのはお客様と直接契約をしている自分ですので、何があっても言い逃れはできません。

* 信頼できる相手だけに依頼する
* 契約書を交わしておき、相手が契約通りにちゃんと仕事をしなかった場合はちゃんとその分の責任（ちゃんと作ってもらう）というところは依頼前に確認しておく

というのは必要です。

## 不具合多発

フリーランス関係なく、業務経験が浅い時はやはり不具合を出してしまう確率は非常に高いです。ただ、会社などに属している場合、最初先輩が確認して不具合を見つけてくれたり、不具合を出しにくくする方法を学べたりと、何かしらの恩恵を受けることができます。最終的にお客様のところに届く頃にはおおよその問題が取れていたりします。

しかしフリーランスで一人でやるとなるとそうはいきません。不具合は全部依頼者の所へ届いてしまい、迷惑をかけてしまいます。そのためしっかりと確認をする必要があります。具体的には

* ちょっとした文字の修正だったり、他と同じような処理をおおよそコピペで作ったからといってテストを省いたりしない（こんなことでも結構不具合が出る可能性はある）
* 細かい仕様が不明なのに勝手に自分で詳細を想定して作ったりしない。必ずやり取りして明確にする。全然違う修正指示が来て時間を無駄にしてしまったり、誰も想定していない動作になり依頼側が困る可能性もある。（その方法で進めて良いというお客様の許可があり時間も費用も担保してもらえるなら別）

作る時に感じる面倒くささと、トラブルが発生して面倒なことになり予期せぬタイミングでスケジュールがギュウギュウになってしまったり、深夜に連絡がくる面倒くささどっちがよいかを比較すれば迷うことはないはずです。自分を楽にする方を選びましょう。

## データ削除

だいぶ昔にお客様の本番データを削除してしまったことがあります。対応自体は聞いていたとおりに行っただけなのでどうしようもなかったのですが、とはいえバックアップを取っていなかったので問題でした。

本番データを直接扱う際はバックアップを取るなんてのは当たり前の事なのですが、そんな当たり前のことでも一人でフリーランスをやっていると誰も教えてくれる人はいません。こういった危険察知も自分で学ばなければならないというのは大きな弱点ではあると思います。それを認識しつつ、常に色んなアンテナを貼りめぐらせておく必要がありますし、常に深く考えながら何かをする必要があります。

## PC破損

PCは壊れます。例えば、何か重要な本番アップ作業がある当日の朝に、PCが壊れてしまったらどうしたらよいでしょうか？　どうしようもできません。ひたすら謝罪のみです。

僕はたまたまPCが壊れるのはたまたま土日とかだったりするので問題なかったのですが、上記のようなパターンがあったらほんとに悲惨だったと思います。一人で業務をやっていると、すべてのことに責任を持たなくてはなりません。PCが壊れたからといって作業ができないのは問題です。もちろん実際にそれが起こってしまった場合はひたすら謝って理解を得る以外にはないのですが。

ちなみに僕は今は家にPCが２つあるので、片方が突然壊れてもとりあえずはなんとかなります。とはいえ、下記には気をつけています。

### クラウド化

たとえPCが複数台あっても、重要な情報をひとつのPCに保存していると全くなんの意味もありません。そのため基本的に業務のなるべく多くをクラウド化しておく必要があります。

* ソースコードは全部プライベートGitリポジトリにpushしておく
* 仕様などの情報はクラウドストレージにアップしておく
* メールもG Suiteなど、全てWEBメインにする
* 請求書などもWEBサービスを利用する

### 全てのPCを使う

時々使うPCを変えて、どのPCでも大体最新の環境になるようにしておきます。使い慣れたPCメインでいつも使う、でも良いのですが、例えば週に１回は別のサブPCにする、などです。僕は普段はでかいノートPCを使い、昔iOSアプリを作るのに使っていたmacをサブで使っています。

## まとめ

* フリーランスはいいことばかりではない
* フリーランスは大変なこと多いし、大変なことの危険度が大きくて怖い
* フリーランスになると、普通の会社員の良さがものすごく身にしみて理解できる

もし何も考えずフリーランスになろうとしている人がいたら気をつけましょう。