🐍

ライブラリ選定基準

2023/07/10に公開

はじめに

ライブラリのバージョンや相性の問題で、エラーが起きたりうまく動作しないことがあったので
便利だからといってよく吟味せずに入れるのは良くないと再認識しました。

ということで、判断基準について簡単にまとめました。
間違いなどあればぜひ教えていただけますと幸いです!

ライブラリとは

ライブラリとは、プログラミングにおいて再利用可能なコードの集まりを意味します。

特定の機能や手続きを実行するための一連の関数やクラスなどを提供します。
ライブラリを利用することで、プログラマーは複雑なコードを一から書く必要なく、既存のライブラリの機能を利用して開発を進めることができます🙆🏻‍♀️

たとえば、、

Rubyでは"gem"
JavaScriptでは"npm package"
Pythonでは"package"
などと呼ばれ、それぞれに配布・管理のシステムが存在します!

なお、ライブラリと似た概念として"フレームワーク"があります。

これはライブラリと同じく再利用可能なコードの集まりですが、ライブラリが提供するのが個々の機能であるのに対し、フレームワークは一定の「枠組み」を提供し、その中で開発を行います。

このため、フレームワークは通常、ライブラリよりも規模が大きく、複雑な機能を提供します。

選定基準

プロジェクトの要件

ライブラリがプロジェクトの要件を満たすかどうかは最も重要な考慮事項です。
具体的な機能が必要な場合、その機能を提供しているライブラリを選択します。

アクティブなメンテナンス

gemが活発にメンテナンスされているか確認します。
最終更新日、頻度、コミットの量などを見て判断します。また、GitHub等で公開されている場合、IssueやPull Requestが適切に取り扱われているかも重要な指標です!

ドキュメンテーション

良好なドキュメンテーションは、gemの使用方法や問題の解決を容易にします。README、Wiki、APIドキュメンテーションなどがあるか確認しましょう。

コミュニティの評価

Railsのコミュニティ内での評価や人気を確認します。
Starの数やForkの数、ダウンロード数などから評価を判断することができます。

互換性

ライブラリがプロジェクトで使用している他のライブラリやフレームワークとの互換性があるかも重要です。公式ドキュメンテーションやコミュニティのフィードバックを通じて確認します。

テストのカバレッジ

gemがテスト(ユニットテスト、統合テストなど)によって十分にカバーされていることを確認します。そのgemが安定しており、信頼できることを示します。

互換性ってどう確認すればいいの?

選択基準のところと被る点もありますが、、

ドキュメンテーションの確認

多くのgemは、どのバージョンのRubyやRails、または他のgemと互換性があるかをドキュメンテーション(READMEや公式ウェブサイトなど)で明示しています。まずはそこを確認してみましょう。

GitHubのリポジトリを確認

gemのソースコードがGitHub上に公開されている場合、そのリポジトリのIssueやPull Requestを確認すると、特定のRubyやRailsのバージョン、または他のgemとの互換性に関する問題や解決策が議論されていることがあります👀

テストスイートを確認

gemがテストスイートを提供している場合、どのバージョンのRubyやRails、または他のgemとの組み合わせでテストが行われているかを確認することで、互換性の情報を得ることができます!

コミュニティとフォーラムを活用

Stack OverflowやRedditなどのフォーラム、または特定のgemやRuby on Railsに関するコミュニティを活用して、他の開発者の経験や知識を利用します。

https://ja.stackoverflow.com/

自分でテスト

最終的には、自分の開発環境でgemをインストールし、動作確認やテストを行うことで、互換性を直接確認します。

ライブラリ選択の注意点

過度な依存を避ける

ライブラリは便利ですが、過度に依存すると自分のコードが複雑化し、メンテナンスが難しくなる可能性があります。必要な機能だけを提供するライブラリを選択し、プロジェクトの規模と複雑さを最小限に保つことが重要です!!

ライブラリのライフサイクル

ライブラリもソフトウェアプロジェクトの一部であり、生まれ変わったり、メンテナンスが終了したりする可能性があります。そのため、ライブラリを選択する際には、そのライフサイクルを考慮することが重要です。

さいごに

記載した点以外にもまだありましたが、今日はここまで!
ライブラリを選択する際には様々な要素を考慮しなければなりません!

明日も頑張りましょ!

参考にさせていただいた記事🌱

https://applis.io/posts/criteria-for-selecting-libraries

Discussion