n回目の転職をした

こちらの記事は転職ドラフト体験談投稿キャンペーンに参加しています。

job-draft.jp

という事で転職ドラフト経由で幸運にも内定を頂き、7月から新天地でお仕事してます。 貰えるものは貰っておこう。という感じで転職ドラフトの体験談を書いてく。

転職したきっかけ

今まで関東圏内に住んでいて都内の企業で働いていたが、ライフステージの変化とコロナ禍によるリモートワーク慣れも相まって、地方で働く可能性を探して活動した結果、あれよあれよと事が進み無事地方に移住した。

転職ドラフトを登録したきっかけ

転職ドラフト自体は2年ほど前に転職活動をしていた際、転職先を探すための1つの媒体として登録していた。 サービス自体は以前から知っていたが、なんとなく強そうな人が使うサービスという認識で敬遠していたものの所属していた組織でオファーする側として利用した際、実際は割と普通の人も登録しているのが分かり利用する事にした。

(それまでは有名人とか、OSSコミッターとか、そんな人しかいない世界観だと思ってた)

転職ドラフトの指名状況

転職ドラフトの指名状況としては、有難い事に複数の企業からお声がけ頂く事ができた。 自分の経歴的には経験年数だけは割と経過しているが(歴10年超)特筆して突出した成果があるというよりかは、ある程度経験を得るに従って仕事の難易度的なものが上がったりするものの、強い部類かというとそうではなく想像以上の企業の方々からお声がけ頂き大変恐縮した。

転職ドラフトへの改善要望

改善要望ではないけれど利用していてかなり気になった点としては、「ドラフト」という体をとって「オファー」を出すという形式にしてる割に、オファーを送る企業側に本当に自分を必要とする意向が高いのか疑問を抱くようなオファーがあるように見える事。もしかしたら本当に採用するのかもしれないが、短期間に数十人にオファーを出している企業を見て、全員採用する気はなさそうなイメージを持ってしまう。勿論オファーを出した側も話も聞かずに断れてしまうので、双方が納得できる形は想像以上に難しそうだと感じた。

もう一点は転職ドラフトには開催期間が存在して、一定期間までしか登録者に対してオファーが出せない状態になっているが、この開催期間を逆手にとって、終了間際に登録者にとって一番高いオファー金額でオファーを出す企業が存在する事。これはカジュアル面談数を稼ぐのが目標になってる組織がやってそうな雰囲気を感じるが、あまりモラル的に褒めらた行為ではないので企業イメージも下がるし、レジュメに記載されているスキルや経験に対してのオファー金額ではないため、かなり企業に対して不信感が高まった。こちらはお互い損しかないような行為なので仕組みで出来なくする等の対策をした方が良い気がする。

転職ドラフトを使った事がない人へのメッセージ

改善要望で少しネガティブな意見を出してしまったかもしれませんが、基本的にはオファー頂く企業の方々はかなり採用に対しての意向が高く、本当にオファーという感じがするので転職活動の手段の1つとして利用するのはかなりお勧めです。自分の場合は恥ずかしながらオファーを頂いて初めて認識する業界やビジネスがありエントリーするだけで見識が広まりました。

※勿論オファー=採用ではなく、話し合いを重ねた結果想定してるポジションとしてはスキルマッチしなかったり、カルチャーマッチしない等で結果採用に至らない場合や、逆にオファーをお断りする場合もあります。

本エントリを見て転職ドラフトやってみるか。という奇特な方は紹介コードから登録よろしくお願いします!紹介コード「PYSJ」です!!

西新宿オススメランチ10選

割とルーティンでランチを済ませてしまうタイプだが、近所のランチ10選

おすすめ10選

tabelog.com

  • 唐揚げ14個ランチが890円
  • 肉はジューシーというよりかは胸っぽい感じ
  • コスパ良。脂質もガッツリ取って大丈夫という時に行く

tabelog.com

  • うどんの量が割と多め
  • 豆腐サラダうどん(空海)か、冬のけんちんうどんがオススメ
  • 一緒について来る米が異様に旨い

tabelog.com

  • ノーマルの刀削麺が旨い。ピーク週3くらいで食べてた
  • 割と混むけど回転率が高め。4人とかで行くには向かないかも
  • 店員さんが皆めっちゃいい人

tabelog.com

  • 西新宿で麻婆豆腐食べたい時に行く
  • つけ麺も割と美味しい
  • ちょっと高い

