フリーランスのエンジニア道

フリーランスエンジニアの不安を解消するブログ

Dockerfileでタイムゾーンを設定する方法

概要

GCPにRailsをdeployする時にDockerfileでimageをbuildすると思います。その際にDockerのデフォルトのタイムゾーンはUTCとなっているため、これをAsia/Tokyoの時間に変更したい場合の設定方法です。

 

2種類のやり方

  1. ホストの/etc/localtimeをコンテナーにマウントする
  2. 環境変数TZで指定する

 

ホストからコンテナーにマウントするとDocker Imageのポータビリティには良いですが、ほとんどの人は日本時間に固定した方がシンプルで楽だったりするので、2の環境変数で設定したいと思います。

 

環境変数での設定方法

ENV TZ='Asia/Tokyo'

 

サンプルDockerfile

Rails+Whenever(crontab)のイメージサンプルです。

FROM gcr.io/google_appengine/ruby

# Install 2.4.2 if not already preinstalled by the base image
RUN cd /rbenv/plugins/ruby-build && \
    git pull && \
    rbenv install -s 2.4.2 && \
    rbenv global 2.4.2 && \
    gem install -q --no-rdoc --no-ri bundler --version 1.15.4
ENV RBENV_VERSION 2.4.2

COPY Gemfile Gemfile.lock /app/
# Install required gems.
RUN bundle install --deployment && rbenv rehash
# Copy the application files.
COPY . /app/

# Set environment variables.
ENV RACK_ENV=$RAILS_ENV \
    RAILS_ENV=$RAILS_ENV \
    RAILS_SERVE_STATIC_FILES=true \
    TZ='Asia/Tokyo'

# Run asset pipeline.
RUN bundle exec rake assets:precompile

# Reset entrypoint to override base image.
ENTRYPOINT []

# Crontab
RUN apt-get update && apt-get install -y cron
RUN /bin/cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN touch /var/log/cron.log
RUN bundle exec whenever --update-crontab

# Start app and cron
CMD cron && bundle exec puma -C config/puma.rb && /bin/tail -f /dev/null

 

これでcronもちゃんと動きます

色相・彩度・明度をカラーコードに変換してグラデーションラベルを作る方法

TL;DR

HSV空間(hue=色相、saturation=彩度、value=明度)の色相だけ計算して、hsvToHexするといい。ついでに彩度や明度をいじって好きな色のラベルが作れます。

HSV色空間 - Wikipedia

 

さっそく実際のコードです

まとめ

これで簡単にステータスに応じたラベル色の変更やグラデーションの表現ができるようになりますね。

派遣エンジニアは一刻も早く搾取されるのを辞めて独立するべき

派遣会社を通してるITエンジニアはすぐに辞めましょう

人材派遣と人材紹介の市場規模とか粗利率を考えれば、派遣というビジネスモデルに乗っかると搾取されるということがよくわかります。

 

人材派遣ビジネスの市場規模は3兆7800億

人材紹介ビジネスの市場規模は1300億

人材派遣ビジネスの方が極めて市場規模は大きいです。

 

なぜなら・・・能力がなくてもすごく儲かるから。

人材ビジネス市場に関する調査結果 2014 - 市場調査とマーケティングの矢野経済研究所

 

業界の利益率ランキングを見ると

f:id:kitahashi-ryoichi:20171012172955p:plain人材派遣業界 利益率ランキング一覧-業界動向サーチ

 

ディップの17%がMAXで、だいたい10%くらいは確保できているようです。すべての販管費を引いた純利益なので、粗利率はもっと高くなりますよね!

 

例えば、この記事を参考にすると

派遣会社の利益率 試算表(現物支給) (^_-)-☆ - 暴露 派遣業界 ( ゚Д゚)

粗利30%で諸々コストを差引すると、概ね上の純利益率に近い数字になります。

 

つまり・・・人材派遣ビジネスのモデルは

