ハードルを下げ続けるブログ@task

常に低い意識で投稿していきたいエンジニアのブログ。当ブログの内容は、個人の見解であり所属する組織の公式見解ではありませんよ。

Expressでのチーム開発が辛いあなたのためのNestJS

この記事は mohikanz Advent Calendar 2019の3日目です

昨日は gimKondo さんによる全人類が読むべき ITエンジニアの雑談Slack発 オンライン読書会 でした。

僕の記事は読まなくてもまっとうに生きていけますが、読んでくれると嬉しいです、

今年の2月に現職に転職し、プロジェクトの立ち上げ以来お世話になっている Framework: NestJS についてのご紹介

転職についてはこちらをどうぞ ↓

note.com

背景

  • わたし
    • 未経験からエンジニアへキャリアチェンジ組(エンジニア歴は2年くらい)
    • フロントエンドより(そうでもない)
    • サーバーサイドの開発経験は Django
  • チーム
    • 開発者 3人のうち2人がひよこ(私を含む)
    • 途中で、フロントエンド寄りのスキルのメンバーがジョイン
  • プロダクト

NestJSとは

nestjs.com

  • TypeScript で記述された Node.js サーバーサイドアプリケーションのための フレームワーク
  • DI(依存性注入) の思想から、オブジェクト同士の依存あとからを解決するため、オブジェクト間を疎結合にし、テストに優れる
  • 実装内部のCoreな部分は Express であり、Express に明確な指針を与えてくれる

よく Angular ライクなと紹介されますが(Angularに強い影響を受けている)、 当方 Angular わからないマンでもなんとか使えてるので、Angular好きな人のためのフレームワークってわけでもないです。(DIを強烈に信奉しているわけでもない)

NestJSの選定理由

  • インターフェースの型をフロントエンドとある程度合わせたい
  • サーバーサイド及びフロントエンドのコードを互いに流用できる(と思った)
  • 開発経験豊富なベテランやExpressの開発になれた人はおらず、強烈な指針がないとすぐに負債化するのは目に見えていた
  • 流行りそう

実際にNestJSを使ってみて何がよかったか

選定理由の3番目について一番利点を感じていて、開発経験が浅く、秀でたベテランエンジニアがいないチームでもある程度秩序をもった状態を維持できていることはとてもありがたく思ってます。

NestJSでは、Postされる値のバリデーションやレスポンスの整形などプレゼンテーション層は Controllerに、ユースケースService に、にとそれぞれの責務がはっきりとしているため、一つ見本的なコードがあれば、触ったことがない人でも割と簡単に新しいエンドポイントを実装する事ができます。実際に、途中で加わったメンバーも(それなりの力量はあったものの)かなり早い段階でサーバーサイドの実装ができるようになっていました。

また、Expressに秩序を与えるのと同時に、サーバーサイドフレームワークとして本質的ではないもの(DBへの接続など)に関してコアな部分は依存を持たないため、使用するライブラリーをかなり自由に選ぶことが可能です。

よくなかったこと

  • TypeORMに深く入りすぎて死

DIに対する理解が浅かったためですが、、、絶賛依存関係を解決しながら実装を薄くするリファクタを敢行中。

上記にもありますが、NestJS にとって選択肢の一つではあるけども必ずしも使わないといけないわけでもないので、程よいお付き合いの仕方を考えたいです…

あと人類に DI コンテナは早すぎるかもしれない

Why I Don't Use a DI Container | Node.js w/ TypeScript | Khalil Stemmler

もっとちゃんと知りたい人へ

つらつら書いてきたけど、下記の @potato4d さんのスライドがとてもわかり易く素敵すぎです。

これ読めば上のやつ読む必要ないです。

NestJS meetup Tokyo Opening Talk / What is NestJS? #nestjs_meetup - Speaker Deck @potato4d さん

他にも機能はいろいろありますが、フロントエンド−バックエンドを TypeScript で開発するメリットがあり、なおかつ指針を示してくれる NestJS が、 日本でもよりユーザーが増えていけばいいなと思います。

明日は異世界転生者のもーりーさんです

アウトプットとはなにか、について雑多に書く

f:id:task_kawahara:20190212173923p:plain

