Spring 日本語

Springは、Webアプリケーションを素早く効率的に構築するための強力なツールセットです。開発者が、シンプルで拡張性の高い方法でコードを書くことで、企業レベルのアプリケーションを簡単に作成することができます。Springフレームワークは、Javaや他の言語を使用してアプリケーションを作成し、HTTPサーバーやアプリケーションサーバーなどのどのようなティアードサーバー上でもデプロイすることを可能にしています。 Springは、大小のチームがいるさまざまな環境で価値を加えることが証明されています。フレームワークは、企業レベルのアプリケーションを作成するために使用できる異なるモジュールを提供し、開発プロセスに柔軟性とシンプルさをもたらします。 公式のSpringサイトは、ドキュメント、チュートリアル、トレーニングコース、例など、開発者が始めるのを助けるためのさまざまなリソースとツールを提供します。サイトには、最新のリリースノート、更新情報、開発者がアイデアを共有し、サポートを受けたり、プロジェクトに貢献することができるコミュニティーセクションも含まれています。

ノートのスレッド

著者はPTO(有給休暇)を取得しており、水辺でコーヒーを楽しみながら、コーディング、学習、水泳を交互に行っています。今週の「This Week in Spring」のアップデートは、新しいコンテンツでいっぱいです。動画では、BeanからSpring Bootまで、Springの基本を網羅的に解説しています。Spring AIに関する新しいUdemyコースが発見されました。記事では、Java SDKを使用してAG-UIを構築する方法を詳しく説明しています。SivaLabsは、Spring AIを使用してチャットアプリケーションを構築する方法についての投稿を提供しています。ペイウォール記事では、モデルへの生のHTTPリクエストを行うのではなく、Spring AIを効果的に使用することについて論じています。イタリア語のディスカッションでは、Spring AIでRAGを実装することについて掘り下げています。Spring AIとEmbabelで構築することに関するプレゼンテーションも見つかりました。AI機能、特にSpring AIとSpring Bootで構築されたAI機能のガバナンスとオブザーバビリティを提供するCapsteadプロジェクトは、新たに発見されました。先週の「A Bootiful Podcast」では、Russ Milesが生産的なAIインタラクションについて議論しました。最後に、Spring in Actionの著者であるCraig Wallsが、Spring AIを使用した永続的なチャットメモリに関する投稿を公開しました。
今週のSpringでは、コミュニティにいくつかのエキサイティングなアップデートと発表がありました。分散ジョブ実行エンジンであるJobRunrがSpring Initializrに追加され、開発者がこのツールを簡単に使い始められるようになりました。Craig Walls氏による最近の投稿では、Spring AIでの複数の大規模言語モデルの使用について探求しており、開発者にとって貴重な洞察を提供しています。Spring for Apache KafkaとKafka Streamsのデッドレターキューの使用に関する記事も公開されており、Kafkaを扱っている人々にとって役立つリソースとなっています。Spring BootチームのメンバーであるMoritz Halbritter氏は、Spring Framework 7とSpring Boot 4がヌルポインターを特定し、排除するのにどのように役立つかについての講演を行いました。Spring Cloud ContractはStubborn.shに新しい場所に移管され、開発者にとって重要なツールであり続けるでしょう。A Bootiful Podcastの最近のエピソードでは、ホストがSpring FrameworkとSpring AIのコントリビューターであるSebastien Deleuze氏と対談しました。Spring AIのMCPアノテーションに関するチュートリアルが公開されており、開発者にとって役立つガイドとなっています。Spring AIの導入も強調されており、Springコミュニティに利益をもたらす可能性を示しています。全体として、Springコミュニティは活況を呈しており、Apache Kafkaの背後にある企業であるConfluentのようなベンダーは、自社製品がSpringエコシステムをどのようにサポートし、強化できるかに焦点を当てています。
この記事の著者は春のファンで、2011年1月から『This Week in Spring』という週刊の総括記事を執筆しています。著者はちょうどアジアツアーを終え、現在は日本で休暇中で、春の世界の新しい動きについて学びながらリラックスする予定です。Microsoftは新しいSpring AI 2.0リリースとAzure CosmosDBとの統合についてブログ記事を書いています。Craig WallsはSpring AIとElevenLabs Voicesを使った音声の使い方も書いています。Spring Bootの最新バージョン4.1は、CVEの新機能とパッチを含んでリリースされており、ユーザーはできるだけ早くコードを更新することが推奨されています。著者は脆弱性の発見・開示・修正の過程を説明し、AIがこのプロセスを容易にしつつもCVEの数を増加させたことを説明しています。著者はまた、Spring Boot 4.1の新機能、例えばMongoDB支援のSpring Batchリポジトリと自動設定機能についても言及しています。さらに、著者はSpring AI 2.0における自己修正構造化出力に関するブログ記事やCVEの現状に関するポッドキャストエピソードなど、興味深い記事やポッドキャストも紹介しています。著者は他にもいくつかのリソースについて言及しており、Spring Bootに関する日本語シリーズや、Spring AIでエージェントスキルを構築する投稿があります。全体として、この記事はSpringエコシステムの最新動向をアップデートし、ユーザーに最新のリリースやセキュリティパッチを常に把握するよう促しています。
Spring Data 2025.0.13 の提供開始を発表します。これは Spring Data 3.5.x ジェネレーションの最後のオープンソースリリースとなる見込みです。このサービスリリースにはリグレッション修正のみが含まれており、ユーザーは可能な限り速やかに最新の 4.0.x または 4.1.x リリースにアップグレードすることが推奨されます。Spring Boot 3.5.16 は、この Spring Data リリースを組み込む予定です。新しいリリースには、Spring Data Commons、Spring Data JPA、Spring Data MongoDB など、それぞれ独自のドキュメントと変更履歴を持つ様々なモジュールが含まれています。Spring Data for Apache Cassandra、Spring Data KeyValue、Spring Data Neo4j もこのリリースに含まれています。さらに、Spring Data LDAP、Spring Data REST、Spring Data Redis はバージョン 3.5.13 に更新されました。Spring Data Elasticsearch と Spring Data Couchbase はバージョン 5.5.13 に更新され、Spring Data Relational はバージョン 3.5.13 に更新されました。各モジュールのリリースノートとドキュメントは、ユーザーが確認できるよう利用可能です。ユーザーは、修正と改善を活用するために最新バージョンにアップグレードすることが奨励されます。チームは、最新の機能と修正を確実に利用するために、ユーザーが都合の良い時に最新の 4.0.x または 4.1.x リリースへのアップグレードを検討することを推奨しています。
大規模言語モデルは強力ですが、ソフトウェア統合のための構造化データには苦労します。Spring AI の構造化出力は、モデルが定義されたスキーマに準拠したテキストを生成できるようにすることで、このギャップを埋めます。このテキストは、その後、型付きオブジェクトに解析されます。Spring AI 2.0 は、プロバイダーネイティブの構造化出力と自己修正スキーマ検証という 2 つの主要な強化機能を導入しています。デフォルトは変更されていないため、既存のコードは互換性を保ちます。構造化出力を生成するために、開発者は Java のレコードを定義し、次に .entity() メソッドを使用してターゲット型を指定します。このプロセスは内部的にレコードから JSON スキーマを生成し、それをプロンプトに追加し、モデルの JSON レスポンスを目的のオブジェクトに解析し直します。Spring AI 2.0 より前のこのプロセスでは保証がなく、モデルがスキーマから逸脱した場合に解析エラーが発生する可能性がありました。.validateSchema() スイッチは、自己修正リトライループをアクティブにし、モデルのレスポンスをスキーマに対して自動的に検証し、検証が失敗した場合は特定のエラーフィードバックとともにプロンプトを再発行します。より強力な保証のために、.useProviderStructuredOutput() は、プロバイダー固有の API 機能を利用して、ソースでスキーマ準拠を強制します。これにより、無効なレスポンスが最初から発行されるのを防ぐことで、不正な出力が最小限に抑えられます。これらの 2 つの機能は、プロバイダーネイティブ出力がプライマリ制約として機能し、スキーマ検証がフォールバックとして機能することで、最大の回復力を実現するために組み合わせることができます。List や Map のようなジェネリック型の場合、単純な Class の代わりに ParameterizedTypeReference が使用されます。.responseEntity() メソッドは、解析されたエンティティとメタデータ用の生の ChatResponse の両方にアクセスできます。組み込みコンバーターが不十分な場合、カスタム StructuredOutputConverter 実装は、標準外の JSON ラッピングや、YAML や CSV のようなまったく異なる形式を処理できます。これにより、多様な統合ニーズに対してさらなる柔軟性が提供されます。
CdXz5zHNQW_ujOXatEKZz.png
Spring Batchは、歴史的にJobRepositoryでジョブ実行状態を保存するためにSQLデータベースに依存していました。この要件は、MongoDBのようなNoSQLデータベースを中心に作業しているユーザーにとっても維持されていました。最近のSpring Batchバージョンでは、JobRepositoryがJDBCから分離され、Spring Boot 4.1ではMongoDBの自動構成が導入されました。これにより、バッチメタデータをMongoDBに保存できるようになり、個別のSQLデータベースの必要性がなくなりました。この記事では、JobRepositoryとしてMongoDBを使用したSpring Batchジョブの完全な例を示します。この例では、Docker Composeを使用してMongoDBとPostgreSQLをセットアップします。CSVから顧客データを読み込み、それをPostgreSQLテーブルに書き込むETLジョブを定義します。これは、宛先テーブルをリセットするステップと、実際のデータ転送を行うステップの2つのステップで実現されます。データ転送ステップでは、FlatFileItemReader、シンプルなプロセッサ、およびJdbcBatchItemWriterを使用します。このチャンクベースのステップには、耐障害性とリトライメカニズムが構成されています。その後、アプリケーションが実行され、すべてのジョブ実行の詳細がMongoDBに記録されます。OpenTelemetryとGrafanaの統合により、オブザーバビリティが向上します。この記事では、GraalVMネイティブイメージでSpring Batchを動作させることや、最適化のための遅延データソース接続についても触れています。重要な点は、Spring BatchがMongoDBとシームレスに統合されるようになり、開発者は好みのデータベースを妥協なく使用できるようになったということです。
今週のSpringは、インドのニューデリーからライブでお届けしており、リリースアップデートで賑わった一週間をハイライトしています。延期されていた5月のリリースが到着し、Spring Boot 4.1.0が重要な新バージョンとなりました。Spring AI 2.0も利用可能になり、セマンティックキャッシングやツールコーリングといったエキサイティングな進歩を特徴としています。最近のBootiful Podcastのエピソードでは、Spring SecurityのリードであるRob Winch氏へのインタビューが特集されました。Spring Tools 5.2.0のアップデートは、VS CodeとEclipseのデベロッパーエクスペリエンスを向上させています。Spring AIバージョン1.0.9および1.1.8、Spring Cloudバージョン2025.0.3および2025.1.2を含む、他のいくつかのSpringプロジェクトもアップデートを受けました。Spring Shell、Spring Modulith、Spring Batchも新しいリリースがありました。その他の注目すべきアップデートには、Spring Vault、Spring for Apache Pulsar、Spring Integration、Spring Web Flow、Spring Web Services、Spring Authorization Serverが含まれます。Spring Dataは、その他のデータ関連のアップデートとともに、2026.0.0リリースで一般提供が開始されました。最後に、Spring REST Docs、Spring Security、Spring Session、Spring AMQP、Spring for Apache Kafka、Spring LDAP、Spring Retryもアップデートされました。
Spring AI 2.0 は、アドバイザーチェーン内のコアでコンポーザブルな機能としてツール呼び出しを刷新します。エージェントは現在、この機能を利用して情報を発見し、目標に向かって行動します。ツールはメソッドに @Tool アノテーションを使用して定義され、Spring AI はパラメータの JSON スキーマを自動生成します。ToolCallingAdvisor はツール実行ループをオーケストレーションし、それ以上ツール呼び出しが生成されなくなるまで LLM を再帰的に呼び出します。このループ内にメモリアドバイザーを配置することで、完全なツールリクエストとレスポンスの履歴を永続化し、より豊かなコンテキストキャプチャが可能になります。ただし、これには InMemoryChatMemoryRepository のような特定の ChatMemoryRepository 実装が必要です。大規模なツールセットの場合、ToolSearchToolCallingAdvisor はコンテキストの肥大化を避けるために、段階的なツールの開示を提供します。このアドバイザーはツールインデックスを使用して、自然言語クエリに基づいて関連ツールを段階的に公開します。ツール引数拡張により、ツールコードを変更せずにツール入力スキーマを動的に拡張でき、内部思考に役立ちます。MCP ツールはリモートとローカルのツール定義を統合し、アプリケーションが MCP サーバー経由で Spring 管理ツールを消費または公開できるようにします。ローカルの @Tool アノテーションとリモートの MCP ツールの両方が同じ ToolCallback インターフェースを使用し、アドバイザーチェーンにシームレスに統合されます。
CdXz5zHNQW_yrI1Czp9Eu.png
Spring AI 2.0.0 がリリースされ、AI アプリケーション開発のための大幅な改善と新しいベースラインが提供されます。このリリースは Spring Boot 4 および Spring Framework 7 を基盤とし、Jackson 3 による JSON シリアライゼーションの強化と、コードの信頼性を向上させる完全な null 安全アノテーションを特徴としています。オプションの処理は、コンストラクタに代わってビルダーが使用され、明確さと不変性のためにリファクタリングされました。コアプロジェクトは現在、ベンダー SDK を活用して適応性を向上させる OpenAI、Anthropic、Google GenAI のような、厳選されたサポートの行き届いたチャットモデルプロバイダーに焦点を当てています。CONTRIBUTING.md ガイドラインの更新を通じて、コミュニティとの連携が強化されました。Agentic AI の機能は大幅に改善され、ツール実行ループはアドバイザーチェーン内でファーストクラスのコンポーザブルコンポーネントになりました。統一されたツール呼び出し、数百のツールへのスケーリングのためのプログレッシブツール開示、および構造化された自己修正出力メカニズムが新しく追加されました。このリリースでは、イベントソーシングされた会話メモリとエージェンティックパターン用のコミュニティ拡張機能も導入されています。Model Context Protocol (MCP) の統合は、公式 Java SDK、アノテーション駆動プログラミング、およびストリーム可能な HTTP を含む新しいトランスポート実装によって強化されています。Micrometer スパン、OpenTelemetry メトリクス、OAuth 2.0 セキュリティなどのエンタープライズ機能も継承されています。Spring AI 2.0 は、開発者エクスペリエンスを大幅に向上させ、将来の AI 機能への道を開くことを目指しています。
Spring AIエンジニアリングチームは、Maven Centralで利用可能なSpring AI 2.0.0-RC2のリリースを発表しました。このリリースには、重要な改善、安定性向上、バグ修正が含まれており、ユーザーにとって重要なアップデートとなっています。このリリースの焦点は、AnthropicおよびOpenAIのHTTPクライアントを設定可能にすることや、Spring Frameworkバージョン7.0.4未満との互換性を回復することなどの主要な改善にあります。また、BedrockProxyChatModelのモデルオプション処理やOllamaChatModelの問題に対する修正を含むバグ修正も含まれています。さらに、OpenAIアシスタント履歴におけるリプレイ推論コンテンツの問題や、ChatModelにおけるオプションがマージされるのではなく置き換えられる問題にも対処しています。Spring AIチームは、実行時注入されたツールをサポートするために、ToolCallingAdvisorが常に自動登録されるようにしました。Spring AI 2.0.0-RC2の完全なリリースノートは、ユーザーが確認できるようになっています。Spring AIチームは、このリリースで確立された基盤の上に構築される今後のバージョンで、Spring BootによるAIアプリケーション開発の改善に引き続き注力していきます。ユーザーは、GitHubリポジトリを訪問したり、コミュニティチャンネルでの議論に参加したりすることで、最新の開発状況を把握し、プロジェクトに貢献することができます。Spring AI 2.0.0-RC2のプロジェクトページ、GitHubリポジトリ、ドキュメントはすべて、ユーザーのリソースとして利用可能です。
Spring Framework はバージョン 7.0.8 および 6.2.19 をリリースしました。これらのアップデートは、多数の共通脆弱性識別子 (CVE) に対応しています。脆弱性は、フレームワーク内のさまざまなモジュールおよび機能にまたがっています。いくつかの CVE は、マルチパートリクエスト、バージョン管理されたリソース、AntPathMatcher、および SpEL 式における整数オーバーフローを標的とするものを含む、サービス拒否 (DoS) 攻撃に関連しています。静的リソースキャッシュに関する情報漏洩も対処されています。WebSocket モジュールにおけるセッション固定および予測可能なセッション ID は、特定の CVE によってカバーされています。バージョン管理された静的リソースを介したパス・トラバーサル脆弱性もパッチ適用されています。クロスサイトスクリプティング (XSS) 脆弱性は、JavaScriptUtils および JSP フォームタグに関連して修正されました。アップデートは、WebFlux Kotlin Router DSL におけるセキュリティフィルターバイパスの問題も修正しています。SpEL 式におけるオープンリダイレクト脆弱性および任意のメソッド呼び出しは、その他に対処されたセキュリティ上の懸念事項に含まれます。マルチパートリクエストスモーグリングおよびサーバーサイドリクエストフォージェリも軽減されています。最後に、Jackson JMS コンバーターを介した安全でないデシリアライゼーションがパッチ適用されました。Spring Framework 6.2.19 は、その世代の最終リリースとなる可能性が高く、ユーザーは 7.0.x へのアップグレードが推奨されます。
Spring AIエンジニアリングチームは、2.0.0 GAに向けたAPI安定化のマイルストーンであるSpring AI 2.0.0-RC1のリリースを発表しました。このリリースには、すべてのモデルにおける統一されたツール実行が含まれており、ツール実行はChatClientとToolCallingAdvisorを介して外部で処理されるようになりました。internalToolExecutionEnabledプロパティは削除され、toolNames APIとSpringBeanToolCallbackResolverは、明示的なToolCallback Beanに置き換えられました。ToolCallAdvisorはToolCallingAdvisorに改名され、オンデマンドのツール検出のために新しいToolSearchToolCallingAdvisorが導入されました。メモリアドバイザーはデフォルトでToolCallingAdvisorの外側に配置され、DEFAULT_CHAT_MEMORY_PRECEDENCE_ORDERは引き下げられました。このリリースには、MessageWindowChatMemoryでのターン境界スナップや、ツールプロンプトでの重複チャットメモリの回避など、チャットメモリの改善も含まれています。構造化出力の強化も追加されており、spring_ai_chat_memoryテーブルのタイムスタンプフィールドにプログラムでアクセスできるようになりました。このリリースには、APIとコードのクリーンアップ、モデルの更新、バグ修正、ドキュメントの更新、依存関係のアップグレードも含まれています。Spring AIチームは、このリリースに取り組んだすべての貢献者に感謝しており、プロジェクトページ、GitHub、Stack Overflowでリソースが利用可能です。2.0.0-RC1のリリースノートとドキュメントも利用可能です。全体として、このリリースはSpring AIフレームワークにさまざまな改善と強化をもたらし、最終的な2.0.0 GAリリースに向けた重要な一歩となります。
This Week in Spring の最新号がリリースされ、5月のリリース遅延に対処し、新しいリリース スケジュールのアップデートが提供されています。セキュリティ パッチの必要性から、5月の Spring リリース トレインは 6 月 8 ~ 14 日に延期されました。Spring ポートフォリオ内のほとんどのプロジェクトでは、これらの新たにリリースされたセキュリティ パッチのアップグレードが必要であり、できるだけ早くアップグレードすることが強く推奨されます。遅延の理由は、共通脆弱性および公開 (CVE) の急増であり、2026 年 3 月に 55 件の新しいセキュリティ レポートが提出され、4 月に 26 件の新しい CVE が発表されました。Spring チームは、この状況に対応し、ユーザーに必要なアップグレードを提供するために取り組んでいます。その他のニュースとして、A Bootiful Podcast の最新エピソードでは、Microsoft の Martijn Verburg へのインタビューが特集されています。Spring AI 2.0.0-M8、Spring AI 1.0.8、Spring AI 1.1.7 を含む新しいリリースが利用可能です。Coursera で Spring AI の新しいコースが利用可能になり、すぐに受講を開始できます。さらに、Spring と MCP を使用した AI エージェントの構築に関する講演や、Spring AI Playground プロジェクトなど、いくつかの興味深い講演やプロジェクトが利用可能です。Spring チームは、ユーザーが Spring と AI の最新の開発状況を把握するために必要なツールとリソースを提供することに尽力しています。
CdXz5zHNQW_FLFeoaXx2i.png