人を派遣した売上の7割が派遣エンジニアに、3割は会社の懐に落ちる仕組みになっています。

 

これがエンド直請けしているフリーランスITエンジニア派遣サービスを使うとマージンが10%~20%も節約することができます!金額ベースでいうと月々10万〜20万、年額にすると120万〜240万も収入アップが可能です。

レバテックフリーランスの仲介手数料は10%〜20%? - フリーランスのエンジニア道

 

IT特有の二重・三重の派遣で収入が底辺の場合も

派遣会社が1枚絡んでくるだけで30%抜かれるのに、2枚・3枚と派遣会社が絡めばあら不思議!エンド請求は100万とかしていても、ITエンジニアの手元に残るお金が手取り20万なんて事態が発生していることがあります。Wow!

f:id:kitahashi-ryoichi:20170722195742p:plain

フリーランスになるとリスクが〜とか言ってる場合ではないですよ。

 

ま・じ・で

 

ぶっちゃけITエンジニアの需要はうなぎのぼりなのに、全然供給が追いついていないので仕事がなくなることなんてほとんどありません。

 

さっさと搾取されるのを辞めて独立しましょう!

ヤバっ搾取されてるかも?と感じたらまずはエージェントに登録

レバテックフリーランスギークスジョブが最大手なのでおすすめ

 

そしてソッコーで今の会社は辞めましょう

ITエンジニアは転職かフリーランスか起業するか

ITエンジニア3つのキャリア

  1. 転職する
  2. フリーランスになる
  3. 起業する

ほとんどの人は転職してちょっと年収が上がって喜んで終わり。

稼ぎたい人はフリーランスになって年収1000万を達成して終わり。

億稼ぎたければ、志があれば起業して巨万の富を築くか自己破産。

 

さーてみなさんはどれを選びますか?

 

今いる会社好きですか?

ぼくも新卒で入った会社はカルチャーがしっかりしてて、ハードワークなのも好きでした。いわゆる雇用が守られてるので毎月の給料を不安に感じたことはないですし、福利厚生も充実していていい会社でした。

 

いくら会社が好きだったとしても、億稼ごうと思ったら起業するほかありません。

 

転職してもちょっと年収が上がるくらいでどこも大差ありませんでした。自分の行動が変わらないことには転職先でもまた同じような環境を作ってしまうからです。

 

もっと稼ぎたいですか?

稼ぎたければまずはフリーランスになることをオススメします。会社員時代よりも確実に可処分所得と可処分時間が増えます。ただし、決済権から遠ざかるので、いえや!と意思決定するようなシーンよりも、決済権のあるプロパー社員にすべて材料をお膳立てして意思決定してもらうような仕事のやり方になります。

 

この仕事のやり方は好き好きなので、稼ぎと事業上の意思決定はトレードオフです。

 

もっともっと稼ぎたいですか?

1000万以上稼ごうと思うと自分で事業を起こしてリスクを取るしかないです。自分の身銭を切るか、VCや銀行から資金調達するとかごにょごにょやりながら自分のプロダクトを大きく育てることができれば億単位のEXITが狙えます。

 

その代わり生活には何の保証もなくなります。

フリーランスで生活費を稼ぎながらプロダクト開発している人が多いのはその辺のリスクとリターンのバランスを取っているからなんだと思います。

 

ITエンジニアは転職かフリーランスか起業するか

年収500万で安心を買うなら転職を、年収1000万で稼ぐならフリーランスを、もっとお金が欲しかったら起業をといった具合でしょうか。どれだけ貪欲なのかでキャリアが決まってくるというのもおもしろいですね!

 

現役フリーランスエンジニアが教える!システムエンジニアの独立方法まとめ

ITエンジニアはあえて月収100万よりも月収75万のおもしろい仕事を受けるべきだ

ITエンジニアはあえて月収75万くらいのおもしろい仕事を受けるべき