とりあえず転職エントリー書いた。
noteには絶対エモい記事を書くんだ!!って思ってたのに
存外タンパクな記事になってびっくりだよ

note.mu

で、Twitter転職を中心に転職について書いていたわけなんですが、
SNSでスカウト待ちをするということ、すなわち外に発信(アウトプット)をしてないと
なかなか目に止まらないわけで、、、、、

じゃあどんなアウトプットをすればいいの?とかいろいろ考えたことをメモする。

結論

とりあえず、なんでもいいから考えてるとこをはきだせ!!

そして最大限フィードバックを得られるよう拡散させること!!!

Memo

媒体は問わないので、なんでもいいので自分の考えていることを、言葉に乗せて(もしくはできるなら絵やサービスに乗せて)公のものとすること。

別に質はそんなに気にしなくて良いはず。

Twitter転職で言えば、公開職歴書を書くことだってアウトプットの一種だと思う。

さっき僕は、アウトプットについて、自分の考えていること、と定義したので
職務経歴書にも、ぜひあなたの考えている(た)ことについてかいてほしいと思う。

僕も今回の転職活動で、自分でも驚くくらいの評価を頂いたりしたわけなんだけど、
それは、「今後目指したいキャリア像」という項目を職歴書に書いていたことだったりする。

とてもユニークだといってもらえてとても嬉しかった。

これがあることで、先方に僕が入って働くイメージがしてもらいやすかったのではないかと思った。

今回の職歴書に書いたキャリア像って、ぶっちゃけこの先変化はきっとあるんだと思う。
もちろん、真剣に考えて書いたけど。

だから、書くことが大事で完成度はそこまで重要じゃないんだと思う。

そしてアウトプットはフィードバックを得てなんぼ。

書いたらみんなに宣伝して回ろう。

自戒も込めつつつ。10分で書いてみた雑多な記事はここで終わり。

ゆく年くる年#cooking アドベントカレンダー

こちらは、mohikanz #cooking Advent Calendar 2018 31日目 の記事です。

25日目はたすくさんで、「アドベントカレンダーの締めくくりクリスマスディナー」でした。

とても素敵なクリスマスでしたね! 本当は25日ですらなく22日に作ったやつだけどな

task-kawahara.hatenablog.com

こちらで一年のシメとさせていただきたく、上梓させていただきます。

くる年

シメなのに雑煮の話をします。

皆さんのうちのお雑煮はどんなでしょうか?

結構な歳になるまで、家の雑煮はべつに変わったとこなんてないしなーなんておもってなかったでしょうか?

まさに、僕はそう勘違いをしていたのでした。

年末の買い物をしようとスーパーに行ったところ、

「干し海老」が売ってないのです。。。

これはおかしい、雑煮には車海老の干し海老が入ってるものなのに、、、

と思い、調べたところどうやら、家の地元だけらしい

これにはカルチャーショックを受けました

