転職エントリ(7ヶ月半ぶり4回目)

転職しました

はい。無職をやめました。
前職は道玄坂の緑色の会社で、転職先は表参道のファッションテック会社です。

なんでやめたの?

技術的には本当に国内最高峰の会社だと思ってますし、一緒に働くエンジニアもいい人たちでした。 ただただ価値観が合わなかったことが原因で体調崩したのでやめることになりました。私は仕事9:趣味1ではなく仕事5:趣味5でありたいので、その辺りを中心にズレが生じた感じです。前前職から2週間で決めた会社だったので価値観のミスマッチはしょうがないかなと思います。
でも技術を極めたい or 本気で市場を変えたいならいい会社です。

なにやるの?

Vue.js / Nuxt.js / TypeScript / Go / Kubernetes / Microservices / GCPでファッションをテックします。 多分募集してるのでよろしくな?

www.wantedly.com

www.wantedly.com

おわり

転職祝いはいつでも受け付けています。 https://www.amazon.jp/hz/wishlist/ls/1UJE3YGC0YFJ7?ref_=wl_share

GAE -> Pub/Sub -> CloudFunctionsで無職カウントを自動化する

こんにちは、無職です。
無職になった日から、Twitter上で流行ってる無職日数カウントをしていたんですが、流石に手動更新はめんどくさいなと思ったので自動化しました。
でも「今時ローカルマシンからcronで...」みたいなのは面白くないので、せっかくなので最近βになったCloud FunctionsのGoを使います。

続きを読む

Best Buy 2018的なアレ

はじめに

はい、Best Buy 2018的なアレです。 文章が書きたくなったので、ブログに投稿するやつをやります。
はてなに書く文章じゃないなと思ったので、Mediumにでも流そうかと思ったのですが、Markdownで書けない点が無理でした。 その点はてなはサイコー、Markdown Editorがあるので。noteは宗教的にちょっと無理ですね。
的なアレなので、Buyっぽくないものも含まれるんですが、まあ2018に「おーっ」となったもの的なアレです。

Best Buy 2018

Goods

Wilfa Coffee Grinder Svart Nymalt

一台でハンドドリップ・エアロプレス・フレンチプレス・エスプレッソなどなど17段階の粒度調整ができるコーヒーグラインダーです。 割とコーヒー好きなのにお家でそんなにコーヒーを飲まないので宝の持ち腐れ感がすごいのですが、いいものはいいものです。残念ながら他の電動グラインダーを使ったことがないので、味の比較等ができませんが、一応お家でフレンチプレスとハンドドリップする機会があるのでどっちも挽けるのは割と便利です。

BALMUDA The Range

お家に600W出せるレンジがあるのって、人権感ないですか?冷凍食品とかコンビニ弁当温めるときとかに小さな優越感を感じられるんですよ。
それはそれとして、オタクなのでシンプルなデザインが好きでBALMUDAは大変好物です。BALMUDA The Rangeも、キッチンに置いてもデザインで存在感を主張して来ず(大きさによる存在感は別)好きです。あと、温め始めたときと温め終わったときに音楽がなるという素敵仕様が大変かわいい。

