Skip to content

Commit 6310950

Browse files
CopilotCopilot
andcommitted
Add Japanese translations for datetime, security, tooling, strings, and enterprise categories
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 26086dc commit 6310950

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+714
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: 日付のフォーマット
2+
oldApproach: SimpleDateFormat
3+
modernApproach: DateTimeFormatter
4+
summary: "スレッドセーフで不変なDateTimeFormatterで日付をフォーマットする。"
5+
explanation: "DateTimeFormatterはSimpleDateFormatと異なり、不変でスレッドセーフです。定数として保存して共有できます。ISO_LOCAL_DATEなどの定義済みフォーマッターも一般的な書式に利用できます。"
6+
whyModernWins:
7+
- icon: "🛡️"
8+
title: スレッドセーフ
9+
desc: "同期なしでスレッド間でフォーマッターを共有できます。"
10+
- icon: "📋"
11+
title: 組み込みフォーマット
12+
desc: "標準書式にはISO_LOCAL_DATE、ISO_INSTANTなどが使えます。"
13+
- icon: "🔒"
14+
title: 不変性
15+
desc: "static finalの定数として安全に保存できます。"
16+
support:
17+
description: JDK 8(2014年3月)以降、広く利用可能
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: DurationとPeriod
2+
oldApproach: ミリ秒演算
3+
modernApproach: Duration / Period
4+
summary: "型安全なDurationとPeriodで時間差を計算する。"
5+
explanation: "Durationは時間ベースの量(時・分・秒)、Periodは日付ベースの量(年・月・日)に使います。ChronoUnit.between()は単純な差の計算に便利です。いずれもエッジケースを正しく処理します。"
6+
whyModernWins:
7+
- icon: "🎯"
8+
title: 型安全
9+
desc: "時間にはDuration、日付にはPeriodと役割が明確で混乱しません。"
10+
- icon: "🛡️"
11+
title: 正確な計算
12+
desc: "サマータイムの移行、うるう年、うるう秒を正しく処理します。"
13+
- icon: "📖"
14+
title: 読みやすさ
15+
desc: "ChronoUnit.DAYS.between()は英語のように読めます。"
16+
support:
17+
description: JDK 8(2014年3月)以降、広く利用可能
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: HexFormat
2+
oldApproach: 手動の16進数変換
3+
modernApproach: HexFormat
4+
summary: "HexFormatで16進数文字列とバイト配列を相互変換する。"
5+
explanation: "HexFormatはバイト・int・配列の16進エンコード・デコードを双方向に提供します。区切り文字、プレフィックス、サフィックス、大文字・小文字の設定が可能で、手動のフォーマットや解析は不要です。"
6+
whyModernWins:
7+
- icon: "📐"
8+
title: 双方向変換
9+
desc: "1つのAPIでバイト→16進数・16進数→バイトの変換が可能。"
10+
- icon: "🔧"
11+
title: 設定可能
12+
desc: "区切り文字、プレフィックス、サフィックス、大文字・小文字を設定できます。"
13+
- icon: "📦"
14+
title: 配列サポート
15+
desc: "バイト配列全体を一度にエンコード・デコードできます。"
16+
support:
17+
description: JDK 17 LTS(2021年9月)以降、広く利用可能
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: ナノ秒精度のInstant
2+
oldApproach: ミリ秒
3+
modernApproach: ナノ秒
4+
summary: "マイクロ秒またはナノ秒精度でタイムスタンプを取得する。"
5+
explanation: "Java 9ではクロック解像度が改善され、Instant.now()はほとんどのプラットフォームでマイクロ秒精度(一部ではナノ秒)のタイムスタンプを取得できます。従来のcurrentTimeMillis()はミリ秒精度しかありませんでした。"
6+
whyModernWins:
7+
- icon: "🎯"
8+
title: より高い精度
9+
desc: "ミリ秒ではなくマイクロ秒・ナノ秒単位のタイムスタンプ。"
10+
- icon: "📐"
11+
title: 型安全
12+
desc: "Instantは精度を内包するため、意味が曖昧なlongを使いません。"
13+
- icon: "🌐"
14+
title: UTCベース
15+
desc: "InstantはUTCに固定されており、タイムゾーンの混乱がありません。"
16+
support:
17+
description: JDK 9(2017年9月)以降、広く利用可能
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: java.time APIの基本
2+
oldApproach: DateとCalendar
3+
modernApproach: "java.time.*"
4+
summary: "DateとCalendarの代わりに、不変で明確な日付・時刻型を使用する。"
5+
explanation: "java.timeはLocalDate、LocalTime、LocalDateTime、Instant、ZonedDateTimeを提供します。これらはすべて不変でスレッドセーフです。月は1始まりのため、Calendar.JANUARY = 0 の混乱はもうありません。"
6+
whyModernWins:
7+
- icon: "🔒"
8+
title: 不変性
9+
desc: "日付・時刻の値が誤って変更されることがありません。"
10+
- icon: "📖"
11+
title: 明確なAPI
12+
desc: "Month.JANUARYは0ではなく1。DayOfWeek.MONDAYも直感的です。"
13+
- icon: "🛡️"
14+
title: スレッドセーフ
15+
desc: "同期不要でスレッド間で自由に共有できます。"
16+
support:
17+
description: JDK 8(2014年3月)以降、広く利用可能
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: Math.clamp()
2+
oldApproach: ネストしたmin/max
3+
modernApproach: Math.clamp()
4+
summary: "1回の明確な呼び出しで値を指定範囲にクランプする。"
5+
explanation: "Math.clamp(value, min, max)は値を[min, max]の範囲に制限します。ネストしたMath.min/Math.maxより明確で、int・long・float・doubleに対応しています。"
6+
whyModernWins:
7+
- icon: "📖"
8+
title: 自己文書化
9+
desc: "clamp(value, min, max)は意味が一目瞭然です。"
10+
- icon: "🛡️"
11+
title: エラーが起きにくい
12+
desc: "minとmaxの順序を誤って入れ替えることがなくなります。"
13+
- icon: "🎯"
14+
title: 全数値型対応
15+
desc: "int、long、float、doubleに対応しています。"
16+
support:
17+
description: JDK 21 LTS(2023年9月)以降、広く利用可能
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: EJBタイマーとJakartaスケジューラーの比較
2+
oldApproach: EJB TimerService
3+
modernApproach: ManagedScheduledExecutorService
4+
summary: "重量級EJBタイマーをJakarta ConcurrencyのManagedScheduledExecutorServiceによるシンプルなスケジューリングに置き換える。"
5+
explanation: "EJBタイマーは@Statelessまたは@Singletonビーンと@Timeoutコールバック、XMLまたはアノテーションベースのスケジュール式が必要です。Jakarta ConcurrencyはManagedScheduledExecutorServiceを提供し、使い慣れたjava.util.concurrent スケジューリングAPIを使用します。ボイラープレートが少なく、ユニットテストが容易で、EJBコンテナへの依存もありません。"
6+
whyModernWins:
7+
- icon: "🪶"
8+
title: ボイラープレート削減
9+
desc: "@Timeoutコールバックや複雑なScheduleExpressionは不要で、標準のScheduledExecutorService APIを使います。"
10+
- icon: "🧪"
11+
title: テスト容易性の向上
12+
desc: "プレーンなメソッドとexecutorモックにより、EJBコンテナなしで直感的にユニットテストできます。"
13+
- icon: "☁️"
14+
title: クラウドネイティブ対応
15+
desc: "マネージドエグゼキューターはコンテナのライフサイクルと統合し、軽量ランタイムでも動作します。"
16+
support:
17+
description: Jakarta EE 10 / Concurrency 3.0以降、利用可能
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: EJBとCDIの比較
2+
oldApproach: EJB
3+
modernApproach: CDI Bean
4+
summary: "依存性注入とトランザクションのために重量級EJBを軽量CDI Beanに置き換える。"
5+
explanation: "CDI(Contexts and Dependency Injection)はEJBと同じ依存性注入とトランザクション管理を、コンテナ固有のインターフェースやスーパークラスを持たないプレーンなJavaクラスとして提供します。@ApplicationScoped・@RequestScopedなどのスコープがライフサイクルを制御し、@TransactionalがEJBの必須トランザクションセマンティクスを置き換えます。"
6+
whyModernWins:
7+
- icon: "🪶"
8+
title: 軽量
9+
desc: "CDI BeanはEJB固有のインターフェースやデスクリプターを持たないプレーンなJavaクラスです。"
10+
- icon: "💉"
11+
title: 統一された注入
12+
desc: "@Injectはすべてのマネージドビーン・JAX-RSリソース・Jakarta EEコンポーネントで使えます。"
13+
- icon: "🧪"
14+
title: 簡単なユニットテスト
15+
desc: "EJBプロキシのオーバーヘッドがないプレーンなクラスは、インスタンス化とモックが容易です。"
16+
support:
17+
description: Jakarta EE 8 / Java 11以降、広く利用可能
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: JDBC ResultSetマッピングとJPA Criteria APIの比較
2+
oldApproach: JDBC ResultSet
3+
modernApproach: JPA Criteria API
4+
summary: "手動のJDBC ResultSetマッピングをJPAの型安全なCriteria APIによる動的クエリに置き換える。"
5+
explanation: "生のJDBCではSQL文字列の構築・インデックスによるパラメーター設定・ResultSetの各カラムを手動でマッピングが必要であり、エラーが起きやすくカラム変更時にサイレントに壊れます。JPA Criteria APIは型安全なビルダーパターンでプログラム的にクエリを構築します。カラム名はエンティティモデルと照合して検証され、結果マッピングは自動的に行われ、複雑な動的クエリも文字列連結なしでクリーンに組み立てられます。"
6+
whyModernWins:
7+
- icon: "🔒"
8+
title: 型安全なクエリ
9+
desc: "Criteriaビルダーはフィールド名と型の不一致をコンパイル時に検出します。"
10+
- icon: "🗺️"
11+
title: 自動マッピング
12+
desc: "JPAが結果行をエンティティオブジェクトにマッピングするため、カラムごとの手動抽出は不要です。"
13+
- icon: "🧩"
14+
title: 組み合わせ可能な述語
15+
desc: "動的WHERE句はand()・or()と再利用可能なPredicateオブジェクトでクリーンに構築できます。"
16+
support:
17+
description: Jakarta EE 8 / Java 11以降、広く利用可能
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: JDBCとjOOQの比較
2+
oldApproach: 生のJDBC
3+
modernApproach: jOOQ SQL DSL
4+
summary: "生のJDBC文字列ベースSQLをjOOQの型安全なフルエントSQL DSLに置き換える。"
5+
explanation: "jOOQ(Java Object Oriented Querying)はデータベーススキーマからJavaコードを生成し、テーブル名・カラム名を型安全なJava定数に変換します。フルエントDSLはSQL構文を模倣しており、クエリが読みやすく組み合わせやすいです。パラメーターは自動的にバインドされ、SQLインジェクションのリスクが排除されます。JPA/JPQLと異なり、jOOQはSQLを完全に活用でき、ウィンドウ関数・CTE・RETURNING句・ベンダー固有拡張もファーストクラスです。"
6+
whyModernWins:
7+
- icon: "🔒"
8+
title: 型安全なカラム
9+
desc: "カラム名は生成されたJava定数のため、タイポや型の不一致はコンパイルエラーになります。"
10+
- icon: "📖"
11+
title: SQL流暢性
12+
desc: "jOOQ DSLはSQL構文に近く、複雑なJOIN・サブクエリ・CTEも読みやすく書けます。"
13+
- icon: "🛡️"
14+
title: インジェクション対策済み設計
15+
desc: "パラメーターは常に安全にバインドされ、文字列連結がないためSQLインジェクションのリスクがありません。"
16+
support:
17+
description: jOOQオープンソース版はすべての主要オープンソースデータベースをサポート。古い商用DBは有償ライセンスが必要

0 commit comments

Comments
 (0)