メルカリを退職してフリーランスになりました

自己紹介とメルカリでの経験

私は 16 年ほど IT 企業でエンジニアとして働いてきました。GMO ペパボといった業界大手のサービスを運営している会社、ヤフーやメルカリといったメガベンチャー企業に勤めていました。直近はメルカリでおおよそ 3 年間働き、主に社内のカスタマーサービス部門が使うツールの開発に携わっていました。その中で GO 言語での開発経験や開発チームをマネジメントする経験を積むことができました。

フリーランスになろうと思った理由

正社員としてのキャリアアップに魅力を感じなくなったからです。

私は物作りが好きで、現場で手を動かすのが性に合っていると思っています。また、仕事は好きですが、毎日深夜まで働いたり会社の評価を意識して振る舞うことなどは避けたいと思っています。

一方で正社員として求められる仕事はマネジメント業務にシフトしていきました。また、その会社の社員として期待される振る舞いを求められるようになりました。

上記のような自分の特性と会社が求めることのギャップがストレスとなり、正社員としてキャリアアップしていくことにモチベーションを感じられなくなってしまいました。

退職前に準備したこと

フリーランスとして独立する前に、以下の準備を行いました。

  1. スキルの棚卸し
    • 職務経歴書の作成を通して、自分のスキルの棚卸しを行いました
  2. 副業
    • 実際に IT 企業と業務委託契約を結び、平日の夜や週末に働いていました
    • 個人事業主として登録し、青色確定申告の書類を作成していました
  3. 案件探しと情報収集
    • フリーランスの案件を扱うエージェントに登録して実際に案件獲得を行いました
    • 自分の単価やどういった需要があるのかを確認することが目的です

フリーランスになってからのリアル

まだ 1 ヶ月程度ですが、実際にフリーランスとして活動し始めて、以下のようなことを感じました。

アップサイド

  • 時間と場所の自由
    • フルリモート、フルフレックスで働いているため、仕事と生活のバランスがとりやすい
    • 案件はフルリモート前提の仕事のみに限定することができる
    • 同じ現場のフリーランスの方は、週4勤務だったり15時30分で退勤するように業務時間を調整していたりと柔軟に働いている
  • 開発に集中できる
    • 業務範囲が明確なので、開発の仕事に集中することができる
    • 雑務やマネジメント業務をする必要がないため、余計なストレスが減った
  • 環境を自分で選ぶことができる
    • 勢いのあるスタートアップの案件に携われば、事業の成長を感じることができる
    • 携わりたい事業があればその企業にアプローチすることができる
    • 自分に合わないと感じるところからは撤退する判断ができる

ダウンサイド

  • 雇用と収入の不安定さ
    • 会社員のように毎月決まった給料が入ることが確約されていない
    • 常に契約解除のリスクがある
  • 社会保障が脆弱
    • フリーランスは将来受け取れる年金額が少ない
    • 病気になったり働けなくなったりした時の収入の保証がない

ダウンサイドについては、リスク対策が可能です。しかし、こういったリスク対策についても全て自分自身で行う必要があります。

フリーランスの実態と心境

私の場合は正社員の頃とあまり働き方は変わっていません。平日の 8 時間は仕事、コミュニケーションは毎日発生しますし、仕事の内容や質も正社員に求められるものと変わりません。

しかし、契約形態としては独立しているので、自分自身のアイデンティティを大事にできる点が精神的なメリットになっている感じています。

その分、不安定さはありますが、常に安泰ではないという危機感が自分にとってよい刺激になっています。

これからフリーランスを続けていくと、様々なトラブルに遭遇すると思います。それも勉強だと思って邁進していく所存です。

これからフリーランスを目指す人へのアドバイス

最後に私の経験から、フリーランスを目指す人に伝えたいことは以下の 3 つです。

  1. 準備と情報収集をする
    • いきなりフリーランスになることは不安も多いと思います。そういった場合は、副業から始めてみることをおすすめします
    • 現在は副業案件が多いそうです。私もエージェントから副業案件についての提案をよく受けます
    • 副業をすると確定申告が必要になるため、経理の知識もつきます。青色確定申告書類を作成できるようになりましょう。節税になります
  2. 自分の強みの把握とスキルの研鑽
    • 自分の強みを明確にするために職務経歴書を作成することをおすすめします
    • 職務経歴書のアピールになるような経験を積めるように、日頃から意識してスキルの研鑽に励みましょう
  3. 家族の理解が大事
    • 家族がいる人は家族の理解が必要です。収入が安定している正社員から収入が確約されていないフリーランスに転向することは心理的な障壁が高いからです
    • いきなり説得することが難しい場合は、時間をかけて理解してもらうことが必要です。私は 3 年ほど時間がかかりました

エンジニアを目指す人が最初にすべきこと、するべきでないこと

近年、エンジニアを目指す人が増えてきています。今までパソコンを触ってきていない人もエンジニアを目指し始めており、史上空前のエンジニアブームといってもよいでしょう。この記事では、これからエンジニアを目指す人向けに何をすべきか、何をすべきでないかを説明していきたいと思います。

