はじめに
- 仕事で言語の選定基準をまとめることがあったので折角なので投稿してみました。
- 実際にこの選定基準を基に言語を選定したことはありません。
- 独自で考えた基準ではなく、色々なネット記事を調べてまとめました(少し前にまとめたのでどの記事から引用したのかは忘れました)。
目次
プログラミング言語の選定基準
実行速度
文字列を扱う速度、演算速度、分岐評価の速度はどれくらいか
汎用性
フロントエンドで使用できるか。
REST API を開発できるか。特定の処理を行うシステムやプログラムを開発できるか。
スマホアプリを開発できるか。...etc
可読性
エンジニアの熟練度によらず、誰でも可読性が高いコードを書けるか
(例えば、同じ処理を書く際に複数の書き方ができる場合は、パッと見でどのような処理をしているのかわからない場合があるため可読性は低くなる場合がある)。
将来性
リリース・パッチの頻度、(OSSの場合)コミッターの数
開発環境
対応しているエディタ・IDE、dockerの有無
データベース接続
主要なデータベースエンジンへの対応状況、使いやすさ
エンジニアの確保
言語を習得している社内のエンジニアの人数、言語の習得難易度、求人数
生産性
以下の要素を含めた開発速度
- 開発環境(IDE, dockerなど)の有無、使いやすさ
- フレームワークの有無、使いやすさ
- 日本語の公式ドキュメントの有無、読みやすさ
- ネットの記事の量
プログラミング言語の選定方法
1. プロダクトの要件を明確にする
まずはそのプロダクトの要件を明確にする必要があります。
いきなり選定基準に当てはめて評価しても「実行速度が速いからこの言語がいい!」というように、なんとなくで選ぶことになってしまいます。
2. 選定基準の各項目に優先度を付ける
プロダクトの要件を明確にしたら、選定基準の各項目のうち、何を重要視するかを決めて優先度を付けます。
要件が明確になっていれば自ずと優先度は付けられるはずです。
例えば REST API を開発するプロダクトの場合は、フロントやスマホアプリを開発できる言語を選ぶ必要はないため、「汎用性」の優先度は低くなると思います。
実行速度を求められるプロダクト(およびサービス)の場合は「実行速度」が最優先事項になる場合もあると思います。
3. 候補となるプログラミング言語を選定基準に沿って評価する
優先度を付けたら、候補となるプログラミング言語を選定基準に沿って評価します。
「可読性」や「生産性」は人によって評価が異なると思うので、プロダクトのエンジニア複数人で評価するのが良いかもしれません。「この言語がいい!」「いやこっちの方がいい!なぜなら…」と議論するのも面白そうです。
まとめ
プロダクトの要件がなければ言語は選べないと思います。
プログラミング言語はプロダクトの要件を満たす「手段」だと認識しています。
「とにかく速ければいい」「バグは許されないシステムだから枯れている言語がいい」「大人数で開発できる必要がある」など、プロダクトごとに求められることは様々です。
これは言語に関わらず、様々な技術を選ぶ上で基本的かつ当たり前なことだと思っています。
でも趣味で何かを作る分にはそんなことは考える必要はないので、好きな言語を脳死で選びましょう!(一番言いたかった)