tabelog.com

  • 自分で好きなだけ具を乗せられるのが良い
  • 中辛で割と辛いので普通辛から食べるのがオススメ
  • 低カロリーで食事を済ませたい時に行く。

tabelog.com

  • ごろっとした肉が入るのでボリューミー
  • 辛さもちょうど良い。
  • 五反田で見つけてからファン

tabelog.com

  • 玉ねぎのらっきょをひたすら連打する
  • 炭水化物を抑えて大量に食べたい時に行く
  • 前田ライスが旨い

tabelog.com

  • ちょっと贅沢したいときに行く
  • お昼に寿司を食った満足感で何か幸せになれる
  • お値段も普通の握りが千円くらいでお手頃

tabelog.com

  • 塩さば焼き定食が本当に旨い
  • ご飯の量の少な目で丁度よく、筋肉に良い
  • これで900円未満という新宿驚異のコスパ。ほぼ毎日行く

tabelog.com

  • タンパク質に目覚める前は結構行ってた
  • 野菜が美味しい
  • ドレッシングが日によってかなりムラがあり、ハズレを引くと酷いのがたまにキズ

k8s meet up #9 感想

割と最近いろんな所で話を聞くk8sさん。

今働いている所でもそろそろコンテナ化したいねーとか イイカンジにしたいねーとの事なのでジャブ程度に行ってきた。

kubernetes is

インフラツールにありがち(chef vs ansibleとか)な ツール、一体何使うの問題を振り払い、デファクトになりそうなkubernetes(k8s)さん デファクトになりそうな確信要素としては

  • コンテナ時代の一強コンテナであるdockerがパッケージとしてk8sをプロダクトに取り込む事を決めた!(β)
  • 弊社も使ってるAWSでk8sのマネージドサービスを発表!(β)

などなど、ずっとウォッチしてて何使うのが一番学習効率ええんや・・・ と悩んでる人もそろそろ重い腰が上がる要素が揃ってきてる(はず)

勉強会発表資料

アップロードされている物からピックアップ

Kubernetes at GitHub

今年に開催されたk8sの大きいイベント(kube con)で githubの中の人が事例についてkeynoteをした時の感想スライド サービス同士をつなぐrouter層もコンテナサービスとして定義していてなるほど。という感じ

ちなみにkeynoteyoutubeにアップされています:innocent:

これ

コンテナ作る時のtipsとか

スポンサードセッションで発表されたやつ コンテナ作る時の留意事項とか、1からやる時は注意しましょうねー みたいな事が記載されており参考にしていくぞ

その他

他色々なツールやらなんやらの紹介があり、k8sのエコシステムもマジで発達したな・・・ ウォッチングを怠っていたからか、急に進化したような感じがするけどきっとそんな事ないんだろうな・・・

CIツール「drone」の紹介

droneとは

オープンソースのCI(継続的インテグレーション)ツール githubでのプルリクエストやプッシュ等のトリガーが実行される毎に 自動で新規でコンテナを作成し、テストを行ってくれるいい奴

本家ドキュメント

メリット

  • 毎回コンテナ起動からテストが開始されるため、環境に左右されずらいシステムになっていく
  • drone自体もコンテナで起動するため、ポータビリティが高い
  • yamlでのビルド設定で、煩雑なGUI操作がない
  • 開発者に優しく、CLI環境も用意されている
  • プラグインはコンテナを連携させるような形で容易に実現できる

使い方

  • レポジトリのトップに設定を記述した.drone.yamlを設置するだけ
  • githubオーガナイズのメンバー以外はログイン出来ないとかの設定が簡単

簡単に試せる

drone自体がコンテナでの提供前提なので、dockerで簡単にサーバが構築できる ec2上で簡単に構築する事が出来ました (ちゃんと各imageをdocker pullしてからupしてね)

今回検証に利用したdocker-compose.yaml

version: '2'

