<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ WEB DEVELOPMENT - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ エキスパートの手によるプログラミングチュートリアル記事を幅広く掲載。ウェブ開発、データサイエンス、DevOps、セキュリティ、開発者としてのキャリアなどについて学びましょう。 ]]>
        </description>
        <link>https://www.freecodecamp.org/japanese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ WEB DEVELOPMENT - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/japanese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 23 May 2026 19:21:25 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/japanese/news/tag/web-development/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ JavaScript でページをリフレッシュする方法 – JS でページを再読み込みする方法 ]]>
                </title>
                <description>
                    <![CDATA[ JavaScript は、動的でインタラクティブなウェブアプリケーションを作成するための多用途なプログラミング言語です。ウェブ開発における一般的なタスクの一つに、ページのコンテンツを更新したり特定のアクションをトリガーするための、ウェブページのリフレッシュ (再読み込み) があります。 この記事では、JavaScript でページをリフレッシュするさまざまな方法を探り、それぞれのアプローチの長所と短所を理解します。 JavaScript でページをリフレッシュする理由 ウェブページをリフレッシュすることは、さまざまなシナリオで役立ちます。例えば:  1. コンテンツ更新:     ウェブページのコンテンツが動的で頻繁に変わる場合、最新のデータや情報を表示するためにページをリフレッシュする必要があるかもしれません。これはニュースサイト、株式市場のトラッカー、天気アプリなどでよく見られます。  2. フォーム送信:     ウェブページでフォームを送信した後、成功メッセージを表示したり、新しい送信のためにフォームをリセットするためにページをリフレッシュしたくなるかもしれません。  3 ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/javascript-refresh-page-how-to-reload-a-page-in-js/</link>
                <guid isPermaLink="false">66919d85327328043a3383cc</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Charlotte Stone ]]>
                </dc:creator>
                <pubDate>Tue, 23 Jul 2024 14:23:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2024/07/cover-template--8-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/javascript-refresh-page-how-to-reload-a-page-in-js/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">JavaScript Refresh Page – How to Reload a Page in JS</a>
      </p><p>JavaScript は、動的でインタラクティブなウェブアプリケーションを作成するための多用途なプログラミング言語です。ウェブ開発における一般的なタスクの一つに、ページのコンテンツを更新したり特定のアクションをトリガーするための、ウェブページのリフレッシュ (再読み込み) があります。</p><p>この記事では、JavaScript でページをリフレッシュするさまざまな方法を探り、それぞれのアプローチの長所と短所を理解します。</p><h2 id="javascript-">JavaScript でページをリフレッシュする理由</h2><p>ウェブページをリフレッシュすることは、さまざまなシナリオで役立ちます。例えば:</p><!--kg-card-begin: markdown--><ol>
<li>コンテンツ更新: ウェブページのコンテンツが動的で頻繁に変わる場合、最新のデータや情報を表示するためにページをリフレッシュする必要があるかもしれません。これはニュースサイト、株式市場のトラッカー、天気アプリなどでよく見られます。</li>
<li>フォーム送信: ウェブページでフォームを送信した後、成功メッセージを表示したり、新しい送信のためにフォームをリセットするためにページをリフレッシュしたくなるかもしれません。</li>
<li>状態リセット: 場合によっては、ウェブページの状態をリセットしたり、特定のデータをクリアして再スタートしたいことがあります。ページをリフレッシュすることでこれを達成できます。</li>
</ol>
<!--kg-card-end: markdown--><p>それでは、JavaScript でページをリフレッシュするさまざまな方法を探ってみましょう。</p><h2 id="-1-location-reload-">方法 1: <code>location.reload()</code> を使用してページをリフレッシュする方法</h2><p>JavaScript でページをリフレッシュする最も簡単な方法は、<code>location.reload()</code> メソッドを使用することです。このメソッドは、現在のウェブページをサーバーから再読み込みし、現在のコンテンツを破棄して最新のコンテンツを読み込みます。</p><pre><code class="language-JavaScript">// Refresh the page
location.reload();
</code></pre><h3 id="location-reload-">location.reload() を使用する利点</h3><ul><li>シンプルで使いやすい。</li><li>サーバーからページ全体を再読み込みするため、最新のコンテンツを取得できる。</li></ul><h3 id="location-reload--1">location.reload() を使用する欠点</h3><ul><li>ページの現在のコンテンツが破棄されるため、ユーザーの入力やデータが失われる可能性がある。</li><li>ページが再読み込みされる際にちらつきが発生し、ユーザーエクスペリエンスに影響を与えることがある。</li></ul><h2 id="-2-location-replace-">方法 2: <code>location.replace()</code> を使用してページをリフレッシュする方法</h2><p>JavaScript でページをリフレッシュする別の方法として、<code>location.replace()</code> メソッドを使用する方法があります。このメソッドは現在のウェブページの URL を新しい URL で置き換えることで、新しいコンテンツでページを再読み込みします。</p><p>このコードをコンソールで試すと、現在の URL が表示されることに気付くでしょう。</p><pre><code class="language-JavaScript">console.log(location.href)</code></pre><p>これは、<code>location.replace()</code> メソッドを使用して現在のウェブページの URL を新しい URL (同じ URL) で置き換えると、ページがリフレッシュされることを意味します。</p><pre><code class="language-JavaScript">// Refresh the page by replacing the URL with itself
location.replace(location.href);</code></pre><h3 id="location-replace-">location.replace() を使用する利点</h3><ul><li>新しいコンテンツでページを迅速にリロードする方法である。</li><li>現在のページのコンテンツを保持し、URL のみを置き換えるため、ユーザーの入力やデータの損失を回避できる。</li></ul><h3 id="location-replace--1">location.replace() を使用する欠点</h3><ul><li>ページの URL 全体を置き換えるため、現在のブラウジング履歴が失われる可能性がある。</li><li>ウェブページが新しいウィンドウやタブで開かれている場合など、一部のシナリオで機能しないことがある。</li></ul><h2 id="-3-location-reload-true-">方法 3: <code>location.reload(true)</code> を使用してページをリフレッシュする方法</h2><p><code>location.reload()</code> メソッドは、<code>forceGet</code> というブール型パラメータも受け入れます。これを <code>true</code> に設定すると、ページがキャッシュされていてもサーバーから強制的に再読み込みされます。</p><p>これは、ページがキャッシュされていても最新のコンテンツを確実に取得したい場合に便利です。</p><pre><code class="language-JavaScript">// Refresh the page and bypass the cache
location.reload(true);</code></pre><h3 id="location-reload-true-">location.reload(true) を使用する利点</h3><ul><li>ページがキャッシュされていても、最新のコンテンツをサーバーから確実に取得できる。</li></ul><h3 id="location-reload-true--1">location.reload(true) を使用する欠点</h3><ul><li>ページの現在のコンテンツが破棄されるため、ユーザーの入力やデータが失われる可能性がある。</li><li>ページが再読み込みされる際にちらつきが発生し、ユーザーエクスペリエンスに影響を与えることがある。</li></ul><h2 id="-4-location-href-">方法 4: <code>location.href</code> を使用してページをリフレッシュする方法</h2><p>JavaScript でページをリフレッシュするもう 1 つの方法として、<code>location.href</code> プロパティを使用してウェブページの URL を同じ URL に再設定する方法があります。これにより、ページが新しい URL で再読み込みされ、ページのリフレッシュがトリガーされます。</p><pre><code class="language-JavaScript">// Refresh the page by setting the URL to itself
location.href = location.href;</code></pre><h3 id="location-href-">location.href を使用する利点</h3><ul><li>ページをリフレッシュするためのシンプルで効果的な方法である。</li><li>現在のページのコンテンツを保持し、URL のみを更新するため、ユーザーの入力やデータの損失を回避できる。</li></ul><h3 id="location-href--1">location.href を使用する欠点</h3><ul><li>ページの URL 全体を置き換えるため、現在のブラウジング履歴が失われる可能性がある。</li><li>ウェブページが新しいウィンドウやタブで開かれている場合など、一部のシナリオで機能しないことがある。</li></ul><h2 id="-5-location-reload-">方法 5: <code>location.reload()</code> を遅延させてページをリフレッシュする方法</h2><p>ページをリフレッシュする前に遅延を追加したい場合は、<code>setTimeout()</code> 関数を <code>location.reload()</code> メソッドと組み合わせて使うことができます。</p><p>これにより、ページがリロードされる前の遅延時間をミリ秒単位で指定でき、リフレッシュのタイミングを制御することができます。</p><pre><code class="language-JavaScript">// Refresh the page after a delay of 3 seconds
setTimeout(function(){
    location.reload();
}, 3000); // 3000 milliseconds = 3 seconds</code></pre><h3 id="location-reload--2">location.reload() を遅延させて使用する利点</h3><ul><li>遅延を追加することでページリフレッシュのタイミングを制御できる。</li><li>特定のイベントやアクションの後にページをリフレッシュしたい場合に柔軟に対応できる。</li></ul><h3 id="location-reload--3">location.reload() を遅延させて使用する欠点</h3><ul><li>ページリフレッシュに遅延が発生するため、ユーザーエクスペリエンスに影響を与えることがある。</li><li>不安定なまたは遅いネットワーク接続のシナリオでは期待通りに動作しないことがある。</li></ul><h2 id="-">まとめ</h2><p>この記事では、JavaScript でページをリフレッシュするさまざまな方法を学びました。それぞれの方法には利点と欠点があり、それらを考慮してウェブ開発プロジェクトに最適な方法を選ぶことができるようになりましたね。</p><p>ページをリフレッシュする際には、ユーザーエクスペリエンスやデータの損失、ブラウジング履歴への影響を考慮することが重要です。</p><p>この記事が JavaScript でウェブページをリロードする方法を理解し、特定のユースケースに適した方法を選ぶ手助けになれば幸いです。</p><p>Happy coding!</p><p>そしてさらなる学習の旅に出かけましょう！<a href="https://joelolawanle.com/posts">私のブログ</a>でも他の記事をご覧いただけます。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ HTML 背景色のチュートリアル – div の背景色の変更方法をコード例付きで解説 ]]>
                </title>
                <description>
                    <![CDATA[ ウェブ開発を行う上で、HTML 要素の背景色の変更はよくある作業です。しかし、CSS の background-color  プロパティの使い方を理解していないとややこしく感じるかもしれません。 この記事では以下の内容を扱います。  * HTML 要素のデフォルトの背景色  * よく使われる要素である div の背景色を変更する方法  * background-color プロパティは CSS ボックスモデルのどの部分に影響するか  * background-color プロパティに指定できるさまざまな値 要素のデフォルトの背景色 div のデフォルトの背景色は transparent (透明) です。そのため、div に background-color  を指定しなかった場合にはその親要素の背景色で表示されます。 div の背景色の変更 この例では、次の div 要素の背景色を変更します。 <div class="div-1"> I love HTML </div> <div class="div-2"> I ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/html-background-color-tutorial-how-to-change-a-div-background-color-explained-with-code-examples/</link>
                <guid isPermaLink="false">642f10f5c549af058e3885aa</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ まつだようこ ]]>
                </dc:creator>
                <pubDate>Thu, 06 Apr 2023 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2023/04/5f9c9b32740569d1a4ca2a54.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/html-background-color-tutorial-how-to-change-a-div-background-color-explained-with-code-examples/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">HTML Background Color Tutorial – How to Change a Div Background Color, Explained with Code Examples</a>
      </p><p>ウェブ開発を行う上で、HTML 要素の背景色の変更はよくある作業です。しかし、CSS の <code>background-color</code> プロパティの使い方を理解していないとややこしく感じるかもしれません。</p><p>この記事では以下の内容を扱います。</p><ul><li>HTML 要素のデフォルトの背景色</li><li>よく使われる要素である div の背景色を変更する方法</li><li><code>background-color</code> プロパティは CSS ボックスモデルのどの部分に影響するか</li><li><code>background-color</code> プロパティに指定できるさまざまな値</li></ul><h3 id="-">要素のデフォルトの背景色</h3><p>div のデフォルトの背景色は <code>transparent</code> (透明) です。そのため、div に <code>background-color</code> を指定しなかった場合にはその親要素の背景色で表示されます。</p><h3 id="div-">div の背景色の変更</h3><p>この例では、次の div 要素の背景色を変更します。</p><pre><code class="language-html">&lt;div class="div-1"&gt; I love HTML &lt;/div&gt;