世の中、金・金・金ですが、ITエンジニアはお金よりも大事なものがあります。

 

それは・・・そう自分の能力です!

f:id:kitahashi-ryoichi:20171011163029j:plain

 

僕のケースでは月100万くらいの案件を受けられるのですが、自分の能力が伸びないので75万くらいの案件でも面白そうだったら飛びつくようにしています。というのも高単価の仕事は高単価な理由があって、単価が低くてもやってくれる人がいないような案件なのです。単に難しい案件とかではなく、レガシーなシステムのリプレースとか、落としたらまじで損害が数億みたいなアプリの保守だったりします。

 

そんな環境では中々自己成長につながるような新しいチャレンジが出来なくて歯がゆくなることも多いので、単価を下げてでもおもしろい案件をやってみることをオススメします。

 

つーか儲けても税金がひどい!

所得税・住民税・健康保険税の3点セットで約3~4割が問答無用でむしり取られます。1000万稼ぐと2年後からは消費税8%もむしり取られるようになり、稼いでも稼いでも結局税率が上がる累進課税という蟻地獄にハマることになるので、適度な金額で適度に自己投資していくのがなんだかんだ精神衛生上良いです。

 

ほんと税金がひどい!

ほんと税金はひどい!

もう払いたくないでござる

 

おもしろそうな仕事から次の仕事の種が自然にみつかる

僕はもともとJavaエンジニアで、PHPはちょろっとやってて、フロントエンドも普通にやれるよーっていう所からメディア開発のお手伝いをしていると自分でもやってみたくなり色々SEOとかグロースハックを重点的に吸収していきました。

 

すると次はメディア開発とSEO・グロースハックを武器にして、別のメディアだけどもっとモダンなReact/Railsを使いつつマイクロサービス化していて、決済とか認証といった硬めの実装を経験しました。

 

Webフルスタック感が満載になってきたので、だいたいどこでも即戦力でやれるようになり、AIや機械学習を今ではキャッチアップしてTensorFlowを使ったモデルの作成とサービス化も普通にできるようになりました。

 

こんな具合に自然と幅が広がっていく感じで、気づけばWebフルスタック+機械学習エンジニアでPMもやれるよーっていう稀有なポジションを作っていくことができました。

 

金よりも成長できる案件の方が実はおいしい

目先のお金よりも成長できるおもしろい案件の方がおいしいよねーというのは周りのフリーランスITエンジニアの中では共通認識があって、たしかに短期的に高単価の案件は焼肉とか食べ放題だけど、能力を上げれば残りの働く時間に対して掛け算で効いてくるので長期的な視点で見れば圧倒的に成長報酬の方が美味しいはずです。

 

一番いいのは高単価×成長できるおもしろ案件なんですけどね!

 

イケイケベンチャーの案件がたくさんあるエージェントに登録しておくと、自分のおもしろセンサーにひっかかる案件とのマッチング数もあがると思うので、登録しておかないと損ですね!レバテックフリーランスギークスジョブの2大大手はマスト登録ですよ。

稼げるフリーランスITエンジニアへのスキル取得最短ルートとは

フリーランスITエンジニアといえば月100万稼げる

月収100万も夢じゃない職業ですが、実際問題スキルセットの幅は広くて専門職ならではの茨の道があります。普通に稼ぐ分には何やっても稼げますが、最短経路で月100万稼ごうとおもうと攻略法が必要ではないでしょうか。

 

そもそも月100万稼ぐ仕事とは

大きく2つあります

  1. AIとか画像処理とか超専門的なエンジニア
  2. マネジメントできるエンジニア

 

多くの人が考えている月100万はAIとか実装するバリバリのITエンジニアをイメージしがちですが、実際に月100万を稼ぐ人たちは「マネジメントができる」エンジニアです。これだったらそんなに難しくないかも?と思ってもらえる気がします。

 