というわけで、うちの地元の雑煮について紹介します(前置き冗長すぎた

f:id:task_kawahara:20181231232927j:plain
うちの地元のお雑煮

なんでも、えびは腰が曲がるまで長生きできるように、里芋は子孫繁栄、豆もやしにはまめまめしく元気に働けるように、という願いが込められている。

、らしい。知らなかった。

えびは、車海老を焼いて干したもので出汁を取るのに使います。

地元では、そのへんに干し海老売ってるんですよね〜

里芋は忘れられることが多いような…(実家だけかも

豆もやしは絶対に入ってますね。

ゆく年

くる年の話をしましたので、ゆく年の話もすこし

今日は大掃除に追われる一日でした。

おかげさまで、清々しい気持ちで新年が迎えられそうです。

今年最後の晩ごはんはいつものように鍋です。

f:id:task_kawahara:20181231234056j:plain:w550
カモネギ

f:id:task_kawahara:20181231234158j:plain:w550
かもと地鶏のお鍋

f:id:task_kawahara:20181231234235j:plain:w270
丁子屋のポン酢

カモにしたのは理由があるります。

もちろんそばを食べるためです。

f:id:task_kawahara:20181231234430j:plain:w550
シメのカモそば

平成最後の年越しそば、おいしゅうございました。

良いお年を〜!

やっと年を越せる

アドベントカレンダーの締めくくりクリスマスディナー

こちらは、mohikanz #cooking Advent Calendar 2018 25日目 のクリスマスの記事です。

クリスマスなんでね!クリスマスディナーをつくりましたよ!誰がなんと言おうとクリスマスですからね!!!

f:id:task_kawahara:20181231224607j:plain:w550
これが我が家のクリスマスディナー

まずいい肉を用意します。

f:id:task_kawahara:20181231225051j:plain:w550
霜降

これを塩コショウで下味つけて、ANOVAへ

55℃ 2時間、低温調理していきます。

f:id:task_kawahara:20181231224614j:plain:w550
無理やり肉を鎮める図

その間にスープを仕込みます。前にご紹介したかぼちゃが大量にストックされているので、かぼちゃのポタージュにしましょう。

f:id:task_kawahara:20181231224633j:plain:w550
かぼちゃと玉ねぎとセロリを適当に入れて煮るだけ!

できあがりはこちら。

めんどくさかったので ナチュラル思考なんで皮はついたままです。

とてもロハスな色してますね(褒め言葉)

f:id:task_kawahara:20181231224834j:plain:w550
ナチュラル!

煮込んでいる間にできたサラダがこちら

女子力全開だ

f:id:task_kawahara:20181231224652j:plain:w550
トマトのやつは一応サンタのつもり

モッツアレラとトマトでサンタを作ってます。

あとは、モッツアレライタリアンパセリをぶっ刺して作ったトナカイの生首ですね。

後ろにこっそりスノーマンがいます。

それから、お肉をとりだしまして、さっと焼きました。

f:id:task_kawahara:20181231224716j:plain:w550
薄いのでピンク色にはならず。。

以上クリスマスディナーでした!

味は言うまでもなく美味しかったですよ!

f:id:task_kawahara:20181231224721j:plain:w550

もちろん、クリスマスケーキもね!

Podcast生やすにいさんに誘われてPodcast収録してきました

mohikanz Advent Calendar 2018 23日目の記事です

なんかもうちょっとmohikanzのことを触れようと思って書いてたのですが、挫折したので、Podcastについて書きます。

mohikanz は 技術コミュニティ ですが、本記事において技術的要素はありませんので悪しからず。

先日こんなエントリーを書きました。

task-kawahara.hatenablog.com

で、書いたその週の日曜日 錬金術ラボ にて収録してきました。

そして、Podcaster Advent Calendar 2018](https://adventar.org/calendars/3068) 18日目として公開されたのが下のツイートにあるリンクです。

収録にお誘いいただき、編集から公開までやってくださったKANEさんありがとうございました!

トークテーマについて

結果的には、アウトプットとそのハードルについて広く語る、みたいなテーマになりました。

これはあんまり深く考えてなかったのですが、アドベントカレンダーでもあるし、僕自身の振り返りでもしようかなと思っていました。

そして、今年の僕の大きな変化が、コミュニティに入って何かを発信することだったので、それを中心にうまく軸をもって語れた(KANEさんの誘導がうまかったためでもあります)ので安心しました。

とはいえ、本当はこれについて話したい!というネタがあったほうがいいよなぁと思った次第。

ブログとも登壇とも違うPodcastという表現

ブログのように発信する内容をじっくり考えて、発信することはできず、修正も難しい。だけど、登壇のように(練習除き)一発勝負!というわけでもない表現方法はとても新鮮でした。

そして、ご自身で編集される方は余計に、ですが、自分話し方や表現の仕方に真正面から向き合うことになる点が特徴的だなと感じました。登壇の場合は録画して見ることもあっても、発表が終わった時点でアウトプットとしては完成です。Podcastは配信されて完成なので、自分で編集しなかったとしても1回は絶対に聞くことになります。

僕に向いていたか?

少なくとも文章書くよりかは向いているなと思いました(白目

とはいえ、リスナーではなくパーソナリティーに必死に打ち返す、みたいなやり取りだったので、もし次やるならもうちょっとリスナーに寄り添った(ターゲットを考えた)トークを展開したいなと。

また、声のトーンとか、滑舌とか、語彙力とか、言い回しとか、普段気づけないくせみたいなものがありありとわかったので、そこも少し意識して改善できたらいいなと思います。

楽しかったか?

楽しかった!!

皆さんもやる機会があったら、挑戦してみてほしいです。

ANOVA 試運転の儀

こちらは、mohikanz #cooking Advent Calendar 2018 20日目 の記事です。

昨日は、DKondoさんで、「東京湾の釣り物シログチ(イシモチ)を料理」 でした

お魚うまそう…

note.mu

クリスマスまであと5日。クリスマスディナーを作る強い味方、 低温調理器「ANOVA」 がやっと届いたので、試運転を行いました!

f:id:task_kawahara:20181220174003j:plain:w550
3Pプラグだった悲しみ

慌てて近所のヤ○ダ電機に買いに行くが2ピン変換プラグはなかった…

f:id:task_kawahara:20181220174200j:plain:w550
やっと動いた

f:id:task_kawahara:20181220174902j:plain:w550
最低水位に達してない

鍋が斜めなので、一応、お湯を循環させる部分はすべて浸かりました

f:id:task_kawahara:20181220175216j:plain:w550
鶏ムネやります

パサパサしやすい鶏むねをこうじゃ

f:id:task_kawahara:20181220175426j:plain:w550
待つこと1時間

お抹茶で休憩

f:id:task_kawahara:20181220175511j:plain:w550
上手に焼けました!

鶏むねとは思えないほどめっちゃ柔らかい!!買ってよかった!!!

クリスマスはこいつでステーキを調理する予定です!

ANOVA購入時覚えておいたほうが良いこととしては、

  • 通常購入から到着まで時間がかかる(僕の場合は3週間くらい)
  • 3ピンプラグ
  • 最低水位にならないと調理できないので、深い容器が必要

ご注意

低温調理は適切に調理を行わないと食中毒の危険がございますので、十分に調べてから試してみてください

バーミキュラのある生活

この記事は mohikanz #cooking Advent Calendar 2018 の14日目だったはずの記事です。13日目合わせての大遅刻。。。ゴメンナサイ

f:id:task_kawahara:20181215134712j:plain
鋳物ホーロー

最近mohikanz slackの #cooking では、低温調理器ANOVAの布教が盛んですが(僕もついつい買ってしまった)鋳物琺瑯バーミキュラについてもご紹介したい!!と思って書いた記事です。

ストウブ、ル・クルーゼなど、有名なブランドはいくつかありますが、その中で僕が買ったのがバーミキュラです。こいつを購入してとにかく煮物料理がめちゃくちゃ美味しくできるようになりました。とにかく野菜の水分だけで煮る、無水調理 が最強です。無水カレーうまうま。

f:id:task_kawahara:20181215134859j:plain:w570
玉ねぎやらトマトやらの水分のみで作る無水カレー

買ったきっかけ

バーミキュラは、愛知ドビーという会社がつくる、国産の鋳物琺瑯鍋です。

買ったきっかけは、カンブリア宮殿を見たからです。というか、バーミキュラの魅力はこの回に語られ尽くされているので、見たら欲しくなります。間違いなく。

もともとは、下請けの機械向けの鋳鉄部品を作っていた会社だそうで、ロマンありますよね〜

というわけで、思想込みで魅力的な調理器具なのですが、僕が使ってみて思った強み、弱みは以下に

強み

  • 無水調理ができる
  • 基本放置で焦げ付きなく、煮物料理ができる
  • おしゃれ

弱み

  • めちゃくちゃ重い
  • 高い
  • 煮る前に焼こうとすると焦げ付きやすい

無水調理はストウブとかでもできなくはないのですが、バーミキュラは蓋と胴体のかみ合わせにめちゃくちゃこだわっていて、紙一枚の入る隙きもなく、蒸気が逃げないようになってます。

f:id:task_kawahara:20181215135208j:plain:w570
もちろん無水じゃなくてもいい

そして、鋳物なので、鍋全体が均一に温まって、冷めにくいため、弱火にさえしておけば、1時間くらい放置すれば出来上がりというお手軽調理が可能!という点もおすすめです。

なかなかお高いですが、興味あればどうぞw