&lt;div class="div-2"&gt; I love CSS &lt;/div&gt;
&lt;div class="div-3"&gt; I love JavaScript &lt;/div&gt;
</code></pre><p>スタイルを何も指定しなかった場合は次のような見た目になります。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-12.22.48-PM.png" class="kg-image" alt="Screen-Shot-2020-05-08-at-12.22.48-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/04/Screen-Shot-2020-05-08-at-12.22.48-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/04/Screen-Shot-2020-05-08-at-12.22.48-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/04/Screen-Shot-2020-05-08-at-12.22.48-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-12.22.48-PM.png 1682w" sizes="(min-width: 720px) 720px" width="1682" height="200" loading="lazy"></figure><p>では、クラスにスタイルを追加して div の背景色を変更します。コード例を HTML ファイルに入力して試してみましょう。</p><pre><code class="language-html">&lt;style&gt;
    .div-1 {
        background-color: #EBEBEB;
    }
    
    .div-2 {
    	background-color: #ABBAEA;
    }
    
    .div-3 {
    	background-color: #FBD603;
    }
&lt;/style&gt;

&lt;body&gt;
    &lt;div class="div-1"&gt; I love HTML &lt;/div&gt;
    &lt;div class="div-2"&gt; I love CSS &lt;/div&gt;
    &lt;div class="div-3"&gt; I love JavaScript &lt;/div&gt;
&lt;/body&gt;
</code></pre><p>次のような表示になります。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.12.29-AM-1.png" class="kg-image" alt="Screen-Shot-2020-05-08-at-11.12.29-AM-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/04/Screen-Shot-2020-05-08-at-11.12.29-AM-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/04/Screen-Shot-2020-05-08-at-11.12.29-AM-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/04/Screen-Shot-2020-05-08-at-11.12.29-AM-1.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.12.29-AM-1.png 1702w" sizes="(min-width: 720px) 720px" width="1702" height="226" loading="lazy"></figure><p>これでこの div 要素の背景色を変更することができました。では次は、このプロパティについてもっと詳しく学びましょう。<code>background-color</code> プロパティが CSS ボックスモデルのパーツにどう影響するか見ていきます。</p><h3 id="-css-">背景色と CSS ボックスモデル</h3><p>CSS ボックスモデルでは、すべての HTML 要素が長方形のボックスとして表されます。各ボックスは、下記の図に示した 4 つのパーツで構成されます。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.07.00-AM-1.png" class="kg-image" alt="Screen-Shot-2020-05-08-at-11.07.00-AM-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/04/Screen-Shot-2020-05-08-at-11.07.00-AM-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/04/Screen-Shot-2020-05-08-at-11.07.00-AM-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/04/Screen-Shot-2020-05-08-at-11.07.00-AM-1.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.07.00-AM-1.png 1720w" sizes="(min-width: 720px) 720px" width="1720" height="902" loading="lazy"><figcaption>CSS ボックスモデル</figcaption></figure><p>ボックスモデルについてよく知らない場合は詳しく調べてみるのもいいでしょう。ここでの疑問は、div の背景色を変更すると、ボックスモデルのどの部分が影響されるかという点です。答えはずばり、パディング領域とコンテンツ領域です。例を用いて確認してみましょう。</p><pre><code class="language-html">&lt;style&gt;
    body {
        background-color: #ABBAEA;
    }
    .child {
        height: 200px;
        margin: 20px;
        border: 5px solid;
        background-color: #FBD603;
    }
&lt;/style&gt;
&lt;body&gt;
    &lt;div&gt;
        &lt;p&gt;This is the parent div which contains the div we are testing&lt;/p&gt;

        &lt;div class="child"&gt;
            &lt;p&gt;This example shows that changing the background color of a div does not affect the border and margin of the div.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;

</code></pre><p>このコードは次のような表示になります。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.07.10-AM-1.png" class="kg-image" alt="Screen-Shot-2020-05-08-at-11.07.10-AM-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/04/Screen-Shot-2020-05-08-at-11.07.10-AM-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/04/Screen-Shot-2020-05-08-at-11.07.10-AM-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/04/Screen-Shot-2020-05-08-at-11.07.10-AM-1.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.07.10-AM-1.png 1712w" sizes="(min-width: 720px) 720px" width="1712" height="654" loading="lazy"></figure><p>上の例を見ると、マージン領域と境界線の領域は、背景色の変更に影響されないことが分かります。境界線の色は <code>border-color</code> プロパティを使って変更できます。マージン領域は透明のままとなり、親要素の背景色が反映されます。</p><p>最後に、<code>background-color</code> プロパティが取ることのできる値について説明します。</p><h3 id="background-color-">background-color の値</h3><p><code>color</code> プロパティと同様に、<code>background-color</code> プロパティも 6 種類の値を取ることが可能です。ここでは最もよく使われる 3 種類の値の例を見ていきましょう。次の例では、異なる値を使用して div の背景色を赤に設定しています。</p><pre><code class="language-html">&lt;style&gt;
    /* キーワード値 (色の名前) */
    .div-1 {
        background-color: red;
    }
    
    /* 16 進の値 */
    .div-2 {
       background-color: #FF0000;
    }
    
    /* RGB 値 */
    .div-3 {
    	background-color: rgb(255,0,0);
    }
    
&lt;/style&gt;

&lt;body&gt;
    &lt;div class="div-1"&gt;
        &lt;p&gt;The background property can take six different values.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class="div-2"&gt;
        &lt;p&gt;The background property can take six different values.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class="div-3"&gt;
        &lt;p&gt;The background property can take six different values.&lt;/p&gt;
    &lt;/div&gt;
