はじめに
ライブラリやフレームワーク、テストツールや運用、開発ツールなどの技術選定に関する記事となる。
長いことエンジニアをやっていると、技術選定を客から依頼されるケースがある。
が、本当にそれが正しかったのかは後になってみないと分からない気がするなと。。
では正しい or 適切な技術選定とは?と言うものを改めて考えてみたので、記事にしてみた。
技術選定について
技術選定は開発プロジェクトの成功に大きく影響する重要な決断です。
以下に、適切な選定方法を簡潔に説明します。
1. プロジェクトの要件を明確にする
まず、プロジェクトの目的と要件を明確に理解することが重要です。これにより、必要な機能や性能を満たす技術を絞り込むことができます。
2. 技術の特徴を理解する
各技術の特徴、長所、短所を理解しましょう。例えば、あるフレームワークは大規模プロジェクトに適している一方で、別のものはシンプルな機能に特化している場合があります。
3. コミュニティとサポート、安定性と成熟度の観点
活発なコミュニティと充実したドキュメントを持つ技術を選ぶことで、問題解決が容易になり、長期的な運用が安定します。
- 使用頻度(GitHubのスター数など)
- ドキュメントの充実度
- コミュニティの評価や人気
また活発にメンテナンスされているかどうかを確認することも重要です。
- コミットログの頻度
- Issues/Pull Requestsの対応状況
- 最終更新日
さらに、安定性と成熟度の観点として重要な観点は以下となります。
- 破壊的な変更の頻度が低いこと
- リリースから十分な時間が経過していること
- 安定版であること
4. 学習コストを考慮する
チームの技術レベルに合わせて、適切な学習コストの技術を選びましょう。
過度に複雑な技術は開発の遅延につながる可能性があります。
- 学習コストの低さ
- 守備範囲が適切であること
- 代替案の有無
5. パフォーマンスと拡張性を評価する
プロジェクトの成長を見据えて、パフォーマンスと拡張性に優れた技術を選択することが重要です。
観点としては以下となります。
- 依存関係の少なさ
- アプリケーションとの疎結合性
- テストの充実度
- パフォーマンス
- 互換性
6. 法的考慮事項
ライセンス上の問題がないことを確認します。
7. 個人的な興味や「ときめき」も大切に
技術的な観点だけでなく、チームが興味を持てる技術を選ぶことで、モチベーションの維持と技術の習得が促進されます。
以下記事が非常に興味深い記事となるが、
https://blog.craftz.dog/tech-stack-lessons-from-my-7-year-indie-dev-journey-596e71b483ce
とっつき易さ(コミュニティの活発性や公式Documentの充実さ、または理解し易さ)と、
一番重要なのはチームとして実際に触るであろう開発者が興味を持って取り組めるかどうかが重要だと思います。
※一時的に使って終わり、なケースは少なく長期的に使用することになるので。
これらの基準を総合的に評価し、プロジェクトに最適な技術を選定することが重要です。
また、選定基準を満たさない項目がある場合は、それをリスクとして認識し対策を検討することが賢明です。
以上