Expressでのチーム開発が辛いあなたのためのNestJS
この記事は mohikanz Advent Calendar 2019の3日目です
昨日は gimKondo さんによる全人類が読むべき ITエンジニアの雑談Slack発 オンライン読書会 でした。
僕の記事は読まなくてもまっとうに生きていけますが、読んでくれると嬉しいです、
今年の2月に現職に転職し、プロジェクトの立ち上げ以来お世話になっている Framework: NestJS についてのご紹介
転職についてはこちらをどうぞ ↓
背景
- わたし
- チーム
- 開発者 3人のうち2人がひよこ(私を含む)
- 途中で、フロントエンド寄りのスキルのメンバーがジョイン
- プロダクト
- 新規Webサービス
- フロントエンドは Vue.js + TypeScript
NestJSとは
- 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 にとって選択肢の一つではあるけども必ずしも使わないといけないわけでもないので、程よいお付き合いの仕方を考えたいです…
TypeORM の Repository を直で使うと死ぬ #nestjs_meetup
— たすく@なんでもするフロントエンドより (@TaskKAWAHARA) 2019年11月29日
あと人類に 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 が、 日本でもよりユーザーが増えていけばいいなと思います。
明日は異世界転生者のもーりーさんです
アウトプットとはなにか、について雑多に書く
とりあえず転職エントリー書いた。
noteには絶対エモい記事を書くんだ!!って思ってたのに
存外タンパクな記事になってびっくりだよ
で、Twitter転職を中心に転職について書いていたわけなんですが、
SNSでスカウト待ちをするということ、すなわち外に発信(アウトプット)をしてないと
なかなか目に止まらないわけで、、、、、
じゃあどんなアウトプットをすればいいの?とかいろいろ考えたことをメモする。
結論
とりあえず、なんでもいいから考えてるとこをはきだせ!!
そして最大限フィードバックを得られるよう拡散させること!!!
Memo
媒体は問わないので、なんでもいいので自分の考えていることを、言葉に乗せて(もしくはできるなら絵やサービスに乗せて)公のものとすること。
別に質はそんなに気にしなくて良いはず。
Twitter転職で言えば、公開職歴書を書くことだってアウトプットの一種だと思う。
さっき僕は、アウトプットについて、自分の考えていること、と定義したので
職務経歴書にも、ぜひあなたの考えている(た)ことについてかいてほしいと思う。
僕も今回の転職活動で、自分でも驚くくらいの評価を頂いたりしたわけなんだけど、
それは、「今後目指したいキャリア像」という項目を職歴書に書いていたことだったりする。
とてもユニークだといってもらえてとても嬉しかった。
これがあることで、先方に僕が入って働くイメージがしてもらいやすかったのではないかと思った。
今回の職歴書に書いたキャリア像って、ぶっちゃけこの先変化はきっとあるんだと思う。
もちろん、真剣に考えて書いたけど。
だから、書くことが大事で完成度はそこまで重要じゃないんだと思う。
そしてアウトプットはフィードバックを得てなんぼ。
書いたらみんなに宣伝して回ろう。
自戒も込めつつつ。10分で書いてみた雑多な記事はここで終わり。
ゆく年くる年#cooking アドベントカレンダー
こちらは、mohikanz #cooking Advent Calendar 2018 31日目 の記事です。
25日目はたすくさんで、「アドベントカレンダーの締めくくりクリスマスディナー」でした。
とても素敵なクリスマスでしたね! 本当は25日ですらなく22日に作ったやつだけどな
こちらで一年のシメとさせていただきたく、上梓させていただきます。
くる年
シメなのに雑煮の話をします。
皆さんのうちのお雑煮はどんなでしょうか?
結構な歳になるまで、家の雑煮はべつに変わったとこなんてないしなーなんておもってなかったでしょうか?
まさに、僕はそう勘違いをしていたのでした。
年末の買い物をしようとスーパーに行ったところ、
「干し海老」が売ってないのです。。。
これはおかしい、雑煮には車海老の干し海老が入ってるものなのに、、、
と思い、調べたところどうやら、家の地元だけらしい
これにはカルチャーショックを受けました
というわけで、うちの地元の雑煮について紹介します(前置き冗長すぎた
なんでも、えびは腰が曲がるまで長生きできるように、里芋は子孫繁栄、豆もやしにはまめまめしく元気に働けるように、という願いが込められている。
、らしい。知らなかった。
えびは、車海老を焼いて干したもので出汁を取るのに使います。
地元では、そのへんに干し海老売ってるんですよね〜
里芋は忘れられることが多いような…(実家だけかも
豆もやしは絶対に入ってますね。
ゆく年
くる年の話をしましたので、ゆく年の話もすこし
今日は大掃除に追われる一日でした。
おかげさまで、清々しい気持ちで新年が迎えられそうです。
今年最後の晩ごはんはいつものように鍋です。
カモにしたのは理由があるります。
もちろんそばを食べるためです。
平成最後の年越しそば、おいしゅうございました。
良いお年を〜!
やっと年を越せる
アドベントカレンダーの締めくくりクリスマスディナー
こちらは、mohikanz #cooking Advent Calendar 2018 25日目 のクリスマスの記事です。
クリスマスなんでね!クリスマスディナーをつくりましたよ!誰がなんと言おうとクリスマスですからね!!!
まずいい肉を用意します。
これを塩コショウで下味つけて、ANOVAへ
55℃ 2時間、低温調理していきます。
その間にスープを仕込みます。前にご紹介したかぼちゃが大量にストックされているので、かぼちゃのポタージュにしましょう。
できあがりはこちら。
めんどくさかったので ナチュラル思考なんで皮はついたままです。
とてもロハスな色してますね(褒め言葉)
煮込んでいる間にできたサラダがこちら
女子力全開だ
モッツアレラとトマトでサンタを作ってます。
あとは、モッツアレラにイタリアンパセリをぶっ刺して作ったトナカイの生首ですね。
後ろにこっそりスノーマンがいます。
それから、お肉をとりだしまして、さっと焼きました。
以上クリスマスディナーでした!
味は言うまでもなく美味しかったですよ!
もちろん、クリスマスケーキもね!
Podcast生やすにいさんに誘われてPodcast収録してきました
mohikanz Advent Calendar 2018 23日目の記事です
なんかもうちょっとmohikanzのことを触れようと思って書いてたのですが、挫折したので、Podcastについて書きます。
mohikanz は 技術コミュニティ ですが、本記事において技術的要素はありませんので悪しからず。
先日こんなエントリーを書きました。
で、書いたその週の日曜日 錬金術ラボ にて収録してきました。
そして、Podcaster Advent Calendar 2018](https://adventar.org/calendars/3068) 18日目として公開されたのが下のツイートにあるリンクです。
さて、アウトプットに積極的な @TaskKAWAHARA さんをお迎えしてお話しました
— KANE@おしごとam&Podcast生やすおにいさん (@higuyume) 2018年12月18日
"ep.2 【KANEの #RadioSandbox 】【ゲスト : たすく さん】ノリと勢いでラジオやってみた!アウトプットに積極的なたすくさんとお話してみた。" by KANEの #RadioSandbox ⚓ https://t.co/KDI0Isodwt
収録にお誘いいただき、編集から公開までやってくださったKANEさんありがとうございました!
トークテーマについて
結果的には、アウトプットとそのハードルについて広く語る、みたいなテーマになりました。
これはあんまり深く考えてなかったのですが、アドベントカレンダーでもあるし、僕自身の振り返りでもしようかなと思っていました。
そして、今年の僕の大きな変化が、コミュニティに入って何かを発信することだったので、それを中心にうまく軸をもって語れた(KANEさんの誘導がうまかったためでもあります)ので安心しました。
とはいえ、本当はこれについて話したい!というネタがあったほうがいいよなぁと思った次第。
ブログとも登壇とも違うPodcastという表現
ブログのように発信する内容をじっくり考えて、発信することはできず、修正も難しい。だけど、登壇のように(練習除き)一発勝負!というわけでもない表現方法はとても新鮮でした。
そして、ご自身で編集される方は余計に、ですが、自分話し方や表現の仕方に真正面から向き合うことになる点が特徴的だなと感じました。登壇の場合は録画して見ることもあっても、発表が終わった時点でアウトプットとしては完成です。Podcastは配信されて完成なので、自分で編集しなかったとしても1回は絶対に聞くことになります。
僕に向いていたか?
少なくとも文章書くよりかは向いているなと思いました(白目
とはいえ、リスナーではなくパーソナリティーに必死に打ち返す、みたいなやり取りだったので、もし次やるならもうちょっとリスナーに寄り添った(ターゲットを考えた)トークを展開したいなと。
また、声のトーンとか、滑舌とか、語彙力とか、言い回しとか、普段気づけないくせみたいなものがありありとわかったので、そこも少し意識して改善できたらいいなと思います。
楽しかったか?
楽しかった!!
皆さんもやる機会があったら、挑戦してみてほしいです。
ANOVA 試運転の儀
こちらは、mohikanz #cooking Advent Calendar 2018 20日目 の記事です。
昨日は、DKondoさんで、「東京湾の釣り物シログチ(イシモチ)を料理」 でした
お魚うまそう…
クリスマスまであと5日。クリスマスディナーを作る強い味方、 低温調理器「ANOVA」 がやっと届いたので、試運転を行いました!
慌てて近所のヤ○ダ電機に買いに行くが2ピン変換プラグはなかった…
鍋が斜めなので、一応、お湯を循環させる部分はすべて浸かりました
パサパサしやすい鶏むねをこうじゃ
お抹茶で休憩
鶏むねとは思えないほどめっちゃ柔らかい!!買ってよかった!!!
クリスマスはこいつでステーキを調理する予定です!
ANOVA購入時覚えておいたほうが良いこととしては、
- 通常購入から到着まで時間がかかる(僕の場合は3週間くらい)
- 3ピンプラグ
- 最低水位にならないと調理できないので、深い容器が必要
ご注意
低温調理は適切に調理を行わないと食中毒の危険がございますので、十分に調べてから試してみてください
バーミキュラのある生活
この記事は mohikanz #cooking Advent Calendar 2018 の14日目だったはずの記事です。13日目合わせての大遅刻。。。ゴメンナサイ
最近mohikanz slackの #cooking では、低温調理器ANOVAの布教が盛んですが(僕もついつい買ってしまった)鋳物琺瑯鍋バーミキュラについてもご紹介したい!!と思って書いた記事です。
ストウブ、ル・クルーゼなど、有名なブランドはいくつかありますが、その中で僕が買ったのがバーミキュラです。こいつを購入してとにかく煮物料理がめちゃくちゃ美味しくできるようになりました。とにかく野菜の水分だけで煮る、無水調理 が最強です。無水カレーうまうま。
買ったきっかけ
バーミキュラは、愛知ドビーという会社がつくる、国産の鋳物琺瑯鍋です。
買ったきっかけは、カンブリア宮殿を見たからです。というか、バーミキュラの魅力はこの回に語られ尽くされているので、見たら欲しくなります。間違いなく。
もともとは、下請けの機械向けの鋳鉄部品を作っていた会社だそうで、ロマンありますよね〜
というわけで、思想込みで魅力的な調理器具なのですが、僕が使ってみて思った強み、弱みは以下に
強み
- 無水調理ができる
- 基本放置で焦げ付きなく、煮物料理ができる
- おしゃれ
弱み
- めちゃくちゃ重い
- 高い
- 煮る前に焼こうとすると焦げ付きやすい
無水調理はストウブとかでもできなくはないのですが、バーミキュラは蓋と胴体のかみ合わせにめちゃくちゃこだわっていて、紙一枚の入る隙きもなく、蒸気が逃げないようになってます。
そして、鋳物なので、鍋全体が均一に温まって、冷めにくいため、弱火にさえしておけば、1時間くらい放置すれば出来上がりというお手軽調理が可能!という点もおすすめです。
なかなかお高いですが、興味あればどうぞw