LoginSignup
2
0

More than 1 year has passed since last update.

ライブラリに任せる技術

Last updated at Posted at 2022-12-06

はじめに

なんであの人は開発が早くてミスがないんだろうと思うことありませんか?

もしかしたら、その人は実はコードを書かないことがうまいだけかもしれませんよ。

今回は、開発が早くて、バグの少ない人はやっている。
ライブラリに任せる技術について話します。

なぜか使われないライブラリ達

実は、みんなライブラリは便利なものだと思ってるんです。
なのに、コードレビューをしていると、これ、「ライブラリあるのに」と思うコードが上がってきます

なぜこのようなことが起こるのでしょうか?

僕は、ライブラリを使ってできないかな?という発想にそもそもなってないからかなと思ってます。

検索をすると、独自実装されたコードが出てきたりしますし、最近の言語は優秀なので、ライブラリを使わずとも数行でやりたいことを実現できたりします。

なので、そもそもライブラリを使おう!という発想にすら至っていないケースがほとんどです。

ライブラリに任せる技術

ライブラリを使わないと複雑なロジックができていったり、自分達のチームでメンテナンスをするのが後々大変になってきます。
後輩達にそのメンテナンスを押し付けるのではなく、世の中の優秀なエンジニア達に押し付けましょう

そのためのマインドやヒントをここに記します。

1. できるだけコードを書くのをサボりたいマインドを持つ

いきなり精神論ですが、僕はコードを書く時に常に何かサボりたいなと考えてます
10行のコードを書くより、ライブラリを一つ入れる方が早いし確実です。

ほとんどの仕様・ビジネスロジックはどこかで見たことがある処理です。

認証も、ランダムソートもCookieの処理もどこかで見たことがある機能というのは、その人達の知恵と経験がライブラリという形で作られているはずです。

常にその人達に頼ってサボりたいと心がけるようにしましょう。

2. Google検索ではなく、ライブラリ検索から始める

要件・仕様を見た時に真っ先にすることはライブラリを検索することです

例えば、「何かしらのリストをランダムに並び替えて欲しい!」みたいな要件が出てきた時

Google検索してみる

こうしてしまうと、シャッフルするためのアルゴリズムみたいな記事が出てきます。

スクリーンショット 2022-12-06 21.35.06.png

本質的には僕たちはシャッフルするアルゴリズムが知りたいわけではなく、シャッフルさえしてくれればいいんです。

なので、Google検索ではなくライブラリの検索をする習慣をつけましょう。

npmレジストリを検索してみる

以下のような感じで、npmでshuffleと検索し、Popularityで絞り込むといい感じのライブラリが出てきたりします。

スクリーンショット 2022-12-06 21.33.37.png

メンテナンスがなされているか、ダウンロード数が多いかなどの情報もここで見れるのでここで検索してみるという習慣をつけるといいと思います。

3. テストコードを書く癖をつける

テストコードを書く習慣をつけると、これやってくれるライブラリないかな?と気づける確率が上がります。

テストコードを書くと、

  • ロジックの抽象化が進む
  • 抽象化したコードにもテストコードを書こうとしたら、結構面倒臭いことに気づく

結果、抽象化したロジックというのは、誰かがライブラリという形で外部パッケージ化してくれていたりするものです。(GitHubを見に行くと、ほとんど同じようなコードがありますw)

4. ちゃんとコードレビューを機能させる

経験豊富な人に見てもらいましょう。

実装者は盲目になりがちですし、いろいろ気をつけていても最後は嗅覚だと思います。
これを自分たちがメンテナンスできるのだろうか?というリスクが見える人に見てもらいましょう。

まとめ

いかがでしたでしょうか?

気をつけていてもやっちゃいがちな車輪の再開発。

完全にはなくせないとは思いますが、少しでも減ることを祈っています。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0