エンジニアを目指す人が増えている背景

近年、エンジニア需要の増加 *1 でエンジニア(システムエンジニア、プログラマーのこと)を目指す人が増えてきています。文系の大学生、主婦、営業部で働いているサラリーマンなど、今までパソコンに触れてきていない人もエンジニアに興味を持ち目指している、といった状況です。

そのような状況はTwitterの「#駆け出しエンジニアとつながりたい」のようなタグからも垣間見ることができます。

また、SNSの発展に伴いインフルエンサーの影響も年々大きくなってきています。一部のインフルエンサーが発信する、好きな時に好きな場所で働く自由な働き方*2、高収入(フリーランスで年収1000万円)*3などのキラキラしたイメージがエンジニア人気にさらに拍車をかけています。

プログラミングについては興味がないが、働き方や高収入に魅力を感じている人が多い印象です。

穴の空いたバケツに水を注ぐな

これからエンジニアを目指す人へのアドバイスは「穴の空いたバケツに水を注ぐな」です。

プログラミングの学習を始めた人の話しを聞いてみると、インフルエンサーが発信している自由な働き方、高収入に魅力を感じ、フリーランスを目指してプログラミングの学習を始める方が多い印象です。

学習を始めることは大変素晴らしいことなのですが、プログラミングに関する学習をしてきていない人たちの多くはパソコンの操作がままなりませんので、ファイルを作成したり、画像をダウンロードしたりといった、パソコンに慣れている人だったら難なく行える操作ができません。

私はこのようなパソコンの操作がままならない状態を穴の空いたバケツ状態と呼んでいます。穴の空いたバケツにいくら水を入れても何も残らないように、この状態でいろいろと教えても多くの知識は定着しません。

残念ながらこの状態で高額な教材を購入したり、高額な学費を払ってプログラミングスクールに通っている人がいます。しかし、この投資は割りに合わない可能性が高いです。

穴の空いたバケツに多額の資金を投資することは避けましょう。
穴の空いたバケツ

穴の空いたバケツに水を入れてもほとんどが流れていってしまう

エンジニアを目指す人が最初にすべきこと

エンジニアを目指す人が最初にすべきことは、穴の空いたバケツをふさぐことです。

まずは次の2点をおさえます。

  • 学習する下地をつくること
  • プログラミングが自分にあっているかを確認すること
この2つが整うまではお金をかけてはいけません。無駄な投資になってしまうリスクがあるからです。

学習する下地をつくる

どうやって学習する下地をつくるかですが、HTML/CSSの学習からはじめましょう。

最初からPHPなどのプログラミング言語を学習した方が効率がいいというインフルエンサーもいますが*4、パソコンに慣れていない人はプログラミング言語をインストールしたり、実行したりすることが難しいので、そこで詰みます。

また、ターミナルやブラウザーに表示されているプログラムの実行結果をみて、楽しいと感じる人はあまりいないでしょう。それよりも、華やかなHTML/CSSの画面をみる方がやりがいを感じられるものです。

パソコンの操作に慣れていない人はHTML/CSSから始めましょう。具体的な方法については、別の記事で説明したいと思います。

プログラミングが自分にあっているのかを確認する

最初の段階で必要なのは、パソコンの操作に慣れつつプログラミングが自分にあっているのかを確認することです。特にプログラミングの学習が楽しいと感じられるかどうかが重要です。

高額な費用を払った後にプログラミングは自分にはあっていなかったと知る人もいます。自分にあっているかどうかは数十万円の学費を払わずとも、数千円の入門書を買って1カ月くらい学習をやってみればわかります

プログラミング学習を楽しいと感じることができればOKです。

参考リンク

  1. IT 人材需給に関する調査
  2. 【月収800万】海外フリーランスの1日ルーティン【マレーシア】
  3. WEBフリーランスで年収1000万円超えないのはどう考えてもおかしい
  4. 【プログラミング初心者必見】HTML/CSSから勉強し始めてはいけない理由

ブログシステムをHexoにしました

ブログシステムをHexoにしました。ブログデザインも新規で作成しました。ブログシステムはそのうちリプレースしたいなと常々思っていたのですが、なかなかこれといったものがなく時間が経ってしまいましたが、ついにリプレースすることができました。

以前のブログシステム

以前のブログシステムはOctopressを使っていました。このOctopress、いくつか問題点がありました。

動作が遅い

Markdownで書いてそれをhtmlに変換する仕組みなのですが、その速度が遅いです。
記事数が少ない場合はそれほど気にならなかったのですが、100記事くらいになってくると明らかに遅くなってきます。
現在では、プレビューモードで変換するのに10秒程度かかってしまい、気持ちよく記事が書けない状態でした。

メンテナンスされていない

2015年で開発が止まっています。新機能や改善もないですし、機能に問題がある場合も修正がされません。開発が止まっているものは使うべきではありません。今から使うのはやめたほうがいいでしょう。

なぜHexoにしたのか

Node.jsで書かれているから

HexoはNode.jsで書かれています。
最近はNode.jsを使うことが多いので、Node.jsで書かれているブログシステムを使いたかったのです。

