こんにちは。ワタナベトシヒロです。
私はJavaのWebアプリケーションフレームワークであるSpring Bootを学習してきましたが、今回は他の言語のフレームワークも触ってみました。
Spring Boot(Java)、Laravel(PHP)、Ruby on Rails、Django(Python)を比較して、気づいたことを挙げていきます。
ただし、Spring Boot以外のフレームワークでは簡単なCRUD処理のAPIを実装しただけなので、フレームワークへの深い理解はできていません。
Spring Bootの特徴
コマンドを入力する機会が少ない?
Spring Bootのプロジェクト作成はWeb上で行ったり、IDEのGUI上で行うことが多いです。
また、LaravelやRailsではモデル作成やコントローラー作成用のコマンドがありますが、Spring Bootではコマンドを使ってファイルを作成する例は見たことがありません。
Spring Bootでは他のフレームワークと比べてCLIを操作する機会が少ない気がします。
DBのテーブルの作成はSQLで行う
Laravel、Rails、Djangoにはマイグレーションという機能があり、SQLを書かなくてもDBのテーブルを作成できますが、Spring Bootではフレームワークの機能を使わずにSQLでテーブルを作成しておくのが一般的だと思います。
プロジェクト作成時に生成されるコード量が少ない
最初に作成されるjavaファイルは3つだけで、最低限の記述しかありません。
htmlファイルも用意されておらず、初期状態でアプリを起動してアクセスしても何も表示されないのはSpring Bootだけです。
ただし、ディレクトリの階層は深く、初期設定では無駄なディレクトリ構成に感じてしまいます。
Spring Bootはパッケージ数が多い大規模なアプリのために設計されているのかもしれません。
Laravel
プロジェクト作成時に生成されるファイル数が多い
Laravelはプロジェクト作成時点でファイル数が多く、ディレクトリ構成もしっかり決められています。
↑ Spring Boot、Laravel、Rails、Djangoの4つの新規プロジェクトをまとめたGitリポジトリのコード割合です。BladeはLaravelのテンプレートエンジンなので、約7割がLaravel関連のコードで占められていることになります。
Ruby on Rails
Windowsでの開発が難しい
WindowsでRailsの開発をしようとすると、エラーに遭遇することが多く、特に環境構築で苦戦しました。
WindowsのWSL2という機能を使い、Linuxの仮想環境で環境構築をしてみましたが、それでもスムーズにいきませんでした。
(謎の警告が出たり、Rubyのインストール時に1時間以上インストール中と表示され続ける問題がありました)
Django
同名のフォルダやファイルが多くなりがち?
django-admin startproject <アプリ名>
でDjangoプロジェクトを作成すると、<アプリ名>のフォルダが作成され、その中に同名の<アプリ名>のフォルダが作成されます。
また、__init__.py
やurls.pyなど、同名のファイルが複数作られることが多いですが、このように同名のフォルダやファイルが多いと紛らわしいのでは?と思いました。