&lt;/body&gt;
</code></pre><p>どれも同じ背景色になることが分かります。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.07.24-AM-1.png" class="kg-image" alt="Screen-Shot-2020-05-08-at-11.07.24-AM-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/04/Screen-Shot-2020-05-08-at-11.07.24-AM-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/04/Screen-Shot-2020-05-08-at-11.07.24-AM-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/04/Screen-Shot-2020-05-08-at-11.07.24-AM-1.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.07.24-AM-1.png 1718w" sizes="(min-width: 720px) 720px" width="1718" height="468" loading="lazy"></figure><p><code>background-color</code> プロパティが取ることのできる値には他に、HSL 値、特殊なキーワード値、グローバル値があります。それぞれの例は以下の通りです。</p><pre><code class="language-css">/* HSL 値 */
background-color: hsl(0, 100%, 25%;

/* 特殊なキーワード値 */
background-color: currentcolor;
background-color: transparent;

/* グローバル値 */
background-color: inherit;
background-color: initial;
background-color: unset;
</code></pre><p>これらの値について詳しくは<a href="https://developer.mozilla.org/ja/docs/Web/CSS/CSS_Colors/Applying_color">こちら</a>を参照してください。</p><h3 id="--1">補足</h3><p>要素に背景色を設定する際は、背景色と文字色のコントラスト比が十分大きくなるようにすることが重要です。これは、テキストを目の悪い人にも読みやすくするためです。</p><p>次の 2 つの div を見てください。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.11.44-AM-1.png" class="kg-image" alt="Screen-Shot-2020-05-08-at-11.11.44-AM-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/04/Screen-Shot-2020-05-08-at-11.11.44-AM-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/04/Screen-Shot-2020-05-08-at-11.11.44-AM-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/04/Screen-Shot-2020-05-08-at-11.11.44-AM-1.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.11.44-AM-1.png 1702w" sizes="(min-width: 720px) 720px" width="1702" height="294" loading="lazy"></figure><p>1 つ目の div は背景色と文字色のコントラストが十分でないため、誰にでも読みやすい状態ではありません。あなた一人だけが見るウェブサイトを作っていて、しかもあなたがとても目が良いのでない限りは、このような組み合わせは避けるべきでしょう。</p><p>2 つ目の div の背景色と文字色のコントラスト比は、はるかに良くなっています。したがって、こちらの方が多くの人にとってアクセスしやすく、はっきりと読みやすいでしょう。</p><h2 id="--2">結論</h2><p>この記事では、div の背景色を変更する方法を説明しました。また、背景色の変更が CSS ボックスモデルのどの部分に影響するかについても述べました。最後に、<code>background-color</code> プロパティが取ることのできる値について述べました。</p><p>この記事がお役に立てば幸いです。お読みいただきありがとうございました。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ REST API のベストプラクティス – REST エンドポイント設計の例 ]]>
                </title>
                <description>
                    <![CDATA[ Web 開発において REST API は、クライアント・サーバー間のコミュニケーションをスムーズにする重要な役割を担っています。 クライアントはフロントエンド、サーバーはバックエンドと考えて構いません。 クライアント (フロントエンド) とサーバー (バックエンド) は通常、直接やりとりすることができません。そこで仲介役として Application Programming Interface (API) というインターフェイスが使われます。 このようにクライアント・サーバー間の通信においては API が極めて重要であることから、API を設計する際には常にベストプラクティスを念頭におくべきでしょう。そうすることで開発者がその API を保守、あるいは利用する際に、問題が生じることなく作業できるようになります。 この記事では、REST API を開発する際の 9 つのベストプラクティスを紹介します。API の利用者にとっても使いやすい、ベストな API を作成する助けとなれば幸いです。 そもそも REST API とは？ REST とは Representational S ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/rest-api-best-practices-rest-endpoint-design-examples/</link>
                <guid isPermaLink="false">64169a9c0a9cb6064c0fb81b</guid>
                
                    <category>
                        <![CDATA[ REST API ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ まつだようこ ]]>
                </dc:creator>
                <pubDate>Wed, 22 Mar 2023 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2023/03/api.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/rest-api-best-practices-rest-endpoint-design-examples/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">REST API Best Practices – REST Endpoint Design Examples</a>
      </p><p>Web 開発において REST API は、クライアント・サーバー間のコミュニケーションをスムーズにする重要な役割を担っています。</p><p>クライアントはフロントエンド、サーバーはバックエンドと考えて構いません。</p><p>クライアント (フロントエンド) とサーバー (バックエンド) は通常、直接やりとりすることができません。そこで仲介役として Application Programming Interface (API) というインターフェイスが使われます。</p><p>このようにクライアント・サーバー間の通信においては API が極めて重要であることから、API を設計する際には常にベストプラクティスを念頭におくべきでしょう。そうすることで開発者がその API を保守、あるいは利用する際に、問題が生じることなく作業できるようになります。</p><p>この記事では、REST API を開発する際の 9 つのベストプラクティスを紹介します。API の利用者にとっても使いやすい、ベストな API を作成する助けとなれば幸いです。</p><h2 id="-rest-api-">そもそも REST API とは？</h2><p>REST とは Representational State Transfer の略です。ウェブ向けのアーキテクチャ設計の指針として 2000 年に Roy Fielding によって考案された、ソフトウェアアーキテクチャのスタイルです。</p><p>REST の設計原則に従っている API は「RESTful」であると言います。</p><p>簡単に言えば、REST API は 2 台のコンピューターが HTTP (Hypertext Transfer Protocol) を介して通信するための手段です。クライアントとサーバーも HTTP で通信します。</p><h2 id="rest-api-">REST API 設計のベストプラクティス</h2><h3 id="1-json-">1. データの送受信には JSON 形式を使う</h3><p>かつては API リクエストの受付および返答は主に XML 形式で行われ、HTML が用いられることさえもありました。しかし現在では、API データの送受信に広く使われているデファクトスタンダードは JSON (JavaScript Object Notation) 形式となっています。</p><p>例えば XML を用いる場合、データのデコードとエンコードが少し煩雑になることが多いため、現在では XML をサポートするフレームワークは少なくなりました。</p><p>JSON は元々この使い道が想定されているため、例えば JavaScript なら、fetch API を通して JSON データを構文解析する組み込みメソッドがあります。Python や PHP など他のプログラミング言語を使う場合でも、それぞれの言語に JSON データを解析したり操作したりするメソッドがあります。</p><p>例えば Python では JSON データを扱うために <code>json.loads()</code> や <code>json.dumps()</code> というメソッドが提供されています。</p><p>そしてクライアントが正しく JSON データを解釈できるようにするためには、リクエストに対するレスポンスヘッダーの <code>Content-Type</code> を <code>application/json</code> に設定します。</p><p>一方、サーバーサイドフレームワークの多くは <code>Content-Type</code> を自動で JSON に定めます。例えば Express の場合、現在では <code>express.json()</code> ミドルウェアがこの目的で使われます。NPM パッケージ <code>body-parser</code> も同じように使われます。</p><h3 id="2-">2. エンドポイントには動詞ではなく名詞を使う</h3><p>REST API を設計する際、エンドポイントのパスには動詞を使わない方が良いでしょう。エンドポイントには各エンドポイントの機能を表す名詞を使います。</p><p>この理由は、<code>GET</code>、<code>POST</code>、<code>PUT</code>、<code>PATCH</code>、<code>DELETE</code> など基本の CRUD (Create, Read, Update, Delete) 操作を行うための HTTP メソッドで既に動詞が使われているからです。</p><p><code>GET</code>、<code>POST</code>、<code>PUT</code>、<code>PATCH</code>、<code>DELETE</code> は最もよく使われる HTTP メソッドです。他には <code>COPY</code>、<code>PURGE</code>、<code>LINK</code>、<code>UNLINK</code> などもあります。</p><p>つまり、エンドポイントは例えば <code>https://mysite.com/getPosts</code> や <code>https://mysite.com/createPost</code> のような形ではなく、<code>https://mysite.com/posts</code> のような形にすべきです。</p><p>まとめると、エンドポイントが実行する操作は HTTP メソッドの動詞で表現しましょう。<code>GET</code> ならばデータを取得する、<code>POST</code> ならばデータを作成する、<code>PUT</code> ならばデータを更新する、<code>DELETE</code> ならばデータを削除するというようにです。</p><h3 id="3-">3. コレクションは名詞の複数形で命名する</h3><p>あなたの API のデータを、API の利用者が入力したさまざまなリソースの集まり (コレクション) だと考えてみましょう。</p><p>もし <code>https://mysite.com/post/123</code> というエンドポイントがある場合、<code>DELETE</code> リクエストで投稿 (post) を削除したり <code>PUT</code> または <code>PATCH</code> リクエストで投稿を更新したりする分には問題ないかもしれませんが、コレクションの中に他の投稿があるかもしれないことがユーザーに伝わりません。これがコレクションには複数形の名詞を使うべき理由です。</p><p>つまり、<code>https://mysite.com/post/123</code> ではなく <code>https://mysite.com/posts/123</code> とすると良いでしょう。</p><h3 id="4-">4. エラーハンドリングにはステータスコードを使う</h3><p>API へのリクエストに対する返答では常に、規定に従った HTTP ステータスコードを使うべきです。これにより API のユーザーは何が起きているか、リクエストが成功したのか、失敗したのか、何か他の状況かなどを知ることができます。</p><p>以下は各 HTTP ステータスコードの範囲とその意味の表です。</p><!--kg-card-begin: html--><table>
<thead>
<tr>
<th>ステータスコードの範囲</th>
<th>意味</th>
</tr>
</thead>
<tbody>
<tr>
<td>100 – 199</td>
<td>情報レスポンス<br>例えば 102 はリソースが処理中であることを表す。</td>
</tr>
<tr>
<td>300 – 399</td>
<td>リダイレクト<br>例えば 301 は「Moved Permanently」(リソースが恒久的に移動されたこと) を意味する。</td>
</tr>
<tr>
<td>400 – 499</td>
<td>クライアント側エラー<br>400 は「Bad Request」(リクエストに問題があること)、404 は「Not Found」(リソースが見つからなかったこと) を意味する。</td>
</tr>
<tr>
<td>500 – 599</td>
<td>サーバー側エラー<br>例えば 500 は「Internal Server Error」(サーバー側でエラーが発生したこと) を意味する。</td>
</tr>
</tbody>
</table><!--kg-card-end: html--><h3 id="5-">5. 関係を表すにはエンドポイントのネストを使用する</h3><p>しばしば、異なるエンドポイントが関係している場合があります。そのような場合にはエンドポイントをネストして関係をわかりやすくしましょう。</p><p>例えば複数のユーザーが利用するブログプラットフォームのようなケースでは、異なる投稿 (post) はそれぞれ異なる著者 (author) によって書かれている可能性があります。そのような場合は <code>https://mysite.com/posts/author</code> のようなエンドポイントがネストの仕方として適切でしょう。</p><p>同様に、投稿にはそれぞれコメントがあるかもしれません。コメントのリストを取得するには <code>https://mysite.com/posts/postId/comments</code> のようなエンドポイントが理にかなっているでしょう。</p><p>ただし深さが 3 段階を超えるようなネストは、API が複雑になり読みづらくなるため避けた方がいいでしょう。</p><h3 id="6-">6. 要求されたデータの取得にフィルター、ソート、ページネーションを活用する</h3><p>時には API のデータベースが非常に大きくなることもあります。そのようなデータベースからのデータの取得にはとても時間がかかる可能性があります。</p><p>フィルター、ソート、ページネーションは、REST API のコレクションに対して実行可能な操作です。このような操作によって、必要なデータのみを取得、並べ替え、ページを分けるなどして、サーバーがリクエストの処理で占有されすぎないようにすることが可能です。</p><p>フィルターを適用したエンドポイントの例は次の通りです:<br><code>https://mysite.com/posts?tags=javascript</code></p><p>このエンドポイントでは「JavaScript」というタグが付けられた投稿を取得します。</p><h3 id="7-ssl-">7. セキュリティのため SSL を使用する</h3><p>SSL とは Secure Socket Layer の略です。SSL は REST API 設計のセキュリティ面で非常に重要です。SSL は API の安全性を高め、悪意のある攻撃を受けにくくします。</p><p>その他考慮すべきセキュリティ対策としては、サーバーとクライアント間の通信をプライベートにすること、API の利用者がリクエストした以上のものを取得できてしまわないようにすることなどが含まれます。</p><p>SSL 証明書のサーバーへの設定は難しくなく、最初の一年間無料で利用できる証明書などもあります。有料の場合も、高額なものではありません。</p><p>SSL を使用している REST API とそうでないものの明確な違いは、URL の HTTP に「s」が付いているかどうかです:<br><code>https://mysite.com/posts</code> は SSL を使用しています。<br><code>http://mysite.com/posts</code> は SSL を使用していません。</p><h3 id="8-">8. バージョンを明確にする</h3><p>クライアント (ユーザー) を強制的に新しいバージョンへ移行させることのないように、REST API では複数のバージョンを利用できるようにしましょう。新バージョンへの移行は、注意深く行わなければアプリケーションが壊れる可能性がある作業です。</p><p>ウェブ開発で最も一般的なバージョニングシステムの 1 つがセマンティックバージョニングです。</p><p>セマンティックバージョニングのバージョン番号は、1.0.0 や 2.1.2、あるいは 3.3.4 のようになります。最初の数字はメジャーバージョン、二番目の数字はマイナーバージョン、三番目はパッチバージョンを表します。</p><p>大規模なテック企業の RESTful API も、個人開発の場合も、次のような形式がよく使われます:<br><code>https://mysite.com/v1/</code> がバージョン 1<br><code>https://mysite.com/v2</code> がバージョン 2</p><p>Facebook API では次のようにバージョン番号が付けられています。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/facebook-versioning.jpg" class="kg-image" alt="facebook-versioning" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/03/facebook-versioning.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/03/facebook-versioning.jpg 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/03/facebook-versioning.jpg 1280w" sizes="(min-width: 720px) 720px" width="1280" height="764" loading="lazy"></figure><p>Spotify でも同様のバージョン番号が付けられています。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/spotify-versioning.jpg" class="kg-image" alt="spotify-versioning" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/03/spotify-versioning.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/03/spotify-versioning.jpg 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/03/spotify-versioning.jpg 1280w" sizes="(min-width: 720px) 720px" width="1280" height="764" loading="lazy"></figure><p>すべての API がこの通りではありません。Mailchimp の API では異なる形式が使われています。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/mailchimp-ersioning.jpg" class="kg-image" alt="mailchimp-ersioning" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/03/mailchimp-ersioning.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/03/mailchimp-ersioning.jpg 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/03/mailchimp-ersioning.jpg 1280w" sizes="(min-width: 720px) 720px" width="1280" height="768" loading="lazy"></figure><p>このような形で REST API を公開することにより、クライアントが新しいバージョンに移行しないことを選択した場合には移行を強制しないようにできます。</p><h3 id="9-api-">9. 正確な API ドキュメントを提供する</h3><p>REST API を作成する際には、クライアント (利用者) が正しい使い方を学習、理解できるようにする必要があります。ベストな方法は良い API ドキュメントを提供することです。</p><p>ドキュメントには次の情報を含めましょう。</p><ul><li>API の適切なエンドポイント</li><li>エンドポイントに対するリクエスト例</li><li>いくつかのプログラミング言語での実装例</li><li>各種エラーのエラーメッセージとステータスコードのリスト</li></ul><p>API ドキュメントの作成によく使われるツールの 1 つに Swagger があります。ソフトウェア開発で API テストツールとして使われることの多い Postman も、API ドキュメントの作成にも利用できます。</p><h2 id="-">結論</h2><p>この記事では、REST API の開発時に心に留めておくべきベストプラクティスについて学びました。</p><p>これらのベストプラクティスや慣習を実践することが重要です。そうすることで、スムーズに機能し、安全で、API 利用者にとって使いやすいアプリケーションを開発できるでしょう。</p><p>お読みいただきありがとうございました。早速この記事で学んだベストプラクティスを活かした API を作成してみましょう。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ CSS を使って画像を縦横中央に配置する方法 ]]>
                </title>
                <description>
                    <![CDATA[ 多くのデベロッパーは画像の扱いに苦労します。レスポンシブ対応 [https://www.freecodecamp.org/news/css-responsive-image-tutorial/] や位置の処理、中でもページの中央に画像を配置することは特に困難です。 そこで、この投稿では、さまざまな CSS のプロパティを使用して画像を縦と横の両方で中央に配置する方法で最もよく使われるものをお見せします。 過去の投稿では、CSS の Position [https://www.freecodecamp.org/news/how-to-use-the-position-property-in-css-to-align-elements-d8f49c403a26/]  や Display [https://www.youtube.com/watch?v=hgoFi0fCv3w]  プロパティを扱っています。もしこれらのプロパティに馴染みがなければ、この記事を読む前にそちらを確認することをおすすめします。 この記事の動画版はこちらです。 画像を横方向で中央に配置する まずは、3 つの異 ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/how-to-center-an-image-in-css/</link>
                <guid isPermaLink="false">63369670292eef06159fbdd8</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Hitomi Kawahara ]]>
                </dc:creator>
                <pubDate>Wed, 26 Oct 2022 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2022/10/5f9c9a4c740569d1a4ca24c2.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/how-to-center-an-image-in-css/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Center an Image Vertically and Horizontally with CSS</a>
      </p><p>多くのデベロッパーは画像の扱いに苦労します。<a href="https://www.freecodecamp.org/news/css-responsive-image-tutorial/">レスポンシブ対応</a>や位置の処理、中でもページの中央に画像を配置することは特に困難です。</p><p>そこで、この投稿では、さまざまな CSS のプロパティを使用して画像を縦と横の両方で中央に配置する方法で最もよく使われるものをお見せします。</p><p>過去の投稿では、CSS の <a href="https://www.freecodecamp.org/news/how-to-use-the-position-property-in-css-to-align-elements-d8f49c403a26/">Position</a> や <a href="https://www.youtube.com/watch?v=hgoFi0fCv3w">Display</a> プロパティを扱っています。もしこれらのプロパティに馴染みがなければ、この記事を読む前にそちらを確認することをおすすめします。</p><p>この記事の動画版はこちらです。</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.25%;" class="fluid-width-video-wrapper">
            <iframe src="https://www.youtube.com/embed/mwVNVxpkly0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" title="Embedded content" loading="lazy" name="fitvid0" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-family: inherit; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-size: 22px; vertical-align: middle; position: absolute; top: 0px; left: 0px; width: 740px; height: 416.25px;"></iframe>
          </div>
        </div>
      </figure><h2 id="-"><strong>画像を横方向で中央に配置する</strong></h2><p>まずは、3 つの異なる CSS プロパティを使用して、画像を横方向で中央に配置することから始めましょう。</p><h3 id="text-align"><strong><strong>Text-Align</strong></strong></h3><p>画像を横方向で中央に配置する最初の方法は、<code>text-align</code> プロパティを使用することです。しかし、この方法は画像が <code>&lt;div&gt;</code> などのブロックレベルコンテナ内に含まれている場合のみ成功します。</p><pre><code class="language-html">&lt;style&gt;
  div {
    text-align: center;
  }
&lt;/style&gt;

&lt;div&gt;
  &lt;img src="your-image.jpg"&gt;
&lt;/div&gt;</code></pre><h3 id="margin-auto"><strong><strong>Margin: Auto</strong></strong></h3><p>画像を中央に配置する別の方法には、<code>margin: auto</code> プロパティを使用することが挙げられます (左右のマージンに対して)。</p><p>しかし、<code>margin: auto</code> プロパティを使用するだけでは、画像に適用できません。<code>margin: auto</code> を使用しなければならない場合、追加で 2 つのプロパティも使用する必要があります。</p><p>margin-auto プロパティはインライン要素に何の効果も発揮しません。<code>&lt;img&gt;</code> タグはインライン要素であるため、ブロックレベル要素に変える必要があります。</p><pre><code class="language-css">img {
  margin: auto;
  display: block;
}</code></pre><p>次に、幅を指定する必要もあります。これにより、左右のマージンが残りの空白スペースを取り、自動整列させることができます。このようにすると (100% の幅を指定しない限り) うまくいきます。</p><pre><code class="language-css">img {
  width: 60%;
  margin: auto;
  display: block;
}</code></pre><h3 id="display-flex"><strong><strong>Display: Flex</strong></strong></h3><p>画像を横方向で中央に配置する 3 つ目の方法は、<code>display: flex</code> プロパティを使用することです。<code>text-align</code> プロパティをコンテナ (外側の要素) に対して使用したように、<code>display: flex</code> もコンテナに対して使用します。</p><p>しかし、<code>display: flex</code> の使用だけでは不十分です、コンテナは <code>justify-content</code> という追加のプロパティを持たなければなりません。</p><pre><code class="language-css">div {
  display: flex;
  justify-content: center;
}

img {
  width: 60%;
}</code></pre><p><code>justify-content</code> プロパティは <code>display: flex</code> と一緒に使われて初めて機能し、画像を中央に配置できます。</p><p>最後に、画像の幅はコンテナの幅より小さくなければなりません。そうでなければ、スペースの 100％ を取り、中央配置することができなくなります。</p><p><strong>重要: </strong><code>display: flex</code> プロパティは古いバージョンのブラウザではサポートされていません。詳しくは<a href="https://caniuse.com/#search=display%20flex">こちら</a>をご覧ください。</p><h2 id="--1"><strong>画像を縦方向で中央に配置する</strong></h2><h3 id="display-flex-1"><strong><strong>Display: Flex</strong></strong></h3><p>縦方向を揃える場合にも、<code>display: flex</code> が非常に便利です。</p><p>コンテナの高さが 800px あるのに対し、画像の高さが 500px しかない場合について考えてみましょう。</p><pre><code class="language-css">div {
  display: flex;
  justify-content: center;
  height: 800px;
}

img {
  width: 60%;
  height: 500px;
}</code></pre><p>この場合、コンテナに <code>align-items: center</code> という 1 行のコードを追加するだけで上手くいきます。</p><pre><code class="language-css">div {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 800px;
}</code></pre><p><code>align-items</code> プロパティは、<code>display: flex</code> と一緒に使用すると、要素を垂直方向に配置できます。</p><h3 id="position-absolute-transform-"><strong>Position: Absolute と Transform プロパティ</strong></h3><p>縦方向を揃えるもう 1 つの方法は、<code>position</code> プロパティと <code>transform</code> プロパティを一緒に使用することです。これは少し複雑なので、順を追って説明しましょう。</p><h3 id="step-1-position-absolute-"><strong><strong>Step 1: </strong>Position プロパティを Absolute に定義する</strong></h3><p>まず、画像の配置動作を <code>static</code> から <code>absolute</code> に変更します。</p><pre><code class="language-css">div {
  height: 800px;
  position: relative;
  background: red;
}

img {
  width: 80%;
  position: absolute;
}</code></pre><p>また、相対配置されたコンテナ内に置く必要があるため、そのコンテナの div に対して <code>position: relative</code> を追加します。</p><h3 id="step-2-top-left-"><strong><strong>Step 2: </strong>Top と Left プロパティを定義する</strong></h3><p>次に、画像の top プロパティと left プロパティを定義し、それらを 50% に設定します。これにより、画像の開始点 (左上) がコンテナの中心に移動します。</p><pre><code class="language-css">img {
  width: 80%;
  position: absolute;
  top: 50%;
  left: 50%;
}</code></pre><h3 id="step-3-transform-"><strong><strong>Step 3: </strong>Transform プロパティを定義する</strong></h3><p>しかし、Step 2 では、画像がコンテナの外に部分的にはみ出てしまいます。それを内側に戻す必要があります。</p><p><code>transform</code> プロパティを定義し、その X 軸と Y 軸に -50% を追加するとうまくいきます。</p><pre><code class="language-css">img {
  width: 80%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}</code></pre><p>水平方向と垂直方向の中央揃えには他にも方法がありますが、最も一般的な方法を説明しました。この投稿が、ページの中央に画像を配置する方法を理解するのに役立つことを願っています。</p><p><strong>Web 開発について詳しく知りたい場合は、お気軽に私の <a href="https://www.youtube.com/channel/UC1EgYPCvKCXFn8HlpoJwY3Q?view_as=subscriber">YouTube チャンネル</a>を見てみてください。</strong></p><p>読んでくれてありがとうございます！</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ HTML の select タグ – ドロップダウンメニュー (コンボリスト) の作成方法 ]]>
                </title>
                <description>
                    <![CDATA[ ユーザーが値を選択できるドロップダウンメニューを作成するには、HTML の select タグを使用します。これは、サーバーに送るデータを収集するのに役立つ機能です。 通常、select タグは form 要素内に置かれ、別のタグ <option> 内に選択肢の項目を置きます。select タグ単独で配置することもできますが、その場合も、特別な属性の一つである form を使用して form 要素と関連付けます。 このチュートリアルでは、コーディングプロジェクトでのデータ収集に使用できるように、select タグでドロップダウンメニューを作成する方法について紹介します。スタイリングが難しいことで有名な select タグのスタイリング方法についても触れます。 Select タグの属性 select タグを使ってドロップダウンメニューを作成する方法を説明する前に、select タグがとる属性について説明しておく必要があります。 以下がその属性です。  * name: サーバーに送信された後にデータを参照するのに使用されるため、form control には全て名前を付ける必要が ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/html-select-tag-how-to-make-a-dropdown-menu-or-combo-list/</link>
                <guid isPermaLink="false">63243fa7bdc7ab0726fce861</guid>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML5 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Hitomi Kawahara ]]>
                </dc:creator>
                <pubDate>Tue, 27 Sep 2022 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2022/09/HTML-select-tag.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/html-select-tag-how-to-make-a-dropdown-menu-or-combo-list/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">HTML Select Tag – How to Make a Dropdown Menu or Combo List</a>
      </p><p>ユーザーが値を選択できるドロップダウンメニューを作成するには、HTML の select タグを使用します。これは、サーバーに送るデータを収集するのに役立つ機能です。</p><p>通常、select タグは form 要素内に置かれ、別のタグ <code>&lt;option&gt;</code> 内に選択肢の項目を置きます。select タグ単独で配置することもできますが、その場合も、特別な属性の一つである <code>form</code> を使用して form 要素と関連付けます。</p><p>このチュートリアルでは、コーディングプロジェクトでのデータ収集に使用できるように、select タグでドロップダウンメニューを作成する方法について紹介します。スタイリングが難しいことで有名な select タグのスタイリング方法についても触れます。</p><h2 id="select-"><strong>Select タグの属性</strong></h2><p>select タグを使ってドロップダウンメニューを作成する方法を説明する前に、select タグがとる属性について説明しておく必要があります。</p><p>以下がその属性です。</p><ul><li>name: サーバーに送信された後にデータを参照するのに使用されるため、form control には全て名前を付ける必要があります。</li><li>multiple: この属性により、ユーザーはドロップダウンメニューから複数のオプションを選択できます。</li><li>required: 通常、検証に使用されます。これにより、ユーザーがドロップダウンから少なくとも一つのオプションを選択しない限り、フォームは送信されません。</li><li>disabled: この属性により、ユーザーはオプションを操作できなくなります。</li><li>size: 数値で表される size 属性は、一度に表示されるオプションの数を指定するために使用されます。</li><li>autofocus: この属性は、select を含むすべてのフォーム入力で使用され、ページの読み込み時に入力がフォーカスされるように指定します。</li></ul><h2 id="select--1"><strong>Select タグを使ってドロップダウンメニューを作成する方法</strong></h2><p>select タグを使ってドロップダウンメニューを作成するには、まず form 要素が必要です。なぜなら、データをサーバーに送信するためには、form 要素内に送信ボタン (submit) も必要になるからです。</p><pre><code class="language-html">&lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><p>この例では、ドロップダウンとボタンを中央揃えにし、body の背景をライトグレーにするための簡単な CSS を追加します。</p><pre><code class="language-css">body {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
     height: 100vh;
     background-color: #f1f1f1;
   }

input {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
   }</code></pre><p>より洗練され、アクセスしやすいものにするために、セレクトボックスを label 要素と関連付け、label テキストをクリックしたときにフォーカスするようにすることもできます。次のコードでそれを実現できます。</p><pre><code class="language-html">&lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><p>送信ボタンをクリックしたときに 404 エラーが表示されないように、action 属性の値として番号記号 (#) を入力します。</p><p>そして、CSS を少し変更する必要があります。</p><pre><code class="language-css"> body {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
     height: 100vh; 
     background-color: #f1f1f1;
   }

input {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
   }

label {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
   }

select {
     margin-bottom: 10px;
     margin-top: 10px;
   }</code></pre><p>最終的に次のような結果が得られます。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/select-one-2.gif" class="kg-image" alt="select-one-2" width="600" height="321" loading="lazy"></figure><p>これで終わりではありません。ページを開いてすぐ送信ボタンをクリックした場合、ドロップダウン項目のうちの一つがデフォルトで表示されており、選択されてしまいます。</p><p>しかし、ユーザーエクスペリエンスの観点から、これは好ましくありません。「言語を選択 (select a language)」をドロップダウンの最初の項目に設定することで、これを避けることができます。</p><pre><code class="language-html"> &lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;option value="select"&gt;Select a language&lt;/option&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><p>また、ユーザーが項目を選択するためにセレクトボックスをクリックするときも、ドロップダウンが送信ボタンに重なって表示されます。これもユーザーエクスペリエンスを低下させる原因になり得ます。</p><p>これを解決するには、ドロップダウン内にデフォルトで決まった数の項目を表示し、その他の項目をスクロール表示するようにする <code>size</code> 属性が使用できます。</p><p>これにより、一部の項目が自動的にユーザーに表示されるため、ダミーの最初の項目を取り除くこともできます。</p><pre><code class="language-html"> &lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang" size="4"&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/select-two-2.gif" class="kg-image" alt="select-two-2" width="600" height="321" loading="lazy"></figure><p><code>multiple</code> 属性を使用すると、ユーザーがドロップダウンから複数の項目を選択できるようになります。</p><pre><code class="language-html"> &lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang" multiple&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><p><code>multiple</code> 属性により、デフォルトで四つの項目が表示されます。複数の項目を選択するには、Shift キーまたは Ctrl キーを押しながらマウスで選択する必要があります。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/select-three-2.gif" class="kg-image" alt="select-three-2" width="600" height="321" loading="lazy"></figure><p>select タグと <code>&lt;option&gt;</code> タグでできることはこれだけではありません。<code>&lt;select&gt;</code> タグ内に <code>&lt;optgroup&gt;</code> 要素を使用して、複数階層のセレクトボックスを作成することもできます。</p><p>次のように、先ほど作成したドロップダウンを複数階層のセレクトボックスに変換できます。</p><pre><code class="language-html">&lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;optgroup label="first-choice"&gt;
          &lt;option value="select"&gt;Select a language&lt;/option&gt;
          &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
          &lt;option value="php"&gt;PHP&lt;/option&gt;
          &lt;option value="java"&gt;Java&lt;/option&gt;
          &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;/optgroup&gt;
        &lt;optgroup label="second-choice"&gt;
          &lt;option value="python"&gt;Python&lt;/option&gt;
          &lt;option value="c#"&gt;C#&lt;/option&gt;
          &lt;option value="C++"&gt;C++&lt;/option&gt;
          &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
        &lt;/optgroup&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/multi-select-1.png" class="kg-image" alt="multi-select-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/09/multi-select-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/09/multi-select-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2022/09/multi-select-1.png 1280w" sizes="(min-width: 720px) 720px" width="1280" height="800" loading="lazy"></figure><h2 id="select--2"><strong>Select 要素をスタイリングする方法</strong></h2><p>select 要素のスタイル設定は分かり辛く、ブラウザー内での表示方法も一貫しないことが多いです。しかし、次のような設定を試してみることもできます。</p><pre><code class="language-html"> &lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;option value="select"&gt;Select a Language&lt;/option&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><pre><code class="language-css"> select {
        margin-bottom: 10px;
        margin-top: 10px;
        font-family: cursive, sans-serif;
        outline: 0;
        background: #2ecc71;
        color: #fff;
        border: 1px solid crimson;
        padding: 4px;
        border-radius: 9px;
      }</code></pre><p>上記の CSS コードスニペットでは、セレクトボックス内のテキストに次の外観を付与しました。</p><ul><li>フォントファミリー「cursive」と色「白」</li><li>アウトライン「0」: フォーカスされたときの不恰好なアウトラインを削除</li><li>背景「緑色」</li><li>境界線「1px、深紅色」</li><li>境界半径「4px」: 全辺にわずかに丸みを帯びた境界線を付与</li><li>パディング「4px」: 少し間隔を空ける</li></ul><p>これによりセレクトボックスの見栄えが良くなりました。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/select-styled-1.gif" class="kg-image" alt="select-styled-1" width="600" height="358" loading="lazy"></figure><h2 id="-"><strong>結論</strong></h2><p>select タグは、HTML でドロップダウンやコンボリストを作成する場合に非常に便利です。ラジオボタンとチェックボックスを一つのパッケージにまとめたようなものです。</p><p>ラジオボタンではリストから一つの項目しか選択できませんが、チェックボックスでは複数の項目を選択できることを覚えているでしょうか。select は、単一のアイテムのみまたは複数のアイテムを受け付けるようにも設定できるため、より柔軟です。</p><p>select タグの問題の一つは、スタイルが非常に難しいことです。合理的な解決策は、優れたユーティリティ クラスを提供する CSS ライブラリを使用して、select 要素やフォームのスタイルを設定することです。</p><p>このチュートリアルで select タグに慣れ、プロジェクトで使用できるようになったのであれば嬉しいです。</p><p>読んでいただきありがとうございます。引き続きコーディング頑張ってください。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ HTML と Body: フルページ表示のために適切な幅と高さの CSS 設定 ]]>
                </title>
                <description>
                    <![CDATA[ CSS は難しいですが、自由度も高いです。そして、この高い自由度のおかげで、たとえ行き当たりばったりでもスタイルを適用することができます。 ページは一見問題なく読み込まれます。「クラッシュ」もしません。 ではページ全体の幅と高さを設定したい場合、HTML 要素にどのような設定をすればいいか分かりますか。body 要素についてはどうでしょう。 上手くいくことを願いながらただ当てずっぽうにスタイルを適用していませんか。 もしそうであっても、あなたは一人じゃありません。 これらの質問に対する答えは直感的ではないのですから。 私自身、どのプロパティをどの要素に適用すべきかを正確に把握せずに、両方の要素にスタイルを適用していたという罪深い過去があります。🤦‍♂️ 次の例のように、CSS プロパティが HTML と body の両方の要素に適用されていることは珍しくありません。 html, body {      min-height: 100%; } それって問題なの？ はい、かなり問題です。 上のスタイル定義は以下のような問題を引き起こします。 両方の要素の min-h ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/html-page-width-height/</link>
                <guid isPermaLink="false">632052d987a3a3073e97ed3d</guid>
                
                    <category>
                        <![CDATA[ PROGRAMMING ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML5 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Hitomi Kawahara ]]>
                </dc:creator>
                <pubDate>Sun, 18 Sep 2022 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2022/09/william-warby-WahfNoqbYnM-unsplash--1-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/html-page-width-height/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">HTML vs Body: How to Set Width and Height for Full Page Size</a>
      </p><p>CSS は難しいですが、自由度も高いです。そして、この高い自由度のおかげで、たとえ行き当たりばったりでもスタイルを適用することができます。</p><p>ページは一見問題なく読み込まれます。「クラッシュ」もしません。</p><p>ではページ全体の幅と高さを設定したい場合、HTML 要素にどのような設定をすればいいか分かりますか。body 要素についてはどうでしょう。</p><p>上手くいくことを願いながらただ当てずっぽうにスタイルを適用していませんか。</p><p>もしそうであっても、あなたは一人じゃありません。</p><p>これらの質問に対する答えは直感的ではないのですから。</p><p>私自身、どのプロパティをどの要素に適用すべきかを正確に把握せずに、両方の要素にスタイルを適用していたという罪深い過去があります。🤦‍♂️</p><p>次の例のように、CSS プロパティが HTML と body の両方の要素に適用されていることは珍しくありません。</p><pre><code>html, body {
     min-height: 100%;
}</code></pre><h2 id="-"><strong>それって問題なの？</strong></h2><p>はい、かなり問題です。</p><p>上のスタイル定義は以下のような問題を引き起こします。</p><p>両方の要素の min-height (最小の高さ) を 100% に設定しても、body 要素はページ全体を埋めるようになりません。これは思っていた動作と異なるかと思います。結果として表示されたスタイルの値を開発ツールで確認してみれば、body 要素の高さがゼロになっていることが分かるでしょう。</p><p>一方で、HTML 要素はブラウザーの表示領域と同じ高さになっています。</p><p>次の Chrome Dev Tools のスクリーンショットを見てください。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/empty_body-3.png" class="kg-image" alt="empty_body-3" width="596" height="280" loading="lazy"><figcaption>body 要素には、上部のバーで示された初期値 8px のマージンがあります。 高さの値はゼロです。</figcaption></figure><h2 id="--1"><strong>なぜこんなことが起こるの？</strong></h2><p>パーセンテージをサイズの値として使用する場合、その要素はパーセンテージの基準として親要素を参照します。</p><p>HTML 要素は、目に見える表示領域の高さを高さ値として持つビューポートを参照します。しかし、上の例では HTML 要素の min-height を設定しているだけで、height プロパティの値は設定していません。</p><p>したがって、body 要素には、100% が何に等しいかの基準として参照する親の height 値がないことになります。</p><h2 id="--2"><strong>そして、問題は目に見えないかも</strong></h2><p>もし、ページを埋め尽くすほどのコンテンツがあった場合、この問題には気付かないかもしれません。</p><p>そして、より気付きにくくなる原因として、両方あるいは片方の要素に背景色を設定した場合、ビューポートはその色で埋め尽くされます。これによって、body 要素がビューポートと同じ高さを持つと錯覚してしまうのです。</p><p>それは間違いで、高さはゼロのままです。</p><p>先ほどの画像は次の CSS で表示されたものです。</p><pre><code>html, body {
    min-height: 100%;
}
body { background-color: dodgerblue; }</code></pre><h3 id="--3"><strong>逆継承？</strong></h3><p>奇妙な現象ではありますが、もし HTML 要素の背景色を個別に設定しない場合、HTML 要素には body 要素の背景色が適用されます。</p><h2 id="--4">では、レスポンシブなフルページの理想的な高さ設定は？</h2><p>何年もの間、答えは次の通りでした。</p><pre><code>html {
    height: 100%;
}
body {
    min-height: 100%;
}</code></pre><p>これにより HTML 要素は親となるビューポートを参照し、ビューポートの高さの 100% に等しい height の値を持つことができます。</p><p>HTML 要素に height 値が設定されたことで、body 要素に割り当てられた min-height は、body 要素の最小の高さを HTML 要素の高さと同じにします。</p><p>この設定はまた、コンテンツがページの見えている部分より大きい場合に、あわせて body の高さを大きくすることもできます。</p><p>唯一の欠点は、HTML 要素は見えているビューポートの高さを超えて大きくならないことです。ただし、body 要素が HTML 要素を超えて大きくなることは問題ないと考えられてきました。</p><h2 id="--5">最新の解決策はもっと簡潔です</h2><pre><code>body { min-height: 100vh; }</code></pre><p>この例では、単位 <code>vh</code> (viewport height) を使用することで、body がビューポートの全高に基づいて高さの最小値を設定できるようにしています。</p><p>先ほど述べた背景色と同じように、HTML 要素に height 値を設定しない場合、body 要素に与えられた height 値と等しい値が採用されます。</p><p>したがって、この解決策であれば以前の解決策の欠点であった HTML 要素のオーバーフローが回避され、両方の要素がコンテンツと共に大きくなります！</p><p>単位 <code>vh</code> の使用は、過去には一部のモバイル端末で異常をきたすこともありましたが、<a href="https://developers.google.com/web/updates/2016/12/url-bar-resizing">現在では Chrome と Safari ではビューポート単位は正常に動作するようです</a>。</p><h2 id="--6">ページの高さによっては水平スクロールバーが表示されることがあります</h2><p>えっ、どういうこと？</p><p>「ページ幅」じゃなくて？</p><p>いいえ、違います。</p><p>別の奇妙な現象として、ページの高さがブラウザーの水平スクロールバーをアクティブにする場合があります。</p><p>ページのコンテンツがビューポートの高さを超えると、右側の垂直スクロールバーがアクティブになります。これによって、同時に水平スクロールバーが表示される可能性があります。</p><h2 id="--7"><strong>どうやって修正するの？</strong></h2><p>ページ幅設定が原因であることを知っておくと安心かもしれません。</p><p>この問題は HTML 要素や body 要素だけでなく、要素を 100vw (viewport width) 単位に設定することに起因します。</p><p>ビューポート単位は垂直スクロールバーが占める約 10px の幅を考慮していません。</p><p>したがって、垂直スクロールバーがアクティブになると水平スクロールバーも表示されることがあるのです。</p><h2 id="--8"><strong>ページをフル幅に設定する方法</strong></h2><p>設定しないというのも一つの方法です。</p><p>HTML 要素と body 要素に幅を設定しない場合のデフォルトは画面全体のサイズになります。width の値を auto 以外に設定するときには、初めに CSS をリセットするようにしましょう。</p><p>デフォルトで、body 要素の全サイドのマージンが 8px に設定されていることを覚えていますか。</p><p>CSS リセットにより、これが削除されます。マージンを削除する前に幅を 100% に設定すると body 要素のオーバーフローを引き起こします。私がよく使う CSS リセットは次のコードです。</p><pre><code>* { 
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}</code></pre><h2 id="--9"><strong>好みの幅に設定する方法</strong></h2><p>必ずしも幅を設定する必要はありませんが、通常、私は設定するようにしています。</p><p>単なる癖かもしれません。</p><p>body 要素の幅を 100% に設定すると、ページ全体の幅になります。これは基本的に、幅の値を設定せずにデフォルトを許可することと同じです。</p><p>body 要素を小さなコンテナとして使用し、HTML 要素でページを埋めたい場合は、body に幅の最大値を設定することもできます。</p><p>例えば次のように設定できます。</p><pre><code>html { background-color: #000; } 
body {
    min-height: 100vh;
    max-width: 400px;
    background-color: papayawhip; 
    margin: 0 auto;
}</code></pre><h2 id="--10"><strong>結論</strong></h2><p>HTML 要素に height 値がない場合、body 要素の height や min-height を 100% に設定しても (コンテンツを追加する前は) 高さはゼロになります。</p><p>一方、HTML 要素に width 値がない場合は、body 要素の width を 100% に設定すると幅はフルページの幅になります。</p><p>これは直感に反するため、混乱するかもしれません。</p><p>レスポンシブなフルページの高さを実現するには、body 要素の min-height を 100vh に設定しましょう。</p><p>ページ幅を設定する場合、水平スクロールバーが意図せず表示されることを避けるため、100vw よりも 100% を選択しましょう。</p><p>私の YouTube チャンネルのチュートリアルでは、全画面サイズかつコンテンツと共に拡大する HTML ページ作成のために、CSS の高さと幅をどのように設定すればよいかを実際に再現しながら紹介しています。</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/dpuKVjX6BJ8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" title="HTML Page Width and Height Settings | CSS Full Screen Size" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><p>CSS の幅と高さを設定する他の方法を知っていますか？</p><p>‌ぜひ教えてください！</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 基本の HTML5 テンプレート: ウェブ開発プロジェクトを始める際に便利な HTML ボイラープレートを紹介 ]]>
                </title>
                <description>
                    <![CDATA[ 新しくウェブサイトを開設する際、基礎が固まっていることは重要です。この記事では、HTML 5 ボイラープレートとは何か、そして基本のテンプレートをどのようにして作成するかについて解説します。 HTML 5 ボイラープレートとは？ ウィキペディア [https://ja.wikipedia.org/wiki/%E3%83%9C%E3%82%A4%E3%83%A9%E3%83%BC%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89] では次のように定義されています。 > ボイラープレートコード (英: boilerplate code、または単にボイラープレート) は、コンピュータプログラミングでは、殆ど、または全く変化することなく、複数の場所で繰り返される定型コードのセクションのこと。 HTML におけるボイラープレートとは、プロジェクト開始時に追加するテンプレートのことを指します。HTML ページの作成には必ずボイラープレートを使用するようにしましょう。 HTML 5 ボイラープレートの例 基本的な例がこ ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/basic-html5-template-boilerplate-code-example/</link>
                <guid isPermaLink="false">631d6fec87a3a3073e97e74b</guid>
                
                    <category>
                        <![CDATA[ HTML5 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Hitomi Kawahara ]]>
                </dc:creator>
                <pubDate>Wed, 14 Sep 2022 11:31:46 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2022/09/jackson-so-_t-l5FFH8VA-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/basic-html5-template-boilerplate-code-example/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Basic HTML5 Template: Use This HTML Boilerplate as a Starter for Any Web Dev Project</a>
      </p><p>新しくウェブサイトを開設する際、基礎が固まっていることは重要です。この記事では、HTML 5 ボイラープレートとは何か、そして基本のテンプレートをどのようにして作成するかについて解説します。</p><h2 id="html-5-"><strong>HTML 5 ボイラープレートとは？</strong></h2><p><a href="https://ja.wikipedia.org/wiki/%E3%83%9C%E3%82%A4%E3%83%A9%E3%83%BC%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89">ウィキペディア</a>では次のように定義されています。</p><blockquote><strong>ボイラープレートコード</strong> (英: boilerplate code、または単に<strong>ボイラープレート</strong>) は、コンピュータプログラミングでは、殆ど、または全く変化することなく、複数の場所で繰り返される定型コードのセクションのこと。</blockquote><p>HTML におけるボイラープレートとは、プロジェクト開始時に追加するテンプレートのことを指します。HTML ページの作成には必ずボイラープレートを使用するようにしましょう。</p><h2 id="html-5--1"><strong>HTML 5 ボイラープレートの例</strong></h2><p>基本的な例がこちら。</p><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
  &lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&gt;
    &lt;title&gt;HTML 5 Boilerplate&lt;/title&gt;
    &lt;link rel="stylesheet" href="style.css"&gt;
  &lt;/head&gt;
  &lt;body&gt;
	&lt;script src="index.js"&gt;&lt;/script&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre><h3 id="html-"><strong>HTML の文書型とは？</strong></h3><p>HTML コードの一番最初の行では、文書型宣言を行う必要があります。文書型宣言によって、ブラウザはウェブページがどのようなバージョンの HTML で書かれているか認識することができます。</p><pre><code class="language-html">&lt;!DOCTYPE html&gt;</code></pre><p>もし、この一番最初の行を忘れてしまうと、 <code>&lt;article&gt;</code> <code>&lt; footer &gt;</code> <code>&lt;header&gt;</code> などの HTML 5 タグがブラウザによって認識されない可能性があります。</p><h3 id="html--1"><strong>HTML ルート要素とは？</strong></h3><p><code>&lt;html&gt;</code> タグは HTML ファイルの最上位要素です。その中に、<code>&lt;head&gt;</code> と <code>&lt;body&gt;</code> をネストします。</p><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
  &lt;head&gt;&lt;/head&gt;
  &lt;body&gt;&lt;/body&gt;
&lt;/html&gt;</code></pre><p>開始タグ <code>&lt;html&gt;</code> 内の <code>lang</code> 属性は、ページで使用する言語を設定します。スクリーンリーダーが文字を正しく発音できるようにする、といったアクセシビリティの観点からも言語の設定は大切です。</p><h3 id="html--2"><strong>HTML のヘッダータグとは？</strong></h3><p><code>&lt;head&gt;</code> タグには機械によって処理される情報を含めます。<code>&lt;head&gt;</code> タグの中には、機械に対して文書そのものの情報を提示する「メタデータ」をネストします。</p><pre><code class="language-html">&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&gt;
    &lt;title&gt;HTML 5 Boilerplate&lt;/title&gt;
    &lt;link rel="stylesheet" href="style.css"&gt;
&lt;/head&gt;</code></pre><h3 id="utf-8-"><strong>UTF-8 文字エンコーディングとは?</strong></h3><p>UTF-8 は、ウェブページで使用すべき標準的な文字エンコーディングです。これは <code>&lt;head&gt;</code> 要素の中の <code>&lt;meta&gt;</code> タグで最初に表示する必要があります。</p><pre><code class="language-html"> &lt;meta charset="UTF-8"&gt;</code></pre><p><a href="https://www.w3.org/International/questions/qa-choosing-encodings">World Wide Web Consortium</a> によると、</p><blockquote>A Unicode-based encoding such as UTF-8 can support many languages and can accommodate pages and forms in any mixture of those languages. Its use also eliminates the need for server-side logic to individually determine the character encoding for each page served or each incoming form submission.</blockquote><blockquote>UTF-8 などの Unicode ベースのエンコーディングは、多くの言語をサポートし、それらの言語が混在するページやフォームに対応できます。 また、これを使用すると、サーバー側のロジックにより、提供される各ページまたは受信フォーム送信ごとに文字エンコードを個別に決定する必要がなくなります。（英文を翻訳）</blockquote><h3 id="html--3"><strong>HTML のビューポートタグとは？</strong></h3><p>このタグはデバイスの画面サイズに対するページの幅を与えます。例えば、モバイル端末の幅が 600px の場合、ブラウザのウィンドウの幅も 600px になります。</p><p>initial-scale はズーム度合いをコントロールします。initial-scale の値が 1 の場合、ブラウザによるデフォルトのズームが防止されます。</p><pre><code class="language-html">    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
</code></pre><h3 id="x-ua-compatible-"><strong>X-UA-Compatible とは？</strong></h3><p>この <code>&lt;meta&gt;</code> タグは、Internet Explorer の文書モードを指定します。 <code>IE=edge</code> は、サポートされている最高のモードです。</p><pre><code class="language-html">    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&gt;
</code></pre><h3 id="html--4"><strong>HTML タイトルタグとは？</strong></h3><p><code>&lt;title&gt;</code> タグはウェブページのタイトルを指定します。このテキストは、ブラウザのタイトルバーに表示されます。</p><pre><code class="language-html">    &lt;title&gt;HTML 5 Boilerplate&lt;/title&gt;
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/Screen-Shot-2021-07-30-at-4.15.25-AM.png" class="kg-image" alt="Screen-Shot-2021-07-30-at-4.15.25-AM" width="470" height="108" loading="lazy"></figure><h3 id="css-"><strong>CSS スタイルシート</strong></h3><p>このコードにより、カスタムの CSS を HTML ページにリンクすることができます。<code>rel="stylesheet"</code> によって、HTML ファイルと外部スタイルシートの関係性を定義します。</p><pre><code class="language-html">    &lt;link rel="stylesheet" href="style.css"&gt;
</code></pre><h3 id="html--5"><strong>HTML のスクリプトタグ</strong></h3><p>外部スクリプトタグは body の終了タグの直前に配置されます。ここで外部の JavaScript コードをリンクすることができます。</p><pre><code class="language-html">	&lt;script src="index.js"&gt;&lt;/script&gt;
</code></pre><h2 id="-"><strong>結論</strong></h2><p>HTML 5 ボイラープレートを HTML ページに追加するようにしましょう。このスターターコードには文書型、メタデータ、外部スタイルシート、スクリプトタグ等の重要な情報が含まれています。</p><p><br></p><p><br></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ JavaScript オブジェクトの配列 – 配列のメソッドを使ってオブジェクトを追加、更新、ループする方法のチュートリアル ]]>
                </title>
                <description>
                    <![CDATA[ 筆者は毎週だいたい 18 回くらいは JSON データを扱うことがあると思います。それでもまだ、目的に合わせてデータを操作する方法をほぼ毎回 Google で検索しています。その答えが常に見つかるような究極のガイドがあれば良いと思いませんか？ この記事では、JavaScript でオブジェクトの配列を操作するための基本を紹介します。 JSON 形式のデータを使用したことがあれば、JavaScript オブジェクトを使用したことがあると言えるでしょう。JSON とは JavaScript Object Notation の略です。 オブジェクトの作成はとてもシンプルです。次のように書くだけです。 {   "color": "purple",   "type": "minivan",   "registration": new Date('2012-02-03'),   "capacity": 7 } 上記のオブジェクトは車を表現しています。車にはさまざまな種類や色があり、各オブジェクトは特定の車を表します。 さて、多くの場合、このようなデータを外部のサービスから取得します。 ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/javascript-array-of-objects-tutorial-how-to-create-update-and-loop-through-objects-using-js-array-methods/</link>
                <guid isPermaLink="false">626968951de492050fdb4468</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JSON ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ まつだようこ ]]>
                </dc:creator>
                <pubDate>Sun, 22 May 2022 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2022/04/js-tutorial-cover.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/javascript-array-of-objects-tutorial-how-to-create-update-and-loop-through-objects-using-js-array-methods/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">JavaScript Array of Objects Tutorial – How to Create, Update, and Loop Through Objects Using JS Array Methods</a>
      </p><p>筆者は毎週だいたい 18 回くらいは JSON データを扱うことがあると思います。それでもまだ、目的に合わせてデータを操作する方法をほぼ毎回 Google で検索しています。その答えが常に見つかるような究極のガイドがあれば良いと思いませんか？</p><p>この記事では、JavaScript でオブジェクトの配列を操作するための基本を紹介します。</p><p>JSON 形式のデータを使用したことがあれば、JavaScript オブジェクトを使用したことがあると言えるでしょう。JSON とは JavaScript Object Notation の略です。</p><p>オブジェクトの作成はとてもシンプルです。次のように書くだけです。</p><pre><code class="language-js">{
  "color": "purple",
  "type": "minivan",
  "registration": new Date('2012-02-03'),
  "capacity": 7
}
</code></pre><p>上記のオブジェクトは車を表現しています。車にはさまざまな種類や色があり、各オブジェクトは特定の車を表します。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/04/purple.png" class="kg-image" alt="purple" width="124" height="68" loading="lazy"></figure><p>さて、多くの場合、このようなデータを外部のサービスから取得します。しかし、オブジェクトとその配列を自身で作成することもあるでしょう。筆者がこのオンラインショップを作成した時もそうでした。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/04/categories.jpg" class="kg-image" alt="categories" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/04/categories.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/04/categories.jpg 1000w, https://www.freecodecamp.org/japanese/news/content/images/2022/04/categories.jpg 1118w" sizes="(min-width: 720px) 720px" width="1118" height="513" loading="lazy"></figure><p>このカテゴリー一覧の各アイテムが、HTML で書くと下記のようになっていると考えてみてください。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/04/code.jpg" class="kg-image" alt="code" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/04/code.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/2022/04/code.jpg 696w" width="696" height="322" loading="lazy"></figure><p>このコードを 12 回繰り返して書きたくはありませんでした。メンテナンスが困難になるからです。</p><h2 id="-">オブジェクトの配列を作成する</h2><p>では車の例に戻りましょう。この車のセットを見てください。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/04/cars.jpg" class="kg-image" alt="cars" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/04/cars.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/2022/04/cars.jpg 800w" sizes="(min-width: 720px) 720px" width="800" height="111" loading="lazy"></figure><p>これは、次のように配列で表現することができます。</p><pre><code class="language-js">let cars = [
  {
    "color": "purple",
    "type": "minivan",
    "registration": new Date('2017-01-03'),
    "capacity": 7
  },
  {
    "color": "red",
    "type": "station wagon",
    "registration": new Date('2018-03-03'),
    "capacity": 5
  },
  {
    ...
  },
  ...
]
</code></pre><p>オブジェクトの配列は、ずっと同じ状態とは限りません。ほとんどの場合、何かしらの操作をする必要が出てきます。では、既存の配列にオブジェクトを追加する方法を見てみましょう。</p><h3 id="-array-unshift">オブジェクトを最初に追加する - Array.unshift</h3><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/04/beginning.jpg" class="kg-image" alt="beginning" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/04/beginning.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/2022/04/beginning.jpg 1000w" sizes="(min-width: 720px) 720px" width="1000" height="180" loading="lazy"></figure><p>配列の最初の位置にオブジェクトを追加するには、<code>Array.unshift</code> を使用します。</p><pre><code class="language-js">let car = {
  "color": "red",
  "type": "cabrio",
  "registration": new Date('2016-05-02'),
  "capacity": 2
}
cars.unshift(car);
</code></pre><h3 id="-array-push">オブジェクトを最後に追加する - Array.push</h3><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/04/ending.jpg" class="kg-image" alt="ending" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/04/ending.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/2022/04/ending.jpg 1000w" sizes="(min-width: 720px) 720px" width="1000" height="180" loading="lazy"></figure><p>配列の最後の位置にオブジェクトを追加するには、<code>Array.push</code> を使用します。</p><pre><code class="language-js">let car = {
 "color": "red",
 "type": "cabrio",
 "registration": new Date('2016-05-02'),
 "capacity": 2
}
cars.push(car);
</code></pre><h3 id="-array-splice">オブジェクトを途中に追加する - Array.splice</h3><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/04/middle.jpg" class="kg-image" alt="middle" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/04/middle.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/2022/04/middle.jpg 1000w" sizes="(min-width: 720px) 720px" width="1000" height="180" loading="lazy"></figure><p>配列の途中の位置にオブジェクトを追加するには、<code>Array.splice</code> を使用します。この関数はアイテムを取り除くこともできるため、とても便利です。引数の取り方には少し注意が必要かもしれません。</p><pre><code class="language-js">Array.splice(
  {変更の開始位置のインデックス},
  {取り除くアイテムの数},
  {追加するアイテム}
);
</code></pre><p>したがって、赤いフォルクスワーゲンのカブリオ (Cabrio、オープンカー) を 5 番目の位置に追加したい場合には、次のようになります。</p><pre><code class="language-js">let car = {
  "color": "red",
  "type": "cabrio",
  "registration": new Date('2016-05-02'),
  "capacity": 2
}
cars.splice(4, 0, car);
</code></pre><h2 id="--1">オブジェクトの配列をループして操作する</h2><p>ここで質問があります。あなたはなぜオブジェクトの配列をループしたいのでしょうか？</p><p>なぜそのようなことを聞くかというと、ループすること自体が最終的に達成したい目的であることはほとんどないからです。</p><p>JavaScript では、ループを使って自分でロジックを実装しなくても問題を解決できるように多くの関数が用意されています。では見ていきましょう。</p><h3 id="-array-find">配列内のオブジェクトを値で検索する - Array.find</h3><p>例として、赤い車を見つけたいとしましょう。そのためには <code>Array.find</code> という関数を使うことができます。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/04/cars-colorred.jpg" class="kg-image" alt="cars-colorred" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/04/cars-colorred.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/2022/04/cars-colorred.jpg 800w" sizes="(min-width: 720px) 720px" width="800" height="230" loading="lazy"></figure><pre><code class="language-js">let car = cars.find(car =&gt; car.color === "red");
</code></pre><p>この関数は最初に一致した要素を 1 つ返します。</p><pre><code class="language-js">console.log(car);
// 出力:
// {
//   color: 'red',
//   type: 'station wagon',
//   registration: 'Sat Mar 03 2018 01:00:00 GMT+0100 (GMT+01:00)',
//   capacity: 5
// }
</code></pre><p>また、複数の値を条件にして検索することもできます。</p><pre><code class="language-js">let car = cars.find(car =&gt; car.color === "red" &amp;&amp; car.type === "cabrio");</code></pre><p>この例では配列内の最後の車が取得されます。</p><h3 id="-array-filter">配列から条件に当てはまる複数のオブジェクトを取得する - Array.filter</h3><p><code>Array.find</code> 関数はオブジェクトを 1 つだけ返す関数でした。赤い車をすべて取得したい場合には <code>Array.filter</code> を使う必要があります。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/04/cars-colorred2.jpg" class="kg-image" alt="cars-colorred2" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/04/cars-colorred2.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/2022/04/cars-colorred2.jpg 800w" sizes="(min-width: 720px) 720px" width="800" height="230" loading="lazy"></figure><pre><code class="language-js">let redCars = cars.filter(car =&gt; car.color === "red");
console.log(redCars);
// 出力:
// [
//   {
//     color: 'red',
//     type: 'station wagon',
//     registration: 'Sat Mar 03 2018 01:00:00 GMT+0100 (GMT+01:00)',
//     capacity: 5
//   },
//   {
//     color: 'red',
//     type: 'cabrio',
//     registration: 'Sat Mar 03 2012 01:00:00 GMT+0100 (GMT+01:00)',
//     capacity: 2
//   }
// ]
</code></pre><h3 id="-array-map">配列内のオブジェクトを変換する - Array.map</h3><p>これはよく必要になる操作です。あるオブジェクトの配列を異なるオブジェクトの配列へと変換します。これは <code>Array.map</code> の役割です。では、車をサイズに基づいて 3 つのグループに分類する例を考えましょう。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/04/cars-sizes.jpg" class="kg-image" alt="cars-sizes" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/04/cars-sizes.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/2022/04/cars-sizes.jpg 800w" sizes="(min-width: 720px) 720px" width="800" height="300" loading="lazy"></figure><pre><code class="language-js">let sizes = cars.map(car =&gt; {
  if (car.capacity &lt;= 3){
    return "small";
  }
  if (car.capacity &lt;= 5){
    return "medium";
  }
  return "large";
});
console.log(sizes);
// 出力:
// ['large','medium','medium', ..., 'small']
</code></pre><p>サイズ以外の値も必要であれば、新しいオブジェクトを作成することも可能です。</p><pre><code class="language-js">let carsProperties = cars.map(car =&gt; {
 let properties = {
   "capacity": car.capacity,
   "size": "large"
 };
 if (car.capacity &lt;= 5){
   properties['size'] = "medium";
 }
 if (car.capacity &lt;= 3){
   properties['size'] = "small";
 }
 return properties;
});
console.log(carsProperties);
// 出力:
// [
//   { capacity: 7, size: 'large' },
//   { capacity: 5, size: 'medium' },
//   { capacity: 5, size: 'medium' },
//   { capacity: 2, size: 'small' },
//   ...
// ]
</code></pre><h3 id="-array-foreach">配列内の全オブジェクトにプロパティを追加する - Array.forEach</h3><p>では、車にサイズの情報を追加したい場合はどうしますか？その場合、元のオブジェクトに新しいプロパティ <code>size</code> を追加して拡張できます。これは <code>Array.forEach</code> 関数が役に立つ場面です。</p><pre><code class="language-js">cars.forEach(car =&gt; {
 car['size'] = "large";
 if (car.capacity &lt;= 5){
   car['size'] = "medium";
 }
 if (car.capacity &lt;= 3){
   car['size'] = "small";
 }
});
</code></pre><h3 id="-array-sort">配列をプロパティでソートする - Array.sort</h3><p>オブジェクトの変換が完了したら、次はオブジェクトを何らかの方法で並べ替えたいことがよくあります。</p><p>ソートは通常、すべてのオブジェクトが持っているプロパティの値に基づいて行います。ソートには <code>Array.sort</code> 関数が使用できますが、並べ替えのメカニズムを定義する関数を用意する必要があります。</p><p>例えば車を定員 (capacity) に基づいて降順に並べ替えたいとしましょう。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/04/cars-sort.jpg" class="kg-image" alt="cars-sort" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/04/cars-sort.jpg 600w, https://www.freecodecamp.org/japanese/news/content/images/2022/04/cars-sort.jpg 800w" sizes="(min-width: 720px) 720px" width="800" height="250" loading="lazy"></figure><pre><code class="language-js">let sortedCars = cars.sort((c1, c2) =&gt; (c1.capacity &lt; c2.capacity) ? 1 : (c1.capacity &gt; c2.capacity) ? -1 : 0);
console.log(sortedCars);
// 出力:
// [
//   {
//     color: 'purple',
//     type: 'minivan',
//     registration: 'Wed Feb 01 2017 00:00:00 GMT+0100 (GMT+01:00)',
//     capacity: 7
//   },
//   {
//     color: 'red',
//     type: 'station wagon',
//     registration: 'Sat Mar 03 2018 01:00:00 GMT+0100 (GMT+01:00)',
//     capacity: 5
//   },
//   ...
// ]
</code></pre><p><code>Array.sort</code> は、2 つのオブジェクトを比較し、もし並べ替え用の関数の実行結果が正の数であれば、1 番目のオブジェクトを 2 番目の位置に動かします。つまり、並べ替え用の関数は「1 番目のオブジェクトを 2 番目に配置すべきですか？」という質問だと考えることができます。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/04/sort.png" class="kg-image" alt="sort" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/04/sort.png 600w, https://www.freecodecamp.org/japanese/news/content/images/2022/04/sort.png 654w" width="654" height="368" loading="lazy"></figure><p>不要な位置交換を避けるために、両方のオブジェクトの値が同じだった場合を示す 0 (ゼロ) のケースを加えることを忘れないでください。</p><h3 id="-array-every-array-some">配列内のオブジェクトが条件を満たすかチェックする - Array.every, Array.some</h3><p><code>Array.every</code> と <code>Array.some</code> は、各オブジェクトが特定の条件を満たすかのチェックだけを行いたい場合に便利です。</p><p>例えば、配列内に赤いカブリオがあるでしょうか？すべての車に最低 4 人が乗車できるでしょうか？もっとウェブに関連した例で言うと、ショッピングカート内に特定の製品があるでしょうか？</p><pre><code class="language-js">cars.some(car =&gt; car.color === "red" &amp;&amp; car.type === "cabrio");
// 出力: true

cars.every(car =&gt; car.capacity &gt;= 4);
// 出力: false
</code></pre><p>もしかしたら、<code>Array.some</code> によく似た関数の <code>Array.includes</code> を覚えているかもしれません。しかし、<code>Array.includes</code> はプリミティブ型の配列でのみ動作します。</p><h2 id="--2">まとめ</h2><p>この記事では、オブジェクトの配列を作成、操作、変換、ループする基本的な関数について説明しました。つまずきがちなケースのほとんどをカバーしているはずです。</p><p>より高度な機能を必要とするユースケースがあれば、こちらの<a href="https://www.freecodecamp.org/news/data-structures-101-arrays-a-visual-introduction-for-beginners-7f013bcc355a/">配列についての詳細なガイド (英語)</a> や <a href="https://www.w3schools.com/Jsref/jsref_obj_array.asp">W3Schools のリファレンス (英語)</a> を参照してください。</p><p>または<a href="https://twitter.com/ondrabus">筆者にご連絡ください</a>。また別の記事を用意します :-)</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ VS Code の Live Server – ブラウザを自動的に再読込する拡張機能について ]]>
                </title>
                <description>
                    <![CDATA[ Visual Studio Code は最も人気のあるコードエディターの 1 つです。それは無料で、すっきりしたインターフェースを備えており、プログラミングをより簡単で楽しいものにする無数の拡張機能を備えています。 私 (原著者) はフロントエンドのウェブ開発者で、仕事中や私のYouTube チャンネルで VS Code を使用しています。これまで、コーディング中に再読込ボタンをクリックせずに自動的にブラウザーを再読込させる方法について、多くの人から質問がありました。 それは、Live Server と呼ばれる VS Code の便利な拡張機能を設定することで実現できます。この投稿では、それがどのように動作するのかについて、また VS Code エディターに Live Server をインストールして設定する方法について、詳しくお伝えします。 なぜ Live Server 拡張機能を使用すべきなのか？ 通常、コードを変更したり何か新しいものを記述した時には、ページを手動で更新して変更を確認する必要があります。 言い換えれば、毎日 100 回変更する場合、ブラウザーを 100 回 ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/vscode-live-server-auto-refresh-browser/</link>
                <guid isPermaLink="false">620cdd8f04a2da04fff980e1</guid>
                
                    <category>
                        <![CDATA[ VSCODE ]]>
                    </category>
                
                    <category>
                        <![CDATA[ VISUAL STUDIO CODE ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                    <category>
                        <![CDATA[ PRODUCTIVITY ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Manabu Matsumoto ]]>
                </dc:creator>
                <pubDate>Wed, 23 Mar 2022 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2022/02/5f9c9837740569d1a4ca18cd.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/vscode-live-server-auto-refresh-browser/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">VS Code Live Server – How to Auto-Refresh Your Browser with this Simple Extension</a>
      </p><p>Visual Studio Code は最も人気のあるコードエディターの 1 つです。それは無料で、すっきりしたインターフェースを備えており、プログラミングをより簡単で楽しいものにする無数の拡張機能を備えています。</p><p>私 (原著者) はフロントエンドのウェブ開発者で、仕事中や私のYouTube チャンネルで VS Code を使用しています。これまで、コーディング中に再読込ボタンをクリックせずに自動的にブラウザーを再読込させる方法について、多くの人から質問がありました。</p><p>それは、Live Server と呼ばれる VS Code の便利な拡張機能を設定することで実現できます。この投稿では、それがどのように動作するのかについて、また VS Code エディターに Live Server をインストールして設定する方法について、詳しくお伝えします。</p><h2 id="-live-server-">なぜ Live Server 拡張機能を使用すべきなのか？</h2><p>通常、コードを変更したり何か新しいものを記述した時には、ページを手動で更新して変更を確認する必要があります。</p><p>言い換えれば、毎日 100 回変更する場合、ブラウザーを 100 回更新する必要があります。</p><p>ところが Live Server 拡張機能は、これを自動化してくれます。Live Server をインストールした後では、たったひとつのボタンで、自動化されたローカルホスト (localhost) を起動して、ブラウザー上で動作させることができます。</p><p>Live Server は、いったんコードを変更したり何か新しいものを記述すると、それを保存した後に、ブラウザーを自動的に更新します。これで、素早く自動的に変更を確認できるようになるでしょう。</p><p>もしよろしければ、以下のチュートリアル動画を見ることもできます:</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/jdWlGQdq1Q0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><h2 id="-vs-code-">最初に、VS Code をインストール</h2><p>すでに VS Code をパソコンにインストール済みであれば、この手順をスキップしてかまいません。そうでない場合は、<a href="https://code.visualstudio.com/">公式サイト</a>から VS Code をダウンロードできます。</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/02/VS-Code-Official-Website.png" class="kg-image" alt="VS-Code-Official-Website" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/02/VS-Code-Official-Website.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/02/VS-Code-Official-Website.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/02/VS-Code-Official-Website.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/02/VS-Code-Official-Website.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="967" loading="lazy"><figcaption>Visual Studio Code の公式サイト</figcaption></figure><p>VS Code のダウンロードとインストールが済んだら、次のようなウェルカム画面が表示されます:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/02/VS-Code-Welcome-Screen.png" class="kg-image" alt="VS-Code-Welcome-Screen" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/02/VS-Code-Welcome-Screen.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/02/VS-Code-Welcome-Screen.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/02/VS-Code-Welcome-Screen.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/02/VS-Code-Welcome-Screen.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1264" loading="lazy"></figure><p>左側にいくつかのアイコンが見えるはずです。その内の 1 つ (デバッグアイコンの下) が拡張機能のボタンです:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/02/VS-Code-Extensions-Icon.png" class="kg-image" alt="VS-Code-Extensions-Icon" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/02/VS-Code-Extensions-Icon.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/02/VS-Code-Extensions-Icon.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/02/VS-Code-Extensions-Icon.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/02/VS-Code-Extensions-Icon.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1264" loading="lazy"></figure><p>そのボタンをクリックすると、検索バーが現れます。そこに「live server」と入力してください。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/02/Searchbar.png" class="kg-image" alt="Searchbar" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/02/Searchbar.png 600w, https://www.freecodecamp.org/japanese/news/content/images/2022/02/Searchbar.png 774w" sizes="(min-width: 720px) 720px" width="774" height="1086" loading="lazy"></figure><p>多くの選択肢が表示され、システムに適したものをどれでも選ぶことができます。私は Ritwick Dey の Live Server を使用しているので、この例ではそれを選びます:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/02/Live-Server-Extension.png" class="kg-image" alt="Live-Server-Extension" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/02/Live-Server-Extension.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/02/Live-Server-Extension.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/02/Live-Server-Extension.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/02/Live-Server-Extension.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1271" loading="lazy"></figure><p>install ボタンをクリックすると拡張機能をインストールできます。</p><h2 id="-html-">新しい HTML ページを作成</h2><p>Live Server を起動するには、少なくとも 1 つの HTML ページを作成する必要があります。それを用意するには、左側に見えているいくつかのボタンの、一番上にあるファイルのアイコンのボタン (Explorer ボタン) をクリックしてから、New File ボタンをクリックし、index.html と入力してください:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/02/New-File-Icon.png" class="kg-image" alt="New-File-Icon" width="544" height="98" loading="lazy"><figcaption>プラス記号のついた New File アイコン (左から 2 番目)</figcaption></figure><h3 id="-">設定の問題と対処法</h3><p>HTML ページを作成して Live Server 拡張機能をインストールした後ならば、「Go Live」アイコンが下の青い領域 (ステータスバー) に表示されるはずです:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/02/Go-Live-Icon-button.png" class="kg-image" alt="Go-Live-Icon-button" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/02/Go-Live-Icon-button.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/02/Go-Live-Icon-button.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2022/02/Go-Live-Icon-button.png 1440w" sizes="(min-width: 720px) 720px" width="1440" height="842" loading="lazy"></figure><p>表示されていない場合は VS Code を再起動してください。それでうまくいくはずです。</p><p>「Go Live」ボタンをクリックすると、(ポート番号が指定された) ローカルホストがデフォルトのブラウザー上で起動するはずです。同じボタンをクリックすることで、Live Server をいつでも起動または停止できます。</p><p>もしこの段階に到達したならば、おめでとうございます！ :) これで Live Server と連動できます。その他にまだ問題がある場合は、<a href="https://www.freecodecamp.org/news/visual-studio-code-live-server-not-working/">こちらの投稿で詳細情報</a>をご確認ください。</p><h2 id="--1">結論</h2><p>この投稿が、VS Code の Live Server 拡張機能のインストールと設定に役立つことを願っています。ウェブ開発についてさらに学習したい場合は、私の <a href="https://www.youtube.com/channel/UC1EgYPCvKCXFn8HlpoJwY3Q">YouTube チャンネル</a>にお気軽にアクセスしてください。</p><p>お読みくださいましてありがとうございました!</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