静的サイトジェネレーターだから

ブログシステムには大きく分けて静的サイトジェネレーターとデータベースを使ったブログシステムがあります。Hexoは静的サイトジェネレーターと言われるシステムです。静的サイトジェネレーターはMarkdown等の形式で書かれたファイルをhtmlに変換するソフトウェアです。

静的サイトジェネレーターのメリットは表示速度が早い、セキュリティリスクがほとんどない、他のシステムに移行しやすいなどのメリットがあります。個人ブログであれば静的サイトジェネレーターがおすすめです。

人気のあるブログシステムだから

Node.jsで書かれていて人気のあるブログシステムはHexoとGatsby、あとは最近VuePressも人気が出てきているようです。
他にどんなソフトウェアがあるかはこちらで確認することができます。

人気のあるソフトウェアは開発が活発で便利な機能も多く、使いやすいことが多いです。

現在も開発が行われているから

Hexoは現在も開発が行われています。2019-10-14にバージョン4.0のリリースが行われました。

Hexo vs Gatsby vs VuePress

Node.js環境の静的サイトジェネレーターはHexo、Gatsby、VuePressの3つが人気です。GatsbyとVuePressは次の理由で採用しませんでした。

Gatsbyを採用しなかった理由

GatsbyはReactベースの静的サイトジェネレーターです。Reactに慣れている人であればいいかもしれませんが、私がReactに詳しくないのもあり、Gatsbyは学習コストが高いという印象です。あえてその学習コストを払ってGatsbyを使うメリットが見当たらないので採用を見送りました。

VuePressを採用しなかった理由

VuePressがメジャーバージョンになったということもあり、VuePressも試してみました。情報が少なくまだまだ使いづらいというのが正直なところで、VuePressを使うメリットが見当たりませんでした。
ブログではなく、ドキュメントなどのシステムとして使うならありかもしれません。
一応、サンプルコードをGitHubにあげているので興味のある方は参考にしてみてください。

結論

特にこだわりがなくブログを楽に構築したいということであれば、Hexo一択ではないかと思います。最後にHexoを使うメリットについて説明します。

Hexoを使うメリット

ブログの基本機能が簡単に作成できる

Hexoでのブログ構築は5つのコマンドを実行するだけです。

1
2
3
4
5
$ npm install hexo-cli -g
$ hexo init blog
$ cd blog
$ npm install
$ hexo server

hexo server を実行後にhttp://localhost:4000 にアクセスするとブログが表示されます。

テーマの作成がしやすい

Hexoにはテーマ作成をサポートするツールが用意されています。
generator-hexo-themeを使えば簡単にブログテーマの雛形を用意することができます。
ブログテーマは自作したのですが、その雛形はgenerator-hexo-themeで作成しました。

CI/CDも簡単

masterにマージしたら自動的にデプロイする設定を入れています。そのあたりも公式のマニュアルが用意してあり、手順にそって設定していくだけでCI/CD環境を作ることができます。私はGitHub Pagesを使っており、サーバー費用0円でブログを運営しています。コストパフォーマンスは最高ですね。

まとめ

Hexoは学習コストが低く、テーマ作成もわりと簡単にできるので楽にブログを作りたい人におすすめです。Node.js環境でブログを作りたいときは検討してみてはいかがでしょうか。

シンプルに実装する大切さ

私はシンプルに実装することをとても大切にしています。最も大切にしていると言っても過言ではありません。

プログラミングの経験が浅い人は、難解なコードを書いたり、短い行数でコードを書けることがかっこいいと考えているかもしれませんが、完全に間違っています。シンプルに実装することは実は難しいのです。プログラムというものは、すぐに複雑になってしまうからです。複雑でかっこいいコードを書こうという考えがそもそもの間違いです。

この記事を読んでいるみなさんは、今後は簡単でシンプルな必要最小限のコードを書くという意識でコードを書いてください。

私はNode.jsのコミッターがトラディショナルなfor文を使ったコードを書いていることを見たことがあります。そのコードは、これ以上ないくらいシンプルなコードでした。

現在のプログラムの多くは、今後も多くの変更が入ります。そうであれば、完璧に動くことよりもメンテナンスがしやすいことが大切です。後々、悪い影響を及ぼすコードは複雑で難解なコードです。シンプルで意図が明快なコードが問題を起こすことはありません。

一般的な技術を有したエンジニアであれば誰でも理解できるコードを書いてください。

テストカバレッジ100%を目指さない理由

結論

テストカバレッジ100%は目指さない

理由

以前、このようなツイートをしました。

テストカバレッジ100%に違和感を感じない人はもう少し勉強した方がいいですね。

テストカバレッジ100%を目指すとこのようになってしまいます。

さらにテストの問題も発生します。

テストカバレッジの問題については次の記事に詳しく書いてあります。

全てのコードにコメントを書くのは馬鹿げていると感じる人は多いでしょう。全てのコードにテストを書くということも同じように考えるとどうでしょう。何事も過ぎたるは及ばざるが如しです。

12329