0からマネジメントができるエンジニアへの最短ルート

業界にはコードもかけないクズはエンジニアマネジャーが務まらない謎のルールがあるので、まずはまともなコードを書けるようになる必要があります。さらに担当するサービスによって自分のスキルセットの広がりが左右されるので、大規模サービスに触れておくというのもキャリア初期においては重要だと考えています。

 

  1. まともなコードが書けるようになる
  2. 大規模サービスの開発・運用・保守などをやれる
  3. 新規事業などで0ベースの開発もやれる

 

この3点セットが経験できるフィールドがあれば、たぶん1年くらいでITエンジニアの最前線くらいに行けます。(当然月300時間くらい働くか勉強するかしてますけど)

 

ここまでくれば後はマネジメントスキルだけです。

サービス開発では当然チームを組んでいるはず(エンジニア・デザイナー・ディレクターとか)なので、そのチームの中でイニシアチブを取りながらマネジメントの練習をしておくともうそれはマネジメントスキルといっても過言ではありません。

 

なんと・・・1年もあれば「マネジメントできる」エンジニアになれる!

 

最短ルートはどんな企業にあるのか

少なくとも最短ルートでスキルアップするには軽量言語と呼ばれるスクリプト言語がおすすめです。というのもJavaやScalaといった型ありのコンパイルする言語から入ると重厚な基礎知識が必要になってきます・・・。これはとても大事な基礎知識ですが、Railsといったスクリプト言語はある程度すっとばせるので最短という考えでは言語選択も考えて企業選びをしなければいけません。

 

スクリプト言語をメイン言語にしている会社がおすすめ

Ruby on Rails, Python, Javascript

※PHPは中途半端で単価が安く選択するメリットはあまりない

 

Rails=Webサービス開発の王道

Python=AI・機械学習派閥

Javascript=フロントエンドもやるフルスタック目指すなら必須

 

となってくると、基本的にはRailsをメインに使っている企業を選ぶのが合理的です。

 

大規模も新規事業もやってる企業に入ろう!

例えばカカクコムなんかは、食べログという超絶大規模サービスを運用しており、一方で新規事業もバンバンやってたりします。そういう成熟したサービスをもっていて新規事業にも意欲的にチャレンジしているようなメガベンチャーがおすすめではないでしょうか?

f:id:kitahashi-ryoichi:20171011154530p:plain

 

今普通のITエンジニアの人もサービス開発でマネジメントできるエンジニアを目指そう

未経験の0からでもフリーランスITエンジニアで夢の月収100万は不可能ではなく、すでにITエンジニアとして3年くらい経験があればちょっと微調整するだけで月100万稼ぐフリーランスに進化することは十分可能ではないでしょうか?

 

人によっては月100万くらい軽く稼げるスキルスタックがあるのに、意外と年収低くてびっくりするときがあるので、フリーランス専門のエージェントに相談してみてスキルの棚卸しをオススメします。レバテックフリーランスギークスジョブといった大手エージェントがおすすめです。

フリーランスエンジニアになったら知っておきたい単価交渉の技術

単価交渉の技術とは?

フリーランスエンジニアになったら自分の売値を決めるのは自分です。月70万といえば70万になるし、月80万といえば80万になる実力主義にようこそ!最近、よく単価交渉どうやってるの?と聞かれましたので自分の単価交渉方法をご紹介します。

 

こんな交渉をしたい人におすすめ

例:週5で65万の単価を週3で65万に上げたい

 

単価交渉するための準備

こんな交渉戦略とかいう高尚な学問でも準備は大事だよってことで、僕もそう思うので準備の話をしましょう。

しかし交渉学では、必ず交渉前の事前準備からスタートさせるべきだと考えます。交渉前の準備によって、①交渉中、不意な相手の提案や、こちらをだまそうとする汚い戦術に惑わされないようになる、②交渉に期待する成果をあらかじめはっきりさせることで、その場の雰囲気に流されて安易に譲歩する危険が少なくなる、③あらかじめ交渉の進行を予想して、事前の段取りを決めておくことで、交渉を効果的に進めることができる、といったメリットがあるからです。

