{"id":924,"date":"2025-03-24T08:52:55","date_gmt":"2025-03-23T23:52:55","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=924"},"modified":"2025-03-24T08:52:55","modified_gmt":"2025-03-23T23:52:55","slug":"%e3%80%90%e4%bf%9d%e5%ae%88%e6%80%a7%e6%8a%9c%e7%be%a4%e3%80%91lombok%e3%81%aebuilder%e3%81%a7%e5%ae%9f%e7%8f%be%e3%81%99%e3%82%8b3%e3%81%a4%e3%81%ae%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b3","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=924","title":{"rendered":"\u3010\u4fdd\u5b88\u6027\u629c\u7fa4\u3011Lombok\u306ebuilder\u3067\u5b9f\u73fe\u3059\u308b3\u3064\u306e\u30af\u30ea\u30fc\u30f3\u30b3\u30fc\u30c9\u8853"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\" id=\"i-0\">Lombok\u306ebuilder\u3068\u306f\uff1f\u57fa\u790e\u304b\u3089\u5b8c\u5168\u7406\u89e3<\/h1>\n\n\n\n<p class=\"is-style-sango-paragraph-exclamation-alt\"><strong><span class=\"big\">builder\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u304c\u89e3\u6c7a\u3059\u308b3\u3064\u306e\u8ab2\u984c<\/span><\/strong><\/p>\n\n\n\n<p>Java\u3067\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u751f\u6210\u3059\u308b\u969b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u8ab2\u984c\u306b\u76f4\u9762\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u80a5\u5927\u5316<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u5c5e\u6027\u304c\u591a\u3044\u30af\u30e9\u30b9\u3067\u306f\u3001\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u5897\u3048\u3059\u304e\u308b<\/li>\n\n\n\n<li>\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u9806\u5e8f\u3092\u9593\u9055\u3048\u3084\u3059\u3044<\/li>\n\n\n\n<li>\u30aa\u30d7\u30b7\u30e7\u30ca\u30eb\u306a\u5c5e\u6027\u306e\u5bfe\u5fdc\u304c\u8907\u96d1\u306b\u306a\u308b<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u53ef\u8aad\u6027\u306e\u4f4e\u4e0b<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   \/\/ \u5f93\u6765\u306e\u65b9\u6cd5\uff08\u53ef\u8aad\u6027\u304c\u4f4e\u3044\uff09\n   User user = new User(\"John\", \"Doe\", 30, \"john@example.com\", \"Tokyo\", \"123-4567\");<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u8ab2\u984c<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u65b0\u3057\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8ffd\u52a0\u6642\u306b\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u4fee\u6b63\u304c\u5fc5\u8981<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u30b3\u30fc\u30c9\u306e\u4fdd\u5b88\u304c\u56f0\u96e3<\/li>\n\n\n\n<li>\u30a4\u30df\u30e5\u30fc\u30bf\u30d6\u30eb\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210\u304c\u9762\u5012<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">Lombok\u306ebuilder\u3068\u306f\uff1f\u57fa\u790e\u304b\u3089\u5b8c\u5168\u7406\u89e3<\/a>    <ul class=\"menu_level_1\">      <li class=\"first last\">        <a href=\"#i-1\">\u5f93\u6765\u306eBuilder\u30d1\u30bf\u30fc\u30f3\u3068\u306e\u6bd4\u8f03<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-5\">Lombok\u306ebuilder\u6d3b\u7528\u8853\uff1a\u57fa\u672c\u304b\u3089\u5fdc\u7528\u307e\u3067<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-6\">builder\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3068\u30b3\u30fc\u30c9\u4f8b<\/a>      <\/li>      <li>        <a href=\"#i-9\">builderCustomizer\u3067\u5b9f\u73fe\u3059\u308b\u67d4\u8edf\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-11\">\u5fc5\u9808\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5f37\u5236\u3059\u308b\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-14\">\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3067\u5b66\u3076builder\u306e\u5a01\u529b<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-15\">DTO\u30af\u30e9\u30b9\u3067\u306e\u52b9\u679c\u7684\u306a\u4f7f\u7528\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-18\">\u30c6\u30b9\u30c8\u30b3\u30fc\u30c9\u3067\u306e\u6d3b\u7528\u30b7\u30fc\u30f3<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-20\">\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u3067\u306e\u5b9f\u88c5\u4f8b<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-23\">builder\u3092\u4f7f\u3046\u969b\u306e\u6ce8\u610f\u70b9\u3068\u89e3\u6c7a\u7b56<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-24\">\u3088\u304f\u3042\u308b\u5b9f\u88c5\u30df\u30b9\u3068\u305d\u306e\u5bfe\u51e6\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-27\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3078\u306e\u5f71\u97ff\u3068\u6700\u9069\u5316\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-29\">IDE\u8a2d\u5b9a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-32\">Lombok builder\u5fdc\u7528\u30c6\u30af\u30cb\u30c3\u30af\u96c6<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-33\">\u7d99\u627f\u6642\u306ebuilder\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/a>      <\/li>      <li>        <a href=\"#i-36\">\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u51e6\u7406\u306e\u7d44\u307f\u8fbc\u307f\u65b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-39\">Spring Framework\u3068\u306e\u9023\u643a\u6d3b\u7528\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-42\">\u307e\u3068\u3081\uff1aLombok builder\u3067\u5b9f\u73fe\u3059\u308b\u30af\u30ea\u30fc\u30f3\u30b3\u30fc\u30c9\u306e\u672a\u6765<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-43\">Lombok builder\u304c\u3082\u305f\u3089\u30593\u3064\u306e\u4fa1\u5024<\/a>      <\/li>      <li>        <a href=\"#i-44\">\u5b9f\u8df5\u306e\u305f\u3081\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-45\">\u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-1\">\u5f93\u6765\u306eBuilder\u30d1\u30bf\u30fc\u30f3\u3068\u306e\u6bd4\u8f03<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">\u5f93\u6765\u306eBuilder\u30d1\u30bf\u30fc\u30f3\u5b9f\u88c5<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5f93\u6765\u306e\u65b9\u6cd5\npublic class User {\n    private final String firstName;\n    private final String lastName;\n    private final int age;\n    private final String email;\n\n    private User(UserBuilder builder) {\n        this.firstName = builder.firstName;\n        this.lastName = builder.lastName;\n        this.age = builder.age;\n        this.email = builder.email;\n    }\n\n    public static class UserBuilder {\n        private String firstName;\n        private String lastName;\n        private int age;\n        private String email;\n\n        public UserBuilder firstName(String firstName) {\n            this.firstName = firstName;\n            return this;\n        }\n\n        public UserBuilder lastName(String lastName) {\n            this.lastName = lastName;\n            return this;\n        }\n\n        public UserBuilder age(int age) {\n            this.age = age;\n            return this;\n        }\n\n        public UserBuilder email(String email) {\n            this.email = email;\n            return this;\n        }\n\n        public User build() {\n            return new User(this);\n        }\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">Lombok\u3092\u4f7f\u7528\u3057\u305f\u5b9f\u88c5<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import lombok.Builder;\nimport lombok.Value;\n\n@Value\n@Builder\npublic class User {\n    String firstName;\n    String lastName;\n    int age;\n    String email;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">\u4e3b\u306a\u9055\u3044\u3068\u5229\u70b9<\/h3>\n\n\n<div id=\"id-df311d37-4b7b-4ded-a754-f472148e9581\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u9805\u76ee<\/th><th>\u5f93\u6765\u306eBuilder<\/th><th>Lombok\u306ebuilder<\/th><\/tr><\/thead><tbody><tr><td>\u30b3\u30fc\u30c9\u91cf<\/td><td>30-40\u884c\u7a0b\u5ea6<\/td><td>\u6570\u884c<\/td><\/tr><tr><td>\u4fdd\u5b88\u6027<\/td><td>\u30d5\u30a3\u30fc\u30eb\u30c9\u8ffd\u52a0\u6642\u306b\u624b\u52d5\u66f4\u65b0\u304c\u5fc5\u8981<\/td><td>\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u81ea\u52d5\u751f\u6210<\/td><\/tr><tr><td>\u30a4\u30df\u30e5\u30fc\u30bf\u30d6\u30eb\u6027<\/td><td>\u624b\u52d5\u3067\u5b9f\u88c5\u304c\u5fc5\u8981<\/td><td>@Value\u3067\u81ea\u52d5\u5bfe\u5fdc<\/td><\/tr><tr><td>IDE\u88dc\u5b8c<\/td><td>\u5b8c\u5168\u5bfe\u5fdc<\/td><td>\u5b8c\u5168\u5bfe\u5fdc<\/td><\/tr><tr><td>\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u6027<\/td><td>\u9ad8\u3044\uff08\u624b\u52d5\u5b9f\u88c5\uff09<\/td><td>builderCustomizer\u3067\u5bfe\u5fdc\u53ef\u80fd<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>Lombok\u306ebuilder\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u4ee5\u4e0b\u306e\u30e1\u30ea\u30c3\u30c8\u304c\u5f97\u3089\u308c\u307e\u3059\uff1a<\/p>\n\n\n\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u4f7f\u7528\u3059\u308b\u969b\u306e\u30e1\u30ea\u30c3\u30c8<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ul class=\"wp-block-list\">\n<li>\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u30b3\u30fc\u30c9\u306e\u5927\u5e45\u306a\u524a\u6e1b<\/li>\n\n\n\n<li>\u30bf\u30a4\u30d7\u30bb\u30fc\u30d5\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210<\/li>\n\n\n\n<li>\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u5411\u4e0a<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u5411\u4e0a<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<p>\u4f7f\u7528\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">User user = User.builder()\n    .firstName(\"John\")\n    .lastName(\"Doe\")\n    .age(30)\n    .email(\"john@example.com\")\n    .build();<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-5\">Lombok\u306ebuilder\u6d3b\u7528\u8853\uff1a\u57fa\u672c\u304b\u3089\u5fdc\u7528\u307e\u3067<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-6\">builder\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3068\u30b3\u30fc\u30c9\u4f8b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">\u57fa\u672c\u7684\u306abuilder\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import lombok.Builder;\nimport lombok.Getter;\n\n@Getter\n@Builder\npublic class Product {\n    private final String name;\n    private final int price;\n    private final String description;\n    private final String category;\n    private final boolean isAvailable;\n\n    \/\/ Lombok\u304c\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u81ea\u52d5\u751f\u6210\u3057\u307e\u3059\n    \/\/ - \u3059\u3079\u3066\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306egetter\u30e1\u30bd\u30c3\u30c9\n    \/\/ - builder\u30af\u30e9\u30b9\n    \/\/ - build\u30e1\u30bd\u30c3\u30c9\n}\n\n\/\/ \u4f7f\u7528\u4f8b\nProduct product = Product.builder()\n    .name(\"Gaming Mouse\")\n    .price(9800)\n    .description(\"High-precision gaming mouse\")\n    .category(\"Gaming\")\n    .isAvailable(true)\n    .build();<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306e\u8a2d\u5b9a<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Builder\npublic class Configuration {\n    @Builder.Default\n    private final int timeout = 30;\n\n    @Builder.Default\n    private final String encoding = \"UTF-8\";\n\n    private final String host;\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-9\">builderCustomizer\u3067\u5b9f\u73fe\u3059\u308b\u67d4\u8edf\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">\u30ab\u30b9\u30bf\u30e0\u30d3\u30eb\u30c0\u30fc\u30e1\u30bd\u30c3\u30c9\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Builder\npublic class Order {\n    private final String orderId;\n    private final BigDecimal amount;\n    private final LocalDateTime orderDate;\n    private final String status;\n\n    public static class OrderBuilder {\n        \/\/ \u30ab\u30b9\u30bf\u30e0\u30d3\u30eb\u30c0\u30fc\u30e1\u30bd\u30c3\u30c9\n        public OrderBuilder currentDateTime() {\n            this.orderDate = LocalDateTime.now();\n            return this;\n        }\n\n        public OrderBuilder calculateAmount(List&lt;OrderItem&gt; items) {\n            this.amount = items.stream()\n                .map(OrderItem::getPrice)\n                .reduce(BigDecimal.ZERO, BigDecimal::add);\n            return this;\n        }\n\n        public OrderBuilder generateOrderId() {\n            this.orderId = UUID.randomUUID().toString();\n            return this;\n        }\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\nOrder order = Order.builder()\n    .currentDateTime()\n    .generateOrderId()\n    .calculateAmount(orderItems)\n    .status(\"PENDING\")\n    .build();<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-11\">\u5fc5\u9808\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5f37\u5236\u3059\u308b\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">1. 2\u6bb5\u968e\u30d3\u30eb\u30c0\u30fc\u30d1\u30bf\u30fc\u30f3<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Builder\npublic class UserAccount {\n    private final String username;  \/\/ \u5fc5\u9808\n    private final String email;     \/\/ \u5fc5\u9808\n    private final String firstName; \/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\n    private final String lastName;  \/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\n\n    public static UserAccountBuilder builder(String username, String email) {\n        return new UserAccountBuilder()\n            .username(username)\n            .email(email);\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\uff1a\u5fc5\u9808\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5f37\u5236\nUserAccount account = UserAccount.builder(\"johndoe\", \"john@example.com\")\n    .firstName(\"John\")\n    .lastName(\"Doe\")\n    .build();<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">2. \u30cd\u30b9\u30c8\u3055\u308c\u305f\u30d3\u30eb\u30c0\u30fc\u30d1\u30bf\u30fc\u30f3<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class Document {\n    private final String title;       \/\/ \u5fc5\u9808\n    private final String content;     \/\/ \u5fc5\u9808\n    private final String author;      \/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\n    private final LocalDate date;     \/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\n\n    @Builder(builderMethodName = \"hiddenBuilder\")\n    private Document(String title, String content, String author, LocalDate date) {\n        this.title = title;\n        this.content = content;\n        this.author = author;\n        this.date = date;\n    }\n\n    public static TitleStep builder() {\n        return new DocumentBuilder();\n    }\n\n    public interface TitleStep {\n        ContentStep title(String title);\n    }\n\n    public interface ContentStep {\n        BuildStep content(String content);\n    }\n\n    public interface BuildStep {\n        BuildStep author(String author);\n        BuildStep date(LocalDate date);\n        Document build();\n    }\n\n    private static class DocumentBuilder implements TitleStep, ContentStep, BuildStep {\n        private final Document.DocumentBuilder builder = Document.hiddenBuilder();\n\n        @Override\n        public ContentStep title(String title) {\n            builder.title(title);\n            return this;\n        }\n\n        @Override\n        public BuildStep content(String content) {\n            builder.content(content);\n            return this;\n        }\n\n        @Override\n        public BuildStep author(String author) {\n            builder.author(author);\n            return this;\n        }\n\n        @Override\n        public BuildStep date(LocalDate date) {\n            builder.date(date);\n            return this;\n        }\n\n        @Override\n        public Document build() {\n            return builder.build();\n        }\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\uff1a\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u5fc5\u9808\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5f37\u5236\nDocument doc = Document.builder()\n    .title(\"Required Title\")     \/\/ \u5fc5\u9808\n    .content(\"Required Content\") \/\/ \u5fc5\u9808\n    .author(\"Optional Author\")   \/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\n    .date(LocalDate.now())      \/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\n    .build();<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u578b\u5b89\u5168\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210<\/li>\n\n\n\n<li>\u5fc5\u9808\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u4fdd\u8a3c<\/li>\n\n\n\n<li>\u30ab\u30b9\u30bf\u30e0\u30ed\u30b8\u30c3\u30af\u306e\u7d44\u307f\u8fbc\u307f<\/li>\n\n\n\n<li>\u67d4\u8edf\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306e\u8a2d\u5b9a<\/li>\n<\/ul>\n\n\n\n<p>\u304c\u5b9f\u73fe\u53ef\u80fd\u3067\u3059\u3002\u7279\u306b\u5927\u898f\u6a21\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u3092\u7dad\u6301\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-14\">\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3067\u5b66\u3076builder\u306e\u5a01\u529b<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-15\">DTO\u30af\u30e9\u30b9\u3067\u306e\u52b9\u679c\u7684\u306a\u4f7f\u7528\u65b9\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">REST API\u306e\u30ec\u30b9\u30dd\u30f3\u30b9DTO<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Value\n@Builder\npublic class UserResponseDTO {\n    String userId;\n    String username;\n    UserStatus status;\n    List&lt;String&gt; roles;\n\n    @Builder.Default\n    LocalDateTime lastUpdated = LocalDateTime.now();\n\n    \/\/ \u30c9\u30e1\u30a4\u30f3\u30e2\u30c7\u30eb\u304b\u3089DTO\u3078\u306e\u5909\u63db\u3092\u5bb9\u6613\u306b\u3059\u308b\u30d5\u30a1\u30af\u30c8\u30ea\u30e1\u30bd\u30c3\u30c9\n    public static UserResponseDTO fromEntity(User user) {\n        return UserResponseDTO.builder()\n            .userId(user.getId())\n            .username(user.getUsername())\n            .status(user.getStatus())\n            .roles(user.getRoles().stream()\n                .map(Role::getName)\n                .collect(Collectors.toList()))\n            .build();\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-17\">\u30ea\u30af\u30a8\u30b9\u30c8DTO\u3067\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u7d71\u5408<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Builder\n@Value\npublic class CreateOrderRequestDTO {\n    @NotNull(message = \"\u9867\u5ba2ID\u306f\u5fc5\u9808\u3067\u3059\")\n    String customerId;\n\n    @NotEmpty(message = \"\u6ce8\u6587\u9805\u76ee\u306f1\u3064\u4ee5\u4e0a\u5fc5\u8981\u3067\u3059\")\n    List&lt;OrderItemDTO&gt; items;\n\n    @Pattern(regexp = \"STANDARD|EXPRESS\", message = \"\u914d\u9001\u65b9\u6cd5\u304c\u7121\u52b9\u3067\u3059\")\n    String deliveryType;\n\n    \/\/ \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u7d50\u679c\u3092\u542b\u3080\u30d3\u30eb\u30c0\u30fc\u30e1\u30bd\u30c3\u30c9\n    public static CreateOrderRequestDTOBuilder validatedBuilder() {\n        return new CreateOrderRequestDTOBuilder() {\n            @Override\n            public CreateOrderRequestDTO build() {\n                CreateOrderRequestDTO dto = super.build();\n                ValidatorFactory factory = Validation.buildDefaultValidatorFactory();\n                Validator validator = factory.getValidator();\n                Set&lt;ConstraintViolation&lt;CreateOrderRequestDTO&gt;&gt; violations = validator.validate(dto);\n\n                if (!violations.isEmpty()) {\n                    throw new ConstraintViolationException(violations);\n                }\n\n                return dto;\n            }\n        };\n    }\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-18\">\u30c6\u30b9\u30c8\u30b3\u30fc\u30c9\u3067\u306e\u6d3b\u7528\u30b7\u30fc\u30f3<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-19\">\u30c6\u30b9\u30c8\u30c7\u30fc\u30bf\u30d3\u30eb\u30c0\u30fc<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Builder\n@Value\npublic class TestUserBuilder {\n    @Builder.Default\n    String id = UUID.randomUUID().toString();\n\n    @Builder.Default\n    String username = \"test-user\";\n\n    @Builder.Default\n    String email = \"test@example.com\";\n\n    @Builder.Default\n    UserRole role = UserRole.USER;\n\n    @Builder.Default\n    boolean isActive = true;\n\n    \/\/ \u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u5225\u306e\u30d7\u30ea\u30bb\u30c3\u30c8\n    public static TestUserBuilder adminUser() {\n        return builder()\n            .username(\"admin-user\")\n            .role(UserRole.ADMIN)\n            .build()\n            .toBuilder();\n    }\n\n    public static TestUserBuilder inactiveUser() {\n        return builder()\n            .isActive(false)\n            .build()\n            .toBuilder();\n    }\n}\n\n\/\/ \u30c6\u30b9\u30c8\u3067\u306e\u4f7f\u7528\u4f8b\n@Test\nvoid userAuthorizationTest() {\n    User adminUser = TestUserBuilder.adminUser()\n        .email(\"admin@example.com\")\n        .build();\n\n    User inactiveUser = TestUserBuilder.inactiveUser()\n        .username(\"inactive-user\")\n        .build();\n\n    \/\/ \u30c6\u30b9\u30c8\u30ed\u30b8\u30c3\u30af\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-20\">\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u3067\u306e\u5b9f\u88c5\u4f8b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-21\">\u30a4\u30d9\u30f3\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u69cb\u7bc9<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Builder\n@Value\npublic class UserCreatedEvent {\n    String eventId;\n    String userId;\n    String username;\n    LocalDateTime timestamp;\n    Map&lt;String, String&gt; metadata;\n\n    public static class UserCreatedEventBuilder {\n        \/\/ \u30a4\u30d9\u30f3\u30c8ID\u306e\u81ea\u52d5\u751f\u6210\n        public UserCreatedEventBuilder generateEventId() {\n            this.eventId = UUID.randomUUID().toString();\n            return this;\n        }\n\n        \/\/ \u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u306e\u81ea\u52d5\u8a2d\u5b9a\n        public UserCreatedEventBuilder currentTimestamp() {\n            this.timestamp = LocalDateTime.now();\n            return this;\n        }\n\n        \/\/ \u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u8ffd\u52a0\n        public UserCreatedEventBuilder addMetadata(String key, String value) {\n            if (this.metadata == null) {\n                this.metadata = new HashMap&lt;&gt;();\n            }\n            this.metadata.put(key, value);\n            return this;\n        }\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-22\">\u30b5\u30fc\u30d3\u30b9\u9593\u901a\u4fe1\u306eDTO<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Builder\n@Value\npublic class ServiceResponseWrapper&lt;T&gt; {\n    T data;\n    String serviceId;\n    LocalDateTime responseTime;\n\n    @Builder.Default\n    Map&lt;String, String&gt; headers = new HashMap&lt;&gt;();\n\n    \/\/ \u30a8\u30e9\u30fc\u30ec\u30b9\u30dd\u30f3\u30b9\u7528\u30d5\u30a1\u30af\u30c8\u30ea\u30e1\u30bd\u30c3\u30c9\n    public static &lt;T&gt; ServiceResponseWrapper&lt;T&gt; error(String errorMessage) {\n        return ServiceResponseWrapper.&lt;T&gt;builder()\n            .serviceId(\"ERROR\")\n            .responseTime(LocalDateTime.now())\n            .addHeader(\"error\", errorMessage)\n            .build();\n    }\n\n    public static class ServiceResponseWrapperBuilder&lt;T&gt; {\n        public ServiceResponseWrapperBuilder&lt;T&gt; addHeader(String key, String value) {\n            headers.put(key, value);\n            return this;\n        }\n    }\n}<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u4f8b\u306f\u3001Lombok\u306ebuilder\u30d1\u30bf\u30fc\u30f3\u304c\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3044\u304b\u306b\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3067\u304d\u308b\u304b\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u7279\u306b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DTO\u3067\u306e\u578b\u5b89\u5168\u306a\u5909\u63db\u51e6\u7406<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u30b3\u30fc\u30c9\u3067\u306e\u67d4\u8edf\u306a\u30c7\u30fc\u30bf\u751f\u6210<\/li>\n\n\n\n<li>\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u3067\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u51e6\u7406<\/li>\n<\/ul>\n\n\n\n<p>\u306b\u304a\u3044\u3066\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3068\u4fdd\u5b88\u6027\u3092\u5927\u304d\u304f\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-23\">builder\u3092\u4f7f\u3046\u969b\u306e\u6ce8\u610f\u70b9\u3068\u89e3\u6c7a\u7b56<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-24\">\u3088\u304f\u3042\u308b\u5b9f\u88c5\u30df\u30b9\u3068\u305d\u306e\u5bfe\u51e6\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-25\">1. \u5faa\u74b0\u53c2\u7167\u306e\u554f\u984c<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u554f\u984c\u306e\u3042\u308b\u30b3\u30fc\u30c9\n@Builder\n@Data\npublic class Department {\n    private String name;\n    private Employee manager;\n}\n\n@Builder\n@Data\npublic class Employee {\n    private String name;\n    private Department department;  \/\/ \u5faa\u74b0\u53c2\u7167\n}\n\n\/\/ \u89e3\u6c7a\u7b56\uff1aDTO\u30d1\u30bf\u30fc\u30f3\u306e\u4f7f\u7528\n@Builder\n@Value\npublic class DepartmentDTO {\n    String name;\n    String managerName;  \/\/ \u53c2\u7167\u3067\u306f\u306a\u304f\u5fc5\u8981\u306a\u60c5\u5831\u306e\u307f\u3092\u4fdd\u6301\n}\n\n@Builder\n@Value\npublic class EmployeeDTO {\n    String name;\n    String departmentName;  \/\/ \u53c2\u7167\u3067\u306f\u306a\u304f\u5fc5\u8981\u306a\u60c5\u5831\u306e\u307f\u3092\u4fdd\u6301\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-26\">2. \u30a4\u30df\u30e5\u30fc\u30bf\u30d6\u30eb\u6027\u306e\u8aa4\u3063\u305f\u5b9f\u88c5<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u554f\u984c\u306e\u3042\u308b\u30b3\u30fc\u30c9\n@Builder\n@Getter\npublic class Configuration {\n    private List&lt;String&gt; settings;  \/\/ \u30df\u30e5\u30fc\u30bf\u30d6\u30eb\u306a\u53c2\u7167\u3092\u8fd4\u3059\n}\n\n\/\/ \u89e3\u6c7a\u7b56\uff1a\u9632\u5fa1\u7684\u30b3\u30d4\u30fc\u306e\u4f7f\u7528\n@Builder\n@Getter\npublic class Configuration {\n    private final List&lt;String&gt; settings;\n\n    public List&lt;String&gt; getSettings() {\n        return new ArrayList&lt;&gt;(settings);  \/\/ \u9632\u5fa1\u7684\u30b3\u30d4\u30fc\u3092\u8fd4\u3059\n    }\n\n    public static class ConfigurationBuilder {\n        public ConfigurationBuilder settings(List&lt;String&gt; settings) {\n            this.settings = new ArrayList&lt;&gt;(settings);  \/\/ \u30d3\u30eb\u30c9\u6642\u3082\u9632\u5fa1\u7684\u30b3\u30d4\u30fc\n            return this;\n        }\n    }\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-27\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3078\u306e\u5f71\u97ff\u3068\u6700\u9069\u5316\u65b9\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-28\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n<div id=\"id-22de59c2-1da7-4b5c-8f52-1cf37acdf46e\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u6700\u9069\u5316\u30dd\u30a4\u30f3\u30c8<\/th><th>\u5b9f\u88c5\u65b9\u6cd5<\/th><th>\u52b9\u679c<\/th><\/tr><\/thead><tbody><tr><td>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf<\/td><td><code>@Builder(toBuilder = false)<\/code><\/td><td>\u4e0d\u8981\u306atoBuilder\u30e1\u30bd\u30c3\u30c9\u3092\u751f\u6210\u3057\u306a\u3044<\/td><\/tr><tr><td>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210<\/td><td>\u30b7\u30f3\u30b0\u30eb\u30c8\u30f3\u30d1\u30bf\u30fc\u30f3\u3068\u306e\u7d44\u307f\u5408\u308f\u305b<\/td><td>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u751f\u6210\u30b3\u30b9\u30c8\u3092\u524a\u6e1b<\/td><\/tr><tr><td>\u521d\u671f\u5316\u30b3\u30b9\u30c8<\/td><td><code>@Builder.Default<\/code>\u306e\u9069\u5207\u306a\u4f7f\u7528<\/td><td>\u4e0d\u8981\u306a\u521d\u671f\u5316\u51e6\u7406\u3092\u56de\u907f<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u8003\u616e\u3057\u305f\u5b9f\u88c5\u4f8b\n@Builder(toBuilder = false)  \/\/ \u4e0d\u8981\u306atoBuilder\u3092\u7121\u52b9\u5316\n@Value\npublic class PerformanceOptimizedDTO {\n    @Builder.Default\n    Map&lt;String, String&gt; properties = new HashMap&lt;&gt;();  \/\/ \u9045\u5ef6\u521d\u671f\u5316\n\n    String id;\n    String name;\n\n    \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u6d3b\u7528\u3059\u308b\u30d3\u30eb\u30c0\u30fc\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\n    public static class PerformanceOptimizedDTOBuilder {\n        private static final Map&lt;String, String&gt; EMPTY_MAP = Collections.emptyMap();\n\n        public PerformanceOptimizedDTO build() {\n            \/\/ properties\u304c\u7a7a\u306e\u5834\u5408\u306f\u5171\u6709\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f7f\u7528\n            if (properties == null || properties.isEmpty()) {\n                properties = EMPTY_MAP;\n            }\n            return new PerformanceOptimizedDTO(id, name, properties);\n        }\n    }\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-29\">IDE\u8a2d\u5b9a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-30\">IntelliJ IDEA\u3067\u306e\u63a8\u5968\u8a2d\u5b9a<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Lombok\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!-- pom.xml\u3067\u306e\u8a2d\u5b9a --&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;org.projectlombok&lt;\/groupId&gt;\n    &lt;artifactId&gt;lombok&lt;\/artifactId&gt;\n    &lt;version&gt;${lombok.version}&lt;\/version&gt;\n    &lt;scope&gt;provided&lt;\/scope&gt;\n&lt;\/dependency&gt;<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u51e6\u7406\u306e\u6709\u52b9\u5316\n<ul class=\"wp-block-list\">\n<li>Settings \u2192 Build, Execution, Deployment \u2192 Compiler \u2192 Annotation Processors<\/li>\n\n\n\n<li>\u201cEnable annotation processing\u201d \u3092\u30c1\u30a7\u30c3\u30af<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u88dc\u5b8c\u306e\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u4f7f\u3044\u3084\u3059\u3044\u30b3\u30fc\u30c9\u88dc\u5b8c\u306e\u305f\u3081\u306e\u547d\u540d\u898f\u5247\n@Builder(builderMethodName = \"createBuilder\")  \/\/ build\u3067\u306f\u306a\u304f\u3088\u308a\u610f\u56f3\u304c\u660e\u78ba\u306a\u540d\u524d\npublic class OptimizedIdeUsage {\n    String identifier;  \/\/ \u660e\u78ba\u306a\u547d\u540d\u3067\u30b3\u30fc\u30c9\u88dc\u5b8c\u3092\u6539\u5584\n\n    @Builder.Default\n    Status status = Status.ACTIVE;  \/\/ enum\u3092\u4f7f\u7528\u3057\u3066\u578b\u5b89\u5168\u6027\u3092\u78ba\u4fdd\n\n    public enum Status {\n        ACTIVE, INACTIVE, PENDING\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-31\">Eclipse\u8a2d\u5b9a\u306e\u30dd\u30a4\u30f3\u30c8<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Lombok\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   java -jar lombok.jar<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>eclipse.ini\u306e\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   -javaagent:\/path\/to\/lombok.jar<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u63a8\u5968\u3059\u308b.settings\/org.eclipse.jdt.core.prefs\u306e\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   org.eclipse.jdt.core.compiler.processAnnotations=enabled<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u6ce8\u610f\u70b9\u3068\u89e3\u6c7a\u7b56\u3092\u9069\u5207\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001Lombok\u306ebuilder\u30d1\u30bf\u30fc\u30f3\u3092\u3088\u308a\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068IDE\u7d71\u5408\u306e\u6700\u9069\u5316\u304c\u91cd\u8981\u306b\u306a\u3063\u3066\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-32\">Lombok builder\u5fdc\u7528\u30c6\u30af\u30cb\u30c3\u30af\u96c6<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-33\">\u7d99\u627f\u6642\u306ebuilder\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-34\">\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u3068\u30b5\u30d6\u30af\u30e9\u30b9\u306e\u9023\u643a<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\n@SuperBuilder\npublic class Vehicle {\n    private final String manufacturer;\n    private final String model;\n    private final int year;\n}\n\n\/\/ \u30b5\u30d6\u30af\u30e9\u30b9\n@SuperBuilder\npublic class Car extends Vehicle {\n    private final int numberOfDoors;\n    private final String transmissionType;\n}\n\n\/\/ \u3055\u3089\u306b\u7d99\u627f\n@SuperBuilder\npublic class ElectricCar extends Car {\n    private final int batteryCapacity;\n    private final int range;\n}\n\n\/\/ \u4f7f\u7528\u4f8b\nElectricCar tesla = ElectricCar.builder()\n    .manufacturer(\"Tesla\")\n    .model(\"Model 3\")\n    .year(2024)\n    .numberOfDoors(4)\n    .transmissionType(\"Automatic\")\n    .batteryCapacity(82)\n    .range(576)\n    .build();<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-35\">\u62bd\u8c61\u30af\u30e9\u30b9\u3067\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@SuperBuilder\npublic abstract class PaymentMethod {\n    private final String id;\n    private final String currency;\n\n    protected abstract boolean validate();\n}\n\n@SuperBuilder\npublic class CreditCard extends PaymentMethod {\n    private final String cardNumber;\n    private final String expiryDate;\n    private final String cvv;\n\n    @Override\n    protected boolean validate() {\n        return cardNumber != null &amp;&amp; \n               expiryDate != null &amp;&amp; \n               cvv != null;\n    }\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-36\">\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u51e6\u7406\u306e\u7d44\u307f\u8fbc\u307f\u65b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-37\">\u30ab\u30b9\u30bf\u30e0\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Builder\n@Value\npublic class UserRegistration {\n    String email;\n    String password;\n    int age;\n\n    public static class UserRegistrationBuilder {\n        private static final Pattern EMAIL_PATTERN = \n            Pattern.compile(\"^[A-Za-z0-9+_.-]+@(.+)$\");\n\n        public UserRegistrationBuilder email(String email) {\n            if (!EMAIL_PATTERN.matcher(email).matches()) {\n                throw new IllegalArgumentException(\"Invalid email format\");\n            }\n            this.email = email;\n            return this;\n        }\n\n        public UserRegistrationBuilder password(String password) {\n            if (password.length() &lt; 8) {\n                throw new IllegalArgumentException(\n                    \"Password must be at least 8 characters\");\n            }\n            this.password = password;\n            return this;\n        }\n\n        public UserRegistrationBuilder age(int age) {\n            if (age &lt; 18) {\n                throw new IllegalArgumentException(\"Must be 18 or older\");\n            }\n            this.age = age;\n            return this;\n        }\n\n        public UserRegistration build() {\n            Objects.requireNonNull(email, \"Email is required\");\n            Objects.requireNonNull(password, \"Password is required\");\n            return new UserRegistration(email, password, age);\n        }\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-38\">Bean Validation\u3068\u306e\u7d71\u5408<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Builder\n@Value\npublic class Product {\n    @NotNull(message = \"Product code is required\")\n    String code;\n\n    @Size(min = 3, max = 100, message = \"Name must be between 3 and 100 characters\")\n    String name;\n\n    @Min(value = 0, message = \"Price must be positive\")\n    BigDecimal price;\n\n    public static class ProductBuilder {\n        public Product build() {\n            Product product = new Product(code, name, price);\n            ValidatorFactory factory = Validation.buildDefaultValidatorFactory();\n            Validator validator = factory.getValidator();\n\n            Set&lt;ConstraintViolation&lt;Product&gt;&gt; violations = \n                validator.validate(product);\n\n            if (!violations.isEmpty()) {\n                throw new ConstraintViolationException(violations);\n            }\n\n            return product;\n        }\n    }\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-39\">Spring Framework\u3068\u306e\u9023\u643a\u6d3b\u7528\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-40\">Configuration Properties<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@ConfigurationProperties(prefix = \"app\")\n@Builder\n@Value\npublic class ApplicationConfig {\n    String apiKey;\n    int maxConnections;\n    Duration timeout;\n\n    @Builder.Default\n    RetryPolicy retryPolicy = RetryPolicy.DEFAULT;\n\n    public enum RetryPolicy {\n        DEFAULT, AGGRESSIVE, CONSERVATIVE\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n@Configuration\n@EnableConfigurationProperties(ApplicationConfig.class)\npublic class AppConfig {\n    @Bean\n    public ApplicationConfig applicationConfig() {\n        return ApplicationConfig.builder()\n            .apiKey(\"${app.api-key}\")\n            .maxConnections(100)\n            .timeout(Duration.ofSeconds(30))\n            .build();\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-41\">Spring Boot\u30c6\u30b9\u30c8\u8a2d\u5b9a<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Builder\n@Value\npublic class TestConfig {\n    DataSource dataSource;\n    String profileName;\n    Map&lt;String, String&gt; properties;\n\n    public static class TestConfigBuilder {\n        public TestConfigBuilder h2Database() {\n            this.dataSource = new EmbeddedDatabaseBuilder()\n                .setType(EmbeddedDatabaseType.H2)\n                .build();\n            return this;\n        }\n\n        public TestConfigBuilder activeProfiles(String... profiles) {\n            this.profileName = String.join(\",\", profiles);\n            return this;\n        }\n    }\n}\n\n\/\/ \u30c6\u30b9\u30c8\u3067\u306e\u4f7f\u7528\u4f8b\n@SpringBootTest\nclass ApplicationTests {\n    @Test\n    void contextLoads() {\n        TestConfig config = TestConfig.builder()\n            .h2Database()\n            .activeProfiles(\"test\")\n            .properties(Map.of(\n                \"spring.jpa.hibernate.ddl-auto\", \"create-drop\",\n                \"spring.jpa.show-sql\", \"true\"\n            ))\n            .build();\n\n        \/\/ \u30c6\u30b9\u30c8\u30ed\u30b8\u30c3\u30af\n    }\n}<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5fdc\u7528\u30c6\u30af\u30cb\u30c3\u30af\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u5805\u7262\u3067\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002\u7279\u306b\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u7d99\u627f\u3092\u6d3b\u7528\u3057\u305f\u67d4\u8edf\u306a\u30e2\u30c7\u30eb\u8a2d\u8a08<\/li>\n\n\n\n<li>\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u3088\u308b\u5805\u7262\u6027\u306e\u78ba\u4fdd<\/li>\n\n\n\n<li>Spring Framework\u3068\u306e\u7dca\u5bc6\u306a\u7d71\u5408<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u7279\u5fb4\u306f\u3001\u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3044\u3066\u5927\u304d\u306a\u4fa1\u5024\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-42\">\u307e\u3068\u3081\uff1aLombok builder\u3067\u5b9f\u73fe\u3059\u308b\u30af\u30ea\u30fc\u30f3\u30b3\u30fc\u30c9\u306e\u672a\u6765<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-43\">Lombok builder\u304c\u3082\u305f\u3089\u30593\u3064\u306e\u4fa1\u5024<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u958b\u767a\u52b9\u7387\u306e\u5411\u4e0a<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u30b3\u30fc\u30c9\u306e\u524a\u6e1b<\/li>\n\n\n\n<li>\u76f4\u611f\u7684\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210API<\/li>\n\n\n\n<li>IDE\u3068\u306e\u512a\u308c\u305f\u7d71\u5408\u6027<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30b3\u30fc\u30c9\u54c1\u8cea\u306e\u6539\u5584<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u578b\u5b89\u5168\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u69cb\u7bc9<\/li>\n\n\n\n<li>\u30a4\u30df\u30e5\u30fc\u30bf\u30d6\u30eb\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u8a2d\u8a08<\/li>\n\n\n\n<li>\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u7d71\u5408\u306b\u3088\u308b\u5805\u7262\u6027<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u4fdd\u5b88\u6027\u306e\u5411\u4e0a<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u7d71\u4e00\u3055\u308c\u305f\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u3057\u3084\u3059\u3044\u30b3\u30fc\u30c9\u8a2d\u8a08<\/li>\n\n\n\n<li>\u62e1\u5f35\u6027\u306e\u9ad8\u3044\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-44\">\u5b9f\u8df5\u306e\u305f\u3081\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/h2>\n\n\n\n<p>\u2705 <strong>\u57fa\u672c\u5b9f\u88c5<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] Lombok\u306e\u4f9d\u5b58\u95a2\u4fc2\u8ffd\u52a0<\/li>\n\n\n\n<li>[ ] IDE\u8a2d\u5b9a\u306e\u6700\u9069\u5316<\/li>\n\n\n\n<li>[ ] \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u898f\u7d04\u306e\u7b56\u5b9a<\/li>\n<\/ul>\n\n\n\n<p>\u2705 <strong>\u8a2d\u8a08\u8003\u616e\u70b9<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] \u30a4\u30df\u30e5\u30fc\u30bf\u30d6\u30eb\u8a2d\u8a08\u306e\u5fb9\u5e95<\/li>\n\n\n\n<li>[ ] \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30eb\u30fc\u30eb\u306e\u660e\u78ba\u5316<\/li>\n\n\n\n<li>[ ] \u7d99\u627f\u6226\u7565\u306e\u691c\u8a0e<\/li>\n<\/ul>\n\n\n\n<p>\u2705 <strong>\u904b\u7528\u4f53\u5236<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] \u30c1\u30fc\u30e0\u5185\u3067\u306e\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u898f\u7d04\u5408\u610f<\/li>\n\n\n\n<li>[ ] \u30ec\u30d3\u30e5\u30fc\u57fa\u6e96\u306e\u8a2d\u5b9a<\/li>\n\n\n\n<li>[ ] \u5b9a\u671f\u7684\u306a\u30b3\u30fc\u30c9\u54c1\u8cea\u30c1\u30a7\u30c3\u30af<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-45\">\u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c1\u30fc\u30e0\u5c0e\u5165<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u6bb5\u968e\u7684\u306a\u63a1\u7528<\/li>\n\n\n\n<li>\u30ca\u30ec\u30c3\u30b8\u306e\u5171\u6709\u3068\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316<\/li>\n\n\n\n<li>\u5b9a\u671f\u7684\u306a\u632f\u308a\u8fd4\u308a\u3068\u6539\u5584<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30b9\u30ad\u30eb\u5411\u4e0a<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u3088\u308a\u9ad8\u5ea6\u306a\u30d1\u30bf\u30fc\u30f3\u306e\u7fd2\u5f97<\/li>\n\n\n\n<li>Spring Framework\u7b49\u3068\u306e\u9023\u643a\u6df1\u5316<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u8ffd\u6c42<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>Lombok builder\u306f\u3001\u30e2\u30c0\u30f3\u306aJava\u958b\u767a\u306b\u304a\u3044\u3066\u6b20\u304b\u305b\u306a\u3044\u30c4\u30fc\u30eb\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u672c\u8a18\u4e8b\u3067\u7d39\u4ecb\u3057\u305f\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u4fdd\u5b88\u6027\u304c\u9ad8\u304f\u3001\u54c1\u8cea\u306e\u826f\u3044\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u7d99\u7d9a\u7684\u306a\u5b66\u7fd2\u3068\u5b9f\u8df5\u3092\u901a\u3058\u3066\u3001\u30c1\u30fc\u30e0\u5168\u4f53\u306e\u30b3\u30fc\u30c9\u54c1\u8cea\u3092\u5411\u4e0a\u3055\u305b\u3001\u958b\u767a\u52b9\u7387\u3092\u6700\u5927\u5316\u3057\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lombok\u306ebuilder\u3068\u306f\uff1f\u57fa\u790e\u304b\u3089\u5b8c\u5168\u7406\u89e3 builder\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u304c\u89e3\u6c7a\u3059\u308b3\u3064\u306e\u8ab2\u984c Java\u3067\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u751f\u6210\u3059\u308b\u969b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u8ab2\u984c\u306b\u76f4\u9762\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\uff1a Warning: Undefined  &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":{"0":"post-924","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-java","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=924"}],"version-history":[{"count":3,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/924\/revisions"}],"predecessor-version":[{"id":935,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/924\/revisions\/935"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}