services:
  drone-db:
    image: mysql/mysql-server:latest
    ports:
      - 3306
    volumes:
      - /root/drone/data:/var/lib/mysql
    restart: always
    hostname: drone-db
    environment:
      - MYSQL_DATABASE=drone
      - MYSQL_USER=drone
      - MYSQL_PASSWORD=drone

  drone-server:
    image: drone/drone:0.8
    ports:
      - 80:8000
      - 9000
    depends_on:
      - drone-db
    volumes:
      - /root/drone:/var/lib/drone/
    restart: always
    environment:
      - DRONE_OPEN=true
      - DRONE_HOST=127.0.0.1
      - DRONE_GITHUB=true
      - DRONE_GITHUB_CLIENT={見せらせないよ}
      - DRONE_GITHUB_SECRET={見せられないよ}
      - DRONE_ORGS=nantoka-team
      - DRONE_ADMIN=naganeys
      - DRONE_SECRET=dronedronedrone
      - DRONE_DATABASE_DRIVER=mysql
      - DRONE_DATABASE_DATASOURCE=drone:drone@tcp(drone-db:3306)/drone?parseTime=true

  drone-agent:
    image: drone/agent:0.8

    command: agent
    restart: always
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_SERVER=drone-server:9000
      - DRONE_SECRET=dronedronedrone

nodeでmessagepackのdecodeにハマった

APIクライアントを適当に書いてる時に、何かdecodeうまく行かない問題にハマった

decodeに使ったライブラリ

https://github.com/kawanet/msgpack-lite

jsでdecodeしようと思ったら多分これになる?ハズ

ダメだったコード例

  var request = require("request");

  request.get({
    url:"http://localhost:3000"
  }, function (error, responce, body){

   var msgpack = require("msgpack-lite");
   var data = msgpack.decode(body);

   console.log(data);
  });

最初は公式のexsampleに従ったままサクッとできると思ったらエラー

(略)/msgpack-lite/lib/read-core.js:24
    if (!func) throw new Error("Invalid type: " + (type ? ("0x" + type.toString(16)) : type));
               ^

Error: Invalid type: 0x�

http経由だとそんな簡単じゃないのかーなんて思いつつ、Unit8Arrayとかもゴニョりつつ 色々ググりながら試していっても中々解決できず。 最終的にはバッファの値がなぜか同一じゃないことに気づく。これ普通一緒なんじゃ・・・

■元のバイナリのバッファ
<Buffer 81 a4 74 65 73 74 a4 74 65 73 74>

■上記例コードのbodyのバッファ
<Buffer ef bf bd ef bf bd 74 65 73 74 ef bf bd 74 65 73 74>

そもそも受け取るデータがエンコードした時点のバッファと違かったら正しくデコード出来ないよね? という事で別のライブラリを利用したらあっさり解決。

var http = require("http");

var options = {
  hostname: 'localhost',
  port: 3000,
  path: '/'
};

var req = http.get(options, function(res){

  var output = '';

  res.on('data', function(chunk){
    var msgpack = require("msgpack-lite");
    output = msgpack.decode(chunk);
  });

  res.on('end', function(){
    console.log(output);
  });
});

req.end();

ライブラリ変えたらあっさり解決するの理不尽すぎた。 requestライブラリ使っても問題なくデコードする方法もあるんだろうけど うまく解決できず。諦め

API作成特化のフレームワーク「goa」

golangフレームワークgoa

api周りを新しくgoで作ることになり見つけた go言語で作られているAPI作成に特化しているフレームワーク。「goa(ゴア)」の紹介。

■公式 https://goa.design

goaを選択するメリット

  • swagger互換のドキュメントファイルを自動生成してくれる
  • API作成する際のバリデート周りをフレームワークの機能で定義出来る
  • テストを行う際のクライアントとヘルパーを自動生成してくれる

goaを選択するデメリット

  • DSLを利用してAPIを定義していくので学習コストが高い
  • API作成にしか特化していないので、その他の事は別途考える必要がある
  • dev、prodで分けるみたいな設定が今の所標準ではなさそう?

感想

DSLの記述に沿ってswagger自動更新してくれるのはほんと素晴らしいと思う。 特に人数少ない開発とかだとドキュメントの更新どうするのってなると思うし、 かといってAPI仕様ってちゃんと沿ってないと他の所で支障出そうだし。 そうゆう所のコストは積極的に下げていきたい。

後不安な所といえばパフォーマンスくらいだけど、API特化っていうくらいだから、 おそらく問題ないでしょう。ちゃんとベンチ取るのは課題

golangっぽいいい感じのパッケージ組み合わせて良いモノ作る。 みたいなのとはちょっと離れちゃうような気がするけど 枠組みの作成簡単にしてくれてビジネスロジックの方のコーディングに集中できるなら。 まぁ・・・そうゆうものかな・・・という感じ