第6回 交渉戦略を立案する――事前準備の5段階アプローチ (1/3ページ) - 戦略的交渉入門 : 日経Bizアカデミー

 

3つの視点でエンジニアの単価を考えてみてください

  1. フリーランスエンジニア全体の相場観
  2. クライアントの感じているスイッチングコスト
  3. お金を払えるクライアントだったらいくら払う?

 

要は、相場とクライアントのスイッチングコストと自分のバリューアップを考えましょうということです。

 

フリーランスエンジニア全体の相場観

2017年現在の平均値だと月70万くらいが相場でしょうか。今後も人手不足は続く一方で、TECH::CAMP上がりのジュニアエンジニアの方しか増えないので今後も専門的なレベルのエンジニアの需要は伸びていくと思われます。

 

今現在70万の人だったら、75万とか80万に上げるのはさほど難しい問題ではありません。PMやマネジメントがこなせると単価はもっと跳ね上がりますけど、手が動かせなくなったりしてつまらないので今回はエンジニアとして上限を目指そうということにしましょう。

 

クライアントの感じているスイッチングコスト

どこもかしこもエンジニア不足だけど、新しい人がうまく稼働して高い生産性を出せるかなんて確かではないですし、辞められると困る会社が多いです。

 

これがクライアントが感じているスイッチングコストで、他の人に切り替えるくらいだったら5万とか10万くらい上げても痛くも痒くもないと思っている所もあるはずです。僕の場合は完全にどっぷりフルスタックで何でもこなす感じなので、とにかく仕事を頑張れば頑張るほどスイッチングコストが高くなって単価交渉で有利になる構造になっています。

 

結論:最初思いっきり頑張ってスイッチングコストをあげる

 

お金を払えるクライアントだったらいくら払う?

儲かってない企業だと、いくらスイッチングコストが高くなったとはいえ単価交渉は難しいです。何といっても金がないと何も始まりません・・・。資金調達したばかりのベンチャーなんて常に自転車操業のやりがい搾取なので単価交渉の余地は少ないです。

 

逆にいうとヒットして利益を出し始めたベンチャーは思いっきりアクセルをベタ踏みしたくなる力がはたらく(ステークホルダーからの圧力)ので、多少の10%や20%の値上げなんかは許容されてしまう環境になっているので狙い目だと思います。

 

実際に単価交渉してみる

すべては準備が完了しているかどうかです!(笑

 

エージェント経由であれば普通にエージェントにLINEで「単価75万に上げたいです。」って言ってみましょう。さらっと交渉してくれます。

 

基本的にUp or Outが一番クロージングしやすいので、上げるのか・辞めるのかを迫ります。なぜ上げて欲しいのかの理由は適当でいいですが、実績があれば実績を、他に単価の高いやつがあるとかでも構いません。

 

スイッチングコストが積み上がっていて、クライアントにお金があれば単価交渉は成功するはずです。実際に僕はこの3つのポイントを押さえて週5で65万から週3で65万に鬼のように引き上げました。

 

個人の場合だと直接やり取りする必要があるので、優しい人にはかなり難易度が高いのでこういう時ばかりはエージェント通しておいてよかったと思います。もし仮に単価交渉が決裂して辞めることになっても、すぐに別の案件は持ってきてくれるのでエージェント経由もありかなぁ〜といったところでしょうか。

 

デメリットはこの記事にあるように仲介手数料を取られますが、自分で営業するコストがどれくらい楽なのかで天秤にかけると良いかもしれません。

レバテックフリーランスの仲介手数料は10%〜20%?

 

フリーランスITエンジニア向けのエージェントは僕も使っているレバテックフリーランスギークスジョブがおすすめです。