鳩時計(無印良品

かわいい。無意識でも鳩が鳴くことによって時間がわかるのは良い。あとかわいい。 前から欲しかったんですが、数量限定でベリーキュートな赤が出ててつい買ってしまったやつです。かわいい。

www.muji.net

App

Kyash

いや人類最高の発明でしょこれ、サイコー!!って言いながらKyash社に書類出したら普通に落ちました。
全人類が求めていたUXの個人間送金アプリなのに誰でも秒で発行できてしまうクレカがついて来る、しかもなんかキャッシュバックされるのでサイコーofサイコーですよ。インストールしてない人早くインストールしてほしい。

kyash.co

メルチャリ

普段、docomoのアレを多用していてこないだ福岡に行った時に初めて乗ったんですが、これぞ求めていたシェアサイクルって感じでした。
行政主導でやるならdocomoじゃなくてこっちにしてくれ...頼む.......。

docomoのアレと比べていい点が、

  • 1分4円は日常や観光でちょっとの距離を移動したい時に便利(docomoの30分150円は割と躊躇する)

  • その辺のマンションとかにポートがあるので、わざわざ公共交通機関とか公共施設とかに借り/返しにいかなくて良い。

  • いざとなればポート外に乗り捨て可能は心境的に便利(docomoのアレもそこが借りるときのネックになることがある)

って感じでした。東京だと国立でも乗れるらしいので是非是非。

merchari.bike

Anime

宇宙よりも遠い場所

よりもいは必修。5話まで見て。

yorimoi.com

少女☆歌劇 レヴュースタァライト

私は3話が好きです。

revuestarlight.com

Movie

リズと青い鳥

周りのオタクが続々と死に絶えていたので、ユーフォ未履修のまま公開1週間後くらいにピカデリーで見て心に大きなダメージを負いました。数ヶ月後、立川シネマシティでの極音上映で死にました。誰がなんと言おうとこれは立川シネマシティで観るべき映画なので、立川シネマシティにはまた頑張ってほしいですね。

liz-bluebird.com

映画 HUGっと!プリキュアふたりはプリキュア オールスターズメモリー

2018年最高のアニメーション映画はリズと青い鳥だと思っていたら、これに殺されました。 私はプリキュアのオタクではない(ハートキャッチ/スイート/スマイル/ハピネスチャージ/魔法つかい/HUGっとしか見てない)にも関わらず、本来のターゲット層の観客に囲まれながらボロボロ泣きました。
もともと現行シリーズのHUGっとプリキュアは『私がなりたい私になること』について丁寧に描く作品で、だからこそ「男の子プリキュア」が生まれる最高に2018年らしいプリキュアなので映画も大変期待していたのですが、「本編で描かなかった育児の辛さを味わって折れそうになった主人公が私のなりたい私じゃないと立ち上がる」、「全員のプリキュアが敵にやられた時、過去プリを観客の過去プリへの思い出の力で蘇らせる」、「過去プリのOPアレンジBGMをバックに、過去プリそれぞれの言葉で敵に呼びかける」などなどなどで涙腺がボロボロになりました。 過去プリでも現プリでも1人でもプリキュアに思い入れのある人は是非見て泣いてほしいです。

www.toei.co.jp

Comic

ワールドトリガー

ワールドトリガーは最高。11月に買って4周くらいしました。 何周読んでも楽しいのでマジで遅効性SF。
19巻まで出てるのですが、今なら5巻まで無料で19巻の続きがジャンプSQですぐ読めるので実質無料です。読みましょう。

咲-Saki-

阿知賀編完結から何年経ったんだ...と思いながら読んでたら決勝戦が最高の始まり方で始まった...タコスちゃん........。誰か咲の話でお酒飲みましょうって感じなのでみんな読んで。

Boardgame

サイズ -大鎌戦役-

めっちゃやりたかったけど日本版は品切れ&再販待ちだったので3月ごろにアメリカから輸入しました。世界観とかコンポーネントとかが大変オタク好みのゲームです。

1プレイインスト含めて4~5時間かかるんですが、多分今までやったボードゲームで一番楽しいです。時間がかかるのでやれる人がそんなにいないのが難点なんですが...。

誰か忘年会でスマブラとかやらずにサイズやりません?英語版なら持って行きます。

サイズ - 大鎌戦役 - 完全日本語版

サイズ - 大鎌戦役 - 完全日本語版

Book

エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング

エモい技術書シリーズその1。 エモすぎてエモ!っとなったので前職のCTOに渡したら1週間後にリストラされました。
それは置いておいて、仕事している上で感じるモヤモヤをいい感じに言語化してくれる最高な本です。読みにくいけど一周すると賢くなれます。エンジニアリング組織論と書いてますが、多分大体のチームで言えることなので、チームで何かする機会がある人は読むべき本だと思うのです。

おわりに

Buyとは?って感じの記事になってしまいましたがまあ時間とお金をかけて満足したものということで。 2019年も散財していこうな!

BFF (Backends For Frontends) の話

BFF、私としては、最近(?)よく名前を目にするようになったバズワード的な存在なのですが、 私はフロントエンドについては疎い方なので、こんな時に頼りになるGoogle Trendに聞いてみました。

f:id:jkimura:20180601012138p:plain

いい比較対象がなかったので、Vue.jsのフレームワークである、Nuxt.js と比較しました。
Nuxt.jsもいい感じに伸びてますが、"Backends For Frontends"も若干山があるのが見えます。
これを見ると、2016年代前半からWordとしてはあったようですが、その後落ち込んでいます。
ですが、最近また山が増えてきており、一番直近の山は最近の山の中で一番大きいようですので、また流行っていると言えるのではないでしょうか?

ちなみに、"BFF"で検索をすると、"Best Friends Forever"のノイズが入るのでダメです。
Backends For Frontendsは残念ながら女子高生に人気ではありません。

実際に検索してみると、2016年後半から、2017年前半にかけて、ベンチャー企業で導入してみた発表が出てきてますね。
最近も、LTなどで当たり前のようにBFFが出てきたり、こんなイベントがあったりとメジャーな存在になりつつあるような印象を受けます。

https://uit.connpass.com/event/88434/

というわけで、今回はそんな BFF (Backends For Frontends) を自分なりの解釈で話します。

BFF (Backends For Frontends) とは

その名の通り、フロントエンドのためのバックエンドです。
図にすると以下のような感じです。*1

f:id:jkimura:20180605014934p:plain

BFFで使われる言語としては、

  • ・フロントエンドエンジニアが実装する場合は、Node.js
  • ・バックエンドエンジニアが実装する場合は、 GolangRails

をよく見ます。 一般的には、Node.jsを使い、フロントエンジニアが実装しているケースの方が多い印象を受けます。

BFFの責務・BFFを使う理由

感覚的な話です。
私は、各サービス設計時にも「単一責任の原則(Single Responsibility Principle)」が当てはまると思っていて、
各サービスでそれを実現しながらも、フロントエンドのパフォーマンスを落とさないためには、BFFは必然的に出てくるものだと思っています。

例としては、

  • ・ データ集計・分析サービスは、与えられたデータを集計・分析し、最適なフォーマットで結果を返す
  • 全文検索サービスは、対象のデータから検索を行い、最適なフォーマットで結果を返す
  • ・ 認証サービスは、与えられたユーザー情報により認証を行い、最適なフォーマットで結果を返す

上記3つのようなサービスがあった場合、それぞれのサービスが思う最適なフォーマットは異なると思います。
また、フロントエンドが欲しいと思うフォーマットもそれぞれ異なると思います。

この時点で、フロントエンドが「欲しいと思うフォーマット」を取得するには、以下の2つの方法があるかと思います。

  • ・ それぞれのサービスが、フロントが欲しいと思うフォーマットに統一する
  • ・ フロントエンドが、それぞれのサービスからバラバラのフォーマットを受け取った後、自力でフォーマットする

それぞれ見ていきましょう。

それぞれのサービスが、フロントが欲しいと思うフォーマットに統一する

「単一責任の原則」の「クラスを変更する理由は1つ以上存在してはならない」が崩れます。
「データ集計・分析サービス」の責務は「データを集計・分析すること」であって、「先(フロントエンド)のことまで考えてフォーマットすること」でありません。

サービスを利用するフロントエンドが1つであり、フロントエンド:サービスが 1:1 だった場合はまだなんとかなるでしょう。
ですが、別のWebアプリケーションでも「データ集計・分析サービス」を利用することになり、フロントエンドが求めているフォーマットが違った場合はどうなるでしょうか?
新しいWebアプリケーションのフォーマットに対応するために、「データ集計・分析サービス」を修正しますか? 本来の責務である「集計・分析」に手を加えるわけではないのに?

個人的には、ちょっと気持ち悪いですね。

  • ・ 本来の責務とは逸脱した処理をそのサービスに持たせることになる
  • ・ サービスがフロントエンドを意識してしまっているので、密結合なシステムになってしまう

あたりが受け入れ難いです。

フロントエンドが、それぞれのサービスからバラバラのフォーマットを受け取った後、自力でフォーマットする

パフォーマンスに影響が出ます。
各サービスのフォーマットを、自身が求めるフォーマットに変換するのは、確かにView側の都合なのでフロントエンドの責務であると言えます。
ですが、ただえさえパフォーマンスに気を使わなければならないWebの世界で、そんな悠長なことをして入られますか?という疑問点は浮かびます。
また、多数のサービスに同時にリクエストを飛ばす際、HTTPの同時接続数制限である6はどうしてもネックになってきます。

なのでBFF

そこをBFFにAPI Gateway的な責務を持たせることにより、双方の問題を解消することにしました。
もっと突き詰めると、API Gatewayを持つBackend(Golang)と、API Gatewayからのレスポンスに対してさらにフロントエンド向けに処理をするBFF(Node.js)に分かれると思いますが、 現状のプロダクトの規模だとこれで十分だと私は思います。

これで、各サービスの独立性は保ちつつ、フロントエンドのパフォーマンスを落とさずに、サービスとフロントエンドの連携ができました。
別のWebアプリケーションを作るときは、フロントエンドとBFFをセットで作れば、各サービスの修正をせずとも実装できるわけですね。

世間一般的なBFF

BFFの詳細な解説は、以下の記事が詳しいと思います。(すごく参考になりました。)

Sam Newman - Backends For Frontends

日本語記事だとこちらも、わかりやすく解説されていて読みやすいです。

BFF(Backends For Frontends)超入門――Netflix、Twitter、リクルートテクノロジーズが採用する理由 (1/2):マイクロサービス/API時代のフロントエンド開発(1) - @IT

まとめ

「なぜBFFを導入しようと思ったのか」を長々と書いてしまいましたが、結論は「書いててスッキリするので早く導入しよう!」だと思います。
もちろん、「一刻も早くサービスをリリースしたい」という過程では必要ないと思いますが、「今後規模が拡大するかもしれないサービスの設計」や、「既存のサービスを利用した新規サービス設計」などでは導入の価値は十二分にあるかと感じました。
BFFは、世間のマイクロサービス化の流れに乗ってこれから当たり前になっていくアーキテクチャかと思いますので、概念だけでも押さえておき、いざ出会った時に困らないようにしておきましょう。

*1:オリジナルのThe Go gopherGopherくん)は、Renée Frenchによってデザインされました。

NuxtMeetup#2に参加してきました!

今回は、今アツいJSフレームワークNuxt.jsに関するイベント、
NuxtMeetup#2に参加してきました!

nuxt-meetup.connpass.com

Why?

今働いている会社では私を中心としてNuxtが流行っていて、 Productionにも導入しようとする動きもあります。

Production導入にあたって、他社のProduction導入事例を聞いた上で検討したいと思い参加してきました!

今アツいフレームワークのイベントだけあって、100人の定員に対して150人以上も参加希望者がおり、会場にいても常に熱気が伝わってくるイベントでした。
LTの内容もProduction導入事例がほとんどで、先人の知見が得られたので大変よかったです。

というわけで、1つ1つのセッションの内容を軽くまとめつつ振り返ります。

続きを読む