若手フロントエンドエンジニアに読みやすいコーディングのコツを聞いてみた。
はじめに
こんにちは。ラクスのフロントエンドチームエンジニアのたぐちです。
今回は技術力の高い若手フロントエンドエンジニアの方に(私自身が)気になっていることをインタビューしてみました。
インタビュイーの紹介
今回のインタビュイー:KTさん
遍歴
大学では電気電子とか無線とか通信とかをやっていました
当時はこのあたり興味がなかったのであまり授業を聞いていなかった(後悔)
2020年にラクスに新卒で入社
1~2.5年目 楽楽明細サーバーサイド
2.5年目 楽楽電子保存サーバーサイド
3年目 楽楽電子保存フロントエンド
4.5年目 新規プロダクトフロントエンド
最近の興味とか今年の目標とか
Rust
フロントエンドのtoolchainでRust製のものが増えてきたので最低限読めるようにしたい
OSSコントリビュート頑張る
睡眠外来に行く
リングフィット再開
インタビュー
質問①:業務内容
たぐち: はい、それではよろしくお願いします。まずは現在の業務内容からお話しいただければ。
KTさん: 新規プロダクトのフロントエンド開発をやっています。今は機能ごとに役割を分担してるので、自分はその一部を開発してるという感じです。
たぐち: 画面ごととかで分担して作業しているんですか?
KTさん: そうですね。大体1機能に2画面3画面ぐらいあるので、その単位で作業している感じですかね。
たぐち: ありがとうございます。
質問②:キャッチアップ方法
たぐち: 次に伺いたいことが、フロントエンド技術のキャッチアップ方法ですね。KTさんはいろんな記事を引っ張ったりとか、自分で調べて検証とかしたりしている姿をよく拝見するんですが、その辺どういうキャッチアップ方法とかしてるのかなと思って。
KTさん: よく見るのはZennとかPublickeyとか、そういうのもあるんですけど。一番多いのはXですかね。
たぐち: どうやって漁るんですか、Xって?
KTさん: 漁るとよりは、フロントエンドとかに詳しそうな人をとりあえずフォローして、フォローしてれば勝手にあと流れてくるんで。その中で知らないこととか気になったこととかあれば、ドキュメントを見に行ったりしますかね。
たぐち: ちなみに代表的な方とかパッと出ますか?TakepepeさんとかってXやってるんですか?
KTさん: やってます。そういった方々をフォローして、興味のあるやつを調べていっています。
たぐち: なるほど。ありがとうございます。
質問③:最近興味のある技術
たぐち: 続きまして、そんな中から最近興味のある技術って何かあったりしますか?
KTさん: Rustですかね。
たぐち: Rustですか。どの辺で興味を持ちましたか。
KTさん: フロントエンドのツールがよくRustで書かれるようになったんで、その辺読めるようにするためにですね。
たぐち: あー、確かにビルドツールとか多いですよね最近。自分で業務で使うとかっていう話ではないんですね。
KTさん: 別に使うことはあんまりないかもしれないですね。
たぐち: なるほど、Rustか。僕もなんか最近バックエンドの勉強ちょっとしたいなと思ってて、何勉強しようかなって思った時に、GoかRustかって調べていたんですよね。それでまあ、Web系やるんだったらGoかなーと思って、最近Go漁ってるんですけど、Rustは少し見た感じだとコード難しいなと感じましたね。
KTさん: そうですよね、パッと読めないですよね。Rustの勉強とバックエンドの勉強両方やらないといけないから大変だと思います。Goとかは結構シンプルなんで分かりやすいですね。
たぐち: そうですね、Rustはそれに比べると結構ハードル高い感ありましたね。ありがとうございます。
質問④:フロントエンドに興味を持ったきっかけ
たぐち: ここからはより個人的な内容なんですけど、KTさんって元々バックエンドやられていたじゃないですか。多分既に何回か聞かれていると思うんですけど、フロントエンドに興味持ったきっかけとか何かあるんですか?
KTさん: 聞かれすぎて毎回話す内容変わってるような気がするんですけど、まずユーザーが直接触れる部分なんで、プロダクトの使いやすさっていうところにより直結されているっていうことがありますね。あとは書いたものがすぐブラウザで動く面白さとか、変化が早いから常に勉強しなきゃいけなくて、そこの殺伐とした感じとかが良いかなと。その辺ですかね。
たぐち: なるほどありがとうございます。
質問⑤:コーディングする上で意識していること
たぐち: 次がですね、KTさんのコード自分がよくレビューしてても、やっぱりすごい綺麗だなって思うときが多くて。何かコーディングする上で意識していることとかってありますか?
KTさん: これ考えたんですけど、よくわかんなくて。よくある話だと、変数のスコープ短くとか。あとできる限りイミュータブルにするとか。まあ共通化を頑張りすぎないとかですかね。そのあたりを、カッコよく書こうとしないっていうのは割と気をつけてるかな。型をぐちゃぐちゃして、自分ではカッコいいと思うコードを書きたくなるときもあると思うんですけど、その気持ちをぐっと抑えて。
たぐち: そこは抑えるんですね。出さないんですか?
KTさん: 1ヶ月後ぐらいに自分が同じコード見て理解できるかどうか、っていうのが気になるので。
たぐち: フロントエンドだと結構コンポーネント化して、共通化の部分を頑張るとかっていうのを意識すること多いと思うんですけど。逆にあえて、その共通化を頑張らないようにするっていうのは、どの辺のところとかなんですかね。
KTさん: 一例でいうと、Propsを生やしすぎると共通化の意味がなくなってしまうので、ユースケースにある程度特化しつつ、そういうレベルで共通化っていう感じですかね。
たぐち: なるほど。じゃあもうコンポーネントのコードちょろっと見たら、すぐ使えるみたいなそういうレベルなんですかね。
KTさん: そういうレベルのインターフェースが強いのかなっていう気がしますね。
たぐち: 確かにそれはありそうですね。
質問⑥:TypeScriptを上手く扱うために取り組んだ方が良いこと
たぐち: 最後にTypeScriptについて。僕はタイプスクリプトの師匠はKTさんと思ってるので、TypeScriptを上手く扱えるようにするために、どんなことを取り組んだほうがいいかなということを伺いたいです。
KTさん: 上手く扱えるっていう表現が中々難しいですね。やっぱりまず読むことが大事だと思うので、type-challengesがおすすめかな。
たぐち: あーそこなんですね。
KTさん: 自分もそれで大分学習したところがあるので。type-challengesが書けるようになると、コードも結構書けるようになるんじゃないですかね。自分は割とそういう型パズルが面白いと思ってる人間なんで、取り組みやすかったですね。
たぐち: あーなるほど。個人的にtype-challengesで結構躓いたのがInferなんですけど、実際業務とかでInferとか使ったりしますか?
KTさん: Inferはそんなにないですね、書きたくなる場面はあるんですけど。ただ、Inferを読めるようになるとライブラリのコードとかも読めるようになるんで。
たぐち: あー、確かにめっちゃ使われてそうですね。その他に、最近よく使うというとsatisfiesとかですかね?
KTさん: satisfiesはめっちゃ使ってますね。
たぐち: なるほど。他に聞きたいこととしては、TypeScriptの型定義を頑張りすぎると、逆にコードとして扱いづらくなるとかあると思うんですけど、それをどこまで頑張るか、とか基準とかあったりするんですかね。
KTさん: 難しいですね。自分以外が読んでもわかるのかなみたいな、そこら辺が基準になるんじゃないですかね。複雑なところは特にそうですね。
たぐち: なるほど。ありがとうございます。それではインタビューは以上となります。ありがとうございました。
KTさん: ありがとうございました。
おわりに
今回はKTさんにインタビューを受けていただき、貴重なお話を伺うことが出来ました。個人的にはカッコよく書こうとしないというのが刺さりましたね。
次回はリードエンジニアの方にインタビューしますので、お楽しみに!
採用情報
https://career-recruit.rakus.co.jp/engineer_jobs/frontend_tokyo/
https://career-recruit.rakus.co.jp/career_engineer/