{"id":2395,"date":"2023-04-29T13:55:52","date_gmt":"2023-04-29T04:55:52","guid":{"rendered":"https:\/\/edu.ujhb.org\/?p=2395"},"modified":"2023-04-29T13:55:53","modified_gmt":"2023-04-29T04:55:53","slug":"ruby-on-rails%e5%85%a5%e9%96%80%ef%bc%88%e6%97%a5%e6%9c%ac%e8%aa%9e%e7%89%88%ef%bc%89","status":"publish","type":"post","link":"https:\/\/edu.ujhb.org\/?p=2395","title":{"rendered":"Ruby On Rails\u5165\u9580\uff08\u65e5\u672c\u8a9e\u7248\uff09"},"content":{"rendered":"\n<p>IT\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u30d3\u30c7\u30aa\u3092\u3084\u308a\u305f\u3044\u306e\u3067\u3059\u304c\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u5fdc\u3058\u3066\u30d3\u30c7\u30aa\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u30c6\u30ad\u30b9\u30c8\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u914d\u7f6e\u3057\u3066\u3044\u305f\u3060\u3051\u307e\u3059\u304b\u3002 Ruby on Rails\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u304b\u3089\u59cb\u3081\u307e\u3057\u3087\u3046\u3002 \u30c1\u30e3\u30c3\u30c8GPT<\/p>\n\n\n\n<p>\u3082\u3061\u308d\u3093\u3067\u3059\uff01 \u4ee5\u4e0b\u306f\u3001\u57fa\u672c\u7684\u306aRuby on Rails\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u6982\u8981\u3067\u3059\u3002 \u3053\u306e\u6982\u8981\u306b\u5f93\u3063\u3066\u3001\u30d3\u30c7\u30aa\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u30c6\u30ad\u30b9\u30c8\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u914d\u7f6e\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ruby on Rails 1.1 \u5165\u9580\u3002 Ruby on Rails 1.2 \u306e\u5229\u70b9\u3002 \u4e3b\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u6a5f\u80fd 1.3. \u4e00\u822c\u7684\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b7\u30ca\u30ea\u30aa<\/li>\n\n\n\n<li>Ruby \u306e\u57fa\u672c 2.1. Ruby \u8a00\u8a9e\u5165\u9580 2.2. \u30c7\u30fc\u30bf\u578b\u3068\u5909\u6570 2.3. \u5236\u5fa1\u69cb\u9020 2.4. \u30e1\u30bd\u30c3\u30c9\u3068\u95a2\u6570 2.5. \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u6982\u5ff5<\/li>\n\n\n\n<li>Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u7d39\u4ecb 3.1. MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u5165\u9580 3.2. Rails \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020 3.3. Rails \u30b3\u30de\u30f3\u30c9\u884c\u30c4\u30fc\u30eb<\/li>\n\n\n\n<li>\u65b0\u3057\u3044 Rails \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210 4.1. Rails 4.2 \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002 \u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b 4.3. \u8a2d\u5b9a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 4.4. \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30c6\u30b9\u30c8\u306e\u5b9f\u884c<\/li>\n\n\n\n<li>Rails \u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0 5.1. \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u5f79\u5272\u3068\u539f\u5247 5.2. \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u8a2d\u5b9a 5.3. \u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c8\u3068\u30ea\u30bd\u30fc\u30b9\u30eb\u30fc\u30c8<\/li>\n\n\n\n<li>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3068\u30d3\u30e5\u30fc 6.1. \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u4f5c\u6210\u3068\u8a2d\u5b9a 6.2. \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u30e1\u30bd\u30c3\u30c9\u5909\u6570\u3068\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570 6.3. \u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u3068\u8a2d\u5b9a 6.4. \u30d3\u30e5\u30fc\u306b\u57cb\u3081\u8fbc\u307e\u308c\u305f Ruby \u30b3\u30fc\u30c9 (ERB)<\/li>\n\n\n\n<li>\u30e2\u30c7\u30eb\u304a\u3088\u3073\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u64cd\u4f5c 7.1. \u30e2\u30c7\u30eb\u306e\u4f5c\u6210\u3068\u8a2d\u5b9a 7.2. \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c 7.3. \u30a2\u30af\u30c6\u30a3\u30d6\u30fb\u30ec\u30b3\u30fc\u30c9\u7167\u4f1a 7.4. \u30e2\u30c7\u30eb\u306e\u95a2\u9023\u4ed8\u3051\u3068\u691c\u8a3c<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30e0\u3068\u30e6\u30fc\u30b6\u5165\u529b\u306e\u51e6\u7406 8.1. \u30d5\u30a9\u30fc\u30e0\u306e\u4f5c\u6210 8.2. \u30d5\u30a9\u30fc\u30e0\u9001\u4fe1\u306e\u51e6\u7406 8.3. \u30d5\u30a9\u30fc\u30e0\u306e\u691c\u8a3c\u3068\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8868\u793a 8.4. \u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<\/li>\n\n\n\n<li>\u30ec\u30a4\u30a2\u30a6\u30c8\u3001\u30b9\u30bf\u30a4\u30eb\u3001\u304a\u3088\u3073 JavaScript 9.1. Rails 9.2 \u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u30d5\u30a1\u30a4\u30eb\u3002 CSS \u30b9\u30bf\u30a4\u30eb\u306e\u7d39\u4ecb 9.3. JavaScript 9.4 \u306e\u7d39\u4ecb\u3002 JavaScript \u3068 CSS \u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3 in Rails<\/li>\n\n\n\n<li>\u30c7\u30d7\u30ed\u30a4\u3068\u7a3c\u50cd\u958b\u59cb 10.1. \u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u6982\u8981 10.2. Heroku 10.3 \u3092\u4f7f\u7528\u3057\u305f Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30d7\u30ed\u30a4\u3002 Docker 10.4 \u3092\u4f7f\u7528\u3057\u305f Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30d7\u30ed\u30a4\u3002 \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316\u3068\u76e3\u8996<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u306e\u6982\u8981\u306b\u57fa\u3065\u3044\u3066\u3001\u8907\u6570\u306e\u30d3\u30c7\u30aa\u306b\u5206\u5272\u3057\u3066Ruby on Rails\u306b\u3064\u3044\u3066\u8aac\u660e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u5404\u30d3\u30c7\u30aa\u306b\u306f\u3001\u8996\u8074\u8005\u304c Ruby on Rails \u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3057\u3001\u7fd2\u5f97\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064 1 \u3064\u4ee5\u4e0a\u306e\u30c8\u30d4\u30c3\u30af\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Ruby on Rails ChatGPT\u306e\u5229\u70b9\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Ruby on Rails(\u7565\u3057\u3066Rails)\u306f\u3001MVC(Model-View-Controller)\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3059\u308bRuby\u8a00\u8a9e\u306b\u57fa\u3065\u304f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306eWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Rails\u306b\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u958b\u767a\u306b\u6700\u9069\u306a\u591a\u304f\u306e\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002 Ruby on Rails \u306e\u4e3b\u306a\u5229\u70b9\u3092\u3044\u304f\u3064\u304b\u3054\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u958b\u767a\u901f\u5ea6:Rails\u306f\u300c\u69cb\u6210\u3088\u308a\u3082\u898f\u5247\u300d\u306e\u539f\u5247\u306b\u5f93\u3063\u3066\u3044\u308b\u305f\u3081\u3001\u958b\u767a\u8005\u306f\u591a\u304f\u306e\u69cb\u6210\u30b3\u30fc\u30c9\u3092\u8a18\u8ff0\u3059\u308b\u3053\u3068\u306a\u304f\u3001\u4e8b\u524d\u8a2d\u5b9a\u3055\u308c\u305f\u898f\u5247\u306e\u30bb\u30c3\u30c8\u306b\u5f93\u3046\u3060\u3051\u3067\u6e08\u307f\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u958b\u767a\u306e\u8907\u96d1\u3055\u304c\u8efd\u6e1b\u3055\u308c\u3001\u958b\u767a\u901f\u5ea6\u304c\u5411\u4e0a\u3057\u3001\u958b\u767a\u8005\u306fWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a\u65e9\u304f\u5e02\u5834\u306b\u6295\u5165\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u7fd2\u5f97\u3068\u4f7f\u7528\u304c\u7c21\u5358:Ruby\u8a00\u8a9e\u306f\u7c21\u6f54\u3067\u660e\u78ba\u3067\u3001\u7f8e\u3057\u3044\u6587\u6cd5\u3092\u6301\u3061\u3001\u8aad\u307f\u3084\u3059\u304f\u7406\u89e3\u3057\u3084\u3059\u3044\u3067\u3059\u3002 Rails\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u8a2d\u8a08\u3082\u975e\u5e38\u306b\u76f4\u611f\u7684\u3067\u3042\u308a\u3001\u958b\u767a\u8005\u304c\u7c21\u5358\u306b\u59cb\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u624b\u59cb\u3081\u306b\u3001Ruby\u3068Rails\u306f\u3069\u3061\u3089\u3082\u3068\u3066\u3082\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u3067\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8:Rails\u306b\u306f\u3001\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3001\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u30d5\u30a9\u30fc\u30e9\u30e0\u306a\u3069\u3001\u8c4a\u5bcc\u306a\u30ea\u30bd\u30fc\u30b9\u3092\u958b\u767a\u8005\u306b\u63d0\u4f9b\u3059\u308b\u5927\u898f\u6a21\u306a\u958b\u767a\u8005\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u958b\u767a\u8005\u306f\u554f\u984c\u306e\u89e3\u6c7a\u3001\u65b0\u3057\u3044\u30b9\u30ad\u30eb\u306e\u7fd2\u5f97\u3001\u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u306e\u5171\u6709\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30ea\u30c3\u30c1\u30d7\u30e9\u30b0\u30a4\u30f3\u30e9\u30a4\u30d6\u30e9\u30ea(Gems):Rails\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306f\u3001Rails\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u7c21\u5358\u306b\u7d71\u5408\u3067\u304d\u308b\u591a\u6570\u306e\u30d7\u30e9\u30b0\u30a4\u30f3(Gems\u3068\u547c\u3070\u308c\u308b)\u3092\u958b\u767a\u8005\u306b\u63d0\u4f9b\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u3001\u652f\u6255\u3044\u51e6\u7406\u3001\u96fb\u5b50\u30e1\u30fc\u30eb\u9001\u4fe1\u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306f\u6a5f\u80fd\u8c4a\u5bcc\u306aWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a\u8fc5\u901f\u306b\u958b\u767a\u3057\u3001\u30b3\u30fc\u30c9\u3092\u6700\u521d\u304b\u3089\u8a18\u8ff0\u3059\u308b\u5fc5\u8981\u304c\u306a\u304f\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u7e70\u308a\u8fd4\u3057\u306a\u3044: Rails \u306f\u3001\u30b3\u30fc\u30c9\u3092\u7e70\u308a\u8fd4\u3057\u66f8\u304b\u306a\u3044\u3068\u3044\u3046 DRY \u306e\u539f\u5247\u3092\u5f37\u304f\u652f\u6301\u3057\u3066\u3044\u307e\u3059\u3002 \u3064\u307e\u308a\u3001\u958b\u767a\u8005\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u3067\u518d\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u30b3\u30fc\u30c9\u3092\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3059\u308b\u3088\u3046\u52aa\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30fc\u30c9\u306e\u91cf\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9 \u30b3\u30b9\u30c8\u3001\u304a\u3088\u3073\u30a8\u30e9\u30fc\u7387\u3092\u524a\u6e1b\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u99c6\u52d5\u958b\u767a: Rails \u3067\u306f\u3001\u30c6\u30b9\u30c8\u99c6\u52d5\u958b\u767a (TDD) \u3068\u30d3\u30d8\u30a4\u30d3\u30a2\u99c6\u52d5\u958b\u767a (BDD) \u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u3066\u304a\u308a\u3001\u958b\u767a\u8005\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6a5f\u80fd\u3092\u691c\u8a3c\u3059\u308b\u305f\u3081\u306e\u30c6\u30b9\u30c8\u30fb\u30b1\u30fc\u30b9\u3092\u7c21\u5358\u306b\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002 Rails\u306b\u306f\u3001\u5358\u4f53\u30c6\u30b9\u30c8\u3001\u6a5f\u80fd\u30c6\u30b9\u30c8\u3001\u7d71\u5408\u30c6\u30b9\u30c8\u3092\u7c21\u5358\u306b\u5b9f\u884c\u3067\u304d\u308b\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3: Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u306f\u3001\u30af\u30ed\u30b9\u30b5\u30a4\u30c8\u30b9\u30af\u30ea\u30d7\u30c6\u30a3\u30f3\u30b0 (XSS) \u653b\u6483\u3001\u30af\u30ed\u30b9\u30b5\u30a4\u30c8\u30ea\u30af\u30a8\u30b9\u30c8\u30d5\u30a9\u30fc\u30b8\u30a7\u30ea (CSRF) \u653b\u6483\u3001SQL \u30a4\u30f3\u30b8\u30a7\u30af\u30b7\u30e7\u30f3\u653b\u6483\u306b\u5bfe\u3059\u308b\u4fdd\u8b77\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u307e\u3059\u3002 Rails \u304c\u63d0\u4f9b\u3059\u308b\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u6a5f\u80fd\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u958b\u767a\u8005\u306f\u30bb\u30ad\u30e5\u30a2 Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a\u7c21\u5358\u306b\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u52a0\u3048\u308b<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Ruby on Rails\u306e\u5229\u70b9\u306b\u3088\u308a\u3001Ruby on Rails\u306fWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3067\u975e\u5e38\u306b\u4eba\u6c17\u306e\u3042\u308b\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002 \u524d\u8ff0\u306e\u5229\u70b9\u306e\u7d9a\u304d\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>RESTful \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc: Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u8a08\u306b RESTful \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u63a8\u5968\u3057\u3066\u304a\u308a\u3001\u7c21\u6f54\u3067\u4fdd\u5b88\u53ef\u80fd\u3067\u62e1\u5f35\u53ef\u80fd\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u73fe\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 REST \u306e\u539f\u5247\u306b\u5f93\u3046\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306f\u308f\u304b\u308a\u3084\u3059\u3044 API \u3068 Web \u30b5\u30fc\u30d3\u30b9\u3092\u3088\u308a\u7c21\u5358\u306b\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u512a\u308c\u305f\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9: Ruby \u8a00\u8a9e\u306f\u6700\u9ad8\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u767a\u63ee\u3067\u304d\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u5408\u7406\u7684\u306a\u6700\u9069\u5316\u304c\u3042\u308c\u3070\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u6e80\u8db3\u306e\u3044\u304f\u30ec\u30d9\u30eb\u3067\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u3055\u3089\u306b\u3001Rails\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306f\u3001\u958b\u767a\u8005\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u306e\u306b\u5f79\u7acb\u3064\u3001\u30ad\u30e3\u30c3\u30b7\u30f3\u30b0\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30af\u30a8\u30ea\u6700\u9069\u5316\u306a\u3069\u306e\u591a\u304f\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u30c4\u30fc\u30eb\u3068\u624b\u6cd5\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u7d99\u7d9a\u7684\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3068\u30c7\u30d7\u30ed\u30a4: Rails \u306f\u3001Jenkins\u3001Travis CI\u3001GitHub Actions \u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u7d99\u7d9a\u7684\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3 (CI) \u304a\u3088\u3073\u30c7\u30d7\u30ed\u30a4\u30c4\u30fc\u30eb\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30c4\u30fc\u30eb\u306f\u3001\u958b\u767a\u30c1\u30fc\u30e0\u304c\u30d3\u30eb\u30c9\u3001\u30c6\u30b9\u30c8\u3001\u304a\u3088\u3073\u30c7\u30d7\u30ed\u30a4\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u81ea\u52d5\u5316\u3057\u3001\u958b\u767a\u52b9\u7387\u3068\u88fd\u54c1\u54c1\u8cea\u3092\u5411\u4e0a\u3055\u305b\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u4f9d\u5b58\u3057\u306a\u3044:Ruby\u306f\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u8a00\u8a9e\u3067\u3042\u308b\u305f\u3081\u3001Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306fLinux\u3001macOS\u3001Windows\u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3067\u958b\u767a\u304a\u3088\u3073\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001Rails\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u7570\u306a\u308b\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u9593\u3067\u3046\u307e\u304f\u79fb\u690d\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u62e1\u5f35\u6027: Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u975e\u5e38\u306b\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u3067\u3059\u3002 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u9700\u8981\u304c\u9ad8\u307e\u308b\u306b\u3064\u308c\u3066\u3001\u958b\u767a\u8005\u306f\u65b0\u3057\u3044\u6a5f\u80fd\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u3001\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u7c21\u5358\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002 \u3055\u3089\u306b\u3001Rails\u306e\u30e2\u30b8\u30e5\u30e9\u30fc\u8a2d\u8a08\u3068\u512a\u308c\u305f\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u539f\u5247\u306f\u3001\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u3067\u4fdd\u5b88\u304c\u5bb9\u6613\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u69cb\u7bc9\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Ruby on Rails\u306f\u3001\u5f37\u529b\u3067\u7fd2\u5f97\u3057\u3084\u3059\u304f\u3001\u4f7f\u3044\u3084\u3059\u3044Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u5927\u898f\u6a21\u306a\u30b5\u30dd\u30fc\u30c8\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u3042\u308a\u307e\u3059\u3002 Rails \u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u30d3\u30b8\u30cd\u30b9\u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3059\u3001\u9ad8\u54c1\u8cea\u3067\u5b89\u5168\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a\u8fc5\u901f\u306b\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>ChatGPT\u306e\u4e3b\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u6a5f\u80fd\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Ruby on Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u4e3b\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u6a5f\u80fd\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc: Rails \u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30ed\u30b8\u30c3\u30af\u3092 3 \u3064\u306e\u90e8\u5206\u306b\u5206\u5272\u3057\u3001\u3088\u308a\u30af\u30ea\u30fc\u30f3\u3067\u4fdd\u5b88\u3057\u3084\u3059\u3044\u30b3\u30fc\u30c9\u69cb\u9020\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u9023\u643a\u3059\u308b\u30e2\u30c7\u30eb\u30fb\u30d3\u30e5\u30fc\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc (MVC) \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc\u306b\u5f93\u3044\u307e\u3059\u3002\n<ul class=\"wp-block-list\">\n<li>\u30e2\u30c7\u30eb:\u30e2\u30c7\u30eb\u306f\u3001\u901a\u5e38\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c6\u30fc\u30d6\u30eb\u306b\u5bfe\u5fdc\u3059\u308b\u30c7\u30fc\u30bf\u3068\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306e\u51e6\u7406\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002 Rails \u3067\u306f\u3001\u30e2\u30c7\u30eb\u306f\u3001\u8c4a\u5bcc\u306a\u30c7\u30fc\u30bf\u691c\u8a3c\u3001\u7167\u4f1a\u3001\u304a\u3088\u3073\u76f8\u95a2\u6a5f\u80fd\u3092\u63d0\u4f9b\u3059\u308b\u30a2\u30af\u30c6\u30a3\u30d6\u30fb\u30ec\u30b3\u30fc\u30c9\u30fb\u30e9\u30a4\u30d6\u30e9\u30ea\u30fc\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d3\u30e5\u30fc: \u30d3\u30e5\u30fc\u306f\u30c7\u30fc\u30bf\u3092\u8868\u793a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u3001\u901a\u5e38\u306f HTML \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3068\u57cb\u3081\u8fbc\u307f Ruby \u30b3\u30fc\u30c9 (ERB) \u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u306f\u3001\u30e2\u30c7\u30eb\u5185\u306e\u30c7\u30fc\u30bf\u3092\u30e6\u30fc\u30b6\u30fc\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u306a\u65b9\u6cd5\u3067\u30e6\u30fc\u30b6\u30fc\u306b\u63d0\u793a\u3059\u308b\u5f79\u5272\u3092\u62c5\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc: \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u30e6\u30fc\u30b6\u30fc\u306e\u8981\u6c42\u3092\u51e6\u7406\u3057\u3001\u30e2\u30c7\u30eb\u3068\u30d3\u30e5\u30fc\u3092\u8abf\u6574\u3057\u307e\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u3092\u53d7\u3051\u53d6\u308a\u3001\u30c7\u30fc\u30bf\u51e6\u7406\u306e\u305f\u3081\u306b\u30e2\u30c7\u30eb\u3092\u547c\u3073\u51fa\u3057\u3001\u51e6\u7406\u7d50\u679c\u3092\u30d3\u30e5\u30fc\u306b\u6e21\u3057\u3066\u8868\u793a\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0: Rails \u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30fb\u30b7\u30b9\u30c6\u30e0\u306f\u3001HTTP \u8981\u6c42\u3092\u9069\u5207\u306a\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30fb\u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3059\u308b\u5f79\u5272\u3092\u62c5\u3044\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3067 URL \u30d1\u30bf\u30fc\u30f3\u3068\u5bfe\u5fdc\u3059\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0 \u30b7\u30b9\u30c6\u30e0\u306f\u3001\u9759\u7684\u304a\u3088\u3073\u52d5\u7684 URL \u30d1\u30bf\u30fc\u30f3\u3001\u30ea\u30bd\u30fc\u30b9 \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3001\u304a\u3088\u3073\u540d\u524d\u4ed8\u304d\u30eb\u30fc\u30c8\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3001\u67d4\u8edf\u306a URL \u8a2d\u8a08\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30af\u30c6\u30a3\u30d6\u30fb\u30ec\u30b3\u30fc\u30c9: \u30a2\u30af\u30c6\u30a3\u30d6\u30fb\u30ec\u30b3\u30fc\u30c9\u306f\u3001\u30e2\u30c7\u30eb\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u9593\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u62c5\u5f53\u3059\u308b Rails \u306e\u30b3\u30a2\u30fb\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3059\u3002 \u30a2\u30af\u30c6\u30a3\u30d6\u30fb\u30ec\u30b3\u30fc\u30c9\u306f\u3001\u30ec\u30b3\u30fc\u30c9\u306e\u7167\u4f1a\u3001\u633f\u5165\u3001\u66f4\u65b0\u3001\u524a\u9664\u306a\u3069\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u7c21\u6f54\u3067\u76f4\u611f\u7684\u306a\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u30a2\u30af\u30c6\u30a3\u30d6\u30fb\u30ec\u30b3\u30fc\u30c9\u306f\u3001\u76f8\u95a2\u3001\u691c\u8a3c\u3001\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u306a\u3069\u306e\u9ad8\u5ea6\u306a\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30af\u30b7\u30e7\u30f3\u30d3\u30e5\u30fc: \u30a2\u30af\u30b7\u30e7\u30f3\u30d3\u30e5\u30fc\u306f\u3001\u30d3\u30e5\u30fc\u3092\u51e6\u7406\u3059\u308b Rails \u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3059\u3002 \u3053\u308c\u306f\u3001HTML\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306bRuby\u30b3\u30fc\u30c9(ERB)\u3092\u57cb\u3081\u8fbc\u3080\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u3001\u958b\u767a\u8005\u304cHTML\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u52d5\u7684\u306b\u751f\u6210\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 \u30a2\u30af\u30b7\u30e7\u30f3\u30d3\u30e5\u30fc\u306b\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u3001\u30ea\u30f3\u30af\u3001\u753b\u50cf\u306a\u3069\u306e HTML \u8981\u7d20\u3092\u751f\u6210\u3059\u308b\u305f\u3081\u306e\u4e00\u9023\u306e\u30d3\u30e5\u30fc\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\u3082\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30af\u30b7\u30e7\u30f3\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc: \u30a2\u30af\u30b7\u30e7\u30f3\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u51e6\u7406\u3059\u308b Rails \u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3059\u3002 \u30e6\u30fc\u30b6\u30fc\u8981\u6c42\u306e\u51e6\u7406\u3001\u30e2\u30c7\u30eb\u3068\u30d3\u30e5\u30fc\u306e\u8abf\u6574\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002 \u30a2\u30af\u30b7\u30e7\u30f3\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306f\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u7ba1\u7406\u3001\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3001\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u30d3\u30e5\u30fc\u3001\u30d5\u30a3\u30eb\u30bf\u306a\u3069\u306e\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30af\u30b7\u30e7\u30f3\u30e1\u30fc\u30e9\u30fc: \u30a2\u30af\u30b7\u30e7\u30f3\u30e1\u30fc\u30e9\u30fc\u306f\u3001\u96fb\u5b50\u30e1\u30fc\u30eb\u306e\u9001\u4fe1\u3092\u51e6\u7406\u3059\u308bRails\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3059\u3002 \u3053\u308c\u306f\u3001\u96fb\u5b50\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3059\u308b\u305f\u3081\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30d3\u30e5\u30fc\u306b\u4f3c\u305f\u30e1\u30bd\u30c3\u30c9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001\u30a2\u30af\u30b7\u30e7\u30f3\u30e1\u30fc\u30e9\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30e1\u30fc\u30eb\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d0\u30f3\u30c9\u30e9\u30fc: \u30d0\u30f3\u30c9\u30e9\u30fc\u306f Rails \u306e\u4f9d\u5b58\u95a2\u4fc2\u7ba1\u7406\u30c4\u30fc\u30eb\u3067\u3059\u3002 Rails \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e Gems (\u30d7\u30e9\u30b0\u30a4\u30f3\u30e9\u30a4\u30d6\u30e9\u30ea) \u3092\u7ba1\u7406\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u6b63\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306e Gems \u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u8cac\u4efb\u304c\u3042\u308a\u307e\u3059\u3002 \u30d0\u30f3\u30c9\u30e9\u30fc\u306f\u3001Gemfile \u30d5\u30a1\u30a4\u30eb\u3068 Gemfile.lock \u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u7ba1\u7406\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>Rails \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb: Rails \u306f\u4e00\u9023\u306e\u751f\u6d3b\u3092\u63d0\u4f9b\u3057\u307e\u3059<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3001\u958b\u767a\u3001\u304a\u3088\u3073\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30b3\u30de\u30f3\u30c9 \u30c4\u30fc\u30eb\u3002 \u3053\u308c\u3089\u306e\u30b3\u30de\u30f3\u30c9 \u30e9\u30a4\u30f3 \u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u958b\u767a\u52b9\u7387\u304c\u5411\u4e0a\u3057\u3001\u3055\u307e\u3056\u307e\u306a\u30bf\u30b9\u30af\u304c\u7c21\u7565\u5316\u3055\u308c\u307e\u3059\u3002 \u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b Rails \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>rails new<\/code>: \u65b0\u3057\u3044 Rails \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>rails server<\/code>: Rails \u958b\u767a\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>rails generate<\/code>: \u30e2\u30c7\u30eb\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3001\u30d3\u30e5\u30fc\u3001\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306a\u3069\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>rails console<\/code>: \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u306e\u5bfe\u8a71\u306b\u4f7f\u7528\u3055\u308c\u308b Rails \u30b3\u30f3\u30bd\u30fc\u30eb\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>rails db:migrate<\/code>: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u3092\u5b9f\u884c\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u9020\u3092\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u540c\u671f\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>rails db:seed<\/code>: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30b7\u30fc\u30c9 \u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>rails test<\/code>: Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3002<\/li>\n\n\n\n<li><code>rails routes<\/code>: \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0 \u30c6\u30fc\u30d6\u30eb\u3092\u8868\u793a\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li>\u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3: \u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306f\u3001CSS\u3001JavaScript\u3001\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u306a\u3069\u306e\u9759\u7684\u30ea\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3059\u308b Rails \u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3059\u3002 \u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306f\u3001\u30ea\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3001\u5727\u7e2e\u3001\u7d50\u5408\u3057\u3066\u3001\u30da\u30fc\u30b8\u306e\u8aad\u307f\u8fbc\u307f\u901f\u5ea6\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306f Sass\u3084 CoffeeScript \u306a\u3069\u306e\u30d7\u30ea\u30d7\u30ed\u30bb\u30c3\u30b5\u3082\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u56fd\u969b\u5316 (I18n): Rails \u306b\u306f\u56fd\u969b\u5316\u30b5\u30dd\u30fc\u30c8\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u304a\u308a\u3001\u958b\u767a\u8005\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8907\u6570\u8a00\u8a9e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u65e2\u5b9a\u306e\u8a00\u8a9e\u3092\u6307\u5b9a\u3057\u3001\u7ffb\u8a33\u30d5\u30a1\u30a4\u30eb\u3092 YAML \u5f62\u5f0f\u306e\u30ed\u30fc\u30ab\u30ea\u30bc\u30fc\u30b7\u30e7\u30f3 \u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3067\u304d\u307e\u3059\u3002 Rails \u306b\u306f\u3001\u7ffb\u8a33\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u8868\u793a\u3057\u305f\u308a\u3001\u30d3\u30e5\u30fc\u306b\u65e5\u4ed8\u3084\u6642\u523b\u306a\u3069\u3092\u30ed\u30fc\u30ab\u30e9\u30a4\u30ba\u3057\u305f\u308a\u3059\u308b\u305f\u3081\u306e\u88dc\u52a9\u30e1\u30bd\u30c3\u30c9\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002<code>t<\/code><code>l<\/code><\/li>\n\n\n\n<li>\u30ad\u30e3\u30c3\u30b7\u30f3\u30b0: Rails \u306b\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306e\u30ad\u30e3\u30c3\u30b7\u30f3\u30b0\u30fb\u30e1\u30ab\u30cb\u30ba\u30e0\u304c\u3044\u304f\u3064\u304b\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u30ad\u30e3\u30c3\u30b7\u30e5\u30e1\u30ab\u30cb\u30ba\u30e0\u306b\u306f\u3001\u30da\u30fc\u30b8\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u30a2\u30af\u30b7\u30e7\u30f3\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u304a\u3088\u3073\u30c7\u30fc\u30bf\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u542b\u307e\u308c\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30cb\u30fc\u30ba\u306b\u57fa\u3065\u3044\u3066\u9069\u5207\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565\u3092\u9078\u629e\u3057\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30b9\u30c8\u30ec\u30fc\u30b8(\u30e1\u30e2\u30ea\u3001\u30d5\u30a1\u30a4\u30eb\u3001Memcached\u306a\u3069)\u3092\u69cb\u6210\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u6a5f\u80fd: Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u306f\u3001\u30af\u30ed\u30b9\u30b5\u30a4\u30c8\u30b9\u30af\u30ea\u30d7\u30c6\u30a3\u30f3\u30b0 (XSS)\u3001\u30af\u30ed\u30b9\u30b5\u30a4\u30c8\u30ea\u30af\u30a8\u30b9\u30c8\u30d5\u30a9\u30fc\u30b8\u30a7\u30ea (CSRF)\u3001SQL \u30a4\u30f3\u30b8\u30a7\u30af\u30b7\u30e7\u30f3\u306a\u3069\u306e\u4e00\u822c\u7684\u306a Web \u653b\u6483\u304b\u3089\u4fdd\u8b77\u3059\u308b\u305f\u3081\u306e\u3055\u307e\u3056\u307e\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u6a5f\u80fd\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u307e\u3059\u3002 Rails \u306f\u3001\u958b\u767a\u8005\u304c\u30bb\u30ad\u30e5\u30a2\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u3001\u30bb\u30ad\u30e5\u30a2\u30fb\u30bb\u30c3\u30b7\u30e7\u30f3\u7ba1\u7406\u3001\u6697\u53f7\u5316\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30fb\u30c8\u30fc\u30af\u30f3\u306a\u3069\u306e\u6a5f\u80fd\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u4e3b\u8981\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u6a5f\u80fd\u304c\u4e00\u7dd2\u306b\u306a\u3063\u3066Ruby on Rails\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u4e2d\u6838\u3092\u5f62\u6210\u3057\u3001\u958b\u767a\u8005\u304c\u6a5f\u80fd\u8c4a\u5bcc\u3067\u4fdd\u5b88\u304c\u5bb9\u6613\u306aWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u69cb\u7bc9\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u6a5f\u80fd\u3092\u5b66\u7fd2\u3057\u3066\u7fd2\u5f97\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306fRails\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u6700\u5927\u9650\u306b\u6d3b\u7528\u3057\u3066\u9ad8\u54c1\u8cea\u306eWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u5178\u578b\u7684\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b7\u30ca\u30ea\u30aaChatGPT\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Ruby on Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u3055\u307e\u3056\u307e\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u30b7\u30ca\u30ea\u30aa\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002 \u4e00\u822c\u7684\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 \u30b7\u30ca\u30ea\u30aa\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b3\u30f3\u30c6\u30f3\u30c4\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0(CMS):Rails\u3092\u4f7f\u7528\u3057\u3066\u3001\u6a5f\u80fd\u304c\u8c4a\u5bcc\u3067\u4f7f\u3044\u3084\u3059\u3044\u30b3\u30f3\u30c6\u30f3\u30c4\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001Rails \u304c\u63d0\u4f9b\u3059\u308b\u30e2\u30c7\u30eb\u3001\u30d3\u30e5\u30fc\u3001\u304a\u3088\u3073\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u3001\u8a18\u4e8b\u3001\u30da\u30fc\u30b8\u3001\u30e1\u30c7\u30a3\u30a2\u30fb\u30d5\u30a1\u30a4\u30eb\u306a\u3069\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002 \u3055\u3089\u306b\u3001Rails\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u30e9\u30a4\u30d6\u30e9\u30ea(Gems)\u306f\u3001Devise(\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c)\u3001CarrierWave(\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9)\u3001FriendlyId(\u30d5\u30ec\u30f3\u30c9\u30eaURL)\u306a\u3069\u3001CMS\u958b\u767a\u306e\u305f\u3081\u306e\u591a\u304f\u306e\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>E\u30b3\u30de\u30fc\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0:Rails\u306f\u3001\u5546\u54c1\u8868\u793a\u3001\u30b7\u30e7\u30c3\u30d4\u30f3\u30b0\u30ab\u30fc\u30c8\u3001\u6ce8\u6587\u7ba1\u7406\u3001\u652f\u6255\u3044\u51e6\u7406\u306a\u3069\u306e\u6a5f\u80fd\u3092\u53ef\u80fd\u306b\u3059\u308be\u30b3\u30de\u30fc\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u69cb\u7bc9\u306b\u6700\u9069\u3067\u3059\u3002 Rails\u306e\u8c4a\u5bcc\u306a\u30d7\u30e9\u30b0\u30a4\u30f3\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u3001\u6b21\u306e\u3088\u3046\u306ae\u30b3\u30de\u30fc\u30b9\u958b\u767a\u306e\u305f\u3081\u306e\u591a\u304f\u306e\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059 Spree \u53ca\u3073 Solidus\u3001\u3068\u308a\u308f\u3051\u3002<\/li>\n\n\n\n<li>\u30bd\u30fc\u30b7\u30e3\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30ad\u30f3\u30b0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3: Rails\u306f\u3001\u30de\u30a4\u30af\u30ed\u30d6\u30ed\u30b0\u3001\u30d5\u30a9\u30fc\u30e9\u30e0\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3Web\u30b5\u30a4\u30c8\u306a\u3069\u306e\u30bd\u30fc\u30b7\u30e3\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30ad\u30f3\u30b0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u958b\u767a\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001Rails\u306e\u95a2\u9023\u4ed8\u3051\u3001\u691c\u8a3c\u3001\u304a\u3088\u3073\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u6a5f\u80fd\u3092\u5229\u7528\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u767b\u9332\u3001\u30ed\u30b0\u30a4\u30f3\u3001\u6295\u7a3f\u3001\u30b3\u30e1\u30f3\u30c8\u306a\u3069\u3092\u884c\u3048\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3055\u3089\u306b\u3001Rails\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u30e1\u30fc\u30e9\u30fc\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u901a\u77e5\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u3068\u30a8\u30f3\u30b2\u30fc\u30b8\u30e1\u30f3\u30c8\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d6\u30ed\u30b0\u3068\u500b\u4eba\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8: Rails\u306f\u30d6\u30ed\u30b0\u3084\u500b\u4eba\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3092\u69cb\u7bc9\u3059\u308b\u306e\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001Rails \u304c\u63d0\u4f9b\u3059\u308b MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc\u3068\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30fb\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d6\u30ed\u30b0\u6295\u7a3f\u306e\u4f5c\u6210\u3001\u516c\u958b\u3001\u7ba1\u7406\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 Redcarpet(\u30de\u30fc\u30af\u30c0\u30a6\u30f3\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0)\u3084Will_paginate(\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3)\u306a\u3069\u306e\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306e\u5b9d\u77f3\u3092\u7d71\u5408\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3092\u7c21\u5358\u306b\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>RESTful API: Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001Web \u304a\u3088\u3073\u30e2\u30d0\u30a4\u30eb\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u30c7\u30fc\u30bf\u30fb\u30b5\u30fc\u30d3\u30b9\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306e RESTful \u30b9\u30bf\u30a4\u30eb\u306e API \u306e\u4f5c\u6210\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 Rails \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u3001\u8a8d\u8a3c\u3001\u304a\u3088\u3073\u627f\u8a8d\u6a5f\u80fd\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306f\u5b89\u5168\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a API \u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7ba1\u7406\u304a\u3088\u3073\u30b3\u30e9\u30dc\u30ec\u30fc\u30b7\u30e7\u30f3\u30c4\u30fc\u30eb: Rails\u3092\u4f7f\u7528\u3057\u3066\u3001\u30bf\u30b9\u30af\u8ffd\u8de1\u3001\u6642\u9593\u8ffd\u8de1\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u7ba1\u7406\u306a\u3069\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7ba1\u7406\u304a\u3088\u3073\u30b3\u30e9\u30dc\u30ec\u30fc\u30b7\u30e7\u30f3\u30c4\u30fc\u30eb\u3092\u958b\u767a\u3067\u304d\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001Rails \u306e MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u6a5f\u80fd\u3092\u5229\u7528\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30bf\u30b9\u30af\u3001\u30c1\u30fc\u30e0\u30fb\u30e1\u30f3\u30d0\u30fc\u306a\u3069\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30aa\u30f3\u30e9\u30a4\u30f3\u6559\u80b2\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0: Rails\u306f\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u6559\u80b2\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u69cb\u7bc9\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u30b3\u30fc\u30b9\u30ea\u30bd\u30fc\u30b9\u3001\u30d3\u30c7\u30aa\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u30c6\u30b9\u30c8\u306a\u3069\u306e\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001Rails\u306e\u30e2\u30c7\u30eb\u3001\u30d3\u30e5\u30fc\u3001\u304a\u3088\u3073\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u6a5f\u80fd\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30b3\u30fc\u30b9\u69cb\u9020\u306e\u8a2d\u8a08\u3001\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u3001\u5b66\u7fd2\u306e\u9032\u6357\u72b6\u6cc1\u306e\u8ffd\u8de1\u306a\u3069\u306e\u6a5f\u80fd\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u306e\u8996\u899a\u5316\u304a\u3088\u3073\u30ec\u30dd\u30fc\u30c8\u4f5c\u6210\u30b7\u30b9\u30c6\u30e0: Rails \u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u306e\u8996\u899a\u5316\u304a\u3088\u3073\u30ec\u30dd\u30fc\u30c8\u4f5c\u6210\u30b7\u30b9\u30c6\u30e0\u3092\u958b\u767a\u3057\u3001\u30c7\u30fc\u30bf\u306e\u53ce\u96c6\u3001\u5206\u6790\u3001\u304a\u3088\u3073\u8868\u793a\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001Rails\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30af\u30a8\u30ea\u6a5f\u80fd\u3068\u3001Chartkick\u3084Highcharts\u306a\u3069\u306e\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306e\u5b9d\u77f3\u3092\u5229\u7528\u3057\u3066\u3001\u3055\u307e\u3056\u307e\u306a\u30c1\u30e3\u30fc\u30c8\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30ec\u30dd\u30fc\u30c8\u306e\u751f\u6210\u3002 \u3053\u308c\u3089\u306e\u30c7\u30fc\u30bf\u8996\u899a\u5316\u304a\u3088\u3073\u30ec\u30dd\u30fc\u30c8\u4f5c\u6210\u30b7\u30b9\u30c6\u30e0\u306f\u3001\u30d3\u30b8\u30cd\u30b9\u5206\u6790\u3001\u5e02\u5834\u8abf\u67fb\u3001\u30c7\u30fc\u30bf\u76e3\u8996\u306a\u3069\u306e\u30b7\u30ca\u30ea\u30aa\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li>\u30e9\u30a4\u30d6\u30c1\u30e3\u30c3\u30c8\u304a\u3088\u3073\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3: Rails\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e9\u30a4\u30d6\u30c1\u30e3\u30c3\u30c8\u304a\u3088\u3073\u901a\u4fe1\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002 Rails\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u30b1\u30fc\u30d6\u30eb\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306f\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u304a\u3088\u3073\u901a\u77e5\u6a5f\u80fd\u3092\u7c21\u5358\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u9867\u5ba2\u30b5\u30fc\u30d3\u30b9\u3001\u30c1\u30fc\u30e0 \u30b3\u30e9\u30dc\u30ec\u30fc\u30b7\u30e7\u30f3\u3001\u30bd\u30fc\u30b7\u30e3\u30eb \u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u306a\u3069\u306e\u30b7\u30ca\u30ea\u30aa\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30e2\u30ce\u306e\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8(IoT)\u3068\u30c7\u30fc\u30bf\u51e6\u7406:Rails\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001IoT\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u30c7\u30fc\u30bf\u51e6\u7406\u30b7\u30b9\u30c6\u30e0\u306e\u958b\u767a\u306b\u3082\u9069\u3057\u3066\u3044\u307e\u3059\u3002 \u3055\u307e\u3056\u307e\u306a\u30c7\u30d0\u30a4\u30b9\u3084\u30bb\u30f3\u30b5\u30fc\u306b\u3088\u3063\u3066\u53ce\u96c6\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u7d71\u5408\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u958b\u767a\u8005\u306fRails\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u304a\u3088\u3073\u5206\u6790\u6a5f\u80fd\u3092\u5229\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3001\u51e6\u7406\u3001\u304a\u3088\u3073\u8868\u793a\u3067\u304d\u307e\u3059\u3002 \u3055\u3089\u306b\u3001Rails\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4ed6\u306e\u30c7\u30fc\u30bf\u51e6\u7406\u30c4\u30fc\u30eb(Apache Kafka\u3001Elasticsearch\u306a\u3069)\u3068\u7d71\u5408\u3057\u3066\u3001\u5927\u898f\u6a21\u306a\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u5206\u6790\u3092\u53ef\u80fd\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba\u5185\u90e8\u30b7\u30b9\u30c6\u30e0: Rails \u306f\u3001\u4eba\u4e8b\u7ba1\u7406\u3001\u8ca1\u52d9\u7ba1\u7406\u3001\u5728\u5eab\u7ba1\u7406\u306a\u3069\u306e\u5185\u90e8\u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba\u30fb\u30b7\u30b9\u30c6\u30e0\u306e\u958b\u767a\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001Rails \u306e MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u3001\u304a\u3088\u3073\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u6a5f\u80fd\u3092\u6d3b\u7528\u3057\u3066\u3001\u3055\u307e\u3056\u307e\u306a\u30d3\u30b8\u30cd\u30b9\u30fb\u30d7\u30ed\u30bb\u30b9\u3068\u30c7\u30fc\u30bf\u7ba1\u7406\u6a5f\u80fd\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002 \u3055\u3089\u306b\u3001Rails\u306e\u56fd\u969b\u5316\u30b5\u30dd\u30fc\u30c8\u306b\u3088\u308a\u3001\u4f01\u696d\u306f\u793e\u5185\u30b7\u30b9\u30c6\u30e0\u306e\u591a\u8a00\u8a9e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4e16\u754c\u4e2d\u306e\u5f93\u696d\u54e1\u306b\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b9\u30bf\u30fc\u30c8\u30a2\u30c3\u30d7\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30d7\u30ed\u30c8\u30bf\u30a4\u30d4\u30f3\u30b0:Rails\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u305d\u306e\u8fc5\u901f\u306a\u958b\u767a\u6a5f\u80fd\u3068\u8c4a\u5bcc\u306a\u30d7\u30e9\u30b0\u30a4\u30f3\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u3088\u308a\u3001\u30b9\u30bf\u30fc\u30c8\u30a2\u30c3\u30d7\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30d7\u30ed\u30c8\u30bf\u30a4\u30d4\u30f3\u30b0\u306b\u6700\u9069\u3067\u3059\u3002 \u958b\u767a\u8005\u306f\u3001\u5b8c\u5168\u306b\u6a5f\u80fd\u3059\u308bWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d7\u30ed\u30c8\u30bf\u30a4\u30d7\u3092\u3059\u3070\u3084\u304f\u4f5c\u6210\u3057\u3066\u3001\u88fd\u54c1\u306e\u30b3\u30f3\u30bb\u30d7\u30c8\u3068\u5e02\u5834\u306e\u8981\u4ef6\u3092\u691c\u8a3c\u3067\u304d\u307e\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u9032\u5316\u3059\u308b\u306b\u3064\u308c\u3066\u3001Rails\u306e\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3068\u30e2\u30b8\u30e5\u30e9\u30fc\u8a2d\u8a08\u306f\u3001\u3088\u308a\u8907\u96d1\u306a\u6a5f\u80fd\u3068\u8981\u4ef6\u306e\u5b9f\u88c5\u306b\u3082\u5f79\u7acb\u3061\u307e\u3057\u305f\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5178\u578b\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3051\u308bRuby on Rails\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u5e45\u5e83\u3044\u9069\u7528\u6027\u3068\u30d1\u30ef\u30fc\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002 Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u5b66\u7fd2\u3057\u3066\u7fd2\u5f97\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306f\u3055\u307e\u3056\u307e\u306a\u30d3\u30b8\u30cd\u30b9\u30cb\u30fc\u30ba\u3084\u30b7\u30ca\u30ea\u30aa\u306b\u5bfe\u5fdc\u3059\u308b\u9ad8\u54c1\u8cea\u3067\u4fdd\u5b88\u304c\u5bb9\u6613\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>ChatGPT\u306eRuby\u8a00\u8a9e\u7d39\u4ecb\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Ruby\u306f\u30011995\u5e74\u306b\u677e\u672c\u5e78\u5f18(\u3057\u3070\u3057\u3070Matz\u3068\u547c\u3070\u308c\u308b)\u306b\u3088\u3063\u3066\u767a\u660e\u3055\u308c\u305f\u52d5\u7684\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 Ruby\u306e\u8a2d\u8a08\u76ee\u6a19\u306f\u3001\u958b\u767a\u8005\u304c\u30b3\u30fc\u30c9\u3092\u8fc5\u901f\u304b\u3064\u52b9\u7387\u7684\u306b\u8a18\u8ff0\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u3001\u7c21\u6f54\u3067\u308f\u304b\u308a\u3084\u3059\u3044\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u3059\u3002 Ruby\u306e\u4e2d\u6838\u3068\u306a\u308b\u54f2\u5b66\u306e&lt;&gt;\u3064\u306f\u300c\u958b\u767a\u8005\u306e\u5e78\u798f\u300d\u3067\u3042\u308a\u3001\u958b\u767a\u8005\u306e\u751f\u7523\u6027\u3068\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u4f53\u9a13\u306e\u5411\u4e0a\u306b\u91cd\u70b9\u3092\u7f6e\u3044\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>Ruby\u8a00\u8a9e\u306e\u4e3b\u306a\u6a5f\u80fd\u3068\u5229\u70b9\u306e\u3044\u304f\u3064\u304b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411:Ruby\u306f\u7d14\u7c8b\u306b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3042\u308a\u3001\u305d\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u304c\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001Ruby\u306f\u512a\u308c\u305f\u30ab\u30d7\u30bb\u30eb\u5316\u3001\u7d99\u627f\u3001\u304a\u3088\u3073\u30dd\u30ea\u30e2\u30fc\u30d5\u30a3\u30ba\u30e0\u3092\u6301\u3061\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3055\u308c\u305f\u518d\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30fc\u30c9\u3092\u5b9f\u73fe\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u52d5\u7684\u578b\u4ed8\u3051: Ruby \u306f\u52d5\u7684\u306b\u578b\u4ed8\u3051\u3055\u308c\u308b\u8a00\u8a9e\u3067\u3042\u308a\u3001\u5909\u6570\u306e\u578b\u306f\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u3067\u306f\u306a\u304f\u5b9f\u884c\u6642\u306b\u6c7a\u5b9a\u3055\u308c\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001Ruby\u306f\u67d4\u8edf\u3067\u4f7f\u3044\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u304c\u3001\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u4f4e\u4e0b\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3:Ruby\u306b\u306f\u81ea\u52d5\u30e1\u30e2\u30ea\u7ba1\u7406\u3068\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u304c\u3042\u308a\u3001\u958b\u767a\u8005\u306f\u624b\u52d5\u30e1\u30e2\u30ea\u7ba1\u7406\u306e\u9762\u5012\u306a\u4f5c\u696d\u304b\u3089\u89e3\u653e\u3055\u308c\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3084\u30d7\u30ed\u30b0\u30e9\u30e0\u30af\u30e9\u30c3\u30b7\u30e5\u306e\u30ea\u30b9\u30af\u304c\u8efd\u6e1b\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u8aad\u307f\u3084\u3059\u3055:Ruby\u306e\u69cb\u6587\u306f\u7c21\u6f54\u3067\u76f4\u611f\u7684\u3067\u3001\u8aad\u307f\u3084\u3059\u304f\u7406\u89e3\u3057\u3084\u3059\u3044\u3067\u3059\u3002 Ruby\u306f\u3001\u30b3\u30fc\u30c9\u3092\u4eba\u9593\u306e\u8003\u3048\u65b9\u306b\u8fd1\u3065\u3051\u308b\u305f\u3081\u306b\u3001\u81ea\u7136\u8a00\u8a9e\u306e\u3088\u3046\u306a\u8868\u73fe\u306e\u4f7f\u7528\u3092\u63d0\u5531\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5f37\u529b\u306a\u30e1\u30bf\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u6a5f\u80fd:Ruby\u306b\u306f\u5f37\u529b\u306a\u30e1\u30bf\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u6a5f\u80fd\u304c\u3042\u308a\u3001\u5b9f\u884c\u6642\u306b\u30b3\u30fc\u30c9\u3092\u5909\u66f4\u3001\u62e1\u5f35\u3001\u304a\u3088\u3073\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001Ruby\u306fDSL(\u30c9\u30e1\u30a4\u30f3\u56fa\u6709\u8a00\u8a9e)\u3084\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af(Ruby on Rails\u306a\u3069)\u306a\u3069\u306e\u67d4\u8edf\u3067\u52d5\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u69cb\u7bc9\u3059\u308b\u306e\u306b\u7406\u60f3\u7684\u3067\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0:Ruby\u306b\u306f\u3001\u591a\u6570\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30ea\u30bd\u30fc\u30b9\u3092\u63d0\u4f9b\u3059\u308b\u5927\u898f\u6a21\u3067\u6d3b\u767a\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u3042\u308a\u307e\u3059\u3002 RubyGems\u306fRuby\u306e\u516c\u5f0f\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3067\u3042\u308a\u3001\u3055\u307e\u3056\u307e\u306a\u6a5f\u80fd\u3084\u8981\u4ef6\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306e\u30d7\u30e9\u30b0\u30a4\u30f3(Gems\u3068\u547c\u3070\u308c\u308b)\u306e\u5927\u898f\u6a21\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0:Ruby\u306f\u3001Windows\u3001macOS\u3001Linux\u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3067\u5b9f\u884c\u3055\u308c\u308b\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 Ruby\u306e\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306egem\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306f\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7c21\u5358\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u8c4a\u5bcc\u306a\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea:Ruby\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u64cd\u4f5c\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3001XML\u89e3\u6790\u3001\u6b63\u898f\u8868\u73fe\u3001\u305d\u306e\u4ed6\u306e\u95a2\u6570\u3092\u542b\u3080\u8c4a\u5bcc\u306a\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u958b\u767a\u8005\u306f\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u4f9d\u5b58\u3059\u308b\u3053\u3068\u306a\u304f\u3001\u591a\u304f\u306e\u4e00\u822c\u7684\u306a\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u8981\u3059\u308b\u306b\u3001Ruby\u306f\u5f37\u529b\u306a\u7cbe\u795e\u3067\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u5e45\u5e83\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306e\u305f\u3081\u306e\u30e9\u30a4\u30d6\u3067\u4f7f\u3044\u3084\u3059\u3044\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3002 Ruby \u306e\u5178\u578b\u7684\u306a\u4f7f\u7528\u4f8b\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a6\u30a7\u30d6\u958b\u767a: Ruby on Rails \u306a\u3069\u306e\u30a6\u30a7\u30d6\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306f\u6a5f\u80fd\u304c\u8c4a\u5bcc\u3067\u4fdd\u5b88\u304c\u5bb9\u6613\u306a\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3059\u3070\u3084\u304f\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b9\u30af\u30ea\u30d7\u30c8\u3068\u81ea\u52d5\u5316:Ruby\u306e\u7c21\u6f54\u306a\u69cb\u6587\u3068\u8c4a\u5bcc\u306a\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u3088\u308a\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u304a\u3088\u3073\u81ea\u52d5\u5316\u30c4\u30fc\u30eb\u306b\u6700\u9069\u3067\u3059\u3002 \u958b\u767a\u8005\u306fRuby\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d5\u30a1\u30a4\u30eb\u64cd\u4f5c\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30ea\u30af\u30a8\u30b9\u30c8\u3001\u30c7\u30fc\u30bf\u51e6\u7406\u306a\u3069\u306e\u30bf\u30b9\u30af\u3092\u7c21\u5358\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u3068\u7d99\u7d9a\u7684\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3: Ruby\u306f\u3001\u30c6\u30b9\u30c8\u3068\u7d99\u7d9a\u7684\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u5206\u91ce\u3067\u3082\u5e83\u304f\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002 Ruby \u306f\u3001\u5358\u4f53\u30c6\u30b9\u30c8\u3001\u7d71\u5408\u30c6\u30b9\u30c8\u3001\u6a5f\u80fd\u30c6\u30b9\u30c8\u3092\u8a18\u8ff0\u3059\u308b\u305f\u3081\u306e RSpec\u3001Minitest \u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u30c6\u30b9\u30c8 \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 Ruby \u306f\u3001\u81ea\u52d5\u5316\u3055\u308c\u305f\u30d3\u30eb\u30c9\u3001\u30c7\u30d7\u30ed\u30a4\u3001\u304a\u3088\u3073\u76e3\u8996\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u4f5c\u6210\u306b\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u5206\u6790\u3068\u79d1\u5b66\u8a08\u7b97:Ruby\u306b\u306f\u3001NArray(\u6570\u5024\u8a08\u7b97)\u3001RubyXL(Excel\u64cd\u4f5c)\u3001Darwin(\u907a\u4f1d\u7684\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0)\u306a\u3069\u3001\u30c7\u30fc\u30bf\u5206\u6790\u3068\u79d1\u5b66\u8a08\u7b97\u306e\u305f\u3081\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u3002 Ruby\u306f\u3053\u306e\u5206\u91ce\u3067\u306fPython\u306a\u3069\u306e\u4ed6\u306e\u8a00\u8a9e\u307b\u3069\u4eba\u6c17\u304c\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u305d\u308c\u3067\u3082\u4e00\u5b9a\u30ec\u30d9\u30eb\u306e\u9700\u8981\u3092\u6e80\u305f\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b2\u30fc\u30e0\u958b\u767a:Ruby\u306f\u30b2\u30fc\u30e0\u958b\u767a\u306e\u4e3b\u6d41\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u958b\u767a\u8005\u306fGosu\u306a\u3069\u306e\u30b2\u30fc\u30e0\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u3066Ruby\u3067\u7c21\u5358\u306a2D\u30b2\u30fc\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u7d44\u307f\u8fbc\u307f\u304a\u3088\u3073IoT:Ruby\u306f\u3001\u30c7\u30d0\u30a4\u30b9\u5236\u5fa1\u3001\u30c7\u30fc\u30bf\u53ce\u96c6\u3001\u51e6\u7406\u306a\u3069\u306e\u6a5f\u80fd\u306e\u305f\u3081\u306b\u3001\u8efd\u91cf\u306eRuby\u5b9f\u88c5\u3067\u3042\u308bMRuby\u3092\u4ecb\u3057\u3066\u7d44\u307f\u8fbc\u307f\u30b7\u30b9\u30c6\u30e0\u304a\u3088\u3073IoT\u30c7\u30d0\u30a4\u30b9\u4e0a\u3067\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u958b\u767a\u30c4\u30fc\u30eb\u3068IDE:Ruby\u306e\u30e1\u30bf\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u6a5f\u80fd\u306b\u3088\u308a\u3001\u958b\u767a\u30c4\u30fc\u30eb\u3068IDE\u306e\u69cb\u7bc9\u306b\u6700\u9069\u3067\u3059\u3002 \u305f\u3068\u3048\u3070\u3001RubyMine\u306f\u3001\u30b3\u30fc\u30c9\u7de8\u96c6\u3001\u30c7\u30d0\u30c3\u30b0\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306a\u3069\u3092\u63d0\u4f9b\u3059\u308b\u4eba\u6c17\u306e\u3042\u308bRuby\u304a\u3088\u3073Rails\u7d71\u5408\u958b\u767a\u74b0\u5883\u3067\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u5168\u4f53\u3068\u3057\u3066\u3001Ruby\u306f\u3001Web\u958b\u767a\u304b\u3089\u30c7\u30fc\u30bf\u5206\u6790\u307e\u3067\u3001\u5e45\u5e83\u3044\u30b7\u30ca\u30ea\u30aa\u3067\u5e83\u304f\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 Ruby\u306e\u7c21\u6f54\u3067\u76f4\u611f\u7684\u306a\u69cb\u6587\u3068\u5f37\u529b\u306a\u6a5f\u80fd\u306b\u3088\u308a\u3001\u958b\u767a\u8005\u306f\u3055\u307e\u3056\u307e\u306a\u30c9\u30e1\u30a4\u30f3\u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3059\u3070\u3084\u304f\u69cb\u7bc9\u304a\u3088\u3073\u4fdd\u5b88\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c7\u30fc\u30bf\u578b\u3068\u5909\u6570ChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Ruby\u3067\u306f\u3001\u30c7\u30fc\u30bf\u578b\u306f\u30c7\u30fc\u30bf\u306e\u6027\u8cea\u3068\u7279\u6027\u3092\u8a18\u8ff0\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u5206\u985e\u3067\u3059\u3002 Ruby\u306f\u3001\u6574\u6570\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3001\u6587\u5b57\u5217\u3001\u914d\u5217\u3001\u30cf\u30c3\u30b7\u30e5\u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 \u5909\u6570\u306f\u3001\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u304a\u3088\u3073\u53c2\u7167\u3059\u308b\u305f\u3081\u306e\u30b3\u30f3\u30c6\u30ca\u30fc\u3067\u3059\u3002 \u5909\u6570\u540d\u3068\u30c7\u30fc\u30bf\u5024\u306e\u95a2\u9023\u4ed8\u3051\u306f\u3001\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3068\u547c\u3070\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>Ruby \u306e\u4e3b\u306a\u30c7\u30fc\u30bf\u578b\u3068\u5909\u6570\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6570\u5024: \u6570\u5024\u306f\u3001\u6574\u6570\u3084\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u306a\u3069\u3001Ruby \u306e\u6700\u3082\u57fa\u672c\u7684\u306a\u30c7\u30fc\u30bf\u578b\u3067\u3059\u3002 \u6574\u6570\u306f\u3001\u7b26\u53f7\u4ed8\u304d\u6574\u6570(\u4f8b:-5\u30010\u300142)\u307e\u305f\u306f\u7b26\u53f7\u306a\u3057\u6574\u6570(\u4f8b:0x1f\u30010377)\u3067\u3042\u308a\u5f97\u308b\u3002 \u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u306f\u30013.14\u3001-0.5 \u306a\u3069\u306e\u5b9f\u6570\u3092\u8868\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u6587\u5b57\u5217: \u6587\u5b57\u5217\u306f\u3001\u30c6\u30ad\u30b9\u30c8 \u30c7\u30fc\u30bf\u3092\u8868\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u6587\u5b57\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3067\u3059\u3002 Ruby \u3067\u306f\u3001\u6587\u5b57\u5217\u3092\u4e00\u91cd\u5f15\u7528\u7b26 (&#8216;) \u307e\u305f\u306f\u4e8c\u91cd\u5f15\u7528\u7b26 (&#8220;) \u3067\u56f2\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u4e8c\u91cd\u5f15\u7528\u7b26\u6587\u5b57\u5217\u306f\u3001#{expression} \u3092\u4f7f\u7528\u3057\u3066\u633f\u5165\u3055\u308c\u308b\u6587\u5b57\u5217\u88dc\u9593\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b7\u30f3\u30dc\u30eb: \u30b7\u30f3\u30dc\u30eb\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u540d\u3084\u5909\u6570\u540d\u306a\u3069\u306e\u8b58\u5225\u5b50\u3092\u8868\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u8efd\u91cf\u3067\u4e0d\u5909\u306e\u6587\u5b57\u5217\u3067\u3059\u3002 \u30b7\u30f3\u30dc\u30eb\u306f\u3001\u30b3\u30ed\u30f3 (:) \u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066\u4f5c\u6210\u304a\u3088\u3073\u53c2\u7167\u3055\u308c\u307e\u3059\u3002<code>:hello<\/code><\/li>\n\n\n\n<li>\u914d\u5217:\u914d\u5217\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u7a2e\u985e\u306e\u30c7\u30fc\u30bf(\u6574\u6570\u3001\u6587\u5b57\u5217\u3001\u305d\u306e\u4ed6\u306e\u914d\u5217\u306a\u3069)\u3092\u683c\u7d0d\u3067\u304d\u308b\u8981\u7d20\u306e\u9806\u5e8f\u4ed8\u3051\u3089\u308c\u305f\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3067\u3059\u3002 \u914d\u5217\u8981\u7d20\u306b\u306f\u30010 \u304b\u3089\u59cb\u307e\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002 Ruby \u3067\u306f\u3001\u914d\u5217\u306f \u306e\u3088\u3046\u306b\u89d2\u62ec\u5f27 ([ ]) \u3092\u4f7f\u7528\u3057\u3066\u4f5c\u6210\u304a\u3088\u3073\u8868\u3055\u308c\u307e\u3059\u3002<code>[1, 2, \"hello\", :world]<\/code><\/li>\n\n\n\n<li>\u30cf\u30c3\u30b7\u30e5: \u30cf\u30c3\u30b7\u30e5\u306f\u30ad\u30fc\u3068\u5024\u306e\u30da\u30a2\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3067\u3042\u308a\u3001\u5404\u30ad\u30fc\u306f\u5024\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u3059\u3002 \u30cf\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30ad\u30fc\u306f\u4efb\u610f\u306e\u30c7\u30fc\u30bf\u578b\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u901a\u5e38\u306f\u8a18\u53f7\u307e\u305f\u306f\u6587\u5b57\u5217\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 Ruby \u3067\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u306f\u4e2d\u62ec\u5f27 ({ }) \u3092\u4f7f\u7528\u3057\u3066\u4f5c\u6210\u304a\u3088\u3073\u8868\u3055\u308c\u307e\u3059\u3002<code>{:name =&gt; \"Alice\", :age =&gt; 30}<\/code><code>{name: \"Alice\", age: 30}<\/code><\/li>\n\n\n\n<li>\u7bc4\u56f2: \u7bc4\u56f2\u306f\u5024\u306e\u9023\u7d9a\u3057\u305f\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u8868\u3057\u3001\u901a\u5e38\u306f\u6570\u5b57\u307e\u305f\u306f\u6587\u5b57\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u8868\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 Ruby \u3067\u306f\u3001\u7bc4\u56f2\u306f 10 \u3064\u306e\u30c9\u30c3\u30c8 (. ) \u307e\u305f\u306f 10 \u3064\u306e\u30c9\u30c3\u30c8 (&#8230;) )\u306f(&lt;&gt;\u3092\u542b\u3080)\u307e\u305f\u306f(&lt;&gt;\u3092\u9664\u304f)\u3092\u793a\u3059\u3002<code>1..10<\/code><code>1...10<\/code><\/li>\n\n\n\n<li>\u30d6\u30fc\u30eb\u5024: \u30d6\u30fc\u30eb\u5024\u306f true \u307e\u305f\u306f false \u3092\u8868\u3057\u3001\u6761\u4ef6\u307e\u305f\u306f\u8ad6\u7406\u5f0f\u306e\u7d50\u679c\u3092\u8868\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 Ruby\u3067\u306f\u3001\u30d6\u30fc\u30eb\u5024\u306e\u552f\u4e00\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u3059\u3002<code>true<\/code><code>false<\/code><\/li>\n\n\n\n<li>nil:Ruby\u306e\u7279\u5225\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3001\u300c\u5024\u306a\u3057\u300d\u307e\u305f\u306f\u300c\u7a7a\u300d\u3092\u610f\u5473\u3057\u307e\u3059\u3002 \u5909\u6570\u306b\u5024\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\u306b\u623b\u308a\u5024\u304c\u306a\u3044\u5834\u5408\u3001\u305d\u306e\u5024\u306f \u3067\u3059\u3002<code>nil<\/code><code>nil<\/code><\/li>\n<\/ol>\n\n\n\n<p>Ruby\u3067\u306f\u3001\u5909\u6570\u306e\u547d\u540d\u306f\u66f2\u304c\u308a\u304f\u306d\u3063\u305f\u547d\u540d\u6cd5(snake_case)\u306b\u5f93\u3044\u307e\u3059\u3001\u3064\u307e\u308a\u3001\u3059\u3079\u3066\u306e\u5358\u8a9e\u306f\u5c0f\u6587\u5b57\u3067\u3001\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2(_)\u3067\u533a\u5207\u3089\u308c\u307e\u3059\u3002 \u5f79\u5272\u306b\u5fdc\u3058\u3066<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Ruby\u306e\u30b9\u30b3\u30fc\u30d7\u3068\u547d\u540d\u898f\u5247\u3001\u5909\u6570\u306f\u3001\u6b21\u306e\u30ab\u30c6\u30b4\u30ea\u306b\u5206\u985e\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ed\u30fc\u30ab\u30eb\u5909\u6570: \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u306f\u3001\u305d\u308c\u3089\u3092\u5b9a\u7fa9\u3059\u308b\u30b3\u30fc\u30c9 \u30d6\u30ed\u30c3\u30af\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\u306b\u5236\u9650\u3055\u308c\u307e\u3059\u3002 \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u306f\u3001\u5c0f\u6587\u5b57\u307e\u305f\u306f\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2 (_) \u3067\u59cb\u307e\u308a\u307e\u3059 (\u3001 \u3084 \u306a\u3069)\u3002<code>name<\/code><code>age<\/code><code>_temporary<\/code><\/li>\n\n\n\n<li>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570: \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u3059\u3079\u3066\u306e\u30e1\u30bd\u30c3\u30c9\u9593\u3067\u5171\u6709\u3055\u308c\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u95a2\u3059\u308b\u72b6\u614b\u60c5\u5831\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306f\u3001 \u306a\u3069\u306e @ \u8a18\u53f7\u3067\u59cb\u307e\u308a\u307e\u3059\u3002<code>@name<\/code><code>@age<\/code><\/li>\n\n\n\n<li>\u30af\u30e9\u30b9\u5909\u6570: \u30af\u30e9\u30b9\u5909\u6570\u306f\u3001\u30af\u30e9\u30b9\u3068\u305d\u306e\u3059\u3079\u3066\u306e\u30b5\u30d6\u30af\u30e9\u30b9\u304a\u3088\u3073\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u9593\u3067\u5171\u6709\u3055\u308c\u307e\u3059\u3002 \u30af\u30e9\u30b9\u5909\u6570\u306f @@\u7b26\u53f7\u5f00\u5934 \u3067\u59cb\u307e\u308a\u307e\u3059\u3002<code>@@count<\/code><code>@@instances<\/code><\/li>\n\n\n\n<li>\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570: \u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u5168\u4f53\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002 \u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u306f\u3001 \u306e\u3088\u3046\u306b $ \u8a18\u53f7\u3067\u59cb\u307e\u308a\u307e\u3059\u3002 \u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u306f\u3001\u4e88\u671f\u3057\u306a\u3044\u526f\u4f5c\u7528\u3084\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u306e\u554f\u984c\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u4f7f\u7528\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002<code>$stdout<\/code><code>$stderr<\/code><\/li>\n\n\n\n<li>\u5b9a\u6570: \u5b9a\u6570\u306f\u3001\u30af\u30e9\u30b9\u540d\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u540d\u3001\u307e\u305f\u306f\u5909\u66f4\u3057\u3066\u306f\u306a\u3089\u306a\u3044\u305d\u306e\u4ed6\u306e\u5024\u306a\u3069\u3001\u5909\u66f4\u3055\u308c\u306a\u3044\u5024\u3092\u8868\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u5b9a\u6570\u306f\u3001 \u306a\u3069\u306e\u5927\u6587\u5b57\u3067\u59cb\u307e\u308a\u307e\u3059\u3002 Ruby\u3067\u306f\u3001\u5b9a\u6570\u306e\u5024\u306f\u5b9f\u969b\u306b\u5909\u66f4\u3067\u304d\u307e\u3059\u304c\u3001\u4e88\u671f\u3057\u306a\u3044\u526f\u4f5c\u7528\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u3053\u308c\u306f\u975e\u63a8\u5968\u306e\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3067\u3059\u3002<code>PI<\/code><code>EARTH_RADIUS<\/code><\/li>\n<\/ol>\n\n\n\n<p>Ruby \u306f\u52d5\u7684\u306b\u578b\u4ed8\u3051\u3055\u308c\u308b\u8a00\u8a9e\u3067\u3042\u308a\u3001\u5909\u6570\u306e\u578b\u306f\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u3067\u306f\u306a\u304f\u5b9f\u884c\u6642\u306b\u6c7a\u5b9a\u3055\u308c\u307e\u3059\u3002 \u3057\u305f\u304c\u3063\u3066\u3001\u5909\u6570\u306e\u578b\u3092\u660e\u793a\u7684\u306b\u5ba3\u8a00\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002 \u5909\u6570\u306b\u5024\u3092\u4ee3\u5165\u3059\u308b\u3068\u3001Ruby \u306f\u81ea\u52d5\u7684\u306b\u305d\u306e\u578b\u3092\u63a8\u6e2c\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>name = \"Alice\"        # \u5b57\u7b26\u4e32\u7c7b\u578b\nage = 30              # \u6574\u6570\u7c7b\u578b\nheight = 1.70         # \u6d6e\u70b9\u6570\u7c7b\u578b\nis_student = true     # \u5e03\u5c14\u7c7b\u578b\nhobbies = [\"reading\", \"traveling\"] # \u6570\u7ec4\u7c7b\u578b\n<\/code><\/pre>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Ruby\u3067\u306f\u3001\u30c7\u30fc\u30bf\u578b\u306f\u30c7\u30fc\u30bf\u306e\u6027\u8cea\u3068\u7279\u6027\u3092\u8a18\u8ff0\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u3001\u5909\u6570\u306f\u30c7\u30fc\u30bf\u306e\u683c\u7d0d\u3068\u53c2\u7167\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 Ruby\u306f\u3001\u6574\u6570\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3001\u6587\u5b57\u5217\u3001\u914d\u5217\u3001\u30cf\u30c3\u30b7\u30e5\u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 \u5909\u6570\u306f\u3001\u30b9\u30b3\u30fc\u30d7\u3068\u547d\u540d\u898f\u5247\u306b\u57fa\u3065\u3044\u3066\u3001\u30ed\u30fc\u30ab\u30eb\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3001\u30af\u30e9\u30b9\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u3001\u304a\u3088\u3073\u5b9a\u6570\u306b\u5206\u3051\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Ruby\u306e\u5236\u5fa1\u69cb\u9020\u3067\u3042\u308bChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u6559\u3048\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Ruby\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30d5\u30ed\u30fc\u5236\u5fa1\u3068\u8ad6\u7406\u5224\u65ad\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306e\u8c4a\u5bcc\u306a\u5236\u5fa1\u69cb\u9020\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 Ruby\u306e\u4e3b\u306a\u5236\u5fa1\u69cb\u9020\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6761\u4ef6: \u6761\u4ef6\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u30011 \u3064\u4ee5\u4e0a\u306e\u6761\u4ef6\u306b\u57fa\u3065\u3044\u3066\u7570\u306a\u308b\u30b3\u30fc\u30c9 \u30d6\u30ed\u30c3\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 Ruby \u306f\u3001\u306a\u3069\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<code>if<\/code><code>elsif<\/code><code>else<\/code><code>unless<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>if score &gt;= 90\n  puts \"Excellent\"\nelsif score &gt;= 80\n  puts \"Good\"\nelsif score &gt;= 60\n  puts \"Pass\"\nelse\n  puts \"Fail\"\nend\n<\/code><\/pre>\n\n\n\n<p><code>unless<\/code>\u4e00\u65b9\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u306f\u3001\u6761\u4ef6\u304c\u507d\u306e\u5834\u5408\u306b\u306e\u307f\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<code>if<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>unless temperature &lt; 20\n  puts \"It's warm outside.\"\nend\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u4e09\u9805\u6f14\u7b97\u5b50: \u4e09\u9805\u6f14\u7b97\u5b50\u306f\u30012 \u3064\u306e\u5024\u306e\u3044\u305a\u308c\u304b\u3092 1 \u884c\u3067\u6761\u4ef6\u4ed8\u304d\u3067\u8fd4\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u77ed\u7e2e\u5f62\u3067\u3059\u3002<code>? :<\/code><code>if...else<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>result = score &gt;= 60 ? \"Pass\" : \"Fail\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30eb\u30fc\u30d7:\u30eb\u30fc\u30d7\u306f\u3001\u7279\u5b9a\u306e\u6761\u4ef6\u304c\u6e80\u305f\u3055\u308c\u308b\u307e\u3067\u30b3\u30fc\u30c9\u3092\u7e70\u308a\u8fd4\u3057\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 Ruby \u306f\u3001\u3084 \u306a\u3069\u306e\u30eb\u30fc\u30d7\u69cb\u9020\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<code>while<\/code><code>until<\/code><code>for<\/code><\/li>\n<\/ol>\n\n\n\n<p><code>while<\/code>\u30eb\u30fc\u30d7\u306f\u3001\u6761\u4ef6\u304c\u771f\u306e\u5834\u5408\u306b\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u306e\u5b9f\u884c\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>count = 0\nwhile count &lt; 5\n  puts count\n  count += 1\nend\n<\/code><\/pre>\n\n\n\n<p><code>until<\/code>\u30eb\u30fc\u30d7\u306f\u3001\u6761\u4ef6\u304c\u507d\u306e\u5834\u5408\u306b\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u306e\u5b9f\u884c\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>count = 0\nuntil count == 5\n  puts count\n  count += 1\nend\n<\/code><\/pre>\n\n\n\n<p><code>for<\/code>\u30eb\u30fc\u30d7\u306f\u3001\u7bc4\u56f2\u307e\u305f\u306f\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u8d70\u67fb\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>for i in 1..5\n  puts i\nend\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30a4\u30c6\u30ec\u30fc\u30bf: \u30a4\u30c6\u30ec\u30fc\u30bf\u306f\u3001\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u53cd\u5fa9\u51e6\u7406\u3057\u305f\u308a\u3001\u53cd\u5fa9\u7684\u306a\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u305f\u308a\u3059\u308bRuby\u306e\u7279\u5225\u306a\u5236\u5fa1\u69cb\u9020\u3067\u3059\u3002 \u30a4\u30c6\u30ec\u30fc\u30bf\u306f\u3001\u30b3\u30fc\u30c9\u306e\u30d6\u30ed\u30c3\u30af(\u8868\u73fe\u307e\u305f\u306f\u8a18\u8ff0)\u3067\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<code>do...end<\/code><code>{...}<\/code><\/li>\n<\/ol>\n\n\n\n<p><code>each<\/code>\u306f\u3001\u914d\u5217\u307e\u305f\u306f\u30cf\u30c3\u30b7\u30e5\u3092\u53cd\u5fa9\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u6700\u3082\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30a4\u30c6\u30ec\u30fc\u30bf\u306e1\u3064\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>names = [\"Alice\", \"Bob\", \"Charlie\"]\nnames.each do |name|\n  puts name\nend\n<\/code><\/pre>\n\n\n\n<p><code>times<\/code>\u53cd\u5fa9\u5b50\u306f\u3001\u30b3\u30fc\u30c9\u306e\u4e00\u90e8\u3092\u6307\u5b9a\u3055\u308c\u305f\u56de\u6570\u7e70\u308a\u8fd4\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>5.times { puts \"Hello, world!\" }\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u4f8b\u5916\u51e6\u7406: \u4f8b\u5916\u51e6\u7406\u306f\u3001\u30cf\u30f3\u30c9\u30e9\u30fc\u306e\u64cd\u4f5c\u4e2d\u306b\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u30a8\u30e9\u30fc\u307e\u305f\u306f\u4f8b\u5916\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 Ruby \u306b\u306f\u3001\u3001 \u306a\u3069\u306e\u4f8b\u5916\u51e6\u7406\u7528\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002<code>begin<\/code><code>rescue<\/code><code>ensure<\/code><code>raise<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>begin\n  # \u53ef\u80fd\u5f15\u53d1\u5f02\u5e38\u7684\u4ee3\u7801\n  result = 1 \/ 0\nrescue ZeroDivisionError =&gt; e\n  # \u5904\u7406\u5f02\u5e38\u7684\u4ee3\u7801\n  puts \"Error: #{e.message}\"\nensure\n  # \u65e0\u8bba\u662f\u5426\u53d1\u751f\u5f02\u5e38\uff0c\u90fd\u4f1a\u6267\u884c\u7684\u4ee3\u7801\n  puts \"This code always runs.\"\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306fRuby\u306e\u4e3b\u306a\u3082\u306e\u3067\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u5236\u5fa1\u69cb\u9020\u3002 \u3053\u308c\u3089\u306e\u5236\u5fa1\u69cb\u9020\u3092\u7fd2\u5f97\u3059\u308b\u3053\u3068\u306f\u3001Ruby\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u66f8\u304f\u305f\u3081\u306b\u4e0d\u53ef\u6b20\u3067\u3059\u3002 \u4ee5\u4e0b\u3067\u306f\u3001\u4ed6\u306e\u4e00\u822c\u7684\u306a\u5236\u5fa1\u69cb\u9020\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li><code>case<\/code>Case \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8: \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u3001\u5f0f\u306e\u5024\u306b\u57fa\u3065\u3044\u3066\u3055\u307e\u3056\u307e\u306a\u30b3\u30fc\u30c9 \u30d6\u30ed\u30c3\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u3053\u308c\u306f\u3001\u4ed6\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306b\u4f3c\u3066\u3044\u307e\u3059\u3002<code>case<\/code><code>switch<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>grade = 'B'\ncase grade\nwhen 'A'\n  puts \"Excellent\"\nwhen 'B'\n  puts \"Good\"\nwhen 'C'\n  puts \"Pass\"\nelse\n  puts \"Fail\"\nend\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>\u30eb\u30fc\u30d7\u5236\u5fa1: Ruby \u306b\u306f\u3001 \u306a\u3069\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u304c\u7528\u610f\u3055\u308c\u3066\u304a\u308a\u3001\u30eb\u30fc\u30d7\u306e\u5b9f\u884c\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002<code>break<\/code><code>next<\/code><code>redo<\/code><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>break<\/code>: \u30eb\u30fc\u30d7\u3092\u7d42\u4e86\u3057\u3001\u30eb\u30fc\u30d7\u672c\u4f53\u304b\u3089\u98db\u3073\u51fa\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>next<\/code>: \u73fe\u5728\u306e\u30eb\u30fc\u30d7\u306e\u53cd\u5fa9\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u3001\u6b21\u306e\u53cd\u5fa9\u306b\u9032\u307f\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>redo<\/code>: \u73fe\u5728\u306e\u30eb\u30fc\u30d7\u53cd\u5fa9\u3092\u518d\u958b\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>for i in 1..10\n  break if i &gt; 5         # \u7ec8\u6b62\u5faa\u73af\uff0c\u53ea\u6253\u53701\u52305\n  puts i\nend\n\nfor i in 1..5\n  next if i % 2 == 0      # \u8df3\u8fc7\u5076\u6570\uff0c\u53ea\u6253\u5370\u5947\u6570\n  puts i\nend\n\ncount = 0\nwhile count &lt; 5\n  count += 1\n  retry_count = 0\n  begin\n    # \u53ef\u80fd\u5f15\u53d1\u5f02\u5e38\u7684\u4ee3\u7801\n    result = 1 \/ rand(-1..1)\n  rescue ZeroDivisionError\n    retry_count += 1\n    redo if retry_count &lt; 3 # \u91cd\u65b0\u5c1d\u8bd5\u5f53\u524d\u8fed\u4ee3\uff0c\u6700\u591a\u91cd\u8bd53\u6b21\n  end\n  puts result\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u3067\u306f\u3001\u6761\u4ef6\u6587\u3001\u4e09\u9805\u6f14\u7b97\u5b50\u3001\u30eb\u30fc\u30d7\u3001\u30a4\u30c6\u30ec\u30fc\u30bf\u3001\u4f8b\u5916\u51e6\u7406\u3001\u6587\u3001\u30eb\u30fc\u30d7\u5236\u5fa1\u306a\u3069\u3001Ruby\u306e\u4e3b\u306a\u5236\u5fa1\u69cb\u9020\u306e\u6982\u8981\u3092\u8aac\u660e\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u5236\u5fa1\u69cb\u9020\u306b\u7fd2\u719f\u3057\u3066\u3044\u308b\u3068\u3001\u3088\u308a\u52b9\u7387\u7684\u3067\u8aad\u307f\u3084\u3059\u304f\u3001\u67d4\u8edf\u306aRuby\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<code>case<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Ruby\u306e\u30e1\u30bd\u30c3\u30c9\u3068\u6a5f\u80fdChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u6559\u3048\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Ruby\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u306f\u7279\u5b9a\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u518d\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30fc\u30c9\u3067\u3059\u3002 \u901a\u5e38\u3001\u30e1\u30bd\u30c3\u30c9\u306b\u306f\u30ec\u30b7\u30fc\u30d0\u30fc (\u3064\u307e\u308a\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3059\u30aa\u30d6\u30b8\u30a7\u30af\u30c8) \u304c\u5fc5\u8981\u3067\u3059\u3002 Ruby\u306b\u306f\u3001\u3059\u3079\u3066\u306e\u30e1\u30bd\u30c3\u30c9\u304c\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u53b3\u5bc6\u306a\u95a2\u6570\u306f\u3042\u308a\u307e\u305b\u3093\u3002 \u307e\u305f\u3001Ruby\u30e1\u30bd\u30c3\u30c9\u3092\u8b70\u8ad6\u3059\u308b\u3068\u304d\u306b\u300c\u95a2\u6570\u300d\u3068\u3044\u3046\u8a00\u8449\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u304c\u3001\u5b9f\u969b\u306b\u306f\u540c\u3058\u6982\u5ff5\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e1\u30bd\u30c3\u30c9\u306e\u5b9a\u7fa9: Ruby \u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u30e1\u30bd\u30c3\u30c9\u540d\u306f\u3001\u66f2\u304c\u308a\u304f\u306d\u3063\u305f\u547d\u540d\u6cd5 (snake_case) \u306b\u5f93\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30e1\u30bd\u30c3\u30c9\u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u53d7\u3051\u53d6\u308a\u3001\u62ec\u5f27 () \u3067\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002<code>def<\/code><code>()<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>def say_hello(name)\n  puts \"Hello, #{name}!\"\nend\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3059: \u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u30af\u30e9\u30b9\u3092\u4ecb\u3057\u3066\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u306f\u30e1\u30a4\u30f3\u30aa\u30d6\u30b8\u30a7\u30af\u30c8()\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u304a\u308a\u3001\u76f4\u63a5\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<code>say_hello<\/code><code>main<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>say_hello(\"Alice\")\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u623b\u308a\u5024: \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u6700\u5f8c\u306e\u5f0f\u306e\u5024\u3092\u623b\u308a\u5024\u3068\u3057\u3066\u6697\u9ed9\u7684\u306b\u8fd4\u3057\u307e\u3059\u3002 \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u623b\u308a\u5024\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<code>return<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>def add(a, b)\n  return a + b\nend\n\nresult = add(2, 3) # result \u7684\u503c\u4e3a 5\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc: \u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30b3\u30f3\u30de () \u3067\u533a\u5207\u3089\u308c\u305f\u8907\u6570\u306e\u5f15\u6570\u3092\u53d7\u3051\u5165\u308c\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 Ruby \u306f\u3001\u6b21\u306e\u3088\u3046\u306a\u3055\u307e\u3056\u307e\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u578b\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<code>,<\/code><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5fc5\u9808\u5f15\u6570: \u6e21\u3059\u5fc5\u8981\u304c\u3042\u308b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3002<\/li>\n\n\n\n<li>\u65e2\u5b9a\u306e\u5f15\u6570: \u65e2\u5b9a\u5024\u3092\u6301\u3064\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3002 \u30e1\u30bd\u30c3\u30c9\u306e\u547c\u3073\u51fa\u3057\u6642\u306b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u65e2\u5b9a\u5024\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5909\u6570\u5f15\u6570: \u4efb\u610f\u306e\u6570\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u53d7\u3051\u5165\u308c\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066\u793a\u3055\u308c\u307e\u3059\u3002<code>*<\/code><\/li>\n\n\n\n<li>\u30ad\u30fc\u30ef\u30fc\u30c9\u5f15\u6570: \u30ad\u30fc\u3068\u5024\u306e\u30da\u30a2\u3092\u4f7f\u7528\u3057\u3066\u8868\u3055\u308c\u308b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3002 \u30ad\u30fc\u30ef\u30fc\u30c9 \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u65e2\u5b9a\u5024\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>def greet(name, greeting = \"Hello\")\n  puts \"#{greeting}, #{name}!\"\nend\n\ngreet(\"Alice\") # \u8f93\u51fa \"Hello, Alice!\"\ngreet(\"Alice\", \"Hi\") # \u8f93\u51fa \"Hi, Alice!\"\n\ndef sum(*numbers)\n  numbers.reduce(0, :+)\nend\n\nputs sum(1, 2, 3, 4, 5) # \u8f93\u51fa 15\n\ndef print_info(name:, age:, city: \"Unknown\")\n  puts \"Name: #{name}, Age: #{age}, City: #{city}\"\nend\n\nprint_info(name: \"Alice\", age: 30) # \u8f93\u51fa \"Name: Alice, Age: 30, City: Unknown\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u30e1\u30bd\u30c3\u30c9\u30a8\u30a4\u30ea\u30a2\u30b9: \u7570\u306a\u308b\u540d\u524d\u306e\u30e1\u30bd\u30c3\u30c9\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002 \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<code>alias<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>def greet(name)\n  puts \"Hello, #{name}!\"\nend\n\nalias say_hello greet\n\nsay_hello(\"Alice\") # \u8f93\u51fa \"Hello, Alice!\"\n<\/code><\/pre>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Ruby\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u306f\u7279\u5b9a\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u518d\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30fc\u30c9\u3067\u3059\u3002 \u30e1\u30bd\u30c3\u30c9\u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u53d7\u3051\u53d6\u308a\u3001\u623b\u308a\u5024\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 Ruby\u306f\u3001\u5fc5\u9808\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3001\u53ef\u5909\u500b\u5f15\u6570\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30bf\u30a4\u30d7\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3002 \u30e1\u30bd\u30c3\u30c9\u3068\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u578b\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001\u67d4\u8edf\u3067\u518d\u5229\u7528\u53ef\u80fd\u306a Ruby \u30b3\u30fc\u30c9\u3092\u8a18\u8ff0\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u30af\u30e9\u30b9\u30e1\u30bd\u30c3\u30c9: \u30af\u30e9\u30b9\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u306f\u306a\u304f\u3001\u30af\u30e9\u30b9\u81ea\u4f53\u3067\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002 \u30af\u30e9\u30b9\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u306b\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u540d\u306e\u524d\u306b\u30af\u30e9\u30b9\u540d\u3068\u30c9\u30c3\u30c8 () \u3092\u4ed8\u3051\u308b\u304b\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u30af\u30e9\u30b9\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u305b\u305a\u306b\u3001\u30af\u30e9\u30b9\u540d\u304b\u3089\u76f4\u63a5\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<code>.<\/code><code>self<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class Calculator\n  def self.add(a, b)\n    a + b\n  end\nend\n\nresult = Calculator.add(2, 3) # result \u7684\u503c\u4e3a 5\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb\u30e1\u30bd\u30c3\u30c9: \u30e2\u30b8\u30e5\u30fc\u30eb\u30e1\u30bd\u30c3\u30c9\u306f\u30af\u30e9\u30b9\u30e1\u30bd\u30c3\u30c9\u306b\u4f3c\u3066\u3044\u307e\u3059\u304c\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002 \u30e2\u30b8\u30e5\u30fc\u30eb\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u540d\u304b\u3089\u76f4\u63a5\u547c\u3073\u51fa\u3059\u3053\u3068\u3082\u3001\u4ed6\u306e\u30af\u30e9\u30b9\u306e OR \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u5c0e\u5165\u3057\u305f\u5f8c\u306b\u547c\u3073\u51fa\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<code>include<\/code><code>extend<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>module MathHelper\n  def self.square(x)\n    x * x\n  end\nend\n\nresult = MathHelper.square(4) # result \u7684\u503c\u4e3a 16\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30e1\u30bd\u30c3\u30c9:\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u307e\u305f\u306f\u30b5\u30d6\u30af\u30e9\u30b9\u304b\u3089\u3067\u306f\u306a\u304f\u3001\u30af\u30e9\u30b9\u5185\u3067\u306e\u307f\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u308b\u30e1\u30bd\u30c3\u30c9\u3067\u3059\u3002 \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e1\u30bd\u30c3\u30c9\u5b9a\u7fa9\u306e\u524d\u307e\u305f\u306f\u5f8c\u306b\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30e1\u30bd\u30c3\u30c9\u3092\u5ba3\u8a00\u3057\u307e\u3059\u3002<code>private<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class Person\n  def greet\n    puts \"Hello, my name is #{full_name}.\"\n  end\n\n  private\n\n  def full_name\n    \"Alice Smith\"\n  end\nend\n\nperson = Person.new\nperson.greet # \u8f93\u51fa \"Hello, my name is Alice Smith.\"\nperson.full_name # \u629b\u51fa NoMethodError\uff0c\u56e0\u4e3a full_name \u662f\u79c1\u6709\u65b9\u6cd5\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li>\u4fdd\u8b77\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9: \u4fdd\u8b77\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30d1\u30d6\u30ea\u30c3\u30af\u30e1\u30bd\u30c3\u30c9\u3068\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30e1\u30bd\u30c3\u30c9\u306e\u9593\u306e\u3069\u3053\u304b\u306b\u3042\u308a\u307e\u3059\u3002 \u30af\u30e9\u30b9\u5185\u307e\u305f\u306f\u30b5\u30d6\u30af\u30e9\u30b9\u5185\u3067\u306e\u307f\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u3001\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304b\u3089\u306f\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e1\u30bd\u30c3\u30c9\u5b9a\u7fa9\u306e\u524d\u307e\u305f\u306f\u5f8c\u306b\u4fdd\u8b77\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u3092\u5ba3\u8a00\u3057\u307e\u3059\u3002<code>protected<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class Animal\n  def describe\n    puts \"I am a #{species}.\"\n  end\n\n  protected\n\n  def species\n    \"unknown\"\n  end\nend\n\nclass Dog &lt; Animal\n  def bark\n    puts \"Woof! I am a #{species}.\"\n  end\nend\n\ndog = Dog.new\ndog.describe # \u8f93\u51fa \"I am a unknown.\"\ndog.bark # \u8f93\u51fa \"Woof! I am a unknown.\"\ndog.species # \u629b\u51fa NoMethodError\uff0c\u56e0\u4e3a species \u662f\u53d7\u4fdd\u62a4\u65b9\u6cd5\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u5b9a\u7fa9\u3001\u547c\u3073\u51fa\u3057\u3001\u623b\u308a\u5024\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u578b\u3001\u30af\u30e9\u30b9\u30e1\u30bd\u30c3\u30c9\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u30e1\u30bd\u30c3\u30c9\u3001\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30e1\u30bd\u30c3\u30c9\u3001\u30d7\u30ed\u30c6\u30af\u30c8\u30e1\u30bd\u30c3\u30c9\u306a\u3069\u3001Ruby\u30e1\u30bd\u30c3\u30c9\u3068\u95a2\u6570\u306e\u4e3b\u306a\u6982\u5ff5\u306e\u6982\u8981\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u6982\u5ff5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001\u3088\u308a\u52b9\u7387\u7684\u3067\u4fdd\u5b88\u3057\u3084\u3059\u304f\u3001\u62e1\u5f35\u53ef\u80fd\u306aRuby\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Ruby\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u6982\u5ff5\u3067\u3042\u308bChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Ruby\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0(OOP)\u8a00\u8a9e\u3067\u3042\u308a\u3001\u305d\u306e\u30b3\u30a2\u30b3\u30f3\u30bb\u30d7\u30c8\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u5185\u306e\u30c7\u30fc\u30bf\u3092\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306e\u30c7\u30fc\u30bf\u3068\u30e1\u30bd\u30c3\u30c9\u3092\u30ab\u30d7\u30bb\u30eb\u5316\u3059\u308b\u3053\u3068\u3067\u3059\u3002 \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3001\u4fdd\u5b88\u6027\u3001\u304a\u3088\u3073\u518d\u5229\u7528\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u3066\u3044\u307e\u3059\u3002 Ruby\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u4e3b\u8981\u306a\u6982\u5ff5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8:Ruby\u306e\u3059\u3079\u3066\u306f\u3001\u6570\u5024\u3001\u6587\u5b57\u5217\u3001\u914d\u5217\u306a\u3069\u3092\u542b\u3080\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3059\u3002 \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3001\u5c5e\u6027\u3068\u30e1\u30bd\u30c3\u30c9\u3092\u6301\u3064\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u3059\u3002<\/li>\n\n\n\n<li>\u30af\u30e9\u30b9: \u30af\u30e9\u30b9\u306f\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u9752\u5199\u771f\u3067\u3059\u3002 \u30af\u30e9\u30b9\u540d\u306f PascalCase \u306e\u547d\u540d\u6cd5\u306b\u5f93\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<code>class<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class Dog\n  # \u7c7b\u7684\u5b9a\u4e49\nend\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316: \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u306f\u3001\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3067\u3059\u3002 \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<code>new<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>dog = Dog.new\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u5c5e\u6027: \u30d7\u30ed\u30d1\u30c6\u30a3\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u72b6\u614b\u3067\u3042\u308a\u3001\u901a\u5e38\u306f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306e\u5f62\u5f0f\u3067\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306f 1 \u3064\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u59cb\u307e\u308a\u307e\u3059\u3002<code>@<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class Dog\n  def set_name(name)\n    @name = name\n  end\n\n  def get_name\n    @name\n  end\nend\n\ndog = Dog.new\ndog.set_name(\"Buddy\")\nputs dog.get_name # \u8f93\u51fa \"Buddy\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u30a2\u30af\u30bb\u30b5\u30fc \u30e1\u30bd\u30c3\u30c9: \u30a2\u30af\u30bb\u30b5\u30fc \u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u8aad\u307f\u53d6\u308a\u307e\u305f\u306f\u5909\u66f4\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 Ruby\u306f\u3001\u30a2\u30af\u30bb\u30b5\u30fc\u30e1\u30bd\u30c3\u30c9\u306e\u5b9a\u7fa9\u3092\u7c21\u7565\u5316\u3059\u308b\u305f\u3081\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<code>attr_reader<\/code><code>attr_writer<\/code><code>attr_accessor<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class Dog\n  attr_accessor :name\nend\n\ndog = Dog.new\ndog.name = \"Buddy\"\nputs dog.name # \u8f93\u51fa \"Buddy\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u30e1\u30bd\u30c3\u30c9:\u30e1\u30bd\u30c3\u30c9\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u52d5\u4f5c\u3067\u3042\u308a\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u5b9f\u884c\u3067\u304d\u308b\u64cd\u4f5c\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30af\u30e9\u30b9\u3067\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3082\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u5b9a\u7fa9\u3057\u3066\u30af\u30e9\u30b9\u306b\u5c0e\u5165\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u7d99\u627f: \u7d99\u627f\u306f\u3001\u30b5\u30d6\u30af\u30e9\u30b9\u304c\u89aa\u30af\u30e9\u30b9 (\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9) \u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u30e1\u30bd\u30c3\u30c9\u3092\u7d99\u627f\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u30b3\u30fc\u30c9\u518d\u5229\u7528\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3059\u3002 \u30b7\u30f3\u30dc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u7d99\u627f\u95a2\u4fc2\u3092\u8868\u3057\u307e\u3059\u3002<code>&lt;<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class Animal\n  def speak\n    \"...\"\n  end\nend\n\nclass Dog &lt; Animal\n  def speak\n    \"Woof!\"\n  end\nend\n\ndog = Dog.new\nputs dog.speak # \u8f93\u51fa \"Woof!\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb:\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u95a2\u9023\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u6574\u7406\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002 \u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u304c\u3001OR \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30af\u30e9\u30b9\u3092\u5c0e\u5165\u3067\u304d\u307e\u3059\u3002 \u30e2\u30b8\u30e5\u30fc\u30eb\u540d\u306f PascalCase \u306e\u547d\u540d\u6cd5\u306b\u5f93\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>include<\/code><code>extend<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>module Barkable\n  def bark\n    \"Woof!\"\n  end\nend\n\nclass Dog\n  include Barkable\nend\n\ndog = Dog.new\nputs dog.bark # \u8f93\u51fa \"Woof!\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li>\u30dd\u30ea\u30e2\u30fc\u30d5\u30a3\u30ba\u30e0:\u30dd\u30ea\u30e2\u30fc\u30d5\u30a3\u30ba\u30e0\u3068\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u30af\u30e9\u30b9\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u72ec\u81ea\u306e\u65b9\u6cd5\u3067\u30d5\u30a7\u30fc\u30ba\u306b\u5fdc\u7b54\u3059\u308b\u5834\u5408\u3067\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u540c\u3058\u30e1\u30c3\u30bb\u30fc\u30b8\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\u547c\u3073\u51fa\u3057\u3002 \u30dd\u30ea\u30e2\u30fc\u30d5\u30a3\u30ba\u30e0\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u91cd\u8981\u306a\u6a5f\u80fd\u3067\u3042\u308a\u3001\u30b3\u30fc\u30c9\u3092\u3088\u308a\u7528\u9014\u306e\u5e83\u3044\u62e1\u5f35\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class Animal\n  def speak\n    \"...\"\n  end\nend\n\nclass Dog &lt; Animal\n  def speak\n    \"Woof!\"\n  end\nend\n\nclass Cat &lt; Animal\n  def speak\n    \"Meow!\"\n  end\nend\n\ndef make_animal_speak(animal)\n  puts animal.speak\nend\n\ndog = Dog.new\ncat = Cat.new\n\nmake_animal_speak(dog) # \u8f93\u51fa \"Woof!\"\nmake_animal_speak(cat) # \u8f93\u51fa \"Meow!\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"10\">\n<li>\u30ab\u30d7\u30bb\u30eb\u5316: \u30ab\u30d7\u30bb\u30eb\u5316\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u5185\u306e\u5b9f\u88c5\u306e\u8a73\u7d30\u3092\u975e\u8868\u793a\u306b\u3057\u306a\u304c\u3089\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u72b6\u614b (\u30d7\u30ed\u30d1\u30c6\u30a3) \u3068\u52d5\u4f5c (\u30e1\u30bd\u30c3\u30c9) \u3092\u30d0\u30f3\u30c9\u30eb\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3067\u3059\u3002 \u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30e1\u30bd\u30c3\u30c9\u3084\u30d7\u30ed\u30c6\u30af\u30c8 \u30e1\u30bd\u30c3\u30c9\u306a\u3069\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30ab\u30d7\u30bb\u30eb\u5316\u3092\u5b9f\u88c5\u3057\u3066\u3001\u30b3\u30fc\u30c9\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u4fdd\u5b88\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class BankAccount\n  def initialize(balance)\n    @balance = balance\n  end\n\n  def deposit(amount)\n    update_balance(amount)\n  end\n\n  def withdraw(amount)\n    update_balance(-amount)\n  end\n\n  def balance\n    @balance\n  end\n\n  private\n\n  def update_balance(amount)\n    @balance += amount\n  end\nend\n\naccount = BankAccount.new(1000)\naccount.deposit(500)\naccount.withdraw(200)\nputs account.balance # \u8f93\u51fa 1300\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"11\">\n<li>\u30b3\u30f3\u30dd\u30b8\u30b7\u30e7\u30f3:\u30b3\u30f3\u30dd\u30b8\u30b7\u30e7\u30f3\u306f\u3001\u8907\u6570\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u8907\u96d1\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3067\u3059\u3002 \u30b3\u30f3\u30dd\u30b8\u30b7\u30e7\u30f3\u306f\u7d99\u627f\u3092\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u67d4\u8edf\u6027\u3068\u30b3\u30fc\u30c9\u306e\u518d\u5229\u7528\u6027\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class Engine\n  def start\n    \"Engine started.\"\n  end\nend\n\nclass Car\n  def initialize\n    @engine = Engine.new\n  end\n\n  def start_engine\n    @engine.start\n  end\nend\n\ncar = Car.new\nputs car.start_engine # \u8f93\u51fa \"Engine started.\"\n<\/code><\/pre>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Ruby\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u6982\u5ff5\u306b\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3001\u30af\u30e9\u30b9\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u3001\u30a2\u30af\u30bb\u30b5\u30fc\u30e1\u30bd\u30c3\u30c9\u3001\u30e1\u30bd\u30c3\u30c9\u3001\u7d99\u627f\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u3001\u30dd\u30ea\u30e2\u30fc\u30d5\u30a3\u30ba\u30e0\u3001\u30ab\u30d7\u30bb\u30eb\u5316\u3001\u304a\u3088\u3073\u5408\u6210\u304c\u542b\u307e\u308c\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u6982\u5ff5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001\u3088\u308a\u52b9\u7387\u7684\u3067\u8aad\u307f\u3084\u3059\u304f\u3001\u4fdd\u5b88\u3057\u3084\u3059\u3044Ruby\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001MVC\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u7d39\u4ecb\u3001ChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u3092\u7c21\u7d20\u5316\u3059\u308b\u305f\u3081\u306b\u8a2d\u8a08\u3055\u308c\u305fRuby\u3067\u66f8\u304b\u308c\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306eWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Rails \u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30fc\u30bf\u51e6\u7406\u3001\u30e6\u30fc\u30b6\u30fc\u30fb\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3001\u304a\u3088\u3073\u5236\u5fa1\u30ed\u30b8\u30c3\u30af\u3092\u5206\u96e2\u3059\u308b\u8a2d\u8a08\u30d1\u30bf\u30fc\u30f3\u3067\u3042\u308b MVC (\u30e2\u30c7\u30eb\u30fb\u30d3\u30e5\u30fc\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc) \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc\u306b\u5f93\u3044\u307e\u3059\u3002 \u6b21\u306b\u3001MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u7c21\u5358\u306a\u6982\u8981\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e2\u30c7\u30eb: \u30e2\u30c7\u30eb\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u8868\u3057\u3001\u30c7\u30fc\u30bf \u30b9\u30c8\u30ec\u30fc\u30b8\u3001\u30af\u30a8\u30ea\u3001\u66f4\u65b0\u3001\u304a\u3088\u3073\u524a\u9664\u306b\u95a2\u9023\u3059\u308b\u30ed\u30b8\u30c3\u30af\u306e\u51e6\u7406\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002 Rails\u3067\u306f\u3001\u30e2\u30c7\u30eb\u306f\u901a\u5e38\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c6\u30fc\u30d6\u30eb\u306b\u5bfe\u5fdc\u3057\u3001\u30c7\u30fc\u30bf\u306fRails\u306eORM\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3042\u308bActive Record\u3092\u4ecb\u3057\u3066\u6c38\u7d9a\u5316\u3055\u308c\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u306f\u3001\u30c7\u30fc\u30bf\u691c\u8a3c\u3001\u76f8\u95a2\u3001\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u51e6\u7406\u306a\u3069\u306e\u64cd\u4f5c\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4f8b:\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306e\u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u3092\u8868\u3059\u540d\u524d\u306e\u30e2\u30c7\u30eb\u304c\u3042\u308b\u3068\u3057\u307e\u3059\u3002<code>User<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class User &lt; ApplicationRecord\n  # \u6a21\u578b\u903b\u8f91\nend\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30d3\u30e5\u30fc: \u30d3\u30e5\u30fc\u306f\u30c7\u30fc\u30bf\u306e\u8868\u793a\u3092\u62c5\u5f53\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u5bfe\u8a71\u3059\u308b\u305f\u3081\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3067\u3059\u3002 \u30d3\u30e5\u30fc\u306b\u306f\u3001\u591a\u304f\u306e\u5834\u5408\u3001HTML\u3001CSS\u3001JavaScript \u306a\u3069\u306e\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9 \u30b3\u30fc\u30c9\u304c\u542b\u307e\u308c\u307e\u3059\u3002 Rails \u3067\u306f\u3001\u30d3\u30e5\u30fc\u306f ERB (\u57cb\u3081\u8fbc\u307f Ruby) \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3057\u3066\u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u306f\u3001\u30e2\u30c7\u30eb\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u30c7\u30fc\u30bf\u3092\u8868\u793a\u3057\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u4ecb\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u3092\u53d7\u3051\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4f8b: \u30e6\u30fc\u30b6\u30fc\u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3059\u308b\u30d3\u30e5\u30fc ()\u3002<code>index.html.erb<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>&lt;h1&gt;Users&lt;\/h1&gt;\n&lt;ul&gt;\n  &lt;% @users.each do |user| %&gt;\n    &lt;li&gt;&lt;%= user.name %&gt;&lt;\/li&gt;\n  &lt;% end %&gt;\n&lt;\/ul&gt;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc: \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u3001\u30e2\u30c7\u30eb\u3068\u30d3\u30e5\u30fc\u306e\u9593\u306e\u30b3\u30fc\u30c7\u30a3\u30cd\u30fc\u30bf\u30fc\u3067\u3042\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u8981\u6c42\u306e\u51e6\u7406\u3001\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u307e\u305f\u306f\u66f4\u65b0\u3059\u308b\u305f\u3081\u306e\u30e2\u30c7\u30eb\u64cd\u4f5c\u306e\u547c\u3073\u51fa\u3057\u3001\u304a\u3088\u3073\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u305f\u3081\u306b\u30c7\u30fc\u30bf\u3092\u30d3\u30e5\u30fc\u306b\u6e21\u3057\u307e\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u691c\u8a3c\u3068\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u30c1\u30a7\u30c3\u30af\u306e\u51e6\u7406\u3082\u62c5\u5f53\u3057\u307e\u3059\u3002 Rails\u3067\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u7279\u5b9a\u306eHTTP\u30ea\u30af\u30a8\u30b9\u30c8(GET\u3001POST\u306a\u3069)\u3092\u51e6\u7406\u3059\u308b\u300c\u30a2\u30af\u30b7\u30e7\u30f3\u300d\u3068\u547c\u3070\u308c\u308b\u4e00\u9023\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4f8b: \u30e6\u30fc\u30b6\u30fc\u95a2\u9023\u306e\u8981\u6c42\u3092\u51e6\u7406\u3059\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc ()\u3002<code>users_controller.rb<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class UsersController &lt; ApplicationController\n  def index\n    @users = User.all\n  end\n\n  def show\n    @user = User.find(params[:id])\n  end\n\n  # \u66f4\u591a\u64cd\u4f5c\nend\n<\/code><\/pre>\n\n\n\n<p>MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u4e3b\u306a\u5229\u70b9\u306f\u3001\u95a2\u5fc3\u306e\u5206\u96e2\u3092\u5b9f\u88c5\u3057\u3001\u958b\u767a\u8005\u304c\u30b3\u30fc\u30c9\u3092\u6574\u7406\u304a\u3088\u3073\u4fdd\u5b88\u3057\u3084\u3059\u304f\u306a\u308b\u3053\u3068\u3067\u3059\u3002 MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3067\u306f\u3001\u30c7\u30fc\u30bf\u51e6\u7406 (\u30e2\u30c7\u30eb)\u3001\u30e6\u30fc\u30b6\u30fc \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9 (\u30d3\u30e5\u30fc)\u3001\u304a\u3088\u3073\u5236\u5fa1\u30ed\u30b8\u30c3\u30af (\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc) \u3092\u5206\u96e2\u3059\u308b\u3053\u3068\u3067\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3001\u4fdd\u5b88\u6027\u3001\u304a\u3088\u3073\u62e1\u5f35\u6027\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Rails\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306fMVC\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u63a1\u7528\u3057\u3066\u304a\u308a\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30e2\u30c7\u30eb\u3001\u30d3\u30e5\u30fc\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e3\u3064\u306e\u90e8\u5206\u306b\u5206\u5272\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u306e\u8a2d\u8a08\u30d1\u30bf\u30fc\u30f3\u306f\u3001\u30b3\u30fc\u30c9\u306e\u7de8\u6210\u3092\u6539\u5584\u3057\u3001\u4fdd\u5b88\u3092\u5bb9\u6613\u306b\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001\u6b21\u306e\u3053\u3068\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3067\u306f\u3001Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u3088\u308a\u52b9\u679c\u7684\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 \u6b21\u306b\u3001Rails \u306e MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc\u306e\u3055\u307e\u3056\u307e\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0: \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u8981\u6c42\u3057\u305f URL \u3068\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30fb\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u9593\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u51e6\u7406\u3059\u308b Rails \u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3059\u3002 \u30e6\u30fc\u30b6\u30fc\u304c HTTP \u8981\u6c42\u3092\u884c\u3046\u3068\u3001Rails \u306f\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u306b\u57fa\u3065\u3044\u3066\u8981\u6c42\u3092\u51e6\u7406\u3059\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30fb\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002 \u30eb\u30fc\u30c8\u5b9a\u7fa9\u306f\u30d5\u30a1\u30a4\u30eb\u5185\u306b\u3042\u308a\u307e\u3059\u3002<code>config\/routes.rb<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u4f8b: \u5358\u7d14\u306a\u30e6\u30fc\u30b6\u30fc \u30ea\u30bd\u30fc\u30b9 \u30eb\u30fc\u30c8\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>Rails.application.routes.draw do\n  resources :users\nend\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u9020\u306e\u5909\u66f4\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306b Rails \u3067\u4f7f\u7528\u3055\u308c\u308b\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3059\u3002 \u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001\u30c6\u30fc\u30d6\u30eb\u69cb\u9020\u3092\u4f5c\u6210\u3001\u5909\u66f4\u3001\u307e\u305f\u306f\u524a\u9664\u3059\u308b Ruby \u30b3\u30fc\u30c9\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u9032\u5316\u306b\u5408\u308f\u305b\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u9020\u3092\u9032\u5316\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u79fb\u884c\u3067\u306f\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u3082\u5b9f\u88c5\u3067\u304d\u308b\u305f\u3081\u3001\u958b\u767a\u8005\u306f\u4ee5\u524d\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u9020\u306b\u7c21\u5358\u306b\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30ec\u30a4\u30a2\u30a6\u30c8\u3068\u30d1\u30fc\u30b7\u30e3\u30eb: \u30ec\u30a4\u30a2\u30a6\u30c8\u306f\u3001\u30d8\u30c3\u30c0\u30fc\u3001\u30d5\u30c3\u30bf\u30fc\u3001\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u306a\u3069\u306e\u30da\u30fc\u30b8\u306e\u5171\u6709\u8981\u7d20\u3092\u542b\u3080\u30d3\u30e5\u30fc \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u3042\u308a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u306b\u7d71\u4e00\u3055\u308c\u305f\u30eb\u30c3\u30af \u30a2\u30f3\u30c9 \u30d5\u30a3\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u90e8\u5206\u30d3\u30e5\u30fc\u306f\u3001\u4ed6\u306e\u30d3\u30e5\u30fc\u3067\u518d\u5229\u7528\u3067\u304d\u308b\u30b3\u30fc\u30c9\u3067\u3059\u3002 \u30ec\u30a4\u30a2\u30a6\u30c8\u3068\u90e8\u5206\u30d3\u30e5\u30fc\u306f\u3001\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u3092\u6e1b\u3089\u3057\u3001\u30d3\u30e5\u30fc\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30ea\u30bd\u30fc\u30b9\u3068 RESTful \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc: Rails \u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u500b\u3005\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u30ea\u30bd\u30fc\u30b9\u306b\u62bd\u8c61\u5316\u3057\u3066\u3001RESTful \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc\u3078\u306e\u6e96\u62e0\u3092\u5968\u52b1\u3057\u307e\u3059\u3002 \u30ea\u30bd\u30fc\u30b9\u306b\u306f\u6a19\u6e96\u306e CRUD \u64cd\u4f5c (\u4f5c\u6210\u3001\u8aad\u307f\u53d6\u308a\u3001\u66f4\u65b0\u3001\u524a\u9664) \u304c\u3042\u308a\u3001\u901a\u5e38\u306f GET\u3001POST\u3001PUT\/PATCH\u3001DELETE \u306a\u3069\u306e HTTP \u52d5\u8a5e\u3067\u8868\u3055\u308c\u307e\u3059\u3002 RESTful \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc\u306b\u5f93\u3046\u3053\u3068\u3067\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u7406\u89e3\u3068\u4fdd\u5b88\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30e0\u306e\u51e6\u7406\u3068\u691c\u8a3c: Rails \u306f\u3001\u30d5\u30a9\u30fc\u30e0\u30d8\u30eb\u30d1\u30fc\u3001\u30d5\u30a9\u30fc\u30e0\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3001\u30cd\u30b9\u30c8\u3055\u308c\u305f\u5c5e\u6027\u306a\u3069\u306e\u8c4a\u5bcc\u306a\u30d5\u30a9\u30fc\u30e0\u51e6\u7406\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u540c\u6642\u306b\u3001Rails\u306f\u30c7\u30fc\u30bf\u691c\u8a3c\u6a5f\u80fd\u3082\u63d0\u4f9b\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u3092\u30e2\u30c7\u30eb\u30ec\u30d9\u30eb\u3067\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u30c7\u30fc\u30bf\u306e\u6574\u5408\u6027\u3068\u6b63\u78ba\u6027\u3092\u78ba\u4fdd\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30fb\u30bf\u30b9\u30af\u3068\u975e\u540c\u671f\u51e6\u7406: Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u6642\u9593\u306e\u304b\u304b\u308b\u64cd\u4f5c\u3092\u6700\u9069\u5316\u3059\u308b\u305f\u3081\u306b\u3001\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30fb\u30b8\u30e7\u30d6\u3068\u975e\u540c\u671f\u51e6\u7406\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u64cd\u4f5c\u3092\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u306b\u79fb\u52d5\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5fdc\u7b54\u6027\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>Rails \u306e MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc\u3068\u305d\u306e\u95a2\u9023\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304a\u3088\u3073\u6982\u5ff5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3067 Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u3088\u308a\u52b9\u679c\u7684\u306b\u4f7f\u7528\u3057\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3001\u4fdd\u5b88\u5bb9\u6613\u6027\u3001\u304a\u3088\u3073\u62e1\u5f35\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3001Rails\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020ChatGPT\u3092\u7d39\u4ecb\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\u306f\u975e\u5e38\u306b\u660e\u78ba\u3067\u3088\u304f\u6574\u7406\u3055\u308c\u308b\u3088\u3046\u306b\u8a2d\u8a08\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u958b\u767a\u8005\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e\u3055\u307e\u3056\u307e\u306a\u7a2e\u985e\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u7c21\u5358\u306b\u898b\u3064\u3051\u3066\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002 Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30e1\u30a4\u30f3\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>app\/<\/code>: \u3053\u308c\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30a2\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u3001\u30e2\u30c7\u30eb\u3001\u30d3\u30e5\u30fc\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3001\u30d8\u30eb\u30d1\u30fc\u3001\u30e1\u30fc\u30e9\u30fc\u3001\u30a2\u30bb\u30c3\u30c8\u306a\u3069\u306e\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3001\u5404 MVC \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306b\u95a2\u9023\u3059\u308b\u30b3\u30fc\u30c9 \u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u6301\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>bin\/<\/code>: \u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u306f\u3001 \u306a\u3069\u306e\u30b3\u30de\u30f3\u30c9 \u30e9\u30a4\u30f3 \u30c4\u30fc\u30eb\u306a\u3069\u306e\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8d77\u52d5\u3001\u30bf\u30b9\u30af\u306e\u5b9f\u884c\u3001\u304a\u3088\u3073\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u7ba1\u7406\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<code>rails<\/code><code>rake<\/code><\/li>\n\n\n\n<li><code>config\/<\/code>: \u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u306f\u3001(\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u6210)\u3001(\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u69cb\u6210)\u3001(\u30b0\u30ed\u30fc\u30d0\u30eb\u69cb\u6210) \u306a\u3069\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u3053\u3067\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u3055\u307e\u3056\u307e\u306a\u8a2d\u5b9a\u3068\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u69cb\u6210\u3067\u304d\u307e\u3059\u3002<code>database.yml<\/code><code>routes.rb<\/code><code>application.rb<\/code><\/li>\n\n\n\n<li><code>db\/<\/code>: \u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3001\u79fb\u884c\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30b9\u30ad\u30fc\u30de \u30d5\u30a1\u30a4\u30eb (schema.rb)\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30b7\u30fc\u30c9 \u30d5\u30a1\u30a4\u30eb (seeds.rb) \u306a\u3069\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u95a2\u9023\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u9020\u3068\u30c7\u30fc\u30bf\u3092\u5b9a\u7fa9\u3001\u5909\u66f4\u3001\u304a\u3088\u3073\u521d\u671f\u5316\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>lib\/<\/code>: \u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3001\u30ab\u30b9\u30bf\u30e0\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30af\u30e9\u30b9\u3084\u62e1\u5f35\u30e1\u30bd\u30c3\u30c9\u306a\u3069\u3001MVC\u4ee5\u5916\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u30b3\u30fc\u30c9\u3092\u8a18\u8ff0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u305d\u308c\u3089\u3092\u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u914d\u7f6e\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>log\/<\/code>: \u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30ed\u30b0 \u30d5\u30a1\u30a4\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 Rails\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u884c\u60c5\u5831\u3001\u30a8\u30e9\u30fc\u3001\u8b66\u544a\u306a\u3069\u3092\u81ea\u52d5\u7684\u306b\u8a18\u9332\u3059\u308b\u305f\u3081\u3001\u958b\u767a\u8005\u306f\u554f\u984c\u3092\u8a3a\u65ad\u3057\u3066\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>public\/<\/code>:\u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u306f\u3001\u30a8\u30e9\u30fc\u30da\u30fc\u30b8\u3001favicon.ico\u306a\u3069\u306e\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7d4c\u7531\u305b\u305a\u306b\u3001Nginx\u3084Apache\u306a\u3069\u306eWeb\u30b5\u30fc\u30d0\u30fc\u306b\u3088\u3063\u3066\u76f4\u63a5\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>test\/<\/code>: \u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3001\u5358\u4f53\u30c6\u30b9\u30c8\u3001\u6a5f\u80fd\u30c6\u30b9\u30c8\u3001\u7d71\u5408\u30c6\u30b9\u30c8\u306a\u3069\u306e\u30c6\u30b9\u30c8 \u30b3\u30fc\u30c9\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 Rails \u3067\u306f\u3001\u30c6\u30b9\u30c8\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b89\u5b9a\u6027\u3068\u4fe1\u983c\u6027\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u90e8\u5206\u3067\u3059\u3002<\/li>\n\n\n\n<li><code>tmp\/<\/code>: \u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u30bb\u30c3\u30b7\u30e7\u30f3 \u30c7\u30fc\u30bf\u3001\u30ed\u30c3\u30af \u30d5\u30a1\u30a4\u30eb\u306a\u3069\u306e\u4e00\u6642\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u901a\u5e38\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u884c\u4e2d\u306b\u751f\u6210\u3055\u308c\u3001\u4e0d\u8981\u306a\u5834\u5408\u306f\u81ea\u52d5\u7684\u306b\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>vendor\/<\/code>: \u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3001JavaScript \u30e9\u30a4\u30d6\u30e9\u30ea\u3001CSS \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001Ruby \u30d7\u30e9\u30b0\u30a4\u30f3\u306a\u3069\u306e\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306e\u30b3\u30fc\u30c9\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u6700\u65b0\u306e Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u901a\u5e38\u3001Bundler \u3084 Yarn \u306a\u3069\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u7ba1\u7406\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u4f9d\u5b58\u95a2\u4fc2\u3092\u7ba1\u7406\u3057\u307e\u3059\u304c\u3001\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306e\u30b3\u30fc\u30c9\u3092\u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u76f4\u63a5\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>Gemfile<\/code>&nbsp;\u304a\u3088\u3073 : \u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a Rubygem \u3067\u3059\u3002<code>Gemfile.lock<\/code><code>Gemfile<\/code><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u4f7f\u7528\u3055\u308c\u308b gem \u306e\u6b63\u78ba\u306a\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u6587\u66f8\u5316\u3059\u308b\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3002 \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u305d\u308c\u306b\u57fa\u3065\u3044\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304a\u3088\u3073\u7ba1\u7406\u3057\u307e\u3059\u3002<code>Gemfile.lock<\/code><code>bundle install<\/code><code>Gemfile<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"12\">\n<li><code>config.ru<\/code>: \u3053\u308c\u306f Rack \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 Rack \u306f Ruby \u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3067\u3042\u308a\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u672c\u8cea\u7684\u306b Rack \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3059\u3002 \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3001Rack\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u69cb\u6210\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8d77\u52d5\u3067\u304d\u307e\u3059\u3002<code>config.ru<\/code><\/li>\n\n\n\n<li><code>Rakefile<\/code>: \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001Make\u306b\u4f3c\u305fRuby\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3067\u3042\u308bRake\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u30ab\u30b9\u30bf\u30e0\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b\u304b\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u3084\u30c6\u30b9\u30c8\u30e9\u30f3\u306a\u3069\u3001Rails\u304c\u63d0\u4f9b\u3059\u308b\u4e8b\u524d\u5b9a\u7fa9\u3055\u308c\u305f\u30bf\u30b9\u30af\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<code>Rakefile<\/code><\/li>\n\n\n\n<li><code>.gitignore<\/code>: \u3053\u308c\u306f\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u4e0b\u306b\u7f6e\u304f\u5fc5\u8981\u306e\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u3068\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3059\u308b Git \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 \u4e00\u822c\u306b\u3001\u30ed\u30b0 \u30d5\u30a1\u30a4\u30eb\u3001\u4e00\u6642\u30d5\u30a1\u30a4\u30eb\u3001\u304a\u3088\u3073 API \u30ad\u30fc\u3084\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u6210\u306a\u3069\u306e\u6a5f\u5bc6\u60c5\u5831\u306f\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306b\u542b\u3081\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/li>\n<\/ol>\n\n\n\n<p>Rails \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u69cb\u9020\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u52b9\u679c\u7684\u306b\u7de8\u6210\u304a\u3088\u3073\u7ba1\u7406\u3059\u308b\u305f\u3081\u306b\u91cd\u8981\u3067\u3059\u3002 \u5404\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u306f\u7279\u5b9a\u306e\u76ee\u7684\u3068\u6a5f\u80fd\u304c\u3042\u308a\u3001\u95a2\u9023\u3059\u308b\u30b3\u30fc\u30c9\u3068\u30ea\u30bd\u30fc\u30b9\u3092\u9069\u5207\u306a\u5834\u6240\u306b\u914d\u7f6e\u3057\u3066\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8aad\u307f\u3084\u3059\u3055\u3001\u4fdd\u5b88\u6027\u3001\u304a\u3088\u3073\u62e1\u5f35\u6027\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044: Rails\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30ebChatGPT\u306e\u7d39\u4ecb<\/p>\n\n\n\n<p>Rails \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3001\u958b\u767a\u3001\u304a\u3088\u3073\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u5f37\u529b\u306a\u30b3\u30de\u30f3\u30c9\u884c\u30c4\u30fc\u30eb\u306e\u30bb\u30c3\u30c8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30b3\u30de\u30f3\u30c9 \u30e9\u30a4\u30f3 \u30c4\u30fc\u30eb\u306f\u3001\u958b\u767a\u306e\u751f\u7523\u6027\u3092\u9ad8\u3081\u3001\u3055\u307e\u3056\u307e\u306a\u30bf\u30b9\u30af\u3092\u7c21\u7d20\u5316\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b Rails \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>rails new<\/code>: \u65b0\u3057\u3044 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u57fa\u672c\u7684\u306a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\u3068\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3092\u6301\u3064\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">arduinoCopy code<code>rails new my_app\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li><code>rails server<\/code>&nbsp;\u307e\u305f\u306f: Rails \u958b\u767a\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002 \u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u30ed\u30fc\u30ab\u30eb Web \u30b5\u30fc\u30d0\u30fc (\u65e2\u5b9a\u3067\u306f Puma \u304c\u4f7f\u7528\u3055\u308c\u307e\u3059) \u3092\u8d77\u52d5\u3057\u3066\u3001\u30d6\u30e9\u30a6\u30b6\u30fc\u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30d7\u30ec\u30d3\u30e5\u30fc\u304a\u3088\u3073\u30c6\u30b9\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<code>rails s<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>rails server\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><code>rails console<\/code>&nbsp;\u307e\u305f\u306f: Rails \u30b3\u30f3\u30bd\u30fc\u30eb\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002 \u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u4efb\u610f\u306e Ruby \u30b3\u30fc\u30c9\u3068 Rails \u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3067\u304d\u308b\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a Ruby \u74b0\u5883\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002 \u3053\u308c\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30d0\u30c3\u30b0\u3001\u30c6\u30b9\u30c8\u3001\u304a\u3088\u3073\u63a2\u7d22\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<code>rails c<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">javascriptCopy code<code>rails console\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li><code>rails generate<\/code>&nbsp;\u307e\u305f\u306f: \u30e2\u30c7\u30eb\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3001\u30d3\u30e5\u30fc\u3001\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3001\u30c6\u30b9\u30c8\u306a\u3069\u306e Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u30d3\u30eb\u30c9\u3057\u307e\u3059\u3002 \u3053\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30d5\u30a1\u30a4\u30eb\u3068\u30b3\u30fc\u30c9 \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u3059\u3070\u3084\u304f\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<code>rails g<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">sqlCopy code<code>rails generate model User\nrails generate controller Users\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li><code>rails destroy<\/code>: \u30b3\u30de\u30f3\u30c9\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u305f\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u524a\u9664\u3057\u307e\u3059\u3002 \u3053\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u4e0d\u8981\u306b\u306a\u3063\u305f\u30b3\u30fc\u30c9\u3084\u30d5\u30a1\u30a4\u30eb\u3092\u7c21\u5358\u306b\u5143\u306b\u623b\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<code>rails generate<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">sqlCopy code<code>rails destroy model User\nrails destroy controller Users\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li><code>rails db:migrate<\/code>: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 \u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u5185\u306e\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u30fb\u30d5\u30a1\u30a4\u30eb\u306b\u57fa\u3065\u3044\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u9020\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002<code>db\/migrate<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>rails db:migrate\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li><code>rails db:rollback<\/code>: \u6700\u65b0\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u3092\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3057\u307e\u3059\u3002 \u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u6700\u8fd1\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u9020\u306e\u5909\u66f4\u3092\u5143\u306b\u623b\u3059\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">sqlCopy code<code>rails db:rollback\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li><code>rails db:seed<\/code>: \u30d5\u30a1\u30a4\u30eb\u5185\u306e\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002 \u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30b7\u30fc\u30c9\u30c7\u30fc\u30bf\u3092\u521d\u671f\u5316\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<code>db\/seeds.rb<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>rails db:seed\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li><code>rails test<\/code>: \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 \u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8 \u30d5\u30a1\u30a4\u30eb\u3092\u5b9f\u884c\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b89\u5b9a\u6027\u3068\u4fe1\u983c\u6027\u3092\u78ba\u4fdd\u3057\u307e\u3059\u3002<code>test<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>rails test\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"10\">\n<li><code>rails routes<\/code>: \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u60c5\u5831\u3092\u8868\u793a\u3057\u307e\u3059\u3002 \u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u8a2d\u5b9a\u306e\u7406\u89e3\u3068\u30c7\u30d0\u30c3\u30b0\u306b\u5f79\u7acb\u3064\u3059\u3079\u3066\u306e\u5b9a\u7fa9\u6e08\u307f\u30eb\u30fc\u30c8\u3092\u51fa\u529b\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>rails routes\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306f Rails \u30b3\u30de\u30f3\u30c9\u884c\u30c4\u30fc\u30eb\u306e\u307b\u3093\u306e\u4e00\u4f8b\u3067\u3042\u308a\u3001\u5b9f\u969b\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u958b\u767a\u304a\u3088\u3073\u7ba1\u7406\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u4ed6\u306e\u591a\u304f\u306e\u30b3\u30de\u30f3\u30c9\u3068\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u7406\u89e3\u3057\u3066\u7fd2\u719f\u3059\u308b\u3053\u3068\u3067\u3001\u751f\u7523\u6027\u304c\u5411\u4e0a\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u3088\u308a\u7d30\u304b\u304f\u5236\u5fa1\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>RailsChatGPT\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u524d\u306b\u3001Ruby \u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 Rails\u306fRuby\u30d9\u30fc\u30b9\u306eWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308b\u305f\u3081\u3001\u6700\u521d\u306bRuby\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 Rails\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d71:Ruby\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/strong><\/p>\n\n\n\n<p>Ruby \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u524d\u306b\u3001\u30b7\u30b9\u30c6\u30e0\u306b\u6b21\u306e\u4f9d\u5b58\u95a2\u4fc2\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b3\u30f3\u30d1\u30a4\u30e9 (GCC \u306a\u3069)<\/li>\n\n\n\n<li>\u958b\u767a\u30c4\u30fc\u30eb\u30c1\u30a7\u30fc\u30f3(\u4f8b:<code>build-essential<\/code><\/li>\n\n\n\n<li>OpenSSL \u958b\u767a\u30e9\u30a4\u30d6\u30e9\u30ea<\/li>\n\n\n\n<li>\u30ea\u30fc\u30c9\u30e9\u30a4\u30f3\u958b\u767a\u30e9\u30a4\u30d6\u30e9\u30ea<\/li>\n\n\n\n<li>zlib \u958b\u767a\u30e9\u30a4\u30d6\u30e9\u30ea<\/li>\n<\/ul>\n\n\n\n<p>\u30b7\u30b9\u30c6\u30e0\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3001\u3053\u308c\u3089\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002 \u3055\u307e\u3056\u307e\u306a\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u306bRuby\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>macOS: \u81ea\u4f5c\u3092\u4f7f\u3063\u3066 Ruby \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002 \u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>brew install ruby<\/code><\/li>\n\n\n\n<li>Ubuntu\/Debian: APT \u3092\u4f7f\u3063\u3066 Ruby \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002 sql\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>sudo apt-get update sudo apt-get install ruby-full<\/code><\/li>\n\n\n\n<li>Windows:Ruby\u306e\u516c\u5f0fWeb\u30b5\u30a4\u30c8(<a href=\"https:\/\/rubyinstaller.org\/\">https:\/\/rubyinstaller.org\/<\/a>)\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066RubyInstaller\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30a6\u30a3\u30b6\u30fc\u30c9\u306b\u5f93\u3063\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d7 2: RubyGems \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/strong><\/p>\n\n\n\n<p>RubyGems \u306f gems \u3068\u547c\u3070\u308c\u308b Ruby \u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30c4\u30fc\u30eb\u3067\u3059\u3002 \u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001Ruby \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u306f\u81ea\u52d5\u7684\u306b RubyGems \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002 RubyGems \u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>gem -v\n<\/code><\/pre>\n\n\n\n<p>\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001RubyGems \u304c\u65e2\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u305d\u3046\u3067\u306a\u3044\u5834\u5408\u306f\u3001RubyGems\u306e\u516c\u5f0fWeb\u30b5\u30a4\u30c8(<a href=\"https:\/\/rubygems.org\/pages\/download\">https:\/\/rubygems.org\/pages\/download<\/a>)\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d73:\u30d0\u30f3\u30c9\u30e9\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u30d0\u30f3\u30c9\u30e9\u30fc\u306f\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30c4\u30fc\u30eb\u3067\u3059\u3002 \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d0\u30f3\u30c9\u30e9\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>gem install bundler\n<\/code><\/pre>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d7 4: \u30ec\u30fc\u30eb\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/strong><\/p>\n\n\n\n<p>\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3067 Rails \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>gem install rails\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u306b\u3088\u308a\u3001Rails\u3068\u305d\u306e\u3059\u3079\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30d7\u30ed\u30bb\u30b9\u306b\u306f\u6642\u9593\u304c\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066Rails\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>rails -v\n<\/code><\/pre>\n\n\n\n<p>\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001Rails\u304c\u6b63\u5e38\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u3053\u3068\u3092\u304a\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u308c\u3067\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4f5c\u6210\u3068\u958b\u767a\u3092\u958b\u59cb\u3067\u304d\u307e\u3059\u3002 \u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u65b0\u3057\u3044 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3057\u3001\u305d\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u958b\u767a\u30b5\u30fc\u30d0\u30fc\u3092\u958b\u59cb\u3057\u307e\u3059\u3002 Rails\u3092\u697d\u3057\u304f\u5b66\u307c\u3046!<code>rails new my_app<\/code><code>rails server<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8ChatGPT\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u65b0\u3057\u3044Rails\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\u306f\u975e\u5e38\u306b\u7c21\u5358\u3067\u3059\u3002 \u3053\u308c\u3089\u306e\u624b\u9806\u306b\u5f93\u3046\u3060\u3051\u3067\u3001\u65b0\u3057\u3044Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3059\u3070\u3084\u304f\u8d77\u52d5\u3057\u3066\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d71:\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u307e\u305f\u306f\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304f<\/strong><\/p>\n\n\n\n<p>\u307e\u305a\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3(\u30a6\u30a3\u30f3\u30c9\u30a6\u30ba)\u307e\u305f\u306f\u30bf\u30fc\u30df\u30ca\u30eb(macOS\u304a\u3088\u3073Linux)\u3092\u958b\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d72:\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5834\u6240\u3092\u9078\u629e\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u307e\u305f\u306f\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u3001\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u5834\u6240\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001&#8221;projects&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>cd \/path\/to\/your\/projects\/folder\n<\/code><\/pre>\n\n\n\n<p>\u5fc5\u305a\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u4e0a\u306e\u5b9f\u969b\u306e\u30d5\u30a9\u30eb\u30c0\u30fc \u30d1\u30b9\u306b\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d7 3: \u65b0\u3057\u3044 Rails \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u65b0\u3057\u3044 Rails \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">arduinoCopy code<code>rails new project_name\n<\/code><\/pre>\n\n\n\n<p>&#8220;project_name&#8221; \u3092\u4efb\u610f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u306f\u3001\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\u3067\u533a\u5207\u3089\u308c\u305f\u77ed\u3044\u8aac\u660e\u7684\u306a\u5358\u8a9e\u307e\u305f\u306f\u30d5\u30ec\u30fc\u30ba\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">arduinoCopy code<code>rails new my_blog_app\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u306b\u3088\u308a\u3001\u300cmy_blog_app\u300d\u3068\u3044\u3046\u65b0\u3057\u3044Rails\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002 Rails \u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5fc5\u8981\u306a gem \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u81ea\u52d5\u7684\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u305f\u3081\u3001\u4f5c\u6210\u30d7\u30ed\u30bb\u30b9\u306b\u306f\u6570\u79d2\u304b\u3089\u6570\u5206\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d74:\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u307e\u3059<\/strong><\/p>\n\n\n\n<p>\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u305f\u3089\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u307e\u305f\u306f\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>cd project_name\n<\/code><\/pre>\n\n\n\n<p>&#8220;project_name&#8221; \u3092\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d7 5: \u958b\u767a\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u65b0\u3057\u3044 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30d7\u30ec\u30d3\u30e5\u30fc\u3057\u3066\u30c6\u30b9\u30c8\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u958b\u767a\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>rails server\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30ab\u30eb \u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u958b\u767a\u30b5\u30fc\u30d0\u30fc\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002 \u30b5\u30fc\u30d0\u30fc\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30dd\u30fc\u30c8 3000 \u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u624b\u9806 6: \u65b0\u3057\u3044\u30a2\u30a4\u30c6\u30e0\u3092\u78ba\u8a8d\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u958b\u767a\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u305f\u3089\u3001Web \u30d6\u30e9\u30a6\u30b6\u30fc\u3067\u6b21\u306e URL \u3092\u958b\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">arduinoCopy code<code>http:\/\/localhost:3000\n<\/code><\/pre>\n\n\n\n<p>&#8220;\u30a4\u30a7\u30fc\u30a4! \u3042\u306a\u305f\u306f\u30ec\u30fc\u30eb\u306b\u4e57\u3063\u3066\u3044\u307e\u3059!\u300d \u30a6\u30a7\u30eb\u30ab\u30e0\u30da\u30fc\u30b8\u306e\u3002 \u3053\u308c\u306f\u3001\u65b0\u3057\u3044 Rails \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u6b63\u5e38\u306b\u4f5c\u6210\u304a\u3088\u3073\u5b9f\u884c\u3055\u308c\u305f\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6b21\u306b\u3001\u30b3\u30fc\u30c9\u306e\u8a18\u8ff0\u3001\u6a5f\u80fd\u306e\u8ffd\u52a0\u3001\u304a\u3088\u3073\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306e Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u69cb\u7bc9\u3092\u958b\u59cb\u3067\u304d\u307e\u3059\u3002 \u30cf\u30c3\u30d4\u30fc\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0!<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9ChatGPT\u306e\u8a2d\u5b9a\u65b9\u6cd5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u69cb\u6210\u306f\u975e\u5e38\u306b\u7c21\u5358\u3067\u3059\u3002 Rails\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067SQLite\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f7f\u7528\u3057\u307e\u3059\u304c\u3001\u3053\u308c\u306f\u901a\u5e38\u3001\u958b\u767a\u74b0\u5883\u3084\u5c0f\u898f\u6a21\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306f\u5341\u5206\u3067\u3059\u3002 \u305f\u3060\u3057\u3001\u672c\u756a\u74b0\u5883\u3084\u5927\u898f\u6a21\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001MySQL\u3084PostgreSQL\u306a\u3069\u306e\u4ed6\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u69cb\u6210\u3059\u308b\u65b9\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d7 1: Gemfile \u3092\u66f4\u65b0\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u307e\u305a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e Gemfile \u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 gem \u3092\u8ffd\u52a0\u307e\u305f\u306f\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308b\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304d\u3001\u9069\u5207\u306a\u5909\u66f4\u3092\u52a0\u3048\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001MySQL \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001Gemfile \u306b\u4ee5\u4e0b\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>Gemfile<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>gem 'mysql2', '~&gt; 0.5'\n<\/code><\/pre>\n\n\n\n<p>PostgreSQL\u306e\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>gem 'pg', '~&gt; 1.2'\n<\/code><\/pre>\n\n\n\n<p>\u5b8c\u4e86\u3057\u305f\u3089\u3001Gemfile \u3092\u4fdd\u5b58\u3057\u3066\u9589\u3058\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d7 2: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 gem \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u307e\u305f\u306f\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u65b0\u3057\u3044\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 gem \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>bundle install\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u306b\u3088\u308a\u3001Gemfile\u306e\u66f4\u65b0\u306b\u57fa\u3065\u3044\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f9d\u5b58\u95a2\u4fc2\u304c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u304a\u3088\u3073\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d7 3: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3092\u66f4\u65b0\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u6b21\u306b\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3092\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304d\u3001\u958b\u767a\u74b0\u5883\u3001\u30c6\u30b9\u30c8\u74b0\u5883\u3001\u304a\u3088\u3073\u904b\u7528\u74b0\u5883\u306e\u69cb\u6210\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u898b\u3064\u3051\u307e\u3059\u3002<code>config\/database.yml<\/code><\/p>\n\n\n\n<p>\u9069\u5207\u306a\u30a2\u30c0\u30d7\u30bf\u540d\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\u3001\u30e6\u30fc\u30b6\u30fc\u540d\u3001\u304a\u3088\u3073\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a\u306b\u66f4\u65b0\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001MySQL \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u5834\u5408\u3001\u6b21\u306e\u3088\u3046\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002<code>config\/database.yml<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">yamlCopy code<code>default: &amp;default\n  adapter: mysql2\n  encoding: utf8mb4\n  pool: &lt;%= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } %&gt;\n  username: your_mysql_username\n  password: your_mysql_password\n  host: your_mysql_host\n  port: your_mysql_port\n\ndevelopment:\n  &lt;&lt;: *default\n  database: your_app_development\n\ntest:\n  &lt;&lt;: *default\n  database: your_app_test\n\nproduction:\n  &lt;&lt;: *default\n  database: your_app_production\n<\/code><\/pre>\n\n\n\n<p>PostgreSQL \u306e\u5834\u5408\u3001\u540c\u69d8\u306e\u5909\u66f4\u3092\u52a0\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">yamlCopy code<code>default: &amp;default\n  adapter: postgresql\n  encoding: unicode\n  pool: &lt;%= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } %&gt;\n  username: your_postgres_username\n  password: your_postgres_password\n  host: your_postgres_host\n  port: your_postgres_port\n\ndevelopment:\n  &lt;&lt;: *default\n  database: your_app_development\n\ntest:\n  &lt;&lt;: *default\n  database: your_app_test\n\nproduction:\n  &lt;&lt;: *default\n  database: your_app_production\n<\/code><\/pre>\n\n\n\n<p>\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306f\u5fc5\u305a\u5b9f\u969b\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a\u306b\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u9589\u3058\u307e\u3059\u3002<code>config\/database.yml<\/code><\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d7 4: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u307e\u305f\u306f\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u30d5\u30a1\u30a4\u30eb\u5185\u306e\u69cb\u6210\u306b\u57fa\u3065\u3044\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<code>config\/database.yml<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">luaCopy code<code>rails db:create\n<\/code><\/pre>\n\n\n\n<p>\u554f\u984c\u304c\u306a\u3051\u308c\u3070\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u6b63\u5e38\u306b\u4f5c\u6210\u3055\u308c\u305f\u3053\u3068\u3092\u793a\u3059\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u6642\u70b9\u3067\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u6b63\u5e38\u306b\u69cb\u6210\u3055\u308c\u307e\u3057\u305f\u3002 \u6b21\u306b\u3001Rails\u306e\u30a2\u30af\u30c6\u30a3\u30d6\u30ec\u30b3\u30fc\u30c9\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u3001<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u3053\u306e\u4f1a\u8a71\u3067\u4f7f\u7528\u3055\u308c\u305f\u4ee5\u524d\u306e\u30e2\u30c7\u30eb\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u6700\u65b0\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30e2\u30c7\u30eb\u306b\u5207\u308a\u66ff\u3048\u307e\u3057\u305f\u30c1\u30e3\u30c3\u30c8GPT<\/p>\n\n\n\n<p>\u30af\u30a8\u30ea\u3001\u30ec\u30b3\u30fc\u30c9\u306e\u4f5c\u6210\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u64cd\u4f5c\u3002 MongoDB \u3084 Redis \u306a\u3069\u306e\u4ed6\u306e\u7a2e\u985e\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u540c\u69d8\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u69cb\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5b9f\u884c\u65b9\u6cd5\u3068ChatGPT\u306e\u30c6\u30b9\u30c8\u65b9\u6cd5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5b9f\u884c<\/strong><\/p>\n\n\n\n<p>Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u5f93\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30bf\u30fc\u30df\u30ca\u30eb\u307e\u305f\u306f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u958b\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001Rails \u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002 \u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>rails server<\/code><\/li>\n\n\n\n<li>\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u30b5\u30fc\u30d0\u30fc\u306f\u30dd\u30fc\u30c8 3000 \u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002 \u30d6\u30e9\u30a6\u30b6\u30fc\u306b\u6b21\u306e URL \u3092\u5165\u529b\u3057\u3066\u3001\u30a2\u30d7\u30ea\u3092\u30d7\u30ec\u30d3\u30e5\u30fc\u3057\u307e\u3059\u3002 arduino\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b \u5225\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u30dd\u30fc\u30c8\u756a\u53f7\u3092\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002<code>http:\/\/localhost:3000<\/code><\/li>\n<\/ol>\n\n\n\n<p><strong>\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b<\/strong><\/p>\n\n\n\n<p>Rails \u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u624b\u9806\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30bf\u30fc\u30df\u30ca\u30eb\u307e\u305f\u306f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u958b\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 bashCopy \u30b3\u30fc\u30c9 \u307e\u305f\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u7279\u5b9a\u306e\u30c6\u30b9\u30c8 \u30d5\u30a1\u30a4\u30eb\u3092\u5b9f\u884c\u3057\u307e\u3059: bashCopy \u30b3\u30fc\u30c9\u3067\u3001&#8221;path\/to\/test\/file_test.rb&#8221; \u3092\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u5b9f\u969b\u306e\u30d5\u30a1\u30a4\u30eb \u30d1\u30b9\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002<code>rails test&nbsp;<\/code><code>rails test path\/to\/test\/file_test.rb<\/code><\/li>\n\n\n\n<li>Rails \u306f\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u3001\u7d50\u679c\u3092\u51fa\u529b\u3057\u307e\u3059\u3002 \u30c6\u30b9\u30c8\u306b\u5408\u683c\u3059\u308b\u3068\u3001\u7dd1\u8272\u306e\u70b9\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 \u30c6\u30b9\u30c8\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u306f\u3001\u8d64\u3044 F \u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 yamlCopy \u30b3\u30fc\u30c9\u306e\u4e0a\u8a18\u306e\u51fa\u529b\u306f\u30012 \u3064\u306e\u30c6\u30b9\u30c8\u304c\u3042\u308a\u3001\u6700\u521d\u306e\u30c6\u30b9\u30c8\u304c\u5931\u6557\u3057\u30012 \u756a\u76ee\u306e\u30c6\u30b9\u30c8\u304c\u5408\u683c\u3059\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002 \u30c6\u30b9\u30c8\u306e\u5b9f\u884c\u6642\u306b\u3088\u308a\u8a73\u7d30\u306a\u60c5\u5831\u3092\u51fa\u529b\u3059\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<code>F. Failures: 1) test_example(ExampleTest) Failure\/Error: assert_equal 2, 1 + 1 Expected: 2 Actual: 3&nbsp;<\/code><code>rails test --verbose<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306f\u3001\u6b63\u3057\u3044\u74b0\u5883\u3067\u5b9f\u884c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u305f\u3068\u3048\u3070\u3001\u904b\u7528\u74b0\u5883\u3067\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u3068\u30e6\u30fc\u30b6\u30fc\u306b\u4e0d\u8981\u306a\u640d\u5931\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3067\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u304c\u901f\u304f\u306a\u308a\u3001\u30d0\u30b0\u306e\u4fee\u6b63\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u6a5f\u80fd\u3068\u305d\u306e\u4ed5\u7d44\u307f\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306f\u3001\u30d6\u30e9\u30a6\u30b6\u30fc\u304b\u3089 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306b\u8981\u6c42\u3092\u9001\u4fe1\u3059\u308b\u4e0a\u3067\u91cd\u8981\u306a\u90e8\u5206\u3067\u3059\u3002 \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306f\u3001\u8981\u6c42 URL \u3092\u3001\u8981\u6c42\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u30a8\u30f3\u30c8\u30ea \u30dd\u30a4\u30f3\u30c8\u3067\u3042\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30de\u30c3\u30d7\u3059\u308b\u5f79\u5272\u3092\u62c5\u3044\u307e\u3059\u3002 Rails \u3067\u306f\u3001\u30eb\u30fc\u30c8\u306f\u30d5\u30a1\u30a4\u30eb\u306b\u3088\u3063\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002<code>config\/routes.rb<\/code><\/p>\n\n\n\n<p>\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u5f79\u5272:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u8981\u6c42 URL \u3092\u9069\u5207\u306a\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30de\u30c3\u30d7\u3057\u3066\u3001\u8981\u6c42\u3092\u51e6\u7406\u3057\u3001\u5fdc\u7b54\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u4fdd\u5b88\u3068\u62e1\u5f35\u304c\u5bb9\u6613\u306a URL \u69cb\u9020\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u7406\u89e3\u3068\u4f7f\u7528\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>Web \u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u304a\u3088\u3073\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u6a19\u6e96\u7684\u306a\u65b9\u6cd5\u3067\u3042\u308b RESTful \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d1\u30b9\u3068 URL \u30d8\u30eb\u30d1\u30fc \u30e1\u30bd\u30c3\u30c9\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067 URL \u3068\u30d1\u30b9\u3092\u751f\u6210\u3059\u308b\u306e\u304c\u3088\u308a\u4fbf\u5229\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u539f\u5247:<\/p>\n\n\n\n<p>\u30d6\u30e9\u30a6\u30b6\u30fc\u304c\u8981\u6c42\u3092\u884c\u3046\u3068\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u307e\u305a\u3001\u5bfe\u5fdc\u3059\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30fb\u30a2\u30af\u30b7\u30e7\u30f3\u306b\u8981\u6c42\u3092\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3057\u307e\u3059\u3002 \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3067\u306f\u3001HTTP \u8981\u6c42\u30e1\u30bd\u30c3\u30c9\u3068\u8981\u6c42\u306e URL \u3092\u4f7f\u7528\u3057\u3066\u3001\u5b9f\u884c\u3059\u308b\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002 \u4e00\u81f4\u3059\u308b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u8981\u6c42\u306f\u9069\u5207\u306a\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002 \u4e00\u81f4\u3059\u308b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001HTTP 404 \u30a8\u30e9\u30fc\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30eb\u30fc\u30c8\u306f\u30d5\u30a1\u30a4\u30eb\u306b\u3088\u3063\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002 \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u5404\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u306f\u3001\u6b21\u306e 3 \u3064\u306e\u90e8\u5206\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002<code>config\/routes.rb<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>HTTP \u30ea\u30af\u30a8\u30b9\u30c8\u30e1\u30bd\u30c3\u30c9 (GET\u3001POST\u3001PUT\u3001DELETE \u306a\u3069)<\/li>\n\n\n\n<li>\u8981\u6c42\u306e URL \u30d1\u30b9<\/li>\n\n\n\n<li>\u5b9f\u884c\u3059\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u30a2\u30af\u30b7\u30e7\u30f3<\/li>\n<\/ol>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u5358\u7d14\u306a\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>get 'hello_world', to: 'welcome#hello'\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u306f\u3001HTTP GET \u8981\u6c42\u306e URL \u30d1\u30b9 &#8220;\/hello_world&#8221; \u3092 &#8220;WelcomeController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e &#8220;hello&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3057\u307e\u3059\u3002 \u30d5\u30a1\u30a4\u30eb\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u306f\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u59cb\u52d5\u6642\u306b\u30ed\u30fc\u30c9\u3055\u308c\u307e\u3059\u3002<code>config\/routes.rb<\/code><\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Rails \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306f\u3001\u30d6\u30e9\u30a6\u30b6\u30fc\u304b\u3089\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306b\u8981\u6c42\u3092\u9001\u4fe1\u3059\u308b\u305f\u3081\u306e\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u4fdd\u5b88\u3068\u62e1\u5f35\u304c\u5bb9\u6613\u306a URL \u69cb\u9020\u3092\u5b9a\u7fa9\u3067\u304d\u3001RESTful \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30d1\u30b9\u304a\u3088\u3073 URL \u30d8\u30eb\u30d1\u30fc \u30e1\u30bd\u30c3\u30c9\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u69cb\u6210\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0ChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30eb\u30fc\u30c8\u306f\u30d5\u30a1\u30a4\u30eb\u306b\u3088\u3063\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002 \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u306f\u3001HTTP \u8981\u6c42\u30e1\u30bd\u30c3\u30c9\u3001\u8981\u6c42\u306e URL \u30d1\u30b9\u3001\u304a\u3088\u3073\u5b9f\u884c\u3055\u308c\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc \u30a2\u30af\u30b7\u30e7\u30f3\u306e 3 \u3064\u306e\u90e8\u5206\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002 Rails\u3067\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3092\u69cb\u6210\u3059\u308b\u65b9\u6cd5\u306e\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<code>config\/routes.rb<\/code><\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d7 1: \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f<\/strong><\/p>\n\n\n\n<p>\u307e\u305a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304d\u307e\u3059\u3002 \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001\u3059\u3079\u3066\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002<code>config\/routes.rb<\/code><\/p>\n\n\n\n<p><strong>\u624b\u9806 2: \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u3092\u5b9a\u7fa9\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u5f62\u5f0f\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>HTTP\u8bf7\u6c42\u65b9\u6cd5 '\u8bf7\u6c42\u7684URL\u8def\u5f84', to: '\u63a7\u5236\u5668\u540d\u79f0#\u52a8\u4f5c\u540d\u79f0'\n<\/code><\/pre>\n\n\n\n<p>\u305d\u3053\u306b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HTTP \u8981\u6c42\u30e1\u30bd\u30c3\u30c9: \u901a\u5e38\u306f GET\u3001POST\u3001PUT\u3001PATCH\u3001\u307e\u305f\u306f\u524a\u9664\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u8981\u6c42\u3055\u308c\u305f URL \u30d1\u30b9: \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u5148\u306e URL \u30d1\u30b9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002 \u30d1\u30b9 \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u307e\u305f\u306f\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>to: \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u540d#\u30a2\u30af\u30b7\u30e7\u30f3\u540d: \u5b9f\u884c\u3059\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u306f\u3001GET \u8981\u6c42\u306e URL \u30d1\u30b9 &#8220;\/articles&#8221; \u3092 &#8220;ArticlesController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e &#8220;index&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>get '\/articles', to: 'articles#index'\n<\/code><\/pre>\n\n\n\n<p>\u3059\u3079\u3066\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u7279\u5b9a\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3059\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>resources :articles\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u306b\u3088\u308a\u3001RESTful \u898f\u5247\u306b\u5bfe\u5fdc\u3059\u308b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u304c\u81ea\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>HTTP \u30e1\u30bd\u30c3\u30c9<\/th><th>URL \u30d1\u30b9<\/th><th>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u30a2\u30af\u30b7\u30e7\u30f3<\/th><\/tr><\/thead><tbody><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b<\/td><td>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/:ID<\/td><td>\u898b\u305b\u308b<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/\u65b0\u898f<\/td><td>\u65b0\u6a5f\u80fd<\/td><\/tr><tr><td>\u6295\u7a3f<\/td><td>\/\u8a18\u4e8b<\/td><td>\u5275\u9020\u3059\u308b<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/:ID\/\u7de8\u96c6<\/td><td>\u7de8\u96c6<\/td><\/tr><tr><td>\u30d1\u30c3\u30c1<\/td><td>\/\u8a18\u4e8b\/:ID<\/td><td>\u66f4\u65b0<\/td><\/tr><tr><td>\u524a\u9664<\/td><td>\/\u8a18\u4e8b\/:ID<\/td><td>\u6ec5\u307c\u3059<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u306f\u3001&#8221;ArticlesController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u540d\u524d\u4ed8\u304d\u30eb\u30fc\u30c8\u3092\u5b9a\u7fa9\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067 URL \u3068\u30d1\u30b9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f &#8220;welcome&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u540d\u524d\u4ed8\u304d\u30eb\u30fc\u30c8\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>get '\/welcome', to: 'welcome#index', as: 'welcome'\n<\/code><\/pre>\n\n\n\n<p>\u6307\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067 &#8220;welcome_path&#8221; \u3068 &#8220;welcome_url&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d1\u30b9\u3068 URL \u3092\u751f\u6210\u3067\u304d\u307e\u3059\u3002<code>as: 'welcome'<\/code><\/p>\n\n\n\n<p><strong>\u30b9\u30c6\u30c3\u30d7 3: \u30eb\u30fc\u30c8\u3092\u30c6\u30b9\u30c8\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u30eb\u30fc\u30c8\u3092\u69cb\u6210\u3057\u305f\u3089\u3001\u30eb\u30fc\u30c8\u304c\u6b63\u3057\u304f\u6a5f\u80fd\u3059\u308b\u3053\u3068\u3092\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002 \u30d6\u30e9\u30a6\u30b6\u306b\u30eb\u30fc\u30c8\u5b9a\u7fa9\u306e URL \u3092\u5165\u529b\u3059\u308b\u3068\u3001\u6b63\u3057\u3044\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u304c\u547c\u3073\u51fa\u3055\u308c\u307e\u3059\u3002 \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u304c\u6b63\u3057\u304f\u6a5f\u80fd\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u30ed\u30b0 \u30d5\u30a1\u30a4\u30eb\u3092\u78ba\u8a8d\u3057\u3066\u30a8\u30e9\u30fc\u306b\u95a2\u3059\u308b\u8a73\u7d30\u60c5\u5831\u3092\u898b\u3064\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u69cb\u6210\u306f\u3001\u8981\u6c42\u3092\u6b63\u3057\u3044\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3059\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u90e8\u5206\u3067\u3059\u3002 Rails \u3067\u306f\u3001\u30eb\u30fc\u30c8\u306f\u30d5\u30a1\u30a4\u30eb\u306b\u3088\u3063\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002 \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u3092\u5b9a\u7fa9\u3059\u308b\u306b\u306f\u3001HTTP \u8981\u6c42\u30e1\u30bd\u30c3\u30c9\u3001URL \u30d1\u30b9\u3001\u304a\u3088\u3073\u5b9f\u884c\u3059\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002 \u307e\u305f\u3001RESTful \u30eb\u30fc\u30c8\u3068\u540d\u524d\u4ed8\u304d\u30eb\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3001\u30eb\u30fc\u30c8\u5b9a\u7fa9\u3068 URL \u751f\u6210\u3092\u7c21\u7565\u5316\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<code>config\/routes.rb<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u306e\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30ea\u30bd\u30fc\u30b9\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0ChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails\u306e\u30eb\u30fc\u30c8\u306f\u3001\u30ea\u30bd\u30fc\u30b9\u30eb\u30fc\u30c8\u3068\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c8\u306e2\u3064\u306e\u30bf\u30a4\u30d7\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30ea\u30bd\u30fc\u30b9\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u5358\u4e00\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3059\u308b\u6a19\u6e96\u7684\u306a\u65b9\u6cd5\u3067\u3059\u304c\u3001\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u8907\u6570\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u30921\u3064\u306eURL\u306b\u7d50\u5408\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30ea\u30bd\u30fc\u30b9 \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0<\/strong><\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30ea\u30bd\u30fc\u30b9\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306f\u3001\u500b\u3005\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3059\u308b\u6a19\u6e96\u7684\u306a\u65b9\u6cd5\u3067\u3059\u3002 \u30ea\u30bd\u30fc\u30b9 \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306f\u3001RESTful API \u306e\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u57fa\u3065\u3044\u3066\u751f\u6210\u3067\u304d\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u611f\u7684\u306a\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f &#8220;articles&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30ea\u30bd\u30fc\u30b9 \u30eb\u30fc\u30c8\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>resources :articles\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u306b\u3088\u308a\u3001\u6b21\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u304c\u81ea\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>HTTP \u30e1\u30bd\u30c3\u30c9<\/th><th>URL \u30d1\u30b9<\/th><th>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u30a2\u30af\u30b7\u30e7\u30f3<\/th><\/tr><\/thead><tbody><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b<\/td><td>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/:ID<\/td><td>\u898b\u305b\u308b<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/\u65b0\u898f<\/td><td>\u65b0\u6a5f\u80fd<\/td><\/tr><tr><td>\u6295\u7a3f<\/td><td>\/\u8a18\u4e8b<\/td><td>\u5275\u9020\u3059\u308b<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/:ID\/\u7de8\u96c6<\/td><td>\u7de8\u96c6<\/td><\/tr><tr><td>\u30d1\u30c3\u30c1<\/td><td>\/\u8a18\u4e8b\/:ID<\/td><td>\u66f4\u65b0<\/td><\/tr><tr><td>\u524a\u9664<\/td><td>\/\u8a18\u4e8b\/:ID<\/td><td>\u6ec5\u307c\u3059<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u306f\u3001&#8221;ArticlesController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306b\u81ea\u52d5\u7684\u306b\u30de\u30c3\u30d7\u3055\u308c\u3001\u9069\u5207\u306a\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3059\u308b\u3060\u3051\u3067\u6e08\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c8<\/strong><\/p>\n\n\n\n<p>\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u8907\u6570\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u3092 1 \u3064\u306e URL \u306b\u7d50\u5408\u3067\u304d\u307e\u3059\u3002 \u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c8\u306f\u3001\u7279\u306b\u7ba1\u7406\u3059\u308b\u95a2\u9023\u30ea\u30bd\u30fc\u30b9\u304c\u8907\u6570\u3042\u308b\u5834\u5408\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u6295\u7a3f\u3068\u30b3\u30e1\u30f3\u30c8\u3092\u7ba1\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u5165\u308c\u5b50\u306b\u306a\u3063\u305f\u30eb\u30fc\u30c8\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>resources :articles do\n  resources :comments\nend\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u306b\u3088\u308a\u3001\u6b21\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>HTTP \u30e1\u30bd\u30c3\u30c9<\/th><th>URL \u30d1\u30b9<\/th><th>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u30a2\u30af\u30b7\u30e7\u30f3<\/th><\/tr><\/thead><tbody><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b<\/td><td>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/:ID<\/td><td>\u898b\u305b\u308b<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/\u65b0\u898f<\/td><td>\u65b0\u6a5f\u80fd<\/td><\/tr><tr><td>\u6295\u7a3f<\/td><td>\/\u8a18\u4e8b<\/td><td>\u5275\u9020\u3059\u308b<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/:ID\/\u7de8\u96c6<\/td><td>\u7de8\u96c6<\/td><\/tr><tr><td>\u30d1\u30c3\u30c1<\/td><td>\/\u8a18\u4e8b\/:ID<\/td><td>\u66f4\u65b0<\/td><\/tr><tr><td>\u524a\u9664<\/td><td>\/\u8a18\u4e8b\/:ID<\/td><td>\u6ec5\u307c\u3059<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/:article_id\/\u30b3\u30e1\u30f3\u30c8<\/td><td>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/:article_id\/\u30b3\u30e1\u30f3\u30c8\/:id<\/td><td>\u898b\u305b\u308b<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/:article_id\/\u30b3\u30e1\u30f3\u30c8\/\u65b0\u898f<\/td><td>\u65b0\u6a5f\u80fd<\/td><\/tr><tr><td>\u6295\u7a3f<\/td><td>\/\u8a18\u4e8b\/:article_id\/\u30b3\u30e1\u30f3\u30c8<\/td><td>\u5275\u9020\u3059\u308b<\/td><\/tr><tr><td>\u53d6\u5f97<\/td><td>\/\u8a18\u4e8b\/:article_id\/\u30b3\u30e1\u30f3\u30c8\/:id\/\u7de8\u96c6<\/td><td>\u7de8\u96c6<\/td><\/tr><tr><td>\u30d1\u30c3\u30c1<\/td><td>\/\u8a18\u4e8b\/:article_id\/\u30b3\u30e1\u30f3\u30c8\/:id<\/td><td>\u66f4\u65b0<\/td><\/tr><tr><td>\u524a\u9664<\/td><td>\/\u8a18\u4e8b\/:article_id\/\u30b3\u30e1\u30f3\u30c8\/:id<\/td><td>\u6ec5\u307c\u3059<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u898f\u5247\u306f\u3001&#8221;ArticlesController&#8221; \u304a\u3088\u3073 &#8220;CommentsController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306b\u81ea\u52d5\u7684\u306b\u30de\u30c3\u30d7\u3055\u308c\u3001\u5bfe\u5fdc\u3059\u308b\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3059\u308b\u3060\u3051\u3067\u6e08\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Rails\u306e\u30eb\u30fc\u30c8\u306f\u3001\u30ea\u30bd\u30fc\u30b9\u30eb\u30fc\u30c8\u3068\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c8\u306e2\u3064\u306e\u30bf\u30a4\u30d7\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30ea\u30bd\u30fc\u30b9\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306f\u3001\u500b\u3005\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u306b\u8981\u6c42\u3092\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3059\u308b\u305f\u3081\u306e\u6a19\u6e96\u3067\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u4e00\u65b9\u3001\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3067\u306f\u3001\u8907\u6570\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u30921\u3064\u306eURL\u306b\u7d50\u5408\u3067\u304d\u307e\u3059\u3002 \u30ea\u30bd\u30fc\u30b9 \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306f\u3001RESTful API \u306e\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u57fa\u3065\u3044\u3066\u751f\u6210\u3067\u304d\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u611f\u7684\u306a\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c8\u306f\u3001\u7279\u306b\u7ba1\u7406\u3059\u308b\u95a2\u9023\u30ea\u30bd\u30fc\u30b9\u304c\u8907\u6570\u3042\u308b\u5834\u5408\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u5165\u308c\u5b50\u306b\u306a\u3063\u305f\u30ea\u30bd\u30fc\u30b9 \u30eb\u30fc\u30c8\u306f\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>resources :articles do\n  resources :comments\nend\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u306b\u3088\u308a\u3001\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u30eb\u30fc\u30c8\u304c\u751f\u6210\u3055\u308c\u3001HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u30e1\u30bd\u30c3\u30c9\u304c\u5bfe\u5fdc\u3059\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30de\u30c3\u30d7\u3055\u308c\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001HTTP GET \u8981\u6c42\u306e URL \u30d1\u30b9 &#8220;\/articles\/1\/comments&#8221; \u3092 &#8220;CommentsController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e &#8220;index&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>GET \/articles\/1\/comments =&gt; comments#index\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306e\u3088\u3046\u306b\u3001\u6df1\u304f\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u30eb\u30fc\u30c8\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>resources :articles do\n  resources :comments do\n    resources :replies\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u306b\u3088\u308a\u3001\u6df1\u304f\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u30eb\u30fc\u30c8\u304c\u751f\u6210\u3055\u308c\u3001\u30b3\u30e1\u30f3\u30c8\u3068\u8fd4\u4fe1\u306e\u4e21\u65b9\u304c\u8a18\u4e8b\u306e\u30b5\u30d6\u30ea\u30bd\u30fc\u30b9\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u7d50\u8ad6\u3068\u3057\u3066\u3001Rails\u3067\u30ea\u30bd\u30fc\u30b9\u30eb\u30fc\u30c8\u3068\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001RESTful API\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5408\u308f\u305b\u306a\u304c\u3089\u3001\u30b3\u30fc\u30c9\u3092\u3059\u3063\u304d\u308a\u3068\u4fdd\u5b88\u3057\u3084\u3059\u304f\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30d3\u30e5\u30fc\u306b\u3064\u3044\u3066\u3001ChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30d3\u30e5\u30fc\u306f Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30a2\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e 1 \u3064\u3067\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f HTTP \u8981\u6c42\u3092\u53d7\u4fe1\u3057\u3066\u5fdc\u7b54\u65b9\u6cd5\u3092\u6c7a\u5b9a\u3057\u3001\u30d3\u30e5\u30fc\u306f\u5fdc\u7b54\u306e HTML \u30da\u30fc\u30b8\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b\u5f79\u5272\u3092\u62c5\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9<\/strong><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u3001HTTP \u8981\u6c42\u3092\u53d7\u4fe1\u3057\u3001\u5fdc\u7b54\u65b9\u6cd5\u3092\u6c7a\u5b9a\u3059\u308b\u30af\u30e9\u30b9\u3067\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306f\u901a\u5e38\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u5b9a\u7fa9\u3055\u308c\u3001\u305d\u306e\u5f62\u5f0f\u3067\u540d\u524d\u304c\u4ed8\u3051\u3089\u308c\u307e\u3059\u3002<code>app\/controllers<\/code><code>*_controller.rb<\/code><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>HTTP \u8981\u6c42\u3092\u53d7\u4fe1\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u8981\u6c42\u304b\u3089\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30e2\u30c7\u30eb\u3092\u547c\u3073\u51fa\u3057\u3066\u3001\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u307e\u305f\u306f\u66f4\u65b0\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5fdc\u7b54\u3057\u3066\u30d3\u30e5\u30fc\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>HTTP \u5fdc\u7b54\u3092\u30d6\u30e9\u30a6\u30b6\u30fc\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;ArticlesController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc \u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class ArticlesController &lt; ApplicationController\n  def index\n    @articles = Article.all\n  end\n\n  def show\n    @article = Article.find(params[:id])\n  end\n\n  def new\n    @article = Article.new\n  end\n\n  def create\n    @article = Article.new(article_params)\n\n    if @article.save\n      redirect_to @article\n    else\n      render 'new'\n    end\n  end\n\n  private\n\n  def article_params\n    params.require(:article).permit(:title, :text)\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;ArticlesController&#8221; \u306b\u306f\u3001&#8221;\u30a4\u30f3\u30c7\u30c3\u30af\u30b9&#8221;\u3001&#8221;\u8868\u793a&#8221;\u3001&#8221;\u65b0\u898f&#8221;\u3001&#8221;\u4f5c\u6210&#8221; \u306a\u3069\u3001\u3044\u304f\u3064\u304b\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u306f\u3001\u9069\u5207\u306a\u30e2\u30c7\u30eb\u3092\u547c\u3073\u51fa\u3057\u3066\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u307e\u305f\u306f\u66f4\u65b0\u3057\u3001\u5fdc\u7b54\u3067\u30d3\u30e5\u30fc\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u773a\u3081\u308b<\/strong><\/p>\n\n\n\n<p>\u30d3\u30e5\u30fc\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u5fdc\u7b54\u90e8\u5206\u3067\u3059\u3002 \u3053\u308c\u3089\u306f\u3001\u5bfe\u5fdc\u3059\u308b\u30c7\u30fc\u30bf\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u5fdc\u7b54\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b HTML \u30da\u30fc\u30b8\u3067\u3059\u3002 \u30d3\u30e5\u30fc\u306f\u901a\u5e38\u3001\u30d5\u30a9\u30eb\u30c0\u30fc\u540d\u3068\u30d5\u30a1\u30a4\u30eb\u540d\u3068\u3057\u3066\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u540d\u524d\u3092\u6301\u3064\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002<code>app\/views<\/code><\/p>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u30011 \u3064\u306e\u8a18\u4e8b\u306e\u8a73\u7d30\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b &#8220;show.html.erb&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d3\u30e5\u30fc \u30d5\u30a1\u30a4\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erbCopy code<code>&lt;h1&gt;&lt;%= @article.title %&gt;&lt;\/h1&gt;\n\n&lt;p&gt;&lt;%= @article.text %&gt;&lt;\/p&gt;\n<\/code><\/pre>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30d3\u30e5\u30fc\u306f ERB (Embedded Ruby) \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001Ruby \u30b3\u30fc\u30c9\u3092 HTML \u306b\u57cb\u3081\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u30d3\u30e5\u30fc\u306b\u30c7\u30fc\u30bf\u3092\u975e\u5e38\u306b\u7c21\u5358\u306b\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30d3\u30e5\u30fc\u306f Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30a2\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e 1 \u3064\u3067\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f HTTP \u8981\u6c42\u3092\u53d7\u4fe1\u3057\u3066\u5fdc\u7b54\u65b9\u6cd5\u3092\u6c7a\u5b9a\u3057\u3001\u30d3\u30e5\u30fc\u306f\u5fdc\u7b54\u306e HTML \u30da\u30fc\u30b8\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b\u5f79\u5272\u3092\u62c5\u3044\u307e\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30d3\u30e5\u30fc\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u5f37\u529b\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7c21\u5358\u306b\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3068\u30d3\u30e5\u30fc\u4f5c\u6210\u304a\u3088\u3073\u69cb\u6210\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9ChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails\u3067\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u4f5c\u6210\u3068\u69cb\u6210\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u57fa\u672c\u7684\u306a\u30eb\u30fc\u30eb\u306b\u5f93\u3046\u306e\u3068\u540c\u3058\u304f\u3089\u3044\u7c21\u5358\u3067\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3092\u4f5c\u6210\u304a\u3088\u3073\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u4f5c\u6210\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u65b0\u3057\u3044\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001Rails \u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u30bf\u30fc\u30df\u30ca\u30eb\u3067\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cssCopy code<code>$ rails generate controller [ControllerName] [action1] [action2] [action3] ...\n<\/code><\/pre>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001&#8221;ArticlesController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sqlCopy code<code>$ rails generate controller Articles index show new create\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001&#8221;\u30a4\u30f3\u30c7\u30c3\u30af\u30b9&#8221;\u3001&#8221;\u8868\u793a&#8221;\u3001&#8221;\u65b0\u898f&#8221;\u3001\u304a\u3088\u3073 &#8220;\u4f5c\u6210&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u6301\u3064 &#8220;ArticlesController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u69cb\u6210<\/strong><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3092\u4f5c\u6210\u3057\u305f\u3089\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3092\u6307\u3059\u3088\u3046\u306b\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30eb\u30fc\u30c8\u3092 ArticlesController \u306b\u30dd\u30a4\u30f3\u30c8\u3067\u304d\u307e\u3059\u3002<code>config\/routes.rb<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>Rails.application.routes.draw do\n  get 'articles', to: 'articles#index'\n  get 'articles\/:id', to: 'articles#show'\n  get 'articles\/new', to: 'articles#new'\n  post 'articles', to: 'articles#create'\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001HTTP GET \u8981\u6c42\u306e URL \u30d1\u30b9 &#8220;\/articles&#8221; \u3092 &#8220;ArticlesController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e &#8220;index&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3057\u307e\u3059\u3002 \u540c\u69d8\u306b\u3001&#8221;\/articles\/:id&#8221; \u306f &#8220;show&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3055\u308c\u3001&#8221;\/articles\/new&#8221; \u306f &#8220;new&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3055\u308c\u3001&#8221;\/articles&#8221; \u306f &#8220;create&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3067\u306f\u3001HTTP \u8981\u6c42\u3068\u5fdc\u7b54\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u9069\u5207\u306a\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001ArticlesController \u3067\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class ArticlesController &lt; ApplicationController\n  def index\n    @articles = Article.all\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;index&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306f &#8220;Article&#8221; \u30e2\u30c7\u30eb\u3092\u547c\u3073\u51fa\u3057\u3066\u3059\u3079\u3066\u306e\u8a18\u4e8b\u3092\u53d6\u5f97\u3057\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570 &#8220;@articles&#8221; \u306b\u5272\u308a\u5f53\u3066\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u3067\u306f\u3001\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u30d3\u30e5\u30fc\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u540d\u524d\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u30d5\u30a9\u30eb\u30c0\u540d\u3068\u30d5\u30a1\u30a4\u30eb\u540d\u3068\u3057\u3066\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001&#8221;index.html.erb&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d3\u30e5\u30fc \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<code>app\/views<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">shellCopy code<code>$ touch app\/views\/articles\/index.html.erb\n<\/code><\/pre>\n\n\n\n<p>\u30d3\u30e5\u30fc\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30de\u30fc\u30af\u30a2\u30c3\u30d7\u3068\u57cb\u3081\u8fbc\u307fRuby\u30b3\u30fc\u30c9\u3092\u542b\u3080HTML\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30d3\u30e5\u30fc\u3067\u57cb\u3081\u8fbc\u307f Ruby \u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u8a18\u4e8b\u306e\u30bf\u30a4\u30c8\u30eb\u3068\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erbCopy code<code>&lt;h1&gt;Articles&lt;\/h1&gt;\n\n&lt;ul&gt;\n  &lt;% @articles.each do |article| %&gt;\n    &lt;li&gt;\n      &lt;%= link_to article.title, article %&gt;\n      &lt;p&gt;&lt;%= article.content %&gt;&lt;\/p&gt;\n    &lt;\/li&gt;\n  &lt;% end %&gt;\n&lt;\/ul&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;@articles&#8221; \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u3059\u3079\u3066\u306e\u8a18\u4e8b\u3092\u30eb\u30fc\u30d7\u3057\u3001\u305d\u306e\u30bf\u30a4\u30c8\u30eb\u3068\u30b3\u30f3\u30c6\u30f3\u30c4\u304c HTML \u30ea\u30b9\u30c8\u306b\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002 Detail \u30e1\u30bd\u30c3\u30c9\u306f\u3001\u8a18\u4e8b\u306b\u30ea\u30f3\u30af\u3059\u308b\u8a73\u7d30\u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<code>link_to<\/code><\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001\u4f5c\u6210\u3057\u3066\u69cb\u6210\u3057\u307e\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f Rails \u306e\u91cd\u8981\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3042\u308a\u3001HTTP \u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30e2\u30c7\u30eb\u3084\u30d3\u30e5\u30fc\u3068\u5bfe\u8a71\u3057\u307e\u3059\u3002 Rails \u3067\u306f\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u7c21\u5358\u306b\u4f5c\u6210\u304a\u3088\u3073\u69cb\u6210\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u4f5c\u6210\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cssCopy code<code>$ rails generate controller [ControllerName] [action1] [action2] [action3] ...\n<\/code><\/pre>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001&#8221;\u30a4\u30f3\u30c7\u30c3\u30af\u30b9&#8221;\u3001&#8221;\u8868\u793a&#8221;\u3001\u304a\u3088\u3073 &#8220;\u65b0\u898f&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u6301\u3064 &#8220;ArticlesController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sqlCopy code<code>$ rails generate controller Articles index show new\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001&#8221;\u30a4\u30f3\u30c7\u30c3\u30af\u30b9&#8221;\u3001&#8221;\u8868\u793a&#8221;\u3001\u304a\u3088\u3073 &#8220;\u65b0\u3057\u3044&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u542b\u3080 &#8220;ArticlesController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30af\u30e9\u30b9\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u914d\u7f6e\u3055\u308c\u307e\u3059\u3002<code>app\/controllers<\/code><\/p>\n\n\n\n<p><strong>\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u69cb\u6210<\/strong><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3092\u4f5c\u6210\u3057\u305f\u3089\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3092\u6307\u3059\u3088\u3046\u306b\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30eb\u30fc\u30c8\u3092 ArticlesController \u306b\u30dd\u30a4\u30f3\u30c8\u3067\u304d\u307e\u3059\u3002<code>config\/routes.rb<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>Rails.application.routes.draw do\n  get 'articles', to: 'articles#index'\n  get 'articles\/:id', to: 'articles#show'\n  get 'articles\/new', to: 'articles#new'\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001HTTP GET \u8981\u6c42\u306e URL \u30d1\u30b9 &#8220;\/articles&#8221; \u3092 &#8220;ArticlesController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e &#8220;index&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3057\u307e\u3059\u3002 \u540c\u69d8\u306b\u3001&#8221;\/articles\/:id&#8221; \u306f &#8220;show&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3055\u308c\u3001&#8221;\/articles\/new&#8221; \u306f &#8220;new&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3067\u306f\u3001HTTP \u8981\u6c42\u3068\u5fdc\u7b54\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u9069\u5207\u306a\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001ArticlesController \u3067 &#8220;\u30a4\u30f3\u30c7\u30c3\u30af\u30b9&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class ArticlesController &lt; ApplicationController\n  def index\n    @articles = Article.all\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;index&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306f &#8220;Article&#8221; \u30e2\u30c7\u30eb\u3092\u547c\u3073\u51fa\u3057\u3066\u3059\u3079\u3066\u306e\u8a18\u4e8b\u3092\u53d6\u5f97\u3057\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570 &#8220;@articles&#8221; \u306b\u5272\u308a\u5f53\u3066\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u3067\u306f\u3001\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u30d3\u30e5\u30fc\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u540d\u524d\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u30d5\u30a9\u30eb\u30c0\u540d\u3068\u30d5\u30a1\u30a4\u30eb\u540d\u3068\u3057\u3066\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001&#8221;index.html.erb&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d3\u30e5\u30fc \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<code>app\/views<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">shellCopy code<code>$ touch app\/views\/articles\/index.html.erb\n<\/code><\/pre>\n\n\n\n<p>\u30d3\u30e5\u30fc\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30de\u30fc\u30af\u30a2\u30c3\u30d7\u3068\u57cb\u3081\u8fbc\u307fRuby\u30b3\u30fc\u30c9\u3092\u542b\u3080HTML\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30d3\u30e5\u30fc\u3067\u57cb\u3081\u8fbc\u307f Ruby \u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u8a18\u4e8b\u306e\u30bf\u30a4\u30c8\u30eb\u3068\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erbCopy code<code>&lt;h1&gt;Articles&lt;\/h1&gt;\n\n&lt;ul&gt;\n  &lt;% @articles.each do |article| %&gt;\n    &lt;li&gt;\n      &lt;%= link_to article.title, article %&gt;\n      &lt;p&gt;&lt;%= article.content %&gt;&lt;\/p&gt;\n    &lt;\/li&gt;\n  &lt;% end %&gt;\n&lt;\/ul&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;@articles&#8221; \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u3059\u3079\u3066\u306e\u8a18\u4e8b\u3092\u30eb\u30fc\u30d7\u3057\u3001\u305d\u306e\u30bf\u30a4\u30c8\u30eb\u3068\u30b3\u30f3\u30c6\u30f3\u30c4\u304c HTML \u30ea\u30b9\u30c8\u306b\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002 Detail \u30e1\u30bd\u30c3\u30c9\u306f\u3001\u8a18\u4e8b\u306b\u30ea\u30f3\u30af\u3059\u308b\u8a73\u7d30\u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<code>link_to<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p><strong>\u30d5\u30a3\u30eb\u30bf\u30fc\u3068\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc<\/strong><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u306f\u3001\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u5b9f\u884c\u524d\u307e\u305f\u306f\u5b9f\u884c\u5f8c\u306b\u5b9f\u884c\u3055\u308c\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001ArticlesController \u3067\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class ArticlesController &lt; ApplicationController\n  before_action :authenticate_user!\n  before_action :set_article, only: [:show, :edit, :update, :destroy]\n\n  def index\n    @articles = Article.all\n  end\n\n  def show\n  end\n\n  def new\n    @article = Article.new\n  end\n\n  def edit\n  end\n\n  def create\n    @article = Article.new(article_params)\n\n    if @article.save\n      redirect_to @article\n    else\n      render 'new'\n    end\n  end\n\n  def update\n    if @article.update(article_params)\n      redirect_to @article\n    else\n      render 'edit'\n    end\n  end\n\n  def destroy\n    @article.destroy\n\n    redirect_to articles_path\n  end\n\n  private\n\n  def set_article\n    @article = Article.find(params[:id])\n  end\n\n  def article_params\n    params.require(:article).permit(:title, :text)\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u306f 2 \u3064\u306e\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002 \u30d5\u30a3\u30eb\u30bf\u30fc\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3001\u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306f\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3055\u308c\u307e\u3059\u3002 \u30d5\u30a3\u30eb\u30bf\u30fc\u306f\u300c\u8868\u793a\u300d\u3001\u300c\u7de8\u96c6\u300d\u3001\u300c\u66f4\u65b0\u300d\u3001\u300c\u7834\u68c4\u300d\u306e\u5404\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u4f7f\u7528\u3055\u308c\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u5bfe\u5fdc\u3059\u308b\u8a18\u4e8b\u3092\u53d6\u5f97\u3057\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u300c@article\u300d\u306b\u5272\u308a\u5f53\u3066\u307e\u3059\u3002<code>before_action<\/code><code>authenticate_user!<\/code><code>set_article<\/code><code>authenticate_user!<\/code><code>set_article<\/code><\/p>\n\n\n\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc<\/strong><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc \u30a2\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u8981\u6c42\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001ArticlesController \u306e\u8981\u6c42\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class ArticlesController &lt; ApplicationController\n  def show\n    @article = Article.find(params[:id])\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;show&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306f &#8220;Article&#8221; \u30e2\u30c7\u30eb\u3092\u547c\u3073\u51fa\u3057\u3066\u8a18\u4e8b\u3092\u53d6\u5f97\u3057\u3001request \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304b\u3089\u8a18\u4e8b ID \u3092\u53d6\u5f97\u3057\u307e\u3059\u3002 \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u8981\u6c42\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002<code>params<\/code><\/p>\n\n\n\n<p><strong>\u5fdc\u7b54\u5f62\u5f0f<\/strong><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30fb\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Rails \u306f\u5fdc\u7b54\u3092 HTML \u30da\u30fc\u30b8\u3068\u3057\u3066\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002 \u305f\u3060\u3057\u3001JSON\u3001XML \u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u5fdc\u7b54\u5f62\u5f0f\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002 \u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001\u8a18\u4e8b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067 JSON \u5f62\u5f0f\u3092\u4f7f\u7528\u3057\u3066\u8a18\u4e8b\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class ArticlesController &lt; ApplicationController\n  def index\n    @articles = Article.all\n\n    respond_to do |format|\n      format.html\n      format.json { render json: @articles }\n    end\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;index&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306f &#8220;Article&#8221; \u30e2\u30c7\u30eb\u3092\u547c\u3073\u51fa\u3057\u3066\u3059\u3079\u3066\u306e\u8a18\u4e8b\u3092\u53d6\u5f97\u3057\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066 HTML \u5f62\u5f0f\u3068 JSON \u5f62\u5f0f\u306b\u5bfe\u3057\u3066\u7570\u306a\u308b\u5fdc\u7b54\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 JSON \u5fdc\u7b54\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066 JSON \u5f62\u5f0f\u3067\u30c7\u30fc\u30bf\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002<code>respond_to<\/code><code>render<\/code><\/p>\n\n\n\n<p>\u7d50\u8ad6\u3068\u3057\u3066\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u4f5c\u6210\u3068\u69cb\u6210\u306f Rails \u306e\u57fa\u672c\u7684\u306a\u30bf\u30b9\u30af\u3067\u3059\u3002 \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3057\u3001\u305d\u306e\u4e2d\u3067\u30a2\u30af\u30b7\u30e7\u30f3\u3001\u30d5\u30a3\u30eb\u30bf\u30fc\u3001\u304a\u3088\u3073\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u4ecb\u3057\u3066\u3001HTTP \u8981\u6c42\u3092\u51e6\u7406\u3057\u3001\u30e2\u30c7\u30eb\u3068\u30d3\u30e5\u30fc\u3092\u64cd\u4f5c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30b0\u30e9\u30d5\u306f\u76f8\u4e92\u4f5c\u7528\u3057\u3066\u5fdc\u7b54\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u3001JSON\u3001XML \u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u5fdc\u7b54\u5f62\u5f0f\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u4f5c\u6210\u65b9\u6cd5\u3068\u69cb\u6210\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001Rails \u958b\u767a\u8005\u306b\u306a\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u8981\u4ef6\u306e 1 \u3064\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3068\u30d3\u30e5\u30fc\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9ChatGPT\u306e\u30e1\u30bd\u30c3\u30c9\u3068\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30d3\u30e5\u30fc\u306f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u4ecb\u3057\u3066\u901a\u4fe1\u3057\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u30d3\u30e5\u30fc\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30d3\u30e5\u30fc\u3067\u4f7f\u7528\u3067\u304d\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570<\/strong><\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u5185\u306e\u3059\u3079\u3066\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3068\u30d3\u30e5\u30fc\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306f\u3001&#8221;@articles&#8221;\u3001&#8221;@user&#8221; \u306a\u3069\u306e\u6587\u5b57\u3067\u59cb\u307e\u308a\u307e\u3059\u3002 \u6587\u5b57\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002<code>@<\/code><code>@<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class ArticlesController &lt; ApplicationController\n  def index\n    @articles = Article.all\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;index&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306f &#8220;@articles&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u308c\u3092\u3059\u3079\u3066\u306e\u8a18\u4e8b\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u3067\u306f\u3001\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u3001\u6b21\u306e\u3088\u3046\u306b\u30c7\u30fc\u30bf\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erbCopy code<code>&lt;h1&gt;Articles&lt;\/h1&gt;\n\n&lt;ul&gt;\n  &lt;% @articles.each do |article| %&gt;\n    &lt;li&gt;\n      &lt;%= link_to article.title, article %&gt;\n      &lt;p&gt;&lt;%= article.content %&gt;&lt;\/p&gt;\n    &lt;\/li&gt;\n  &lt;% end %&gt;\n&lt;\/ul&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u3059\u3079\u3066\u306e\u8a18\u4e8b\u3092\u30eb\u30fc\u30d7\u3057\u3001\u305d\u306e\u30bf\u30a4\u30c8\u30eb\u3068\u30b3\u30f3\u30c6\u30f3\u30c4\u3092HTML\u30ea\u30b9\u30c8\u306b\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002<code>@articles<\/code><\/p>\n\n\n\n<p><strong>\u65b9\u5f0f<\/strong><\/p>\n\n\n\n<p>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306b\u52a0\u3048\u3066\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30d3\u30e5\u30fc\u3067\u4f7f\u7528\u3067\u304d\u308b\u3055\u307e\u3056\u307e\u306a\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001ArticlesController \u3067 &#8220;hello&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class ArticlesController &lt; ApplicationController\n  def index\n    @articles = Article.all\n  end\n\n  def hello\n    \"Hello World!\"\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u300cindex\u300d\u30a2\u30af\u30b7\u30e7\u30f3\u306b\u52a0\u3048\u3066\u3001\u300chello\u300d\u3068\u3044\u3046\u30e1\u30bd\u30c3\u30c9\u3082\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u6b21\u306e\u3088\u3046\u306b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30d3\u30e5\u30fc\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class ArticlesController &lt; ApplicationController\n  def index\n    @articles = Article.all\n    @message = hello\n  end\n\n  def hello\n    \"Hello World!\"\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;hello&#8221; \u30e1\u30bd\u30c3\u30c9\u306e\u623b\u308a\u5024\u3092 &#8220;@message&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306b\u5272\u308a\u5f53\u3066\u3001\u305d\u306e\u5909\u6570\u3092\u30d3\u30e5\u30fc\u3067\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erbCopy code<code>&lt;h1&gt;Articles&lt;\/h1&gt;\n\n&lt;p&gt;&lt;%= @message %&gt;&lt;\/p&gt;\n\n&lt;ul&gt;\n  &lt;% @articles.each do |article| %&gt;\n    &lt;li&gt;\n      &lt;%= link_to article.title, article %&gt;\n      &lt;p&gt;&lt;%= article.content %&gt;&lt;\/p&gt;\n    &lt;\/li&gt;\n  &lt;% end %&gt;\n&lt;\/ul&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;hello&#8221; \u30e1\u30bd\u30c3\u30c9\u306e\u623b\u308a\u5024 &#8220;Hello World!&#8221; \u3092\u542b\u3080 HTML \u30da\u30fc\u30b8\u306e\u5148\u982d\u306b &#8220;@message&#8221; \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3068\u30e1\u30bd\u30c3\u30c9\u306f\u3001Rails \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30d3\u30e5\u30fc\u9593\u306e\u901a\u4fe1\u306e\u4e3b\u8981\u306a\u624b\u6bb5\u3067\u3059\u3002 \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306f\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30d3\u30e5\u30fc\u306e\u9593\u3067\u6e21\u3055\u308c\u308b\u30c7\u30fc\u30bf\u3092\u5b9a\u7fa9\u3057\u3001\u30e1\u30bd\u30c3\u30c9\u306f\u8ffd\u52a0\u306e\u30ed\u30b8\u30c3\u30af\u3068\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3068\u30e1\u30bd\u30c3\u30c9\u306e\u4f7f\u7528\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a\u9069\u5207\u306b\u958b\u767a\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044 Rails\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3068\u30d3\u30e5\u30fc\u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u3068\u8a2d\u5b9a ChatGPT<\/p>\n\n\n\n<p>Rails \u30d3\u30e5\u30fc\u306f\u3001\u30c7\u30fc\u30bf\u304c\u8868\u793a\u3055\u308c\u308b\u5834\u6240\u3067\u3059\u3002 \u30d3\u30e5\u30fc\u30d5\u30a1\u30a4\u30eb\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u300capp\/views\u300d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308a\u3001ERB\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3(\u57cb\u3081\u8fbc\u307fRuby)\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002 Rails \u3067\u306f\u3001\u30d3\u30e5\u30fc\u306f\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3068\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3059\u308b<\/strong><\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30b3\u30de\u30f3\u30c9\u884c\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30d3\u30e5\u30fc\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001app\/views\/articles \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b &#8220;index&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d3\u30e5\u30fc \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">perlCopy code<code>rails generate controller articles index\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001&#8221;ArticlesController&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u4f5c\u6210\u3057\u3001\u305d\u306e\u4e2d\u306b &#8220;index&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u30a2\u30af\u30b7\u30e7\u30f3\u3078\u306e\u5fdc\u7b54\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b &#8220;index.html.erb&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d3\u30e5\u30fc \u30d5\u30a1\u30a4\u30eb\u3082\u81ea\u52d5\u7684\u306b\u4f5c\u6210\u3057\u307e\u3059\u3002 \u6b21\u306e\u3088\u3046\u306a\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u30d3\u30e5\u30fc\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002<code>render<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class ArticlesController &lt; ApplicationController\n  def index\n    @articles = Article.all\n\n    render 'index'\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;index&#8221; \u30a2\u30af\u30b7\u30e7\u30f3\u306f &#8220;Article&#8221; \u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3059\u3079\u3066\u306e\u8a18\u4e8b\u3092\u53d6\u5f97\u3057\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u5fdc\u7b54\u3092 &#8220;index&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d3\u30e5\u30fc\u3068\u3057\u3066\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002 \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3001 &#8220;app\/views&#8221;\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u306f\u306a\u304f\u3001Rails\u306f\u81ea\u52d5\u7684\u306b\u305d\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u30d3\u30e5\u30fc\u30d5\u30a1\u30a4\u30eb\u3092\u63a2\u3057\u307e\u3059\u3002<code>render<\/code><code>render<\/code><\/p>\n\n\n\n<p><strong>\u30d3\u30e5\u30fc\u5185\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3068\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9<\/strong><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306f\u3001\u30d3\u30e5\u30fc\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30a2\u30d7\u30ea\/\u30d3\u30e5\u30fc\/\u8a18\u4e8b\/index.html.erb \u30d3\u30e5\u30fc\u3067\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570 &#8220;@articles&#8221; \u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erbCopy code<code>&lt;h1&gt;Articles&lt;\/h1&gt;\n\n&lt;ul&gt;\n  &lt;% @articles.each do |article| %&gt;\n    &lt;li&gt;\n      &lt;%= link_to article.title, article %&gt;\n      &lt;p&gt;&lt;%= article.content %&gt;&lt;\/p&gt;\n    &lt;\/li&gt;\n  &lt;% end %&gt;\n&lt;\/ul&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570 &#8220;@articles&#8221; \u3092\u4f7f\u7528\u3057\u3066\u3059\u3079\u3066\u306e\u8a18\u4e8b\u3092\u30eb\u30fc\u30d7\u3057\u3001and \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066 HTML \u30da\u30fc\u30b8\u306b\u30bf\u30a4\u30c8\u30eb\u3068\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002<code>link_to<\/code><code>article<\/code><\/p>\n\n\n\n<p>\u307e\u305f\u3001\u30d3\u30e5\u30fc\u3067\u4f7f\u7528\u3067\u304d\u308b\u30d8\u30eb\u30d1\u30fc \u30e1\u30bd\u30c3\u30c9\u3092\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067 &#8220;current_user&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d8\u30eb\u30d1\u30fc \u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class ApplicationController &lt; ActionController::Base\n  helper_method :current_user\n\n  def current_user\n    @current_user ||= User.find(session[:user_id]) if session[:user_id]\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u300ccurrent_user\u300d\u3068\u3044\u3046\u540d\u524d\u306e\u88dc\u52a9\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\u3068\u3057\u3066\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u3067\u306f\u3001\u6b21\u306e\u3088\u3046\u306b\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u73fe\u5728\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002<code>helper_method<\/code><code>current_user<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erbCopy code<code>&lt;% if current_user %&gt;\n  Welcome &lt;%= current_user.username %&gt;!\n&lt;% else %&gt;\n  &lt;%= link_to \"Sign up\", new_user_path %&gt; or &lt;%= link_to \"Sign in\", login_path %&gt;.\n&lt;% end %&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u73fe\u5728\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3001\u305d\u308c\u306b\u5fdc\u3058\u3066HTML\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002<code>current_user<\/code><\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001\u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u3068\u69cb\u6210\u306fRails\u306b\u3042\u308a\u307e\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u91cd\u8981\u306a\u90e8\u5206\u3002 \u30d3\u30e5\u30fc\u3067\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3068\u30d8\u30eb\u30d1\u30fc \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001\u30c7\u30fc\u30bf\u3068\u6a5f\u80fd\u3092\u3088\u308a\u9069\u5207\u306b\u63d0\u793a\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 Rails \u3067\u306f\u3001\u30d3\u30e5\u30fc\u306e\u76ee\u7684\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u3001\u30ea\u30f3\u30af\u3001\u30dc\u30bf\u30f3\u306a\u3069\u306e\u30c7\u30fc\u30bf\u3092\u8868\u793a\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u3068\u5bfe\u8a71\u3059\u308b\u3053\u3068\u3067\u3059\u3002 \u30d3\u30e5\u30fc\u306f Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u6700\u3082\u91cd\u8981\u306a\u30e6\u30fc\u30b6\u30fc\u30fb\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e 1 \u3064\u3067\u3042\u308b\u305f\u3081\u3001\u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u65b9\u6cd5\u3068\u69cb\u6210\u65b9\u6cd5\u3092\u77e5\u308b\u3053\u3068\u306f\u3001Rails \u958b\u767a\u8005\u306b\u306a\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u8981\u4ef6\u306e 1 \u3064\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30d3\u30e5\u30fc\u5185\u306e\u30ec\u30a4\u30a2\u30a6\u30c8<\/strong><\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30d3\u30e5\u30fc\u30b3\u30fc\u30c9\u3092\u5171\u6709\u3067\u304d\u307e\u3059\u3002 \u30ec\u30a4\u30a2\u30a6\u30c8\u306f\u3001\u30d8\u30c3\u30c0\u30fc\u3001\u30d5\u30c3\u30bf\u30fc\u3001\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 \u30d0\u30fc\u306a\u3069\u306e\u4e00\u822c\u7684\u306a\u30d3\u30e5\u30fc\u8981\u7d20\u3092\u542b\u3080\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u3059\u3002 \u30ec\u30a4\u30a2\u30a6\u30c8 \u30d5\u30a1\u30a4\u30eb\u306f &#8220;app\/views\/layouts&#8221; \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308a\u3001\u30d3\u30e5\u30fc\u3068\u540c\u3058 ERB \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u8a00\u8a9e\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u5358\u7d14\u306a\u30ec\u30a4\u30a2\u30a6\u30c8 \u30d5\u30a1\u30a4\u30eb\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erbCopy code<code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n  &lt;head&gt;\n    &lt;title&gt;My App&lt;\/title&gt;\n    &lt;%= csrf_meta_tags %&gt;\n    &lt;%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %&gt;\n    &lt;%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %&gt;\n  &lt;\/head&gt;\n  &lt;body&gt;\n    &lt;header&gt;\n      &lt;%= link_to 'My App', root_path %&gt;\n    &lt;\/header&gt;\n\n    &lt;main&gt;\n      &lt;%= yield %&gt;\n    &lt;\/main&gt;\n\n    &lt;footer&gt;\n      &amp;copy; My App &lt;%= Time.now.year %&gt;\n    &lt;\/footer&gt;\n  &lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001&#8221;application.html.erb&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30ec\u30a4\u30a2\u30a6\u30c8 \u30d5\u30a1\u30a4\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u30ec\u30a4\u30a2\u30a6\u30c8 \u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001HTML \u30da\u30fc\u30b8\u5168\u4f53\u306e\u57fa\u672c\u69cb\u9020\u304c\u542b\u307e\u308c\u3001\u30d8\u30c3\u30c0\u30fc\u3001\u30d5\u30c3\u30bf\u30fc\u3001\u304a\u3088\u3073\u30e1\u30a4\u30f3 \u30b3\u30f3\u30c6\u30f3\u30c4\u9818\u57df\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d7\u30e9\u30a4\u30de\u30ea\u30b3\u30f3\u30c6\u30f3\u30c4\u9818\u57df\u306e\u30d3\u30e5\u30fc\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002<code>yield<\/code><\/p>\n\n\n\n<p>\u30ec\u30a4\u30a2\u30a6\u30c8 \u30d5\u30a1\u30a4\u30eb\u306f\u30d3\u30e5\u30fc \u30d5\u30a1\u30a4\u30eb\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30a2\u30d7\u30ea\/\u30d3\u30e5\u30fc\/\u8a18\u4e8b\/index.html.erb&#8221; \u30d3\u30e5\u30fc \u30d5\u30a1\u30a4\u30eb\u3067\u30ec\u30a4\u30a2\u30a6\u30c8 \u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erbCopy code<code>&lt;% content_for :title do %&gt;\n  Articles\n&lt;% end %&gt;\n\n&lt;ul&gt;\n  &lt;% @articles.each do |article| %&gt;\n    &lt;li&gt;\n      &lt;%= link_to article.title, article %&gt;\n      &lt;p&gt;&lt;%= article.content %&gt;&lt;\/p&gt;\n    &lt;\/li&gt;\n  &lt;% end %&gt;\n&lt;\/ul&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066 &#8220;title&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u9818\u57df\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u306e\u5185\u5bb9\u3092 &#8220;Articles&#8221; \u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 \u30ec\u30a4\u30a2\u30a6\u30c8 \u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30da\u30fc\u30b8\u306e title \u8981\u7d20\u306b\u30bf\u30a4\u30c8\u30eb\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002<code>content_for<\/code><code>yield(:title)<\/code><\/p>\n\n\n\n<p>\u7d50\u8ad6\u3068\u3057\u3066\u3001\u30ec\u30a4\u30a2\u30a6\u30c8\u306fRails\u306e\u91cd\u8981\u306a\u30d3\u30e5\u30fc\u6982\u5ff5\u306e1\u3064\u3067\u3059\u3002 \u30ec\u30a4\u30a2\u30a6\u30c8\u306e\u4f7f\u7528\u65b9\u6cd5\u3092\u77e5\u3063\u3066\u3044\u308b\u3068\u3001\u30d3\u30e5\u30fc \u30b3\u30fc\u30c9\u3092\u3088\u308a\u9069\u5207\u306b\u6574\u7406\u3057\u3066\u5171\u6709\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u3068\u30ec\u30a4\u30a2\u30a6\u30c8\u306f Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4e2d\u6838\u90e8\u5206\u3067\u3042\u308b\u305f\u3081\u3001\u30d3\u30e5\u30fc\u3068\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u4f5c\u6210\u304a\u3088\u3073\u69cb\u6210\u3059\u308b\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001Rails \u958b\u767a\u8005\u306b\u306a\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u8981\u4ef6\u306e 1 \u3064\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306b\u57cb\u3081\u8fbc\u307e\u308c\u305fRuby\u30b3\u30fc\u30c9(ERB)\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3001ChatGPT\u30d3\u30e5\u30fc\u3092\u8868\u793a\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30d3\u30e5\u30fc\u306f ERB (Embedded Ruby) \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3057\u3066\u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002 ERB\u306f\u3001HTML\u30da\u30fc\u30b8\u306bRuby\u30b3\u30fc\u30c9\u3092\u57cb\u3081\u8fbc\u307f\u3001\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u6642\u306b\u89e3\u6790\u3057\u3066\u5b9f\u884c\u3067\u304d\u308b\u57cb\u3081\u8fbc\u307fRuby\u30b3\u30fc\u30c9\u5f62\u5f0f\u3067\u3059\u3002 ERB \u30bf\u30b0\u306f\u3001&#8221;&lt;% %&gt;&#8221; \u307e\u305f\u306f &#8220;&lt;% = %&gt;&#8221; \u306e\u5f62\u5f0f\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>ERB \u69cb\u6587<\/strong><\/p>\n\n\n\n<p>ERB \u3067\u306f\u3001\u4ee5\u4e0b\u306e\u69cb\u6587\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>&lt;% %&gt;<\/code>: HTML \u30da\u30fc\u30b8\u306b Ruby \u30b3\u30fc\u30c9\u3092\u57cb\u3081\u8fbc\u307f\u307e\u3059\u304c\u3001\u4f55\u3082\u8fd4\u3057\u307e\u305b\u3093\u3002 \u3053\u308c\u306f\u901a\u5e38\u3001\u6761\u4ef6\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3068\u30eb\u30fc\u30d7\u69cb\u9020\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>&lt;%= %&gt;<\/code>: HTML \u30da\u30fc\u30b8\u306b Ruby \u30b3\u30fc\u30c9\u3092\u57cb\u3081\u8fbc\u307f\u3001\u305d\u306e\u7d50\u679c\u3092 HTML \u30da\u30fc\u30b8\u306e\u4e00\u90e8\u3068\u3057\u3066\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002 \u3053\u308c\u306f\u901a\u5e38\u3001\u5909\u6570\u3068\u30e1\u30bd\u30c3\u30c9\u306e\u623b\u308a\u5024\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30d3\u30e5\u30fc\u3067 ERB \u69cb\u6587\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erbCopy code<code>&lt;% if @articles.any? %&gt;\n  &lt;ul&gt;\n    &lt;% @articles.each do |article| %&gt;\n      &lt;li&gt;&lt;%= link_to article.title, article %&gt;&lt;\/li&gt;\n    &lt;% end %&gt;\n  &lt;\/ul&gt;\n&lt;% else %&gt;\n  &lt;p&gt;No articles found.&lt;\/p&gt;\n&lt;% end %&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001SUM\u69cb\u6587\u3092\u4f7f\u7528\u3057\u3066Ruby\u30b3\u30fc\u30c9\u3092\u57cb\u3081\u8fbc\u307f\u307e\u3059\u3002 \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3068\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3059\u3079\u3066\u306e\u8a18\u4e8b\u3092\u30eb\u30fc\u30d7\u3057\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30bf\u30a4\u30c8\u30eb\u3092HTML\u30ea\u30f3\u30af\u3068\u3057\u3066\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002<code>&lt;% %&gt;<\/code><code>&lt;%= %&gt;<\/code><code>if<\/code><code>each<\/code><code>link_to<\/code><\/p>\n\n\n\n<p><strong>ERB \u306e\u5909\u6570\u3068\u30e1\u30bd\u30c3\u30c9<\/strong><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3068\u88dc\u52a9\u30e1\u30bd\u30c3\u30c9\u306f\u3001ERB \u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30d3\u30e5\u30fc\u3067\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570 &#8220;@articles&#8221; \u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erbCopy code<code>&lt;% @articles.each do |article| %&gt;\n  &lt;h2&gt;&lt;%= article.title %&gt;&lt;\/h2&gt;\n  &lt;p&gt;&lt;%= article.content %&gt;&lt;\/p&gt;\n&lt;% end %&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u3059\u3079\u3066\u306e\u8a18\u4e8b\u3092\u30eb\u30fc\u30d7\u3057\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u5404\u8a18\u4e8b\u306e\u30bf\u30a4\u30c8\u30eb\u3068\u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002<code>@articles<\/code><code>article<\/code><\/p>\n\n\n\n<p>\u30d3\u30e5\u30fc\u3067\u30d8\u30eb\u30d1\u30fc \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u30d8\u30eb\u30d1\u30fc \u30e1\u30bd\u30c3\u30c9\u306e\u4f7f\u7528\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<code>current_user<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erbCopy code<code>&lt;% if current_user %&gt;\n  &lt;p&gt;Welcome, &lt;%= current_user.username %&gt;!&lt;\/p&gt;\n&lt;% else %&gt;\n  &lt;%= link_to \"Sign up\", new_user_path %&gt; or &lt;%= link_to \"Sign in\", login_path %&gt;.\n&lt;% end %&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u304c\u73fe\u5728\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3001\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u300c\u30b5\u30a4\u30f3\u30a2\u30c3\u30d7\u300d\u30ea\u30f3\u30af\u3068\u300c\u30b5\u30a4\u30f3\u30a4\u30f3\u300d\u30ea\u30f3\u30af\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002<code>current_user<\/code><code>link_to<\/code><\/p>\n\n\n\n<p>\u7d50\u8ad6\u3068\u3057\u3066\u3001ERB\u306fRails\u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e1\u3064\u3067\u3059\u3002 \u30d3\u30e5\u30fc\u3067 ERB \u69cb\u6587\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3001\u304a\u3088\u3073\u30d8\u30eb\u30d1\u30fc \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001\u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u3088\u308a\u9069\u5207\u306b\u8868\u793a\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 ERB \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u52d5\u7684 Ruby \u30b3\u30fc\u30c9\u3068\u9759\u7684 HTML \u30b3\u30fc\u30c9\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u3001\u5f37\u529b\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u304cChatGPT\u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3057\u3066\u69cb\u6210\u3059\u308b\u3053\u3068\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30e2\u30c7\u30eb\u306f\u30c7\u30fc\u30bf\u306e\u64cd\u4f5c\u306e\u4e2d\u6838\u90e8\u5206\u3067\u3059\u3002 \u30e2\u30c7\u30eb\u306f\u901a\u5e38\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u8a18\u4e8b\u3001\u88fd\u54c1\u306a\u3069\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306e\u30c7\u30fc\u30bf \u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u8868\u3057\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u306e\u5bfe\u8a71\u3092\u51e6\u7406\u3057\u3001\u30c7\u30fc\u30bf\u306e\u691c\u8a3c\u3001\u30af\u30a8\u30ea\u3001\u95a2\u9023\u4ed8\u3051\u306a\u3069\u3001\u591a\u304f\u306e\u4fbf\u5229\u306a\u30e1\u30bd\u30c3\u30c9\u3068\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u65b0\u3057\u3044\u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001Rails \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>rails generate model ModelName attribute1:type attribute2:type ...\n<\/code><\/pre>\n\n\n\n<p>\u305d\u306e\u4e2d\u3067\u3001&#8221;ModelName&#8221; \u306f\u4f5c\u6210\u3059\u308b\u30e2\u30c7\u30eb\u306e\u540d\u524d\u3067\u3042\u308a\u3001&#8221;\u5c5e\u6027 1&#8243; \u3068 &#8220;\u5c5e\u6027 2&#8221; \u306f &#8220;\u30bf\u30a4\u30c8\u30eb&#8221;\u3001&#8221;\u30b3\u30f3\u30c6\u30f3\u30c4&#8221;\u3001&#8221;\u30e6\u30fc\u30b6\u30fc\u540d&#8221; \u306a\u3069\u306e\u30e2\u30c7\u30eb\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u540d\u3067\u3059\u3002 \u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u578b\u306b\u306f\u3001\u6587\u5b57\u5217 (&#8220;\u6587\u5b57\u5217&#8221;)\u3001\u30c6\u30ad\u30b9\u30c8 (&#8220;\u30c6\u30ad\u30b9\u30c8&#8221;)\u3001\u6574\u6570 (&#8220;\u6574\u6570&#8221;)\u3001&lt;&gt; \u9032\u6570 (&#8220;\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570&#8221;)\u3001\u30d6\u30fc\u30eb\u5024 (&#8220;\u30d6\u30fc\u30eb\u5024&#8221;) \u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u30bf\u30a4\u30c8\u30eb\u3001\u30b3\u30f3\u30c6\u30f3\u30c4\u3001\u304a\u3088\u3073\u516c\u958b\u65e5\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u542b\u3080 &#8220;Article&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">vbnetCopy code<code>rails generate model Article title:string content:text published_at:date\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u300c\u8a18\u4e8b\u300d\u30e2\u30c7\u30eb\u3092\u751f\u6210\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u300c\u8a18\u4e8b\u300d\u3068\u3044\u3046\u540d\u524d\u306e\u30c6\u30fc\u30d6\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30e2\u30c7\u30eb\u3092\u69cb\u6210\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u30e2\u30c7\u30eb\u306f\u3001\u6b21\u306e\u65b9\u6cd5\u3067\u69cb\u6210\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u5c5e\u6027<\/strong>\u306e\u691c\u8a3c: \u591a\u304f\u306e\u5834\u5408\u3001\u30e2\u30c7\u30eb\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3055\u308c\u305f\u30c7\u30fc\u30bf\u304c\u6709\u52b9\u3067\u5b8c\u5168\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001\u30c7\u30fc\u30bf\u306e\u691c\u8a3c\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 Rails \u3067\u306f\u3001\u30e2\u30c7\u30eb\u3067\u691c\u8a3c\u30eb\u30fc\u30eb\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001&#8221;Article&#8221; \u30e2\u30c7\u30eb\u3067\u691c\u8a3c\u30eb\u30fc\u30eb\u3092\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002 \u30eb\u30d3\u30fc\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066 2 \u3064\u306e\u691c\u8a3c\u30eb\u30fc\u30eb\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002 \u6700\u521d\u306e\u30eb\u30fc\u30eb\u3067\u306f &#8220;title&#8221; \u5c5e\u6027\u3092\u7a7a\u306b\u3057\u306a\u3044\u3053\u3068\u3092\u8981\u6c42\u3057\u30012 \u756a\u76ee\u306e\u30eb\u30fc\u30eb\u3067\u306f &#8220;content&#8221; \u5c5e\u6027\u3092\u7a7a\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 \u691c\u8a3c\u306b\u5931\u6557\u3057\u305f\u5834\u5408\u3001\u30e2\u30c7\u30eb\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3067\u304d\u305a\u3001\u30a8\u30e9\u30fc \u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002<code>class Article &lt; ApplicationRecord validates :title, presence: true validates :content, presence: true end&nbsp;<\/code><code>validates<\/code><\/li>\n\n\n\n<li><strong>\u30a2\u30bd\u30b7\u30a8\u30fc\u30b7\u30e7\u30f3<\/strong>\u30fb\u30e2\u30c7\u30eb: Rails \u3067\u306f\u3001\u30e2\u30c7\u30eb\u306f\u30a2\u30bd\u30b7\u30a8\u30fc\u30b7\u30e7\u30f3\u3092\u4ecb\u3057\u3066\u4ed6\u306e\u30e2\u30c7\u30eb\u3068\u5bfe\u8a71\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001&#8221;Article&#8221; \u30e2\u30c7\u30eb\u3067 &#8220;User&#8221; \u30e2\u30c7\u30eb\u3068\u306e\u95a2\u9023\u4ed8\u3051\u3092\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002 ruby\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001&#8221;Article&#8221; \u30e2\u30c7\u30eb\u304b\u3089 &#8220;User&#8221; \u30e2\u30c7\u30eb\u3078\u306e\u95a2\u9023\u4ed8\u3051\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u3053\u308c\u306f\u3001\u5404\u8a18\u4e8b\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u5c5e\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002 &#8220;Article&#8221; \u30e2\u30c7\u30eb\u306b &#8220;user_id&#8221; \u5c5e\u6027\u3092\u8ffd\u52a0\u3059\u308b\u3068\u3001\u3053\u306e\u95a2\u9023\u4ed8\u3051\u3092\u4f7f\u7528\u3057\u3066\u8a18\u4e8b\u3092\u305d\u306e\u4f5c\u6210\u8005\u306b\u30ea\u30f3\u30af\u3067\u304d\u307e\u3059\u3002<code>class Article &lt; ApplicationRecord belongs_to :user end&nbsp;<\/code><code>belongs_to<\/code><\/li>\n\n\n\n<li><strong>\u30e2\u30c7\u30eb<\/strong>\u30e1\u30bd\u30c3\u30c9: \u30e2\u30c7\u30eb\u306f\u3001\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3057\u3001\u4ed6\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u72ec\u81ea\u306e\u30e1\u30bd\u30c3\u30c9\u3068\u6a5f\u80fd\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001&#8221;Article&#8221; \u30e2\u30c7\u30eb\u3067 &#8220;publish?&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u300c\u516c\u958b\u6e08\u307f?\u300d\u3068\u3044\u3046\u30b3\u30fc\u30c9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u306f\u3001&#8221;published_at&#8221; \u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u5b58\u5728\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\u3057\u307e\u3059\u3002 \u5b58\u5728\u3059\u308b\u5834\u5408\u3001\u8a18\u4e8b\u306f\u516c\u958b\u3055\u308c\u3001\u8fd4\u3055\u308c\u307e\u3059\u3002 \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306f\u623b\u308a\u307e\u3059\u3002<code>class Article &lt; ApplicationRecord def published? published_at.present? end end&nbsp;<\/code><code>true<\/code><code>false<\/code><\/li>\n<\/ul>\n\n\n\n<p>\u7d50\u8ad6\u3068\u3057\u3066\u3001\u30e2\u30c7\u30eb\u306fRails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30a2\u90e8\u5206\u306e1\u3064\u3067\u3059\u3002 \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u304a\u3088\u3073\u69cb\u6210\u3059\u308b\u65b9\u6cd5\u3092\u5b66\u7fd2\u3059\u308b<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u3088\u308a\u5f37\u529b\u3067\u67d4\u8edf\u306aWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u69cb\u7bc9\u3092\u652f\u63f4\u3057\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u3092\u69cb\u6210\u3059\u308b\u306b\u306f\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u691c\u8a3c\u3001\u30e2\u30c7\u30eb\u306e\u95a2\u9023\u4ed8\u3051\u3001\u30ab\u30b9\u30bf\u30e0 \u30e1\u30bd\u30c3\u30c9\u306a\u3069\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306e\u30c7\u30fc\u30bf\u304c\u6709\u52b9\u3001\u5b8c\u5168\u3001\u304a\u3088\u3073\u5b89\u5168\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044 ChatGPT<\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u3092\u7ba1\u7406\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u624b\u52d5\u3067\u66f4\u65b0\u3059\u308b\u3053\u3068\u306a\u304f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u9020\u306e\u5909\u66f4\u3001\u30c6\u30fc\u30d6\u30eb\u3084\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8ffd\u52a0\u307e\u305f\u306f\u524a\u9664\u306a\u3069\u3092\u7c21\u5358\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u306e\u76ee\u7684\u306f\u3001\u7570\u306a\u308b\u958b\u767a\u74b0\u5883\u3068\u30c1\u30fc\u30e0 \u30e1\u30f3\u30d0\u30fc\u9593\u306e\u69cb\u9020\u306e\u4e0d\u6574\u5408\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u9020\u3092\u30b3\u30fc\u30c9 \u30d9\u30fc\u30b9\u3068\u540c\u671f\u3055\u305b\u308b\u3053\u3068\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>\u79fb\u884c\u3092\u4f5c\u6210\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u65b0\u3057\u3044\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001Rails \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>rails generate migration MigrationName\n<\/code><\/pre>\n\n\n\n<p>\u3053\u3053\u3067\u3001&#8221;\u79fb\u884c\u540d&#8221; \u306f\u3001\u4f5c\u6210\u3059\u308b\u79fb\u884c\u306e\u540d\u524d\u3067\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001&#8221;AddEmailToUsers&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u79fb\u884c\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>rails generate migration AddEmailToUsers\n<\/code><\/pre>\n\n\n\n<p><strong>\u79fb\u884c\u3092\u5b9a\u7fa9\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u79fb\u884c\u3092\u4f5c\u6210\u3057\u305f\u3089\u3001\u305f\u3068\u3048\u3070\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308b\u65b0\u3057\u304f\u751f\u6210\u3055\u308c\u305f\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3001Rails \u304c\u63d0\u4f9b\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u5909\u66f4\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001AddEmailToUsers \u79fb\u884c\u3067 &#8220;email&#8221; \u5217\u3092\u8ffd\u52a0\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<code>db\/migrate<\/code><code>db\/migrate\/20210428093105_add_email_to_users.rb<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class AddEmailToUsers &lt; ActiveRecord::Migration[6.1]\n  def change\n    add_column :users, :email, :string\n  end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066 &#8220;email&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u6587\u5b57\u5217\u5217\u3092 &#8220;users&#8221; \u30c6\u30fc\u30d6\u30eb\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002 \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30c6\u30fc\u30d6\u30eb\u540d\u3001\u5217\u540d\u3001\u304a\u3088\u3073\u5217\u306e\u578b\u306e 3 \u3064\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002<code>add_column<\/code><\/p>\n\n\n\n<p><strong>\u79fb\u884c\u3092\u5b9f\u884c\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u79fb\u884c\u3092\u5b9a\u7fa9\u3057\u305f\u3089\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u9069\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>rails db:migrate\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u307e\u3060\u5b9f\u884c\u3055\u308c\u3066\u3044\u306a\u3044\u3059\u3079\u3066\u306e\u79fb\u884c\u3092\u5b9f\u884c\u3057\u3001\u5909\u66f4\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u9069\u7528\u3057\u307e\u3059\u3002 \u79fb\u884c\u3092\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3059\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sqlCopy code<code>rails db:rollback\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u6700\u65b0\u306e\u79fb\u884c\u3092\u5143\u306b\u623b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u79fb\u884c\u3092\u5909\u66f4\u3059\u308b<\/strong><\/p>\n\n\n\n<p>\u4ee5\u524d\u306b\u4f5c\u6210\u3057\u305f\u79fb\u884c\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u5909\u66f4\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6\u3057\u3066\u5909\u66f4\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u4ee5\u524d\u306e\u79fb\u884c\u3092\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3057\u307e\u3059\u3002<code>rails db:rollback<\/code><\/li>\n\n\n\n<li>\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u79fb\u884c\u3092\u518d\u5b9f\u884c\u3057\u307e\u3059\u3002 \u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>rails db:migrate<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u5909\u66f4\u3092\u904b\u7528\u74b0\u5883\u306b\u65e2\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u4ee5\u524d\u306e\u79fb\u884c\u3092\u5909\u66f4\u307e\u305f\u306f\u524a\u9664\u3057\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u9020\u3092\u7ba1\u7406\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u4fbf\u5229\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002 Rails\u306e\u79fb\u884c\u6a5f\u80fd\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u624b\u52d5\u3067\u66f4\u65b0\u3059\u308b\u3053\u3068\u306a\u304f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u9020\u306e\u5909\u66f4\u3001\u30c6\u30fc\u30d6\u30eb\u3084\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8ffd\u52a0\u307e\u305f\u306f\u524a\u9664\u306a\u3069\u3092\u7c21\u5358\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u307e\u305f\u3001\u79fb\u884c\u306b\u3088\u308a\u3001\u8907\u6570\u306e\u958b\u767a\u74b0\u5883\u3068\u30c1\u30fc\u30e0 \u30e1\u30f3\u30d0\u30fc\u9593\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4e00\u8cab\u6027\u304c\u7dad\u6301\u3055\u308c\u3001\u30a8\u30e9\u30fc\u3084\u69cb\u9020\u306e\u4e0d\u6574\u5408\u306e\u53ef\u80fd\u6027\u304c\u6e1b\u5c11\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30a2\u30af\u30c6\u30a3\u30d6\u30ec\u30b3\u30fc\u30c9\u30af\u30a8\u30eaChatGPT\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails\u3067\u306f\u3001\u30a2\u30af\u30c6\u30a3\u30d6\u30ec\u30b3\u30fc\u30c9\u306fORM(\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30de\u30c3\u30d4\u30f3\u30b0)\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3042\u308a\u3001\u751f\u306eSQL\u30af\u30a8\u30ea\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u8a18\u8ff0\u3059\u308b\u3053\u3068\u306a\u304f\u3001Ruby\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u5f37\u529b\u306a\u6a5f\u80fd\u306e 1 \u3064\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u304a\u3088\u3073\u30d5\u30a3\u30eb\u30bf\u30fc\u51e6\u7406\u3067\u304d\u308b\u30af\u30a8\u30ea\u3067\u3059\u3002 \u30a2\u30af\u30c6\u30a3\u30d6\u30fb\u30ec\u30b3\u30fc\u30c9\u7167\u4f1a\u306f\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u30fb\u30e1\u30bd\u30c3\u30c9\u30fb\u30c1\u30a7\u30fc\u30f3\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3068 SQL \u30b9\u30c8\u30ea\u30f3\u30b0\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u306e 2 \u3064\u3067\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30ad\u30fc\u30ef\u30fc\u30c9 \u30e1\u30bd\u30c3\u30c9 \u30c1\u30a7\u30fc\u30f3 \u30af\u30a8\u30ea<\/strong><\/p>\n\n\n\n<p>\u30ad\u30fc\u30ef\u30fc\u30c9 \u30e1\u30bd\u30c3\u30c9 \u30c1\u30a7\u30fc\u30f3 \u30af\u30a8\u30ea\u306f\u3001\u4e00\u9023\u306e\u30ad\u30fc\u30ef\u30fc\u30c9 \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30af\u30a8\u30ea\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002 \u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30e2\u30c7\u30eb\u5185\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u95a2\u9023\u4ed8\u3051\u306b\u57fa\u3065\u3044\u3066\u304a\u308a\u3001\u30c1\u30a7\u30fc\u30f3\u3068\u547c\u3076\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30ad\u30fc\u30ef\u30fc\u30c9 \u30e1\u30bd\u30c3\u30c9 \u30c1\u30a7\u30fc\u30f3 \u30af\u30a8\u30ea\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code># \u67e5\u8be2\u6240\u6709\u5df2\u53d1\u5e03\u7684\u6587\u7ae0\nArticle.where(published: true)\n\n# \u67e5\u8be2\u6700\u8fd1\u53d1\u5e03\u7684\u4e94\u7bc7\u6587\u7ae0\nArticle.where(published: true).order(published_at: :desc).limit(5)\n\n# \u67e5\u8be2\u5305\u542b\u201cRuby\u201d\u5173\u952e\u5b57\u7684\u6587\u7ae0\nArticle.where(\"content LIKE ?\", \"%Ruby%\")\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u3001\u306a\u3069\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3057\u305f\u3002 \u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u8907\u96d1\u306a\u30af\u30a8\u30ea\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3057\u3001\u30af\u30a8\u30ea\u306b\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u95a2\u9023\u4ed8\u3051\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<code>where<\/code><code>order<\/code><code>limit<\/code><code>like<\/code><\/p>\n\n\n\n<p><strong>SQL \u6587\u5b57\u5217\u30af\u30a8\u30ea<\/strong><\/p>\n\n\n\n<p>\u5225\u306e\u30af\u30a8\u30ea\u65b9\u6cd5\u306f\u3001SQL \u6587\u5b57\u5217\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\u3002 \u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3\u3088\u308a\u3082\u67d4\u8edf\u6027\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002 SQL \u6587\u5b57\u5217\u30af\u30a8\u30ea\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code># \u4f7f\u7528SQL\u5b57\u7b26\u4e32\u67e5\u8be2\u6240\u6709\u5df2\u53d1\u5e03\u7684\u6587\u7ae0\nArticle.find_by_sql(\"SELECT * FROM articles WHERE published = true\")\n\n# \u4f7f\u7528SQL\u5b57\u7b26\u4e32\u67e5\u8be2\u6700\u8fd1\u53d1\u5e03\u7684\u4e94\u7bc7\u6587\u7ae0\nArticle.find_by_sql(\"SELECT * FROM articles WHERE published = true ORDER BY published_at DESC LIMIT 5\")\n\n# \u4f7f\u7528SQL\u5b57\u7b26\u4e32\u67e5\u8be2\u5305\u542b\u201cRuby\u201d\u5173\u952e\u5b57\u7684\u6587\u7ae0\nArticle.find_by_sql(\"SELECT * FROM articles WHERE content LIKE '%Ruby%'\")\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3001SQL \u30af\u30a8\u30ea\u6587\u5b57\u5217\u3092\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u3057\u3066\u6e21\u3057\u307e\u3057\u305f\u3002 \u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u3088\u308a\u3001\u751f\u306eSQL\u30af\u30a8\u30ea\u3092\u76f4\u63a5\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002<code>find_by_sql<\/code><\/p>\n\n\n\n<p>\u7d50\u8ad6\u3068\u3057\u3066\u3001\u30a2\u30af\u30c6\u30a3\u30d6\u30fb\u30ec\u30b3\u30fc\u30c9\u7167\u4f1a\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u304a\u3088\u3073\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002 \u30ad\u30fc\u30ef\u30fc\u30c9 \u30e1\u30bd\u30c3\u30c9 \u30c1\u30a7\u30fc\u30f3\u307e\u305f\u306f SQL \u6587\u5b57\u5217\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u8907\u96d1\u306a\u30af\u30a8\u30ea\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3057\u3001\u5c5e\u6027\u3068\u95a2\u9023\u4ed8\u3051\u3092\u30af\u30a8\u30ea\u306b\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3069\u3061\u3089\u306e\u65b9\u6cd5\u3092\u9078\u629e\u3059\u308b\u5834\u5408\u3067\u3082\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u554f\u984c\u3092\u8a8d\u8b58\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u30af\u30a8\u30ea \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u9069\u5207\u306a\u30a8\u30b9\u30b1\u30fc\u30d7\u3068\u691c\u8a3c\u3092\u78ba\u4fdd\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30e2\u30c7\u30eb\u306e\u76f8\u95a2\u3068\u691c\u8a3cChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30e2\u30c7\u30eb\u306e\u95a2\u9023\u4ed8\u3051\u3068\u59a5\u5f53\u6027\u691c\u67fb\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30c7\u30fc\u30bf\u3092\u7ba1\u7406\u3057\u3001\u30c7\u30fc\u30bf\u306e\u6709\u52b9\u6027\u3068\u6574\u5408\u6027\u3092\u78ba\u4fdd\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064 2 \u3064\u306e\u91cd\u8981\u306a\u6982\u5ff5\u3067\u3059\u3002 \u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30e2\u30c7\u30eb\u306e\u95a2\u9023\u4ed8\u3051\u3068\u691c\u8a3c\u3092\u5b9a\u7fa9\u3057\u3066\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30e2\u30c7\u30eb\u306e\u95a2\u9023\u4ed8\u3051<\/strong><\/p>\n\n\n\n<p>\u30e2\u30c7\u30eb\u306e\u95a2\u9023\u4ed8\u3051\u3068\u306f\u30011 \u5bfe\u591a\u3001\u591a\u5bfe\u591a\u30011 \u5bfe 1 \u306a\u3069\u306e\u30e2\u30c7\u30eb\u9593\u306e\u95a2\u4fc2\u306e\u78ba\u7acb\u3092\u6307\u3057\u307e\u3059\u3002 \u30ea\u30ec\u30fc\u30b7\u30e7\u30f3\u30b7\u30c3\u30d7\u3092\u78ba\u7acb\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30bd\u30b7\u30a8\u30fc\u30b7\u30e7\u30f3 \u30e2\u30c7\u30eb\u306e\u30c7\u30fc\u30bf\u306b\u7c21\u5358\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u64cd\u4f5c\u3067\u304d\u308b\u305f\u3081\u3001\u30b3\u30fc\u30c9\u304c\u7c21\u7d20\u5316\u3055\u308c\u3001\u52b9\u7387\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u306e\u95a2\u9023\u4ed8\u3051\u306e\u4e00\u822c\u7684\u306a\u30bf\u30a4\u30d7\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e00\u5bfe\u591a\u30ea\u30ec\u30fc\u30b7\u30e7\u30f3\u30b7\u30c3\u30d7: \u30e2\u30c7\u30eb\u306b\u306f\u8907\u6570\u306e\u30e2\u30c7\u30eb\u304c\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u591a\u5bfe\u591a\u30ea\u30ec\u30fc\u30b7\u30e7\u30f3\u30b7\u30c3\u30d7: \u8907\u6570\u306e\u30e2\u30c7\u30eb\u304c\u76f8\u4e92\u306b\u95a2\u9023\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>1 \u5bfe 1 \u306e\u30ea\u30ec\u30fc\u30b7\u30e7\u30f3\u30b7\u30c3\u30d7: \u30e2\u30c7\u30eb\u306f\u30011 \u3064\u306e\u30a2\u30bd\u30b7\u30a8\u30fc\u30b7\u30e7\u30f3 \u30e2\u30c7\u30eb\u306b\u306e\u307f\u95a2\u9023\u4ed8\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u6b21\u306b\u3001\u30e2\u30c7\u30eb\u306e\u95a2\u9023\u4ed8\u3051\u3092\u5b9a\u7fa9\u3059\u308b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code># \u4e00\u5bf9\u591a\u5173\u7cfb\nclass User &lt; ApplicationRecord\n  has_many :posts\nend\n\nclass Post &lt; ApplicationRecord\n  belongs_to :user\nend\n\n# \u591a\u5bf9\u591a\u5173\u7cfb\nclass User &lt; ApplicationRecord\n  has_many :subscriptions\n  has_many :magazines, through: :subscriptions\nend\n\nclass Subscription &lt; ApplicationRecord\n  belongs_to :user\n  belongs_to :magazine\nend\n\nclass Magazine &lt; ApplicationRecord\n  has_many :subscriptions\n  has_many :users, through: :subscriptions\nend\n\n# \u4e00\u5bf9\u4e00\u5173\u7cfb\nclass User &lt; ApplicationRecord\n  has_one :profile\nend\n\nclass Profile &lt; ApplicationRecord\n  belongs_to :user\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u30011 \u5bfe\u591a\u3001\u591a\u5bfe\u591a\u3001\u304a\u3088\u3073 1 \u5bfe 1 \u306e\u95a2\u4fc2\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002 \u306f\u3001\u30a2\u30bd\u30b7\u30a8\u30fc\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3057\u3001\u591a\u5bfe\u591a\u30a2\u30bd\u30b7\u30a8\u30fc\u30b7\u30e7\u30f3\u306e\u4e2d\u9593\u30c6\u30fc\u30d6\u30eb\u3092\u5b9a\u7fa9\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3067\u3059\u3002 \u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30a2\u30bd\u30b7\u30a8\u30fc\u30b7\u30e7\u30f3 \u30e2\u30c7\u30eb\u5185\u306e\u30c7\u30fc\u30bf\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3068\u64cd\u4f5c\u304c\u5bb9\u6613\u306b\u306a\u308a\u3001\u30b3\u30fc\u30c9\u304c\u7c21\u7d20\u5316\u3055\u308c\u3001\u52b9\u7387\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<code>has_many<\/code><code>belongs_to<\/code><code>through<\/code><\/p>\n\n\n\n<p><strong>\u30e2\u30c7\u30eb\u306e\u691c\u8a3c<\/strong><\/p>\n\n\n\n<p>\u30e2\u30c7\u30eb\u306e\u691c\u8a3c\u3068\u306f\u3001\u30e2\u30c7\u30eb\u3092\u4fdd\u5b58\u307e\u305f\u306f\u66f4\u65b0\u3059\u308b\u524d\u306b\u3001\u30e2\u30c7\u30eb\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u305d\u306e\u6709\u52b9\u6027\u3068\u6574\u5408\u6027\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3067\u3059\u3002 \u3053\u308c\u3089\u306e\u30c1\u30a7\u30c3\u30af\u306b\u3088\u308a\u3001\u7121\u52b9\u306a\u30c7\u30fc\u30bf\u306e\u4fdd\u5b58\u304c\u9632\u6b62\u3055\u308c\u3001\u30a8\u30e9\u30fc\u306b\u95a2\u3059\u308b\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u304c\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u691c\u8a3c\u306e\u4e00\u822c\u7684\u306a\u7a2e\u985e\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d7\u30ec\u30bc\u30f3\u30b9\u691c\u8a3c: \u5c5e\u6027\u304c\u5b58\u5728\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5f62\u5f0f\u306e\u691c\u8a3c: \u5c5e\u6027\u306e\u5f62\u5f0f\u304c\u8981\u4ef6\u3092\u6e80\u305f\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u9577\u3055\u306e\u691c\u8a3c: \u5c5e\u6027\u306e\u9577\u3055\u304c\u8981\u4ef6\u3092\u6e80\u305f\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u6570\u5024\u691c\u8a3c: \u5c5e\u6027\u306e\u6570\u5024\u7bc4\u56f2\u304c\u8981\u4ef6\u3092\u6e80\u305f\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u30e2\u30c7\u30eb\u691c\u8a3c\u3092\u5b9a\u7fa9\u3059\u308b\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class User &lt; ApplicationRecord\n  validates :username, presence: true, uniqueness: true\n  validates :email, presence: true, format: { with: URI::MailTo::EMAIL_REGEXP }\n  validates :password, length: { minimum: 6 }\n  validates :age, numericality: { greater_than_or_equal_to: 18 }\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u306e\u691c\u8a3c\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u691c\u8a3c\u65b9\u6cd5\u306b\u3088\u308a\u3001\u30e2\u30c7\u30eb\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u59a5\u5f53\u6027\u3068\u5b8c\u5168\u6027\u3092\u7c21\u5358\u306b\u78ba\u8a8d\u3057\u3001\u30a8\u30e9\u30fc\u306b\u95a2\u3059\u308b\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002<code>validates<\/code><\/p>\n\n\n\n<p>\u4e00\u8a00\u3067\u8a00\u3048\u3070<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30e2\u30c7\u30eb\u306e\u95a2\u9023\u4ed8\u3051\u3068\u691c\u8a3c\u306f Rails \u306e\u91cd\u8981\u306a\u6982\u5ff5\u3067\u3042\u308a\u3001\u3053\u308c\u3089\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30c7\u30fc\u30bf\u3092\u7c21\u5358\u306b\u7ba1\u7406\u304a\u3088\u3073\u691c\u8a3c\u3067\u304d\u307e\u3059\u3002 1 \u5bfe\u591a\u3001\u591a\u5bfe\u591a\u3001\u307e\u305f\u306f 1 \u5bfe 1 \u306e\u30ea\u30ec\u30fc\u30b7\u30e7\u30f3\u30b7\u30c3\u30d7\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3067\u3082\u3001\u30e2\u30c7\u30eb\u5c5e\u6027\u306e\u5f62\u5f0f\u3001\u9577\u3055\u3001\u307e\u305f\u306f\u6570\u5024\u7bc4\u56f2\u3092\u691c\u8a3c\u3059\u308b\u5834\u5408\u3067\u3082\u3001\u30e2\u30c7\u30eb\u306e\u95a2\u9023\u4ed8\u3051\u3068\u691c\u8a3c\u306f\u4e0d\u53ef\u6b20\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u306b\u52a0\u3048\u3066\u3001Rails \u306b\u306f\u3001\u30e2\u30c7\u30eb\u306e\u95a2\u9023\u4ed8\u3051\u3068\u691c\u8a3c\u306e\u305f\u3081\u306e\u4ed6\u306e\u591a\u304f\u306e\u4fbf\u5229\u306a\u30e1\u30bd\u30c3\u30c9\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u3068\u304d\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3001\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3063\u3066\u69cb\u6210\u304a\u3088\u3073\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u307e\u305f\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u554f\u984c\u3092\u8a8d\u8b58\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u691c\u8a3c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u9069\u5207\u306a\u30a8\u30b9\u30b1\u30fc\u30d7\u3068\u691c\u8a3c\u3092\u78ba\u5b9f\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30d5\u30a9\u30fc\u30e0\u3068\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306e\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u51e6\u7406\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044 ChatGPT<\/p>\n\n\n\n<p>Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u306f\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u3092\u53ce\u96c6\u3057\u3066\u9001\u4fe1\u3059\u308b\u305f\u3081\u306e\u4e00\u822c\u7684\u306a\u65b9\u6cd5\u3067\u3059\u3002 Rails \u3067\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d5\u30a9\u30fc\u30e0\u3092\u3059\u3070\u3084\u304f\u4f5c\u6210\u304a\u3088\u3073\u51e6\u7406\u3067\u304d\u307e\u3059\u3002 \u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u3066\u64cd\u4f5c\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3059\u308b<\/strong><\/p>\n\n\n\n<p>Rails \u306b\u306f\u3001\u30c6\u30ad\u30b9\u30c8\u30d5\u30a3\u30fc\u30eb\u30c9\u3001\u30e9\u30b8\u30aa\u30dc\u30bf\u30f3\u3001\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3001\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u30ea\u30b9\u30c8\u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u30d5\u30a9\u30fc\u30e0\u8981\u7d20\u3092\u3059\u3070\u3084\u304f\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308b\u30d5\u30a9\u30fc\u30e0\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\u304c\u591a\u6570\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3059\u308b\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>&lt;%= form_with model: @user, url: users_path do |f| %&gt;\n  &lt;%= f.label :username %&gt;\n  &lt;%= f.text_field :username %&gt;\n\n  &lt;%= f.label :email %&gt;\n  &lt;%= f.email_field :email %&gt;\n\n  &lt;%= f.label :password %&gt;\n  &lt;%= f.password_field :password %&gt;\n\n  &lt;%= f.submit %&gt;\n&lt;% end %&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002 \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u30d5\u30a9\u30fc\u30e0\u3067\u4f7f\u7528\u3055\u308c\u308b\u30e2\u30c7\u30eb\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u6307\u5b9a\u3057\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u30d5\u30a9\u30fc\u30e0\u9001\u4fe1\u306e URL \u3092\u6307\u5b9a\u3057\u307e\u3059\u3002 \u30d6\u30ed\u30c3\u30af\u5185\u3067\u306f\u3001 \u3068 form \u8981\u7d20\u30d8\u30eb\u30d1\u30fc \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001 \u3084 \u306a\u3069\u306e\u30d5\u30a9\u30fc\u30e0\u8981\u7d20\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002 \u6700\u5f8c\u306b\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30df\u30c3\u30c8 \u30dc\u30bf\u30f3\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<code>form_with<\/code><code>model<\/code><code>url<\/code><code>form_with<\/code><code>label<\/code><code>text_field<\/code><code>email_field<\/code><code>password_field<\/code><code>submit<\/code><\/p>\n\n\n\n<p><strong>\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u51e6\u7406<\/strong><\/p>\n\n\n\n<p>\u30e6\u30fc\u30b6\u30fc\u304c\u30d5\u30a9\u30fc\u30e0\u3092\u9001\u4fe1\u3059\u308b\u3068\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u304a\u3088\u3073\u691c\u8a3c\u3057\u307e\u3059\u3002 \u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u51e6\u7406\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class UsersController &lt; ApplicationController\n  def create\n    @user = User.new(user_params)\n    if @user.save\n      redirect_to @user\n    else\n      render 'new'\n    end\n  end\n\n  private\n    def user_params\n      params.require(:user).permit(:username, :email, :password)\n    end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u3092\u51e6\u7406\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002 \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6e21\u3057\u307e\u3057\u305f\u3002 \u3053\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3068\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a3\u30eb\u30bf\u30fc\u51e6\u7406\u3092\u884c\u3044\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30c7\u30fc\u30bf\u3092\u5165\u529b\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30e1\u30bd\u30c3\u30c9\u3067\u3059\u3002 \u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u304c\u6709\u52b9\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u6b63\u5e38\u306b\u4fdd\u5b58\u3055\u308c\u305f\u5834\u5408\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u3092\u30e6\u30fc\u30b6\u30fc\u306e\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002 \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a9\u30fc\u30e0\u3092\u518d\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002<code>create<\/code><code>User.new<\/code><code>user_params<\/code><code>params<\/code><code>permit<\/code><code>redirect_to<\/code><code>render<\/code><\/p>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u306f\u9001\u4fe1\u3055\u308c\u305f\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u30ad\u30fc\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u8981\u6c42\u3057\u3001\u30e1\u30bd\u30c3\u30c9\u306f\u30e6\u30fc\u30b6\u30fc\u304c and \u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5165\u529b\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 \u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u3088\u308a\u3001\u60aa\u610f\u306e\u3042\u308b\u30e6\u30fc\u30b6\u30fc\u304c\u7121\u52b9\u306a\u30c7\u30fc\u30bf\u3084\u627f\u8a8d\u3055\u308c\u3066\u3044\u306a\u3044\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u306e\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<code>params.require<\/code><code>user<\/code><code>permit<\/code><code>username<\/code><code>email<\/code><code>password<\/code><\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Rails \u30d5\u30a9\u30fc\u30e0\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u304a\u3088\u3073\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u7c21\u5358\u306a\u65b9\u6cd5\u3067\u3059\u3002 \u3053\u308c\u3089\u306e\u30d8\u30eb\u30d1\u30fc \u30e1\u30bd\u30c3\u30c9\u3068\u6b63\u3057\u3044\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u3055\u307e\u3056\u307e\u306a\u30d5\u30a9\u30fc\u30e0\u8981\u7d20\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3057\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u304a\u3088\u3073\u691c\u8a3c\u3067\u304d\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u3068\u304d\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3001\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3063\u3066\u69cb\u6210\u304a\u3088\u3073\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u3042\u306a\u305f\u3082\u6ce8\u610f\u3092\u6255\u3046\u3079\u304d\u3067\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u554f\u984c\u3001\u304a\u3088\u3073\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u9055\u53cd\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u304a\u3088\u3073\u691c\u8a3c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u9069\u5207\u306a\u30a8\u30b9\u30b1\u30fc\u30d7\u3068\u691c\u8a3c\u3092\u78ba\u4fdd\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u306b\u52a0\u3048\u3066\u3001Rails \u306b\u306f\u4ed6\u306b\u3082\u591a\u304f\u306e\u4fbf\u5229\u306a\u30d5\u30a9\u30fc\u30e0\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u30ea\u30b9\u30c8\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30e9\u30b8\u30aa\u30dc\u30bf\u30f3\u306a\u3069\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002 \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u305f\u308a\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u30d9\u30fc\u30b9\u306e\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3055\u307e\u3056\u307e\u306a\u7a2e\u985e\u306e\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u3001\u958b\u767a\u52b9\u7387\u3092\u9ad8\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<code>collection_select<\/code><code>check_box<\/code><code>radio_button<\/code><code>form_tag<\/code><code>form_for<\/code><\/p>\n\n\n\n<p>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u3068\u304d\u306f\u3001\u6b21\u306e\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3082\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u9055\u53cd\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306e\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u306e\u9069\u5207\u306a\u691c\u8a3c\u3068\u30a8\u30b9\u30b1\u30fc\u30d7\u3002<\/li>\n\n\n\n<li>\u30d3\u30e5\u30fc\u306e\u30a8\u30e9\u30fc\u306b\u95a2\u3059\u308b\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u8868\u793a\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u554f\u984c\u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>AJAX \u30c6\u30af\u30ce\u30ed\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc \u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30e0\u3092\u7c21\u6f54\u306b\u4fdd\u3061\u3001\u30d5\u30a9\u30fc\u30e0\u8981\u7d20\u3068\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u591a\u7528\u3057\u3059\u304e\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u5185\u306e\u30b3\u30fc\u30c9\u3092\u3067\u304d\u308b\u3060\u3051\u518d\u5229\u7528\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Rails \u30d5\u30a9\u30fc\u30e0\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u304a\u3088\u3073\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u7c21\u5358\u306a\u65b9\u6cd5\u3067\u3059\u3002 \u3053\u308c\u3089\u306e\u30d8\u30eb\u30d1\u30fc \u30e1\u30bd\u30c3\u30c9\u3068\u6b63\u3057\u3044\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u3055\u307e\u3056\u307e\u306a\u30d5\u30a9\u30fc\u30e0\u8981\u7d20\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3057\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u304a\u3088\u3073\u691c\u8a3c\u3067\u304d\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u3068\u304d\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3001\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3063\u3066\u69cb\u6210\u304a\u3088\u3073\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30d5\u30a9\u30fc\u30e0\u3068\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u51e6\u7406\u30d5\u30a9\u30fc\u30e0\u9001\u4fe1ChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a9\u30fc\u30e0\u9001\u4fe1\u3092\u51e6\u7406\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u3092\u691c\u8a3c\u3067\u304d\u307e\u3059\u3002 \u30d5\u30a9\u30fc\u30e0\u9001\u4fe1\u306e\u51e6\u7406\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class UsersController &lt; ApplicationController\n  def create\n    @user = User.new(user_params)\n    if @user.save\n      redirect_to @user\n    else\n      render 'new'\n    end\n  end\n\n  private\n    def user_params\n      params.require(:user).permit(:username, :email, :password)\n    end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u306e\u9001\u4fe1\u3092\u51e6\u7406\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u5b9a\u7fa9\u3057\u307e\u3057\u305f\u3002 \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6e21\u3057\u307e\u3057\u305f\u3002 \u3053\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3068\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a3\u30eb\u30bf\u30fc\u51e6\u7406\u3092\u884c\u3044\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30c7\u30fc\u30bf\u3092\u5165\u529b\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30e1\u30bd\u30c3\u30c9\u3067\u3059\u3002 \u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u304c\u6709\u52b9\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u6b63\u5e38\u306b\u4fdd\u5b58\u3055\u308c\u305f\u5834\u5408\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u3092\u30e6\u30fc\u30b6\u30fc\u306e\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002 \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a9\u30fc\u30e0\u3092\u518d\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002<code>create<\/code><code>User.new<\/code><code>user_params<\/code><code>params<\/code><code>permit<\/code><code>redirect_to<\/code><code>render<\/code><\/p>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u306f\u9001\u4fe1\u3055\u308c\u305f\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u30ad\u30fc\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u8981\u6c42\u3057\u3001\u30e1\u30bd\u30c3\u30c9\u306f\u30e6\u30fc\u30b6\u30fc\u304c and \u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5165\u529b\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 \u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u3088\u308a\u3001\u60aa\u610f\u306e\u3042\u308b\u30e6\u30fc\u30b6\u30fc\u304c\u7121\u52b9\u306a\u30c7\u30fc\u30bf\u3084\u627f\u8a8d\u3055\u308c\u3066\u3044\u306a\u3044\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u306e\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<code>params.require<\/code><code>user<\/code><code>permit<\/code><code>username<\/code><code>email<\/code><code>password<\/code><\/p>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u306b\u52a0\u3048\u3066\u3001\u4ed6\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d5\u30a9\u30fc\u30e0\u306e\u9001\u4fe1\u3068\u691c\u8a3c\u3092\u51e6\u7406\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30c7\u30fc\u30bf\u3092\u66f4\u65b0\u3057\u305f\u308a\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u524a\u9664\u3057\u305f\u308a\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a9\u30fc\u30e0\u3092\u8868\u793a\u3057\u305f\u308a\u3067\u304d\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u3068\u304d\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3001\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3063\u3066\u69cb\u6210\u304a\u3088\u3073\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>update<\/code><code>destroy<\/code><code>new<\/code><\/p>\n\n\n\n<p>\u307e\u305f\u3001\u30d5\u30a9\u30fc\u30e0\u306e\u9001\u4fe1\u3092\u51e6\u7406\u3059\u308b\u969b\u306b\u306f\u3001\u6b21\u306e\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3082\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u9055\u53cd\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306e\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u306e\u9069\u5207\u306a\u691c\u8a3c\u3068\u30a8\u30b9\u30b1\u30fc\u30d7\u3002<\/li>\n\n\n\n<li>\u30d3\u30e5\u30fc\u306e\u30a8\u30e9\u30fc\u306b\u95a2\u3059\u308b\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u8868\u793a\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u554f\u984c\u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>AJAX \u30c6\u30af\u30ce\u30ed\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc \u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30e0\u3092\u7c21\u6f54\u306b\u4fdd\u3061\u3001\u30d5\u30a9\u30fc\u30e0\u8981\u7d20\u3068\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u591a\u7528\u3057\u3059\u304e\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u5185\u306e\u30b3\u30fc\u30c9\u3092\u3067\u304d\u308b\u3060\u3051\u518d\u5229\u7528\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Rails\u306f\u30d5\u30a9\u30fc\u30e0\u306e\u9001\u4fe1\u3068\u691c\u8a3c\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u3055\u307e\u3056\u307e\u306a\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3068\u6b63\u3057\u3044\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u3092\u7c21\u5358\u306b\u51e6\u7406\u304a\u3088\u3073\u691c\u8a3c\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u9055\u53cd\u304b\u3089\u4fdd\u8b77\u3067\u304d\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u3068\u304d\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3001\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3063\u3066\u69cb\u6210\u304a\u3088\u3073\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30d5\u30a9\u30fc\u30e0\u3068\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u51e6\u7406\u3001\u30d5\u30a9\u30fc\u30e0\u691c\u8a3c\u3001ChatGPT\u306b\u8868\u793a\u3055\u308c\u308b\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30e2\u30c7\u30eb\u691c\u8a3c\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d5\u30a9\u30fc\u30e0\u306b\u3088\u3063\u3066\u9001\u4fe1\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u3092\u691c\u8a3c\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u691c\u8a3c\u306f\u3001\u30e2\u30c7\u30eb\u3067\u5b9a\u7fa9\u3057\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u3067\u691c\u8a3c\u3092\u5b9a\u7fa9\u3059\u308b\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class User &lt; ApplicationRecord\n  validates :username, presence: true, uniqueness: true\n  validates :email, presence: true, uniqueness: true, format: { with: URI::MailTo::EMAIL_REGEXP }\n  validates :password, presence: true, length: { minimum: 6 }\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e2\u30c7\u30eb\u306b\u3044\u304f\u3064\u304b\u306e\u691c\u8a3c\u30eb\u30fc\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3057\u305f\u3002 \u305f\u3068\u3048\u3070\u3001\u30e6\u30fc\u30b6\u30fc\u540d\u304c\u5b58\u5728\u3057\u3001\u4e00\u610f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u6307\u5b9a\u3057\u3001\u96fb\u5b50\u30e1\u30fc\u30eb\u304c\u5b58\u5728\u3057\u3001\u4e00\u610f\u3067\u3001\u96fb\u5b50\u30e1\u30fc\u30eb\u5f62\u5f0f\u306b\u6e96\u62e0\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u6307\u5b9a\u3057\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u5b58\u5728\u3057\u30016 \u6587\u5b57\u4ee5\u4e0a\u306e\u9577\u3055\u3067\u3042\u308b\u3053\u3068\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u691c\u8a3c\u30eb\u30fc\u30eb\u306f\u30e2\u30c7\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u3001\u30d5\u30a9\u30fc\u30e0\u306e\u9001\u4fe1\u6642\u306b\u81ea\u52d5\u7684\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002<code>User<\/code><code>validates :username<\/code><code>validates :email<\/code><code>validates :password<\/code><\/p>\n\n\n\n<p>\u30d5\u30a9\u30fc\u30e0\u304c\u9001\u4fe1\u3055\u308c\u308b\u3068\u304d\u306b\u3001\u691c\u8a3c\u304c\u5931\u6557\u3059\u308b\u3068\u3001Rails \u306f\u30a8\u30e9\u30fc\u60c5\u5831\u3092\u30e2\u30c7\u30eb\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u306b\u683c\u7d0d\u3057\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u3067\u30d5\u30a9\u30fc\u30e0 \u30d8\u30eb\u30d1\u30fc \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3053\u308c\u3089\u306e\u30a8\u30e9\u30fc \u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u554f\u984c\u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u6b21\u306b\u3001\u30d3\u30e5\u30fc\u306b\u30a8\u30e9\u30fc\u60c5\u5831\u3092\u8868\u793a\u3059\u308b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<code>errors<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>&lt;%= form_with model: @user, url: users_path do |f| %&gt;\n  &lt;% if @user.errors.any? %&gt;\n    &lt;div id=\"error_explanation\"&gt;\n      &lt;h2&gt;&lt;%= pluralize(@user.errors.count, \"error\") %&gt; prohibited this user from being saved:&lt;\/h2&gt;\n\n      &lt;ul&gt;\n      &lt;% @user.errors.full_messages.each do |message| %&gt;\n        &lt;li&gt;&lt;%= message %&gt;&lt;\/li&gt;\n      &lt;% end %&gt;\n      &lt;\/ul&gt;\n    &lt;\/div&gt;\n  &lt;% end %&gt;\n\n  &lt;%= f.label :username %&gt;\n  &lt;%= f.text_field :username %&gt;\n\n  &lt;%= f.label :email %&gt;\n  &lt;%= f.email_field :email %&gt;\n\n  &lt;%= f.label :password %&gt;\n  &lt;%= f.password_field :password %&gt;\n\n  &lt;%= f.submit %&gt;\n&lt;% end %&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30a8\u30e9\u30fc\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3057\u305f\u3002 \u30a8\u30e9\u30fc\u304c\u3042\u308b\u5834\u5408\u306f\u3001div \u8981\u7d20\u3092\u4f7f\u7528\u3057\u3066\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\u3057\u307e\u3059\u3002 \u8981\u7d20\u3092\u4f7f\u7528\u3057\u3066\u3001\u8907\u6570\u5f62\u306e\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51e6\u7406\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3068\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u5b8c\u5168\u306a\u30ea\u30b9\u30c8\u3092\u53d6\u5f97\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3057\u305f\u3002 \u6700\u5f8c\u306b\u3001\u5404\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9806\u756a\u306b\u8868\u793a\u3059\u308b\u3088\u3046\u306b\u8981\u7d20\u3092\u4f7f\u7528\u3057\u307e\u3057\u305f\u3002<code>@user.errors.any?<\/code><code>error_explanation<\/code><code>error_explanation<\/code><code>pluralize<\/code><code>full_messages<\/code><code>li<\/code><\/p>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u306b\u52a0\u3048\u3066\u3001Rails \u306b\u306f\u4ed6\u306b\u3082\u4fbf\u5229\u306a\u691c\u8a3c\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u5b58\u5728\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u4e00\u610f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u691c\u8a3c\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u7279\u5b9a\u306e\u5f62\u5f0f\u306b\u6e96\u62e0\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u691c\u8a3c\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u306a\u3069\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u3068\u304d\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3001\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3063\u3066\u69cb\u6210\u304a\u3088\u3073\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>validates_presence_of<\/code><code>validates_uniqueness_of<\/code><code>validates_format_of<\/code><\/p>\n\n\n\n<p>\u307e\u305f\u3001\u30d5\u30a9\u30fc\u30e0\u306e\u691c\u8a3c\u3092\u51e6\u7406\u3059\u308b\u969b\u306b\u306f\u3001\u6b21\u306e\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3082\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u306e\u9069\u5207\u306a\u691c\u8a3c\u3068\u8ee2\u9001<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u8106\u5f31\u6027\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306e\u6b63\u7fa9\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d3\u30e5\u30fc\u306e\u30a8\u30e9\u30fc\u306b\u95a2\u3059\u308b\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u8868\u793a\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u554f\u984c\u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>AJAX \u30c6\u30af\u30ce\u30ed\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc \u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30e0\u3092\u7c21\u6f54\u306b\u4fdd\u3061\u3001\u30d5\u30a9\u30fc\u30e0\u8981\u7d20\u3068\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u591a\u7528\u3057\u3059\u304e\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u5185\u306e\u30b3\u30fc\u30c9\u3092\u3067\u304d\u308b\u3060\u3051\u518d\u5229\u7528\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Rails \u30e2\u30c7\u30eb\u691c\u8a3c\u30e1\u30bd\u30c3\u30c9\u3068\u30d5\u30a9\u30fc\u30e0\u30d8\u30eb\u30d1\u30fc\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30d5\u30a9\u30fc\u30e0\u306b\u3088\u3063\u3066\u9001\u4fe1\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u3092\u7c21\u5358\u306b\u691c\u8a3c\u304a\u3088\u3073\u51e6\u7406\u3057\u3001\u30d3\u30e5\u30fc\u306e\u30a8\u30e9\u30fc\u306b\u95a2\u3059\u308b\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u8868\u793a\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u3001\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3046\u3053\u3068\u3067\u3001\u4fe1\u983c\u6027\u304c\u9ad8\u304f\u5b89\u5168\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a\u7c21\u5358\u306b\u958b\u767a\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30d5\u30a9\u30fc\u30e0\u3068\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u51e6\u7406\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9ChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u51e6\u7406\u3067\u304d\u307e\u3059\u3002 \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092 Amazon S3 \u3084 Google Cloud Storage \u306a\u3069\u306e\u30af\u30e9\u30a6\u30c9\u30b9\u30c8\u30ec\u30fc\u30b8\u30b5\u30fc\u30d3\u30b9\u306b\u4fdd\u5b58\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u3001\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u4f7f\u3044\u3084\u3059\u3044\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<code>ActiveStorage<\/code><\/p>\n\n\n\n<p>Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u624b\u9806\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002 \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001Gemfile\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002<code>ActiveStorage<\/code><code>ActiveStorage<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">arduinoCopy code<code>gem 'activestorage'\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u5b9f\u884c\u3057\u3066gem\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<code>bundle install<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u69cb\u6210\u3057\u307e\u3059\u3002<code>ActiveStorage<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>rails active_storage:install\nrails db:migrate\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30e2\u30c7\u30eb\u306b\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001Users \u3068\u3044\u3046\u540d\u524d\u306e\u30a2\u30d0\u30bf\u30fc \u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u5834\u5408\u306f\u3001\u30e6\u30fc\u30b6\u30fc \u30e2\u30c7\u30eb\u306b\u6b21\u306e\u884c\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002<code>avatar<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class User &lt; ApplicationRecord\n  has_one_attached :avatar\nend\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30d5\u30a1\u30a4\u30eb \u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 \u30d5\u30a9\u30fc\u30e0\u8981\u7d20\u3092\u30d3\u30e5\u30fc\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001 \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb \u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 \u30d5\u30a9\u30fc\u30e0\u8981\u7d20\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002<code>avatar<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>&lt;%= form_with model: @user, url: users_path, local: true do |form| %&gt;\n  &lt;%= form.label :avatar %&gt;\n  &lt;%= form.file_field :avatar %&gt;\n  &lt;%= form.submit \"Save\" %&gt;\n&lt;% end %&gt;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3067\u51e6\u7406\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc \u30e2\u30c7\u30eb\u3092\u4fdd\u5b58\u3057\u3001\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u30e2\u30c7\u30eb\u306b\u6dfb\u4ed8\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>class UsersController &lt; ApplicationController\n  def create\n    @user = User.new(user_params)\n    @user.avatar.attach(params[:user][:avatar])\n    if @user.save\n      redirect_to @user\n    else\n      render 'new'\n    end\n  end\n\n  private\n    def user_params\n      params.require(:user).permit(:username, :email, :password)\n    end\nend\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u30e2\u30c7\u30eb\u306b\u6dfb\u4ed8\u3057\u307e\u3057\u305f\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u65b0\u3057\u3044\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u30ec\u30b3\u30fc\u30c9\u304c\u4f5c\u6210\u3055\u308c\u3001\u6307\u5b9a\u3057\u305f\u30af\u30e9\u30a6\u30c9\u30b9\u30c8\u30ec\u30fc\u30b8\u30b5\u30fc\u30d3\u30b9\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002 \u6700\u5f8c\u306b\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u3092\u30e6\u30fc\u30b6\u30fc\u306e\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002<code>attach<\/code><code>ActiveStorage<\/code><code>redirect_to<\/code><\/p>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u306b\u52a0\u3048\u3066\u3001\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u306e\u5b58\u5728\u3092\u78ba\u8a8d\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3001\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3001\u30d0\u30ea\u30a2\u30f3\u30c8\u3092\u751f\u6210\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u306a\u3069\u3001\u4ed6\u306e\u4fbf\u5229\u306a\u30e1\u30bd\u30c3\u30c9\u304c\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u3068\u304d\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3001\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3063\u3066\u69cb\u6210\u304a\u3088\u3073\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>ActiveStorage<\/code><code>attached?<\/code><code>purge<\/code><code>variant<\/code><\/p>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u51e6\u7406\u3059\u308b\u3068\u304d\u306f\u3001\u6b21\u306e\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3082\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u306f\u9069\u5207\u306b\u691c\u8a3c\u3055\u308c\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u9055\u53cd\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u30a8\u30b9\u30b1\u30fc\u30d7\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3067\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306e\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u3068\u30bf\u30a4\u30d7\u3092\u78ba\u8a8d\u3057\u3066\u3001\u30b5\u30fc\u30d0\u30fc\u306e\u904e\u8ca0\u8377\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u8106\u5f31\u6027\u3092\u56de\u907f\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>AJAX \u30c6\u30af\u30ce\u30ed\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc \u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u5b89\u5168\u306a\u5834\u6240\u306b\u4fdd\u5b58\u3057\u3001\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u30ea\u30b9\u30c8 (ACL) \u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u3001\u30b9\u30bf\u30a4\u30eb\u3001JavaScriptChatGPT\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u3067\u306f\u3001\u30ec\u30a4\u30a2\u30a6\u30c8\u3001\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u3001\u304a\u3088\u3073 JavaScript \u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5916\u89b3\u3068\u52d5\u4f5c\u3092\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u30ec\u30a4\u30a2\u30a6\u30c8\u3001\u30b9\u30bf\u30a4\u30eb\u3001\u304a\u3088\u3073 JavaScript \u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ec\u30a4\u30a2\u30a6\u30c8: \u30ec\u30a4\u30a2\u30a6\u30c8\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5916\u89b3\u3068\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d8\u30c3\u30c0\u30fc\u3001\u30d5\u30c3\u30bf\u30fc\u3001\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 \u30e1\u30cb\u30e5\u30fc\u306a\u3069\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5171\u901a\u90e8\u5206\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 Rails \u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u306f\u30d5\u30a1\u30a4\u30eb\u5185\u306b\u3042\u308a\u307e\u3059\u3002 \u6b21\u306e\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u5358\u7d14\u306a\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002<code>app\/views\/layouts\/application.html.erb<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n  &lt;head&gt;\n    &lt;title&gt;&lt;%= yield(:title) %&gt; | My Awesome App&lt;\/title&gt;\n    &lt;%= csrf_meta_tags %&gt;\n    &lt;%= stylesheet_link_tag    'application', media: 'all' %&gt;\n    &lt;%= javascript_include_tag 'application' %&gt;\n    &lt;%= yield(:head) %&gt;\n  &lt;\/head&gt;\n  &lt;body&gt;\n    &lt;%= yield %&gt;\n  &lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30ec\u30a4\u30a2\u30a6\u30c8\u5185\u306e\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3092\u5b9a\u7fa9\u3057\u307e\u3057\u305f\u3002 \u305f\u3068\u3048\u3070\u3001\u30da\u30fc\u30b8 \u30bf\u30a4\u30c8\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u633f\u5165\u3057\u307e\u3059\u3002 \u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u3084JavaScript\u30d5\u30a1\u30a4\u30eb\u306e\u5c0e\u5165\u306b\u3082\u3002 \u6700\u5f8c\u306b\u3001\u30bf\u30b0\u5185\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u5404\u30da\u30fc\u30b8\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u633f\u5165\u3057\u307e\u3057\u305f\u3002<code>yield<\/code><code>yield(:title)<\/code><code>stylesheet_link_tag<\/code><code>javascript_include_tag<\/code><code>body<\/code><code>yield<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30b9\u30bf\u30a4\u30eb \u30b7\u30fc\u30c8: \u30b9\u30bf\u30a4\u30eb \u30b7\u30fc\u30c8\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5916\u89b3\u3068\u30b9\u30bf\u30a4\u30eb\u3092\u5236\u5fa1\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c6\u30ad\u30b9\u30c8\u306e\u8272\u3001\u80cc\u666f\u8272\u3001\u30d5\u30a9\u30f3\u30c8\u3001\u4f59\u767d\u306a\u3069\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Rails \u306f\u4e3b\u8981\u306a\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u8a00\u8a9e\u3068\u3057\u3066 Sass \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306bSass\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u3067\u5c0e\u5165\u3067\u304d\u307e\u3059\u3002<code>app\/assets\/stylesheets<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>&lt;%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %&gt;\n&lt;%= yield(:stylesheets) %&gt;\n<\/code><\/pre>\n\n\n\n<p>Sass\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3001\u30cd\u30b9\u30c8\u3001\u5909\u6570\u3001\u30d6\u30ec\u30f3\u30c9\u306a\u3069\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b9\u30bf\u30a4\u30eb\u3092\u3088\u308a\u7c21\u5358\u306b\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002 \u5358\u7d14\u306a Sass\u30d5\u30a1\u30a4\u30eb\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scssCopy code<code>@import 'normalize';\nbody {\n  font-family: Arial, sans-serif;\n  background-color: #f5f5f5;\n  color: #333;\n}\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3001\u305d\u308c\u3068\u547c\u3070\u308c\u308bSass\u30d5\u30a1\u30a4\u30eb\u3092\u5c0e\u5165\u3057\u307e\u3057\u305f\u3002 \u6b21\u306b\u3001\u8981\u7d20\u306e\u30d5\u30a9\u30f3\u30c8\u3001\u80cc\u666f\u8272\u3001\u304a\u3088\u3073\u30c6\u30ad\u30b9\u30c8\u306e\u8272\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<code>@import<\/code><code>normalize<\/code><code>body<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>JavaScript: JavaScript \u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u52d5\u4f5c\u3068\u76f8\u4e92\u4f5c\u7528\u3092\u5236\u5fa1\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 JavaScript \u3092\u4f7f\u7528\u3057\u3066\u3001\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u3001\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3001\u30d5\u30a9\u30fc\u30e0\u691c\u8a3c\u306a\u3069\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Rails \u306f\u30e1\u30a4\u30f3\u306e JavaScript \u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u3057\u3066 TurboLink \u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001AJAX \u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u3092\u901a\u3058\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5fdc\u7b54\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b JavaScript \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u3067\u5c0e\u5165\u3067\u304d\u307e\u3059\u3002<code>app\/assets\/javascripts<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">rubyCopy code<code>&lt;%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %&gt;\n&lt;%= yield(:javascript) %\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>JavaScript \u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3001jQuery\u3001React\u3001Vue.js \u306a\u3069\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3057\u3066\u3001\u8907\u96d1\u306a\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u3092\u3088\u308a\u7c21\u5358\u306b\u958b\u767a\u3067\u304d\u307e\u3059\u3002 \u5358\u7d14\u306a JavaScript \u30d5\u30a1\u30a4\u30eb\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">javascriptCopy code<code>$(function() {\n  $('button').on('click', function() {\n    $('div').toggle();\n  });\n});\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001jQuery \u30bb\u30ec\u30af\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u9078\u629e\u3057\u3001\u305d\u308c\u3089\u306b\u30a4\u30d9\u30f3\u30c8\u3092\u30d0\u30a4\u30f3\u30c9\u3057\u307e\u3059\u3002 \u30e6\u30fc\u30b6\u30fc\u304c\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001jQuery \u30bb\u30ec\u30af\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u9078\u629e\u3057\u3001\u305d\u306e\u30bb\u30ec\u30af\u30bf\u30fc\u3067\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u3066\u8981\u7d20\u306e\u53ef\u8996\u6027\u3092\u5207\u308a\u66ff\u3048\u307e\u3059\u3002<code>button<\/code><code>click<\/code><code>div<\/code><code>toggle<\/code><\/p>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u306b\u52a0\u3048\u3066\u3001Rails\u306f\u30b9\u30d7\u30ed\u30b1\u30c3\u30c8\u3001\u30b3\u30fc\u30d2\u30fc\u30b9\u30af\u30ea\u30d7\u30c8\u3001SASS\u3001Webpack\u306a\u3069\u306e\u4ed6\u306e\u4fbf\u5229\u306a\u30c4\u30fc\u30eb\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u3068\u304d\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3089\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3001\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3063\u3066\u69cb\u6210\u304a\u3088\u3073\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30ec\u30a4\u30a2\u30a6\u30c8\u3001\u30b9\u30bf\u30a4\u30eb\u3001\u304a\u3088\u3073 JavaScript \u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3082\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6 \u30c7\u30b6\u30a4\u30f3\u3092\u4f7f\u3063\u3066\u3001\u3055\u307e\u3056\u307e\u306a\u753b\u9762\u30b5\u30a4\u30ba\u3084\u30c7\u30d0\u30a4\u30b9\u3067\u30a2\u30d7\u30ea\u304c\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30a4\u30b3\u30f3\u3001\u8272\u3001\u6587\u5b57\u4f53\u88c1\u306a\u3069\u306e\u8981\u7d20\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8aad\u307f\u3084\u3059\u3055\u3068\u4f7f\u3044\u3084\u3059\u3055\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b9\u30bf\u30a4\u30eb\u3068 JavaScript \u30b3\u30fc\u30c9\u3092\u9069\u5207\u306b\u6574\u7406\u3057\u3066\u3001\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u3084\u30b3\u30fc\u30c9\u306e\u80a5\u5927\u5316\u3092\u56de\u907f\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u5727\u7e2e\u3068\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u624b\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u4fe1\u983c\u6027\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u53ef\u80fd\u306a\u9650\u308a\u3001\u65e2\u5b58\u306e\u30b9\u30bf\u30a4\u30eb\u3068\u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u3001jQuery\u306a\u3069\u306eJavaScript\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u3066\u3001\u958b\u767a\u6642\u9593\u3068\u30b3\u30b9\u30c8\u3092\u524a\u6e1b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30ec\u30a4\u30a2\u30a6\u30c8\u304c\u8907\u96d1\u3059\u304e\u3066\u4fdd\u5b88\u304c\u96e3\u3057\u3044\u3053\u3068\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u30ec\u30a4\u30a2\u30a6\u30c8\u3067\u30cd\u30b9\u30c8\u3092\u4f7f\u3044\u3059\u304e\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>JavaScript \u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001DOM \u8981\u7d20\u3092\u76f4\u63a5\u5909\u66f4\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u4ee3\u308f\u308a\u306b\u30a4\u30d9\u30f3\u30c8\u3068\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u8981\u7d20\u306e\u52d5\u4f5c\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b9\u30bf\u30a4\u30eb\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u7d76\u5bfe\u4f4d\u7f6e\u3068\u7279\u5b9a\u306e\u30d4\u30af\u30bb\u30eb\u5024\u3092\u907f\u3051\u3001\u4ee3\u308f\u308a\u306b\u76f8\u5bfe\u4f4d\u7f6e\u3068\u30d1\u30fc\u30bb\u30f3\u30c8\u5024\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u3055\u307e\u3056\u307e\u306a\u753b\u9762\u30b5\u30a4\u30ba\u3068\u30c7\u30d0\u30a4\u30b9\u3067\u9069\u5207\u306b\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>JavaScript \u30d5\u30a1\u30a4\u30eb\u3068\u30b9\u30bf\u30a4\u30eb \u30d5\u30a1\u30a4\u30eb\u304c\u5927\u304d\u3044\u5834\u5408\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30de\u30fc\u30b8\u3068\u5727\u7e2e\u306e\u624b\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u3001\u8aad\u307f\u8fbc\u307f\u6642\u9593\u3068\u5e2f\u57df\u5e45\u306e\u4f7f\u7528\u91cf\u3092\u6e1b\u3089\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001\u30ec\u30a4\u30a2\u30a6\u30c8\u3001\u30b9\u30bf\u30a4\u30eb\u3001\u304a\u3088\u3073JavaScript\u306f\u3001\u6700\u65b0\u306eWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306b\u4e0d\u53ef\u6b20\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3059\u3002 \u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3046\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5916\u89b3\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3001\u304a\u3088\u3073\u4f7f\u3044\u3084\u3059\u3055\u306e\u70b9\u3067\u9ad8\u54c1\u8cea\u3067\u512a\u308c\u305f\u30e6\u30fc\u30b6\u30fc \u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3092\u78ba\u4fdd\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails ChatGPT\u306eJavaScript\u3068CSS\u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>JavaScript \u3068 CSS Asset Pipeline in Rails \u306f\u3001Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6700\u9069\u5316\u3059\u308b\u305f\u3081\u306e\u624b\u6cd5\u3067\u3059\u3002 \u958b\u767a\u4e2d\u306b\u8907\u6570\u306eCSS\u30d5\u30a1\u30a4\u30eb\u3068JavaScript\u30d5\u30a1\u30a4\u30eb\u30921\u3064\u306b\u30de\u30fc\u30b8\u3057\u3001\u305d\u308c\u3089\u3092\u5727\u7e2e\u304a\u3088\u3073\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u8aad\u307f\u8fbc\u307f\u901f\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u4ed5\u7d44\u307f\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a2\u30bb\u30c3\u30c8\u306e\u30d7\u30ea\u30b3\u30f3\u30d1\u30a4\u30eb: \u958b\u767a\u4e2d\u306b\u3001\u8907\u6570\u306e CSS \u30d5\u30a1\u30a4\u30eb\u3068 JavaScript \u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b9\u30bf\u30a4\u30eb\u3068\u52d5\u4f5c\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002 \u305f\u3060\u3057\u3001\u904b\u7528\u74b0\u5883\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u3092 1 \u3064\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u7d50\u5408\u3057\u3001\u5727\u7e2e\u3057\u3066\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3066\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u8aad\u307f\u8fbc\u307f\u901f\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u306e\u76ee\u7684\u306e\u305f\u3081\u306b\u3001Rails \u306f\u3001\u8907\u6570\u306e CSS \u30d5\u30a1\u30a4\u30eb\u3068 JavaScript \u30d5\u30a1\u30a4\u30eb\u3092\u81ea\u52d5\u7684\u306b 1 \u3064\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u30de\u30fc\u30b8\u3059\u308b\u30a2\u30bb\u30c3\u30c8\u30d7\u30ea\u30b3\u30f3\u30d1\u30a4\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u8a2d\u5b9a: \u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u3044\u304f\u3064\u304b\u306e\u8a2d\u5b9a\u3092\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306b\u542b\u3081\u308b CSS \u30d5\u30a1\u30a4\u30eb\u3068 JavaScript \u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9\u3068\u3001\u305d\u308c\u3089\u306e\u51e6\u7406\u65b9\u6cd5\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Rails \u306f\u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u3057\u3066\u30b9\u30d7\u30ed\u30b1\u30c3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001\u3053\u308c\u3092\u4f7f\u7528\u3057\u3066 CSS \u30d5\u30a1\u30a4\u30eb\u3068 JavaScript \u30d5\u30a1\u30a4\u30eb\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u5b9a\u7fa9\u3057\u305f\u308a\u3001Sass\u3084 CoffeeScript \u306a\u3069\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066 CSS \u30d5\u30a1\u30a4\u30eb\u3068 JavaScript \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u305f\u308a\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30bb\u30c3\u30c8\u306e\u30b3\u30f3\u30d1\u30a4\u30eb: \u672c\u756a\u74b0\u5883\u3067\u306f\u3001\u30a2\u30bb\u30c3\u30c8\u30b3\u30f3\u30d1\u30a4\u30e9\u3092\u4f7f\u7528\u3057\u3066\u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u6700\u7d42\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30a2\u30bb\u30c3\u30c8\u30b3\u30f3\u30d1\u30a4\u30e9\u306f\u3001\u8907\u6570\u306e CSS \u30d5\u30a1\u30a4\u30eb\u3068 JavaScript \u30d5\u30a1\u30a4\u30eb\u3092 1 \u3064\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u7d50\u5408\u3057\u3001\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3067\u6307\u5b9a\u3055\u308c\u305f\u30d1\u30b9\u3068\u51e6\u7406\u30eb\u30fc\u30eb\u306b\u57fa\u3065\u3044\u3066\u5727\u7e2e\u3057\u3066\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002 \u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306f\u3001Rails\u306e\u30ec\u30fc\u30ad\u30bf\u30b9\u30af\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30bb\u30c3\u30c8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5: \u30a2\u30bb\u30c3\u30c8\u304c\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u305f\u3089\u3001\u751f\u6210\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092 CDN \u307e\u305f\u306f\u4ed6\u306e\u30d5\u30a1\u30a4\u30eb \u30b5\u30fc\u30d0\u30fc\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u30d5\u30a1\u30a4\u30eb\u3092\u8981\u6c42\u3059\u308b\u3068\u3001\u30b5\u30fc\u30d0\u30fc\u306f\u30d5\u30a1\u30a4\u30eb\u3092\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u9001\u308a\u8fd4\u3057\u3001\u6b21\u306e\u8981\u6c42\u3067\u3088\u308a\u9ad8\u901f\u306a\u5fdc\u7b54\u3092\u63d0\u4f9b\u3067\u304d\u308b\u3088\u3046\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306e\u6a5f\u80fd\u306b\u52a0\u3048\u3066\u3001Rails\u306e\u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306f\u3001\u30d5\u30a3\u30f3\u30ac\u30fc\u30d7\u30ea\u30f3\u30c8\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u3001\u57cb\u3081\u8fbc\u307fRuby\u30b3\u30fc\u30c9(ERB)\u306a\u3069\u3001\u4ed6\u306e\u4fbf\u5229\u306a\u30c4\u30fc\u30eb\u3068\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001CSS \u304a\u3088\u3073 JavaScript \u30b3\u30fc\u30c9\u3092\u3088\u308a\u7c21\u5358\u306b\u7ba1\u7406\u304a\u3088\u3073\u6700\u9069\u5316\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u4fe1\u983c\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>ChatGPT\u306b\u3064\u3044\u3066Rails\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306f\u3001\u958b\u767a\u74b0\u5883\u304b\u3089\u5b9f\u7a3c\u50cd\u74b0\u5883\u306b Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3067\u3059\u3002 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3068\u304d\u306f\u3001\u4ee5\u4e0b\u306e\u5074\u9762\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Web \u30b5\u30fc\u30d0\u30fc: \u5b9f\u7a3c\u50cd\u74b0\u5883\u3067\u306f\u3001Web \u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u914d\u4fe1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308bWeb\u30b5\u30fc\u30d0\u30fc\u306b\u306f\u3001Apache\u3001Nginx\u3001Unicorn\u3001Puma\u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002 \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u81ea\u5206\u306b\u5408\u3063\u305fWeb\u30b5\u30fc\u30d0\u30fc\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30b5\u30fc\u30d0\u30fc: Web \u30b5\u30fc\u30d0\u30fc\u3068 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u9593\u3067\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066 HTTP \u8981\u6c42\u3092\u51e6\u7406\u3057\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304b\u3089\u306e\u5fdc\u7b54\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b5\u30fc\u30d0\u30fc\u306b\u306f\u3001Phusion Passenger\u3001Unicorn\u3001Puma\u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002 \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3001\u81ea\u5206\u306b\u5408\u3063\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b5\u30fc\u30d0\u30fc\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30b5\u30fc\u30d0\u30fc: \u904b\u7528\u74b0\u5883\u3067\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u304a\u3088\u3073\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30b5\u30fc\u30d0\u30fc\u304c\u5fc5\u8981\u3067\u3059\u3002 \u4e00\u822c\u7684\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u306b\u306f\u3001MySQL\u3001PostgreSQL\u3001SQLite\u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002 \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3001\u9069\u5207\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30b5\u30fc\u30d0\u30fc\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u74b0\u5883\u5909\u6570: \u904b\u7528\u74b0\u5883\u3067\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u6210\u304a\u3088\u3073\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u74b0\u5883\u5909\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002 \u74b0\u5883\u5909\u6570\u306b\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u6587\u5b57\u5217\u3001\u30ad\u30fc\u3001API \u30ad\u30fc\u306a\u3069\u304c\u542b\u307e\u308c\u307e\u3059\u3002 Rails\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u3066\u74b0\u5883\u5909\u6570\u3092\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002<code>dotenv<\/code><\/li>\n\n\n\n<li>\u9759\u7684\u30d5\u30a1\u30a4\u30eb:\u672c\u756a\u74b0\u5883\u3067\u306f\u3001\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3001CSS\u3001JavaScript\u3001\u753b\u50cf\u306a\u3069\u306e\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 Rails \u306e\u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u4f7f\u7528\u3057\u3066\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3057\u3001CDN \u307e\u305f\u306f\u4ed6\u306e\u30d5\u30a1\u30a4\u30eb\u30b5\u30fc\u30d0\u30fc\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30ed\u30b0\u8a18\u9332\u3068\u76e3\u8996: \u904b\u7528\u74b0\u5883\u3067\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u76e3\u8996\u3057\u3066\u30ed\u30b0\u306b\u8a18\u9332\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 Rails \u306e\u30ed\u30ae\u30f3\u30b0\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30ed\u30b0\u3092\u4fdd\u6301\u3057\u3001\u30e2\u30cb\u30bf\u30fc\u30fb\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u53ef\u7528\u6027\u3092\u30e2\u30cb\u30bf\u30fc\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5c55\u958b\u30c4\u30fc\u30eb: \u904b\u7528\u74b0\u5883\u3067\u306f\u3001\u5c55\u958b\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u5c55\u958b\u30d7\u30ed\u30bb\u30b9\u3092\u81ea\u52d5\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u4e00\u822c\u7684\u306a\u30c7\u30d7\u30ed\u30a4\u30c4\u30fc\u30eb\u306b\u306f\u3001Capistrano\u3001Ansible\u3001Chef \u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002 \u30cb\u30fc\u30ba\u306b\u5408\u3063\u305f\u5c55\u958b\u30c4\u30fc\u30eb\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3068\u304d\u306f\u3001\u4ee5\u4e0b\u306e\u30d9\u30b9\u30c8\u30fb\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3082\u5f93\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b9f\u7a3c\u50cd\u74b0\u5883\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u5b9f\u7a3c\u50cd\u74b0\u5883\u3067\u5b9f\u884c\u3059\u308b\u3088\u3046\u306b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u3001\u30ad\u30fc\u3001API \u30ad\u30fc\u306a\u3069\u306e\u6a5f\u5bc6\u60c5\u5831\u3092\u7ba1\u7406\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30bb\u30c3\u30c8\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u4f7f\u7528\u3057\u3066\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u6700\u9069\u5316\u3057\u3001CDN \u307e\u305f\u306f\u4ed6\u306e\u30d5\u30a1\u30a4\u30eb\u30b5\u30fc\u30d0\u30fc\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30ed\u30ae\u30f3\u30b0\u304a\u3088\u3073\u30e2\u30cb\u30bf\u30fc\u30fb\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u53ef\u7528\u6027\u3092\u30e2\u30cb\u30bf\u30fc\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30ed\u30b0\u3092\u8a18\u9332\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9a\u671f\u7684\u306b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u3066\u3001\u969c\u5bb3\u767a\u751f\u6642\u306b\u8fc5\u901f\u306b\u5fa9\u65e7\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5f93\u3046<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>\u30c1\u30e3\u30c3\u30c8GPT\u3092\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6700\u5c0f\u7279\u6a29\u306e\u539f\u5247\u306b\u5f93\u3044\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u3092\u6700\u4f4e\u9650\u5fc5\u8981\u306a\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u306b\u5236\u9650\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30fb\u30b7\u30b9\u30c6\u30e0\u3001Web \u30b5\u30fc\u30d0\u30fc\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30b5\u30fc\u30d0\u30fc\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30b5\u30fc\u30d0\u30fc\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u5b9a\u671f\u7684\u306b\u66f4\u65b0\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u5e38\u306b\u6700\u65b0\u304b\u3064\u6700\u3082\u5b89\u5168\u306a\u74b0\u5883\u3067\u5b9f\u884c\u3055\u308c\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9 \u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30fc\u30c9\u3092\u7ba1\u7406\u3057\u3001\u30b3\u30fc\u30c9\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3068\u5909\u66f4\u5c65\u6b74\u3092\u8ffd\u8de1\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8 \u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c6\u30b9\u30c8\u3057\u3001\u30c7\u30d7\u30ed\u30a4\u524d\u306b\u7d99\u7d9a\u7684\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3068\u30c7\u30d7\u30ed\u30a4 (CI\/CD) \u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3068\u8981\u6c42\u3092\u5206\u6563\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3068\u53ef\u7528\u6027\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u81ea\u52d5\u30b9\u30b1\u30fc\u30eb\u3068\u30b9\u30b1\u30fc\u30eb\u30a4\u30f3\u3092\u69cb\u6210\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u9700\u8981\u306b\u57fa\u3065\u3044\u3066\u5bb9\u91cf\u3092\u81ea\u52d5\u7684\u306b\u8abf\u6574\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30d7\u30ea\u3068\u30e6\u30fc\u30b6\u30fc\u306e\u30c7\u30fc\u30bf\u3092\u5b89\u5168\u306b\u4fdd\u3064\u305f\u3081\u306b\u3001\u30a2\u30d7\u30ea\u306e HTTPS \u8a3c\u660e\u66f8\u3068 SSL \u8a3c\u660e\u66f8\u3092\u69cb\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u7dca\u6025\u6642\u5bfe\u5fdc\u8a08\u753b\u3092\u5b9a\u671f\u7684\u306b\u30c6\u30b9\u30c8\u304a\u3088\u3073\u30ea\u30cf\u30fc\u30b5\u30eb\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u8fc5\u901f\u306b\u5bfe\u5fdc\u3057\u3001\u56de\u5fa9\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u7d50\u8ad6\u3068\u3057\u3066\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3068\u304d\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u8981\u56e0\u3092\u614e\u91cd\u306b\u691c\u8a0e\u3057\u3001\u30d9\u30b9\u30c8\u30fb\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3063\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u52b9\u7387\u7684\u304b\u3064\u5b89\u5168\u306b\u5b9f\u884c\u3055\u308c\u3001\u5b9f\u7a3c\u50cd\u74b0\u5883\u3067\u512a\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u30fb\u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3092\u63d0\u4f9b\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 ChatGPT \u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306e Heroku \u306e\u4f7f\u7528\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>Heroku \u306f\u3001Ruby on Rails \u3092\u542b\u3080\u8907\u6570\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u30af\u30e9\u30a6\u30c9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3059\u3002 Heroku \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u672c\u756a\u74b0\u5883\u306b\u7c21\u5358\u306b\u30c7\u30d7\u30ed\u30a4\u3057\u3001\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b5\u30fc\u30d0\u30fc\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u306a\u3069\u306e\u57fa\u76e4\u3068\u306a\u308b\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u8a2d\u5b9a\u3068\u7ba1\u7406\u3092\u81ea\u52d5\u5316\u3067\u304d\u307e\u3059\u3002 Heroku \u3092\u4f7f\u7528\u3057\u3066 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Heroku \u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\u3059\u308b: \u307e\u305a\u3001Heroku \u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u767b\u9332\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 Heroku Web \u30b5\u30a4\u30c8\u3067 [\u30b5\u30a4\u30f3\u30a2\u30c3\u30d7] \u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001\u500b\u4eba\u60c5\u5831\u3068\u30af\u30ec\u30b8\u30c3\u30c8\u30ab\u30fc\u30c9\u60c5\u5831 (\u5fc5\u8981\u306a\u5834\u5408) \u3092\u5165\u529b\u3057\u3066\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>Heroku CLI \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b: Heroku CLI \u306f\u3001Heroku \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3067\u3059\u3002 Heroku CLI \u306f\u3001Heroku \u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4f5c\u6210: Rails \u30b3\u30de\u30f3\u30c9\u884c\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u65b0\u3057\u3044 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>Git \u306b\u30a2\u30d7\u30ea\u3092\u8ffd\u52a0\u3059\u308b: Rails \u30a2\u30d7\u30ea\u3092 Git \u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306b\u8ffd\u52a0\u3057\u3066\u3001Git \u3092\u4f7f\u7528\u3057\u3066\u30b3\u30fc\u30c9\u3092\u7ba1\u7406\u3057\u3001\u30a2\u30d7\u30ea\u3092\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>Heroku \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3059\u308b: Heroku CLI \u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044 Heroku \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u8a2d\u5b9a\u3059\u308b: Heroku \u3067\u306f\u3001PostgreSQL \u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 Heroku CLI \u3092\u4f7f\u7528\u3057\u3066\u3001PostgreSQL \u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u8ffd\u52a0\u3057\u3001PostgreSQL \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u74b0\u5883\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b: Heroku \u3067\u306f\u3001\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u304a\u3088\u3073\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002 Heroku CLI \u3092\u4f7f\u7528\u3057\u3066\u74b0\u5883\u5909\u6570\u3092\u8a2d\u5b9a\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u6e21\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b: Git \u3092\u4f7f\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092 Heroku \u306b\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002 Heroku CLI \u3092\u4f7f\u7528\u3057\u3066\u3001\u30b3\u30fc\u30c9\u3092 Heroku \u306e Git \u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c6\u30b9\u30c8\u3068\u30c7\u30d0\u30c3\u30b0: \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u524d\u306b\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c6\u30b9\u30c8\u304a\u3088\u3073\u30c7\u30d0\u30c3\u30b0\u3057\u3066\u3001Heroku \u3067\u6b63\u3057\u304f\u52d5\u4f5c\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u76e3\u8996\u3068\u7ba1\u7406: \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3089\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u76e3\u8996\u304a\u3088\u3073\u7ba1\u7406\u3057\u3066\u3001\u5e38\u306b\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 Heroku \u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u307e\u305f\u306f Heroku CLI \u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u304a\u3088\u3073\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u7d50\u8ad6\u3068\u3057\u3066\u3001Heroku \u3092\u4f7f\u7528\u3057\u305f Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30d7\u30ed\u30a4\u306f\u975e\u5e38\u306b\u7c21\u5358\u3067\u3001\u4e0a\u8a18\u306e\u624b\u9806\u306b\u5f93\u3044\u3001Heroku \u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3046\u3060\u3051\u3067\u3059\u3002 Heroku \u306b\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ed\u30b0\u8a18\u9332\u3001\u81ea\u52d5\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3001HTTPS \u30b5\u30dd\u30fc\u30c8\u3001SSL \u8a3c\u660e\u66f8\u306a\u3069\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7c21\u5358\u306b\u7ba1\u7406\u304a\u3088\u3073\u5b9f\u884c\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u4ed6\u306e\u591a\u304f\u306e\u6a5f\u80fd\u3082\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3ChatGPT\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306eDocker\u306e\u4f7f\u7528\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Docker \u3092\u4f7f\u7528\u3057\u3066 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3068\u3001\u74b0\u5883\u306e\u4e00\u8cab\u6027\u3068\u79fb\u690d\u6027\u3092\u7dad\u6301\u3057\u306a\u304c\u3089\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u5316\u3068\u30c7\u30d7\u30ed\u30a4\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002 Docker \u3092\u4f7f\u7528\u3057\u3066 Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Docker\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b:\u307e\u305a\u3001Docker\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u7528\u306eDocker\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092Docker\u306e\u516c\u5f0fWeb\u30b5\u30a4\u30c8\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30a6\u30a3\u30b6\u30fc\u30c9\u306b\u5f93\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c9\u30c3\u30ab\u30fc\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b: Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3001Dockerfile \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 Docker \u30d5\u30a1\u30a4\u30eb\u306f\u3001Docker \u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u305f\u3081\u306e\u624b\u9806\u3092\u542b\u3080\u30c6\u30ad\u30b9\u30c8 \u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002<\/li>\n\n\n\n<li>Dockerfile \u306e\u66f8\u304d\u8fbc\u307f: Dockerfile \u3067\u306f\u3001\u57fa\u672c\u30a4\u30e1\u30fc\u30b8\u306e\u5b9a\u7fa9\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 \u30b3\u30fc\u30c9\u306e\u30b3\u30d4\u30fc\u3001\u4f9d\u5b58\u95a2\u4fc2\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30b5\u30fc\u30d0\u30fc\u306e\u5b9f\u884c\u306a\u3069\u3092\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30c9\u30c3\u30ab\u30fc\u30d5\u30a1\u30a4\u30eb\u306e\u7c21\u5358\u306a\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<code># \u4f7f\u7528ruby 2.7\u4f5c\u4e3a\u57fa\u7840\u955c\u50cf FROM ruby:2.7 # \u8bbe\u7f6e\u5de5\u4f5c\u76ee\u5f55 WORKDIR \/app # \u590d\u5236Gemfile\u548cGemfile.lock\u5230\u5bb9\u5668\u4e2d COPY Gemfile Gemfile.lock .\/ # \u5b89\u88c5\u4f9d\u8d56\u9879 RUN bundle install # \u590d\u5236\u5e94\u7528\u7a0b\u5e8f\u4ee3\u7801\u5230\u5bb9\u5668\u4e2d COPY . . # \u914d\u7f6e\u73af\u5883\u53d8\u91cf ENV PORT 3000 ENV RAILS_ENV production # \u914d\u7f6e\u5165\u53e3\u70b9 ENTRYPOINT [\"rails\"] CMD [\"server\", \"-b\", \"0.0.0.0\", \"-p\", \"3000\"]<\/code><\/li>\n\n\n\n<li>Docker \u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b: Docker CLI \u3092\u4f7f\u7528\u3057\u3066\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001Docker \u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3057\u307e\u3059\u3002 \u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059 (myapp \u306f\u30a4\u30e1\u30fc\u30b8\u306b\u4ed8\u3051\u305f\u540d\u524d\u3067\u3059)\u3002<code>docker build -t myapp .<\/code><\/li>\n\n\n\n<li>Docker \u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u5b9f\u884c\u3059\u308b: Docker CLI \u3092\u4f7f\u7528\u3057\u3066\u30bf\u30fc\u30df\u30ca\u30eb\u3067 Docker \u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u5b9f\u884c\u3057\u307e\u3059: arduinoCopy \u30b3\u30fc\u30c9 \u3053\u3053\u3067\u3001myapp \u306f\u624b\u9806 4 \u3067\u30a4\u30e1\u30fc\u30b8\u306b\u4ed8\u3051\u305f\u540d\u524d\u3067\u3059\u3002<code>docker run -p 3000:3000 myapp<\/code><\/li>\n\n\n\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b:\u30d6\u30e9\u30a6\u30b6\u3067\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b http:\/\/localhost:3000<a href=\"http:\/\/localhost:3000%EF%BC%8C%E6%82%A8%E5%BA%94%E8%AF%A5%E8%83%BD%E5%A4%9F%E7%9C%8B%E5%88%B0%E6%82%A8%E7%9A%84Rails%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E3%80%82\/\">\u3001Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3067\u304d\u308b\u306f\u305a\u3067\u3059\u3002<\/a><\/li>\n<\/ol>\n\n\n\n<p>\u7d50\u8ad6\u3068\u3057\u3066\u3001Docker\u3092\u4f7f\u7528\u3057\u3066Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u306f\u975e\u5e38\u306b\u4fbf\u5229\u3067\u3042\u308a\u3001\u74b0\u5883\u306e\u4e00\u8cab\u6027\u3068\u79fb\u690d\u6027\u3092\u7dad\u6301\u3057\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5225\u306e\u74b0\u5883\u3067\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u4ed6\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3084\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u7d71\u5408\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001Docker \u3092\u4f7f\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3068\u4fbf\u5229\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=2372\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"User\"\/><\/figure>\n\n\n\n<p>Rails\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u3068ChatGPT\u306e\u76e3\u8996\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316\u3068\u76e3\u8996\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u52b9\u7387\u3068\u5b89\u5b9a\u6027\u3092\u7dad\u6301\u3059\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u8981\u7d20\u306e 1 \u3064\u3067\u3059\u3002 Rails \u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6700\u9069\u5316\u304a\u3088\u3073\u76e3\u8996\u3059\u308b\u4e00\u822c\u7684\u306a\u65b9\u6cd5\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u4f7f\u7528\u3059\u308b:Rails\u306f\u3001\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u30da\u30fc\u30b8\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u30af\u30a8\u30ea\u30ad\u30e3\u30c3\u30b7\u30e5\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30af\u30a8\u30ea\u3068\u8a08\u7b97\u6642\u9593\u3092\u5927\u5e45\u306b\u77ed\u7e2e\u3067\u304d\u308b\u305f\u3081\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7167\u4f1a\u306e\u6700\u9069\u5316: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7167\u4f1a\u306f\u3001Rails \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u304a\u3051\u308b\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u306e 1 \u3064\u3067\u3059\u3002 \u30a2\u30af\u30c6\u30a3\u30d6\u30fb\u30ec\u30b3\u30fc\u30c9\u306e\u30d7\u30ea\u30ed\u30fc\u30c9\u3001\u30d0\u30c3\u30c1\u64cd\u4f5c\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7167\u4f1a\u3092\u6700\u9069\u5316\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30a2\u30af\u30bb\u30b9\u306e\u6570\u3092\u6e1b\u3089\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u975e\u540c\u671f\u30bf\u30b9\u30af\u3092\u4f7f\u7528\u3059\u308b: \u975e\u540c\u671f\u30bf\u30b9\u30af\u306f\u3001\u5b9f\u884c\u6642\u9593\u306e\u9577\u3044\u64cd\u4f5c\u3092\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u3067\u5b9f\u884c\u3067\u304d\u308b\u305f\u3081\u3001\u8981\u6c42\u306e\u5f85\u6a5f\u6642\u9593\u3092\u77ed\u7e2e\u3067\u304d\u307e\u3059\u3002 \u30a2\u30af\u30c6\u30a3\u30d6\u30b8\u30e7\u30d6\u3092\u4f7f\u7528\u3057\u3066\u975e\u540c\u671f\u30bf\u30b9\u30af\u3092\u4f5c\u6210\u3057\u3001Sidekiq\u3001Resque\u306a\u3069\u306e\u30c4\u30fc\u30eb\u3092\u4f5c\u6210\u3057\u3066\u975e\u540c\u671f\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>CDN\u3068\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u30fc\u3092\u4f7f\u7528\u3059\u308b:CDN(\u30b3\u30f3\u30c6\u30f3\u30c4\u914d\u4fe1\u30cd\u30c3\u30c8\u30ef\u30fc\u30af)\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092CDN\u30b5\u30fc\u30d0\u30fc\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3067\u304d\u308b\u305f\u3081\u3001Web\u30b5\u30fc\u30d0\u30fc\u306e\u8ca0\u8377\u304c\u8efd\u6e1b\u3055\u308c\u307e\u3059\u3002 \u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u8907\u6570\u306eWeb\u30b5\u30fc\u30d0\u30fc\u306b\u5206\u6563\u3067\u304d\u308b\u305f\u3081\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u76e3\u8996: \u76e3\u8996\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u554f\u984c\u3092\u30bf\u30a4\u30e0\u30ea\u30fc\u306b\u7279\u5b9a\u3057\u3066\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002 New Relic\u3001Datadog\u3001AppSignal\u306a\u3069\u306e\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3001\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u306a\u3069\u3092\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3059\u308b: \u30ad\u30e3\u30c3\u30b7\u30e5\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001Web\u30b5\u30fc\u30d0\u30fc\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u306e\u4e21\u65b9\u306e\u8ca0\u8377\u3092\u8efd\u6e1b\u3067\u304d\u307e\u3059\u3002 Redis \u3084 Memcached \u306a\u3069\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u306e\u6700\u9069\u5316: \u30b3\u30fc\u30c9\u3092\u6700\u9069\u5316\u3057\u3066\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3068 CPU \u4f7f\u7528\u7387\u3092\u524a\u6e1b\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30b3\u30fc\u30c9\u5206\u6790\u30c4\u30fc\u30eb\u3001\u30b3\u30fc\u30c9\u6700\u9069\u5316\u30c4\u30fc\u30eb\u306a\u3069\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30fc\u30c9\u3092\u6700\u9069\u5316\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316\u3068\u76e3\u8996\u306b\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30af\u30a8\u30ea\u3001\u30ad\u30e3\u30c3\u30b7\u30f3\u30b0\u3001\u975e\u540c\u671f\u30bf\u30b9\u30af\u3001CDN\u3001\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u30fc\u306a\u3069\u306e\u8981\u7d20\u306e\u7d44\u307f\u5408\u308f\u305b\u304c\u5fc5\u8981\u3067\u3059\u3002 \u9069\u5207\u306a\u30c4\u30fc\u30eb\u3068\u65b9\u6cd5\u8ad6\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u554f\u984c\u3092\u30bf\u30a4\u30e0\u30ea\u30fc\u306b\u7279\u5b9a\u3057\u3066\u89e3\u6c7a\u3067\u304d\u308b\u305f\u3081\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u5b89\u5b9a\u6027\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>IT\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u30d3\u30c7\u30aa\u3092\u3084\u308a\u305f\u3044\u306e\u3067 &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_mi_skip_tracking":false,"footnotes":""},"categories":[23],"tags":[],"class_list":["post-2395","post","type-post","status-publish","format-standard","hentry","category-material"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts\/2395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2395"}],"version-history":[{"count":1,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts\/2395\/revisions"}],"predecessor-version":[{"id":2396,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts\/2395\/revisions\/2396"}],"wp:attachment":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}