{"id":128,"date":"2024-09-10T17:19:15","date_gmt":"2024-09-10T08:19:15","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=128"},"modified":"2025-03-24T08:55:03","modified_gmt":"2025-03-23T23:55:03","slug":"%e3%80%90%e5%ae%8c%e5%85%a8%e8%a7%a3%e8%aa%ac%e3%80%91ruby%e3%81%ae%e3%83%8f%e3%83%83%e3%82%b7%e3%83%a5%e3%83%9e%e3%82%b9%e3%82%bf%e3%83%bc%e5%85%a5%e9%96%80%ef%bc%9a%e5%9f%ba%e7%a4%8e%e3%81%8b","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=128","title":{"rendered":"\u3010\u5b8c\u5168\u89e3\u8aac\u3011Ruby\u306e\u30cf\u30c3\u30b7\u30e5\u30de\u30b9\u30bf\u30fc\u5165\u9580\uff1a\u57fa\u790e\u304b\u3089\u5b9f\u8df5\u307e\u30675\u30b9\u30c6\u30c3\u30d7\u3067\u52b9\u7387\u7684\u306b\u5b66\u3076"},"content":{"rendered":"\n<p>Ruby\u306e\u30cf\u30c3\u30b7\u30e5\u306f\u3001\u30ad\u30fc\u3068\u5024\u306e\u30da\u30a2\u3092\u7ba1\u7406\u3059\u308b\u5f37\u529b\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u3002<br>\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u306e\u57fa\u672c\u304b\u3089\u9ad8\u5ea6\u306a\u4f7f\u3044\u65b9\u307e\u3067\u3001\u5b9f\u8df5\u7684\u306a\u4f8b\u3092\u4ea4\u3048\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<br>\u521d\u5fc3\u8005\u304b\u3089\u30d9\u30c6\u30e9\u30f3\u307e\u3067\u3001Ruby\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306e\u30b9\u30ad\u30eb\u30a2\u30c3\u30d7\u306b\u5f79\u7acb\u3064\u60c5\u5831\u304c\u6e80\u8f09\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u3053\u306e\u8a18\u4e8b\u3092\u901a\u3057\u3066\u7406\u89e3\u3067\u304d\u308b7\u3064\u306e\u3053\u3068<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ul class=\"wp-block-list\">\n<li>\u30cf\u30c3\u30b7\u30e5\u306e\u57fa\u672c\u6982\u5ff5\u3068\u91cd\u8981\u6027<\/li>\n\n\n\n<li>\u30cf\u30c3\u30b7\u30e5\u306e\u52b9\u7387\u7684\u306a\u4f5c\u6210\u30fb\u64cd\u4f5c\u65b9\u6cd5<\/li>\n\n\n\n<li>\u30b7\u30f3\u30dc\u30eb\u3068\u30d6\u30ed\u30c3\u30af\u3092\u6d3b\u7528\u3057\u305f\u6d17\u7df4\u3055\u308c\u305f\u4f7f\u3044\u65b9<\/li>\n\n\n\n<li>\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u30cf\u30c3\u30b7\u30e5\u306e\u6d3b\u7528\u4f8b<\/li>\n\n\n\n<li>\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406\u306b\u304a\u3051\u308b\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/li>\n\n\n\n<li>\u30cf\u30c3\u30b7\u30e5\u3068\u4ed6\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u7d44\u307f\u5408\u308f\u305b\u65b9<\/li>\n\n\n\n<li>Ruby\u3089\u3057\u3044\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30b9\u30bf\u30a4\u30eb\u3067\u306e\u30cf\u30c3\u30b7\u30e5\u306e\u4f7f\u7528\u6cd5<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u9805\u76ee\u3092\u901a\u3058\u3066\u3001\u8aad\u8005\u306fRuby\u306e\u30cf\u30c3\u30b7\u30e5\u3092\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3059\u308b\u305f\u3081\u306e\u77e5\u8b58\u3068\u30b9\u30ad\u30eb\u3092\u8eab\u306b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">1. Ruby\u306e\u30cf\u30c3\u30b7\u30e5\u3068\u306f\uff1f\u521d\u5fc3\u8005\u306b\u3082\u308f\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">\u30cf\u30c3\u30b7\u30e5\u306e\u57fa\u672c\u6982\u5ff5\uff1a\u30ad\u30fc\u3068\u5024\u306e\u95a2\u4fc2\u6027<\/a>      <\/li>      <li>        <a href=\"#i-2\">\u914d\u5217\u3068\u306e\u9055\u3044\uff1a\u3069\u3093\u306a\u6642\u306b\u30cf\u30c3\u30b7\u30e5\u3092\u4f7f\u3046\u3079\u304d\u304b<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-3\">Ruby\u306b\u304a\u3051\u308b\u30cf\u30c3\u30b7\u30e5\u306e\u91cd\u8981\u6027\u3068\u6d3b\u7528\u30b7\u30fc\u30f3<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-7\">2. \u30cf\u30c3\u30b7\u30e5\u306e\u57fa\u672c\u64cd\u4f5c\u3092\u30de\u30b9\u30bf\u30fc\u3057\u3088\u3046<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-8\">\u30cf\u30c3\u30b7\u30e5\u306e\u4f5c\u6210\uff1a\u8907\u6570\u306e\u65b9\u6cd5\u3068\u4f7f\u3044\u5206\u3051<\/a>      <\/li>      <li>        <a href=\"#i-12\">\u8981\u7d20\u306e\u8ffd\u52a0\u30fb\u66f4\u65b0\u30fb\u524a\u9664\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li>        <a href=\"#i-16\">\u30cf\u30c3\u30b7\u30e5\u5185\u306e\u5024\u3092\u52b9\u7387\u7684\u306b\u53d6\u5f97\u3059\u308b\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-20\">\u52b9\u7387\u7684\u306a\u64cd\u4f5c\u306e\u305f\u3081\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-24\">\u6f14\u7fd2\u554f\u984c<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-28\">3. Ruby\u3089\u3057\u3044\u6d17\u7df4\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u306e\u4f7f\u3044\u65b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-29\">\u30b7\u30f3\u30dc\u30eb\u3092\u30ad\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u30e1\u30ea\u30c3\u30c8<\/a>      <\/li>      <li>        <a href=\"#i-30\">\u30d6\u30ed\u30c3\u30af\u3092\u6d3b\u7528\u3057\u305f\u30cf\u30c3\u30b7\u30e5\u306e\u64cd\u4f5c\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li>        <a href=\"#i-35\">\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3\u3067\u30b9\u30de\u30fc\u30c8\u306b\u51e6\u7406\u3092\u8a18\u8ff0\u3059\u308b<\/a>      <\/li>      <li>        <a href=\"#i-36\">\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u4f8b<\/a>      <\/li>      <li>        <a href=\"#i-39\">Ruby\u3089\u3057\u3044\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u4f8b<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-40\">\u307e\u3068\u3081<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-41\">4. \u30cf\u30c3\u30b7\u30e5\u3092\u4f7f\u3063\u305f\u5b9f\u8df5\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u4f8b<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-42\">\u30c7\u30fc\u30bf\u306e\u96c6\u8a08\u3068\u5206\u6790\uff1a\u58f2\u4e0a\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u306e\u5b9f\u88c5<\/a>      <\/li>      <li>        <a href=\"#i-43\">API\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u52b9\u7387\u7684\u306a\u51e6\u7406\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-44\">\u30cf\u30c3\u30b7\u30e5\u3092\u6d3b\u7528\u3057\u305f\u30b7\u30f3\u30d7\u30eb\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u7bc9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-50\">\u307e\u3068\u3081<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-51\">5. \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u8003\u616e\u3057\u305f\u30cf\u30c3\u30b7\u30e5\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-52\">\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406\u306b\u304a\u3051\u308b\u30cf\u30c3\u30b7\u30e5\u306e\u6d3b\u7528\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-56\">\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u6291\u3048\u308b\u305f\u3081\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>      <\/li>      <li>        <a href=\"#i-60\">\u30cf\u30c3\u30b7\u30e5\u3068\u4ed6\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u9ad8\u901f\u5316\u6226\u7565<\/a>      <\/li>      <li>        <a href=\"#i-64\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30d9\u30f3\u30c1\u30de\u30fc\u30af<\/a>      <\/li>      <li>        <a href=\"#i-65\">\u4e00\u822c\u7684\u306a\u8ab2\u984c\u3068\u89e3\u6c7a\u7b56<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-69\">\u307e\u3068\u3081<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-70\">\u307e\u3068\u3081\uff1aRuby\u30cf\u30c3\u30b7\u30e5\u30de\u30b9\u30bf\u30fc\u3078\u306e\u9053<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-71\">\u5b66\u3093\u3060\u5185\u5bb9\u306e\u632f\u308a\u8fd4\u308a\u3068\u5b9f\u8df5\u306e\u30dd\u30a4\u30f3\u30c8<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-72\">\u3055\u3089\u306a\u308b\u9ad8\u307f\u3092\u76ee\u6307\u3059\u305f\u3081\u306e\u5b66\u7fd2\u30ea\u30bd\u30fc\u30b9\u3068\u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-sgb-headings sgb-heading\" id=\"i-0\"><span class=\"sgb-heading__inner sgb-heading--type1 with-icon\" style=\"background-color:transparent;border-color:transparent;font-size:1.2em\"><i class=\"fa fa-check\" style=\"color:var(--wp--preset--color--sango-main)\"><\/i><span class=\"sgb-heading__text\" style=\"color:#333\">1. Ruby\u306e\u30cf\u30c3\u30b7\u30e5\u3068\u306f\uff1f\u521d\u5fc3\u8005\u306b\u3082\u308f\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac<\/span><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">\u30cf\u30c3\u30b7\u30e5\u306e\u57fa\u672c\u6982\u5ff5\uff1a\u30ad\u30fc\u3068\u5024\u306e\u95a2\u4fc2\u6027<\/h3>\n\n\n\n<p>Ruby\u306e\u30cf\u30c3\u30b7\u30e5\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306b\u304a\u3051\u308b\u5f37\u529b\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e1\u3064\u3067\u3059\u3002<br>\u7c21\u5358\u306b\u8a00\u3048\u3070\u3001\u30cf\u30c3\u30b7\u30e5\u306f\u300c\u30ad\u30fc\u300d\u3068\u300c\u5024\u300d\u306e\u30da\u30a2\u3092\u683c\u7d0d\u3059\u308b\u30b3\u30f3\u30c6\u30ca\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u4f8b\u3048\u3070\u3001\u6b21\u306e\u3088\u3046\u306a\u30cf\u30c3\u30b7\u30e5\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">person = {\n  \"name\" =&gt; \"\u5c71\u7530\u592a\u90ce\",\n  \"age\" =&gt; 30,\n  \"occupation\" =&gt; \"\u30a8\u30f3\u30b8\u30cb\u30a2\"\n}<\/pre>\n\n\n\n<p>\u3053\u3053\u3067\u306f\u3001\u201dname\u201d\u3001\u201dage\u201d\u3001\u201doccupation\u201d\u304c\u30ad\u30fc\u3067\u3001\u305d\u308c\u305e\u308c\u306b\u5bfe\u5fdc\u3059\u308b\u201d\u5c71\u7530\u592a\u90ce\u201d\u300130\u3001\u201d\u30a8\u30f3\u30b8\u30cb\u30a2\u201d\u304c\u5024\u3067\u3059\u3002<br>\u30ad\u30fc\u3092\u4f7f\u3063\u3066\u3001\u7c21\u5358\u306b\u5024\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">puts person[\"name\"]  # \u51fa\u529b: \u5c71\u7530\u592a\u90ce\nputs person[\"age\"]   # \u51fa\u529b: 30<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">\u914d\u5217\u3068\u306e\u9055\u3044\uff1a\u3069\u3093\u306a\u6642\u306b\u30cf\u30c3\u30b7\u30e5\u3092\u4f7f\u3046\u3079\u304d\u304b<\/h3>\n\n\n\n<p>\u30cf\u30c3\u30b7\u30e5\u3068\u914d\u5217\u306f\u4f3c\u3066\u3044\u308b\u3088\u3046\u3067\u7570\u306a\u308b\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u8868\u3067\u4e3b\u306a\u9055\u3044\u3092\u6bd4\u8f03\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n<div id=\"id-16a19b46-6aa4-4f49-ba41-7c3019084c9c\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u7279\u5fb4<\/th><th>\u30cf\u30c3\u30b7\u30e5<\/th><th>\u914d\u5217<\/th><\/tr><\/thead><tbody><tr><td>\u30a2\u30af\u30bb\u30b9\u65b9\u6cd5<\/td><td>\u30ad\u30fc\u3092\u4f7f\u7528<\/td><td>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\uff08\u6570\u5b57\uff09\u3092\u4f7f\u7528<\/td><\/tr><tr><td>\u9806\u5e8f<\/td><td>\u9806\u5e8f\u306a\u3057\uff08Ruby 1.9\u4ee5\u964d\u306f\u633f\u5165\u9806\uff09<\/td><td>\u9806\u5e8f\u3042\u308a<\/td><\/tr><tr><td>\u8981\u7d20\u306e\u8b58\u5225<\/td><td>\u4efb\u610f\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff08\u901a\u5e38\u306f\u6587\u5b57\u5217\u3084\u30b7\u30f3\u30dc\u30eb\uff09<\/td><td>0\u304b\u3089\u59cb\u307e\u308b\u9023\u7d9a\u3057\u305f\u6574\u6570<\/td><\/tr><tr><td>\u4e3b\u306a\u7528\u9014<\/td><td>\u95a2\u9023\u30c7\u30fc\u30bf\u306e\u7ba1\u7406\u3001\u8f9e\u66f8\u306e\u3088\u3046\u306a\u4f7f\u7528<\/td><td>\u30ea\u30b9\u30c8\u306e\u7ba1\u7406\u3001\u9806\u5e8f\u304c\u91cd\u8981\u306a\u30c7\u30fc\u30bf<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u30cf\u30c3\u30b7\u30e5\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5834\u5408\u306b\u7279\u306b\u4fbf\u5229\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-sgb-message\"><div class=\"memo sng-shadow-0\" style=\"border-radius:0px;background-color:#b4e0fa;color:#009EF3\"><div class=\"memo_ttl dfont\"><span class=\"sng-box-msg__icon\" style=\"background:#009EF3\"><i class=\"far fa-lightbulb\"><\/i><\/span><div class=\"sng-box-msg__title\">\u30cf\u30c3\u30b7\u30e5\u306e\u5229\u70b9<\/div><\/div><div class=\"sng-box-msg__contents\">\n<ol class=\"wp-block-list\">\n<li>\u30c7\u30fc\u30bf\u306b\u610f\u5473\u306e\u3042\u308b\u540d\u524d\u3092\u4ed8\u3051\u305f\u3044\u5834\u5408<\/li>\n\n\n\n<li>\u9ad8\u901f\u306a\u691c\u7d22\u304c\u5fc5\u8981\u306a\u5834\u5408<\/li>\n\n\n\n<li>\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u8868\u73fe\u3057\u305f\u3044\u5834\u5408<\/li>\n<\/ol>\n<\/div><\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">Ruby\u306b\u304a\u3051\u308b\u30cf\u30c3\u30b7\u30e5\u306e\u91cd\u8981\u6027\u3068\u6d3b\u7528\u30b7\u30fc\u30f3<\/h3>\n\n\n\n<p>Ruby\u3067\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u304c\u975e\u5e38\u306b\u91cd\u8981\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\u3002<br>\u305d\u306e\u7406\u7531\u3068\u4e3b\u306a\u6d3b\u7528\u30b7\u30fc\u30f3\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-4\">1. <strong>\u8a2d\u5b9a\u60c5\u5831\u306e\u7ba1\u7406<\/strong><\/h4>\n\n\n\n<p>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u3092\u30cf\u30c3\u30b7\u30e5\u3067\u7ba1\u7406\u3059\u308b\u3068\u3001\u7c21\u5358\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   config = {\n     database: \"mysql\",\n     host: \"localhost\",\n     port: 3306\n   }\n   puts \"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9: #{config[:database]}\"<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-5\">2. <strong>\u30c7\u30fc\u30bf\u306e\u96c6\u8a08<\/strong><\/h4>\n\n\n\n<p>\u30cf\u30c3\u30b7\u30e5\u306f\u96c6\u8a08\u4f5c\u696d\u306b\u975e\u5e38\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   sales = [100, 200, 300, 100, 200]\n   total_sales = sales.reduce(Hash.new(0)) do |result, sale|\n     result[sale] += 1\n     result\n   end\n   puts total_sales  # \u51fa\u529b: {100=&gt;2, 200=&gt;2, 300=&gt;1}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-6\">3. <strong>API\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406<\/strong><\/h4>\n\n\n\n<p>\u591a\u304f\u306eAPI\u306fJSON\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u30c7\u30fc\u30bf\u3092\u8fd4\u3057\u307e\u3059\u304c\u3001\u3053\u308c\u306fRuby\u306e\u30cf\u30c3\u30b7\u30e5\u3068\u76f8\u6027\u304c\u826f\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   require 'json'\n\n   api_response = '{\"name\": \"John\", \"age\": 30}'\n   user_data = JSON.parse(api_response)\n   puts \"\u540d\u524d: #{user_data['name']}, \u5e74\u9f62: #{user_data['age']}\"<\/pre>\n\n\n\n<p>\u30cf\u30c3\u30b7\u30e5\u3092\u4f7f\u3044\u3053\u306a\u3059\u3053\u3068\u3067\u3001\u3088\u308a\u8aad\u307f\u3084\u3059\u304f\u3001\u52b9\u7387\u7684\u306aRuby\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br>\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u306e\u57fa\u672c\u64cd\u4f5c\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-sgb-headings sgb-heading\" id=\"i-7\"><span class=\"sgb-heading__inner sgb-heading--type1 with-icon\" style=\"background-color:transparent;border-color:transparent;font-size:1.2em\"><i class=\"fa fa-check\" style=\"color:var(--wp--preset--color--sango-main)\"><\/i><span class=\"sgb-heading__text\" style=\"color:#333\">2. \u30cf\u30c3\u30b7\u30e5\u306e\u57fa\u672c\u64cd\u4f5c\u3092\u30de\u30b9\u30bf\u30fc\u3057\u3088\u3046<\/span><\/span><\/h2>\n\n\n\n<p>\u30cf\u30c3\u30b7\u30e5\u306f\u975e\u5e38\u306b\u67d4\u8edf\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u304c\u3001\u305d\u306e\u529b\u3092\u6700\u5927\u9650\u306b\u6d3b\u7528\u3059\u308b\u306b\u306f\u57fa\u672c\u7684\u306a\u64cd\u4f5c\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<br>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u306e\u4f5c\u6210\u304b\u3089\u8981\u7d20\u306e\u64cd\u4f5c\u3001\u52b9\u7387\u7684\u306a\u5024\u306e\u53d6\u5f97\u65b9\u6cd5\u307e\u3067\u3001\u9806\u3092\u8ffd\u3063\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">\u30cf\u30c3\u30b7\u30e5\u306e\u4f5c\u6210\uff1a\u8907\u6570\u306e\u65b9\u6cd5\u3068\u4f7f\u3044\u5206\u3051<\/h3>\n\n\n\n<p>Ruby\u3067\u306f\u3001\u4ee5\u4e0b\u306e3\u3064\u306e\u65b9\u6cd5\u3067\u30cf\u30c3\u30b7\u30e5\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-9\">1. \u30ea\u30c6\u30e9\u30eb\u8868\u8a18<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">hash = { \"name\" =&gt; \"Alice\", \"age\" =&gt; 30 }\n# \u307e\u305f\u306f\uff08Ruby 1.9\u4ee5\u964d\uff09\nhash = { name: \"Alice\", age: 30 }<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-10\">2. Hash.new\u30e1\u30bd\u30c3\u30c9<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">hash = Hash.new\n# \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u8a2d\u5b9a\u3059\u308b\u5834\u5408\nhash_with_default = Hash.new(0)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-11\">3. <code>Hash[]<\/code> \u30e1\u30bd\u30c3\u30c9<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">hash = Hash[\"name\", \"Bob\", \"age\", 25]<\/pre>\n\n\n\n<div class=\"wp-block-sgb-message\"><div class=\"memo sng-shadow-0\" style=\"border-radius:0px;background-color:#b4e0fa;color:#009EF3\"><div class=\"memo_ttl dfont\"><span class=\"sng-box-msg__icon\" style=\"background:#009EF3\"><i class=\"far fa-lightbulb\"><\/i><\/span><div class=\"sng-box-msg__title\">\u4f7f\u3044\u5206\u3051\u306e\u30dd\u30a4\u30f3\u30c8<\/div><\/div><div class=\"sng-box-msg__contents\">\n<ul class=\"wp-block-list\">\n<li>\u30ea\u30c6\u30e9\u30eb\u8868\u8a18\u306f\u6700\u3082\u4e00\u822c\u7684\u3067\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u304c\u9ad8\u3044\u3067\u3059\u3002<\/li>\n\n\n\n<li><code>Hash.new<\/code>\u306f\u7a7a\u306e\u30cf\u30c3\u30b7\u30e5\u3092\u4f5c\u6210\u3059\u308b\u969b\u3084\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u8a2d\u5b9a\u3057\u305f\u3044\u5834\u5408\u306b\u4fbf\u5229\u3067\u3059\u3002<\/li>\n\n\n\n<li><code>Hash[]<\/code>\u306f\u914d\u5217\u304b\u3089\u30cf\u30c3\u30b7\u30e5\u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">\u8981\u7d20\u306e\u8ffd\u52a0\u30fb\u66f4\u65b0\u30fb\u524a\u9664\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-13\">1. \u8981\u7d20\u306e\u8ffd\u52a0<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">hash = {}\nhash[\"key\"] = \"value\"\n# \u307e\u305f\u306f\nhash[:key] = \"value\"<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-14\">2. \u8981\u7d20\u306e\u66f4\u65b0<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">hash = { name: \"Alice\" }\nhash[:name] = \"Bob\"  # \u65e2\u5b58\u306e\u30ad\u30fc\u306e\u5024\u3092\u66f4\u65b0<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-15\">3. \u8981\u7d20\u306e\u524a\u9664<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">hash = { name: \"Charlie\", age: 35 }\ndeleted_value = hash.delete(:age)\nputs deleted_value  # \u51fa\u529b: 35\nputs hash  # \u51fa\u529b: {:name=&gt;\"Charlie\"}<\/pre>\n\n\n\n<div class=\"wp-block-sgb-message\"><div class=\"memo sng-shadow-0\" style=\"border-radius:0px;background-color:#b4e0fa;color:#009EF3\"><div class=\"memo_ttl dfont\"><span class=\"sng-box-msg__icon\" style=\"background:#009EF3\"><i class=\"far fa-lightbulb\"><\/i><\/span><div class=\"sng-box-msg__title\">\u30dd\u30a4\u30f3\u30c8<\/div><\/div><div class=\"sng-box-msg__contents\">\n<ul class=\"wp-block-list\">\n<li>\u5b58\u5728\u3057\u306a\u3044\u30ad\u30fc\u306b\u5bfe\u3057\u3066\u5024\u3092\u4ee3\u5165\u3059\u308b\u3068\u3001\u65b0\u3057\u3044\u8981\u7d20\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u65e2\u5b58\u306e\u30ad\u30fc\u306b\u5bfe\u3057\u3066\u5024\u3092\u4ee3\u5165\u3059\u308b\u3068\u3001\u305d\u306e\u5024\u304c\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>delete<\/code>\u30e1\u30bd\u30c3\u30c9\u306f\u524a\u9664\u3055\u308c\u305f\u8981\u7d20\u306e\u5024\u3092\u8fd4\u3059\u306e\u3067\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u5229\u7528\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">\u30cf\u30c3\u30b7\u30e5\u5185\u306e\u5024\u3092\u52b9\u7387\u7684\u306b\u53d6\u5f97\u3059\u308b\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-17\">1. \u30d6\u30e9\u30b1\u30c3\u30c8\u8a18\u6cd5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">hash = { name: \"David\", age: 40 }\nputs hash[:name]  # \u51fa\u529b: David\nputs hash[:height]  # \u51fa\u529b: nil\uff08\u30ad\u30fc\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\uff09<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-18\">2. fetch\u30e1\u30bd\u30c3\u30c9<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">hash = { name: \"Eve\", age: 28 }\nputs hash.fetch(:name)  # \u51fa\u529b: Eve\nputs hash.fetch(:height, \"Not found\")  # \u51fa\u529b: Not found\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u6307\u5b9a\uff09\n# puts hash.fetch(:height)  # KeyError\u304c\u767a\u751f\uff08\u30ad\u30fc\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\uff09<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-19\">3. dig\u30e1\u30bd\u30c3\u30c9\uff08\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u306b\u4fbf\u5229\uff09<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nested_hash = { user: { name: \"Frank\", details: { age: 45 } } }\nputs nested_hash.dig(:user, :details, :age)  # \u51fa\u529b: 45\nputs nested_hash.dig(:user, :details, :height)  # \u51fa\u529b: nil\uff08\u30ad\u30fc\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\uff09<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">\u52b9\u7387\u7684\u306a\u64cd\u4f5c\u306e\u305f\u3081\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-21\">1. <code>default_proc<\/code>\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u52d5\u7684\u306b\u8a2d\u5b9a<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">counter = Hash.new { |hash, key| hash[key] = 0 }\ncounter[:apples] += 1\nputs counter[:apples]  # \u51fa\u529b: 1\nputs counter[:bananas]  # \u51fa\u529b: 0<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-22\">2. <code>merge<\/code>\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u8907\u6570\u306e\u30cf\u30c3\u30b7\u30e5\u3092\u7d50\u5408<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">hash1 = { a: 1, b: 2 }\nhash2 = { b: 3, c: 4 }\nmerged_hash = hash1.merge(hash2)\nputs merged_hash  # \u51fa\u529b: {:a=&gt;1, :b=&gt;3, :c=&gt;4}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-23\">3. <code>transform_values<\/code>\u3092\u4f7f\u7528\u3057\u3066\u5168\u3066\u306e\u5024\u3092\u5909\u63db<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">prices = { apple: 100, banana: 80, orange: 120 }\ndiscounted_prices = prices.transform_values { |price| price * 0.9 }\nputs discounted_prices  # \u51fa\u529b: {:apple=&gt;90.0, :banana=&gt;72.0, :orange=&gt;108.0}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-24\">\u6f14\u7fd2\u554f\u984c<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-25\">1. \u6b21\u306e\u30cf\u30c3\u30b7\u30e5\u3092\u4f5c\u6210\u3057\u3001\u65b0\u3057\u3044\u8981\u7d20\u3092\u8ffd\u52a0\u3001\u65e2\u5b58\u306e\u8981\u7d20\u3092\u66f4\u65b0\u3001\u305d\u3057\u30661\u3064\u306e\u8981\u7d20\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">fruits = { apple: 5, banana: 3, orange: 7 }\n# \u3053\u3053\u306b\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u304f\u3060\u3055\u3044<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-26\">2. \u4ee5\u4e0b\u306e\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u304b\u3089\u3001Alice\u306e\u5e74\u9f62\u3092\u53d6\u5f97\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">users = {\n  alice: { name: \"Alice\", age: 28 },\n  bob: { name: \"Bob\", age: 35 }\n}\n# \u3053\u3053\u306b\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u304f\u3060\u3055\u3044<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-27\">3. 2\u3064\u306e\u30cf\u30c3\u30b7\u30e5\u3092\u30de\u30fc\u30b8\u3057\u3066\u3001\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u540c\u3058\u30ad\u30fc\u304c\u3042\u308b\u5834\u5408\u306f\u30012\u3064\u76ee\u306e\u30cf\u30c3\u30b7\u30e5\u306e\u5024\u3092\u512a\u5148\u3055\u305b\u3066\u304f\u3060\u3055\u3044\u3002<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">hash1 = { a: 1, b: 2, c: 3 }\nhash2 = { b: 4, d: 5 }\n# \u3053\u3053\u306b\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u304f\u3060\u3055\u3044<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u57fa\u672c\u64cd\u4f5c\u3092\u30de\u30b9\u30bf\u30fc\u3059\u308b\u3053\u3068\u3067\u3001Ruby\u3067\u306e\u30cf\u30c3\u30b7\u30e5\u306e\u6271\u3044\u304c\u3088\u308a\u52b9\u7387\u7684\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3055\u3089\u306b\u6d17\u7df4\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u306e\u4f7f\u3044\u65b9\u306b\u3064\u3044\u3066\u5b66\u3093\u3067\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-sgb-headings sgb-heading\" id=\"i-28\"><span class=\"sgb-heading__inner sgb-heading--type1 with-icon\" style=\"background-color:transparent;border-color:transparent;font-size:1.2em\"><i class=\"fa fa-check\" style=\"color:var(--wp--preset--color--sango-main)\"><\/i><span class=\"sgb-heading__text\" style=\"color:#333\">3. Ruby\u3089\u3057\u3044\u6d17\u7df4\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u306e\u4f7f\u3044\u65b9<\/span><\/span><\/h2>\n\n\n\n<p>Ruby\u306f\u300c\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306e\u5e78\u305b\u300d\u3092\u91cd\u8996\u3059\u308b\u8a00\u8a9e\u3067\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001Ruby\u3089\u3057\u3044\u6d17\u7df4\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u306e\u4f7f\u3044\u65b9\u3092\u5b66\u3073\u3001\u3088\u308a\u52b9\u7387\u7684\u3067\u8aad\u307f\u3084\u3059\u3044\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u65b9\u6cd5\u3092\u63a2\u6c42\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-29\">\u30b7\u30f3\u30dc\u30eb\u3092\u30ad\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u30e1\u30ea\u30c3\u30c8<\/h3>\n\n\n\n<p>\u30b7\u30f3\u30dc\u30eb\u306f\u3001Ruby\u306e\u7279\u5fb4\u7684\u306a\u6a5f\u80fd\u306e1\u3064\u3067\u3059\u3002<br>\u30cf\u30c3\u30b7\u30e5\u306e\u30ad\u30fc\u3068\u3057\u3066\u30b7\u30f3\u30dc\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30e1\u30ea\u30c3\u30c8\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u5411\u4e0a<br>\u540c\u3058\u30b7\u30f3\u30dc\u30eb\u306f\u5e38\u306b\u540c\u3058\u30aa\u30d6\u30b8\u30a7\u30af\u30c8ID\u3092\u6301\u3064\u305f\u3081\u3001\u6587\u5b57\u5217\u3068\u6bd4\u3079\u3066\u30e1\u30e2\u30ea\u52b9\u7387\u304c\u826f\u304f\u3001\u6bd4\u8f03\u304c\u9ad8\u901f\u3067\u3059\u3002<\/li>\n\n\n\n<li>\u53ef\u8aad\u6027\u306e\u5411\u4e0a<br>\u30b7\u30f3\u30dc\u30eb\u306f<code>:symbol<\/code>\u306e\u3088\u3046\u306b\u7c21\u6f54\u306b\u66f8\u3051\u308b\u305f\u3081\u3001\u30b3\u30fc\u30c9\u304c\u8aad\u307f\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5b89\u5168\u6027\u306e\u5411\u4e0a<br>\u30b7\u30f3\u30dc\u30eb\u306f\u30a4\u30df\u30e5\u30fc\u30bf\u30d6\u30eb\uff08\u5909\u66f4\u4e0d\u53ef\uff09\u306a\u306e\u3067\u3001\u610f\u56f3\u3057\u306a\u3044\u5909\u66f4\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30b7\u30f3\u30dc\u30eb\u3092\u30ad\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u6587\u5b57\u5217\u3092\u30ad\u30fc\u3068\u3057\u3066\u4f7f\u7528\nuser_string = { \"name\" =&gt; \"Alice\", \"age\" =&gt; 30 }\n\n# \u30b7\u30f3\u30dc\u30eb\u3092\u30ad\u30fc\u3068\u3057\u3066\u4f7f\u7528\nuser_symbol = { name: \"Alice\", age: 30 }\n\nputs user_symbol[:name]  # \u51fa\u529b: Alice<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-30\">\u30d6\u30ed\u30c3\u30af\u3092\u6d3b\u7528\u3057\u305f\u30cf\u30c3\u30b7\u30e5\u306e\u64cd\u4f5c\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>\u30d6\u30ed\u30c3\u30af\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30cf\u30c3\u30b7\u30e5\u306e\u64cd\u4f5c\u3092\u3088\u308a\u7c21\u6f54\u304b\u3064\u8868\u73fe\u529b\u8c4a\u304b\u306b\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002<br>\u4ee5\u4e0b\u306b\u4e3b\u8981\u306a\u30e1\u30bd\u30c3\u30c9\u3068\u305d\u306e\u4f7f\u7528\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-31\">1. <code>each_with_object<\/code><\/h4>\n\n\n\n<p>\u65b0\u3057\u3044\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u306a\u304c\u3089\u30cf\u30c3\u30b7\u30e5\u3092\u9806\u306b\u51e6\u7406\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">fruits = { apple: 5, banana: 3, orange: 7 }\ntotal_fruits = fruits.each_with_object(0) do |(fruit, count), total|\n  total += count\nend\nputs total_fruits  # \u51fa\u529b: 15<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-32\">2. <code>select<\/code> \/ <code>reject<\/code><\/h4>\n\n\n\n<p>\u6761\u4ef6\u306b\u5408\u3046\u8981\u7d20\u3092\u9078\u629e\uff08\u307e\u305f\u306f\u9664\u5916\uff09\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">numbers = { a: 10, b: 20, c: 30, d: 40 }\neven_numbers = numbers.select { |key, value| value.even? }\nputs even_numbers  # \u51fa\u529b: {:a=&gt;10, :b=&gt;20, :d=&gt;40}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-33\">3. <code>map<\/code> \/ <code>collect<\/code><\/h4>\n\n\n\n<p>\u5404\u8981\u7d20\u3092\u5909\u63db\u3057\u3066\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">prices = { apple: 100, banana: 80, orange: 120 }\ndiscounted_prices = prices.map { |item, price| [item, price * 0.9] }.to_h\nputs discounted_prices  # \u51fa\u529b: {:apple=&gt;90.0, :banana=&gt;72.0, :orange=&gt;108.0}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-34\">4. <code>reduce<\/code> \/ <code>inject<\/code><\/h4>\n\n\n\n<p>\u30cf\u30c3\u30b7\u30e5\u306e\u8981\u7d20\u3092\u96c6\u7d04\u3057\u30661\u3064\u306e\u5024\u3092\u5f97\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">votes = { alice: 10, bob: 5, charlie: 7 }\ntotal_votes = votes.reduce(0) { |sum, (candidate, vote_count)| sum + vote_count }\nputs total_votes  # \u51fa\u529b: 22<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-35\">\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3\u3067\u30b9\u30de\u30fc\u30c8\u306b\u51e6\u7406\u3092\u8a18\u8ff0\u3059\u308b<\/h3>\n\n\n\n<p>\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u8907\u6570\u306e\u64cd\u4f5c\u30921\u884c\u3067\u7c21\u6f54\u306b\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002<br>\u3053\u308c\u306b\u3088\u308a\u3001\u4e2d\u9593\u5909\u6570\u3092\u6e1b\u3089\u3057\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4f8b\u3048\u3070\u3001\u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u304b\u308920\u4ee3\u306e\u5973\u6027\u306e\u540d\u524d\u3092\u62bd\u51fa\u3059\u308b\u51e6\u7406\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">users = [\n  { name: \"Alice\", age: 25, gender: :female },\n  { name: \"Bob\", age: 30, gender: :male },\n  { name: \"Charlie\", age: 22, gender: :male },\n  { name: \"Diana\", age: 27, gender: :female }\n]\n\nyoung_female_names = users\n  .select { |user| user[:age] &gt;= 20 &amp;&amp; user[:age] &lt; 30 }\n  .select { |user| user[:gender] == :female }\n  .map { |user| user[:name] }\n\nputs young_female_names  # \u51fa\u529b: [\"Alice\", \"Diana\"]<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30c7\u30fc\u30bf\u306e\u7d5e\u308a\u8fbc\u307f\u3068\u5909\u63db\u3092\u7c21\u6f54\u306b\u8868\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-36\">\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u4f8b<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-37\">1. \u30c7\u30fc\u30bf\u306e\u96c6\u8a08\u3068\u5206\u6790<\/h4>\n\n\n\n<p>\u58f2\u4e0a\u30c7\u30fc\u30bf\u3092\u96c6\u8a08\u3059\u308b\u4f8b<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sales_data = [\n  { date: \"2023-05-01\", product: \"A\", amount: 100 },\n  { date: \"2023-05-01\", product: \"B\", amount: 200 },\n  { date: \"2023-05-02\", product: \"A\", amount: 150 },\n  { date: \"2023-05-02\", product: \"B\", amount: 300 }\n]\n\ndaily_sales = sales_data\n  .group_by { |sale| sale[:date] }\n  .transform_values { |sales| sales.sum { |sale| sale[:amount] } }\n\nputs daily_sales\n# \u51fa\u529b: {\"2023-05-01\"=&gt;300, \"2023-05-02\"=&gt;450}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-38\">2. \u8907\u96d1\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u64cd\u4f5c<\/h4>\n\n\n\n<p>\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u3092\u64cd\u4f5c\u3059\u308b\u4f8b<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">config = {\n  database: {\n    production: { host: \"db.example.com\", port: 5432 },\n    development: { host: \"localhost\", port: 5432 }\n  },\n  api: {\n    endpoint: \"https:\/\/api.example.com\",\n    version: \"v1\"\n  }\n}\n\ndef get_config(config, *keys)\n  keys.reduce(config) { |acc, key| acc[key] if acc }\nend\n\nputs get_config(config, :database, :production, :host)  # \u51fa\u529b: db.example.com\nputs get_config(config, :api, :version)  # \u51fa\u529b: v1<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u6d17\u7df4\u3055\u308c\u305f\u4f7f\u3044\u65b9\u3092\u30de\u30b9\u30bf\u30fc\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u300cRuby\u3089\u3057\u3044\u300d\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br>Ruby\u3089\u3057\u3044\u30b3\u30fc\u30c9\u3068\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u7279\u5fb4\u3092\u6301\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u7c21\u6f54\u3055\u3092\u91cd\u8996<br>\u4e0d\u8981\u306a\u5197\u9577\u6027\u3092\u6392\u9664\u3057\u3001\u6700\u5c0f\u9650\u306e\u30b3\u30fc\u30c9\u3067\u6700\u5927\u9650\u306e\u52b9\u679c\u3092\u5f97\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u81ea\u7136\u8a00\u8a9e\u306b\u8fd1\u3044\u8868\u73fe<br>\u30e1\u30bd\u30c3\u30c9\u540d\u3084\u5909\u6570\u540d\u3092\u81ea\u7136\u306a\u82f1\u8a9e\u306b\u8fd1\u3065\u3051\u308b\u3053\u3068\u3067\u3001\u30b3\u30fc\u30c9\u306e\u610f\u56f3\u3092\u660e\u78ba\u306b\u4f1d\u3048\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30e1\u30bd\u30c3\u30c9\u540d\u306e\u547d\u540d\u898f\u5247<br>\u8ff0\u8a9e\u30e1\u30bd\u30c3\u30c9\uff08\u771f\u507d\u5024\u3092\u8fd4\u3059\u30e1\u30bd\u30c3\u30c9\uff09\u306f\u672b\u5c3e\u306b <code>?<\/code> \u3092\u4ed8\u3051\u308b\u306a\u3069\u3001Ruby\u306e\u6163\u7fd2\u306b\u5f93\u3044\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-39\">Ruby\u3089\u3057\u3044\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u4f8b<\/h3>\n\n\n\n<p>\u4ee5\u4e0b\u306b\u3001\u3053\u308c\u307e\u3067\u5b66\u3093\u3060\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u3001Ruby\u3089\u3057\u3044\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class BookStore\n  def initialize\n    @books = [\n      { title: \"Ruby Programming\", author: \"Matz\", price: 2500, stock: 5 },\n      { title: \"Python Basics\", author: \"Guido\", price: 2000, stock: 3 },\n      { title: \"JavaScript Essentials\", author: \"Eich\", price: 2200, stock: 4 }\n    ]\n  end\n\n  def expensive_books(threshold = 2000)\n    @books.select { |book| book[:price] &gt; threshold }\n          .map { |book| book[:title] }\n  end\n\n  def total_inventory_value\n    @books.sum { |book| book[:price] * book[:stock] }\n  end\n\n  def find_book(title)\n    @books.find { |book| book[:title].downcase.include?(title.downcase) }\n  end\n\n  def in_stock?(title)\n    book = find_book(title)\n    book &amp;&amp; book[:stock] &gt; 0\n  end\nend\n\nstore = BookStore.new\n\nputs \"Expensive books: #{store.expensive_books}\"\nputs \"Total inventory value: #{store.total_inventory_value}\"\nputs \"Is 'Ruby Programming' in stock? #{store.in_stock?('Ruby Programming')}\"\nputs \"Book details: #{store.find_book('python')}\"<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3067\u306f<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>expensive_books<\/code> \u30e1\u30bd\u30c3\u30c9\u3067 <code>select<\/code> \u3068 <code>map<\/code> \u3092\u4f7f\u7528\u3057\u3066\u3001\u9ad8\u4fa1\u306a\u672c\u306e\u30bf\u30a4\u30c8\u30eb\u30ea\u30b9\u30c8\u3092\u751f\u6210\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>total_inventory_value<\/code> \u30e1\u30bd\u30c3\u30c9\u3067 <code>sum<\/code> \u3092\u4f7f\u7528\u3057\u3066\u3001\u5728\u5eab\u306e\u7dcf\u984d\u3092\u8a08\u7b97\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>find_book<\/code> \u30e1\u30bd\u30c3\u30c9\u3067 <code>find<\/code> \u3092\u4f7f\u7528\u3057\u3066\u3001\u30bf\u30a4\u30c8\u30eb\u306b\u57fa\u3065\u3044\u3066\u672c\u3092\u691c\u7d22\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>in_stock?<\/code> \u30e1\u30bd\u30c3\u30c9\u306f\u8ff0\u8a9e\u30e1\u30bd\u30c3\u30c9\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3001\u672c\u304c\u5728\u5eab\u306b\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u8fd4\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30b3\u30fc\u30c9\u306f\u3088\u308a\u8aad\u307f\u3084\u3059\u304f\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002\u307e\u305f\u3001Ruby\u306e\u7279\u5fb4\u7684\u306a\u6a5f\u80fd\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u4ed6\u306e\u8a00\u8a9e\u3067\u306f\u8907\u6570\u884c\u3092\u8981\u3059\u308b\u51e6\u7406\u30921\u884c\u3067\u8868\u73fe\u3067\u304d\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-40\">\u307e\u3068\u3081<\/h3>\n\n\n\n<p>Ruby\u3089\u3057\u3044\u6d17\u7df4\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u306e\u4f7f\u3044\u65b9\u3092\u8eab\u306b\u3064\u3051\u308b\u3053\u3068\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u304c\u5411\u4e0a\u3057\u3001\u4ed6\u306e\u958b\u767a\u8005\u3068\u306e\u30b3\u30e9\u30dc\u30ec\u30fc\u30b7\u30e7\u30f3\u304c\u30b9\u30e0\u30fc\u30ba\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u51e6\u7406\u52b9\u7387\u304c\u5411\u4e0a\u3057\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u6539\u5584\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u3088\u308a\u5c11\u306a\u3044\u30b3\u30fc\u30c9\u884c\u6570\u3067\u591a\u304f\u306e\u6a5f\u80fd\u3092\u5b9f\u73fe\u3067\u304d\u308b\u305f\u3081\u3001\u30d0\u30b0\u306e\u6f5c\u5728\u7684\u306a\u767a\u751f\u6e90\u3092\u6e1b\u3089\u305b\u307e\u3059\u3002<\/li>\n\n\n\n<li>Ruby\u306e\u54f2\u5b66\u3067\u3042\u308b\u300c\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306e\u5e78\u305b\u300d\u3092\u4f53\u73fe\u3057\u3001\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u304c\u3088\u308a\u697d\u3057\u304f\u306a\u308a\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u77e5\u8b58\u3092\u6d3b\u304b\u3057\u305f\u5b9f\u8df5\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u4f8b\u3092\u898b\u3066\u3044\u304d\u307e\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u3092\u4f7f\u3063\u3066\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3069\u306e\u3088\u3046\u306b\u554f\u984c\u3092\u89e3\u6c7a\u3067\u304d\u308b\u304b\u3001\u5177\u4f53\u7684\u306a\u30b1\u30fc\u30b9\u30b9\u30bf\u30c7\u30a3\u3092\u901a\u3058\u3066\u5b66\u3093\u3067\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-sgb-headings sgb-heading\" id=\"i-41\"><span class=\"sgb-heading__inner sgb-heading--type1 with-icon\" style=\"background-color:transparent;border-color:transparent;font-size:1.2em\"><i class=\"fa fa-check\" style=\"color:var(--wp--preset--color--sango-main)\"><\/i><span class=\"sgb-heading__text\" style=\"color:#333\">4. \u30cf\u30c3\u30b7\u30e5\u3092\u4f7f\u3063\u305f\u5b9f\u8df5\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u4f8b<\/span><\/span><\/h2>\n\n\n\n<p>\u3053\u3053\u307e\u3067\u3067\u5b66\u3093\u3060\u30cf\u30c3\u30b7\u30e5\u306e\u57fa\u672c\u3068\u6d17\u7df4\u3055\u308c\u305f\u4f7f\u3044\u65b9\u3092\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b7\u30ca\u30ea\u30aa\u306b\u9069\u7528\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<br>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u30013\u3064\u306e\u5b9f\u8df5\u7684\u306a\u4f8b\u3092\u901a\u3058\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u306e\u5f37\u529b\u3055\u3068\u67d4\u8edf\u6027\u3092\u4f53\u9a13\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-42\">\u30c7\u30fc\u30bf\u306e\u96c6\u8a08\u3068\u5206\u6790\uff1a\u58f2\u4e0a\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<p>\u307e\u305a\u3001\u5c0f\u898f\u6a21\u306a\u5e97\u8217\u306e\u58f2\u4e0a\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3092\u5b9f\u88c5\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u3053\u306e\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u3001\u65e5\u5225\u30fb\u6708\u5225\u30fb\u5546\u54c1\u5225\u306e\u58f2\u4e0a\u96c6\u8a08\u3001\u58f2\u4e0a\u30c8\u30ec\u30f3\u30c9\u5206\u6790\u3001\u30d9\u30b9\u30c8\u30bb\u30e9\u30fc\u5546\u54c1\u306e\u30e9\u30f3\u30ad\u30f3\u30b0\u306a\u3069\u306e\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class SalesManagementSystem\n  def initialize\n    @sales_data = [\n      { date: \"2023-05-01\", product: \"A\", amount: 100 },\n      { date: \"2023-05-01\", product: \"B\", amount: 200 },\n      { date: \"2023-05-02\", product: \"A\", amount: 150 },\n      { date: \"2023-05-02\", product: \"C\", amount: 300 },\n      { date: \"2023-06-01\", product: \"B\", amount: 400 },\n      { date: \"2023-06-02\", product: \"A\", amount: 200 },\n      { date: \"2023-06-02\", product: \"C\", amount: 250 }\n    ]\n  end\n\n  def daily_sales\n    @sales_data.group_by { |sale| sale[:date] }\n               .transform_values { |sales| sales.sum { |sale| sale[:amount] } }\n  end\n\n  def monthly_sales\n    @sales_data.group_by { |sale| sale[:date][0..6] }\n               .transform_values { |sales| sales.sum { |sale| sale[:amount] } }\n  end\n\n  def product_sales\n    @sales_data.group_by { |sale| sale[:product] }\n               .transform_values { |sales| sales.sum { |sale| sale[:amount] } }\n  end\n\n  def best_selling_products(top_n = 3)\n    product_sales.sort_by { |_, amount| -amount }.first(top_n).to_h\n  end\n\n  def sales_trend\n    daily_sales.sort_by { |date, _| date }.to_h\n  end\nend\n\n# \u4f7f\u7528\u4f8b\nsms = SalesManagementSystem.new\nputs \"\u65e5\u5225\u58f2\u4e0a: #{sms.daily_sales}\"\nputs \"\u6708\u5225\u58f2\u4e0a: #{sms.monthly_sales}\"\nputs \"\u5546\u54c1\u5225\u58f2\u4e0a: #{sms.product_sales}\"\nputs \"\u30d9\u30b9\u30c8\u30bb\u30e9\u30fc\u5546\u54c1 (\u4e0a\u4f4d3\u3064): #{sms.best_selling_products}\"\nputs \"\u58f2\u4e0a\u30c8\u30ec\u30f3\u30c9: #{sms.sales_trend}\"<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001<code>group_by<\/code>\u3001<code>transform_values<\/code>\u3001<code>sum<\/code>\u3001<code>sort_by<\/code> \u306a\u3069\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u6d3b\u7528\u3057\u3066\u3001\u8907\u96d1\u306a\u96c6\u8a08\u51e6\u7406\u3092\u7c21\u6f54\u306b\u8a18\u8ff0\u3057\u3066\u3044\u307e\u3059\u3002<br>\u7279\u306b\u6ce8\u76ee\u3059\u3079\u304d\u70b9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>daily_sales<\/code> \u3068 <code>monthly_sales<\/code> \u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3001<code>group_by<\/code> \u3092\u4f7f\u7528\u3057\u3066\u65e5\u4ed8\u307e\u305f\u306f\u6708\u3054\u3068\u306b\u30c7\u30fc\u30bf\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3001\u305d\u306e\u5f8c <code>transform_values<\/code> \u3067\u5404\u30b0\u30eb\u30fc\u30d7\u306e\u5408\u8a08\u3092\u8a08\u7b97\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>best_selling_products<\/code> \u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3001<code>sort_by<\/code> \u3068\u8ca0\u306e\u5024\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u964d\u9806\u3067\u306e\u30bd\u30fc\u30c8\u3092\u5b9f\u73fe\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>sales_trend<\/code> \u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3001<code>sort_by<\/code> \u3092\u4f7f\u7528\u3057\u3066\u65e5\u4ed8\u9806\u306b\u30c7\u30fc\u30bf\u3092\u4e26\u3079\u66ff\u3048\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-43\">API\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u52b9\u7387\u7684\u306a\u51e6\u7406\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u6b21\u306b\u3001\u5916\u90e8API\u304b\u3089\u306eJSON\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u51e6\u7406\u3059\u308b\u30b7\u30ca\u30ea\u30aa\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002<br>\u3053\u3053\u3067\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3001\u5fc5\u8981\u306a\u60c5\u5831\u3092\u62bd\u51fa\u3059\u308b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">require 'json'\nrequire 'ostruct'\n\nclass UserDataProcessor\n  def initialize(json_data)\n    @data = JSON.parse(json_data, symbolize_names: true)\n  end\n\n  def process_users\n    @data[:users].map do |user|\n      OpenStruct.new(\n        id: user[:id],\n        full_name: \"#{user[:first_name]} #{user[:last_name]}\",\n        email: user[:email],\n        active: user[:status] == 'active'\n      )\n    end\n  end\n\n  def find_user(id)\n    process_users.find { |user| user.id == id }\n  end\n\n  def active_users\n    process_users.select(&amp;:active)\n  end\n\n  def user_emails\n    process_users.map(&amp;:email)\n  end\nend\n\n# \u4f7f\u7528\u4f8b\njson_data = &lt;&lt;-JSON\n{\n  \"users\": [\n    {\"id\": 1, \"first_name\": \"Alice\", \"last_name\": \"Smith\", \"email\": \"alice@example.com\", \"status\": \"active\"},\n    {\"id\": 2, \"first_name\": \"Bob\", \"last_name\": \"Johnson\", \"email\": \"bob@example.com\", \"status\": \"inactive\"},\n    {\"id\": 3, \"first_name\": \"Charlie\", \"last_name\": \"Brown\", \"email\": \"charlie@example.com\", \"status\": \"active\"}\n  ]\n}\nJSON\n\nprocessor = UserDataProcessor.new(json_data)\nputs \"\u5168\u30e6\u30fc\u30b6\u30fc: #{processor.process_users}\"\nputs \"\u30e6\u30fc\u30b6\u30fcID 2: #{processor.find_user(2)}\"\nputs \"\u30a2\u30af\u30c6\u30a3\u30d6\u30e6\u30fc\u30b6\u30fc: #{processor.active_users}\"\nputs \"\u5168\u30e6\u30fc\u30b6\u30fc\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9: #{processor.user_emails}\"<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u30dd\u30a4\u30f3\u30c8\u306b\u6ce8\u76ee\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<div class=\"wp-block-sgb-message\"><div class=\"memo sng-shadow-0\" style=\"border-radius:0px;background-color:#b4e0fa;color:#009EF3\"><div class=\"memo_ttl dfont\"><span class=\"sng-box-msg__icon\" style=\"background:#009EF3\"><i class=\"far fa-lightbulb\"><\/i><\/span><div class=\"sng-box-msg__title\">\u6ce8\u76ee\u3059\u3079\u304d\u70b9<\/div><\/div><div class=\"sng-box-msg__contents\">\n<ul class=\"wp-block-list\">\n<li><code>JSON.parse<\/code> \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066JSON\u30c7\u30fc\u30bf\u3092Ruby\u306e\u30cf\u30c3\u30b7\u30e5\u306b\u5909\u63db\u3057\u3066\u3044\u307e\u3059\u3002<code>symbolize_names: true<\/code> \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30ad\u30fc\u3092\u30b7\u30f3\u30dc\u30eb\u3068\u3057\u3066\u6271\u3048\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>OpenStruct<\/code> \u3092\u4f7f\u7528\u3057\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u3092\u64ec\u4f3c\u7684\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u3057\u3066\u6271\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30c9\u30c3\u30c8\u8a18\u6cd5\u3067\u30d7\u30ed\u30d1\u30c6\u30a3\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>map<\/code>\u3001<code>find<\/code>\u3001<code>select<\/code> \u306a\u3069\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u306e\u5909\u63db\u3084\u691c\u7d22\u3092\u52b9\u7387\u7684\u306b\u884c\u3063\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-44\">\u30cf\u30c3\u30b7\u30e5\u3092\u6d3b\u7528\u3057\u305f\u30b7\u30f3\u30d7\u30eb\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u7bc9<\/h3>\n\n\n\n<p>\u6700\u5f8c\u306b\u3001\u30cf\u30c3\u30b7\u30e5\u3092\u4f7f\u7528\u3057\u3066\u30b7\u30f3\u30d7\u30eb\u306a\u30e1\u30e2\u30ea\u30ad\u30e3\u30c3\u30b7\u30e5\u30b7\u30b9\u30c6\u30e0\u3092\u5b9f\u88c5\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<br>\u3053\u306e\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u3001\u30c7\u30fc\u30bf\u306e\u4fdd\u5b58\u3068\u53d6\u5f97\u3001\u6709\u52b9\u671f\u9650\u306e\u8a2d\u5b9a\u3001\u81ea\u52d5\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class SimpleCache\n  def initialize\n    @cache = {}\n    @expiration = {}\n  end\n\n  def set(key, value, ttl = 3600)\n    @cache[key] = value\n    @expiration[key] = Time.now + ttl\n  end\n\n  def get(key)\n    cleanup\n    if @cache.has_key?(key) &amp;&amp; !expired?(key)\n      @cache[key]\n    else\n      nil\n    end\n  end\n\n  def delete(key)\n    @cache.delete(key)\n    @expiration.delete(key)\n  end\n\n  private\n\n  def expired?(key)\n    @expiration[key] &lt;= Time.now\n  end\n\n  def cleanup\n    expired_keys = @expiration.select { |key, exp_time| exp_time &lt;= Time.now }.keys\n    expired_keys.each { |key| delete(key) }\n  end\nend\n\n# \u4f7f\u7528\u4f8b\ncache = SimpleCache.new\n\ncache.set(\"user_1\", { name: \"Alice\", age: 30 })\ncache.set(\"temp_data\", [1, 2, 3], 5)  # 5\u79d2\u5f8c\u306b\u671f\u9650\u5207\u308c\n\nputs \"User 1: #{cache.get(\"user_1\")}\"\nputs \"Temp Data: #{cache.get(\"temp_data\")}\"\n\nsleep(6)  # 6\u79d2\u5f85\u6a5f\n\nputs \"Temp Data after expiration: #{cache.get(\"temp_data\")}\"<\/pre>\n\n\n\n<p>\u3053\u306e\u30b7\u30f3\u30d7\u30eb\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30b7\u30b9\u30c6\u30e0\u306f\u3001\u4ee5\u4e0b\u306e\u7279\u5fb4\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-45\">1. \u30c7\u30fc\u30bf\u306e\u4fdd\u5b58\u3068\u53d6\u5f97<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>set<\/code> \u30e1\u30bd\u30c3\u30c9\u3067\u30ad\u30fc\u3068\u5024\u306e\u30da\u30a2\u3092\u4fdd\u5b58\u3057\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u3067TTL\uff08Time To Live\uff09\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>get<\/code> \u30e1\u30bd\u30c3\u30c9\u3067\u30ad\u30fc\u306b\u5bfe\u5fdc\u3059\u308b\u5024\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-46\">2. \u6709\u52b9\u671f\u9650\u306e\u8a2d\u5b9a<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5404\u30ad\u30fc\u306b\u5bfe\u3057\u3066\u6709\u52b9\u671f\u9650\u3092\u8a2d\u5b9a\u3057\u3001<code>@expiration<\/code> \u30cf\u30c3\u30b7\u30e5\u3067\u7ba1\u7406\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-47\">3. \u81ea\u52d5\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>get<\/code> \u30e1\u30bd\u30c3\u30c9\u304c\u547c\u3070\u308c\u308b\u305f\u3073\u306b <code>cleanup<\/code> \u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u884c\u3057\u3001\u671f\u9650\u5207\u308c\u306e\u30c7\u30fc\u30bf\u3092\u524a\u9664\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-48\">4. \u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u6027<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u3053\u306e\u5b9f\u88c5\u306f\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5b9f\u969b\u306e\u904b\u7528\u3067\u306f\u3001\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u74b0\u5883\u3092\u8003\u616e\u3057\u305f\u5b9f\u88c5\u304c\u5fc5\u8981\u306b\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-49\">5. \u30e1\u30e2\u30ea\u7ba1\u7406<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u3053\u306e\u5b9f\u88c5\u3067\u306f\u660e\u793a\u7684\u306a\u30e1\u30e2\u30ea\u7ba1\u7406\u3092\u884c\u3063\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u6271\u3046\u5834\u5408\u306f\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306b\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u306e\u30b7\u30f3\u30d7\u30eb\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30b7\u30b9\u30c6\u30e0\u306f\u3001\u5c0f\u898f\u6a21\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3084\u30d7\u30ed\u30c8\u30bf\u30a4\u30d7\u306e\u958b\u767a\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002<br>\u5927\u898f\u6a21\u306a\u30b7\u30b9\u30c6\u30e0\u3084\u672c\u756a\u74b0\u5883\u3067\u306f\u3001Redis \u3084 Memcached \u306e\u3088\u3046\u306a\u5c02\u7528\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30b7\u30b9\u30c6\u30e0\u306e\u4f7f\u7528\u3092\u691c\u8a0e\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-50\">\u307e\u3068\u3081<\/h3>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u8df5\u7684\u306a\u4f8b\u3092\u901a\u3058\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u304c\u3044\u304b\u306b\u5f37\u529b\u3067\u67d4\u8edf\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3042\u308b\u304b\u304c\u308f\u304b\u3063\u305f\u3068\u601d\u3044\u307e\u3059\u3002<br>\u30cf\u30c3\u30b7\u30e5\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c7\u30fc\u30bf\u306e\u69cb\u9020\u5316\uff1a\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u3092\u6574\u7406\u3057\u3001\u52b9\u7387\u7684\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u9ad8\u901f\u306a\u691c\u7d22\uff1a\u30ad\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u306e\u4e2d\u304b\u3089\u5fc5\u8981\u306a\u60c5\u5831\u3092\u7d20\u65e9\u304f\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u67d4\u8edf\u306a\u64cd\u4f5c\uff1a<code>group_by<\/code>\u3001<code>transform_values<\/code>\u3001<code>select<\/code> \u306a\u3069\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u51e6\u7406\u3092\u7c21\u6f54\u306b\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u52b9\u7387\uff1a\u9069\u5207\u306b\u4f7f\u7528\u3059\u308c\u3070\u3001\u30e1\u30e2\u30ea\u52b9\u7387\u306e\u826f\u3044\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u305f\u3060\u3057\u3001\u30cf\u30c3\u30b7\u30e5\u3092\u4f7f\u7528\u3059\u308b\u969b\u306f\u4ee5\u4e0b\u306e\u70b9\u306b\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u30cf\u30c3\u30b7\u30e5\u3092\u5229\u7528\u3059\u308b\u969b\u306b\u6ce8\u610f\u3059\u3079\u304d3\u70b9<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ol class=\"wp-block-list\">\n<li><strong>\u30ad\u30fc\u306e\u7ba1\u7406<\/strong>\uff1a\u5927\u898f\u6a21\u306a\u30cf\u30c3\u30b7\u30e5\u3092\u6271\u3046\u5834\u5408\u3001\u30ad\u30fc\u306e\u547d\u540d\u898f\u5247\u3084\u7ba1\u7406\u65b9\u6cd5\u3092\u614e\u91cd\u306b\u691c\u8a0e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf<\/strong>\uff1a\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u30cf\u30c3\u30b7\u30e5\u306b\u683c\u7d0d\u3059\u308b\u5834\u5408\u3001\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306b\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3084\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u4f7f\u7528\u3092\u691c\u8a0e\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9<\/strong>\uff1a\u30cf\u30c3\u30b7\u30e5\u306e\u30b5\u30a4\u30ba\u304c\u975e\u5e38\u306b\u5927\u304d\u304f\u306a\u308b\u3068\u3001\u691c\u7d22\u3084\u64cd\u4f5c\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u4f4e\u4e0b\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u9069\u5207\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u9078\u629e\u3084\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u4f7f\u7528\u3092\u691c\u8a0e\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n<\/ol>\n<\/div><\/div>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u4f8b\u3092\u53c2\u8003\u306b\u3001\u81ea\u8eab\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u30cf\u30c3\u30b7\u30e5\u3092\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<br>\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3055\u3089\u306b\u9ad8\u5ea6\u306a\u30cf\u30c3\u30b7\u30e5\u306e\u4f7f\u7528\u65b9\u6cd5\u3084\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u5b66\u3093\u3067\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-sgb-headings sgb-heading\" id=\"i-51\"><span class=\"sgb-heading__inner sgb-heading--type1 with-icon\" style=\"background-color:transparent;border-color:transparent;font-size:1.2em\"><i class=\"fa fa-check\" style=\"color:var(--wp--preset--color--sango-main)\"><\/i><span class=\"sgb-heading__text\" style=\"color:#333\">5. \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u8003\u616e\u3057\u305f\u30cf\u30c3\u30b7\u30e5\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/span><\/span><\/h2>\n\n\n\n<p>Ruby\u306e\u30cf\u30c3\u30b7\u30e5\u306f\u975e\u5e38\u306b\u5f37\u529b\u3067\u67d4\u8edf\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u304c\u3001\u5927\u898f\u6a21\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3084\u8907\u96d1\u306a\u51e6\u7406\u3092\u6271\u3046\u5834\u5408\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316\u304c\u91cd\u8981\u306b\u306a\u308a\u307e\u3059\u3002<br>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u3092\u52b9\u7387\u7684\u306b\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-52\">\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406\u306b\u304a\u3051\u308b\u30cf\u30c3\u30b7\u30e5\u306e\u6d3b\u7528\u6cd5<\/h3>\n\n\n\n<p>\u5927\u898f\u6a21\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u6271\u3046\u5834\u5408\u3001\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3068\u51e6\u7406\u901f\u5ea6\u306e\u4e21\u65b9\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u306a\u51e6\u7406\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-53\">1. \u30d0\u30c3\u30c1\u51e6\u7406<\/h4>\n\n\n\n<p>\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u4e00\u5ea6\u306b\u51e6\u7406\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u5c0f\u3055\u306a\u30d0\u30c3\u30c1\u306b\u5206\u5272\u3057\u3066\u51e6\u7406\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def process_large_hash(large_hash, batch_size = 1000)\n  large_hash.each_slice(batch_size) do |batch|\n    batch.each do |key, value|\n      # \u5404\u8981\u7d20\u306e\u51e6\u7406\n    end\n    # \u30d0\u30c3\u30c1\u51e6\u7406\u5f8c\u306e\u64cd\u4f5c\uff08\u4f8b\uff1a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u4e00\u62ec\u633f\u5165\uff09\n  end\nend<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-54\">2. \u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u51e6\u7406<\/h4>\n\n\n\n<p><code>Enumerator<\/code> \u3092\u4f7f\u7528\u3057\u3066\u3001\u5927\u304d\u306a\u30cf\u30c3\u30b7\u30e5\u3092\u30b9\u30c8\u30ea\u30fc\u30e0\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def stream_large_hash(large_hash)\n  Enumerator.new do |yielder|\n    large_hash.each do |key, value|\n      yielder.yield([key, value])\n    end\n  end\nend\n\nstream = stream_large_hash(large_hash)\nstream.each do |key, value|\n  # \u5404\u8981\u7d20\u306e\u51e6\u7406\nend<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-55\">3. \u4e26\u5217\u51e6\u7406<\/h4>\n\n\n\n<p>Ruby 3.0\u4ee5\u964d\u3067\u306f\u3001<code>Ractor<\/code> \u3092\u4f7f\u7528\u3057\u3066\u4e26\u5217\u51e6\u7406\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">require 'ractor'\n\ndef parallel_process(large_hash, num_ractors = 4)\n  ractors = num_ractors.times.map do\n    Ractor.new do\n      while (data = Ractor.receive) != :done\n        # \u30c7\u30fc\u30bf\u51e6\u7406\n        Ractor.yield(result)\n      end\n    end\n  end\n\n  large_hash.each_slice(large_hash.size \/ num_ractors) do |slice|\n    ractors.sample.send(slice)\n  end\n\n  ractors.each { |r| r.send(:done) }\n  ractors.map(&amp;:take)\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-56\">\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u6291\u3048\u308b\u305f\u3081\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-57\">1. \u30e9\u30fc\u30b8\u30cf\u30c3\u30b7\u30e5\u306e\u5206\u5272<\/h4>\n\n\n\n<p>\u5de8\u5927\u306a\u30cf\u30c3\u30b7\u30e5\u3092\u8907\u6570\u306e\u5c0f\u3055\u306a\u30cf\u30c3\u30b7\u30e5\u306b\u5206\u5272\u3059\u308b\u3053\u3068\u3067\u3001\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u6291\u3048\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def split_large_hash(large_hash, chunk_size = 1000)\n  large_hash.each_slice(chunk_size).with_index.map do |chunk, index|\n    [\"chunk_#{index}\", chunk.to_h]\n  end.to_h\nend<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-58\">2. \u5fc5\u8981\u306a\u30c7\u30fc\u30bf\u306e\u307f\u306e\u4fdd\u6301<\/h4>\n\n\n\n<p>\u51e6\u7406\u306b\u5fc5\u8981\u306a\u30c7\u30fc\u30bf\u306e\u307f\u3092\u30cf\u30c3\u30b7\u30e5\u306b\u4fdd\u6301\u3057\u3001\u4e0d\u8981\u306a\u30c7\u30fc\u30bf\u306f\u524a\u9664\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def clean_hash(hash, needed_keys)\n  hash.select { |key, _| needed_keys.include?(key) }\nend<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-59\">3. \u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u6700\u9069\u5316<\/h4>\n\n\n\n<p>\u5927\u91cf\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u751f\u6210\u3059\u308b\u51e6\u7406\u306e\u5f8c\u306f\u3001\u660e\u793a\u7684\u306b\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u3001\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u6291\u3048\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def memory_intensive_operation(data)\n  result = # \u5927\u91cf\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u751f\u6210\u3059\u308b\u51e6\u7406\n  GC.start\n  result\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-60\">\u30cf\u30c3\u30b7\u30e5\u3068\u4ed6\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u9ad8\u901f\u5316\u6226\u7565<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-61\">1. Set\u306e\u4f7f\u7528<\/h4>\n\n\n\n<p>\u91cd\u8907\u306e\u306a\u3044\u8981\u7d20\u306e\u96c6\u5408\u3092\u6271\u3046\u5834\u5408\u3001<code>Set<\/code> \u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u691c\u7d22\u304c\u9ad8\u901f\u5316\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">require 'set'\n\ndef find_common_elements(hash1, hash2)\n  set1 = Set.new(hash1.keys)\n  set2 = Set.new(hash2.keys)\n  set1 &amp; set2\nend<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-62\">2. SortedSet\u306e\u6d3b\u7528<\/h4>\n\n\n\n<p>\u9806\u5e8f\u4ed8\u304d\u306e\u4e00\u610f\u306a\u8981\u7d20\u306e\u96c6\u5408\u304c\u5fc5\u8981\u306a\u5834\u5408\u3001<code>SortedSet<\/code> \u304c\u6709\u7528\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">require 'sorted_set'\n\ndef track_top_items(items, limit = 10)\n  SortedSet.new(items) { |a, b| b[:score] &lt;=&gt; a[:score] }.first(limit)\nend<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-63\">3. PriorityQueue\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<p>\u512a\u5148\u5ea6\u4ed8\u304d\u30ad\u30e5\u30fc\u304c\u5fc5\u8981\u306a\u5834\u5408\u3001\u30cf\u30c3\u30b7\u30e5\u3068\u914d\u5217\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class PriorityQueue\n  def initialize\n    @queue = {}\n  end\n\n  def push(item, priority)\n    @queue[priority] ||= []\n    @queue[priority] &lt;&lt; item\n  end\n\n  def pop\n    return nil if @queue.empty?\n    highest_priority = @queue.keys.max\n    items = @queue[highest_priority]\n    item = items.shift\n    @queue.delete(highest_priority) if items.empty?\n    item\n  end\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-64\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30d9\u30f3\u30c1\u30de\u30fc\u30af<\/h3>\n\n\n\n<p>\u6700\u9069\u5316\u306e\u52b9\u679c\u3092\u6e2c\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001<code>Benchmark<\/code> \u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">require 'benchmark'\n\ndef benchmark_hash_operations(hash_size)\n  hash = (1..hash_size).to_h { |i| [i, i * i] }\n\n  Benchmark.bm(10) do |x|\n    x.report(\"\u691c\u7d22:\") { hash_size.times { hash[rand(1..hash_size)] } }\n    x.report(\"\u633f\u5165:\") { hash_size.times { |i| hash[hash_size + i] = i } }\n    x.report(\"\u524a\u9664:\") { hash_size.times { |i| hash.delete(i) } }\n  end\nend\n\nputs \"\u5c0f\u898f\u6a21\u30cf\u30c3\u30b7\u30e5 (1,000 \u8981\u7d20)\"\nbenchmark_hash_operations(1_000)\n\nputs \"\\n\u5927\u898f\u6a21\u30cf\u30c3\u30b7\u30e5 (1,000,000 \u8981\u7d20)\"\nbenchmark_hash_operations(1_000_000)<\/pre>\n\n\n\n<p>\u3053\u306e\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30cf\u30c3\u30b7\u30e5\u306e\u30b5\u30a4\u30ba\u306b\u3088\u308b\u64cd\u4f5c\u306e\u901f\u5ea6\u306e\u9055\u3044\u304c\u5206\u304b\u308a\u307e\u3059\u3002<br>\u5927\u898f\u6a21\u306a\u30cf\u30c3\u30b7\u30e5\u306b\u306a\u308b\u307b\u3069\u3001\u6700\u9069\u5316\u306e\u91cd\u8981\u6027\u304c\u5897\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-65\">\u4e00\u822c\u7684\u306a\u8ab2\u984c\u3068\u89e3\u6c7a\u7b56<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-66\">1. \u30ad\u30fc\u306e\u885d\u7a81\u306e\u6e1b\u5c11<\/h4>\n\n\n\n<p>\u30cf\u30c3\u30b7\u30e5\u306e\u30ad\u30fc\u306b\u4f7f\u7528\u3059\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e <code>hash<\/code> \u30e1\u30bd\u30c3\u30c9\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u3067\u3001\u885d\u7a81\u3092\u6e1b\u3089\u305b\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class CustomKey\n  attr_reader :value\n\n  def initialize(value)\n    @value = value\n  end\n\n  def hash\n    # \u3088\u308a\u5747\u4e00\u306a\u5206\u5e03\u3092\u6301\u3064\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u751f\u6210\n    @value.hash ^ (@value.to_s.reverse.hash)\n  end\n\n  def eql?(other)\n    @value == other.value\n  end\nend<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-67\">2. \u30cf\u30c3\u30b7\u30e5\u306e\u30d5\u30ea\u30fc\u30ba<\/h4>\n\n\n\n<p>\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306e\u306a\u3044\u30cf\u30c3\u30b7\u30e5\u306f <code>freeze<\/code> \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30df\u30e5\u30fc\u30bf\u30d6\u30eb\u306b\u3059\u308b\u3053\u3068\u3067\u3001\u4e88\u671f\u305b\u306c\u5909\u66f4\u3092\u9632\u304e\u3001\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CONSTANTS = { pi: 3.14159, e: 2.71828 }.freeze<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-68\">3. \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306e\u6700\u9069\u306a\u4f7f\u7528<\/h4>\n\n\n\n<p><code>Hash.new<\/code> \u306b\u30d6\u30ed\u30c3\u30af\u3092\u6e21\u3059\u3053\u3068\u3067\u3001\u52d5\u7684\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002<br>\u3053\u308c\u306b\u3088\u308a\u3001\u4e0d\u8981\u306a\u30ad\u30fc\u306e\u4f5c\u6210\u3092\u907f\u3051\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">word_count = Hash.new(0)\ntext.split.each { |word| word_count[word] += 1 }<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-69\">\u307e\u3068\u3081<\/h3>\n\n\n\n<p>\u30cf\u30c3\u30b7\u30e5\u306e\u6700\u9069\u5316\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u898f\u6a21\u3084\u8981\u4ef6\u306b\u3088\u3063\u3066\u9069\u5207\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u304c\u5909\u308f\u308a\u307e\u3059\u3002<br>\u4ee5\u4e0b\u306e\u30dd\u30a4\u30f3\u30c8\u3092\u62bc\u3055\u3048\u3066\u304a\u304f\u3068\u826f\u3044\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406\u3067\u306f\u3001\u30d0\u30c3\u30c1\u51e6\u7406\u3084\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u51e6\u7406\u3092\u691c\u8a0e\u3059\u308b\u3002<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306b\u6ce8\u610f\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30c7\u30fc\u30bf\u306e\u5206\u5272\u3084\u4e0d\u8981\u306a\u30c7\u30fc\u30bf\u306e\u524a\u9664\u3092\u884c\u3046\u3002<\/li>\n\n\n\n<li>\u4ed6\u306e\u30c7\u30fc\u30bf\u69cb\u9020\uff08Set, SortedSet \u306a\u3069\uff09\u3068\u7d44\u307f\u5408\u308f\u305b\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u7279\u5b9a\u306e\u64cd\u4f5c\u3092\u9ad8\u901f\u5316\u3067\u304d\u308b\u3002<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u554f\u984c\u304c\u7591\u308f\u308c\u308b\u5834\u5408\u306f\u3001\u5fc5\u305a\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u3092\u53d6\u3063\u3066\u6700\u9069\u5316\u306e\u52b9\u679c\u3092\u78ba\u8a8d\u3059\u308b\u3002<\/li>\n\n\n\n<li>Ruby \u306e\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u5c0e\u5165\u3055\u308c\u308b\u6700\u9069\u5316\uff08\u4f8b\uff1aRuby 3.0 \u306e Ractor\uff09\u306b\u3082\u6ce8\u76ee\u3059\u308b\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u5927\u898f\u6a21\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3084\u8907\u96d1\u306a\u51e6\u7406\u3092\u6271\u3046\u5834\u5408\u3067\u3082\u3001\u52b9\u7387\u7684\u304b\u3064\u9ad8\u901f\u306a\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br>\u305f\u3060\u3057\u3001\u904e\u5ea6\u306a\u6700\u9069\u5316\u306f\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3084\u4fdd\u5b88\u6027\u3092\u640d\u306a\u3046\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u30d0\u30e9\u30f3\u30b9\u3092\u53d6\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<br>\u5e38\u306b\u6e2c\u5b9a\u3092\u884c\u3044\u3001\u672c\u5f53\u306b\u5fc5\u8981\u306a\u90e8\u5206\u306e\u307f\u3092\u6700\u9069\u5316\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-sgb-headings sgb-heading\" id=\"i-70\"><span class=\"sgb-heading__inner sgb-heading--type1 with-icon\" style=\"background-color:transparent;border-color:transparent;font-size:1.2em\"><i class=\"fa fa-check\" style=\"color:var(--wp--preset--color--sango-main)\"><\/i><span class=\"sgb-heading__text\" style=\"color:#333\">\u307e\u3068\u3081\uff1aRuby\u30cf\u30c3\u30b7\u30e5\u30de\u30b9\u30bf\u30fc\u3078\u306e\u9053<\/span><\/span><\/h2>\n\n\n\n<p>\u3053\u306e\u8a18\u4e8b\u3092\u901a\u3058\u3066\u3001Ruby\u306e\u30cf\u30c3\u30b7\u30e5\u306b\u3064\u3044\u3066\u6df1\u304f\u5b66\u3093\u3067\u304d\u307e\u3057\u305f\u3002<br>\u3053\u3053\u3067\u3001\u4e3b\u8981\u306a\u30dd\u30a4\u30f3\u30c8\u3092\u632f\u308a\u8fd4\u308a\u3001\u30cf\u30c3\u30b7\u30e5\u30de\u30b9\u30bf\u30fc\u3078\u306e\u9053\u7b4b\u3092\u793a\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-71\">\u5b66\u3093\u3060\u5185\u5bb9\u306e\u632f\u308a\u8fd4\u308a\u3068\u5b9f\u8df5\u306e\u30dd\u30a4\u30f3\u30c8<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30cf\u30c3\u30b7\u30e5\u306e\u57fa\u672c\u6982\u5ff5\u3068\u91cd\u8981\u6027\u3092\u7406\u89e3\u3057\u3001\u9069\u5207\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u9078\u629e\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/li>\n\n\n\n<li>\u57fa\u672c\u64cd\u4f5c\u304b\u3089\u6d17\u7df4\u3055\u308c\u305f\u4f7f\u3044\u65b9\u307e\u3067\u3001\u52b9\u7387\u7684\u306a\u30cf\u30c3\u30b7\u30e5\u306e\u5229\u7528\u65b9\u6cd5\u3092\u5b66\u3073\u307e\u3057\u305f\u3002<\/li>\n\n\n\n<li>\u5b9f\u8df5\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u4f8b\u3092\u901a\u3058\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u306e\u6d3b\u7528\u30b7\u30fc\u30f3\u3092\u5177\u4f53\u7684\u306b\u30a4\u30e1\u30fc\u30b8\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u8003\u616e\u3057\u305f\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3088\u308a\u3001\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406\u306b\u3082\u5bfe\u5fdc\u3067\u304d\u308b\u77e5\u8b58\u3092\u5f97\u307e\u3057\u305f\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u5b9f\u8df5\u306b\u304a\u3044\u3066\u306f\u3001\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u30d0\u30e9\u30f3\u30b9\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3068\u4fdd\u5b88\u6027\u306e\u7dad\u6301\u3001\u305d\u3057\u3066\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u3092\u7528\u3044\u305f\u6700\u9069\u5316\u306e\u52b9\u679c\u6e2c\u5b9a\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-72\">\u3055\u3089\u306a\u308b\u9ad8\u307f\u3092\u76ee\u6307\u3059\u305f\u3081\u306e\u5b66\u7fd2\u30ea\u30bd\u30fc\u30b9\u3068\u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ruby\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u5b9a\u671f\u7684\u306b\u78ba\u8a8d\u3057\u3001\u6700\u65b0\u306e\u6a5f\u80fd\u3084\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af\u3092\u30ad\u30e3\u30c3\u30c1\u30a2\u30c3\u30d7\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30d5\u30a9\u30fc\u30e9\u30e0\u3084Q&amp;A\u30b5\u30a4\u30c8\u306b\u53c2\u52a0\u3057\u3001\u4ed6\u306e\u958b\u767a\u8005\u3068\u77e5\u8b58\u3092\u5171\u6709\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li>\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b3\u30fc\u30c9\u3092\u8aad\u3080\u3053\u3068\u3067\u3001\u5b9f\u969b\u306e\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u30cf\u30c3\u30b7\u30e5\u306e\u4f7f\u7528\u6cd5\u3092\u5b66\u3079\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u3088\u308a\u9ad8\u5ea6\u306aRuby\u306e\u6a5f\u80fd\u3084\u3001\u4ed6\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u306e\u7d44\u307f\u5408\u308f\u305b\u306b\u3064\u3044\u3066\u5b66\u7fd2\u3092\u7d9a\u3051\u307e\u3057\u3087\u3046\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u30cf\u30c3\u30b7\u30e5\u30b9\u30ad\u30eb\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u306a\u30c7\u30fc\u30bf\u7ba1\u7406\u3068\u51e6\u7406\u3001\u30b3\u30fc\u30c9\u306e\u54c1\u8cea\u5411\u4e0a\u3001\u305d\u3057\u3066\u3088\u308a\u8907\u96d1\u306a\u554f\u984c\u89e3\u6c7a\u80fd\u529b\u3092\u7372\u5f97\u3067\u304d\u307e\u3059\u3002<br>\u3053\u308c\u3089\u306e\u30b9\u30ad\u30eb\u306f\u3001Ruby\u30a8\u30f3\u30b8\u30cb\u30a2\u3068\u3057\u3066\u306e\u4fa1\u5024\u3092\u5927\u304d\u304f\u9ad8\u3081\u308b\u3053\u3068\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p>\u6700\u5f8c\u306b\u3001\u5b66\u3093\u3060\u5185\u5bb9\u3092\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u9069\u7528\u3057\u3001\u7d99\u7d9a\u7684\u306b\u5b9f\u8df5\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<br>\u5931\u6557\u3092\u6050\u308c\u305a\u3001\u5e38\u306b\u65b0\u3057\u3044\u3053\u3068\u306b\u30c1\u30e3\u30ec\u30f3\u30b8\u3057\u7d9a\u3051\u308b\u3053\u3068\u3067\u3001\u771f\u306eRuby\u30cf\u30c3\u30b7\u30e5\u30de\u30b9\u30bf\u30fc\u3078\u306e\u9053\u3092\u6b69\u3080\u3053\u3068\u304c\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ruby\u306e\u30cf\u30c3\u30b7\u30e5\u306f\u3001\u30ad\u30fc\u3068\u5024\u306e\u30da\u30a2\u3092\u7ba1\u7406\u3059\u308b\u5f37\u529b\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3067\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u306e\u57fa\u672c\u304b\u3089\u9ad8\u5ea6\u306a\u4f7f\u3044\u65b9\u307e\u3067\u3001\u5b9f\u8df5\u7684\u306a\u4f8b\u3092\u4ea4\u3048\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002\u521d\u5fc3\u8005\u304b\u3089\u30d9\u30c6\u30e9\u30f3\u307e\u3067\u3001Ruby\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306e\u30b9\u30ad\u30eb\u30a2\u30c3\u30d7\u306b\u5f79\u7acb\u3064\u60c5\u5831\u304c &#8230; <\/p>\n","protected":false},"author":1,"featured_media":3114,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,65],"tags":[],"class_list":{"0":"post-128","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-ruby","8":"category-ruby-syntax"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=128"}],"version-history":[{"count":2,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/128\/revisions"}],"predecessor-version":[{"id":3123,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/128\/revisions\/3123"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/media\/3114"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}