質問: 揉めそうな話題ですが、teratailの皆さんの意見が知りたかったので質問です。 Webサーバーでの開発をするにあたり、プログラミング言語とフレームワークの選定で揉めています。 様々な会社・部署から集まってきた経歴の異なるメンバーでチームを結成しました。経験してきたプログラミング言語やプロダクトがバラバラで、それぞれ推しているフレームワークがバラバラです。 案件としては、WebAPIであり、MVCでいうところのView機能はありません。HTTPレスポンスで返すのは、HTMLではなくJSONです。なので、HTMLテンプレートとかはフレームワークに必要ありません。 ### Aさんは、Java の Spring Boot を推しています。 Aさんは、JavaやC#でWeb開発を10年以上してきた実績があります。フロントエンドからバックエンドまで幅広く経験しています。 過去にPHPに触れたことがありますが、当時のPHPは非常に遅かったようで、不信感を持っているようです。 Aさんによると * Javaはコンパイル言語なので、スクリプト言語よりも遥かに高速である。 * Javaは歴史が長く、ライブラリの質と量が圧倒的に良い。 とのことです。 ### Bさんは、PHP の Laravel を推しています。 Bさんは、PHPでWeb開発を5年程してきた経験があります。CakePHPの経験もありますが、最近はLaravelに落ち着いたようで、今回もLaravelを推しているようです。 Bさんによると、 * PHPはシェアが多い。Webに関していえば、コミュニティが活発で、Java等よりも情報量も多い。 * PHP(スクリプト言語)の配列は強力で、class定義等をせずにJSONをそのまま扱えるため、仕様変更に強い。 とのことです。 ### Cさんは、Node.js の Express を推しています。 Cさんは、Webフロントエンドでの開発経験が5年程あり、JavaScriptに精通しています。Webバックエンド側の経験はなさそうです。 Cさんによると、 * どうせクライアントサイド(ブラウザスクリプト)はJavaScriptなのだから、サーバーサイドもJavaScriptにすることで、学習コストを大幅に下げることができる。 * JavaScriptを使えば、クライアントサイドレンダリングとサーバーサイトレンダリングのコードが共通化でき、コード量が大幅に減る とのことです。 ### Dさんは、Kotlin を推しています。 DさんはWeb開発の経験がなく、Androidの開発を3年程してきました。 Dさんによると、 * KotlinはJavaVM上で動くので、スクリプト言語(PHP, JavaScript)よりも早い。 * JavaよりもKotlinの方がコード量が少ない。 とのことです。フレームワークは特に知らないそうです。 ### Eさんは、Ruby on Rails を推しています。 Eさんは、Java, PHP, Ruby等、幅広い開発経験があります。 Eさんによると、 * Rubyは他の言語よりも可読性が高く、コード量も少ない。 * ライブラリが最適化されているので、決してコンパイル言語よりも遅くない。 とのことです。 ### 質問 ABCDE以外にもメンバーはいますが、その人たちは流れに身を任せるようで、特に主張はしていません。 正直、ABCDのメンバーは、新たな言語を学習するのを嫌がっているだけな気がしますが、それでもこのメンバーで仕事を進めなくてはならないので、言語を何かに決める必要があります。 そもそも「速い」「コード量が少ない」「仕様変更に強い」等の主張が正しいのか?という意見もあります。Java, PHP, JavaScript, Kotlin, Rubyの5つの言語の性能を比較した資料があればよいのですが、中々まとまった資料が見つからず困っています。 私個人としてはLaravelの経験があるということもあり、Bさんと同じような意見を持っています。 チームリーダーはAさんなので、最終的には、Aさんがゴリ押しで決めてしまうかもしれませんが、その場合、今後のチームワークに悪影響がありそうです。 皆さんならどの言語・フレームワークにしますか?また、どのようにABCDEのメンバーを説得しますか?
回答: 私はLaravelしか経験はありませんが、Laravelはまりオススメできないかもしれません。 他の方もおっしゃっている通り、それぞれの言語に一長一短があり、環境の選定は難しいですよね。 どんなアプリを開発するかにも大きく依るかと思いますが、 > > 正直、ABCDのメンバーは、新たな言語を学習するのを嫌がっているだけな気がしますが > > > これが真実でしょうね。 個人の経験や実績から長年愛用してきた言語やFWを推すのは無理もないと思いますが、ABCD全員が少しでも経験したことがある言語があればそれを基準に消去法で選ぶのが一番無難ではないでしょうか。