<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>プログラミング | ビズドットオンライン</title>
	<atom:link href="https://it-biz.online/tag/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/feed/" rel="self" type="application/rss+xml" />
	<link>https://it-biz.online</link>
	<description></description>
	<lastBuildDate>Thu, 07 May 2026 10:54:07 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://it-biz.online/wp-content/uploads/2019/10/cropped-4a332f05ade4ac7bb3c46c472cb5eac8-32x32.png</url>
	<title>プログラミング | ビズドットオンライン</title>
	<link>https://it-biz.online</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【JavaScript】Promiseとは？then・catch・finallyの使い方を初心者向けに解説</title>
		<link>https://it-biz.online/web-design/js/javascript-promise/</link>
		
		<dc:creator><![CDATA[bizonline_admin]]></dc:creator>
		<pubDate>Thu, 07 May 2026 10:54:05 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web開発]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=10771</guid>

					<description><![CDATA[JavaScriptのPromiseとは何か、非同期処理との関係、then・catch・finally、async/awaitとの違いを初心者向けに解説します。]]></description>
										<content:encoded><![CDATA[
<p>JavaScriptのPromiseとは、<strong><span class="marker-under">すぐには終わらない処理の結果を、あとで受け取るための仕組み</span></strong>です。</p>



<p>たとえば、サーバーからデータを取得する処理は、クリックした瞬間に結果が返ってくるとは限りません。通信には時間がかかりますし、失敗することもあります。</p>



<p>Promiseを使うと、そのような非同期処理に対して「成功したらこの処理」「失敗したらこの処理」「最後にこの処理」という形で、後続の処理を整理できます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon">
  <div class="speech-person">
    <figure class="speech-icon"><img wpfc-lazyload-disable="true" decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure>
    <div class="speech-name"></div>
  </div>
  <div class="speech-balloon">
    <p>Promiseは「値そのもの」ではありません。まだ終わっていない処理の結果を、あとで受け取るための箱のようなものです。</p>
  </div>
</div>



<p>この記事では、Promiseとは何か、<code>then</code>・<code>catch</code>・<code>finally</code>の使い方、<code>fetch</code>や<code>async/await</code>との関係を初心者向けに順番に解説します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">まず結論：Promiseは非同期処理の結果をあとで受け取る仕組み</a></li><li><a href="#toc2" tabindex="0">Promiseが必要になる理由</a></li><li><a href="#toc3" tabindex="0">Promiseの3つの状態</a></li><li><a href="#toc4" tabindex="0">then・catch・finallyの基本</a></li><li><a href="#toc5" tabindex="0">Promiseチェーンとは？</a></li><li><a href="#toc6" tabindex="0">fetch APIとPromiseの関係</a></li><li><a href="#toc7" tabindex="0">async/awaitとの違い</a></li><li><a href="#toc8" tabindex="0">初心者がつまずきやすいポイント</a></li><li><a href="#toc9" tabindex="0">Promiseをどんな場面で使うのか</a></li><li><a href="#toc10" tabindex="0">関連して読みたい記事</a></li><li><a href="#toc11" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">まず結論：Promiseは非同期処理の結果をあとで受け取る仕組み</span></h2>



<p>Promiseを最初に理解するときは、次のように考えると分かりやすいです。</p>



<pre class="wp-block-code"><code>非同期処理を始める
  ↓
Promiseが返る
  ↓
成功したら then
失敗したら catch
最後に finally</code></pre>



<p>Promiseは、処理が終わる前に「将来の結果を表すオブジェクト」として返されます。MDNでも、Promiseは非同期処理の最終的な完了または失敗と、その結果の値を表すオブジェクトとして説明されています。</p>



<p>つまり、Promiseは「通信結果そのもの」ではなく、<strong>通信結果をあとで受け取るための窓口</strong>です。</p>



<h2 class="wp-block-heading"><span id="toc2">Promiseが必要になる理由</span></h2>



<p>JavaScriptでは、ブラウザ操作や通信処理など、すぐに終わらない処理がよく出てきます。代表例は、APIからデータを取得する<code>fetch</code>です。</p>



<p>もし通信が終わるまで画面全体が止まってしまうと、ユーザーは何も操作できません。そのためJavaScriptでは、時間がかかる処理を待っている間も、他の処理を進められるように非同期処理を使います。</p>



<p>ただし、非同期処理には問題があります。結果がいつ返るか分からないため、普通の変数代入の感覚で書くと、まだ結果がない状態を読んでしまいます。</p>



<p>そこでPromiseを使い、結果が返ってきたあとに実行する処理を登録します。</p>



<h2 class="wp-block-heading"><span id="toc3">Promiseの3つの状態</span></h2>



<p>Promiseには、処理の進み具合を表す状態があります。最初は細かい仕様名よりも、次の3つを押さえれば十分です。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>状態</th><th>意味</th><th>初心者向けの見方</th></tr></thead><tbody><tr><td>pending</td><td>まだ結果が出ていない</td><td>処理中</td></tr><tr><td>fulfilled</td><td>成功して結果が得られた</td><td>成功した</td></tr><tr><td>rejected</td><td>失敗して理由が返った</td><td>失敗した</td></tr></tbody></table></div></figure>



<p>Promiseは最初は<code>pending</code>です。その後、成功すれば<code>fulfilled</code>、失敗すれば<code>rejected</code>になります。</p>



<p>この図では、Promiseを「非同期処理の結果をあとで受け取る流れ」として見てください。<code>then</code>は成功、<code>catch</code>は失敗、<code>finally</code>は最後の後片付けに対応します。</p>



<figure class="wp-block-image aligncenter size-large"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2026/05/javascript-promise-flow-v2.png" alt="JavaScriptのPromiseが非同期処理の結果をthen、catch、finallyへ渡す流れを示す図"/><figcaption class="wp-element-caption">Promiseは、まだ終わっていない処理の結果を後から受け取るための約束として見ると理解しやすくなります。</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc4">then・catch・finallyの基本</span></h2>



<p>Promiseでよく使うのは、<code>then</code>・<code>catch</code>・<code>finally</code>の3つです。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>メソッド</th><th>使う場面</th><th>ざっくりした意味</th></tr></thead><tbody><tr><td><code>then()</code></td><td>成功したとき</td><td>結果を受け取って次の処理をする</td></tr><tr><td><code>catch()</code></td><td>失敗したとき</td><td>エラーを受け取って処理する</td></tr><tr><td><code>finally()</code></td><td>成功・失敗に関係なく最後</td><td>後片付けをする</td></tr></tbody></table></div></figure>



<p>一番シンプルな形は次の通りです。</p>



<pre class="wp-block-code"><code>fetch(&quot;https://example.com/api/users&quot;)
  .then((response) =&gt; response.json())
  .then((users) =&gt; {
    console.log(users);
  })
  .catch((error) =&gt; {
    console.error(&quot;取得に失敗しました&quot;, error);
  })
  .finally(() =&gt; {
    console.log(&quot;処理が終わりました&quot;);
  });</code></pre>



<p><code>then</code>は成功した結果を次へ渡します。<code>catch</code>は途中で失敗したときに呼ばれます。<code>finally</code>は、成功しても失敗しても最後に実行されます。</p>



<h2 class="wp-block-heading"><span id="toc5">Promiseチェーンとは？</span></h2>



<p>Promiseでは、<code>then</code>をつなげて処理を順番に書けます。このつながりをPromiseチェーンと呼ぶことがあります。</p>



<p>次の例では、最初の<code>then</code>でレスポンスをJSONに変換し、次の<code>then</code>で変換後のデータを使っています。</p>



<pre class="wp-block-code"><code>fetch(&quot;/users.json&quot;)
  .then((response) =&gt; response.json())
  .then((users) =&gt; users.filter((user) =&gt; user.active))
  .then((activeUsers) =&gt; {
    console.log(activeUsers);
  })
  .catch((error) =&gt; {
    console.error(error);
  });</code></pre>



<p>ポイントは、<strong><span class="marker-under">前のthenで返した値が、次のthenへ渡される</span></strong>ことです。</p>



<p>配列の<code>filter</code>や<code>map</code>があやふやな場合は、<a href="https://it-biz.online/web-design/map-filter-reduce/">map・filter・reduceの違い</a>も参考になります。</p>



<h2 class="wp-block-heading"><span id="toc6">fetch APIとPromiseの関係</span></h2>



<p><code>fetch</code>は、HTTP通信を行うためのWeb APIです。そして<code>fetch()</code>を呼び出すとPromiseが返ります。</p>



<p>そのため、fetchのコードではPromiseの理解がほぼ必須になります。</p>



<pre class="wp-block-code"><code>const promise = fetch(&quot;/api/users&quot;);

console.log(promise); // Promiseが入っている</code></pre>



<p>この時点で得られるのは、ユーザー一覧そのものではありません。通信結果をあとで受け取るためのPromiseです。</p>



<p><code>fetch</code>のGET・POSTの基本は、<a href="https://it-biz.online/web-design/fetch-api/">fetch APIとは？</a>で詳しく解説しています。</p>



<h2 class="wp-block-heading"><span id="toc7">async/awaitとの違い</span></h2>



<p><code>async/await</code>は、Promiseをより自然な順番で書くための構文です。Promiseと別物というより、Promiseを読みやすく扱うための書き方です。</p>



<p>Promiseチェーンで書くと次のようになります。</p>



<pre class="wp-block-code"><code>fetch(&quot;/api/users&quot;)
  .then((response) =&gt; response.json())
  .then((users) =&gt; console.log(users))
  .catch((error) =&gt; console.error(error));</code></pre>



<p>同じ処理を<code>async/await</code>で書くと、次のようになります。</p>



<pre class="wp-block-code"><code>async function loadUsers() {
  try {
    const response = await fetch(&quot;/api/users&quot;);
    const users = await response.json();
    console.log(users);
  } catch (error) {
    console.error(error);
  }
}</code></pre>



<p><code>await</code>はPromiseの完了を待ち、その結果を取り出します。async/awaitの基本は、<a href="https://it-biz.online/web-design/async-await/">async/awaitとは？</a>の記事で解説しています。</p>



<h2 class="wp-block-heading"><span id="toc8">初心者がつまずきやすいポイント</span></h2>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>つまずき</th><th>まずこう理解する</th></tr></thead><tbody><tr><td>Promiseを値そのものだと思う</td><td>Promiseは将来の結果を表すオブジェクト</td></tr><tr><td>thenの中でreturnしない</td><td>次のthenへ渡す値がなくなる</td></tr><tr><td>catchを書かない</td><td>失敗時の動きが追いにくくなる</td></tr><tr><td>async/awaitならPromise不要と思う</td><td>async/awaitの裏側でもPromiseを扱っている</td></tr></tbody></table></div></figure>



<p>特に多いのは、<code>then</code>の中で値を返し忘れることです。次の処理に値を渡したい場合は、<code>return</code>を意識しましょう。</p>



<h2 class="wp-block-heading"><span id="toc9">Promiseをどんな場面で使うのか</span></h2>



<p>Promiseは、次のような非同期処理でよく使われます。</p>



<ul class="wp-block-list is-style-icon-list-check has-list-style">
  <li>APIからデータを取得する</li>
  <li>一定時間後に処理する</li>
  <li>ファイルや画像の読み込みを待つ</li>
  <li>複数の非同期処理を順番に実行する</li>
  <li>複数の非同期処理をまとめて待つ</li>
</ul>



<p>ただし、最初から<code>Promise.all</code>や<code>Promise.race</code>などをすべて覚える必要はありません。まずは<code>then</code>・<code>catch</code>・<code>finally</code>と、async/awaitとの関係を押さえましょう。</p>



<h2 class="wp-block-heading"><span id="toc10">関連して読みたい記事</span></h2>



<ul class="wp-block-list">
  <li><a href="https://it-biz.online/web-design/callback-function/">JavaScriptのコールバック関数とは？</a></li>
  <li><a href="https://it-biz.online/web-design/fetch-api/">fetch APIとは？GETとPOSTの使い方</a></li>
  <li><a href="https://it-biz.online/web-design/async-await/">async/awaitとは？Promiseとの違い</a></li>
  <li><a href="https://it-biz.online/web-design/javascript-scope/">JavaScriptのスコープとは？</a></li>
</ul>



<h2 class="wp-block-heading"><span id="toc11">まとめ</span></h2>



<p>JavaScriptのPromiseは、非同期処理の結果をあとで受け取るための仕組みです。</p>



<ul class="wp-block-list is-style-icon-list-check has-list-style">
  <li><code>then</code>は成功時の処理を書く</li>
  <li><code>catch</code>は失敗時の処理を書く</li>
  <li><code>finally</code>は最後の後片付けを書く</li>
  <li><code>async/await</code>はPromiseを読みやすく扱う構文</li>
</ul>



<p>Promiseを理解すると、<code>fetch</code>や<code>async/await</code>のコードがかなり読みやすくなります。最初は「まだ終わっていない処理の結果を、あとで受け取る約束」と考えれば十分です。</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【TypeScript】typeとは？型エイリアスとinterfaceの違いを初心者向けに解説</title>
		<link>https://it-biz.online/web-design/typescript/typescript-type-alias/</link>
		
		<dc:creator><![CDATA[bizonline_admin]]></dc:creator>
		<pubDate>Thu, 07 May 2026 10:53:40 +0000</pubDate>
				<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[Web開発]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=10774</guid>

					<description><![CDATA[TypeScriptのtypeとは何か、型エイリアスの基本、union型での使い方、interfaceとの違いと使い分けを初心者向けに解説します。]]></description>
										<content:encoded><![CDATA[
<p>TypeScriptの<code>type</code>とは、<strong><span class="marker-under">型に名前を付けて、何度も使いやすくするための書き方</span></strong>です。正式には型エイリアスと呼ばれます。</p>



<p>たとえば、ユーザー情報を表す型を毎回<code>{ id: number; name: string }</code>と書くのは読みにくくなります。そこで<code>type User = ...</code>のように名前を付けます。</p>



<p>初心者が迷いやすいのは、<code>type</code>と<code>interface</code>の違いです。どちらもオブジェクトの形を表せますが、得意な使いどころが少し違います。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon">
  <div class="speech-person">
    <figure class="speech-icon"><img wpfc-lazyload-disable="true" decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure>
    <div class="speech-name"></div>
  </div>
  <div class="speech-balloon">
    <p>最初は「typeは型に名前を付ける」「interfaceはオブジェクトの形を宣言する」と分けて考えると理解しやすいです。</p>
  </div>
</div>



<p>この記事では、TypeScriptの<code>type</code>とは何か、基本構文、union型での使い方、<code>interface</code>との違い、実務での使い分けを初心者向けに解説します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">まず結論：typeは型に名前を付ける書き方</a></li><li><a href="#toc2" tabindex="0">typeが必要になる理由</a></li><li><a href="#toc3" tabindex="0">typeの基本構文</a></li><li><a href="#toc4" tabindex="0">typeはunion型にも名前を付けられる</a></li><li><a href="#toc5" tabindex="0">interfaceとの違い</a></li><li><a href="#toc6" tabindex="0">typeを使うとよい場面</a></li><li><a href="#toc7" tabindex="0">interfaceを使うとよい場面</a></li><li><a href="#toc8" tabindex="0">初心者がつまずきやすいポイント</a></li><li><a href="#toc9" tabindex="0">実務での使い分けの目安</a></li><li><a href="#toc10" tabindex="0">関連して読みたい記事</a></li><li><a href="#toc11" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">まず結論：typeは型に名前を付ける書き方</span></h2>



<p><code>type</code>は、型に別名を付けるために使います。TypeScript公式ドキュメントでも、type aliasは任意の型に名前を付けるものとして説明されています。</p>



<pre class="wp-block-code"><code>type User = {
  id: number;
  name: string;
};

const user: User = {
  id: 1,
  name: &quot;Sato&quot;,
};</code></pre>



<p>この例では、<code>{ id: number; name: string }</code>というオブジェクトの型に、<code>User</code>という名前を付けています。</p>



<p>一度名前を付けると、変数、関数の引数、戻り値などで同じ型を使い回せます。</p>



<h2 class="wp-block-heading"><span id="toc2">typeが必要になる理由</span></h2>



<p>TypeScriptでは、型を直接書くこともできます。</p>



<pre class="wp-block-code"><code>function printUser(user: { id: number; name: string }) {
  console.log(user.name);
}</code></pre>



<p>短いコードならこれでも問題ありません。しかし、同じ型を何度も書くと、コードが長くなり、修正漏れも起きやすくなります。</p>



<p><code>type</code>を使うと、型の意味が名前で分かるようになります。</p>



<pre class="wp-block-code"><code>type User = {
  id: number;
  name: string;
};

function printUser(user: User) {
  console.log(user.name);
}</code></pre>



<p>このように、<strong><span class="marker-under">typeはコードを短くするためだけでなく、型の意味を名前で伝えるため</span></strong>に使います。</p>



<h2 class="wp-block-heading"><span id="toc3">typeの基本構文</span></h2>



<p><code>type</code>の基本構文は次の通りです。</p>



<pre class="wp-block-code"><code>type 型名 = 型;</code></pre>



<p>オブジェクト型に名前を付ける場合は、次のように書きます。</p>



<pre class="wp-block-code"><code>type Product = {
  id: number;
  name: string;
  price: number;
};</code></pre>



<p>関数の引数や戻り値にも使えます。</p>



<pre class="wp-block-code"><code>function formatProduct(product: Product): string {
  return `${product.name}: ${product.price}円`;
}</code></pre>



<p>TypeScriptの型注釈や関数の基本がまだ曖昧な場合は、<a href="https://it-biz.online/web-design/typescript-start/">TypeScript超入門</a>や<a href="https://it-biz.online/web-design/typescript-function/">TypeScriptの関数宣言/関数式</a>を先に読むと理解しやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc4">typeはunion型にも名前を付けられる</span></h2>



<p><code>type</code>の大きな特徴は、オブジェクト型だけでなく、union型にも名前を付けられることです。</p>



<pre class="wp-block-code"><code>type ID = number | string;

function findUser(id: ID) {
  console.log(id);
}</code></pre>



<p><code>number | string</code>は、「数値または文字列」という意味です。このような型をunion型と呼びます。</p>



<p>毎回<code>number | string</code>と書く代わりに<code>ID</code>と名付けることで、「これはIDとして扱う値だ」と読み取りやすくなります。</p>



<p>この図では、<code>type</code>を「型そのものを作る魔法」ではなく、<strong>型に名前を付けて使いやすくする入口</strong>として見てください。</p>



<figure class="wp-block-image aligncenter size-large"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2026/05/typescript-type-alias-flow-v2.png" alt="TypeScriptのtypeがオブジェクト型やユニオン型に名前を付けinterfaceと使い分けられることを示す図"/><figcaption class="wp-element-caption">typeは型に名前を付ける書き方です。interfaceと似ていますが、union型などにも名前を付けられる点が重要です。</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc5">interfaceとの違い</span></h2>



<p><code>type</code>と<code>interface</code>は、どちらもオブジェクトの形を表せます。</p>



<pre class="wp-block-code"><code>type UserType = {
  id: number;
  name: string;
};

interface UserInterface {
  id: number;
  name: string;
}</code></pre>



<p>この例だけを見ると、ほとんど同じに見えます。実際、単純なオブジェクト型であれば、どちらでも表せます。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>観点</th><th>type</th><th>interface</th></tr></thead><tbody><tr><td>オブジェクト型</td><td>表せる</td><td>表せる</td></tr><tr><td>union型</td><td>表せる</td><td>基本的には表せない</td></tr><tr><td>tuple型</td><td>表せる</td><td>向いていない</td></tr><tr><td>後から同じ名前で拡張</td><td>できない</td><td>できる</td></tr><tr><td>クラスのimplements</td><td>使える場合がある</td><td>よく使われる</td></tr></tbody></table></div></figure>



<p>TypeScript公式ドキュメントでも、ほとんどの<code>interface</code>の機能は<code>type</code>でも使える一方、<code>interface</code>は後から拡張できる点が大きな違いとして説明されています。</p>



<p>すでに<a href="https://it-biz.online/web-design/interface/">TypeScriptのinterface</a>を読んでいる場合は、この記事と合わせて見ると使い分けが整理しやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc6">typeを使うとよい場面</span></h2>



<p><code>type</code>は、次のような場面で特に便利です。</p>



<ul class="wp-block-list is-style-icon-list-check has-list-style">
  <li>union型に名前を付けたい</li>
  <li>tuple型に名前を付けたい</li>
  <li>関数型に名前を付けたい</li>
  <li>複数の型を組み合わせたい</li>
  <li>APIレスポンスの型を読みやすく整理したい</li>
</ul>



<p>たとえば、状態を文字列で表す場合は<code>type</code>が分かりやすいです。</p>



<pre class="wp-block-code"><code>type Status = &quot;loading&quot; | &quot;success&quot; | &quot;error&quot;;

function render(status: Status) {
  if (status === &quot;loading&quot;) {
    return &quot;読み込み中&quot;;
  }
  if (status === &quot;success&quot;) {
    return &quot;成功&quot;;
  }
  return &quot;エラー&quot;;
}</code></pre>



<p>このように書くと、<code>status</code>には決められた文字列だけを渡せます。入力ミスにも気づきやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc7">interfaceを使うとよい場面</span></h2>



<p>一方、<code>interface</code>は、オブジェクトの形を中心に扱う場面でよく使われます。</p>



<ul class="wp-block-list is-style-icon-list-comment has-list-style">
  <li>クラスに実装させる契約を表したい</li>
  <li>オブジェクトの構造を外部に公開したい</li>
  <li>ライブラリや拡張前提の型を定義したい</li>
  <li>同じ名前のinterfaceを後から拡張したい</li>
</ul>



<p>たとえば、クラスが持つべきメソッドを表す場合は<code>interface</code>が読みやすいことがあります。</p>



<pre class="wp-block-code"><code>interface Repository {
  findById(id: string): Promise&lt;User&gt;;
  save(user: User): void;
}</code></pre>



<p>ただし、これは絶対ルールではありません。プロジェクトごとのコーディング規約がある場合は、それに従うのが実務では重要です。</p>



<h2 class="wp-block-heading"><span id="toc8">初心者がつまずきやすいポイント</span></h2>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>つまずき</th><th>まずこう理解する</th></tr></thead><tbody><tr><td>typeは新しい型を作る？</td><td>別名を付けているだけ。別の実体が増えるわけではない</td></tr><tr><td>interfaceと完全に同じ？</td><td>似ているが、union型や拡張方法が違う</td></tr><tr><td>全部typeでよい？</td><td>規約や拡張前提によってinterfaceが向く場面もある</td></tr><tr><td>実行時にも残る？</td><td>TypeScriptの型情報なので、基本的にJavaScript実行時には残らない</td></tr></tbody></table></div></figure>



<p>特に重要なのは、<strong><span class="marker-under">typeは実行時の値ではなく、開発中にコードを安全に読むための型情報</span></strong>だという点です。</p>



<h2 class="wp-block-heading"><span id="toc9">実務での使い分けの目安</span></h2>



<p>迷ったときは、次のように考えると整理しやすくなります。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>使いたいもの</th><th>おすすめ</th><th>理由</th></tr></thead><tbody><tr><td>union型</td><td><code>type</code></td><td><code>"a" | "b"</code>のような型に名前を付けられる</td></tr><tr><td>tuple型</td><td><code>type</code></td><td>配列の位置ごとの型を表しやすい</td></tr><tr><td>単純なデータの形</td><td>どちらでもよい</td><td>プロジェクト規約に合わせる</td></tr><tr><td>拡張される契約</td><td><code>interface</code></td><td>後から拡張しやすい</td></tr></tbody></table></div></figure>



<p>初心者のうちは、まず<code>type</code>でunion型、<code>interface</code>でオブジェクトの契約、と覚えると混乱しにくくなります。</p>



<h2 class="wp-block-heading"><span id="toc10">関連して読みたい記事</span></h2>



<ul class="wp-block-list">
  <li><a href="https://it-biz.online/web-design/typescript-start/">TypeScript超入門</a></li>
  <li><a href="https://it-biz.online/web-design/typescript-abc/">TypeScript入門</a></li>
  <li><a href="https://it-biz.online/web-design/interface/">TypeScriptのinterfaceとは？</a></li>
  <li><a href="https://it-biz.online/web-design/variavle-type/">TypeScriptの変数と基本的な型</a></li>
  <li><a href="https://it-biz.online/web-design/typescript-function/">TypeScriptの関数宣言/関数式</a></li>
</ul>



<h2 class="wp-block-heading"><span id="toc11">まとめ</span></h2>



<p>TypeScriptの<code>type</code>は、型に名前を付けるための書き方です。</p>



<ul class="wp-block-list is-style-icon-list-check has-list-style">
  <li>同じ型を何度も書かずに済む</li>
  <li>型の意味を名前で伝えられる</li>
  <li>union型やtuple型にも名前を付けられる</li>
  <li>interfaceとは拡張方法や得意分野が違う</li>
</ul>



<p>最初は、<code>type ID = number | string</code>のような短い例から始めると理解しやすくなります。慣れてきたら、APIレスポンスや画面状態の型にも使ってみましょう。</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Dockerとは？コンテナ・イメージ・仮想マシンとの違いを初心者向けに解説</title>
		<link>https://it-biz.online/it-skills/docker-container/</link>
		
		<dc:creator><![CDATA[bizonline_admin]]></dc:creator>
		<pubDate>Thu, 07 May 2026 10:53:15 +0000</pubDate>
				<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[用語解説]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=10777</guid>

					<description><![CDATA[Dockerとは何か、コンテナ・イメージ・Dockerfileの関係、仮想マシンとの違い、開発現場で使う理由を初心者向けに解説します。]]></description>
										<content:encoded><![CDATA[
<p>Dockerとは、<strong><span class="marker-under">アプリを動かすための環境をコンテナとしてまとめ、どこでも同じように動かしやすくするための仕組み</span></strong>です。</p>



<p>たとえば、ある人のPCでは動くのに、別の人のPCでは動かない、という問題があります。Node.jsやPython、データベース、ライブラリのバージョンが違うと、同じコードでも動きが変わることがあります。</p>



<p>Dockerを使うと、アプリに必要な実行環境をイメージとしてまとめ、コンテナとして起動できます。これにより、開発環境、テスト環境、本番環境の差を小さくしやすくなります。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon">
  <div class="speech-person">
    <figure class="speech-icon"><img wpfc-lazyload-disable="true" decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure>
    <div class="speech-name"></div>
  </div>
  <div class="speech-balloon">
    <p>Dockerは「軽い仮想マシン」と説明されることがありますが、厳密には仮想マシンそのものではありません。まずはコンテナを動かす仕組みとして理解しましょう。</p>
  </div>
</div>



<p>この記事では、Dockerとは何か、コンテナ・イメージ・Dockerfileの関係、仮想マシンとの違い、開発現場で使う理由を初心者向けに解説します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-3" checked><label class="toc-title" for="toc-checkbox-3">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">まず結論：Dockerはアプリの実行環境をまとめて扱う仕組み</a></li><li><a href="#toc2" tabindex="0">Dockerが必要になる理由</a></li><li><a href="#toc3" tabindex="0">コンテナとは何か</a></li><li><a href="#toc4" tabindex="0">イメージとは何か</a></li><li><a href="#toc5" tabindex="0">Dockerfileとは何か</a></li><li><a href="#toc6" tabindex="0">Dockerでよく出てくるコマンドの流れ</a></li><li><a href="#toc7" tabindex="0">仮想マシンとの違い</a></li><li><a href="#toc8" tabindex="0">Dockerを使うメリット</a></li><li><a href="#toc9" tabindex="0">Dockerを使うときの注意点</a></li><li><a href="#toc10" tabindex="0">関連して読みたい記事</a></li><li><a href="#toc11" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">まず結論：Dockerはアプリの実行環境をまとめて扱う仕組み</span></h2>



<p>Dockerを最初に理解するときは、次の流れで考えると分かりやすいです。</p>



<pre class="wp-block-code"><code>Dockerfileを書く
  ↓
Dockerイメージを作る
  ↓
イメージからコンテナを起動する
  ↓
アプリが決められた環境で動く</code></pre>



<p>Docker公式ドキュメントでも、Dockerはコンテナと呼ばれる分離された環境でアプリケーションをパッケージ化し、実行できるプラットフォームとして説明されています。</p>



<p>初心者のうちは、Dockerを<strong>「環境ごとアプリを動かしやすくする道具」</strong>として理解すれば十分です。</p>



<h2 class="wp-block-heading"><span id="toc2">Dockerが必要になる理由</span></h2>



<p>開発では、コードだけでなく実行環境も重要です。アプリが動くには、プログラミング言語の実行環境、ライブラリ、設定ファイル、OS上のツール、データベースなどが関係します。</p>



<p>これらが人によって違うと、次のような問題が起きます。</p>



<ul class="wp-block-list is-style-icon-list-comment has-list-style">
  <li>自分のPCでは動くが、他の人のPCでは動かない</li>
  <li>本番環境だけエラーになる</li>
  <li>環境構築の手順が長く、新人が詰まりやすい</li>
  <li>古いプロジェクトと新しいプロジェクトで必要なバージョンが衝突する</li>
</ul>



<p>Dockerは、このような環境差を小さくするために使われます。環境構築の手順をファイルとして残し、同じイメージから同じようなコンテナを起動できるようにします。</p>



<p>サーバーの基本がまだ曖昧な場合は、先に<a href="https://it-biz.online/it-skills/server-abc/">サーバーとは何か？</a>を読むと、Dockerがどこで役立つかイメージしやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc3">コンテナとは何か</span></h2>



<p>コンテナとは、アプリとその実行に必要なものを、他の環境から分けて動かすための単位です。</p>



<p>Docker公式の入門ドキュメントでは、コンテナはアプリの各部品ごとに分離されたプロセスとして説明されています。重要なのは、コンテナがホストOS全体を丸ごと複製するわけではない点です。</p>



<p>コンテナは、必要なファイルや設定を持ちながら、ホストや他のコンテナへの影響を小さくしてアプリを動かします。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>用語</th><th>ざっくりした意味</th></tr></thead><tbody><tr><td>コンテナ</td><td>アプリが実際に動いている分離された実行環境</td></tr><tr><td>ホスト</td><td>Dockerを動かしているPCやサーバー</td></tr><tr><td>プロセス</td><td>OS上で動いているプログラムの実体</td></tr></tbody></table></div></figure>



<h2 class="wp-block-heading"><span id="toc4">イメージとは何か</span></h2>



<p>Dockerイメージとは、コンテナを起動するためのテンプレートです。Docker公式ドキュメントでも、イメージはコンテナを作るための読み取り専用テンプレートとして説明されています。</p>



<p>たとえば、Node.jsアプリを動かすなら、Node.jsの実行環境、アプリのコード、必要なライブラリ、起動コマンドなどをイメージにまとめます。</p>



<p>イメージとコンテナの違いは、次のように考えると分かりやすいです。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>用語</th><th>たとえ</th><th>Dockerでの意味</th></tr></thead><tbody><tr><td>イメージ</td><td>型・設計図</td><td>コンテナを作る元になるテンプレート</td></tr><tr><td>コンテナ</td><td>実体・実行中のもの</td><td>イメージから起動された実行環境</td></tr></tbody></table></div></figure>



<p>この図では、Dockerfile、イメージ、コンテナの関係を左から右へ見てください。Dockerを理解するときは、まずこの3つを分けることが重要です。</p>



<figure class="wp-block-image aligncenter size-large"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2026/05/docker-container-flow-v2.png" alt="DockerではDockerfileからイメージを作りコンテナとして実行する流れを示す図"/><figcaption class="wp-element-caption">Dockerは、イメージをもとにコンテナを起動して、同じ環境でアプリを動かしやすくする仕組みです。</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc5">Dockerfileとは何か</span></h2>



<p>Dockerfileとは、Dockerイメージを作るための手順を書いたファイルです。</p>



<p>たとえば、次のような内容を書きます。</p>



<pre class="wp-block-code"><code>FROM node:22
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD [&quot;npm&quot;, &quot;start&quot;]</code></pre>



<p>この例では、Node.jsのイメージを土台にして、作業ディレクトリを作り、依存ライブラリをインストールし、最後にアプリを起動しています。</p>



<p>Dockerfileがあると、環境構築の手順を口頭や手順書だけでなく、実行できる形で残せます。</p>



<h2 class="wp-block-heading"><span id="toc6">Dockerでよく出てくるコマンドの流れ</span></h2>



<p>Dockerを学び始めると、<code>build</code>、<code>run</code>、<code>ps</code>、<code>stop</code>などのコマンドが出てきます。最初はすべてを暗記するより、何を操作しているのかを分けて考えることが大切です。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>コマンド</th><th>何をするか</th><th>見ている対象</th></tr></thead><tbody><tr><td><code>docker build</code></td><td>Dockerfileからイメージを作る</td><td>イメージ</td></tr><tr><td><code>docker run</code></td><td>イメージからコンテナを起動する</td><td>コンテナ</td></tr><tr><td><code>docker ps</code></td><td>動いているコンテナを確認する</td><td>コンテナ</td></tr><tr><td><code>docker stop</code></td><td>コンテナを停止する</td><td>コンテナ</td></tr></tbody></table></div></figure>



<p>ここでも中心になるのは、イメージとコンテナの違いです。<code>build</code>はテンプレートを作る操作、<code>run</code>はそのテンプレートから実体を起動する操作、と見ると混乱しにくくなります。</p>



<p>また、実務では複数のコンテナをまとめて起動するためにDocker Composeを使うこともあります。ただし、初心者の最初の理解では、まず1つのDockerfileから1つのイメージを作り、1つのコンテナを起動する流れを押さえるのが先です。</p>



<h2 class="wp-block-heading"><span id="toc7">仮想マシンとの違い</span></h2>



<p>Dockerコンテナと仮想マシンは、どちらも環境を分けるために使われます。ただし仕組みは違います。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>観点</th><th>Dockerコンテナ</th><th>仮想マシン</th></tr></thead><tbody><tr><td>OS</td><td>ホストOSのカーネルを共有する</td><td>ゲストOSを持つ</td></tr><tr><td>起動</td><td>比較的速い</td><td>コンテナより重くなりやすい</td></tr><tr><td>分離</td><td>プロセス単位の分離が中心</td><td>OS単位で分離する</td></tr><tr><td>用途</td><td>アプリ実行環境の統一に向く</td><td>OSごとの検証や強い分離に向く</td></tr></tbody></table></div></figure>



<p>Docker公式ドキュメントでも、仮想マシンはカーネルやドライバを含むOS全体を持つ一方、コンテナは必要なファイルを持つ分離されたプロセスとして説明されています。</p>



<p>そのため、Dockerは仮想マシンより軽く扱えることが多いですが、すべての用途で仮想マシンの代わりになるわけではありません。</p>



<h2 class="wp-block-heading"><span id="toc8">Dockerを使うメリット</span></h2>



<p>Dockerを使う主なメリットは次の通りです。</p>



<ul class="wp-block-list is-style-icon-list-check has-list-style">
  <li>環境構築を再現しやすい</li>
  <li>開発者ごとの差を小さくできる</li>
  <li>CI/CDで同じ環境を使いやすい</li>
  <li>アプリと依存関係をまとめて扱いやすい</li>
  <li>古い環境と新しい環境を分けやすい</li>
</ul>



<p>特にCI/CDでは、テストやビルドを毎回同じ環境で実行しやすくなります。CI/CDの基本は、<a href="https://it-biz.online/it-skills/github-actions/">GitHub Actionsとは？</a>や<a href="https://it-biz.online/it-skills/build/">ビルドとは？</a>と一緒に見ると理解がつながります。</p>



<h2 class="wp-block-heading"><span id="toc9">Dockerを使うときの注意点</span></h2>



<p>Dockerは便利ですが、使えば自動的にすべてが解決するわけではありません。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>注意点</th><th>理由</th></tr></thead><tbody><tr><td>本番運用には設計が必要</td><td>ログ、監視、バックアップ、ネットワークを考える必要がある</td></tr><tr><td>イメージが大きくなりすぎることがある</td><td>不要なファイルを含めると配布や起動が重くなる</td></tr><tr><td>セキュリティ更新が必要</td><td>土台となるイメージやライブラリの脆弱性に注意する</td></tr><tr><td>永続データの扱いが必要</td><td>コンテナを消すと中の変更も消えることがある</td></tr></tbody></table></div></figure>



<p>初心者のうちは、まずローカル開発環境で小さく使い、イメージとコンテナの違いを実際に確認するのがおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc10">関連して読みたい記事</span></h2>



<ul class="wp-block-list">
  <li><a href="https://it-biz.online/it-skills/server-abc/">サーバーとは何か？</a></li>
  <li><a href="https://it-biz.online/lifehack/virtual-private-server/">VPSとは？</a></li>
  <li><a href="https://it-biz.online/it-skills/build/">ビルドとは？</a></li>
  <li><a href="https://it-biz.online/it-skills/github-actions/">GitHub Actionsとは？</a></li>
  <li><a href="https://it-biz.online/it-skills/web_api/">APIとは？Web APIとの違い</a></li>
</ul>



<h2 class="wp-block-heading"><span id="toc11">まとめ</span></h2>



<p>Dockerは、アプリを動かすための環境をコンテナとしてまとめ、どこでも同じように動かしやすくするための仕組みです。</p>



<ul class="wp-block-list is-style-icon-list-check has-list-style">
  <li>Dockerfileはイメージを作る手順</li>
  <li>イメージはコンテナを起動するテンプレート</li>
  <li>コンテナは実際に動いている実行環境</li>
  <li>仮想マシンとは仕組みが違う</li>
  <li>環境差を減らし、開発やCI/CDを進めやすくする</li>
</ul>



<p>最初から本番運用まで理解する必要はありません。まずは、Dockerfile、イメージ、コンテナの3つを分けて考えるところから始めましょう。</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【IT用語解説】CI/CDとは？初心者向けに1からわかりやすく解説</title>
		<link>https://it-biz.online/it-skills/ci-cd/</link>
					<comments>https://it-biz.online/it-skills/ci-cd/#respond</comments>
		
		<dc:creator><![CDATA[bizonline_admin]]></dc:creator>
		<pubDate>Thu, 07 May 2026 01:11:29 +0000</pubDate>
				<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[用語解説]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=10763</guid>

					<description><![CDATA[CI/CDとは何か、CIとCDの違い、ビルド・テスト・デプロイとの関係、GitHub Actionsとのつながりを初心者向けに解説します。]]></description>
										<content:encoded><![CDATA[
<p>CI/CDとは、ひとことで言うと、<strong><span class="marker-under">コードの変更を自動で確認し、安全に届けるための流れ</span></strong>です。</p>



<p>たとえば、開発者がGitHubにコードをpushしたとします。そのたびに、人が手作業でビルドして、テストして、問題がなければデプロイの準備をするのは大変です。そこで使われる考え方がCI/CDです。CI/CDでは、コード変更をきっかけに、ビルド、テスト、成果物作成、デプロイ準備などを自動で実行します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon">
  <div class="speech-person">
    <figure class="speech-icon"><img wpfc-lazyload-disable="true" decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure>
    <div class="speech-name"></div>
  </div>
  <div class="speech-balloon">
    <p>CI/CDはツール名ではありません。GitHub ActionsやJenkinsなどは、CI/CDを実現するための道具です。</p>
  </div>
</div>



<p>この記事では、CI/CDとは何か、CIとCDの違い、ビルド・テスト・デプロイとの関係、GitHub Actionsとのつながりを初心者向けに解説します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">まず結論：CI/CDは変更を安全に届けるための流れ</a></li><li><a href="#toc2" tabindex="0">CIとは？変更をこまめに取り込み、自動で確認すること</a></li><li><a href="#toc3" tabindex="0">CDとは？確認済みの変更を届けられる状態にすること</a></li><li><a href="#toc4" tabindex="0">CI/CDの全体像を図で整理する</a></li><li><a href="#toc5" tabindex="0">CI/CDでは何が自動化されるのか</a></li><li><a href="#toc6" tabindex="0">GitHub ActionsとCI/CDの関係</a></li><li><a href="#toc7" tabindex="0">CI/CDを使うメリット</a></li><li><a href="#toc8" tabindex="0">手作業リリースとの違い</a></li><li><a href="#toc9" tabindex="0">初心者がつまずきやすいポイント</a></li><li><a href="#toc10" tabindex="0">関連して読みたい記事</a></li><li><a href="#toc11" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">まず結論：CI/CDは変更を安全に届けるための流れ</span></h2>



<p>CI/CDを最初に理解するときは、次のように考えると分かりやすいです。</p>



<pre class="wp-block-code"><code>コードを変更する
  ↓
自動でビルドする
  ↓
自動でテストする
  ↓
問題がなければ、届けられる状態にする</code></pre>



<p>この一連の流れをまとめてCI/CDと呼びます。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>用語</th><th>読み方</th><th>ざっくりした意味</th></tr></thead><tbody><tr><td>CI</td><td>Continuous Integration</td><td>変更をこまめに取り込み、自動で確認すること</td></tr><tr><td>CD</td><td>Continuous Delivery / Continuous Deployment</td><td>確認済みの変更を、利用者へ届けられる状態にすること</td></tr></tbody></table></div></figure>



<p>日本語では、CIは「継続的インテグレーション」、CDは「継続的デリバリー」または「継続的デプロイメント」と呼ばれます。</p>



<p>難しく見えますが、初心者のうちは<strong>「変更したコードを、毎回きちんと確認して、届けやすくする仕組み」</strong>と理解すれば十分です。</p>



<h2 class="wp-block-heading"><span id="toc2">CIとは？変更をこまめに取り込み、自動で確認すること</span></h2>



<p>CIは、Continuous Integrationの略です。直訳すると「継続的インテグレーション」です。</p>



<p>インテグレーションとは、複数の変更を1つに統合することです。チーム開発では、複数人がそれぞれコードを変更します。その変更を長期間ため込むと、あとでまとめたときに問題が起きやすくなります。</p>



<p>CIでは、コードの変更をこまめに取り込み、そのたびに自動で確認します。</p>



<ul class="wp-block-list is-style-icon-list-check has-list-style">
<li>ビルドできるか</li>



<li>テストが通るか</li>



<li>基本的なチェックに失敗していないか</li>
</ul>



<p>つまりCIの目的は、<strong><span class="marker-under">問題を早く見つけること</span></strong>です。</p>



<p>ビルドの意味が曖昧な場合は、先に<a href="https://it-biz.online/it-skills/build/">ビルドとは？</a>を読むと理解しやすくなります。コンパイルとの違いは、<a href="https://it-biz.online/it-skills/compile/">コンパイルとは？</a>で整理しています。</p>



<h2 class="wp-block-heading"><span id="toc3">CDとは？確認済みの変更を届けられる状態にすること</span></h2>



<p>CDは、文脈によって2つの意味で使われます。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>用語</th><th>意味</th><th>ポイント</th></tr></thead><tbody><tr><td>Continuous Delivery</td><td>継続的デリバリー</td><td>いつでもリリースできる状態まで自動化する</td></tr><tr><td>Continuous Deployment</td><td>継続的デプロイメント</td><td>テストに通った変更を本番環境などへ自動で反映する</td></tr></tbody></table></div></figure>



<p>初心者がまず押さえるべきなのは、<strong>CDは「確認済みの変更を届ける段階」</strong>だということです。</p>



<p>ただし、すべての現場で本番環境への反映まで完全自動化しているわけではありません。最後の公開判断は人が行い、そこまでのビルドやテスト、リリース準備を自動化する構成もよくあります。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon">
  <div class="speech-person">
    <figure class="speech-icon"><img wpfc-lazyload-disable="true" decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure>
    <div class="speech-name"></div>
  </div>
  <div class="speech-balloon">
    <p>「CD」とだけ書かれている場合は、継続的デリバリーなのか、継続的デプロイメントなのかを文脈で確認しましょう。</p>
  </div>
</div>



<h2 class="wp-block-heading"><span id="toc4">CI/CDの全体像を図で整理する</span></h2>



<p>CI/CDは、コード変更からリリース準備までをつなぐパイプラインとして考えると理解しやすくなります。</p>



<p>次の図では、<strong><span class="marker-under">CIは「壊れていないか確認する場所」、CDは「届けられる状態にする場所」</span></strong>として見てください。CI/CDをツール名として覚えるより、この流れで見る方が実務の会話を理解しやすくなります。</p>



<figure class="wp-block-image aligncenter size-large"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2026/05/ci-cd-flow-v2.png" alt="CI/CDではコード変更を起点にCIで確認しCDで届けられる状態へ進むことを示す図"/><figcaption class="wp-element-caption">CIは確認、CDは届ける準備として見ると、CI/CDの役割を分けて理解できます。</figcaption></figure>



<p>パイプラインとは、複数の処理を順番につないだ流れのことです。CI/CDパイプラインでは、たとえば次のような処理が順番に動きます。</p>



<ul class="wp-block-list is-style-icon-list-comment has-list-style">
<li>コードがpushされる</li>



<li>依存ライブラリを準備する</li>



<li>ビルドする</li>



<li>自動テストを実行する</li>



<li>成果物を作る</li>



<li>必要に応じてデプロイする</li>
</ul>



<p>重要なのは、CI/CDが「一度設定したら何でも勝手にうまくいく魔法」ではないことです。どのチェックを実行するか、失敗したときに止めるか、誰が最終確認するかは、プロジェクトごとに設計します。</p>



<h2 class="wp-block-heading"><span id="toc5">CI/CDでは何が自動化されるのか</span></h2>



<p>CI/CDで自動化される代表的な処理を整理します。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>処理</th><th>何をするか</th><th>なぜ必要か</th></tr></thead><tbody><tr><td>ビルド</td><td>プログラムを実行・配布できる形にする</td><td>変更後も成果物を作れるか確認するため</td></tr><tr><td>テスト</td><td>自動テストを実行する</td><td>変更で既存機能が壊れていないか確認するため</td></tr><tr><td>静的解析</td><td>コードの書き方や潜在的な問題をチェックする</td><td>人の目だけでは見落としやすい問題を早く見つけるため</td></tr><tr><td>成果物作成</td><td>jar、zip、Dockerイメージなどを作る</td><td>配布やデプロイに使う材料を作るため</td></tr><tr><td>デプロイ</td><td>アプリを環境へ反映する</td><td>利用者が変更後のアプリを使えるようにするため</td></tr></tbody></table></div></figure>



<p>すべてのプロジェクトで、これらを全部自動化する必要があるわけではありません。最初は「pushしたらテストだけ自動で動く」でもCIの第一歩です。</p>



<h2 class="wp-block-heading"><span id="toc6">GitHub ActionsとCI/CDの関係</span></h2>



<p>GitHub Actionsは、GitHub上でワークフローを自動実行できる仕組みです。CI/CDそのものではなく、CI/CDを実現するためのツールの1つです。</p>



<p>たとえば、GitHubにpushされたらテストを実行する、pull requestが作られたらビルドする、といった処理を自動化できます。</p>



<pre class="wp-block-code"><code>name: ci

on:
  push:
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm install
      - run: npm test</code></pre>



<p>この例では、pushやpull requestをきっかけに、依存ライブラリのインストールとテストを実行しています。実際の設定はプロジェクトによって変わりますが、考え方は同じです。</p>



<p>GitHub Actionsの基本は、<a href="https://it-biz.online/it-skills/github-actions/">GitHub Actionsとは？</a>の記事で解説しています。Gitの変更単位であるコミットについては、<a href="https://it-biz.online/it-skills/git-commit/">Gitのコミットとは何か？</a>もあわせて読むと理解しやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc7">CI/CDを使うメリット</span></h2>



<p>CI/CDを使うメリットは、単に作業が楽になることだけではありません。開発の品質とスピードを両方支えるために使われます。</p>



<ul class="wp-block-list is-style-icon-list-thumb-up has-list-style">
<li>問題を早く見つけられる</li>



<li>手作業によるミスを減らせる</li>



<li>チーム全員が同じ確認手順を使える</li>



<li>リリース前の不安を小さくできる</li>



<li>小さな変更をこまめに届けやすくなる</li>
</ul>



<p>特に大きいのは、<strong><span class="marker-under">問題を「あとでまとめて見つける」のではなく、「変更した直後に見つける」</span></strong>点です。</p>



<p>テストの考え方を押さえたい場合は、<a href="https://it-biz.online/it-skills/7rules-testing/">システムテストの７原則</a>や、<a href="https://it-biz.online/it-skills/testing/">ホワイトボックステストとブラックボックステストの違い</a>も参考になります。</p>



<h2 class="wp-block-heading"><span id="toc8">手作業リリースとの違い</span></h2>



<p>CI/CDを導入する前は、ビルドやテスト、デプロイ準備を人が手順書に沿って実行することがあります。もちろん手作業がすべて悪いわけではありませんが、毎回同じ確認を人が行うと、漏れや手順違いが起きやすくなります。</p>



<p>この比較図で見てほしいのは、CI/CDが単に「作業を楽にする仕組み」ではない点です。重要なのは、<strong><span class="marker-under">確認を人の記憶や手順から、毎回同じように動く仕組みへ移すこと</span></strong>です。</p>



<figure class="wp-block-image aligncenter size-large"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2026/05/ci-cd-manual-vs-auto-v2.png" alt="CI/CDは確認を人の手順からパイプラインへ移す考え方であることを示す比較図"/><figcaption class="wp-element-caption">CI/CDでは、確認の手順をパイプライン化することで、確認漏れや担当者ごとの差を減らしやすくなります。</figcaption></figure>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>観点</th><th>手作業中心</th><th>CI/CD</th></tr></thead><tbody><tr><td>確認タイミング</td><td>リリース前にまとめて確認しがち</td><td>変更ごとに確認しやすい</td></tr><tr><td>手順</td><td>担当者の作業に依存しやすい</td><td>設定された手順で毎回動く</td></tr><tr><td>失敗の発見</td><td>遅くなることがある</td><td>早く気づきやすい</td></tr><tr><td>改善</td><td>手順書更新が中心</td><td>パイプライン設定を改善する</td></tr></tbody></table></div></figure>



<p>ただし、CI/CDを入れれば品質が自動的に上がるわけではありません。意味のあるテストやチェックを用意し、その結果をチームが見て改善していくことが重要です。</p>



<h2 class="wp-block-heading"><span id="toc9">初心者がつまずきやすいポイント</span></h2>



<p>CI/CDで初心者がつまずきやすいポイントを整理します。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>つまずき</th><th>まずこう理解する</th></tr></thead><tbody><tr><td>CI/CDはGitHub Actionsのこと？</td><td>CI/CDは考え方。GitHub Actionsは実現するためのツール</td></tr><tr><td>CIとCDの境目が分からない</td><td>CIは確認、CDは届ける準備・反映と考える</td></tr><tr><td>CDは必ず本番自動反映？</td><td>必ずではない。最後に人が承認する運用もある</td></tr><tr><td>テストがないとCIはできない？</td><td>最初はビルド確認や簡単なチェックから始められる</td></tr><tr><td>CI/CDを入れればバグはなくなる？</td><td>なくならない。早く気づくための仕組みと考える</td></tr></tbody></table></div></figure>



<p>特に大事なのは、CI/CDを「自動化ツールの設定」とだけ考えないことです。CI/CDの本質は、<strong>変更を小さく確認し、問題を早く見つけ、届けるまでの流れを安定させること</strong>です。</p>



<h2 class="wp-block-heading"><span id="toc10">関連して読みたい記事</span></h2>



<p>CI/CDは、Git、ビルド、テスト、構成管理とつながっている用語です。次の記事もあわせて読むと理解が深まります。</p>



<ul class="wp-block-list">
<li><a href="https://it-biz.online/it-skills/github-actions/">GitHub Actionsとは？仕組みや使い方を３分でわかりやすく</a></li>



<li><a href="https://it-biz.online/it-skills/build/">ビルドとは？プログラミングの基本用語を１分でわかりやすく</a></li>



<li><a href="https://it-biz.online/it-skills/compile/">コンパイルとは？初心者向けに1からわかりやすく解説</a></li>



<li><a href="https://it-biz.online/it-skills/git-commit/">Gitのコミットとは何か？その本質を3分でわかりやすく解説</a></li>



<li><a href="https://it-biz.online/it-skills/c-management/">構成管理とは？目的と意味を３分で解説！</a></li>
</ul>



<h2 class="wp-block-heading"><span id="toc11">まとめ</span></h2>



<p>CI/CDとは、コードの変更を自動で確認し、安全に届けるための流れです。</p>



<ul class="wp-block-list is-style-icon-list-check has-list-style">
<li>CIは、変更をこまめに取り込み、自動で確認すること</li>



<li>CDは、確認済みの変更を届けられる状態にすること</li>



<li>GitHub Actionsなどのツールは、CI/CDを実現する手段</li>



<li>CI/CDの目的は、問題を早く見つけ、手作業のミスを減らすこと</li>
</ul>



<p>最初から高度なデプロイ戦略まで覚える必要はありません。まずは、<strong><span class="marker-under">「pushしたら自動でビルド・テストが動き、問題があれば早く気づける仕組み」</span></strong>として理解すると、CI/CDの全体像をつかみやすくなります。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://it-biz.online/it-skills/ci-cd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>JSPファイル超入門 – 0 → 現場で“JSPの人”になるまで</title>
		<link>https://it-biz.online/web-design/html/java-server-pages/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Tue, 06 May 2025 04:00:00 +0000</pubDate>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Web開発]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=10372</guid>

					<description><![CDATA[JSP（Java Server Pages）は HTMLにJavaコードを差し込み、動的ページを生成する仕組み です。 まず最初にお伝えしたいのは、JSPは決して難しいものではありません。むしろ、「ちょっと動きのあるWe [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>JSP（Java Server Pages）は <strong><a href="https://it-biz.online/web-design/html-basic/">HTML</a>にJavaコードを差し込み、動的ページを生成する仕組み</strong> です。</p>



<p>まず最初にお伝えしたいのは、<strong>JSPは決して難しいものではありません。</strong>むしろ、「ちょっと動きのあるWebページを、できるだけ簡単に作りたい！」という人のために生まれたものなのです。近年では他の技術に取って代わられた印象が否めないJSPですが、昔からある巨大なレガシーシステムなどでは現役で、システムの更改案件などではよく目にすることがあります。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このページでは「JSPってそもそも何？」という一番大事な部分から、初心者向けに順を追って１からわかりやすく専門用語を避けて解説します。</p>
</div></div>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">JSPとは何か？</a><ol><li><a href="#toc2" tabindex="0">【前提１】静的なページと動的なページ</a></li><li><a href="#toc3" tabindex="0">JSPとはどのような技術か</a></li><li><a href="#toc4" tabindex="0">JSPの動作のしくみ</a></li></ol></li><li><a href="#toc5" tabindex="0">JSPを動かすための準備</a><ol><li><a href="#toc6" tabindex="0">JSPの動作に必要なもの</a></li></ol></li><li><a href="#toc7" tabindex="0">最初のJSPファイルを作ってみよう</a><ol><li><a href="#toc8" tabindex="0">JSPファイルとはどんなファイルか</a></li><li><a href="#toc9" tabindex="0">ブラウザで表示してみる</a></li></ol></li><li><a href="#toc10" tabindex="0">JSPの基本構文</a><ol><li><a href="#toc11" tabindex="0">JSPの構成要素</a></li><li><a href="#toc12" tabindex="0">ディレクティブ</a></li><li><a href="#toc13" tabindex="0">スクリプトレット</a></li><li><a href="#toc14" tabindex="0">式（Expression）</a></li><li><a href="#toc15" tabindex="0">宣言</a></li><li><a href="#toc16" tabindex="0">コメントの書き方</a></li><li><a href="#toc17" tabindex="0">スクリプトレットはなるべく使わない</a></li></ol></li><li><a href="#toc18" tabindex="0">ELとJSTLでスクリプトレットのないJSPへ</a><ol><li><a href="#toc19" tabindex="0">EL（式言語）とは</a></li><li><a href="#toc20" tabindex="0">JSTL（JSP標準タグライブラリ）とは</a></li><li><a href="#toc21" tabindex="0">JSPをすっきり保つために</a></li></ol></li><li><a href="#toc22" tabindex="0">フォームからデータを受け取る</a><ol><li><a href="#toc23" tabindex="0">フォーム送信の流れ</a></li><li><a href="#toc24" tabindex="0">フォームを作るJSP（entry.jsp）</a></li><li><a href="#toc25" tabindex="0">データを受け取るJSP（result.jsp）</a></li><li><a href="#toc26" tabindex="0">ELを使って書き換える</a></li></ol></li><li><a href="#toc27" tabindex="0">セッションとCookieでデータを保持する</a><ol><li><a href="#toc28" tabindex="0">セッションの基本操作</a></li><li><a href="#toc29" tabindex="0">Cookieとは</a></li><li><a href="#toc30" tabindex="0">Cookieの基本操作</a></li><li><a href="#toc31" tabindex="0">セッションとCookieの使い分け</a></li></ol></li><li><a href="#toc32" tabindex="0">JSPで簡単なアンケートアプリを作ろう</a><ol><li><a href="#toc33" tabindex="0">アプリの構成と目的</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">JSPとは何か？</span></h2>



<p><strong>JSP（Java Server Pages）</strong>は、Javaを使ってWebページを動的に生成するための技術で、通常のHTMLファイルにJavaのコードを埋め込むことで、アクセスするたびに内容が変化するページを作成することを可能にします。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>そのため、JSPはJavaをベースとしていますが、HTMLの知識があれば、基本的な使い方は十分に理解することができます。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc2">【前提１】静的なページと動的なページ</span></h3>



<p>Webページには、大きく分けて2種類あります。<br>1つは「<strong>静的なページ</strong>」、もう1つは「<strong>動的なページ</strong>」です。</p>


<a href="https://it-biz.online/it-skills/static-dynamic/" title="静的コンテンツ/動的コンテンツの違いを１分で解説【初心者向け】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img fetchpriority="high" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2049-static-dynamic-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2049-static-dynamic-320x180.png 320w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2049-static-dynamic-500x282.png 500w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2049-static-dynamic-800x451.png 800w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2049-static-dynamic-300x169.png 300w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2049-static-dynamic-768x433.png 768w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2049-static-dynamic-240x135.png 240w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2049-static-dynamic-640x360.png 640w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2049-static-dynamic.png 1480w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">静的コンテンツ/動的コンテンツの違いを１分で解説【初心者向け】</div><div class="blogcard-snippet internal-blogcard-snippet">【初心者向け】「動的」「静的」という言葉の意味とその違いを端的に解説します。本で学習したがイマイチ理解できない、、、結局一言でいうと違いは何？という疑問をお持ちの方に具体例を用いながら分かりやすく解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.04.26</div></div></div></div></a>


<p>静的なページとは、内容があらかじめ決まっていて、アクセスするたびに同じ内容が表示されるページです。たとえば、自己紹介だけが書かれた会社のホームページや、お知らせ一覧だけが載っているページなどが該当します。</p>



<p>一方、動的なページは、アクセスした時点の情報や、閲覧しているユーザーの状態に応じて内容が変わります。たとえば、ショッピングサイトで商品が表示されたり、ログイン中のユーザー名が画面に表示されたりするページがそうです。</p>



<p><strong><span class="marker-under">静的なページはHTMLだけで作成できますが、動的なページを作るには、プログラムによってページの内容を生成する仕組みが必要</span></strong>です。JSPは、そのような仕組みの一つです。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>もちろんJSP以外にも同じようなことを実現することが可能で、現代ではほとんどJSP以外が主役です。なのですが、レガシーシステムでは今でも現役で動いていることが多いので「まあ知っておいて損はないかな」というのがJSPの位置づけです。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc3">JSPとはどのような技術か</span></h3>



<p>JSPは、<strong>JavaのコードをHTMLに埋め込むことで</strong>、Webサーバー上で動的にHTMLを生成する技術です。拡張子が <code><span class="blue">.jsp</span></code> であるファイルを使ってページを作成します。</p>



<p>JSPファイルは、<a href="https://it-biz.online/it-skills/web-server/">Webサーバー</a>（通常は<strong>Tomcat</strong>）に配置され、ユーザーがアクセスすると、サーバー側でJavaのコードが実行されます。その結果として生成されたHTMLが、ブラウザに送信され、画面に表示されます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>つまり、JSPは「動的にHTMLを生成する仕組み」であり、「HTMLの中にJavaの処理を一部書き足せる形式のファイル」と言えます。</p>
</div></div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p>JSPは、以下のような場面でよく利用されます。</p>



<ul class="wp-block-list">
<li>ユーザーの入力に応じて表示内容を変えたいとき</li>



<li>データベースから取得した情報を一覧表示したいとき</li>



<li>フォーム送信結果を別の画面に反映したいとき</li>



<li>ログインしたユーザーごとにページの表示内容を切り替えたいとき</li>
</ul>



<p>このような場合、HTMLだけでは対応が難しくなりますが、JSPを使えば、これらの処理をサーバー側で実現できます。</p>
</div>



<h3 class="wp-block-heading"><span id="toc4">JSPの動作のしくみ</span></h3>



<p>JSPファイルは、ユーザーがアクセスしたときに、サーバー側で一度「Javaのクラス（Servlet）」に変換されます。変換されたクラスはコンパイルされ、Javaプログラムとして実行されます。このとき、JSPファイルに書かれたHTMLの部分はそのままHTMLとして出力され、Javaのコード部分は処理されて結果が埋め込まれます。最終的に生成されたHTMLがブラウザに送信され、ユーザーに表示されます。</p>



<p>このしくみによって、JSPは1枚のファイルで「HTMLの見た目」と「動的な処理」を両立させることができます。</p>



<p class="has-text-align-center"><strong>JSPの動き方の流れ</strong></p>



<ol class="wp-block-list is-style-numeric-list-enclosed has-list-style">
<li class="is-style-bottom-margin-1em has-bottom-margin">ユーザーが <code>.jsp</code> ファイルをリクエストする（例：<code>hello.jsp</code>）</li>



<li class="is-style-bottom-margin-1em has-bottom-margin">Tomcat がその <code>.jsp</code> を読んで、中の Java を実行</li>



<li class="is-style-bottom-margin-1em has-bottom-margin">結果として HTML を作り出し、ブラウザに返す</li>



<li>ブラウザには、あたかも普通のHTMLのように見える</li>
</ol>



<p>この一連の流れによって、「動きのあるページ」がリクエスト元に返却されることになります。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<p class="has-text-align-center"><span class="badge-green">まとめ１</span>　<strong>JSPファイルとは？</strong></p>



<ol class="wp-block-list is-style-numeric-list-enclosed has-list-style">
<li class="is-style-bottom-margin-2em has-bottom-margin">HTMLだけでは静的なページしか作れない。<br>→JSPを使うことで動的なページが作成できます。</li>



<li class="is-style-bottom-margin-2em has-bottom-margin">JSPは、JavaのコードをHTMLに埋め込むことで、アクセスごとに変化するページを生成。</li>



<li class="is-style-bottom-margin-2em has-bottom-margin">JSPは、Webサーバー上で実行され、結果がHTMLとしてブラウザに表示される。</li>
</ol>
</div>



<h2 class="wp-block-heading"><span id="toc5">JSPを動かすための準備</span></h2>



<p>JSPファイルは、<strong>通常のHTMLファイルと違い、単独では動作しません。</strong>JSPはサーバー側でJavaのコードを実行する仕組みのため、その処理を受け持つ「Webサーバー」や「Javaの開発環境」が必要です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この章では、JSPを動かすために必要なソフトウェアや環境を、1つずつ順を追って準備していきます。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc6">JSPの動作に必要なもの</span></h3>



<p>JSPを動作させるには、次の3つが必要です。<strong>ここでは、それってそもそも何？みたいな説明＋実際にあなたのPCにインストールする手順をメモ程度に記載しておきますので、この辺の知識がすでにあるよ！という方は読み飛ばしてください。</strong></p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>項目</th><th>説明</th></tr></thead><tbody><tr><td>JDK（Java Development Kit）</td><td>Javaのプログラムを実行するために必要なソフトウェアです。JSPはJavaで動作するため、必ず必要になります。</td></tr><tr><td>Tomcat（トムキャット）</td><td>JSPファイルを処理し、Javaのコードを実行してHTMLに変換するWebサーバーです。</td></tr><tr><td>エディタ（テキスト編集ソフト）</td><td>JSPファイルを作成するための道具です。Visual Studio Code（VS Code）やIntelliJ IDEAなどが便利です。</td></tr></tbody></table></div></figure>



<h4 class="wp-block-heading">JDKのインストール</h4>



<p>まず、Javaの開発環境であるJDKをインストールします。JDKがインストールされていないと、JSPも動作しません。</p>


<a href="https://it-biz.online/java/java-setup/" title="Javaの開発環境構築の３ステップ解説（JDK/JRE/JVMの仕組みを１から解説）" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2024/05/image-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2024/05/image-320x180.png 320w, https://it-biz.online/wp-content/uploads/2024/05/image-240x135.png 240w, https://it-biz.online/wp-content/uploads/2024/05/image-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">Javaの開発環境構築の３ステップ解説（JDK/JRE/JVMの仕組みを１から解説）</div><div class="blogcard-snippet internal-blogcard-snippet">【超・初心者向け】Javaの開発環境を初心者向けに簡単に設定する方法をわかりやすく解説します。JDKのインストール、IDEの選択、開発のスタートまで、スムーズにJavaプログラミングを始める方法をご説明します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.04.16</div></div></div></div></a>


<p class="has-text-align-center"><span class="inline-button-green">手順</span></p>



<ol class="wp-block-list is-style-numeric-list-enclosed has-list-style">
<li class="is-style-bottom-margin-2em has-bottom-margin">Oracleの公式サイトまたはOpenJDKのサイトから、JDKをダウンロード。</li>



<li class="is-style-bottom-margin-2em has-bottom-margin">お使いのOSに合ったインストーラを選び、画面の指示に従ってインストール。</li>



<li>インストール後、コマンドプロンプト（またはターミナル）を開き、↓のコマンドを入力。</li>
</ol>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">java -version
</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>バージョンが表示されれば、正常にインストールされています。</p>
</div></div>



<h4 class="wp-block-heading">Tomcatのインストール</h4>



<p>JSPファイルを処理するために、Tomcatをインストールします。<strong><span class="marker-under">TomcatはJavaで動作するWebサーバー</span></strong>で、JSPの実行に適した軽量なサーバーです。</p>



<p class="has-text-align-center"><span class="inline-button-green">手順</span></p>



<ol class="wp-block-list is-style-numeric-list-enclosed has-list-style">
<li class="is-style-bottom-margin-2em has-bottom-margin">Apache Tomcat の公式サイトにアクセス。</li>



<li class="is-style-bottom-margin-2em has-bottom-margin">zip ファイル（Windows の場合）または tar.gz ファイル（Mac/Linux の場合）をダウンロード。</li>



<li class="is-style-bottom-margin-2em has-bottom-margin">ダウンロードしたファイルを任意の場所に展開（解凍）。<br>→<code>C:\tomcat</code> や <code>~/tomcat</code> などが一般的ですが、どこでもOK。</li>



<li class="is-style-bottom-margin-2em has-bottom-margin"><code>bin</code>フォルダにある <code>startup.bat</code>（Windows）または <code>startup.sh</code>（Mac/Linux）を実行。</li>



<li>ブラウザを開き、次のURLにアクセスします：</li>
</ol>




<a rel="noopener" href="http://localhost:8080/" title="&#28961;&#21177;&#12394;URL&#12391;&#12377;" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/http%3A%2F%2Flocalhost%3A8080%2F?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">&#28961;&#21177;&#12394;URL&#12391;&#12377;</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=http://localhost:8080/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">localhost</div></div></div></div></a>
</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Tomcatのトップページが表示されれば、インストールは成功です。</p>
</div></div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p>注意：すでに他のアプリケーションがポート8080を使っている場合、Tomcatが起動できないことがあります。その場合は、設定ファイル（server.xml）でポート番号を変更してください。</p>
</div>



<h4 class="wp-block-heading">JSP用のフォルダを作る</h4>



<p>Tomcatでは、<code><span class="bold-blue">webapps</span></code> フォルダの中にあるプロジェクトが自動的に読み込まれます。自分でJSPファイルを作って表示するには、ここに新しいフォルダを作成します。</p>



<p class="has-text-align-center"><span class="inline-button-green">手順</span></p>



<ol class="wp-block-list is-style-numeric-list-enclosed has-list-style">
<li class="is-style-bottom-margin-2em has-bottom-margin">Tomcatフォルダ内の <code>webapps</code> に移動。</li>



<li class="is-style-bottom-margin-2em has-bottom-margin">新しくフォルダを作成し、たとえば <code>jsp-demo</code> という名前をつける。</li>



<li><code>jsp-demo</code> フォルダの中に、最初のJSPファイルを作成します。ファイル名は <code>hello.jsp</code> など。</li>
</ol>



<h4 class="wp-block-heading">エディタの準備</h4>



<p>JSPファイルは、普通のテキストファイルとして作成できますが、プログラミングに適したエディタを使うと効率が上がります。以下のいずれかのエディタを使用するのが一般的です。</p>



<ul class="wp-block-list">
<li>Visual Studio Code（無料で軽量、拡張機能が豊富）</li>



<li>IntelliJ IDEA（Javaに特化した統合開発環境）</li>



<li>Eclipse（Java開発で定番のIDE）</li>
</ul>



<p>初心者の方には、<strong>Visual Studio Codeが扱いやすくおすすめ</strong>です。必要に応じて「Java Extension Pack」などを追加すると、補完機能や構文チェックも利用できます。</p>



<h2 class="wp-block-heading"><span id="toc7">最初のJSPファイルを作ってみよう</span></h2>



<p>前の章で、JSPを動かすための準備が整いました。この章では、実際にJSPファイルを1つ作成し、それをブラウザで表示するところまで進めます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ここでは、「JSPとはどういうものか」を実際に体験しながら、基本的な書き方や仕組みを理解していきます。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc8">JSPファイルとはどんなファイルか</span></h3>



<p>JSPファイルは、基本的にはHTMLっぽく見えるコードで、この中の必要な部分にJavaのコードを差し込むことで、表示内容を動的に変えることができるようにしています。たとえば、「現在の日時を表示する」などの処理が可能になります。</p>



<p>JSPファイルの拡張子は <code><span class="bold-blue">.jsp</span></code> です。ファイルの中には、通常のHTMLタグと、Javaのコードが組み合わさって記述されます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%@ page contentType="text/html; charset=UTF-8" %>
&lt;!DOCTYPE html>
&lt;html>
&lt;head>
  &lt;meta charset="UTF-8">
  &lt;title>Hello JSP&lt;/title>
&lt;/head>
&lt;body>
  &lt;h1>こんにちは、JSPの世界へようこそ！&lt;/h1>
  &lt;p>現在の時刻は：&lt;%= java.time.LocalDateTime.now() %>&lt;/p>
&lt;/body>
&lt;/html>
</pre>



<p>上記のJSPファイルの中では、JavaのコードとHTMLが組み合わさっています。それぞれの部分について説明します。</p>



<ul class="wp-block-list is-style-icon-list-circle has-list-style">
<li class="is-style-bottom-margin-2em has-bottom-margin"><code>&lt;%@ page contentType="text/html; charset=UTF-8" %&gt;</code><br>→ この行は「ページ全体の設定」です。文字コードをUTF-8にすることで、文字化けを防ぎます。</li>



<li><code>&lt;%= java.time.LocalDateTime.now() %&gt;</code><br>→ この部分がJSPの特徴です。「現在の時刻を表示する」Javaのコードが入っています。<br><code>&lt;%=</code> と <code>%&gt;</code> で囲まれた中はJavaの「式」として実行され、結果がそのままHTMLに差し込まれます。</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>上記のファイルをブラウザで表示するためにエディタで編集して保存しましょう。</p>
</div></div>



<ol class="wp-block-list is-style-numeric-list-enclosed has-list-style">
<li class="is-style-bottom-margin-2em has-bottom-margin">Tomcatの <code>webapps</code> フォルダの中にある、前章で作成した <code>jsp-demo</code> フォルダに移動。</li>



<li class="is-style-bottom-margin-2em has-bottom-margin"><code>hello.jsp</code> という名前の新しいファイルを作成。</li>



<li>ファイルをエディタで開き、↑の内容を記述し保存！</li>
</ol>



<h3 class="wp-block-heading"><span id="toc9">ブラウザで表示してみる</span></h3>



<p>ファイルを保存したら、Tomcatが起動していることを確認し、ブラウザで次のURLにアクセスしてみましょう。</p>




<a rel="noopener" href="http://localhost:8080/jsp-demo/hello.jsp" title="&#28961;&#21177;&#12394;URL&#12391;&#12377;" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/http%3A%2F%2Flocalhost%3A8080%2Fjsp-demo%2Fhello.jsp?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">&#28961;&#21177;&#12394;URL&#12391;&#12377;</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=http://localhost:8080/jsp-demo/hello.jsp" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">localhost</div></div></div></div></a>
</pre>



<p>画面に「こんにちは、JSPの世界へようこそ！」という見出しと、現在の時刻が表示されていれば成功です。</p>



<p>ブラウザでページを更新するたびに、時刻が変化するはずです。これは、<strong>JSPがアクセスされるたびにJavaのコードを実行して、ページの中身を動的に作っている</strong>ということを意味します。</p>



<h2 class="wp-block-heading"><span id="toc10">JSPの基本構文</span></h2>



<p>前の章では、JSPファイルを作成し、Javaのコードを埋め込むことで「現在の時刻を表示する」ページを作成しました。ここからは、JSPファイルで使われる代表的な構文について解説します。どのようにJavaのコードをHTMLに差し込むのか、そしてJSP特有の書き方にはどんな種類があるのかを、順を追って学習していきましょう。</p>



<h3 class="wp-block-heading"><span id="toc11">JSPの構成要素</span></h3>



<p>JSPでは、<strong>以下の4種類の記述形式が用意されています</strong>。これらを使い分けることで、Javaの処理とHTMLの表示を同時に扱うことができます。</p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>種類</th><th>記述方法</th><th>役割</th></tr></thead><tbody><tr><td>ディレクティブ</td><td><code>&lt;%<span class="bold-red">@</span> ... %&gt;</code></td><td>ページ全体の設定を行う（文字コードなど）</td></tr><tr><td>スクリプトレット</td><td><code>&lt;% ... %&gt;</code></td><td>Javaの処理（変数の定義や条件分岐など）を書く</td></tr><tr><td>式（Expression）</td><td><code>&lt;%<span class="bold-red">=</span> ... %&gt;</code></td><td>Javaの値をそのままHTMLに出力する</td></tr><tr><td>宣言</td><td><code>&lt;%<span class="bold-red">!</span> ... %&gt;</code></td><td>メソッドやフィールドを定義する（あまり使われない）</td></tr></tbody></table></div></figure>



<h3 class="wp-block-heading"><span id="toc12">ディレクティブ</span></h3>



<p>ディレクティブは、JSPファイル全体に関する設定を行うものです。最もよく使われるのは <code>page</code> ディレクティブです。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%@ page contentType="text/html; charset=UTF-8" %>
</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この記述によって、出力するHTMLの文字コードがUTF-8になります。日本語を正しく表示するために必須です。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc13">スクリプトレット</span></h3>



<p>スクリプトレットは、JSPファイル内にJavaの処理を書くための領域です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%
  int year = java.time.LocalDate.now().getYear();
  String message = "今年は " + year + " 年です。";
%>
&lt;p>&lt;%= message %>&lt;/p>
</pre>



<p>この例では、Javaで現在の年を取得し、それを文字列として作成しています。そして <code>&lt;%= ... %&gt;</code> を使って、結果をHTMLに出力しています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>スクリプトレットの中ではJavaの文法がそのまま使えます。ただし、後述するように<strong>スクリプトレットは新しい開発ではなるべく使わない方向にあります</strong>。</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc14">式（Expression）</span></h3>



<p>式は、値をそのままHTMLとして出力したいときに使います。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;p>こんにちは、&lt;%= "JSPユーザー" %>さん！&lt;/p>
</pre>



<p>上の例では、<code>"JSPユーザー"</code> という文字列がHTMLに挿入され、ブラウザには次のように表示されます。</p>



<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="">こんにちは、JSPユーザーさん！
</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この書き方は非常にシンプルで、<strong>値を表示するだけ</strong>であれば便利ですが、複雑な処理は向きません。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc15">宣言</span></h3>



<p>宣言は、JSPファイルの中で<strong>メソッドや変数を定義したい場合</strong>に使います。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%! 
  private String getGreeting(String name) {
    return "こんにちは、" + name + "さん！";
  }
%>
&lt;p>&lt;%= getGreeting("太郎") %>&lt;/p>
</pre>



<p>このように、JSPファイルの中で小さな関数を定義して、それを式の中で呼び出すこともできます。<strong>ただし、JSPファイルに処理を詰め込みすぎると保守が難しくなるため、このような記述はできるだけ避け、外部のJavaクラスに処理を分けることが望まれます。</strong></p>



<h3 class="wp-block-heading"><span id="toc16">コメントの書き方</span></h3>



<p>JSPには、HTMLのコメントと、JSP用のコメントの2種類があります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!-- これはHTMLのコメントです（ブラウザの「ページのソース」に表示されます） -->

&lt;%-- これはJSPのコメントです（ブラウザには一切表示されません） --%>
</pre>



<p>HTMLのコメントはWebページに送信されるため、内容を見られる可能性があります。<br>一方、JSPのコメントはサーバー側で処理が止まるため、セキュリティ的に重要なコメントや開発者向けのメモはJSPのコメントで書くのが安全です。</p>



<h3 class="wp-block-heading"><span id="toc17">スクリプトレットはなるべく使わない</span></h3>



<p>JSPの構文として紹介しましたが、<strong>スクリプトレット（<code>&lt;% ... %&gt;</code>）の使用は、今では非推奨</strong>とされています。理由は以下の通り。</p>



<ul class="wp-block-list is-style-icon-list-cross has-list-style">
<li>HTMLとJavaのロジックが混ざることで、読みづらくなる</li>



<li>保守性が下がり、エラーが起きやすくなる</li>



<li>JSTL（JSP標準タグライブラリ）やEL（式言語）の方がシンプルで安全に書ける</li>
</ul>



<p>そのため、今後はJSTLやELを使って、できるだけ「Javaコードを書かずに表示を制御する方法」を覚えていくことが大切です。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<p class="has-text-align-center"><span class="badge-green">まとめ</span>　<strong>JSPの基本構文</strong></p>



<ul class="wp-block-list">
<li>JSPには、ディレクティブ・スクリプトレット・式・宣言という4種類の書き方がある。</li>



<li>スクリプトレットや宣言ではJavaの文法をそのまま使うことができるが、使いすぎは避けるべし。</li>



<li>式（<code>&lt;%= ... %&gt;</code>）は、値を簡単に出力するのに便利です。</li>



<li>コメントは、必要に応じてJSPコメント（<code>&lt;%-- --%&gt;</code>）を使いましょう。</li>
</ul>
</div>



<p>次の章では、<strong>JSTLとEL（式言語）を使った“スクリプトレットを使わない”JSPの書き方</strong>を学びます。より読みやすく、安全なJSPの記述方法を習得していきましょう。</p>



<h2 class="wp-block-heading"><span id="toc18">ELとJSTLでスクリプトレットのないJSPへ</span></h2>



<p>ここまでの解説では、JSPの基本構文としてスクリプトレット（<code>&lt;% ... %&gt;</code>）などを紹介しました。<br>しかし近年のJSP開発では、<strong>スクリプトレットを使わない記述スタイル</strong>が主流となっています。</p>



<p>この章では、<strong>EL（Expression Language）とJSTL（JSP Standard Tag Library）</strong>という2つの仕組みを使って、<strong>JSPファイルの中にJavaコードを書かずに動的な表示を行う方法</strong>を学んでいきます。</p>



<h3 class="wp-block-heading"><span id="toc19">EL（式言語）とは</span></h3>



<p>EL（Expression Language）は、JSPの中で<strong>Javaの値を簡潔に記述するための言語</strong>です。<br>スクリプトレットのように <code>&lt;%=</code> で囲む必要がなく、シンプルに <code>${変数名}</code> と書くだけで値を出力できます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;p>こんにちは、${userName} さん。&lt;/p>
</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このコードでは、Javaのサーバー側で <code>userName</code> という名前のデータ（属性）が用意されていれば、自動的にその値が表示されます。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc20">JSTL（JSP標準タグライブラリ）とは</span></h3>



<p>JSTLとは、JSP上で使える<strong>共通の処理をあらかじめタグ化したライブラリ</strong>です。<br>たとえば、以下のような処理が可能です。</p>



<ul class="wp-block-list">
<li>条件分岐（if）</li>



<li>繰り返し処理（forEach）</li>



<li>値のフォーマット（日付や数値）</li>



<li>URLの生成</li>
</ul>



<p>JSTLを使うことで、<strong>複雑なJavaの処理をわかりやすいタグで書くことができる</strong>ようになります。</p>



<h4 class="wp-block-heading">JSTLを使う準備</h4>



<p>JSTLを使うには、JSTLライブラリの <code>.jar</code> ファイルを JSPプロジェクトの中に追加する必要があります。</p>



<p class="has-text-align-center"><span class="inline-button-green">手順</span></p>



<ol class="wp-block-list is-style-numeric-list-enclosed has-list-style">
<li class="is-style-bottom-margin-2em has-bottom-margin">JSTLの最新版（Jakarta標準）をダウンロード<br>→ <a>https://jakarta.ee/specifications/tags/</a></li>



<li class="is-style-bottom-margin-2em has-bottom-margin">ダウンロードした <code>jakarta.servlet.jsp.jstl-api-x.x.x.jar</code> などの <code>.jar</code> ファイルを、Tomcatの <code>lib</code> フォルダ、またはプロジェクトの <code>WEB-INF/lib</code> フォルダにコピーします。</li>



<li>JSPファイルの先頭に、以下のようにタグライブラリを読み込む宣言を記述します。</li>
</ol>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%@ taglib prefix="c" uri="https://jakarta.ee/taglibs/core" %>
</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この設定により、<code>&lt;c:if&gt;</code> や <code>&lt;c:forEach&gt;</code> などのJSTLタグが使えるようになります。</p>
</div></div>



<h4 class="wp-block-heading">JSTLで条件分岐をする</h4>



<p>スクリプトレットで <code>if</code> 文を書かなくても、JSTLの <code>&lt;c:if&gt;</code> タグを使うことで簡単に条件分岐ができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%@ taglib prefix="c" uri="https://jakarta.ee/taglibs/core" %>
&lt;c:if test="${loginUser != null}">
  &lt;p>ようこそ、${loginUser.name} さん&lt;/p>
&lt;/c:if>
</pre>



<p>このように、<code>loginUser</code> という属性が <code>null</code> でなければ、挨拶文が表示されます。</p>



<h4 class="wp-block-heading">JSTLで繰り返し表示をする</h4>



<p>リストや配列の内容を繰り返し表示するには、<code>&lt;c:forEach&gt;</code> を使います。</p>



<p>サーバー側で、次のようにリストをセットしておきます（Servletなどで）：</p>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">List&lt;String> names = List.of("太郎", "花子", "次郎");
request.setAttribute("nameList", names);
</pre>



<p>JSPファイルでは、次のように記述します：</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%@ taglib prefix="c" uri="https://jakarta.ee/taglibs/core" %>
&lt;ul>
  &lt;c:forEach var="name" items="${nameList}">
    &lt;li>${name}&lt;/li>
  &lt;/c:forEach>
&lt;/ul>
</pre>



<p>このコードにより、以下のようなHTMLが生成されます：</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;ul>
  &lt;li>太郎&lt;/li>
  &lt;li>花子&lt;/li>
  &lt;li>次郎&lt;/li>
&lt;/ul>
</pre>



<h3 class="wp-block-heading"><span id="toc21">JSPをすっきり保つために</span></h3>



<p>ELとJSTLを使うことで、JSPファイル内にJavaのコードを書く必要がなくなり、<strong>HTMLに近い構造を保ちながら動的な処理を行うことができます。</strong><br>これは、JSPを読みやすく・保守しやすくする上でも非常に重要です。</p>



<p>また、デザイナーと共同で作業するようなプロジェクトでも、HTMLに近い見た目を保つことで、分業がしやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc22">フォームからデータを受け取る</span></h2>



<p>JSPを使ってWebアプリケーションを作成する際、ユーザーの入力に応じて処理を行うことは非常に重要です。この章では、<strong>HTMLのフォームを使って入力されたデータを、JSPで受け取って表示する方法</strong>を学びます。</p>



<h3 class="wp-block-heading"><span id="toc23">フォーム送信の流れ</span></h3>



<p>フォームを使った処理は、次のような流れで行われます。</p>



<ol class="wp-block-list is-style-numeric-list-enclosed has-list-style">
<li>入力フォームのあるページ（JSP）を表示する</li>



<li>ユーザーが名前などの情報を入力し、送信ボタンを押す</li>



<li>入力内容がサーバーに送られる</li>



<li>受け取ったJSPファイルがその情報を読み取り、画面に表示する</li>
</ol>



<p>JSPではこの一連の流れを、HTMLとJavaの仕組みで簡単に実現できます。</p>



<h3 class="wp-block-heading"><span id="toc24">フォームを作るJSP（entry.jsp）</span></h3>



<p>まずは、名前を入力するための簡単なフォームを作成します。</p>



<h4 class="wp-block-heading">entry.jsp</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!DOCTYPE html>
&lt;html>
&lt;head>
  &lt;meta charset="UTF-8">
  &lt;title>名前の入力&lt;/title>
&lt;/head>
&lt;body>
  &lt;h2>お名前を入力してください&lt;/h2>
  &lt;form action="result.jsp" method="post">
    &lt;label>名前：&lt;input type="text" name="username" />&lt;/label>
    &lt;input type="submit" value="送信" />
  &lt;/form>
&lt;/body>
&lt;/html>
</pre>



<p>このページでは、名前を入力して「送信」ボタンを押すと、<code>result.jsp</code> にPOSTリクエストでデータが送信されます。</p>



<h3 class="wp-block-heading"><span id="toc25">データを受け取るJSP（result.jsp）</span></h3>



<p>次に、送信されたデータを受け取って表示するためのJSPファイルを作成します。</p>



<h4 class="wp-block-heading">result.jsp</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%@ page contentType="text/html; charset=UTF-8" %>
&lt;!DOCTYPE html>
&lt;html>
&lt;head>
  &lt;meta charset="UTF-8">
  &lt;title>入力結果&lt;/title>
&lt;/head>
&lt;body>
  &lt;h2>ようこそ！&lt;/h2>
  &lt;p>あなたの名前は &lt;strong>&lt;%= request.getParameter("username") %>&lt;/strong> さんですね。&lt;/p>
&lt;/body>
&lt;/html>
</pre>



<p>ここでは、<code>request.getParameter("username")</code> というコードで、フォームから送られたデータを取得しています。</p>



<ul class="wp-block-list">
<li><code>request</code> はJSPに自動で用意されているオブジェクト。</li>



<li><code>getParameter("username")</code> は、フォームの<code>name="username"</code> に対応した値を取得するメソッド。</li>
</ul>



<h3 class="wp-block-heading"><span id="toc26">ELを使って書き換える</span></h3>



<p>JSTLやELを使えば、<code>result.jsp</code> をもっとすっきり書くこともできます。以下のようにリクエスト属性に値をセットしてから表示することで、式言語を活用できます。</p>



<h4 class="wp-block-heading">Servlet側（例）</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">String name = request.getParameter("username");
request.setAttribute("username", name);
request.getRequestDispatcher("/result.jsp").forward(request, response);
</pre>



<h4 class="wp-block-heading">result.jsp：</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%@ taglib prefix="c" uri="https://jakarta.ee/taglibs/core" %>
&lt;p>こんにちは、${username} さん！&lt;/p>
</pre>



<p>ただし、Servletを使う方法はこのガイドの後半で詳しく扱いますので、今はまず <code>request.getParameter()</code> による受け取りに慣れることをおすすめします。</p>



<h2 class="wp-block-heading"><span id="toc27">セッションとCookieでデータを保持する</span></h2>



<p>JSPでは、ユーザーが入力した情報を「別のページでも使いたい」という場面がよくあります。<br>たとえば、ログイン状態を維持したり、前の画面で入力された名前を次の画面でも表示したりする場合です。</p>



<p>そのようなときに役立つのが <strong>セッション（Session）</strong> と <strong>クッキー（Cookie）</strong> です。<br>この章では、それぞれの役割と使い方を学びます。</p>



<h3 class="wp-block-heading"><span id="toc28">セッションの基本操作</span></h3>



<h4 class="wp-block-heading">データの保存：</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%
  String name = request.getParameter("username");
  session.setAttribute("userName", name);
%>
</pre>



<p>このコードは、<code>userName</code> という名前でセッションに値を保存します。</p>



<h4 class="wp-block-heading">データの取得：</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%
  String name = (String) session.getAttribute("userName");
%>
&lt;p>ようこそ、&lt;%= name %> さん&lt;/p>
</pre>



<p>このようにすれば、<strong>前のページで保存した値を、別のページで取り出して使うことができます。</strong></p>



<h4 class="wp-block-heading">セッションの有効期間と注意点</h4>



<p>セッションは、ユーザーがブラウザを閉じるか、一定時間操作をしないと自動的に無効になります。Tomcatの初期設定では、30分間操作がないとセッションが切れます。</p>



<p>また、<strong>多くの情報をセッションに保存しすぎると、サーバーのメモリを圧迫する可能性がある</strong>ため、用途を絞って使うことが大切です。</p>



<h3 class="wp-block-heading"><span id="toc29">Cookieとは</span></h3>



<p>Cookie（クッキー）は、<strong>情報をユーザーのブラウザに保存する仕組み</strong>です。<br>サーバー側から「この情報を保存しておいてください」と指示すると、ブラウザがその内容を保持し、次回以降のアクセス時にその情報を自動的に送信してきます。</p>



<h3 class="wp-block-heading"><span id="toc30">Cookieの基本操作</span></h3>



<h4 class="wp-block-heading">Cookieの作成と送信：</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%
  String name = request.getParameter("username");
  Cookie cookie = new Cookie("userName", name);
  cookie.setMaxAge(60 * 60); // 1時間（秒単位）
  response.addCookie(cookie);
%>
</pre>



<h4 class="wp-block-heading">Cookieの取得：</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%
  String name = "";
  Cookie[] cookies = request.getCookies();
  if (cookies != null) {
    for (Cookie c : cookies) {
      if ("userName".equals(c.getName())) {
        name = c.getValue();
      }
    }
  }
%>
&lt;p>こんにちは、&lt;%= name %> さん&lt;/p>
</pre>



<p>このように、Cookieを使えば、ブラウザに保存された情報を次回のアクセス時にも利用できます。</p>



<h3 class="wp-block-heading"><span id="toc31">セッションとCookieの使い分け</span></h3>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table class="has-fixed-layout"><thead><tr><th>比較項目</th><th>セッション</th><th>Cookie</th></tr></thead><tbody><tr><td>保存場所</td><td>サーバー側</td><td>ブラウザ側</td></tr><tr><td>有効期間</td><td>ログアウトや時間切れまで</td><td>明示的に期限を設定できる</td></tr><tr><td>データの大きさ</td><td>比較的大きなデータがOK</td><td>少量（4KBまで）</td></tr><tr><td>セキュリティ</td><td>比較的安全（外部に見えない）</td><td>攻撃に注意が必要（盗聴・改ざん）</td></tr></tbody></table></div></figure>



<p><strong>一時的な状態保持（ログイン情報など）にはセッション</strong>、<br><strong>ユーザーに関連する設定（言語選択やテーマなど）にはCookie</strong>がよく使われます。</p>



<h2 class="wp-block-heading"><span id="toc32">JSPで簡単なアンケートアプリを作ろう</span></h2>



<p>JSPを使ってWebアプリケーションを作るには、「複数ページにまたがる処理」を整理することが大切です。<br>この章では、<strong>3画面構成のアンケートアプリ</strong>を作り、情報の受け渡し、表示の切り替え、セッションの活用を総合的に体験します。</p>



<h3 class="wp-block-heading"><span id="toc33">アプリの構成と目的</span></h3>



<p>このアプリでは、以下のような流れでユーザーにアンケートに答えてもらい、最終画面でまとめて表示します。</p>



<ol class="wp-block-list">
<li><strong>入力画面</strong>：名前と好きな色を入力（form）</li>



<li><strong>確認画面</strong>：入力された内容を表示（セッションで一時保持）</li>



<li><strong>完了画面</strong>：ありがとうメッセージと入力内容の最終確認</li>
</ol>



<p class="has-text-align-center"><strong>プロジェクト構造</strong></p>



<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="">jsp-demo/
├─ input.jsp     （入力画面）
├─ confirm.jsp   （確認画面）
└─ thanks.jsp    （完了画面）
</pre>



<h4 class="wp-block-heading">入力画面：input.jsp</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%@ page contentType="text/html; charset=UTF-8" %>
&lt;!DOCTYPE html>
&lt;html>
&lt;head>&lt;meta charset="UTF-8">&lt;title>アンケート入力&lt;/title>&lt;/head>
&lt;body>
  &lt;h2>アンケートにご協力ください&lt;/h2>
  &lt;form action="confirm.jsp" method="post">
    &lt;p>お名前：&lt;input type="text" name="userName" />&lt;/p>
    &lt;p>好きな色：
      &lt;select name="favoriteColor">
        &lt;option value="赤">赤&lt;/option>
        &lt;option value="青">青&lt;/option>
        &lt;option value="緑">緑&lt;/option>
      &lt;/select>
    &lt;/p>
    &lt;input type="submit" value="確認画面へ" />
  &lt;/form>
&lt;/body>
&lt;/html>
</pre>



<h4 class="wp-block-heading">確認画面：confirm.jsp</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%@ page contentType="text/html; charset=UTF-8" %>
&lt;%
  String userName = request.getParameter("userName");
  String favoriteColor = request.getParameter("favoriteColor");

  session.setAttribute("userName", userName);
  session.setAttribute("favoriteColor", favoriteColor);
%>
&lt;!DOCTYPE html>
&lt;html>
&lt;head>&lt;meta charset="UTF-8">&lt;title>確認画面&lt;/title>&lt;/head>
&lt;body>
  &lt;h2>以下の内容でよろしいですか？&lt;/h2>
  &lt;p>お名前：&lt;%= userName %>&lt;/p>
  &lt;p>好きな色：&lt;%= favoriteColor %>&lt;/p>
  &lt;form action="thanks.jsp" method="post">
    &lt;input type="submit" value="送信する" />
  &lt;/form>
&lt;/body>
&lt;/html>
</pre>



<h4 class="wp-block-heading">完了画面：thanks.jsp</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;%@ page contentType="text/html; charset=UTF-8" %>
&lt;%
  String name = (String) session.getAttribute("userName");
  String color = (String) session.getAttribute("favoriteColor");

  // 必要があればセッションのデータを破棄
  session.invalidate();
%>
&lt;!DOCTYPE html>
&lt;html>
&lt;head>&lt;meta charset="UTF-8">&lt;title>送信完了&lt;/title>&lt;/head>
&lt;body>
  &lt;h2>ご協力ありがとうございました！&lt;/h2>
  &lt;p>&lt;strong>&lt;%= name %>&lt;/strong> さんの好きな色は &lt;strong>&lt;%= color %>&lt;/strong> ですね。&lt;/p>
&lt;/body>
&lt;/html>
</pre>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<p class="has-text-align-center">&#x2705; まとめ</p>



<ul class="wp-block-list">
<li><strong>JSPとは何か</strong>
<ul class="wp-block-list">
<li>HTMLにJavaの処理を埋め込んで、動的なWebページを作成できる技術</li>



<li class="is-style-bottom-margin-2em has-bottom-margin">サーバー側で処理され、HTMLとしてブラウザに返される</li>
</ul>
</li>



<li><strong>JSPの実行に必要な環境</strong>
<ul class="wp-block-list">
<li>JDKとTomcatが必須（Java実行環境とWebサーバー）</li>



<li class="is-style-bottom-margin-2em has-bottom-margin">JSPファイルはTomcatの<code>webapps</code>内に配置することで動作する</li>
</ul>
</li>



<li><strong>JSPファイルの基本構文</strong>
<ul class="wp-block-list">
<li><code>&lt;%@ page %&gt;</code>：ページ全体の設定</li>



<li><code>&lt;%= ... %&gt;</code>：Javaの値をHTMLに出力</li>



<li><code>&lt;% ... %&gt;</code>：処理を書く（スクリプトレット）</li>



<li class="is-style-bottom-margin-2em has-bottom-margin"><code>&lt;%! ... %&gt;</code>：変数やメソッドの宣言</li>
</ul>
</li>



<li><strong>スクリプトレットの非推奨と代替方法</strong>
<ul class="wp-block-list">
<li>EL（式言語）で<code>${変数名}</code>と書くと簡単に出力可能</li>



<li class="is-style-bottom-margin-2em has-bottom-margin">JSTLで<code>&lt;c:if&gt;</code>や<code>&lt;c:forEach&gt;</code>などの制御構文を記述可能</li>
</ul>
</li>



<li><strong>フォームデータの送受信</strong>
<ul class="wp-block-list">
<li><code>&lt;form&gt;</code>タグでデータをPOST送信し、<code>request.getParameter()</code>で取得</li>



<li class="is-style-bottom-margin-2em has-bottom-margin">データをセッションに保存して複数ページで利用可能</li>
</ul>
</li>



<li><strong>セッションとCookieの使い分け</strong>
<ul class="wp-block-list">
<li>セッション：サーバー側に一時的に情報を保持（ログイン状態など）</li>



<li class="is-style-bottom-margin-2em has-bottom-margin">Cookie：ブラウザに保存し、次回アクセス時に自動送信（言語設定など）</li>
</ul>
</li>
</ul>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Java】Stream APIとは？filter・map・collectの使い方を初心者向けに1から解説</title>
		<link>https://it-biz.online/java/java-stream-api/</link>
					<comments>https://it-biz.online/java/java-stream-api/#respond</comments>
		
		<dc:creator><![CDATA[bizonline_admin]]></dc:creator>
		<pubDate>Wed, 06 May 2026 05:07:22 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=10747</guid>

					<description><![CDATA[JavaのStream APIとは何か、filter・map・collectの読み方、for文との違いを初心者向けに概念図つきで解説します。]]></description>
										<content:encoded><![CDATA[
<p>JavaのStream APIは、ひとことで言うと、<strong><span class="marker-under">Listなどのデータを「順番に加工する流れ」として書くための仕組み</span></strong>です。</p>



<p>たとえば、名簿の中から「Sで始まる名前だけ」を取り出して、「大文字」に変えて、「新しいList」にしたいとします。このような処理を、上から順番に読める形で書けるのがStream APIです。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon">
  <div class="speech-person">
    <figure class="speech-icon"><img wpfc-lazyload-disable="true" decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure>
    <div class="speech-name"></div>
  </div>
  <div class="speech-balloon">
    <p>最初から難しい用語を覚える必要はありません。まずは「データを流して、途中で絞り込みや変換をして、最後に結果を受け取る」と考えればOKです。</p>
  </div>
</div>



<p>この記事では、Stream APIの意味、for文との違い、<code>filter</code>・<code>map</code>・<code>collect</code>の読み方を、初心者向けにできるだけかみ砕いて解説します。</p>



<p>なお、この記事で扱うStreamは、<code>java.util.stream</code>のStream APIです。ファイルの読み書きで出てくる<code>InputStream</code>や<code>OutputStream</code>とは別物です。ファイル入出力のストリームは、<a href="https://it-biz.online/java/java-io/">Java.ioを使用したファイルの読み書き</a>で解説しています。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-7" checked><label class="toc-title" for="toc-checkbox-7">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">まず結論：Stream APIは「データを順番に加工する書き方」</a></li><li><a href="#toc2" tabindex="0">何に困ったときにStream APIを使うの？</a></li><li><a href="#toc3" tabindex="0">まずはこのコードを読めればOK</a></li><li><a href="#toc4" tabindex="0">for文で書く場合と比べてみる</a></li><li><a href="#toc5" tabindex="0">filter・map・collectを1つずつ理解する</a><ol><li><a href="#toc6" tabindex="0">filterは「条件に合うものだけ残す」</a></li><li><a href="#toc7" tabindex="0">mapは「別の形に変える」</a></li><li><a href="#toc8" tabindex="0">collectは「最後に結果を受け取る」</a></li></ol></li><li><a href="#toc9" tabindex="0">実際に動くサンプルコード</a></li><li><a href="#toc10" tabindex="0">初心者がつまずきやすいポイント</a></li><li><a href="#toc11" tabindex="0">Stream APIはいつ使う？いつ使わない？</a></li><li><a href="#toc12" tabindex="0">関連して読みたい記事</a></li><li><a href="#toc13" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">まず結論：Stream APIは「データを順番に加工する書き方」</span></h2>



<p>Stream APIを理解するときは、次の3つだけを先に押さえてください。</p>



<ul class="wp-block-list is-style-icon-list-comment has-list-style">
  <li>元になるデータを用意する</li>
  <li>途中で、必要なものだけ残したり、形を変えたりする</li>
  <li>最後に、Listなどの結果として受け取る</li>
</ul>



<p>この流れをコードで書くと、だいたい次の形になります。</p>



<pre class="wp-block-code"><code>元のデータ.stream()
        .途中の処理()
        .途中の処理()
        .最後に結果を受け取る処理();</code></pre>



<p>専門用語では、途中の処理を「中間操作」、最後の処理を「終端操作」と呼びます。ただ、初心者のうちは、まず「途中の処理」と「最後の処理」と考えれば十分です。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1200" height="675" src="https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-concept-ja.png" alt="Stream APIはListそのものではなくListを処理するための流れを作るという概念図" class="wp-image-10753" srcset="https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-concept-ja.png 1200w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-concept-ja-500x281.png 500w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-concept-ja-800x450.png 800w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-concept-ja-300x169.png 300w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-concept-ja-768x432.png 768w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-concept-ja-240x135.png 240w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-concept-ja-320x180.png 320w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-concept-ja-640x360.png 640w" sizes="(max-width: 1200px) 100vw, 1200px" /><figcaption class="wp-element-caption">Streamは「データを入れる箱」ではなく、Listを処理するための「流れ」です。</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc2">何に困ったときにStream APIを使うの？</span></h2>



<p>Stream APIは、複数のデータをまとめて扱うときによく使います。</p>



<p>たとえば、次のような場面です。</p>



<ul class="wp-block-list is-style-icon-list-thumb-up has-list-style">
  <li>Listの中から条件に合うデータだけ取り出したい</li>
  <li>Listの中身を別の形に変換したい</li>
  <li>条件に合うデータが何件あるか数えたい</li>
  <li>最初の1件だけ取り出したい</li>
</ul>



<p>つまりStream APIは、<strong>「データの一覧をどう加工するか」</strong>を書くときに便利です。</p>



<p>まだ<code>List</code>や<code>Map</code>があやふやな場合は、先に<a href="https://it-biz.online/java/java-collections-framework/">JavaのListやMapの使い方</a>を読むと理解しやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc3">まずはこのコードを読めればOK</span></h2>



<p>Stream APIの基本は、次のコードでかなりつかめます。</p>



<pre class="wp-block-code"><code>List&lt;String&gt; result = names.stream()
        .filter(name -&gt; name.startsWith("S"))
        .map(name -&gt; name.toUpperCase())
        .collect(Collectors.toList());</code></pre>



<p>このコードは、次のように読みます。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>コード</th><th>やっていること</th></tr></thead><tbody><tr><td><code>names.stream()</code></td><td><code>names</code>というListを処理の流れに乗せる</td></tr><tr><td><code>filter(...)</code></td><td>条件に合う名前だけ残す</td></tr><tr><td><code>map(...)</code></td><td>残った名前を大文字に変える</td></tr><tr><td><code>collect(...)</code></td><td>最後にListとして受け取る</td></tr></tbody></table></div></figure>



<p>この読み方ができれば、最初の一歩としては十分です。</p>



<h2 class="wp-block-heading"><span id="toc4">for文で書く場合と比べてみる</span></h2>



<p>Stream APIでできることは、for文でも書けます。まず、for文で書くと次のようになります。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1200" height="675" src="https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-for-vs-stream-ja.png" alt="for文とStream APIの違いを初心者向けに比較した概念図" class="wp-image-10755" srcset="https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-for-vs-stream-ja.png 1200w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-for-vs-stream-ja-500x281.png 500w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-for-vs-stream-ja-800x450.png 800w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-for-vs-stream-ja-300x169.png 300w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-for-vs-stream-ja-768x432.png 768w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-for-vs-stream-ja-240x135.png 240w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-for-vs-stream-ja-320x180.png 320w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-for-vs-stream-ja-640x360.png 640w" sizes="(max-width: 1200px) 100vw, 1200px" /><figcaption class="wp-element-caption">for文は手順を1つずつ書く、Stream APIは目的を流れで書く、と考えると整理しやすくなります。</figcaption></figure>



<pre class="wp-block-code"><code>List&lt;String&gt; result = new ArrayList&lt;&gt;();

for (String name : names) {
    if (name.startsWith("S")) {
        result.add(name.toUpperCase());
    }
}</code></pre>



<p>これはこれで分かりやすい書き方です。ただし、処理の流れを読むには、<code>result</code>を作って、for文で回して、if文で判定して、addする、という手順を追う必要があります。</p>



<p>同じ処理をStream APIで書くと、次のようになります。</p>



<pre class="wp-block-code"><code>List&lt;String&gt; result = names.stream()
        .filter(name -&gt; name.startsWith("S"))
        .map(name -&gt; name.toUpperCase())
        .collect(Collectors.toList());</code></pre>



<p>Stream APIでは、<strong><span class="marker-under">「何をしたいのか」が上から順番に並ぶ</span></strong>ため、慣れると処理の目的を読み取りやすくなります。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon">
  <div class="speech-person">
    <figure class="speech-icon"><img wpfc-lazyload-disable="true" decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure>
    <div class="speech-name"></div>
  </div>
  <div class="speech-balloon">
    <p>Stream APIは「for文より偉い書き方」ではありません。データを絞り込み、変換し、結果を作る流れを見せたいときに便利な書き方です。</p>
  </div>
</div>



<h2 class="wp-block-heading"><span id="toc5">filter・map・collectを1つずつ理解する</span></h2>



<p>初心者が最初に覚えるべきなのは、<code>filter</code>・<code>map</code>・<code>collect</code>の3つです。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1200" height="675" src="https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-three-steps-ja.png" alt="Stream APIでまず覚えるfilter map collectの3つの処理を示した図" class="wp-image-10754" srcset="https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-three-steps-ja.png 1200w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-three-steps-ja-500x281.png 500w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-three-steps-ja-800x450.png 800w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-three-steps-ja-300x169.png 300w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-three-steps-ja-768x432.png 768w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-three-steps-ja-240x135.png 240w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-three-steps-ja-320x180.png 320w, https://it-biz.online/wp-content/uploads/2026/05/java-stream-api-three-steps-ja-640x360.png 640w" sizes="(max-width: 1200px) 100vw, 1200px" /><figcaption class="wp-element-caption">まずは、filterで残す、mapで変える、collectで受け取る、の3つだけ押さえましょう。</figcaption></figure>



<h3 class="wp-block-heading"><span id="toc6">filterは「条件に合うものだけ残す」</span></h3>



<p><code>filter</code>は、条件に合うデータだけを残す処理です。</p>



<pre class="wp-block-code"><code>.filter(name -&gt; name.startsWith("S"))</code></pre>



<p>この例では、「Sで始まる名前だけ残す」という意味です。条件に合わない<code>Tanaka</code>のような名前は、次の処理へ進みません。</p>



<h3 class="wp-block-heading"><span id="toc7">mapは「別の形に変える」</span></h3>



<p><code>map</code>は、データを別の形に変える処理です。</p>



<pre class="wp-block-code"><code>.map(name -&gt; name.toUpperCase())</code></pre>



<p>この例では、名前を大文字に変えています。<code>Sato</code>は<code>SATO</code>になります。</p>



<h3 class="wp-block-heading"><span id="toc8">collectは「最後に結果を受け取る」</span></h3>



<p><code>collect</code>は、途中で処理した結果を最後に受け取るための処理です。</p>



<pre class="wp-block-code"><code>.collect(Collectors.toList())</code></pre>



<p>この例では、処理結果を新しいListとして受け取っています。</p>



<p>ここで出てくる<code>name -&gt; ...</code>の部分はラムダ式です。ラムダ式が分からない場合は、<a href="https://it-biz.online/java/java-lambda/">Javaのラムダ式</a>の記事をあわせて読むと理解しやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc9">実際に動くサンプルコード</span></h2>



<p>全体のコードは次の通りです。</p>



<pre class="wp-block-code"><code>import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class StreamSample {
    public static void main(String[] args) {
        List&lt;String&gt; names = Arrays.asList("Sato", "Suzuki", "Tanaka", "Sasaki");

        List&lt;String&gt; result = names.stream()
                .filter(name -&gt; name.startsWith("S"))
                .map(name -&gt; name.toUpperCase())
                .collect(Collectors.toList());

        System.out.println(result);
    }
}</code></pre>



<p>実行すると、次のように表示されます。</p>



<pre class="wp-block-code"><code>[SATO, SUZUKI, SASAKI]</code></pre>



<p><code>Tanaka</code>はSで始まらないため、<code>filter</code>の時点で除外されています。</p>



<h2 class="wp-block-heading"><span id="toc10">初心者がつまずきやすいポイント</span></h2>



<p>Stream APIで最初につまずきやすいポイントを整理します。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>つまずき</th><th>まずこう理解する</th></tr></thead><tbody><tr><td>StreamはListなの？</td><td>Listそのものではなく、Listを処理するための流れ</td></tr><tr><td>filterだけで結果が出る？</td><td>最後にcollectやcountなどが必要</td></tr><tr><td>mapとforEachは同じ？</td><td>mapは変換、forEachは最後に1件ずつ処理</td></tr><tr><td>parallelStreamは速い？</td><td>必ず速いわけではない。最初はstreamで十分</td></tr></tbody></table></div></figure>



<p>特に大事なのは、<strong><span class="marker-under">Streamは元のListを直接書き換えるものではない</span></strong>という点です。</p>



<p>次のコードでは、大文字にした結果は<code>result</code>に入ります。元の<code>names</code>がそのまま大文字に変わるわけではありません。</p>



<pre class="wp-block-code"><code>List&lt;String&gt; result = names.stream()
        .map(name -&gt; name.toUpperCase())
        .collect(Collectors.toList());</code></pre>



<p>また、<code>findFirst()</code>のようなメソッドでは<code>Optional</code>が出てくることがあります。Optionalについては、<a href="https://it-biz.online/java/java-optional/">JavaのOptionalとは？</a>で解説しています。</p>



<h2 class="wp-block-heading"><span id="toc11">Stream APIはいつ使う？いつ使わない？</span></h2>



<p>Stream APIは、次のような処理に向いています。</p>



<ul class="wp-block-list is-style-icon-list-check has-list-style">
  <li>Listから条件に合うものだけ取り出す</li>
  <li>データを別の形に変換する</li>
  <li>件数を数える</li>
  <li>処理の流れを短く、読みやすく見せたい</li>
</ul>



<p>一方で、処理の途中で複雑な分岐が何度も出てくる場合や、for文の方が素直に読める場合は、無理にStream APIを使う必要はありません。</p>



<p>Stream APIは、コードを短くするためだけの道具ではありません。<strong>データをどう加工して、最後に何を得たいのかを見やすくするための道具</strong>です。</p>



<h2 class="wp-block-heading"><span id="toc12">関連して読みたい記事</span></h2>



<p>Stream APIは、Javaの他の基礎知識とつながっています。</p>



<ul class="wp-block-list">
  <li><a href="https://it-biz.online/java/java-collections-framework/">Java：ListやMapの使い方を3分で1から解説</a></li>
  <li><a href="https://it-biz.online/java/java-lambda/">Java：ラムダ式（lambda）を3分でわかりやすく</a></li>
  <li><a href="https://it-biz.online/java/functional-interface/">Javaの関数型インターフェースを1分でわかりやすく</a></li>
  <li><a href="https://it-biz.online/java/java-optional/">JavaのOptionalとは？nullを安全に扱う基本</a></li>
  <li><a href="https://it-biz.online/java/java-curriculum-roadmap/">Java学習ロードマップ完全版</a></li>
</ul>



<h2 class="wp-block-heading"><span id="toc13">まとめ</span></h2>



<p>JavaのStream APIは、Listなどのデータを「処理の流れ」として書くための仕組みです。</p>



<p>初心者のうちは、まず次の3つだけ覚えてください。</p>



<ul class="wp-block-list is-style-icon-list-check has-list-style">
  <li><code>filter</code>は、条件に合うものだけ残す</li>
  <li><code>map</code>は、別の形に変える</li>
  <li><code>collect</code>は、最後に結果を受け取る</li>
</ul>



<p>最初から難しいメソッドを全部覚える必要はありません。まずは、<code>names.stream().filter(...).map(...).collect(...)</code>という流れを読めるようになればOKです。</p>

]]></content:encoded>
					
					<wfw:commentRss>https://it-biz.online/java/java-stream-api/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Javaプログラムの作成から実行までを１分で</title>
		<link>https://it-biz.online/java/java-program-execute/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Tue, 01 Jul 2025 12:00:00 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=9377</guid>

					<description><![CDATA[目次 ステップ１：Javaファイルの作成Javaファイル作成手順ステップ２：Javaファイルのコンパイルコンパイル手順ステップ３：プログラムの実行プログラム実行手順 ステップ１：Javaファイルの作成 まず、ステップ１： [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Javaのプログラムを作成し、実際にあなたのPC上で実行するための手順をご説明します。</p>
</div></div>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-9" checked><label class="toc-title" for="toc-checkbox-9">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ステップ１：Javaファイルの作成</a><ol><li><a href="#toc2" tabindex="0">Javaファイル作成手順</a></li></ol></li><li><a href="#toc3" tabindex="0">ステップ２：Javaファイルのコンパイル</a><ol><li><a href="#toc4" tabindex="0">コンパイル手順</a></li></ol></li><li><a href="#toc5" tabindex="0">ステップ３：プログラムの実行</a><ol><li><a href="#toc6" tabindex="0">プログラム実行手順</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ステップ１：Javaファイルの作成</span></h2>



<p>まず、ステップ１：Javaのプログラムを書いて保存します。基本的な構文ルールはこちら（<span class="badge-green">関連</span>　<a href="https://it-biz.online/java/java-1ststep/">Javaの1stステップ：基本的な構文ルールを１分で復習！</a>）を参考にしてみてください。</p>



<h3 class="wp-block-heading"><span id="toc2">Javaファイル作成手順</span></h3>



<ol class="wp-block-list">
<li><strong>テキストエディタを開く</strong>
<ul class="wp-block-list">
<li>メモ帳、VS Code、Eclipseなどのテキストエディタを使用します。どのような手段を使ってもOKで、どの方法でも最終的な結果に影響することはありません。</li>
</ul>
</li>



<li><strong>コードを入力する</strong>
<ul class="wp-block-list">
<li>以下のコードを入力します。これは「Hello World」と表示するシンプルなプログラムです。</li>
</ul>
</li>
</ol>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {
        // "Hello, World!" をコンソールに出力します
        System.out.println("Hello, World!");
    }
}</pre>



<ol start="3" class="wp-block-list">
<li><strong>ファイルを保存する</strong>：
<ul class="wp-block-list">
<li><code><span class="bold-blue">HelloWorld.java</span></code> という名前で保存します。保存する場所はPCのデスクトップでもドキュメントフォルダでもどこでもOK。（Javaプログラムはこの保存したディレクトリ上でコンパイル～実行することになります。）</li>



<li>ファイル名とクラス名（この場合は <code><span class="bold-blue">HelloWorld</span></code>）は同じにする必要があります。</li>
</ul>
</li>
</ol>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box not-nested-style cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">Javaプログラムは最初はただのテキストファイル</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>Javaプログラムは、テキストエディタ（例えばメモ帳やVS Code）で作成される普通のテキストファイルです。</p>



<p>このファイルには拡張子 <span class="bold-blue"><code>.java</code> </span>が付けられているという点が異なるだけで、このテキストファイルをJavaコンパイラ（<code>javac</code>）でコンパイルすると、バイトコードに変換され拡張子が <code><span class="bold-blue">.class</span></code> のバイトコードファイルが生成されます。生成された <code><span class="bold-blue">.class</span></code> ファイルをJVMで実行することで、プログラムが動作する、というのがこのページの要点になります。</p>



<p class="has-text-align-center"><span class="badge-green">関連</span>　<a href="https://it-biz.online/java/java-setup/">Javaの基本（JVMとは？）</a></p>
</div></div>



<h2 class="wp-block-heading"><span id="toc3">ステップ２：Javaファイルのコンパイル</span></h2>



<p>次に、Javaファイルをコンパイルして、コンピュータが理解できる形（バイトコード）に変換します。</p>



<h3 class="wp-block-heading"><span id="toc4">コンパイル手順</span></h3>



<ol class="wp-block-list">
<li><strong>コマンドラインを開く</strong>
<ul class="wp-block-list">
<li>Windowsの場合は「<a href="https://it-biz.online/it-skills/command-abc/">コマンドプロンプト</a>」、MacやLinuxの場合は「ターミナル」を開きます。</li>
</ul>
</li>



<li><strong>保存したディレクトリに移動する</strong>
<ul class="wp-block-list">
<li><code>cd</code> コマンドを使って、<code><span class="bold-blue">HelloWorld.java</span></code> を保存したディレクトリに移動します。</li>



<li>例：ファイルがデスクトップに保存されている場合「<span class="bold-green">cd Desktop</span>」</li>
</ul>
</li>



<li><strong>コンパイルコマンドを入力する</strong>
<ul class="wp-block-list">
<li>以下のコマンドを入力してコンパイルします。<br><span class="bold-green">javac HelloWorld.java</span></li>
</ul>
</li>



<li><strong>バイトコードファイルが生成</strong>
<ul class="wp-block-list">
<li>コンパイルが成功すると、<code><span class="bold-blue">HelloWorld.class</span></code> というファイルが生成されます。</li>
</ul>
</li>
</ol>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content"><span class="bold-green">javac HelloWorld.java</span>　を実行すると「エラー: この文字(0x80)は、エンコーディングwindows-31jにマップできません」と出力される。</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>このエラーは、ソースコードのエンコーディング（文字コード）とコンパイル時のエンコーディングが一致していない場合に発生します。具体的には、Javaファイルが特定のエンコーディング（例えばUTF-8）で保存されているのに対して、コンパイラが別のエンコーディング（windows-31j）を使用しようとしていることが原因です。以下のように文字コードを指定してコンパイルすることで事象は解決します。</p>
</div></dd></dl></div>



<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="">javac -encoding UTF-8 HelloWorld.java</pre>



<h2 class="wp-block-heading"><span id="toc5">ステップ３：プログラムの実行</span></h2>



<p>最後に、生成されたバイトコードファイルを実行します。</p>



<h3 class="wp-block-heading"><span id="toc6">プログラム実行手順</span></h3>



<ol class="wp-block-list">
<li><strong>実行コマンドを入力する</strong>
<ul class="wp-block-list">
<li>以下のコマンドを入力してプログラムを実行します。<br><span class="bold-green">java HelloWorld</span><br></li>



<li>ここで指定している「HelloWorld」はJavaの「<strong><span class="marker-under">クラス名</span></strong>」です。クラスを指定してjavaコマンドを実行することで.classファイルが動きます。</li>
</ul>
</li>



<li><strong>プログラムの出力を確認</strong>
<ul class="wp-block-list">
<li>コンソールに <code><span class="bold-green">Hello, World!</span></code> と表示されます。</li>
</ul>
</li>
</ol>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これで、Javaプログラムの作成～実行までが完了です。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box not-nested-style cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">Javaプログラムを動かす際にクラス名を指定するということの意味</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>Javaプログラムを実行するには、最初に動かすクラスを指定する必要があります。これは、プログラムのスタート地点を指定するようなもので、日常生活に例えると「家のブレーカーをあげる」ようなイメージ。家のブレーカーをあげると家全体に電気が供給し始められ、その後様々な家電が動き始めます。</p>



<p>プログラムの中には、他にもたくさんのクラス（部品や機能）が存在します。指定したエントリーポイントのクラスから、他のクラスを使っていきながら１つの処理を完成させる―。これがJavaプログラムを実行する基本イメージになります。</p>



<ul class="wp-block-list">
<li><strong>エントリーポイント</strong>：プログラムのスタート地点となるクラス（家の電源スイッチ）。</li>



<li><strong>他のクラスの利用</strong>：エントリーポイントのクラスから、他のクラス（家電製品）を使う。</li>



<li><strong>実行の流れ</strong>：エントリーポイントのクラスからプログラムが始まり、他のクラスも使って機能を実行する。</li>
</ul>
</div></div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<p class="has-text-align-center"><span class="badge-green">まとめ</span>　Javaプログラムの作成～実行まで</p>



<ol class="wp-block-list">
<li><strong>Javaファイルの作成</strong>
<ul class="wp-block-list">
<li>テキストエディタでコードを書き保存（例：<code><span class="bold-blue">HelloWorld.java</span></code>）。</li>
</ul>
</li>



<li><strong>Javaファイルのコンパイル</strong>
<ul class="wp-block-list">
<li>コマンドラインで <code>javac ファイル名.java</code> を入力してコンパイルします（例：<code><span class="bold-green">javac HelloWorld.java</span></code>）。</li>
</ul>
</li>



<li><strong>プログラムの実行</strong>：
<ul class="wp-block-list">
<li>コマンドラインで <code>java クラス名</code> を入力して実行します（例：<code><span class="bold-green">java HelloWorld</span></code>）。</li>
</ul>
</li>
</ol>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>プログラマーとシステムエンジニア（SE）の違いを分かりやすく【現役エンジニアが解説】</title>
		<link>https://it-biz.online/lifehack/pg-se/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Fri, 31 Jan 2020 05:59:49 +0000</pubDate>
				<category><![CDATA[LifeHack]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=3503</guid>

					<description><![CDATA[このページでは、「プログラマー」と「システムエンジニア」の違いをIT初心者向けに分かりやすく解説します。 IT業界に全く関わりのない方でも理解できるように「要件定義」とか「仕様書作成」などのIT用語は使わずに、システムを [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>このページでは、<strong><span class="marker-under">「プログラマー」と「システムエンジニア」の違いをIT初心者向けに分かりやすく解説</span></strong>します。</p>



<p>IT業界に全く関わりのない方でも理解できるように「要件定義」とか「仕様書作成」などのIT用語は使わずに、<strong>システムを「家」に例えて解説</strong>していきます。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box"><div class="label-box-label block-box-label box-label"><span class="label-box-label-text block-box-label-text box-label-text">プログラマーとシステムエンジニアの違い（家に例えてみる）</span></div><div class="label-box-content block-box-content box-content">
<p><strong>システムエンジニア</strong><br>⇒　<strong><span style="color:#0095d9" class="color">建築士</span></strong>：家の<strong>設計</strong>を行うことが主な役割</p>



<p><strong>プログラマー</strong><br>⇒　<strong><span style="color:#e60033" class="color">大工</span></strong>　：設計書にしたがって<strong>実際に家を作る</strong>のが主な役割<br></p>
</div></div>



<p>加えて「ITコンサルタントってどういう職業？」という疑問にもお答えします。</p>



<p><strong>IT用語がわからない人でも理解できるよう平易な言葉で解説</strong>していきますので、是非最後までご覧ください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-11" checked><label class="toc-title" for="toc-checkbox-11">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">システムエンジニアとは？</a></li><li><a href="#toc2" tabindex="0">プログラマー（PG）とは？</a></li><li><a href="#toc3" tabindex="0">プログラマーとシステムエンジニア（SE）　どちらがおすすめ？</a><ol><li><a href="#toc4" tabindex="0">理由①システム設計にプログラミングスキルは必須！</a></li><li><a href="#toc5" tabindex="0">理由②設計段階で決めなければいけないことが分かるようになる</a></li><li><a href="#toc6" tabindex="0">理由③「イケてる」システムが何かわかるようになる</a></li></ol></li><li><a href="#toc7" tabindex="0">【補足】システムエンジニアとコンサルタントの違い</a><ol><li><a href="#toc8" tabindex="0">では「戦略コンサルタント」は？</a></li></ol></li><li><a href="#toc9" tabindex="0">プログラマーを目指したくなったら</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">システムエンジニアとは？</span></h2>



<figure class="wp-block-image"><img decoding="async" src="https://cdn.pixabay.com/photo/2018/03/10/18/03/laptop-3214756_960_720.png" alt="ラップトップ, ワークスペース, フラットな設計, 端子板, スマート フォン, マウス, デザイン"/></figure>



<p>システムエンジニアの<strong><span class="marker-under">主な役割は「設計」</span></strong>です。</p>



<p>システムエンジニアは「<strong>建築士</strong>」に例えることができます。建築士が決めるのは「<strong>間取りをどうするか？</strong>」「<strong>見た目は何色にするか？</strong>」「<strong>材料は何を使うか？</strong>」といった基礎的な内容です。</p>



<p>これと同じで、システム構築時にシステムエンジニアが決めるのは「<strong>どのような機能にするか？</strong>」「<strong>どのような画面にするか？</strong>」といったユーザに直接影響が出てくる内容が中心。</p>



<p>もし、システムエンジニアが設計をミスれば、その設計書に従って作業するプログラマーの作業も無駄になってしまいます。</p>



<h2 class="wp-block-heading"><span id="toc2">プログラマー（PG）とは？</span></h2>



<p>対して、プログラマーは「<strong>大工</strong>」です。</p>



<p>つまり、システムエンジニアが作った設計書を基にプログラミングをしていく人です。</p>



<p>ただし、こう説明すると「<strong>なんだよ、プログラマーってただの作業者じゃないか。。。</strong>」という方がいらっしゃいますが、それは<strong><span class="marker-under">完全な誤り</span></strong>です。</p>



<p>例えば、同じ設計書でも大工さんによって出来栄えが完全に異なることがあります。これは、大工の世界に職人技が存在するためです。</p>



<p>「<strong>釘はこう打つと良い！</strong>」とか、「<strong>この木材は、この角度で切らないと脆くなってしまう。</strong>」とか。一般の我々からは想像もつかない深い世界が存在するように、プログラマーの世界にもそれがあります。</p>



<p>「<strong>BよりAのロジックで構築したほうがパフォーマンスが良い！</strong>」とか、「<strong>こうしたほうがエラーが発生しづらい！</strong>」とか。</p>



<p>こう考えると、<strong><span class="marker-under">プログラマーのスキルはシステム構築において非常に重要なファクター</span></strong>であると言えます。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">IT用語の補足【基本設計と詳細設計】</span></div><div class="label-box-content block-box-content box-content">
<p>厳密に言えば、プログラマーもいきなりコーディングするわけではありません。システムエンジニアが作った設計書を基に「プログラムの詳細を整理する」詳細設計を行います。</p>



<p>基本設計と詳細設計。微妙に聞きなれない用語ですが、システムエンジニアとプログラマーの違いをより深く理解できるようになると思います。詳細は以下の記事をご覧ください。</p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/it-skills/design-documents/" title="基本設計（外部設計）と詳細設計（内部設計）の違いを３分で解説" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2002-design-documents-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2002-design-documents-320x180.png 320w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2002-design-documents-500x282.png 500w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2002-design-documents-800x451.png 800w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2002-design-documents-300x169.png 300w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2002-design-documents-768x433.png 768w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2002-design-documents-240x135.png 240w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2002-design-documents-640x360.png 640w, https://it-biz.online/wp-content/uploads/2026/04/featured-p1-2002-design-documents.png 1480w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">基本設計（外部設計）と詳細設計（内部設計）の違いを３分で解説</div><div class="blogcard-snippet internal-blogcard-snippet">本ページでは、基本設計と詳細設計の違いを実例を交えながら解説します。用語基本設計は、現場によって「外部設計」、詳細設計は「内部設計」とも呼ばれますが、本ページでは「基本設計」「詳細設計」の用語で統一します。「基本設計＝外部設計」「詳細設計＝内部設計」基本的には、呼び方が変わるだけなので深く考えなくて...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.04.26</div></div></div></div></a>
</div></figure>
</div></div>



<h2 class="wp-block-heading"><span id="toc3">プログラマーとシステムエンジニア（SE）　どちらがおすすめ？</span></h2>



<figure class="wp-block-image"><img decoding="async" src="https://cdn.pixabay.com/photo/2016/02/07/14/51/hatena-1184896_960_720.png" alt="はてな, 考える, 疑問, 困る, 悩む, 不安, 日本人, 質問, クエスチョン, 企画"/></figure>



<p>プログラマーとシステムエンジニア、結局どちらがおすすめの職業なのでしょうか？なんとなく、システムエンジニアの方が給料もよさそうだな・・・と考える人。プログラマーの方が技術が身に付きそう！と考える人。</p>



<p><strong>結論<span class="marker-under">「最初はプログラマー！</span>」です。</strong></p>



<p><strong>いきなりシステムエンジニアとして就職・転職するのは（あまり）おすすめできません。</strong></p>



<p>その理由を3点、解説します。</p>



<h3 class="wp-block-heading"><span id="toc4">理由①システム設計にプログラミングスキルは必須！</span></h3>



<p>IT業界未経験（特にプログラミング未経験）で、システムエンジニアになるとどうなってしまうか？</p>



<p>結論、「<strong>ありえない設計をしてしまう建築士の誕生</strong>」です。</p>



<p>システムエンジニアは、機能の概要・システムの大きな方向性を決めることが主な役割ですが、設計を行う段階である程度の<strong>実現可能性</strong>（英：Feasibility）を予見する必要があります。</p>



<p>つまり、「この機能は実現可能なのか？（コーディング可能？）」ということを事前に整理・検討した上で設計しないと、コーディング不可（作れない）の機能設計になってしまいます。</p>



<p>建築士さんが「土地は6畳で、間取りは３LDKにしよう。」なんていう訳の分からない設計書を作ってきたら、大工さんはどうしようもありませんよね。したがって、<strong><span class="marker-under">システムエンジニアはプログラミングの知識が（ある程度）ないと務まりません。</span></strong></p>



<h3 class="wp-block-heading"><span id="toc5">理由②設計段階で決めなければいけないことが分かるようになる</span></h3>



<p>実は、プログラマー（大工）とシステムエンジニア（建築士）って結構対立します。</p>



<p>その理由で一番多いのが、システムエンジニアが<strong>決めるべき内容を決めていない</strong>ということです。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box"><div class="label-box-label block-box-label box-label"><span class="label-box-label-text block-box-label-text box-label-text">事例）システムエンジニア vs プログラマー</span></div><div class="label-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-column-2 column-wrap column-2 column-2-2-1-1 layout-box">
<div class="wp-block-cocoon-blocks-column-left column-left">
<p class="has-text-align-center"><strong>システムエンジニアの設計</strong></p>



<ul class="wp-block-list"><li>お風呂とトイレは別にする</li><li>キッチンはアイランドキッチンにする</li><li>水回りは家の北側にする</li></ul>
</div>



<div class="wp-block-cocoon-blocks-column-right column-right">
<p class="has-text-align-center"><strong>プログラマーの疑問点</strong></p>



<ul class="wp-block-list"><li>どんなお風呂にすればよいのか・・・</li><li>どこにキッチンを置けばいいの？</li><li>北側って、めっちゃ曖昧・・・（勝手に決めちゃうよ？）</li></ul>
</div>
</div>
</div></div>



<p>プログラマー出身のシステムエンジニアであれば、ここまで決めてあげればOK!というのが分かっている設計ができるようになります。</p>



<p>例えば「キッチンは、縦２m/横5mで壁から1m離して設置してね。色と形は、よしなに決めてね！」みたいな感じであれば、プログラマーの作業が明確になりますよね。</p>



<p>いきなり、システムエンジニアになってしまうとそもそも何を決めたらよ良いのか？みたいな壁にぶち当たる人が多いです。</p>



<h3 class="wp-block-heading"><span id="toc6">理由③「イケてる」システムが何かわかるようになる</span></h3>



<p>最後、これが一番重要なのですが、プログラマーとして仕事を進めていくにつれて「<strong>どんなシステムがイケてるのか</strong>」が分かるようになってきます。</p>



<p>例えば、「AをBにしていたらもっとバグは少なかったのに」とか、「AじゃなくてBにしてしまっていたら、大変だった」とか。</p>



<p>大工さんに例えれば、設計書にしたがって家を作っていく中で「この木材じゃなくてこっちにした方が頑丈になるのにな」とか、「なるほど、ここに柱を立てるのはそういう意味があったのか！」みたいな感じです。</p>



<p>どんなシステムがイケてるのか？―。これを、自分で考えられるようになると、おのずと「自分で設計してみたい！」という思いが強くなっていきます。「<strong>自分ならこうする。こうしたほうが、イケてるシステムになる。</strong>」</p>



<p>このレベルに達することができれば、「できるエンジニア」の誕生です。</p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/lifehack/curriculum/" title="1人前のシステムエンジニア(SE)になるために勉強した５つのこと" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2019/02/SE_Learn-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2019/02/SE_Learn-320x180.png 320w, https://it-biz.online/wp-content/uploads/2019/02/SE_Learn-240x135.png 240w, https://it-biz.online/wp-content/uploads/2019/02/SE_Learn-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">1人前のシステムエンジニア(SE)になるために勉強した５つのこと</div><div class="blogcard-snippet internal-blogcard-snippet">本ページでは、１人前のシステムエンジニアになるために学んだこと・読んだ本・勉強したプログラミング言語を現役のエンジニアが１から紹介しています。「正直何を勉強したらよいかわからない」という疑問をお持ちの方は特に必見です。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2021.07.29</div></div></div></div></a>
</div></figure>



<h2 class="wp-block-heading"><span id="toc7">【補足】システムエンジニアとコンサルタントの違い</span></h2>



<p>ちなみに、最近よく聞く<strong>ITコンサルタントって何をする人</strong>なんでしょう？</p>



<p>プログラマーとは違いそうだし、、、システムエンジニアともやってることはかっこよさそう・・・</p>



<p>皆さんそれぞれでITコンサルタントへのイメージをお持ちかと思いますが、結論ITコンサルタントは、ざっくりですが「<strong>システムエンジニアよりさらに大きな方向性を決める人</strong>」と言えます。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box"><div class="label-box-label block-box-label box-label"><span class="label-box-label-text block-box-label-text box-label-text">プログラマーとシステムエンジニアとITコンサルタントの違い（家に例えてみる）</span></div><div class="label-box-content block-box-content box-content">
<p><strong>ITコンサルタント</strong><br>⇒　<strong><span style="color:#f39800" class="color">診断士</span></strong>：家の形態を決める「<strong><span class="marker-under">マンションにしますか？一戸建てにしますか？</span></strong>」</p>



<p><strong>システムエンジニア</strong><br>⇒　<strong>建築士</strong>：家の<strong>設計</strong>を行うことが主な役割</p>



<p><strong>プログラマー</strong><br>⇒　<strong>大工</strong>　：設計書にしたがって<strong>実際に家を作る</strong>のが主な役割<br></p>
</div></div>



<p>ITコンサルタントは、システムエンジニアより上流の内容を決めることが多いようです。（例外はもちろんあります。）</p>



<p>つまり、導入するシステムをスクラッチ開発するのか？それとも、パッケージを導入するのか？費用対効果を踏まえて提案したりします。</p>



<h3 class="wp-block-heading"><span id="toc8">では「戦略コンサルタント」は？</span></h3>



<p>戦略コンサルタントになると、「<strong>そもそも家を建てる必要ってあるんでしたっけ？</strong>」的な超・上流の検討/提案がメインになってきます。</p>



<p>「建てるのではなく、借りるというのはどうか？」「シェアハウスはどうか？」</p>



<p>戦略コンサルタントになると、ITありきの世界ではなくなって（家を建てる前提ではなくなる）きます。前提を疑って、より最適な方向へとクライアントを導くことが使命となるため、その点でITコンサルタントとは役割が異なります。</p>



<h2 class="wp-block-heading"><span id="toc9">プログラマーを目指したくなったら</span></h2>



<p><strong>プログラミングの知識をつけて、プログラマーになりたい！</strong></p>



<p>そんな方には、無料体験/オンライン完結もあるプログラミングスクールで学ぶのがベストです。都度検索しながら知識を補完していくのではなく、１から体系立てて学ぶことで短時間・かつ効率的にスキルハックすることが可能です。</p>



<p>各プログラミングスクールの特徴をまとめた記事をこちらに記載しておきますので、是非ご覧ください。</p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/lifehack/programming/" title="おすすめプログラミングスクールTOP５【現役エンジニア推薦】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2021/01/programming-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2021/01/programming-320x180.png 320w, https://it-biz.online/wp-content/uploads/2021/01/programming-300x168.png 300w, https://it-biz.online/wp-content/uploads/2021/01/programming-500x280.png 500w, https://it-biz.online/wp-content/uploads/2021/01/programming-768x429.png 768w, https://it-biz.online/wp-content/uploads/2021/01/programming-800x447.png 800w, https://it-biz.online/wp-content/uploads/2021/01/programming-240x135.png 240w, https://it-biz.online/wp-content/uploads/2021/01/programming-640x360.png 640w, https://it-biz.online/wp-content/uploads/2021/01/programming-1024x573.png 1024w, https://it-biz.online/wp-content/uploads/2021/01/programming.png 1354w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">おすすめプログラミングスクールTOP５【現役エンジニア推薦】</div><div class="blogcard-snippet internal-blogcard-snippet">プログラミングスキルを習得したい社会人・学生の方へおすすめしたいプログラミングスクールをニーズ別に３つに絞ってご紹介します。本当に未経験からでも実務レベルのスキルはみにつくか？現役エンジニアが口コミや実体験をもとに解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.05.30</div></div></div></div></a>
</div></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>静的コンテンツ/動的コンテンツの違いを１分で解説【初心者向け】</title>
		<link>https://it-biz.online/it-skills/static-dynamic/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Thu, 12 Sep 2019 09:06:13 +0000</pubDate>
				<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=2049</guid>

					<description><![CDATA[Web系のシステムをいじっているとよく出てくる「静的コンテンツ」と「動的コンテンツ」という言葉。本ページで１分ぐらいで読めるようザックリ解説します。 結論から言うと静的コンテンツは、クライアントからのリクエスト内容にかか [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Web系のシステムをいじっているとよく出てくる「静的コンテンツ」と「動的コンテンツ」という言葉。本ページで１分ぐらいで読めるようザックリ解説します。</p>



<p>結論から言うと静的コンテンツは、クライアントからの<span class="yellowline"><strong>リクエスト内容にかかわらず常に同じ結果を返すコンテンツ</strong></span>のこと。対して、動的コンテンツは、<span class="yellowline"><strong>リクエスト内容に応じて異なる結果を返すコンテンツ</strong></span>のことです。</p>



<p>どういうことか。例を踏まえつつ、IT初心者の方でも理解しやすいよう分かりやすく解説します。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="label-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list"><li>Webの仕組み：どのようにページが表示されるか？</li><li>静的コンテンツと動的コンテンツの違い</li><li>静的コンテンツと動的コンテンツの具体例</li></ul>
</div>
</div></div>



<p>言葉ではなくイメージと具体例で理解することが重要です。<strong><span class="marker-under">エンジニアを目指す方であれば知らないと恥ずかしい基本知識</span></strong>ですので、是非最後までご覧下さい。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-13" checked><label class="toc-title" for="toc-checkbox-13">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">前提：Webの仕組み</a></li><li><a href="#toc2" tabindex="0">静的コンテンツと動的コンテンツの違い</a><ol><li><a href="#toc3" tabindex="0">静的コンテンツ</a></li><li><a href="#toc4" tabindex="0">動的コンテンツ</a></li></ol></li><li><a href="#toc5" tabindex="0">プログラミングを１から学んでみたい方は</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">前提：Webの仕組み</span></h2>



<p>まずは前提として、Webの仕組みから。</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2019/12/image-12.png" alt=""/></figure></div>



<p>我々が今見ているWebページは、<strong>パソコンやスマートフォンのブラウザを通して、特定のサーバ上から取得されたもの</strong>です。</p>



<p>今あなたが見ているこのページも、GoogleやYahooを通して特定のサーバ上からページコンテンツが配信された結果。</p>



<p>見たいページをクリックしたときに、<strong><span class="marker-under">特定のサーバに「あなたの〇〇というコンテンツを読みたいです！」という要求が伝えられ、サーバはその要求に応じて求められたコンテンツをあなたに渡しているのです。</span></strong></p>



<p>これが、Webページの仕組みであり基本となる知識。想像している以上に簡単なことなです。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box"><div class="label-box-label block-box-label box-label fab-edit"><span class="label-box-label-text block-box-label-text box-label-text">もう少し詳しく学びたい方は</span></div><div class="label-box-content block-box-content box-content">
<p>この章で紹介したWebページを閲覧する際の仕組みを詳しく知りたい方は、クライアントサーバシステムについて学習してみましょう。以下の記事では、ブラウザとは何か？サーバとは何か？という基本となる知識について解説しています。</p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/it-skills/client-server/" title="クライアントサーバシステムとは？メリット・デメリットを３分で解説" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2019/09/client-server-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2019/09/client-server-320x180.png 320w, https://it-biz.online/wp-content/uploads/2019/09/client-server-240x135.png 240w, https://it-biz.online/wp-content/uploads/2019/09/client-server-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">クライアントサーバシステムとは？メリット・デメリットを３分で解説</div><div class="blogcard-snippet internal-blogcard-snippet">【初心者向け】クライアントサーバシステムとは何か？クライアントって具体的に言うと何？サーバって？そんな疑問をお持ちの方に１からイメージ図付きで分かりやすく解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2021.11.12</div></div></div></div></a>
</div></figure>
</div></div>



<p>さて、ここからが本題です。</p>



<h2 class="wp-block-heading"><span id="toc2">静的コンテンツと動的コンテンツの違い</span></h2>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://cdn.pixabay.com/photo/2016/08/20/06/44/e-commerce-1606962_960_720.png" alt="E コマース, オンライン ショップ, Web, テンプレート, ウェブサイト, コンピュータ, 購入"/></figure></div>



<p>静的コンテンツと動的コンテンツの違いは１つだけ。それは、サーバから返される結果が誰に対しても同じになるかどうか？</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box"><div class="label-box-label block-box-label box-label fab-lightbulb"><span class="label-box-label-text block-box-label-text box-label-text">静的コンテンツと動的コンテンツの違い</span></div><div class="label-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-hand-o-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list"><li>静的コンテンツ　⇒　誰が見ても常に同じ内容</li><li>動的コンテンツ　⇒　見る人・見るタイミングによって内容が異なる</li></ul>
</div>
</div></div>



<h3 class="wp-block-heading"><span id="toc3">静的コンテンツ</span></h3>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img loading="lazy" decoding="async" src="https://it-biz.online/wp-content/uploads/2019/09/f27cc959e528ffc19a5fe47aa169ad8d.png" alt="" class="wp-image-2052" width="195" height="117" srcset="https://it-biz.online/wp-content/uploads/2019/09/f27cc959e528ffc19a5fe47aa169ad8d.png 310w, https://it-biz.online/wp-content/uploads/2019/09/f27cc959e528ffc19a5fe47aa169ad8d-300x180.png 300w, https://it-biz.online/wp-content/uploads/2019/09/f27cc959e528ffc19a5fe47aa169ad8d-304x182.png 304w, https://it-biz.online/wp-content/uploads/2019/09/f27cc959e528ffc19a5fe47aa169ad8d-263x158.png 263w" sizes="(max-width: 195px) 100vw, 195px" /></figure></div>



<p>静的コンテンツは<strong><span class="marker-under">要求内容・人にかかわらずいつでも同じ結果を返す</span></strong>コンテンツのこと。</p>



<p>例えば、今あなたが見ているこの記事自体も静的コンテンツです。誰が見ようが、いつ見ようが、<strong>結果は常に同じ</strong>（表示する記事の内容に変化はありません）。隣の人がこのページを見たとしても、あなたが読んでいる文章と全く同じ文章が表示されます。</p>



<div class="wp-block-cocoon-blocks-icon-box information-box common-icon-box block-box">
<p>厳密に言うと、このブログ自体は動的コンテンツを配信していることになります。ただし、ここではあまり深くは考えなくてOKです。</p>
</div>



<p>静的コンテンツは、Webサーバ上のみ（プレゼンテーション層）のみで処理が可能なため結果が返ってくるまでが早いのが特徴です。</p>



<h3 class="wp-block-heading"><span id="toc4">動的コンテンツ</span></h3>



<p>動的コンテンツは、<strong><span class="marker-under">要求内容や要求する人に応じて異なる結果を返す</span></strong>コンテンツです。</p>



<p>例えば、<a href="https://www.amazon.co.jp/">Amazon</a>へログインした後のページがわかりやすいのではないでしょうか。<strong>ログインした後のページで出てくるおすすめ商品や、購入履歴はだれが見るかに応じて変わりますよね。</strong></p>



<p>同じAmazonのリンクからログインしても、Aさんが開いた場合とBさんが開いた場合とで結果が異なります。これが、動的コンテンツです。</p>



<p>どのように、見る人によって内容を変えているのでしょうか？ここでは、ちょっとだけ深堀してご説明します。</p>



<p>次のイメージ図をご覧ください。</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="942" height="219" src="https://it-biz.online/wp-content/uploads/2019/09/4b19ac6d450acee1099d2a57e6acb705.png" alt="" class="wp-image-2053" srcset="https://it-biz.online/wp-content/uploads/2019/09/4b19ac6d450acee1099d2a57e6acb705.png 942w, https://it-biz.online/wp-content/uploads/2019/09/4b19ac6d450acee1099d2a57e6acb705-300x70.png 300w, https://it-biz.online/wp-content/uploads/2019/09/4b19ac6d450acee1099d2a57e6acb705-500x116.png 500w, https://it-biz.online/wp-content/uploads/2019/09/4b19ac6d450acee1099d2a57e6acb705-768x179.png 768w, https://it-biz.online/wp-content/uploads/2019/09/4b19ac6d450acee1099d2a57e6acb705-800x186.png 800w, https://it-biz.online/wp-content/uploads/2019/09/4b19ac6d450acee1099d2a57e6acb705-304x71.png 304w" sizes="(max-width: 942px) 100vw, 942px" /></figure></div>



<p>動的コンテンツといっても、Webの基本原理は変わりません。あなたがブラウザを通してみたいページをクリック（サーバに対してコンテンツを要求）するというアクションは同じです。</p>



<p>ただし、サーバ側からあなたに返すコンテンツが異なるのです。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box"><div class="label-box-label block-box-label box-label fab-edit"><span class="label-box-label-text block-box-label-text box-label-text">動的コンテンツ配信の仕組み</span></div><div class="label-box-content block-box-content box-content">
<ol class="wp-block-list"><li>サーバが動的コンテンツのリクエストを受け取る</li><li>サーバが要求されたコンテンツをデータベース上で検索・取得</li><li>リクエストに合わせて取得したコンテンツを編集（<strong>動的コンテンツの生成</strong>）</li><li>編集したコンテンツを配信</li></ol>
</div></div>



<p>例えば、Aさんの購入履歴に基づくおすすめ商品を表示する動的コンテンツであれば以下のような処理が行われます。</p>



<ol class="wp-block-list"><li><strong>動的コンテンツのリクエストを受け取る</strong><br>（Aさんがおすすめ商品の表示をクリックする）</li><li><strong>Aさんの購入履歴を踏まえてコンテンツを編集する</strong><br>（Aさんの購入履歴と同じような種類の商品一覧を作成する）</li><li><strong>編集したコンテンツをユーザに返す</strong><br>（おすすめ商品一覧ページが表示される）</li></ol>



<p>動的コンテンツをうまく組み合わせることで、個人個人の好みに応じたコンテンツを配信することができるようになります。現在のWebページの主流は、動的コンテンツです。</p>



<p>先ほど、このWebサイト（<a href="https://it-biz.online/">ビズドットオンライン</a>）は厳密に言えば動的コンテンツを配信していると注意書きしましたが、どこが動的コンテンツになっているかと言うと、サイドバーやページ上部に表示されているおすすめページ欄です。</p>



<p>ここは、その日の人気記事や新着記事を見るタイミングや見る人によって内容が異なって表示されています。うまくいっていれば、あなたの好みのページがおすすめ記事として表示されているかもしれません。</p>



<p>以上が、静的コンテンツと動的コンテンツの違いです。</p>



<h2 class="wp-block-heading"><span id="toc5">プログラミングを１から学んでみたい方は</span></h2>



<p><strong><span class="marker-under">プログラミングをより実践的に学びたい―。実際にコーディングをしながら学びたい―。独学に限界を感じている―。</span></strong></p>



<p>そんな方には、無料体験/オンライン完結もあるプログラミングスクールで学ぶのがおすすめです。都度検索しながら知識を補完していくのではなく、１から体系立てて学ぶことで短時間・かつ効率的にスキルハックすることが可能です。</p>



<p>各プログラミングスクールの特徴をまとめた記事をこちらに記載しておきますので、是非ご覧ください。</p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/lifehack/programming/" title="おすすめプログラミングスクールTOP５【現役エンジニア推薦】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2021/01/programming-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2021/01/programming-320x180.png 320w, https://it-biz.online/wp-content/uploads/2021/01/programming-300x168.png 300w, https://it-biz.online/wp-content/uploads/2021/01/programming-500x280.png 500w, https://it-biz.online/wp-content/uploads/2021/01/programming-768x429.png 768w, https://it-biz.online/wp-content/uploads/2021/01/programming-800x447.png 800w, https://it-biz.online/wp-content/uploads/2021/01/programming-240x135.png 240w, https://it-biz.online/wp-content/uploads/2021/01/programming-640x360.png 640w, https://it-biz.online/wp-content/uploads/2021/01/programming-1024x573.png 1024w, https://it-biz.online/wp-content/uploads/2021/01/programming.png 1354w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">おすすめプログラミングスクールTOP５【現役エンジニア推薦】</div><div class="blogcard-snippet internal-blogcard-snippet">プログラミングスキルを習得したい社会人・学生の方へおすすめしたいプログラミングスクールをニーズ別に３つに絞ってご紹介します。本当に未経験からでも実務レベルのスキルはみにつくか？現役エンジニアが口コミや実体験をもとに解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.05.30</div></div></div></div></a>
</div></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【IT初心者向け】入力チェック/バリデーションの意味を３分で解説</title>
		<link>https://it-biz.online/it-skills/check-the-input/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Tue, 26 May 2020 00:00:00 +0000</pubDate>
				<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[Web開発]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=1820</guid>

					<description><![CDATA[SEやプログラマーでなくても理解しておきたい「入力チェックの基本・入力チェックの種類」について解説します。 この記事では、必須チェックや相関チェック、外字チェック等々、入力チェックの種類とその意味について丁寧にご説明いた [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>SEやプログラマーでなくても理解しておきたい「入力チェックの基本・入力チェックの種類」について解説します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>入力チェックとは、社内システムやWebサイトなどの各種入門画面を持つシステムにおいて、<strong><span class="marker-under">ユーザーからの入力データが予想される形式や範囲に適合しているかどうかを確認する</span></strong>プロセスを指します。</p>
</div></div>



<p>この記事では、必須チェックや相関チェック、外字チェック等々、入力チェックの種類とその意味について丁寧にご説明いたします。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>入力チェックとは？
<ul class="wp-block-list">
<li>入力チェックとバリデーションの違い</li>
</ul>
</li>



<li>基本的な入力チェックの意味とチェック内容</li>
</ul>
</div>
</div></div>



<p>システムエンジニアやプログラマーであれば知らないと<strong><span class="marker-under">恥ずかしい超・基本知識の１つ</span></strong>です。是非最後までご覧ください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-15" checked><label class="toc-title" for="toc-checkbox-15">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">入力チェックとは</a></li><li><a href="#toc2" tabindex="0">入力チェック</a><ol><li><a href="#toc3" tabindex="0">１．必須チェック（必須入力チェック）</a></li><li><a href="#toc4" tabindex="0">２．項目長チェック（文字数チェック）</a></li><li><a href="#toc5" tabindex="0">３．属性チェック</a></li><li><a href="#toc6" tabindex="0">４．相関チェック</a></li><li><a href="#toc7" tabindex="0">５．存在チェック</a></li><li><a href="#toc8" tabindex="0">６．外字チェック</a></li><li><a href="#toc9" tabindex="0">７．権限チェック</a></li></ol></li><li><a href="#toc10" tabindex="0">補足：入力チェックと一緒に理解したい用語</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">入力チェックとは</span></h2>



<p>入力チェックとは、<strong><span class="marker-under">ユーザーからの入力データが予想される形式や範囲に適合しているかどうかを確認するプロセス</span></strong>のこと。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="867" height="378" src="https://it-biz.online/wp-content/uploads/2023/03/image-27.png" alt="" class="wp-image-6944" srcset="https://it-biz.online/wp-content/uploads/2023/03/image-27.png 867w, https://it-biz.online/wp-content/uploads/2023/03/image-27-300x131.png 300w, https://it-biz.online/wp-content/uploads/2023/03/image-27-500x218.png 500w, https://it-biz.online/wp-content/uploads/2023/03/image-27-768x335.png 768w, https://it-biz.online/wp-content/uploads/2023/03/image-27-800x349.png 800w" sizes="(max-width: 867px) 100vw, 867px" /></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば「生年月日」を入力する項目であれば正しく「〇〇〇〇/〇〇/〇〇」の形式で入力されているかどうか？を判定するのが入力チェック（＝この場合は形式チェック）です。</p>
</div></div>



<p>入力チェックは、システムやアプリケーションの正常な動作を保証するために重要な役割を果たしています。ユーザーが誤った形式のデータを入力した場合、システムはそれを適切に処理できず、エラーや不正な操作が発生する可能性が出てきます。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label fab-question-circle"><span class="tab-caption-box-label-text block-box-label-text box-label-text">入力チェックとバリデーション</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>入力チェックと似たような意味をもつ「バリデーション」について少しだけ補足します。</p>
</div></div>



<p>「バリデーション」と「入力チェック」は、両方とも入力データの検証に関連する用語ですが、微妙に異なる意味で利用されます。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">入力チェックとバリデーションの違い</div>
<ul class="wp-block-list">
<li><strong>入力チェック</strong><br>データの形式や範囲をチェックする際に利用される。</li>



<li><strong>バリデーション</strong><br>データの形式だけではなく<span style="text-decoration: underline;">要件やルールに適しているかどうかまでチェックする</span>際に利用される。</li>
</ul>
</div>
</div>



<p>「入力チェック」とは、入力データが予想される形式や範囲に適合しているかどうかを確認するプロセスを指します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>たとえば入力されたデータが数値である場合、それが数字のみで構成されているか、負の値ではないか、または特定の範囲内の数値であるかどうかを確認します。</p>
</div></div>



<p>一方、「バリデーション」は入力データが意図した用途に適しているかどうかを検証するプロセスを指します。つまり、<strong>データが予想される形式や範囲に適合しているだけでなく、システムやアプリケーションの要件や規則にも適合しているかどうかを確認</strong>します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>たとえば、ユーザーの登録フォームにおいて、パスワードが一定の強度基準を満たしているか、または入力されたメールアドレスが有効な形式であるかどうかを確認することができます。</p>
</div></div>



<p>つまり、入力チェックは入力データの形式や範囲の検証に重点を置いているのに対し、バリデーションはデータの用途や要件に適合しているかどうかを検証しています。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc2">入力チェック</span></h2>



<p>入力チェックは、ユーザビリティを考慮し、<strong><span class="marker-under">画面の上から下・左から右</span></strong>の項目順でチェックすることが基本です。</p>



<p>入力チェックには大きく分けて７種類のチェックが存在します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>現場やシステムの種類に応じて多少呼び方が異なる場合もあります。その点あらかじめご了承ください。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc3">１．必須チェック（必須入力チェック）</span></h3>



<p>最も基本形です。</p>



<p>項目に値が入力されているかどうかのチェックです。必須チェックには、「ある項目を選択したら関連項目も必須入力とする」条件付き必須チェックがあります。</p>



<p>例）転記日付が入力されていること</p>



<h3 class="wp-block-heading"><span id="toc4">２．項目長チェック（文字数チェック）</span></h3>



<p>入力された文字数が指定された文字数であること、もしくは指定された文字数以内であることをチェックします。</p>



<p>例１）備考欄は30文字以内であること</p>



<p>例２）契約番号は５桁で入力されていること</p>



<h3 class="wp-block-heading"><span id="toc5">３．属性チェック</span></h3>



<p>属性とは、文字/数字/日付などのデータ型のことです。</p>



<p>入力された項目が、指定されたデータ型と一致していることをチェックします。</p>



<p>ちなみに、同じ文字といっても「ひらがな」なのか「カタカナ」なのか、全角なのか半角なのか、細かく指定することも可能です。</p>



<p>例）日付項目に日付以外の値が入力されていないこと</p>



<h3 class="wp-block-heading"><span id="toc6">４．相関チェック</span></h3>



<p>相関チェックは、複数の項目に入力された値の妥当性のチェックです。</p>



<p>項目Aの入力値と、項目Bの入力値と、項目Cの入力値と、・・・に妥当性があるかどうかを制限するチェックです。</p>



<p>例）転記日付が登録日付より前の日付ではないこと</p>



<h3 class="wp-block-heading"><span id="toc7">５．存在チェック</span></h3>



<p>入力値に関連するデータがシステム（データベース）に存在しているかどうかをチェックします。</p>



<p>マスタの値から選択する場合などに用います。</p>



<p>例）勘定コードマスタに存在する勘定コードが入力されていること</p>



<h3 class="wp-block-heading"><span id="toc8">６．外字チェック</span></h3>



<p>外字とは、<strong>システムに存在しない文字のこと</strong>です。</p>



<p>つまり、最新のパソコンからであれば入力できるものの、システムには登録されていない文字のことです。「㉚」とか、特殊な文字をよく使う場合には必須です。</p>



<p>外字チェックとは、入力された項目に外字が指定されていないことをチェックすることです。</p>



<p>このチェックをしない場合、プログラム停止か、うまくいっても文字化けします。</p>



<p>例）備考欄にS-JIS以外の文字が入力されていないこと</p>



<h3 class="wp-block-heading"><span id="toc9">７．権限チェック</span></h3>



<p>入力された値によるデータへのアクセス権限をチェックします。</p>



<p>例えば、人事システムにおいて給料を確認する際に「自分以外を指定していないか」をチェックするなどというのが代表的な使い方です。</p>



<p>例）指定された会社コードの参照権限があること</p>



<h2 class="wp-block-heading"><span id="toc10">補足：入力チェックと一緒に理解したい用語</span></h2>



<p>入力チェックは、画面の入力欄だけでなく、APIやデータベースへ値を渡す前にも重要になります。何をチェックしているのかを考えるときは、データの種類やシステム間の受け渡しも一緒に見ると理解しやすいです。</p>



<ul class="wp-block-list">
<li><a href="https://it-biz.online/it-skills/data_type/">データ型とは何か</a>を理解すると、数値・文字列・日付などのチェック観点が整理しやすくなります。</li>



<li><a href="https://it-biz.online/it-skills/web_api/">APIとは何か</a>を読むと、入力値を別システムへ送る前に検証する理由が見えてきます。</li>



<li><a href="https://it-biz.online/it-skills/character-code/">文字コード</a>も押さえておくと、外字チェックや文字化け対策の背景が理解しやすくなります。</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
