はじめに
Springには数十を超えるプロジェクト(サブプロジェクトやアーカイブをいれると100近い)が存在します。
その中でも一番有名であり利用されているのはSpring BootやSpring Dataなどのアプリ開発に必須となるプロジェクトです。
一方でSpringには知名度が低いマイナーなプロジェクトも多数存在します。
まるで「光あれば闇あり」といったところでしょうか。
今回はその「闇」の部分である「マイナーなSpringプロジェクト」にスポットライトを当ててみました。
ということで、独断と偏見により「世界で一番使われていないプロジェクト」Top3 を発表します!
異論は認めます!
記事の内容は個人としての見解であり、所属する組織とは関係ありません。
Springプロジェクト一覧
まずは現在も開発されているSpringのプロジェクト一覧を整理しました。
下表はSpring公式のProjectsに記載されているプロジェクト一覧です(2024年12月時現在)。
プロジェクト名 | 概要 | 開発期間 | 最新バージョン |
---|---|---|---|
Spring Boot | Springを利用したアプリケーションを簡単に実装することを目的としたフレームワーク。必要最低限の設定でRestAPIなどのアプリケーション開発が可能である。 | 2014~ | 3.4.0 |
Spring Framework | DIやAOPといった概念を実装したフレームワークプロジェクトであり、Springにおける本家本元。 | 2003~ | 6.2.0 |
Spring Data | 各データストア向けのライブラリを提供するプロジェクト。傘下に複数のサブプロジェクトを持つ。 | ー | ー |
Spring Cloud | 各クラウド向けのライブラリを提供するプロジェクト。傘下に複数のサブプロジェクトを持つ。 | ー | ー |
Spring Cloud Data Flow | Cloud Foundry/Kubernetesを対象としたマイクロサービスベースのストリーミングおよびバッチデータ処理を実現するラライブラリのプロジェクト。ETL(抽出、変換、ロード)からインポート/エクスポート、イベントストリーミング、予測分析など、さまざまなデータ処理ユースケースをサポートする。 | 2015~ | 2.11.5 |
Spring Security | Springを利用したアプリケーションに対して、認証およびアクセス制御を実現するライブラリを提供するプロジェクト。 | 2005~ | 6.4.1 |
Spring Authorization Server | OpenID Connect 1.0 や関連仕様の実装を提供するプロジェクト。Spring Security上に構築されている。 | 2020~ | 1.4.0 |
Spring for GraphQL | GraphQL APIアプリケーション開発向けの機能を提供するライブラリプロジェクト。GraphQL Javaをベースとする。 | 2020~ | 1.3.3 |
Spring Session | ユーザのセッション情報を管理するためのAPIを提供するプロジェクト。セッション管理先としてDB、Redis、MongoDB、Hazelcastが利用可能。 | 2014~ | 3.4.0 |
Spring Integration | エンタープライズインテグレーションパターンを実現するためのライブラリを提供するプロジェクト。 | 2008~ | 6.4.0 |
Spring HATEOAS | Spring MVCにおいて HATEOAS原則に従うRESTfulアプリケーション開発向けのライブラリプロジェクト。HATEOASとはHypermedia As The Engine Of Application Stateの略であり、APIのレスポンスに次のリクエスト先のURLを設定するといったハイパーメディア駆動のAPIの開発が可能となる。 | 2012~ | 2.3.3 |
Spring Modulith | モジュラモノリス(単一の開発プロジェクト内で複数の業務ドメインを実装する方式)のアプリケーション開発向けのライブラリを提供するプロジェクト。モジュール間の構成検証などにより正しくモジュール分割されていること、疎結合であることを保証する。 | 2022~ | 1.3.0 |
Spring REST Docs | Spring MVCを利用したREST APIアプリケーションの仕様書(asciidoc形式)の自動ライブラリを提供するプロジェクト。仕様書を生成するためにはSpring MVC Testによるテストコードの実装が必要となる。 | 2014~ | 3.0.3 |
Spring AI | 生成AIに対するプロンプト送信などAIを利用したアプリケーション開発向けのライブラリを提供するプロジェクト。 | 2023~ | 1.0.0-M4 |
Spring Batch | バッチアプリケーション開発向けのライブラリを提供するプロジェクト。 | 2007~ | 5.2.0 |
Spring CLI | 開発環境で新規のSpringを利用した開発プロジェクト作成などに利用する。Spring Initializrに機能を追加したローカル版的な立ち位置であり、CLIアプリケーション開発が目的ではない。 | 2022~ | 0.9.0 |
Spring AMQP | AMQPベースのメッセージを送受信するアプリケーション開発向けのライブラリプロジェクト。 | 2010~ | 3.2.0 |
Spring CredHub | Cloud Foundryの資格情報管理コンポーネントであるCredHubを操作するライブラリのプロジェクト。資格情報を保存、取得、削除を実現する。 | 2017~ | 3.3.0 |
Spring Flo | パイプラインのフロー図や単純なグラフをHTML5で表現するJavaScriptライブラリのプロジェクト。 | 2016~ | 0.7.5 |
Spring for Apache Kafka | Apache Kafkaベースのメッセージを送受信するアプリケーション開発向けのライブラリプロジェクト。 | 2016~ | 3.3.0 |
Spring LDAP | ディレクトリサービスへのLDAP認証などのクライアントライブラリを提供するプロジェクト。 | 2008~ | 3.2.8 |
Spring for Apache Pulsar | Apache Pulsarベースのメッセージを送受信するアプリケーション開発向けのライブラリを提供するプロジェクト。 | 2022~ | 1.2.0 |
Spring Shell | コマンドラインアプリケーション開発向けのライブラリを提供するプロジェクト。 | 2012~ | 3.3.3 |
Spring Statemachine | ステートマシン(異なる状態を複数持ち、入力や操作などのイベントにより別の状態に遷移するモデル)開発向けのライブラリを提供するプロジェクト。 | 2015~ | 4.0.0 |
Spring Vault | シークレット情報管理ツールである HashiCorp Vault に対するアクセス、保存などの操作を行うライブラリを提供するプロジェクト。 | 2016~ | 3.1.2 |
Spring Web Flow | Web画面アプリケーション開発向けのライブラリを提供するプロジェクト。画面遷移の表現に特化しており、ControllerではなくXMLで画面遷移を表現する。 | 2006~ | 3.0.1 |
Spring Web Services | SOAPで通信するアプリケーション開発向けのライブラリを提供するプロジェクト。XML Schema(XSD)ファイルを元に実装するドキュメントドリブンな開発を前提とする。 | 2006~ | 4.0.10 |
開発期間は各プロジェクトのGitHubリポジトリで最も古いタグが管理するファイルの中で最も古いコミット日付としています。
また、本家のSpring Frameworkは3.x以前のタグは管理されていません。
色々古いバージョンを漁っていると、こちらで2003年に0.9がリリースされていることが確認できたので開発開始年を2003年としています。
下記プロジェクトについては独立したサブプロジェクトを持ちますが、それらを一覧化すると大変だったのでまとめて集計することにします。
- Spring Data
- Spring Session
- Spring Security
- Spring Cloud
また、上記以外にもSpringでは開発が終了しアーカイブ化されているプロジェクトや他のプロジェクトに統合さたプロジェクトがいくつかあります。
一覧は「Projects in the Attic」として公式ページに公開されています。
今回の調査では現在開発が行われているプロジェクトを対象とするため、上記のプロジェクトは集計対象とします。
使われていないプロジェクトの選定方法
どのようにして使われていないプロジェクトとして認定するのか?
今回は単純にStack OverflowでのQA件数で評価します。
皆さん御存知の通りStack Overflowは世界的なIT技術系QAサイトです。
日本だけでなく世界中の悩めるエンジニアがQを投稿し、心優しい有識者がQに対するAを回答してくれます。
「多くの人に使われている」ということは、それだけQの投稿数も多くなるはずです。
言い換えると「使われていない=そもそもQが生まれないため」Qの投稿数は少なくなるということです。
以上の論理から2024年において、Stack Overflowに投稿されたQA数から「使われていないプロジェクト」を調査します。
Stack OverflowではQAにタグが設定できます。
さらにStack OverflowのTagsでは1年あたりのQA数をTags表示してくれます(投稿数が多いものは月単位だった入りますが)。
結果発表!!!
3位:🥉 Spring Web Flow
2024年に「spring-webflow」タグが設定されたQA数は「7」件でした。
Spring Web FlowはWeb画面アプリケーション開発で利用するプロジェクトです。
近年ではAPIアプリケーション開発が多く、Web画面を返すアプリケーションは少なくなってきています。
そういった背景から利用されなくなってきている気がしています。
2位:🥈 Spring CLI
2024年に「spring-cli」タグが設定されたQA数は「1」件でした。
私も今回調査するまでSpring CLIについて知りませんでした。
1位:🥇 Spring CredHub/Spring Flo
使われていないプロジェクトNo1は2プロジェクトです。
Stack Overflowにタグすら存在していませんでした。
Top3 各プロジェクトのGitHubスター数は以下のとおりです。
順位 | プロジェクト名 | GitHub⭐ |
---|---|---|
1位 | Spring CredHub | 28 |
1位 | Spring Flo | 306 |
2位 | Spring CLI | 105 |
3位 | Spring Web Flow | 332 |
Star数も Spring CredHub だけ2桁です。
また、Spring FloはSpring Cloud Data Flowに利用されているみたいです。
なのでプロジェクト単体では使われていないですが、Spring Cloud Data Flow 側で使っているというパターンもあるかもしれないです。
おわりに
以上が独断と偏見による「世界で一番使われていないSpringプロジェクト Top3」でした。
当然のごとく私も使ったことが無いどころか、そもそも何ができるかも知らなかったプロジェクトたちです。
記事作成の本当の目的は自分の脳内Springプロジェクトカタログのアップデートでした。
近頃ではどんどん新しいSpringプロジェクトが誕生しています。
そのため情報収集をサボっていると最新の開発事情から取り残されてしまうと感じていました。
今回の記事作成である程度脳内カタログが更新できたと思っています。
今度は今回挙げたマイナープロジェクトを実際に触ってみた感想などについて整理できればなと思います。
またQiitaにも Spring CredHub/Spring Flo/Spring CLI のタグが存在していませんでした(Spring Web Flowについては4件あり)。
タグが無いのは可哀想なので、ネタバレですが本記事のタグに「spring-credhub」「spring-cli」 「spring-flo」を設定しています。