{"id":1300,"date":"2025-03-24T08:52:24","date_gmt":"2025-03-23T23:52:24","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=1300"},"modified":"2025-03-24T08:52:24","modified_gmt":"2025-03-23T23:52:24","slug":"%e3%80%90%e4%bf%9d%e5%ad%98%e7%89%88%e3%80%91ruby%e5%88%9d%e5%bf%83%e8%80%85%e3%81%ae%e3%81%9f%e3%82%81%e3%81%aeif%e6%96%87%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%81%e5%9f%ba%e7%a4%8e","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=1300","title":{"rendered":"\u3010\u4fdd\u5b58\u7248\u3011Ruby\u521d\u5fc3\u8005\u306e\u305f\u3081\u306eif\u6587\u5b8c\u5168\u30ac\u30a4\u30c9\uff01\u57fa\u790e\u304b\u3089\u5b9f\u8df5\u307e\u30677\u3064\u306e\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\" id=\"i-0\">Ruby\u306eif\u6587\u3068\u306f\uff1f\u57fa\u672c\u6982\u5ff5\u3092\u7406\u89e3\u3057\u3088\u3046<\/h1>\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\">Ruby\u306eif\u6587\u3068\u306f\uff1f\u57fa\u672c\u6982\u5ff5\u3092\u7406\u89e3\u3057\u3088\u3046<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">if\u6587\u304c\u5fc5\u8981\u306a\u7406\u7531\u3068\u57fa\u672c\u7684\u306a\u4ed5\u7d44\u307f<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-3\">Ruby\u306eif\u6587\u306e\u7279\u5fb4\u3068\u4ed6\u306e\u8a00\u8a9e\u3068\u306e\u9055\u3044<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-9\">Ruby\u6d41if\u6587\u306e\u57fa\u672c\u7684\u306a\u66f8\u304d\u65b9\u30de\u30b9\u30bf\u30fc<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-10\">\u30b7\u30f3\u30d7\u30eb\u306aif\u6587\u306e\u57fa\u672c\u69cb\u6587<\/a>      <\/li>      <li>        <a href=\"#i-13\">else\u53e5\u3068elsif\u53e5\u306e\u4f7f\u3044\u65b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-15\">\u6761\u4ef6\u5f0f\u306e\u66f8\u304d\u65b9\u3068\u3088\u304f\u3042\u308b\u9593\u9055\u3044<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-18\">if\u6587\u3092\u3082\u3063\u3068\u4fbf\u5229\u306b\u4f7f\u3046\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-19\">\u5f8c\u7f6eif\u6587\u3067\u7c21\u6f54\u306b\u66f8\u304f\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-21\">\u305d\u3046\u3067\u306a\u3044\u9650\u308a\u6587\u3092\u4f7f\u3063\u305f\u5426\u5b9a\u6761\u4ef6\u306e\u6271\u3044\u65b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-23\">case\u6587\u3068\u306e\u6d3b\u7528<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-25\">\u5b9f\u8df5\u7684\u306aif\u6587\u306e\u6d3b\u7528\u30d1\u30bf\u30fc\u30f3<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-26\">\u4e09\u9805\u6f14\u7b97\u5b50\u3092\u4f7f\u3063\u305f\u77ed\u7e2e\u8868\u73fe<\/a>      <\/li>      <li>        <a href=\"#i-28\">nil\u5224\u5b9a\u3068\u307c\u3063\u3061\u6f14\u7b97\u5b50\u306e\u6d3b\u7528<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-31\">\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3\u3067\u306e\u6761\u4ef6\u5206\u5c90<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-35\">if\u6587\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-36\">\u53ef\u8aad\u6027\u3092\u9ad8\u3081\u308b\u6761\u4ef6\u5f0f\u306e\u66f8\u304d\u65b9<\/a>      <\/li>      <li>        <a href=\"#i-39\">\u30cd\u30b9\u30c8\u3092\u56de\u907f\u3059\u308b\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u624b\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-42\">\u30c6\u30b9\u30c8\u3057\u3084\u3059\u3044if\u6587\u306e\u8a2d\u8a08<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-45\">if\u6587\u306b\u95a2\u3059\u308b\u5b9f\u8df5\u7684\u306a\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u96c6<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-46\">\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u3067\u306e\u6761\u4ef6\u5206\u5c90\u4f8b<\/a>      <\/li>      <li>        <a href=\"#i-49\">\u30c7\u30fc\u30bf\u691c\u8a3c\u3067\u306e\u6d3b\u7528\u4f8b<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-51\">API\u5fdc\u7b54\u51e6\u7406\u3067\u306e\u4f7f\u7528\u4f8b<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-53\">\u3088\u304f\u3042\u308bif\u6587\u306e\u30a8\u30e9\u30fc\u3068\u89e3\u6c7a\u65b9\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-54\">\u69cb\u6587\u30a8\u30e9\u30fc\u306e\u539f\u56e0\u3068\u5bfe\u51e6\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-57\">\u610f\u56f3\u3057\u306a\u3044\u52d5\u4f5c\u306e\u56de\u907f\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-60\">\u30c7\u30d0\u30c3\u30b0\u306e\u30dd\u30a4\u30f3\u30c8\u3068\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-1\">if\u6587\u304c\u5fc5\u8981\u306a\u7406\u7531\u3068\u57fa\u672c\u7684\u306a\u4ed5\u7d44\u307f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306b\u304a\u3044\u3066\u3001\u7279\u5b9a\u306e\u6761\u4ef6\u306b\u57fa\u3065\u3044\u3066\u51e6\u7406\u3092\u5206\u5c90\u3055\u305b\u308b\u3053\u3068\u306f\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002Ruby\u306eif\u6587\u306f\u3001\u3053\u306e\u3088\u3046\u306a\u6761\u4ef6\u5206\u5c90\u3092\u5b9f\u73fe\u3059\u308b\u6700\u3082\u57fa\u672c\u7684\u306a\u5236\u5fa1\u69cb\u9020\u306e\u4e00\u3064\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">if\u6587\u306e\u57fa\u672c\u7684\u306a\u4ed5\u7d44\u307f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ruby\u306eif\u6587\u306f\u3001\u4e0e\u3048\u3089\u308c\u305f\u6761\u4ef6\u304c<code>true<\/code>\u3068\u306a\u308b\u5834\u5408\u306b\u306e\u307f\u3001\u7279\u5b9a\u306e\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u304c\u57fa\u672c\u7684\u306a\u69cb\u6587\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">if \u6761\u4ef6\n  # \u6761\u4ef6\u304ctrue\u306e\u5834\u5408\u306b\u5b9f\u884c\u3055\u308c\u308b\u51e6\u7406\nend<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5177\u4f53\u4f8b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">age = 20\n\nif age &gt;= 18\n  puts \"\u6210\u4eba\u3067\u3059\"  # age\u304c18\u4ee5\u4e0a\u306e\u5834\u5408\u306b\u5b9f\u884c\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-3\">Ruby\u306eif\u6587\u306e\u7279\u5fb4\u3068\u4ed6\u306e\u8a00\u8a9e\u3068\u306e\u9055\u3044<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ruby\u306eif\u6587\u306b\u306f\u3001\u4ed6\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3068\u306f\u7570\u306a\u308b\u3044\u304f\u3064\u304b\u306e\u7279\u5fb4\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">1. \u5024\u3092\u8fd4\u3059\u5f0f\u3068\u3057\u3066\u4f7f\u3048\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ruby\u306eif\u6587\u306f\u5f0f\uff08expression\uff09\u3068\u3057\u3066\u6271\u3046\u3053\u3068\u304c\u3067\u304d\u3001\u5024\u3092\u8fd4\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">result = if score &gt;= 80\n  \"\u5408\u683c\"\nelse\n  \"\u4e0d\u5408\u683c\"\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">2. \u62ec\u5f27\u304c\u7701\u7565\u53ef\u80fd<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u591a\u304f\u306e\u8a00\u8a9e\u3067\u306f\u6761\u4ef6\u5f0f\u3092\u62ec\u5f27\u3067\u56f2\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u304c\u3001Ruby\u3067\u306f\u7701\u7565\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u4ed6\u306e\u8a00\u8a9e\u3067\u306e\u4e00\u822c\u7684\u306a\u66f8\u304d\u65b9\nif (x &gt; 0) {\n  \/\/ \u51e6\u7406\n}\n\n# Ruby\u3067\u306e\u66f8\u304d\u65b9\nif x &gt; 0\n  # \u51e6\u7406\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">3. then\u30ad\u30fc\u30ef\u30fc\u30c9\u306e\u30b5\u30dd\u30fc\u30c8<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6761\u4ef6\u5f0f\u3068\u5b9f\u884c\u6587\u30921\u884c\u3067\u66f8\u304f\u5834\u5408\u3001<code>then<\/code>\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">if x &gt; 0 then puts \"\u6b63\u306e\u6570\u3067\u3059\" end<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">4. \u5426\u5b9a\u306e\u6761\u4ef6\u5206\u5c90\u304c\u8aad\u307f\u3084\u3059\u3044<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>unless<\/code>\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u5426\u5b9a\u306e\u6761\u4ef6\u5206\u5c90\u3092\u76f4\u611f\u7684\u306b\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># if\u3092\u4f7f\u7528\u3057\u305f\u5834\u5408\nif !user.logged_in?\n  redirect_to login_path\nend\n\n# unless\u3092\u4f7f\u7528\u3057\u305f\u5834\u5408\nunless user.logged_in?\n  redirect_to login_path\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">5. \u623b\u308a\u5024\u306e\u7279\u5fb4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">if\u6587\u306e\u6700\u5f8c\u306b\u8a55\u4fa1\u3055\u308c\u305f\u5f0f\u304c\u623b\u308a\u5024\u3068\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">status = if temperature &gt; 30\n  \"\u6691\u3044\"    # \u3053\u306e\u5024\u304c\u623b\u308a\u5024\u3068\u306a\u308b\nelsif temperature &gt; 20\n  \"\u5feb\u9069\"    # \u3053\u306e\u5024\u304c\u623b\u308a\u5024\u3068\u306a\u308b\nelse\n  \"\u5bd2\u3044\"    # \u3053\u306e\u5024\u304c\u623b\u308a\u5024\u3068\u306a\u308b\nend<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u3088\u3046\u306b\u3001Ruby\u306eif\u6587\u306f\u4ed6\u306e\u8a00\u8a9e\u3068\u6bd4\u3079\u3066\u3088\u308a\u67d4\u8edf\u3067\u8868\u73fe\u529b\u8c4a\u304b\u306a\u5236\u5fa1\u69cb\u9020\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u7279\u5fb4\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u8aad\u307f\u3084\u3059\u304f\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-9\">Ruby\u6d41if\u6587\u306e\u57fa\u672c\u7684\u306a\u66f8\u304d\u65b9\u30de\u30b9\u30bf\u30fc<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-10\">\u30b7\u30f3\u30d7\u30eb\u306aif\u6587\u306e\u57fa\u672c\u69cb\u6587<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ruby\u3067if\u6587\u3092\u66f8\u304f\u969b\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-11\">\u5358\u7d14\u306a\u6761\u4ef6\u5206\u5c90<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u57fa\u672c\u7684\u306aif\u6587\nif condition\n  # \u6761\u4ef6\u304ctrue\u306e\u6642\u306e\u51e6\u7406\nend\n\n# \u5b9f\u969b\u306e\u4f8b\ntemperature = 25\nif temperature &gt; 30\n  puts \"\u6691\u3044\u3067\u3059\u306d\uff01\"\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">if-else\u69cb\u6587<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># if-else\u69cb\u6587\u306e\u57fa\u672c\u5f62\nif condition\n  # \u6761\u4ef6\u304ctrue\u306e\u6642\u306e\u51e6\u7406\nelse\n  # \u6761\u4ef6\u304cfalse\u306e\u6642\u306e\u51e6\u7406\nend\n\n# \u5b9f\u969b\u306e\u4f8b\nage = 17\nif age &gt;= 18\n  puts \"\u6210\u4eba\u3067\u3059\"\nelse\n  puts \"\u672a\u6210\u5e74\u3067\u3059\"\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-13\">else\u53e5\u3068elsif\u53e5\u306e\u4f7f\u3044\u65b9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8907\u6570\u306e\u6761\u4ef6\u5206\u5c90\u3092\u6271\u3046\u5834\u5408\u3001<code>elsif<\/code>\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002Ruby\u7279\u6709\u306e<code>elsif<\/code>\u306e\u7db4\u308a\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\uff08<code>elif<\/code>\u3084<code>else if<\/code>\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff09\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=\"\"># if-elsif-else\u69cb\u6587\nscore = 85\nif score &gt;= 90\n  puts \"\u512a\u79c0\u306a\u6210\u7e3e\u3067\u3059\uff01\"\nelsif score &gt;= 80\n  puts \"\u826f\u3044\u6210\u7e3e\u3067\u3059\"\nelsif score &gt;= 70\n  puts \"\u5408\u683c\u3067\u3059\"\nelse\n  puts \"\u3082\u3046\u5c11\u3057\u9811\u5f35\u308a\u307e\u3057\u3087\u3046\"\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">\u8907\u6570\u306e\u6761\u4ef6\u3092\u7d44\u307f\u5408\u308f\u305b\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6761\u4ef6\u5f0f\u3067\u306f\u8ad6\u7406\u6f14\u7b97\u5b50\uff08<code>&amp;&amp;<\/code>\u3001<code>||<\/code>\uff09\u3092\u4f7f\u7528\u3057\u3066\u8907\u6570\u306e\u6761\u4ef6\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">age = 25\nincome = 300000\n\nif age &gt;= 20 &amp;&amp; income &gt;= 250000\n  puts \"\u30af\u30ec\u30b8\u30c3\u30c8\u30ab\u30fc\u30c9\u306e\u7533\u3057\u8fbc\u307f\u304c\u53ef\u80fd\u3067\u3059\"\nend\n\nif age &lt; 18 || income &lt; 200000\n  puts \"\u7533\u3057\u8fbc\u307f\u57fa\u6e96\u3092\u6e80\u305f\u3057\u3066\u3044\u307e\u305b\u3093\"\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-15\">\u6761\u4ef6\u5f0f\u306e\u66f8\u304d\u65b9\u3068\u3088\u304f\u3042\u308b\u9593\u9055\u3044<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">\u771f\u507d\u5024\u306e\u8a55\u4fa1<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ruby\u3067\u306f<code>false<\/code>\u3068<code>nil<\/code>\u4ee5\u5916\u306e\u3059\u3079\u3066\u306e\u5024\u304c\u771f\u3068\u3057\u3066\u8a55\u4fa1\u3055\u308c\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u4ee5\u4e0b\u306f\u3059\u3079\u3066\u6761\u4ef6\u304ctrue\u3068\u3057\u3066\u8a55\u4fa1\u3055\u308c\u308b\nif 1\n  puts \"\u5b9f\u884c\u3055\u308c\u307e\u3059\"\nend\n\nif \"hello\"\n  puts \"\u5b9f\u884c\u3055\u308c\u307e\u3059\"\nend\n\nif [1, 2, 3]\n  puts \"\u5b9f\u884c\u3055\u308c\u307e\u3059\"\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-17\">\u3088\u304f\u3042\u308b\u9593\u9055\u3044\u3068\u6ce8\u610f\u70b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6bd4\u8f03\u6f14\u7b97\u5b50\u306e\u8aa4\u7528<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u8aa4\u3063\u305f\u66f8\u304d\u65b9\nif x = 5  # \u4ee3\u5165\u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\n  puts \"x\u306f5\u3067\u3059\"\nend\n\n# \u6b63\u3057\u3044\u66f8\u304d\u65b9\nif x == 5  # \u6bd4\u8f03\u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u3059\u308b\n  puts \"x\u306f5\u3067\u3059\"\nend<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u5426\u5b9a\u6761\u4ef6\u306e\u8907\u96d1\u5316<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u8aad\u307f\u306b\u304f\u3044\u66f8\u304d\u65b9\nif !(user.valid? &amp;&amp; user.active?)\n  puts \"\u7121\u52b9\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u3059\"\nend\n\n# \u8aad\u307f\u3084\u3059\u3044\u66f8\u304d\u65b9\nunless user.valid? &amp;&amp; user.active?\n  puts \"\u7121\u52b9\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u3059\"\nend<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>nil\u5224\u5b9a\u306e\u8aa4\u308a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5197\u9577\u306a\u66f8\u304d\u65b9\nif user.name != nil\n  puts user.name\nend\n\n# Ruby\u3089\u3057\u3044\u66f8\u304d\u65b9\nif user.name\n  puts user.name\nend<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u57fa\u672c\u7684\u306a\u66f8\u304d\u65b9\u3092\u30de\u30b9\u30bf\u30fc\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u52b9\u679c\u7684\u306bRuby\u306eif\u6587\u3092\u6d3b\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u308a\u9ad8\u5ea6\u306a\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-18\">if\u6587\u3092\u3082\u3063\u3068\u4fbf\u5229\u306b\u4f7f\u3046\u30c6\u30af\u30cb\u30c3\u30af<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-19\">\u5f8c\u7f6eif\u6587\u3067\u7c21\u6f54\u306b\u66f8\u304f\u65b9\u6cd5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ruby\u3067\u306f\u3001\u6761\u4ef6\u304c\u5358\u7d14\u306a\u5834\u5408\u306b\u5f8c\u7f6eif\u6587\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30b3\u30fc\u30c9\u3092\u3088\u308a\u7c21\u6f54\u306b\u66f8\u304f\u3053\u3068\u304c\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=\"\"># \u901a\u5e38\u306eif\u6587\nif condition\n  do_something\nend\n\n# \u5f8c\u7f6eif\u6587\ndo_something if condition\n\n# \u5b9f\u969b\u306e\u4f8b\nputs \"\u9ad8\u6e29\u6ce8\u610f!\" if temperature &gt; 30\nreturn unless user.authenticated?  # unless\u3082\u5f8c\u7f6e\u3067\u4f7f\u3048\u308b<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">\u5f8c\u7f6eif\u6587\u306e\u4f7f\u3044\u6240<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u9069\u5207\u306a\u4f7f\u7528\u4f8b\nlogger.debug(\"\u8a73\u7d30\u60c5\u5831\") if debug_mode?\nraise \"\u7121\u52b9\u306a\u5024\u3067\u3059\" if value.nil?\nskip_process if emergency_mode?\n\n# \u907f\u3051\u308b\u3079\u304d\u4f7f\u7528\u4f8b\uff08\u8907\u96d1\u3059\u304e\u308b\uff09\ncalculate_complex_formula(x, y) if x &gt; 0 &amp;&amp; y.positive? &amp;&amp; !z.nil?<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-21\">\u305d\u3046\u3067\u306a\u3044\u9650\u308a\u6587\u3092\u4f7f\u3063\u305f\u5426\u5b9a\u6761\u4ef6\u306e\u6271\u3044\u65b9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>unless<\/code>\u306f\u300c\u301c\u3067\u306a\u3044\u5834\u5408\u300d\u3092\u8868\u73fe\u3059\u308b\u969b\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002if\u6587\u306e\u5426\u5b9a\u6761\u4ef6\u3092\u76f4\u611f\u7684\u306b\u66f8\u3051\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=\"\"># if\u6587\u3067\u306e\u5426\u5b9a\nif !user.logged_in?\n  redirect_to login_path\nend\n\n# unless\u3092\u4f7f\u7528\u3057\u305f\u65b9\u304c\u8aad\u307f\u3084\u3059\u3044\nunless user.logged_in?\n  redirect_to login_path\nend\n\n# \u5f8c\u7f6eunless\u3082\u53ef\u80fd\nredirect_to login_path unless user.logged_in?<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-22\">unless\u3092\u4f7f\u7528\u3059\u308b\u969b\u306e\u6ce8\u610f\u70b9<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u826f\u304f\u306a\u3044\u4f8b\uff1aelsif\u306f\u4f7f\u3048\u306a\u3044\nunless condition\n  do_something\nelsif other_condition  # \u30a8\u30e9\u30fc\u306b\u306a\u308b\n  do_other_thing\nend\n\n# \u826f\u304f\u306a\u3044\u4f8b\uff1a\u8907\u96d1\u306a\u6761\u4ef6\nunless user.valid? &amp;&amp; user.active? || user.admin?\n  handle_invalid_user\nend\n\n# \u826f\u3044\u4f8b\uff1a\u30b7\u30f3\u30d7\u30eb\u306a\u5426\u5b9a\u6761\u4ef6\nunless user.valid?\n  handle_invalid_user\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-23\">case\u6587\u3068\u306e\u6d3b\u7528<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8907\u6570\u306e\u6761\u4ef6\u5206\u5c90\u304c\u3042\u308b\u5834\u5408\u3001case\u6587\u3068if\u6587\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u8aad\u307f\u3084\u3059\u3044\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u304c\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=\"\"># \u8907\u6570\u306eif-elsif\nstatus = if score &gt;= 90\n          \"S\"\n        elsif score &gt;= 80\n          \"A\"\n        elsif score &gt;= 70\n          \"B\"\n        else\n          \"C\"\n        end\n\n# case\u6587\u3092\u4f7f\u7528\u3057\u305f\u65b9\u304c\u8aad\u307f\u3084\u3059\u3044\nstatus = case\n        when score &gt;= 90 then \"S\"\n        when score &gt;= 80 then \"A\"\n        when score &gt;= 70 then \"B\"\n        else \"C\"\n        end<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-24\">case\u6587\u3068\u7d44\u307f\u5408\u308f\u305b\u305f\u9ad8\u5ea6\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">result = case value\n        when String\n          if value.empty?\n            \"\u7a7a\u306e\u6587\u5b57\u5217\u3067\u3059\"\n          else\n            \"\u6587\u5b57\u5217: #{value}\"\n          end\n        when Integer\n          if value.positive?\n            \"\u6b63\u306e\u6574\u6570: #{value}\"\n          else\n            \"0\u4ee5\u4e0b\u306e\u6574\u6570: #{value}\"\n          end\n        else\n          \"\u305d\u306e\u4ed6\u306e\u578b: #{value.class}\"\n        end<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u4f7f\u3044\u5206\u3051\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u7c21\u6f54\u3067\u8aad\u307f\u3084\u3059\u3044\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3055\u3089\u306b\u5b9f\u8df5\u7684\u306a\u6d3b\u7528\u30d1\u30bf\u30fc\u30f3\u306b\u3064\u3044\u3066\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-25\">\u5b9f\u8df5\u7684\u306aif\u6587\u306e\u6d3b\u7528\u30d1\u30bf\u30fc\u30f3<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-26\">\u4e09\u9805\u6f14\u7b97\u5b50\u3092\u4f7f\u3063\u305f\u77ed\u7e2e\u8868\u73fe<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e09\u9805\u6f14\u7b97\u5b50\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u306aif-else\u6587\u30921\u884c\u3067\u66f8\u304f\u305f\u3081\u306e\u4fbf\u5229\u306a\u69cb\u6587\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=\"\"># \u57fa\u672c\u7684\u306a\u4e09\u9805\u6f14\u7b97\u5b50\u306e\u69cb\u6587\n\u7d50\u679c = \u6761\u4ef6 ? \u771f\u306e\u5834\u5408\u306e\u5024 : \u507d\u306e\u5834\u5408\u306e\u5024\n\n# \u901a\u5e38\u306eif\u6587\nstatus = if user.admin?\n          \"\u7ba1\u7406\u8005\"\n        else\n          \"\u4e00\u822c\u30e6\u30fc\u30b6\u30fc\"\n        end\n\n# \u4e09\u9805\u6f14\u7b97\u5b50\u3092\u4f7f\u7528\nstatus = user.admin? ? \"\u7ba1\u7406\u8005\" : \"\u4e00\u822c\u30e6\u30fc\u30b6\u30fc\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-27\">\u4e09\u9805\u6f14\u7b97\u5b50\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Good: \u30b7\u30f3\u30d7\u30eb\u3067\u7406\u89e3\u3057\u3084\u3059\u3044\nmax_value = a &gt; b ? a : b\ndisplay_name = user.name.empty? ? \"\u540d\u7121\u3057\" : user.name\n\n# Bad: \u8907\u96d1\u3059\u304e\u3066\u8aad\u307f\u306b\u304f\u3044\nresult = condition1 ? \n         (condition2 ? value1 : value2) : \n         (condition3 ? value3 : value4)<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-28\">nil\u5224\u5b9a\u3068\u307c\u3063\u3061\u6f14\u7b97\u5b50\u306e\u6d3b\u7528<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ruby\u3067\u306f<code>nil<\/code>\u306e\u5b89\u5168\u306a\u51e6\u7406\u306e\u305f\u3081\u306b\u3001\u69d8\u3005\u306a\u30c6\u30af\u30cb\u30c3\u30af\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-29\">\u307c\u3063\u3061\u6f14\u7b97\u5b50\uff08&amp;.\uff09\u306e\u4f7f\u7528<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5f93\u6765\u306e nil \u30c1\u30a7\u30c3\u30af\nif user &amp;&amp; user.profile &amp;&amp; user.profile.address\n  puts user.profile.address.city\nend\n\n# \u307c\u3063\u3061\u6f14\u7b97\u5b50\u3092\u4f7f\u7528\nputs user&amp;.profile&amp;.address&amp;.city\n\n# \u4ee3\u66ff\u5024\u306e\u8a2d\u5b9a\ncity = user&amp;.profile&amp;.address&amp;.city || \"\u4f4f\u6240\u672a\u8a2d\u5b9a\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-30\">nil\u5224\u5b9a\u306e\u52b9\u7387\u7684\u306a\u66f8\u304d\u65b9<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># nil?\u30e1\u30bd\u30c3\u30c9\u306e\u4f7f\u7528\nif user.name.nil?\n  puts \"\u540d\u524d\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\"\nend\n\n# blank?\u30e1\u30bd\u30c3\u30c9\uff08Active Support\u306e\u5834\u5408\uff09\nif user.name.blank?\n  puts \"\u540d\u524d\u304c\u7a7a\u3067\u3059\"\nend\n\n# present?\u30e1\u30bd\u30c3\u30c9\uff08Active Support\u306e\u5834\u5408\uff09\nif user.name.present?\n  puts \"\u540d\u524d: #{user.name}\"\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-31\">\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3\u3067\u306e\u6761\u4ef6\u5206\u5c90<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3\u3068\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u8868\u73fe\u529b\u8c4a\u304b\u306a\u30b3\u30fc\u30c9\u304c\u66f8\u3051\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-32\">\u30bf\u30c3\u30d7\u30e1\u30bd\u30c3\u30c9\u3068\u306e\u7d44\u307f\u5408\u308f\u305b<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u6761\u4ef6\u4ed8\u304d\u306e\u51e6\u7406\u3092\u30c1\u30a7\u30fc\u30f3\u306b\u7d44\u307f\u8fbc\u3080\nuser.tap { |u| u.activate! if u.pending? }\n     .tap { |u| u.send_welcome_email if u.active? }\n     .tap { |u| u.notify_admin if u.admin? }\n\n# \u6761\u4ef6\u4ed8\u304d\u306e\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3\nUser.where(active: true)\n    .tap { |users| users.where!(role: 'admin') if admin_only? }\n    .order(created_at: :desc)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-33\">\u6761\u4ef6\u4ed8\u304d\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u691c\u7d22\u6761\u4ef6\u306e\u52d5\u7684\u306a\u7d44\u307f\u7acb\u3066\nusers = User.all\nusers = users.where(role: params[:role]) if params[:role].present?\nusers = users.where(status: params[:status]) if params[:status].present?\nusers = users.order(params[:sort] || :created_at)\n\n# \u3088\u308a\u7c21\u6f54\u306a\u66f8\u304d\u65b9\nusers = User.all\n         .yield_self { |q| params[:role].present? ? q.where(role: params[:role]) : q }\n         .yield_self { |q| params[:status].present? ? q.where(status: params[:status]) : q }\n         .order(params[:sort] || :created_at)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-34\">then\uff08yield_self\uff09\u30e1\u30bd\u30c3\u30c9\u306e\u6d3b\u7528<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u6761\u4ef6\u4ed8\u304d\u306e\u5024\u306e\u5909\u63db\nname = user.name\n         .then { |n| n.strip if n }\n         .then { |n| n.present? ? n : \"\u540d\u7121\u3057\" }\n\n# API\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u6761\u4ef6\u4ed8\u304d\u51e6\u7406\nresponse = api_call\n           .then { |r| r.success? ? r.data : [] }\n           .then { |d| d.map(&amp;:to_h) if d.any? }<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u8868\u73fe\u529b\u8c4a\u304b\u3067\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001if\u6587\u3092\u4f7f\u7528\u3059\u308b\u969b\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-35\">if\u6587\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-36\">\u53ef\u8aad\u6027\u3092\u9ad8\u3081\u308b\u6761\u4ef6\u5f0f\u306e\u66f8\u304d\u65b9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u826f\u3044\u30b3\u30fc\u30c9\u306f\u3001\u4ed6\u306e\u958b\u767a\u8005\uff08\u305d\u3057\u3066\u5c06\u6765\u306e\u81ea\u5206\uff09\u304c\u7c21\u5358\u306b\u7406\u89e3\u3067\u304d\u308b\u30b3\u30fc\u30c9\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u610f\u8b58\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-37\">1. \u610f\u56f3\u304c\u660e\u78ba\u306a\u547d\u540d<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Bad: \u610f\u56f3\u304c\u4e0d\u660e\u78ba\nif x &gt; 0 &amp;&amp; y &lt; 100 &amp;&amp; z == true\n  process_data\nend\n\n# Good: \u610f\u56f3\u304c\u660e\u78ba\ndef valid_range?(value)\n  value &gt; 0 &amp;&amp; value &lt; 100\nend\n\ndef processing_enabled?\n  configuration.processing_enabled?\nend\n\nif valid_range?(input_value) &amp;&amp; processing_enabled?\n  process_data\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-38\">2. \u65e9\u671f\u30ea\u30bf\u30fc\u30f3\u30d1\u30bf\u30fc\u30f3<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Bad: \u30cd\u30b9\u30c8\u304c\u6df1\u3044\ndef process_order(order)\n  if order.valid?\n    if order.paid?\n      if order.in_stock?\n        fulfill_order(order)\n      else\n        restock_order(order)\n      end\n    else\n      reminder_payment(order)\n    end\n  else\n    reject_order(order)\n  end\nend\n\n# Good: \u65e9\u671f\u30ea\u30bf\u30fc\u30f3\ndef process_order(order)\n  return reject_order(order) unless order.valid?\n  return reminder_payment(order) unless order.paid?\n  return restock_order(order) unless order.in_stock?\n\n  fulfill_order(order)\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-39\">\u30cd\u30b9\u30c8\u3092\u56de\u907f\u3059\u308b\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u624b\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-40\">1. \u30ac\u30fc\u30c9\u7bc0\u306e\u4f7f\u7528<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Bad: \u6df1\u3044\u30cd\u30b9\u30c8\ndef calculate_bonus(employee)\n  if employee.active?\n    if employee.years_of_service &gt;= 5\n      if employee.performance_rating &gt;= 4\n        base_salary * 0.1\n      else\n        base_salary * 0.05\n      end\n    else\n      base_salary * 0.03\n    end\n  else\n    0\n  end\nend\n\n# Good: \u30ac\u30fc\u30c9\u7bc0\ndef calculate_bonus(employee)\n  return 0 unless employee.active?\n\n  if employee.years_of_service &gt;= 5 &amp;&amp; employee.performance_rating &gt;= 4\n    base_salary * 0.1\n  elsif employee.years_of_service &gt;= 5\n    base_salary * 0.05\n  else\n    base_salary * 0.03\n  end\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-41\">2. \u30e1\u30bd\u30c3\u30c9\u306e\u62bd\u51fa<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Bad: \u9577\u3044\u6761\u4ef6\u5f0f\nif user.email.present? &amp;&amp; user.email.match?(EMAIL_REGEX) &amp;&amp; !banned_domains.include?(user.email.split('@').last)\n  send_welcome_email(user)\nend\n\n# Good: \u30e1\u30bd\u30c3\u30c9\u306b\u62bd\u51fa\ndef valid_email?(user)\n  user.email.present? &amp;&amp; \n    user.email.match?(EMAIL_REGEX) &amp;&amp; \n    !banned_domains.include?(user.email.split('@').last)\nend\n\nif valid_email?(user)\n  send_welcome_email(user)\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-42\">\u30c6\u30b9\u30c8\u3057\u3084\u3059\u3044if\u6587\u306e\u8a2d\u8a08<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-43\">1. \u4f9d\u5b58\u6027\u306e\u6ce8\u5165<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Bad: \u76f4\u63a5\u306e\u4f9d\u5b58\ndef process_payment(order)\n  if Time.now.hour &gt;= 9 &amp;&amp; Time.now.hour &lt; 17\n    PaymentGateway.process(order)\n  else\n    DelayedPaymentWorker.perform_async(order.id)\n  end\nend\n\n# Good: \u4f9d\u5b58\u6027\u306e\u6ce8\u5165\ndef process_payment(order, time = Time.now, payment_gateway = PaymentGateway)\n  if business_hours?(time)\n    payment_gateway.process(order)\n  else\n    DelayedPaymentWorker.perform_async(order.id)\n  end\nend\n\ndef business_hours?(time)\n  time.hour &gt;= 9 &amp;&amp; time.hour &lt; 17\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-44\">2. \u6761\u4ef6\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4f7f\u7528<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Bad: \u8907\u96d1\u306a\u6761\u4ef6\u5f0f\ndef eligible_for_discount?(user, order)\n  if user.premium? &amp;&amp; order.total &gt;= 10000\n    true\n  elsif user.regular? &amp;&amp; order.total &gt;= 20000 &amp;&amp; user.orders.completed.count &gt;= 5\n    true\n  else\n    false\n  end\nend\n\n# Good: \u6761\u4ef6\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\nclass DiscountEligibilityChecker\n  def initialize(user, order)\n    @user = user\n    @order = order\n  end\n\n  def eligible?\n    premium_user_eligible? || regular_user_eligible?\n  end\n\n  private\n\n  def premium_user_eligible?\n    @user.premium? &amp;&amp; @order.total &gt;= 10000\n  end\n\n  def regular_user_eligible?\n    @user.regular? &amp;&amp; \n    @order.total &gt;= 20000 &amp;&amp; \n    @user.orders.completed.count &gt;= 5\n  end\nend\n\n# \u4f7f\u7528\u4f8b\nchecker = DiscountEligibilityChecker.new(user, order)\nif checker.eligible?\n  apply_discount(order)\nend<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u610f\u8b58\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u4fdd\u5b88\u6027\u304c\u9ad8\u304f\u3001\u30d0\u30b0\u306e\u5c11\u306a\u3044\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u8df5\u7684\u306a\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3092\u901a\u3058\u3066\u3001\u3053\u308c\u3089\u306e\u539f\u5247\u306e\u9069\u7528\u65b9\u6cd5\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-45\">if\u6587\u306b\u95a2\u3059\u308b\u5b9f\u8df5\u7684\u306a\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u96c6<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-46\">\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u3067\u306e\u6761\u4ef6\u5206\u5c90\u4f8b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u969b\u306eWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3088\u304f\u4f7f\u7528\u3055\u308c\u308b\u8a8d\u8a3c\u51e6\u7406\u306e\u4f8b\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-47\">\u57fa\u672c\u7684\u306a\u8a8d\u8a3c\u30c1\u30a7\u30c3\u30af<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class AuthenticationService\n  def authenticate(email, password)\n    user = User.find_by(email: email)\n\n    # \u65e9\u671f\u30ea\u30bf\u30fc\u30f3\u3067\u30a8\u30e9\u30fc\u30b1\u30fc\u30b9\u3092\u51e6\u7406\n    return failure_response(\"\u30e6\u30fc\u30b6\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\") unless user\n    return failure_response(\"\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u7121\u52b9\u3067\u3059\") unless user.active?\n    return failure_response(\"\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\") unless user.valid_password?(password)\n\n    # \u8a8d\u8a3c\u6210\u529f\u6642\u306e\u51e6\u7406\n    success_response(user)\n  end\n\n  private\n\n  def success_response(user)\n    {\n      success: true,\n      user: user,\n      token: user.generate_auth_token\n    }\n  end\n\n  def failure_response(message)\n    {\n      success: false,\n      error: message\n    }\n  end\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-48\">\u6a29\u9650\u30c1\u30a7\u30c3\u30af\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class ApplicationController &lt; ActionController::Base\n  def authorize_user!\n    unless current_user\n      store_location\n      redirect_to login_path, alert: \"\u30ed\u30b0\u30a4\u30f3\u304c\u5fc5\u8981\u3067\u3059\"\n      return\n    end\n\n    if current_user.access_locked?\n      sign_out_user\n      redirect_to root_path, alert: \"\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u30ed\u30c3\u30af\u3055\u308c\u3066\u3044\u307e\u3059\"\n      return\n    end\n\n    # 2\u8981\u7d20\u8a8d\u8a3c\u304c\u5fc5\u8981\u306a\u5834\u5408\n    if requires_two_factor? &amp;&amp; !two_factor_authenticated?\n      redirect_to two_factor_path\n    end\n  end\n\n  private\n\n  def requires_two_factor?\n    current_user.two_factor_enabled? &amp;&amp; \n      sensitive_action? &amp;&amp; \n      !recently_authenticated?\n  end\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-49\">\u30c7\u30fc\u30bf\u691c\u8a3c\u3067\u306e\u6d3b\u7528\u4f8b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306a\u3069\u3001\u30c7\u30fc\u30bf\u691c\u8a3c\u3067\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u4f8b\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-50\">\u30d5\u30a9\u30fc\u30e0\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class RegistrationForm\n  include ActiveModel::Model\n\n  attr_accessor :email, :password, :password_confirmation\n\n  def validate\n    errors = []\n\n    # \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\n    if email.blank?\n      errors &lt;&lt; \"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\"\n    elsif !valid_email_format?\n      errors &lt;&lt; \"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\"\n    elsif email_already_taken?\n      errors &lt;&lt; \"\u3053\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u65e2\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\"\n    end\n\n    # \u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\n    if password.blank?\n      errors &lt;&lt; \"\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\"\n    elsif password.length &lt; 8\n      errors &lt;&lt; \"\u30d1\u30b9\u30ef\u30fc\u30c9\u306f8\u6587\u5b57\u4ee5\u4e0a\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\"\n    elsif !password_contains_required_chars?\n      errors &lt;&lt; \"\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u82f1\u6570\u5b57\u3092\u542b\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\"\n    end\n\n    # \u30d1\u30b9\u30ef\u30fc\u30c9\u78ba\u8a8d\n    if password_confirmation != password\n      errors &lt;&lt; \"\u30d1\u30b9\u30ef\u30fc\u30c9\u3068\u78ba\u8a8d\u7528\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\"\n    end\n\n    errors\n  end\n\n  private\n\n  def valid_email_format?\n    email.match?(\/\\A[\\w+\\-.]+@[a-z\\d\\-.]+\\.[a-z]+\\z\/i)\n  end\n\n  def password_contains_required_chars?\n    password.match?(\/[A-Za-z]\/) &amp;&amp; password.match?(\/[0-9]\/)\n  end\n\n  def email_already_taken?\n    User.exists?(email: email)\n  end\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-51\">API\u5fdc\u7b54\u51e6\u7406\u3067\u306e\u4f7f\u7528\u4f8b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">API\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3067\u3088\u304f\u4f7f\u7528\u3055\u308c\u308b\u6761\u4ef6\u5206\u5c90\u30d1\u30bf\u30fc\u30f3\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-52\">API\u30ec\u30b9\u30dd\u30f3\u30b9\u30cf\u30f3\u30c9\u30e9\u30fc<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class APIResponseHandler\n  def self.handle_response(response)\n    case response.status\n    when 200, 201\n      if response.body.empty?\n        { success: true, data: nil }\n      else\n        { success: true, data: parse_response(response.body) }\n      end\n    when 401\n      handle_unauthorized\n    when 403\n      handle_forbidden\n    when 404\n      { success: false, error: \"\u30ea\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\" }\n    when 422\n      handle_validation_error(response.body)\n    when 500..599\n      handle_server_error(response.status)\n    else\n      { success: false, error: \"\u4e0d\u660e\u306a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\" }\n    end\n  end\n\n  private\n\n  def self.parse_response(body)\n    return nil if body.nil? || body.empty?\n\n    JSON.parse(body)\n  rescue JSON::ParserError\n    { error: \"\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u89e3\u6790\u306b\u5931\u6557\u3057\u307e\u3057\u305f\" }\n  end\n\n  def self.handle_unauthorized\n    if current_token.expired?\n      refresh_token\n    else\n      { success: false, error: \"\u8a8d\u8a3c\u304c\u5fc5\u8981\u3067\u3059\" }\n    end\n  end\n\n  def self.handle_validation_error(body)\n    errors = JSON.parse(body)['errors']\n    { success: false, error: \"\u5165\u529b\u5024\u304c\u4e0d\u6b63\u3067\u3059\", details: errors }\n  end\n\n  def self.handle_server_error(status)\n    message = if status == 503\n                \"\u30b5\u30fc\u30d3\u30b9\u304c\u4e00\u6642\u7684\u306b\u5229\u7528\u3067\u304d\u307e\u305b\u3093\"\n              else\n                \"\u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\"\n              end\n\n    { success: false, error: message }\n  end\nend<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u5b9f\u8df5\u7684\u306a\u4f8b\u3092\u53c2\u8003\u306b\u3059\u308b\u3053\u3068\u3067\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3088\u308a\u52b9\u679c\u7684\u306bif\u6587\u3092\u6d3b\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-53\">\u3088\u304f\u3042\u308bif\u6587\u306e\u30a8\u30e9\u30fc\u3068\u89e3\u6c7a\u65b9\u6cd5<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-54\">\u69cb\u6587\u30a8\u30e9\u30fc\u306e\u539f\u56e0\u3068\u5bfe\u51e6\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-55\">1. \u6761\u4ef6\u5f0f\u306e\u6bd4\u8f03\u6f14\u7b97\u5b50\u306e\u8aa4\u308a<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30e9\u30fc\u306e\u4f8b\nif user.age = 20  # \u4ee3\u5165\u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u3057\u3066\u3057\u307e\u3063\u3066\u3044\u308b\n  puts \"\u6210\u4eba\u3067\u3059\"\nend\n\n# \u6b63\u3057\u3044\u66f8\u304d\u65b9\nif user.age == 20  # \u6bd4\u8f03\u6f14\u7b97\u5b50\u3092\u4f7f\u7528\n  puts \"\u6210\u4eba\u3067\u3059\"\nend\n\n# \u5225\u306e\u4f8b\uff1a\u6761\u4ef6\u5f0f\u306e\u62ec\u5f27\u5fd8\u308c\nif (x + y) * 2 &gt; 10 &amp;&amp; z &lt; 5  # \u6b63\u3057\u3044\nif x + y * 2 &gt; 10 &amp;&amp; z &lt; 5    # \u6f14\u7b97\u5b50\u306e\u512a\u5148\u9806\u4f4d\u3067\u610f\u56f3\u3057\u306a\u3044\u7d50\u679c\u306b<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-56\">2. end\u306e\u5bfe\u5fdc\u95a2\u4fc2\u306e\u8aa4\u308a<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30e9\u30fc\u306e\u4f8b\nif condition1\n  if condition2\n    puts \"\u6761\u4ef61\u30682\u304c\u771f\"\n  puts \"\u6761\u4ef61\u304c\u771f\"  # \u30a4\u30f3\u30c7\u30f3\u30c8\u304c\u8aa4\u3063\u3066\u3044\u308b\nend                 # end\u304c1\u3064\u8db3\u308a\u306a\u3044\n\n# \u6b63\u3057\u3044\u66f8\u304d\u65b9\nif condition1\n  if condition2\n    puts \"\u6761\u4ef61\u30682\u304c\u771f\"\n  end\n  puts \"\u6761\u4ef61\u304c\u771f\"\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-57\">\u610f\u56f3\u3057\u306a\u3044\u52d5\u4f5c\u306e\u56de\u907f\u65b9\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-58\">1. \u771f\u507d\u5024\u306e\u8a55\u4fa1\u306e\u8aa4\u308a<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u610f\u56f3\u3057\u306a\u3044\u52d5\u4f5c\u306e\u4f8b\nif user.orders.count  # 0\u306e\u5834\u5408\u3082false\u3068\u3057\u3066\u8a55\u4fa1\u3055\u308c\u308b\n  process_orders\nend\n\n# \u6b63\u3057\u3044\u66f8\u304d\u65b9\nif user.orders.any?  # \u5b58\u5728\u30c1\u30a7\u30c3\u30af\u3092\u660e\u793a\u7684\u306b\u884c\u3046\n  process_orders\nend\n\n# nil\u30c1\u30a7\u30c3\u30af\u306e\u4f8b\nif user.profile  # nil\u306e\u5834\u5408\u306ffalse\n  show_profile\nend\n\n# \u3088\u308a\u660e\u793a\u7684\u306a\u66f8\u304d\u65b9\nif user.profile.present?  # Active Support\u3092\u4f7f\u7528\n  show_profile\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-59\">2. \u6761\u4ef6\u5f0f\u306e\u9806\u5e8f\u306e\u8aa4\u308a<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u554f\u984c\u306e\u3042\u308b\u4f8b\ndef check_user(user)\n  if user.admin? || user.permissions.include?('manage_users')\n    # user.permissions\u304cnil\u306e\u5834\u5408\u306bNoMethodError\n    perform_admin_action\n  end\nend\n\n# \u4fee\u6b63\u4f8b\ndef check_user(user)\n  if user.admin? || (user.permissions&amp;.include?('manage_users'))\n    perform_admin_action\n  end\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-60\">\u30c7\u30d0\u30c3\u30b0\u306e\u30dd\u30a4\u30f3\u30c8\u3068\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-61\">1. \u6761\u4ef6\u5f0f\u306e\u5024\u306e\u78ba\u8a8d<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30c7\u30d0\u30c3\u30b0\u7528\u306e\u6761\u4ef6\u5f0f\u306e\u5024\u51fa\u529b\ndef process_user(user)\n  condition = user.active? &amp;&amp; user.verified?\n  puts \"Debug: condition = #{condition}\"  # \u30c7\u30d0\u30c3\u30b0\u51fa\u529b\n  if condition\n    perform_action\n  end\nend\n\n# \u3088\u308a\u8a73\u7d30\u306a\u30c7\u30d0\u30c3\u30b0\ndef verify_access(user, resource)\n  puts \"Debug: user.active? = #{user.active?}\"\n  puts \"Debug: user.role = #{user.role}\"\n  puts \"Debug: resource.accessible? = #{resource.accessible?}\"\n\n  if user.active? &amp;&amp; user.role == 'admin' &amp;&amp; resource.accessible?\n    grant_access\n  end\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-62\">2. \u30a8\u30e9\u30fc\u767a\u751f\u6642\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u624b\u9806<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class AccessChecker\n  def check_access(user, resource)\n    begin\n      if validate_user(user) &amp;&amp; validate_resource(resource)\n        grant_access\n      end\n    rescue =&gt; e\n      logger.error \"\u30a2\u30af\u30bb\u30b9\u30c1\u30a7\u30c3\u30af\u30a8\u30e9\u30fc: #{e.message}\"\n      logger.debug \"\u30e6\u30fc\u30b6\u30fc\u60c5\u5831: #{user.inspect}\"\n      logger.debug \"\u30ea\u30bd\u30fc\u30b9\u60c5\u5831: #{resource.inspect}\"\n      raise AccessError, \"\u30a2\u30af\u30bb\u30b9\u30c1\u30a7\u30c3\u30af\u306b\u5931\u6557\u3057\u307e\u3057\u305f\"\n    end\n  end\n\n  private\n\n  def validate_user(user)\n    unless user\n      logger.warn \"\u30e6\u30fc\u30b6\u30fc\u304cnil\u3067\u3059\"\n      return false\n    end\n\n    unless user.active?\n      logger.info \"\u975e\u30a2\u30af\u30c6\u30a3\u30d6\u30e6\u30fc\u30b6\u30fc: #{user.id}\"\n      return false\n    end\n\n    true\n  end\n\n  def validate_resource(resource)\n    unless resource\n      logger.warn \"\u30ea\u30bd\u30fc\u30b9\u304cnil\u3067\u3059\"\n      return false\n    end\n\n    unless resource.accessible?\n      logger.info \"\u30a2\u30af\u30bb\u30b9\u4e0d\u53ef\u80fd\u306a\u30ea\u30bd\u30fc\u30b9: #{resource.id}\"\n      return false\n    end\n\n    true\n  end\nend<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f3\u3068\u89e3\u6c7a\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u5805\u7262\u306aRuby\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u30c7\u30d0\u30c3\u30b0\u6642\u306b\u306f\u3001\u6761\u4ef6\u5f0f\u306e\u5024\u3092\u78ba\u8a8d\u3057\u3001\u9069\u5207\u306a\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3092\u884c\u3046\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ruby\u306eif\u6587\u3068\u306f\uff1f\u57fa\u672c\u6982\u5ff5\u3092\u7406\u89e3\u3057\u3088\u3046 Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/artic &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-1300","post","type-post","status-publish","format-standard","category-ruby","nothumb"],"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1300","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=1300"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1300\/revisions"}],"predecessor-version":[{"id":1302,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1300\/revisions\/1302"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}