<?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>職業訓練 &#8211; Party-Hearty</title>
	<atom:link href="https://creator-kid.com/tag/%E8%81%B7%E6%A5%AD%E8%A8%93%E7%B7%B4/feed/" rel="self" type="application/rss+xml" />
	<link>https://creator-kid.com</link>
	<description>人生なんて死ぬまでの暇つぶし。</description>
	<lastBuildDate>Thu, 17 Apr 2025 02:09:55 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://creator-kid.com/wp-content/uploads/2022/06/favicon_pink.ico</url>
	<title>職業訓練 &#8211; Party-Hearty</title>
	<link>https://creator-kid.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【PHP】$_POSTと$_SESSIONを使ってフォームの値を送信する方法を解説</title>
		<link>https://creator-kid.com/code/php-post_session/</link>
		
		<dc:creator><![CDATA[Ryuji]]></dc:creator>
		<pubDate>Mon, 14 Feb 2022 14:52:55 +0000</pubDate>
				<category><![CDATA[CODE]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web制作]]></category>
		<category><![CDATA[職業訓練]]></category>
		<guid isPermaLink="false">https://creator-kid.com/?p=4419</guid>

					<description><![CDATA[$_POSTと$_SESSIONを使用して値を送る仕組み 今回用意された問題は、「ロジック」と「ビュー（HTML）」を別ファイル管理しています。実際の現場でもこのスタイルで仕事を進めていくことが多いそうです。 PHPはH...]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading" id="postと-sessionを使用して値を送る仕組み">$_POSTと$_SESSIONを使用して値を送る仕組み</h2>



<p>今回用意された問題は、「ロジック」と「ビュー（HTML）」を別ファイル管理しています。実際の現場でもこのスタイルで仕事を進めていくことが多いそうです。</p>



<p>PHPはHTML内にプログラミングを書き込める利便性がある反面、ソースコードが複雑になりがちです。しかし、ファイルの読み込みを使用することでデザインとプログラムを分離することができます。</p>



<p>「ロジック」と「ビュー（HTML）」を別ファイル管理するメリットは、「ロジック担当者（プログラマー）」と「ビュー担当者（コーダー）」で作業内容が違うので、両者とも自分が担当している作業を分業しながらWebシステムを作成することができます。</p>



<p>デメリットは、画面に表示する値（変数）を「ロジック担当者」と「ビュー担当者」で共有しておかなければなりません。</p>



<div class="wp-block-stk-plugin-cbox-notitle cbox is-style-site_color type_normal"><div class="cboxcomment">
<ul class="wp-block-list"><li>ロジック担当者（プログラマー）：ロジック部分作成</li><li>ビュー担当者（コーダー）：各パーツをコーディング</li></ul>
</div></div>



<h3 class="wp-block-heading" id="ページ遷移図">ページ遷移図</h3>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="768" src="https://creator-kid.com/wp-content/uploads/2022/02/img_2486-1024x768.jpg" alt="" class="wp-image-4454" srcset="https://creator-kid.com/wp-content/uploads/2022/02/img_2486-1024x768.jpg 1024w, https://creator-kid.com/wp-content/uploads/2022/02/img_2486-300x225.jpg 300w, https://creator-kid.com/wp-content/uploads/2022/02/img_2486-768x576.jpg 768w, https://creator-kid.com/wp-content/uploads/2022/02/img_2486-485x364.jpg 485w, https://creator-kid.com/wp-content/uploads/2022/02/img_2486.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>この遷移図は理解しているとすごくわかりやすいのですが、理解できてないとチンプンカンプンだと思います。</p>



<p>この遷移図は、ユーザ入力画面からユーザ情報をフォーム（$_POST）と$_SESSIONで値を受け渡し、DB（データベース）に登録するまでの流れを表しています。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="768" src="https://creator-kid.com/wp-content/uploads/2022/02/img_2485-1024x768.jpg" alt="" class="wp-image-4453" srcset="https://creator-kid.com/wp-content/uploads/2022/02/img_2485-1024x768.jpg 1024w, https://creator-kid.com/wp-content/uploads/2022/02/img_2485-300x225.jpg 300w, https://creator-kid.com/wp-content/uploads/2022/02/img_2485-768x576.jpg 768w, https://creator-kid.com/wp-content/uploads/2022/02/img_2485-485x364.jpg 485w, https://creator-kid.com/wp-content/uploads/2022/02/img_2485.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-site_color type_normal"><div class="box_title"><span class="span__box_title">ポイント</span></div><div class="cboxcomment">
<ul class="wp-block-list"><li>$_POSTと$_SESSIONの使い所</li><li>$_SESSIONの動向</li></ul>
</div></div>



<h3 class="wp-block-heading" id="functions-php">functions.php</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="functions.php" data-lang="PHP"><code>&lt;?php
function h($val)
{
  return htmlspecialchars($val, ENT_QUOTES, &#39;UTF-8&#39;);
}
function v($val)
{
  echo &#39;&lt;pre&gt;&#39;;
  var_dump($val);
  echo &#39;&lt;/pre&gt;&#39;;
}</code></pre></div>



<p>functions.phpによく使う関数を共通関数として登録しておく。</p>



<h4 class="wp-block-heading" id="h関数-サニタイジング用関数を定義">h関数：サニタイジング用関数を定義</h4>



<p>ユーザーが入力した値を使用する場合は注意（セキュリティ対策）が必要です。なぜならば、悪意があるユーザーが悪意ある値を入力してくる場合があるからです。不正なJavaScriptコードを使用して他のサイト訪問者に攻撃を仕掛けることを<strong>クロスサイトスクリプティング(XSS)</strong>と呼びます。</p>



<p>こういったトラブルを防ぐには、htmlspecialchars()関数でHTMLで意味をもつ記号をエスケープします。</p>



<p><strong>htmlspecialchars()関数：HTMLタグを無効化する関数</strong></p>



<p>第１引数($val)：string変換対象文字列<br>第２引数(ENT_QUOTES)：ENT_QUOTES→シングルクォートとダブルクォートを共に変換<br>第３引数(&#8216;UTF-8&#8217;)：stringエンコード</p>



<p>htmlspecialchars()関数を実行すると、HTMLで意味を持つ記号を実体参照に置き換えてくれます。(ex. 「&lt;」 → 「&amp;lt;」,「&amp;」→「&amp;amp;」)</p>



<p>このようなエスケープ操作のことをサニタイジングや無害化と呼びます。</p>



<h4 class="wp-block-heading" id="v関数-デバッグ用関数を定義">v関数：デバッグ用関数を定義</h4>



<p>デバック時に使用するvar_dump()関数をpreタグで囲んだ関数を定義しておく。preタグで囲むことでvar_dump()関数を表示した際に見えやすくしている。</p>



<h3 class="wp-block-heading" id="form1-php">form1.php</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="form1.php" data-lang="PHP"><code>&lt;?php
session_start();
session_regenerate_id(TRUE);

require_once __DIR__ . &#39;/functions.php&#39;;


v($_SESSION);
$name    = isset($_SESSION[&#39;name&#39;])    ? $_SESSION[&#39;name&#39;]    : NULL;
$subject = isset($_SESSION[&#39;subject&#39;]) ? $_SESSION[&#39;subject&#39;] : NULL;
$body    = isset($_SESSION[&#39;body&#39;])    ? $_SESSION[&#39;body&#39;]    : NULL;

require &#39;form1_view.php&#39;;</code></pre></div>



<h4 class="wp-block-heading" id="session-start-関数-セッション変数利用開始する関数">session_start()関数：セッション変数利用開始する関数</h4>



<p>session_start()関数を呼び出すことで、サーバ側に値を保存するセッション変数「$_SESSION」を使用できるようになります。他のページと値を共有したいときに使用します。</p>



<p>セッションは、クッキーを使ってユーザを認識し必要なデータをサーバ側に保存して使用します。データがサーバ側に保存されるため、悪意あるユーザにデータを改ざんされる心配がありません。クッキーに比べて安全性が高く、データ量の制限も実質ありません。</p>



<h4 class="wp-block-heading" id="session-regenerate-id-関数-セッションidを再発行する関数">session_regenerate_id()関数：セッションIDを再発行する関数</h4>



<p>セッションハイジャック対策でPHPSESSIDの値を変更する。引数は常に「<strong>TRUE</strong>」を指定し、古いセッションファイルを削除する。ログイン時やセッション開始ページ、一定時間経過したときにセッションIDを新たに設定することで、セッションハイジャックの危険性を減らすことができます。</p>



<p>複数ページで処理する場合は、始点となるファイルでPHPSESSIDの値を変更することが多い。</p>



<h4 class="wp-block-heading" id="require-once-dir-functions-php-共通関数の読み込み">require_once <strong>DIR</strong> . &#8216;/functions.php&#8217;：共通関数の読み込み</h4>



<p>functions.phpに登録した共通関数のh関数とv関数を使用できるように、共通関数ファイルを読み込む。</p>



<h4 class="wp-block-heading" id="三項方程式">三項方程式</h4>



<p>今回ビューファイルで必要な値「名前」「件名」「本文」をロジックで用意している。</p>



<p>$name = isset($_SESSION[&#8216;name&#8217;]) ? $_SESSION[&#8216;name&#8217;] : NULL;</p>



<p>三項方程式を使用し、 isset($_SESSION[&#8216;name&#8217;])は「$_SESSION[&#8216;name&#8217;]」が存在するか調べます。初回アクセス時はまだ「$_SESSION[&#8216;name&#8217;]」は存在しないので、変数にはfalseの「NULL」を代入します。</p>



<h4 class="wp-block-heading" id="require-form1-view-php">require &#8216;form1_view.php&#8217;;</h4>



<p>reqiuireを使ってパーツ化したコンテンツを読み込みます。</p>



<p>form1.phpでは「form1_view.php」ファイルを読み込みます。</p>



<h3 class="wp-block-heading" id="form1-view-php">form1_view.php</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="form1_view.php" data-lang="PHP"><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ja&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;title&gt;入力画面｜フォーム&lt;/title&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;css/style.css&quot;&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;div class=&quot;header&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
      &lt;h1&gt;入力画面&lt;/h1&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;content&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
      &lt;?php if (isset($error)) : ?&gt;
      &lt;div class=&quot;error&quot;&gt;
        &lt;ul&gt;
          &lt;?php foreach ($error as $val) : ?&gt;
          &lt;li&gt;&lt;?php echo $val; ?&gt;&lt;/li&gt;
          &lt;?php endforeach; ?&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
      &lt;?php endif; ?&gt;

      &lt;form action=&quot;form2.php&quot; method=&quot;post&quot;&gt;
        &lt;dl&gt;
          &lt;dt&gt;名前&lt;/dt&gt;
          &lt;dd&gt;
            &lt;input type=&quot;text&quot; name=&quot;name&quot; value=&quot;&lt;?php echo h($name); ?&gt;&quot; size=&quot;50&quot;&gt;
          &lt;/dd&gt;
          &lt;dt&gt;件名&lt;/dt&gt;
          &lt;dd&gt;
            &lt;input type=&quot;text&quot; name=&quot;subject&quot; value=&quot;&lt;?php echo h($subject); ?&gt;&quot; size=&quot;50&quot;&gt;
          &lt;/dd&gt;
          &lt;dt&gt;内容&lt;/dt&gt;
          &lt;dd&gt;
            &lt;textarea name=&quot;body&quot; cols=&quot;50&quot; rows=&quot;10&quot;&gt;&lt;?php echo h($body); ?&gt;&lt;/textarea&gt;
          &lt;/dd&gt;
        &lt;/dl&gt;
        &lt;p&gt;
          &lt;input class=&quot;btn&quot; type=&quot;submit&quot; value=&quot;確認画面へ&quot;&gt;
        &lt;/p&gt;
      &lt;/form&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;footer&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
      &lt;p class=&quot;copyright&quot;&gt;© フォーム&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>      &lt;?php if (isset($error)) : ?&gt;
      &lt;div class=&quot;error&quot;&gt;
        &lt;ul&gt;
          &lt;?php foreach ($error as $val) : ?&gt;
          &lt;li&gt;&lt;?php echo $val; ?&gt;&lt;/li&gt;
          &lt;?php endforeach; ?&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
      &lt;?php endif; ?&gt;</code></pre></div>



<p>form1.phpでは$errorが存在しないので、エラー表示部分の利用はありません。<br>しかし、後々出てくる「form2.php」で活躍します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>      &lt;form action=&quot;form2.php&quot; method=&quot;post&quot;&gt;
        &lt;dl&gt;
          &lt;dt&gt;名前&lt;/dt&gt;
          &lt;dd&gt;
            &lt;input type=&quot;text&quot; name=&quot;name&quot; value=&quot;&lt;?php echo h($name); ?&gt;&quot; size=&quot;50&quot;&gt;
          &lt;/dd&gt;
          &lt;dt&gt;件名&lt;/dt&gt;
          &lt;dd&gt;
            &lt;input type=&quot;text&quot; name=&quot;subject&quot; value=&quot;&lt;?php echo h($subject); ?&gt;&quot; size=&quot;50&quot;&gt;
          &lt;/dd&gt;
          &lt;dt&gt;内容&lt;/dt&gt;
          &lt;dd&gt;
            &lt;textarea name=&quot;body&quot; cols=&quot;50&quot; rows=&quot;10&quot;&gt;&lt;?php echo h($body); ?&gt;&lt;/textarea&gt;
          &lt;/dd&gt;
        &lt;/dl&gt;
        &lt;p&gt;
          &lt;input class=&quot;btn&quot; type=&quot;submit&quot; value=&quot;確認画面へ&quot;&gt;
        &lt;/p&gt;
      &lt;/form&gt;</code></pre></div>



<p>HTMLでフォームを作成します。<br>今回は「form2.php」にPOST形式で値を送るので、action=&#8221;form2.php&#8221; method=&#8221;POST&#8221;となります。</p>



<p class="is-style-supplement-succes">ユーザから情報を得る場合は、基本$_POSTを使用して値を取得します。</p>



<p>inputタグのvalueの部分がユーザ入力値としてform2.phpに送られるので、ユーザ入力値の部分をh関数の<strong>htmlspecialchars()関数</strong>で入力値をサニタイジングします。</p>



<h4 class="wp-block-heading" id="v-session">v($_SESSION);</h4>



<p>ここでセッションをv()関数を使って確認します。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="553" height="416" src="https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.32.44.jpg" alt="form1.php" class="wp-image-4459" srcset="https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.32.44.jpg 553w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.32.44-300x226.jpg 300w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.32.44-485x365.jpg 485w" sizes="(max-width: 553px) 100vw, 553px" /><figcaption>form1.php</figcaption></figure></div>



<p>最初のform1.phpではまだ$_SESSIONに値が入ってないことが確認できます。</p>



<h3 class="wp-block-heading" id="form2-php">form2.php</h3>



<p>form1.phpで確認画面へボタンをクリックするとform2.phpへ移ります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="form2.php" data-lang="PHP"><code>&lt;?php
session_start();
require_once __DIR__ . &#39;/functions.php&#39;;

v($_POST);

$name    = isset($_POST[&#39;name&#39;])    ? $_POST[&#39;name&#39;]    : NULL;
$subject = isset($_POST[&#39;subject&#39;]) ? $_POST[&#39;subject&#39;] : NULL;
$body    = isset($_POST[&#39;body&#39;])    ? $_POST[&#39;body&#39;]    : NULL;

$name    = trim($name);
$subject = trim($subject);
$body    = trim($body);

$error = [];

if ($name == &#39;&#39;) {
  $error[] = &#39;お名前は必須項目です。&#39;;
} else if (mb_strlen($name) &gt; 20) {
  $error[] = &#39;お名前は20文字以内でお願い致します。&#39;;
}

if ($subject == &#39;&#39;) {
  $error[] = &#39;件名は必須項目です。&#39;;
} else if (mb_strlen($subject) &gt; 50) {
  $error[] = &#39;件名は50文字以内でお願い致します。&#39;;
}

if ($body == &#39;&#39;) {
  $error[] = &#39;内容は必須項目です。&#39;;
} else if (mb_strlen($body) &gt; 500) {
  $error[] = &#39;内容は500文字以内でお願い致します。&#39;;
}

if (count($error) &gt; 0) {
  require &#39;form1_view.php&#39;;
} else {
  $_SESSION[&#39;name&#39;]    = $name;
  $_SESSION[&#39;subject&#39;] = $subject;
  $_SESSION[&#39;body&#39;]    = $body;
  require &#39;form2_view.php&#39;;
}</code></pre></div>



<p>form2.phpではform1.phpから$_POSTで送った値を取得します。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.05.jpg" alt="form2.php" class="wp-image-4460" width="728" height="502" srcset="https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.05.jpg 953w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.05-300x207.jpg 300w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.05-768x530.jpg 768w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.05-485x335.jpg 485w" sizes="(max-width: 728px) 100vw, 728px" /><figcaption>form2.php</figcaption></figure>



<p>form1.phpから$_POSTで送られた値はform2.phpに届いていることが確認できますが、この時点でも$_SESSIONにはまだ値がありません。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$name    = isset($_POST[&#39;name&#39;])    ? $_POST[&#39;name&#39;]    : NULL;
$subject = isset($_POST[&#39;subject&#39;]) ? $_POST[&#39;subject&#39;] : NULL;
$body    = isset($_POST[&#39;body&#39;])    ? $_POST[&#39;body&#39;]    : NULL;

$name    = trim($name);
$subject = trim($subject);
$body    = trim($body);</code></pre></div>



<p>三項方程式でそれぞれ変数にform1.phpから$_POSTで送られた値を代入します。<br>さらにtrim()関数で先頭・末尾にあるホワイトスペースを削除したものを変数へ再代入します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$error = [];

if ($name == &#39;&#39;) {
  $error[] = &#39;お名前は必須項目です。&#39;;
} else if (mb_strlen($name) &gt; 20) {
  $error[] = &#39;お名前は20文字以内でお願い致します。&#39;;
}

if ($subject == &#39;&#39;) {
  $error[] = &#39;件名は必須項目です。&#39;;
} else if (mb_strlen($subject) &gt; 50) {
  $error[] = &#39;件名は50文字以内でお願い致します。&#39;;
}

if ($body == &#39;&#39;) {
  $error[] = &#39;内容は必須項目です。&#39;;
} else if (mb_strlen($body) &gt; 500) {
  $error[] = &#39;内容は500文字以内でお願い致します。&#39;;
}</code></pre></div>



<p>$error = [];<br>エラー変数を配列化して、エラー時に出力するエラー文を配列管理します。</p>



<p>mb_strlen()関数で変数値の文字列の長さを取得します。<br>if分を使い、未入力時と文字数を超えた場合にエラー変数にエラー文を配列で管理していきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>if (count($error) &gt; 0) {
  require &#39;form1_view.php&#39;;
} else {
  $_SESSION[&#39;name&#39;]    = $name;
  $_SESSION[&#39;subject&#39;] = $subject;
  $_SESSION[&#39;body&#39;]    = $body;
  require &#39;form2_view.php&#39;;
}</code></pre></div>



<p>エラーがある場合は、「fomr1_view.php」を読み込みます。</p>



<p>エラーがない場合は、$_SESSIONに確定したユーザ入力値を代入し、他のページでも使えるようにします。そして「form2_view.php」を読み込みます。</p>



<h3 class="wp-block-heading" id="form2-view-php">form2_view.php</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="form2_view.php" data-lang="PHP"><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ja&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;title&gt;確認画面｜フォーム&lt;/title&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;css/style.css&quot;&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;div class=&quot;header&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
      &lt;h1&gt;確認画面&lt;/h1&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;content&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;

      &lt;p&gt;以下の内容でよろしければ送信ボタンを押してください。&lt;/p&gt;

      &lt;dl class=&quot;confirm&quot;&gt;
        &lt;dt&gt;お名前：&lt;/dt&gt;
        &lt;dd&gt;&lt;?php echo h($name); ?&gt;&lt;/dd&gt;
        &lt;dt&gt;件名：&lt;/dt&gt;
        &lt;dd&gt;&lt;?php echo h($subject); ?&gt;&lt;/dd&gt;
        &lt;dt&gt;内容：&lt;/dt&gt;
        &lt;dd&gt;&lt;?php echo nl2br(h($body)); ?&gt;&lt;/dd&gt;
      &lt;/dl&gt;

      &lt;div class=&quot;confirm-btn&quot;&gt;
        &lt;p&gt;&lt;a class=&quot;btn&quot; href=&quot;form1.php&quot;&gt;入力画面に戻る&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;&lt;a class=&quot;btn&quot; href=&quot;form3.php&quot;&gt;送信する&lt;/a&gt;&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;footer&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
      &lt;p class=&quot;copyright&quot;&gt;© フォーム&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>      &lt;dl class=&quot;confirm&quot;&gt;
        &lt;dt&gt;お名前：&lt;/dt&gt;
        &lt;dd&gt;&lt;?php echo h($name); ?&gt;&lt;/dd&gt;
        &lt;dt&gt;件名：&lt;/dt&gt;
        &lt;dd&gt;&lt;?php echo h($subject); ?&gt;&lt;/dd&gt;
        &lt;dt&gt;内容：&lt;/dt&gt;
        &lt;dd&gt;&lt;?php echo nl2br(h($body)); ?&gt;&lt;/dd&gt;
      &lt;/dl&gt;</code></pre></div>



<p>ユーザ入力値を使用するので、h()関数を使ってエスケープします。</p>



<p>記述量が多い「内容」では「nl2br()」を使って見やすく表示します。</p>



<h4 class="wp-block-heading" id="v-session-1">v($_SESSION);</h4>



<p>ここでもセッションをv()関数を使って確認します。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="953" height="658" src="https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.05.jpg" alt="form2.php" class="wp-image-4460" srcset="https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.05.jpg 953w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.05-300x207.jpg 300w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.05-768x530.jpg 768w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.05-485x335.jpg 485w" sizes="(max-width: 953px) 100vw, 953px" /><figcaption>form2.php</figcaption></figure>



<p>上記で記述したように、form1.phpからページ移動してきたので$_POSTには値が入っていますが、$_SESSIONにはまだ値がありません。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="628" height="531" src="https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.25.jpg" alt="form1.php" class="wp-image-4461" srcset="https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.25.jpg 628w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.25-300x254.jpg 300w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.25-485x410.jpg 485w" sizes="(max-width: 628px) 100vw, 628px" /><figcaption>form1.php</figcaption></figure></div>



<p>その後「入力画面へ戻る」ボタンをクリックしform1.phpのページへ戻ると、最初に値が入ってなかった$_SESSIONに値が入っています。</p>



<p>これはform2.phpでエラーがなかった場合に$_SESSIONに値が代入されるからです。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="950" height="779" src="https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.45.jpg" alt="form2.php" class="wp-image-4462" srcset="https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.45.jpg 950w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.45-300x246.jpg 300w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.45-768x630.jpg 768w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.34.45-485x398.jpg 485w" sizes="(max-width: 950px) 100vw, 950px" /><figcaption>form2.php</figcaption></figure>



<p>再びform2.phpへ戻るとこちらの$_SESSIONにもちゃんと値が入っていることが確認できます。</p>



<h3 class="wp-block-heading" id="form3-php">form3.php</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="form3.php" data-lang="PHP"><code>&lt;?php
session_start();
require_once __DIR__ . &#39;/functions.php&#39;;

$name    = isset($_SESSION[&#39;name&#39;])    ? $_SESSION[&#39;name&#39;]    : NULL;
$subject = isset($_SESSION[&#39;subject&#39;]) ? $_SESSION[&#39;subject&#39;] : NULL;
$body    = isset($_SESSION[&#39;body&#39;])    ? $_SESSION[&#39;body&#39;]    : NULL;

unset($_SESSION[&#39;name&#39;]);
unset($_SESSION[&#39;subject&#39;]);
unset($_SESSION[&#39;body&#39;]);

$error = [];
if ($name === NULL) {
  $error[] = &#39;名前の値なし&#39;;
}

if ($subject === NULL) {
  $error[] = &#39;件名の値なし&#39;;
}

if ($body === NULL) {
  $error[] = &#39;本文の値なし&#39;;
}

受け取った値を使った処理：例）データベースへの登録など

if (count($error) &gt; 0) {
  require &#39;error_view.php&#39;;
} else {
  require &#39;form3_view.php&#39;;
}
</code></pre></div>



<p>form1.phpからform2.phpへ値を送信するときは、$_POSTを使用しましたが、form2.phpからform3.phpへの値の受け渡しは$_SESSIONを使用します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$name    = isset($_SESSION[&#39;name&#39;])    ? $_SESSION[&#39;name&#39;]    : NULL;
$subject = isset($_SESSION[&#39;subject&#39;]) ? $_SESSION[&#39;subject&#39;] : NULL;
$body    = isset($_SESSION[&#39;body&#39;])    ? $_SESSION[&#39;body&#39;]    : NULL;</code></pre></div>



<p>$_SESSIONから値を取得し、それぞれ変数に値を代入したら$_SESSIONを削除します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>unset($_SESSION[&#39;name&#39;]);
unset($_SESSION[&#39;subject&#39;]);
unset($_SESSION[&#39;body&#39;]);</code></pre></div>



<p>unset()関数：指定した変数の割り当てを解除・配列内の部屋を削除します。セッション変数の部屋は明示的に削除しないとずっと存在してしまうので、使用しなくなった部屋はunset()関数で削除しなければなりません。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$error = [];
if ($name === NULL) {
  $error[] = &#39;名前の値なし&#39;;
}

if ($subject === NULL) {
  $error[] = &#39;件名の値なし&#39;;
}

if ($body === NULL) {
  $error[] = &#39;本文の値なし&#39;;
}

受け取った値を使った処理：例）データベースへの登録など

if (count($error) &gt; 0) {
  require &#39;error_view.php&#39;;
} else {
  require &#39;form3_view.php&#39;;
}</code></pre></div>



<p>エラーがあれば、エラー変数にエラーメッセージを代入します。</p>



<p>エラーがあるとき、「error_view.php」を読み込みます。<br>エラーがないときは、「form3_view.php」を読み込みます。</p>



<p>実際にデータベースに値を受け渡すには、この時点でロジックを組んでいくみたいです。</p>



<h4 class="wp-block-heading" id="v-session-1">v($_SESSION);</h4>



<p>ここでもセッションをv()関数を使って確認します。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="865" height="624" src="https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.35.58.jpg" alt="form3.php" class="wp-image-4463" srcset="https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.35.58.jpg 865w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.35.58-300x216.jpg 300w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.35.58-768x554.jpg 768w, https://creator-kid.com/wp-content/uploads/2022/02/Screen-Shot-2022-02-12-at-2.35.58-485x350.jpg 485w" sizes="(max-width: 865px) 100vw, 865px" /><figcaption>form3.php</figcaption></figure>



<p>unset($_SESSION)の前後でv()関数で$_SESSIONの動向を確認します。</p>



<p>unset前では$_SESSIONに値が入っているのに対し、unset後の$_SESSIONには値が入っていないことが確認できます。</p>



<h3 class="wp-block-heading" id="form3-view-php">form3_view.php</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="form3_view.php" data-lang="PHP"><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ja&quot;&gt;

&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;title&gt;完了画面｜フォーム&lt;/title&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;css/style.css&quot;&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;div class=&quot;header&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
      &lt;h1&gt;完了画面&lt;/h1&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;content&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;

      &lt;p&gt;以下の値で処理をしました。&lt;/p&gt;

      &lt;dl class=&quot;confirm&quot;&gt;
        &lt;dt&gt;お名前：&lt;/dt&gt;
        &lt;dd&gt;&lt;?php echo h($name); ?&gt;&lt;/dd&gt;
        &lt;dt&gt;件名：&lt;/dt&gt;
        &lt;dd&gt;&lt;?php echo h($subject); ?&gt;&lt;/dd&gt;
        &lt;dt&gt;内容：&lt;/dt&gt;
        &lt;dd&gt;&lt;?php echo nl2br(h($body)); ?&gt;&lt;/dd&gt;
      &lt;/dl&gt;

      &lt;div class=&quot;content-footer&quot;&gt;
        &lt;p&gt;&lt;a href=&quot;form1.php&quot;&gt;入力画面に戻る&lt;/a&gt;&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;footer&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
      &lt;p class=&quot;copyright&quot;&gt;© フォーム&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre></div>



<p>ユーザ入力値を表示する際は毎回h()関数でエスケープしておきます。</p>



<h3 class="wp-block-heading" id="error-view-php">error_view.php</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="error_view.php" data-lang="PHP"><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ja&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;title&gt;エラー｜フォーム&lt;/title&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;css/style.css&quot;&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;div class=&quot;header&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
      &lt;h1&gt;エラー&lt;/h1&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;content&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;

      &lt;?php /* ?&gt;
      &lt;?php if (isset($error)) : ?&gt;
      &lt;div class=&quot;error&quot;&gt;
        &lt;ul&gt;
          &lt;?php foreach ($error as $val) : ?&gt;
          &lt;li&gt;&lt;?php echo $val; ?&gt;&lt;/li&gt;
          &lt;?php endforeach; ?&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
      &lt;?php endif; ?&gt;
      &lt;?php */ ?&gt;

      &lt;p&gt;セッションが切れました&lt;/p&gt;
      &lt;p&gt;&lt;a href=&quot;form1.php&quot;&gt;もう一度やり直してください。&lt;/a&gt;&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;footer&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
      &lt;p class=&quot;copyright&quot;&gt;© フォーム&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>      &lt;?php /* ?&gt;
      &lt;?php if (isset($error)) : ?&gt;
      &lt;div class=&quot;error&quot;&gt;
        &lt;ul&gt;
          &lt;?php foreach ($error as $val) : ?&gt;
          &lt;li&gt;&lt;?php echo $val; ?&gt;&lt;/li&gt;
          &lt;?php endforeach; ?&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
      &lt;?php endif; ?&gt;
      &lt;?php */ ?&gt;</code></pre></div>



<p>この部分はデバック用なので実際には表示されません。<br>エラーが出たときにどんなエラーが出たのか確認できます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【PHP】登録フォームで$_POST形式で値を受け取る際のエラーチェックを例題と共に解説</title>
		<link>https://creator-kid.com/code/php-form_post/</link>
		
		<dc:creator><![CDATA[Ryuji]]></dc:creator>
		<pubDate>Tue, 01 Feb 2022 13:48:37 +0000</pubDate>
				<category><![CDATA[CODE]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web制作]]></category>
		<category><![CDATA[職業訓練]]></category>
		<guid isPermaLink="false">https://creator-kid.com/?p=4304</guid>

					<description><![CDATA[私がPHPを学んでいる中で一番理解するのに苦労したのが、「$_POST形式で値を受け取る際のエラーチェック」だったので、その例題と解答方法をまとめました。 なぜ苦労したかというと、アンケートフォームなどでユーザーが普通に...]]></description>
										<content:encoded><![CDATA[
<p>私がPHPを学んでいる中で一番理解するのに苦労したのが、「<strong>$_POST形式で値を受け取る際のエラーチェック</strong>」だったので、その例題と解答方法をまとめました。</p>



<p>なぜ苦労したかというと、アンケートフォームなどでユーザーが普通に入力して起こりうるエラーしか考えつかず、その他起こりうるエラーについて理解するのが困難だったためです。</p>



<h2 class="wp-block-heading" id="post形式の値の送受信の問題">POST形式の値の送受信の問題</h2>



<h3 class="wp-block-heading" id="フォームの作成">フォームの作成</h3>



<p>以下の内容のフォームを作成すること。</p>



<ul class="wp-block-list"><li>名前</li><li>メールアドレス</li><li>性別</li><li>年代</li><li>お問い合わせ内容</li></ul>



<h3 class="wp-block-heading" id="送信について">送信について</h3>



<p>送信先は「comfirm.php」とする。</p>



<p>送信方法は「POST」とする。</p>



<h3 class="wp-block-heading" id="受信について">受信について</h3>



<h4 class="wp-block-heading" id="必須項目">必須項目</h4>



<ul class="wp-block-list"><li>名前</li><li>お問い合わせ内容</li></ul>



<h4 class="wp-block-heading" id="上限値">上限値</h4>



<ul class="wp-block-list"><li>名前：20文字</li><li>メールアドレス：100文字</li><li>お問い合わせ内容：400文字</li></ul>



<h4 class="wp-block-heading" id="画面表示">画面表示</h4>



<p>ユーザー入力値に問題なければ 送られてきた値を表示。</p>



<p>ユーザー入力値に問題があるときは エラーメッセージを表示。</p>



<h3 class="wp-block-heading" id="フォームパーツについて">フォームパーツについて</h3>



<p>名前は入力系パーツを使用しname属性「myname」とする。</p>



<p>メールアドレスは入力系パーツを使用しname属性「mail」とする。</p>



<p>性別は選択系パーツを使用しname属性「gender」とする。<br>送信する値は「選択しない」&gt;「0」、 「男性」&gt;「1」、 「女性」&gt;「2」</p>



<p>年代はセレクトボックスを使用しname属性「age」とする。<br>送信する値は「選択しない」&gt;「空文字」、 「10代」&gt;「1」、 「20代」&gt;「2」、 「30代」&gt;「3」、 「40代」&gt;「4」、 「50代以上」&gt;「5」</p>



<p>お問い合わせ内容はテキストエリアを使用しname属性「body」とする。</p>



<p>「送信ボタン」と「リセットボタン」を下部に配置すること。</p>



<h3 class="wp-block-heading" id="その他のルール">その他のルール</h3>



<p>文章構成（divでグループ化や定義リストを使用する等）は自由に決めて構わない。</p>



<p>時間があればCSSで自由にデザインすること。</p>



<h2 class="wp-block-heading" id="解答例">解答例</h2>



<h3 class="wp-block-heading" id="作成したお問い合わせフォーム">作成したお問い合わせフォーム</h3>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="680" height="627" src="https://creator-kid.com/wp-content/uploads/2022/01/image-1.jpg" alt="" class="wp-image-4390" srcset="https://creator-kid.com/wp-content/uploads/2022/01/image-1.jpg 680w, https://creator-kid.com/wp-content/uploads/2022/01/image-1-300x277.jpg 300w, https://creator-kid.com/wp-content/uploads/2022/01/image-1-485x447.jpg 485w" sizes="(max-width: 680px) 100vw, 680px" /></figure></div>



<h3 class="wp-block-heading" id="html">HTML</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-html" data-lang="HTML"><code>&lt;h1&gt;問題解答&lt;/h1&gt;
&lt;form action=&quot;comfirm.php&quot; method=&quot;post&quot;&gt;
  &lt;fieldset&gt;
    &lt;legend&gt;お問い合わせフォーム&lt;/legend&gt;
    &lt;dl&gt;
      &lt;dt&gt;名前&lt;/dt&gt;
      &lt;dd&gt;
        &lt;input type=&quot;text&quot; name=&quot;myname&quot; required placeholder=&quot;例）山田 太郎&quot;&gt;
      &lt;/dd&gt;
      &lt;dt&gt;メールアドレス&lt;/dt&gt;
      &lt;dd&gt;
        &lt;input type=&quot;email&quot; name=&quot;mail&quot; placeholder=&quot;例）name@example.com&quot;&gt;
      &lt;/dd&gt;
      &lt;dt&gt;性別&lt;/dt&gt;
      &lt;dd&gt;
        &lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;gender&quot; value=&quot;0&quot;&gt;未選択&lt;/label&gt;
        &lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;gender&quot; value=&quot;1&quot;&gt;男性&lt;/label&gt;
        &lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;gender&quot; value=&quot;2&quot;&gt;女性&lt;/label&gt;
      &lt;/dd&gt;
      &lt;dt&gt;年代&lt;/dt&gt;
      &lt;dd&gt;
        &lt;select name=&quot;age&quot;&gt;
          &lt;option value=&quot;&quot;&gt;選択してください&lt;/option&gt;
          &lt;option value=&quot;0&quot;&gt;未回答&lt;/option&gt;
          &lt;option value=&quot;1&quot;&gt;10代&lt;/option&gt;
          &lt;option value=&quot;2&quot;&gt;20代&lt;/option&gt;
          &lt;option value=&quot;3&quot;&gt;30代&lt;/option&gt;
          &lt;option value=&quot;4&quot;&gt;40代&lt;/option&gt;
          &lt;option value=&quot;5&quot;&gt;50代以上&lt;/option&gt;
        &lt;/select&gt;
      &lt;/dd&gt;
      &lt;dt&gt;お問い合わせ内容&lt;/dt&gt;
      &lt;dd&gt;
        &lt;textarea name=&quot;body&quot; cols=&quot;50&quot; rows=&quot;10&quot; required&gt;&lt;/textarea&gt;
      &lt;/dd&gt;
    &lt;/dl&gt;
    &lt;div class=&quot;button&quot;&gt;
      &lt;input class=&quot;btn&quot; type=&quot;submit&quot; value=&quot;送信&quot;&gt;
      &lt;input class=&quot;btn&quot; type=&quot;reset&quot; value=&quot;リセット&quot;&gt;
    &lt;/div&gt;
  &lt;/fieldset&gt;
&lt;/form&gt;</code></pre></div>



<p>フォームパーツが多い場合は、fieldset要素を使ってグループを作成できる。<br>form要素内に入力パーツが少ない場合は、field要素とlegend要素は省略可能。</p>



<p>name属性はPHPの送受信には必須の属性で、値の送受信用の名前。<br>CSSでのclass属性、JSでのid属性のようなもの。</p>



<p>input要素をlabelタグで囲むと、クリック領域が広がりユーザーが使いやすくなる。</p>



<p>required属性を付与すると、必須項目になる。</p>



<p>placeholderを入力しておくと、名前やメールアドレスなどの入力欄に参考例をあらかじめ入力しておくことができ、ユーザーがわかりやすくなる。</p>



<h3 class="wp-block-heading" id="css">CSS</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-css" data-lang="CSS"><code>fieldset{
  width: 50%;
  margin: 0 auto;
  background-color: aliceblue;
}

dt{
  background-color: #ccc;
}
dd{
  padding: 1em;
  margin: 0;
}

.btn{
  border-radius: 25px;
  background-color: #ccc;
  color: #000;
}

.button{
  text-align: right;
}
</code></pre></div>



<p>CSSは特に重要ではないですが、一応載せておきます。</p>



<h3 class="wp-block-heading" id="php">PHP</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
echo &#39;&lt;pre&gt;&#39;;
var_dump($_POST);
echo &#39;&lt;/pre&gt;&#39;;

$error = [];

echo &#39;&lt;pre&gt;&#39;;
var_dump($error);
echo &#39;&lt;/pre&gt;&#39;;

$limit = 20;
if (isset($_POST[&#39;myname&#39;])) {
  $myname = $_POST[&#39;myname&#39;];
  if ($myname === &#39;&#39;) {
    $error[] = &#39;名前は必須項目です&#39;;
  } else if (mb_strlen($myname) &gt; $limit) {
    $error[] = &quot;名前は{$limit}文字以下で入力してください&quot;;
  }
} else {
  $error[] = &#39;名前の値が届いていません&#39;;
}

$limit = 100;
if (isset($_POST[&#39;mail&#39;])) {
  $mail = $_POST[&#39;mail&#39;];
  if (mb_strlen($mail) &gt; $limit) {
    $error[] = &quot;メールアドレスは{$limit}文字以下で入力してください&quot;;
  }
} else {
  $error[] = &#39;メールアドレスの値が届いていません&#39;;
}

$limit = 400;
if (isset($_POST[&#39;body&#39;])) {
  $body = $_POST[&#39;body&#39;];
  if ($body === &#39;&#39;) {
    $error[] = &#39;お問い合わせ内容は必須項目です&#39;;
  } else if (mb_strlen($body) &gt; $limit) {
    $error[] = &quot;お問い合わせ内容は{$limit}文字以下で入力してください&quot;;
  }
} else {
  $error[] = &#39;お問い合わせ内容の値が届いていません&#39;;
}

if (isset($_POST[&#39;gender&#39;])) {
  $gender = $_POST[&#39;gender&#39;];
  if (ctype_digit($gender)) {
    if ($gender &lt; 0 || $gender &gt; 2) {
      $error[] = &#39;性別の値が不正です&#39;;
    }
  } else {
    $error[] = &#39;性別の値が不正です&#39;;
  }
}

if (isset($_POST[&#39;age&#39;])) {
  $age = $_POST[&#39;age&#39;];
  if ($age !== &#39;&#39;) {
    if (ctype_digit($age)) {
      if ($age &lt; 0 || $age &gt; 5) {
        $error[] = &#39;年代の値が不正です:2&#39;;
      }
    } else {
      $error[] = &#39;年代の値が不正です:1&#39;;
    }
  }
} else {
  $error[] = &#39;年代の値が届いていません&#39;;
}

if (count($error) === 0) {
  $genderList = [
    0 =&gt; &#39;選択してない&#39;,
    1 =&gt; &#39;男性&#39;,
    2 =&gt; &#39;女性&#39;,
  ];
  if (isset($gender)) {
    $genderStr = $genderList[$gender];
  } else {
    $genderStr = &#39;選択していない&#39;;
  }

  if ($age === &#39;&#39;) {
    $ageStr = &#39;選択していない&#39;;
  } else if ($age === &#39;0&#39;) {
    $ageStr = &#39;未回答&#39;;
  } else if ($age === &#39;5&#39;) {
    $ageStr = &quot;{$age}0代以上&quot;;
  } else {
    $ageStr = &quot;{$age}0代&quot;;
  }
}
?&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ja&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;title&gt;POST形式で送信された値を取得&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;div class=&quot;box&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
      &lt;?php if (count($error) &gt; 0) : ?&gt;
        &lt;h1&gt;エラー&lt;/h1&gt;
        &lt;ul class=&quot;error&quot;&gt;
          &lt;?php foreach ($error as $val) : ?&gt;
            &lt;li&gt;&lt;?php echo $val; ?&gt;&lt;/li&gt;
          &lt;?php endforeach; ?&gt;
        &lt;/ul&gt;
      &lt;?php else : ?&gt;
        &lt;h1&gt;確認&lt;/h1&gt;
        &lt;dl&gt;
          &lt;dt&gt;名前&lt;/dt&gt;
          &lt;dd&gt;&lt;?php echo $myname; ?&gt;&lt;/dd&gt;
          &lt;dt&gt;メールアドレス&lt;/dt&gt;
          &lt;dd&gt;&lt;?php echo $mail; ?&gt;&lt;/dd&gt;
          &lt;dt&gt;性別&lt;/dt&gt;
          &lt;dd&gt;&lt;?php echo $genderStr; ?&gt;&lt;/dd&gt;
          &lt;dt&gt;年代&lt;/dt&gt;
          &lt;dd&gt;&lt;?php echo $ageStr; ?&gt;&lt;/dd&gt;
          &lt;dt&gt;お問い合わせ内容&lt;/dt&gt;
          &lt;dd&gt;&lt;?php echo nl2br($body); ?&gt;&lt;/dd&gt;
        &lt;/dl&gt;
      &lt;?php endif; ?&gt;
      &lt;p&gt;
        &lt;a href=&quot;form.html&quot;&gt;フォームに戻る&lt;/a&gt;
      &lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre></div>



<p>これが解答例です。<br>わかりやすいように各パーツごと分解して解説していきます。</p>



<h4 class="wp-block-heading" id="受信した値を確認">受信した値を確認</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>echo &#39;&lt;pre&gt;&#39;;
var_dump($_POST);
echo &#39;&lt;/pre&gt;&#39;;</code></pre></div>



<p>HTMLで作成したフォームからPOST形式で送られてきた値をvar_dumpして確認。</p>



<h4 class="wp-block-heading" id="エラー変数">エラー変数</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$error = []; </code></pre></div>



<p>$error(変数宣言）して、エラーをこの$errorに配列として溜めていく。</p>



<h4 class="wp-block-heading" id="名前チェック">名前チェック</h4>



<ul class="stk-list-icon--check01 wp-block-list"><li>届いているかチェック</li><li>必須チェック(空文字チェック)</li><li>上限値チェック(20文字)</li></ul>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$limit = 20;
if (isset($_POST[&#39;myname&#39;])) {
  $myname = $_POST[&#39;myname&#39;];
  if ($myname === &#39;&#39;) {
    ※ 必須エラー
    $error[] = &#39;名前は必須項目です&#39;;
  } else if (mb_strlen($myname) &gt; $limit) {
    ※ 上限値エラー
    $error[] = &quot;名前は{$limit}文字以下で入力してください&quot;;
  } else {
    ※ OK
  }
} else {
  ※ 届いているかエラー
  $error[] = &#39;名前の値が届いていません&#39;;
}</code></pre></div>



<p>if (isset($_POST[&#8216;myname&#8217;]))  → 値が届いているかチェック</p>



<p>if ($myname === &#8221;) → 空文字かチェック</p>



<p>else if (mb_strlen($myname) &gt; $limit) → 文字数上限値(20文字)チェック</p>



<p class="is-style-supplement-border">isset($_調べる変数名)：変数が定義されているか調べられる<br>定義されている場合はtrue、定義されていない場合はfalseを返す<br>値を受け取っていればtrueになる<br>→$_POSTの連想配列に箱があるかないかのチェック<br><br>※実際にフォームから値を送信してそのページに遷移した場合にはエラーは発生しません。しかし、直接そのページ（値を取得するページ）にアクセスした場合には$_POST[&#8216;myname&#8217;]が未定義になるのでエラーが発生します。</p>



<p class="is-style-supplement-border">mb_strlen(引数) ：引数で指定した文字列の文字数を返す<br>[multi byte_strings length]<br>※JSの文字列に対するlengthと同じような感じ</p>



<h4 class="wp-block-heading" id="メールアドレスチェック">メールアドレスチェック</h4>



<ul class="stk-list-icon--check01 wp-block-list"><li>届いているかチェック</li><li>上限値チェック(100文字）</li></ul>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$limit = 100;
if (isset($_POST[&#39;mail&#39;])) {
  $mail = $_POST[&#39;mail&#39;];
  if (mb_strlen($mail) &gt; $limit) {
    $error[] = &quot;メールアドレスは{$limit}文字以下で入力してください&quot;;
  } else {
    ※ OK
  }
} else {
  $error[] = &#39;メールアドレスの値が届いていません&#39;;
}</code></pre></div>



<p>if (isset($_POST[&#8216;mail&#8217;])) → 値が届いているかチェック</p>



<p>if (mb_strlen($mail) &gt; $limit) → 文字数上限値(100文字)チェック</p>



<p>メールアドレスは必須項目ではないので、空文字チェックはなし</p>



<h4 class="wp-block-heading" id="お問い合わせ内容チェック">お問い合わせ内容チェック</h4>



<ul class="stk-list-icon--check01 wp-block-list"><li>届いているかチェック</li><li>必須チェック(空文字チェック)</li><li>上限値チェック(400文字)</li></ul>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$limit = 400;
if (isset($_POST[&#39;body&#39;])) {
  $body = $_POST[&#39;body&#39;];
  if ($body === &#39;&#39;) {
    $error[] = &#39;お問い合わせ内容は必須項目です&#39;;
  } else if (mb_strlen($body) &gt; $limit) {
    $error[] = &quot;お問い合わせ内容は{$limit}文字以下で入力してください&quot;;
  } else {
    ※ OK
  }
} else {
  $error[] = &#39;お問い合わせ内容の値が届いていません&#39;;
}</code></pre></div>



<p>if (isset($_POST[&#8216;body&#8217;])) → 値が届いているかチェック</p>



<p>if ($body === &#8221;) → 空文字かチェック</p>



<p>else if (mb_strlen($body) &gt; $limit)→ 文字数上限値(400文字)チェック</p>



<h4 class="wp-block-heading" id="性別チェック">性別チェック</h4>



<p> ◇未選択は値が届かない<br> ◇「0」「1」「2」が届く<br> OKルート:「届いていない」or「範囲内の数字」</p>



<ul class="stk-list-icon--check01 wp-block-list"><li>届いているかチェック → 届いていなくてもエラーにせずOKでチェックぬける</li><li>数字チェック</li><li>範囲チェック</li></ul>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>if (isset($_POST[&#39;gender&#39;])) {
  $gender = $_POST[&#39;gender&#39;];
  if (ctype_digit($gender)) {
    if ($gender &lt; 0 || $gender &gt; 2) {
      $error[] = &#39;性別の値が不正です&#39;;
    } else {
      ※ OK
    }
  } else {
    $error[] = &#39;性別の値が不正です&#39;;
  }
} else {
  ※ OK:値が届いていない（選択していない）
  ※ 表示するときに変数がないので
  　 表示用変数を別途用意しなければならない
}</code></pre></div>



<p>if (isset($_POST[&#8216;gender&#8217;]) → 値が届いているかチェック<br>値が届いていない場合でもOK</p>



<p>if (ctype_digit($gender)) → 値が数字かチェック</p>



<p>if ($gender &lt; 0 || $gender &gt; 2) → 値の範囲チェック</p>



<p class="is-style-supplement-border">ctype_digit(引数)：引数が数字かどうかを調べる関数<br>→ 与えられた文字列textのすべての文字が 数字であるかどうかを調べる<br><br>trueの場合<br>①引数は文字列型<br>②文字列がすべて数字<br>③小数点をNGとして、整数かをチェック<br><br>例）<br>100 = false<br>&#8216;100&#8217; = true<br>0.5 = false<br>&#8216;0.5&#8217; = false</p>



<p>※ 表示するときに変数がないので、表示用変数を別途のちに用意する必要がある</p>



<h4 class="wp-block-heading" id="年代チェック">年代チェック</h4>



<p>◇未選択は空文字<br>◇「0」「1」「2」「3」「4」「5」が届く<br> OKルート:「空文字」or「範囲内の数字」</p>



<ul class="stk-list-icon--check01 wp-block-list"><li>届いているかチェック</li><li>空文字じゃないかチェック → 空文字でもエラーにせずOKでチェックぬける</li><li>数字チェック</li><li>範囲チェック</li></ul>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>if (isset($_POST[&#39;age&#39;])) {
  $age = $_POST[&#39;age&#39;];
  if ($age !== &#39;&#39;) {
    ※ 範囲内数字のチェック
    if (ctype_digit($age)) {
      if ($age &lt; 0 || $age &gt; 5) {
        $error[] = &#39;年代の値が不正です:2&#39;;
      } else {
        ※ OK:範囲内の数字
      }
    } else {
      $error[] = &#39;年代の値が不正です:1&#39;;
    }
  } else {
    ※ OK:空文字の時（選択しなかった時）
  }
} else {
  $error[] = &#39;年代の値が届いていません&#39;;
}</code></pre></div>



<p>if (isset($_POST[&#8216;age&#8217;])) → 値が届いているかチェック</p>



<p>if ($age !== &#8221;) → 空文字じゃないかチェック<br>この場合、空文字のときにfalseとなる</p>



<p>if (ctype_digit($age)) → 値が数字かチェック</p>



<p>if ($age &lt; 0 || $age &gt; 5) → 値の範囲チェック</p>



<h4 class="wp-block-heading" id="性別-年代の表示用変数を準備">性別・年代の表示用変数を準備</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>if (count($error) === 0) {
  ※ エラーがないときは表示変数を整える
  ※ 選択項目表示用
  $genderList = [
    0 =&gt; &#39;選択してない&#39;,
    1 =&gt; &#39;男性&#39;,
    2 =&gt; &#39;女性&#39;,
  ];
  if (isset($gender)) {
    ※ 性別の値が届いたとき
    $genderStr = $genderList[$gender];
  } else {
    ※ 性別の値が届いていないとき
    ※ $genderが存在しないとき
    $genderStr = &#39;選択していない&#39;;
  }

  if ($age === &#39;&#39;) {
    $ageStr = &#39;選択していない&#39;;
  } else if ($age === &#39;0&#39;) {
    $ageStr = &#39;未回答&#39;;
  } else if ($age === &#39;5&#39;) {
    $ageStr = &quot;{$age}0代以上&quot;;
  } else {
    $ageStr = &quot;{$age}0代&quot;;
  }
}</code></pre></div>



<h4 class="wp-block-heading" id="view画面">view画面</h4>



<p>HTMLにPHPを組み込んで、view画面を作成</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;body&gt;
  &lt;div class=&quot;box&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
      &lt;?php if (count($error) &gt; 0) : ?&gt;
        &lt;h1&gt;エラー&lt;/h1&gt;
        &lt;ul class=&quot;error&quot;&gt;
          &lt;?php foreach ($error as $val) : ?&gt;
            &lt;li&gt;&lt;?php echo $val; ?&gt;&lt;/li&gt;
          &lt;?php endforeach; ?&gt;
        &lt;/ul&gt;
      &lt;?php else : ?&gt;
        &lt;h1&gt;確認&lt;/h1&gt;
        &lt;dl&gt;
          &lt;dt&gt;名前&lt;/dt&gt;
          &lt;dd&gt;&lt;?php echo $myname; ?&gt;&lt;/dd&gt;
          &lt;dt&gt;メールアドレス&lt;/dt&gt;
          &lt;dd&gt;&lt;?php echo $mail; ?&gt;&lt;/dd&gt;
          &lt;dt&gt;性別&lt;/dt&gt;
          &lt;dd&gt;&lt;?php echo $genderStr; ?&gt;&lt;/dd&gt;
          &lt;dt&gt;年代&lt;/dt&gt;
          &lt;dd&gt;&lt;?php echo $ageStr; ?&gt;&lt;/dd&gt;
          &lt;dt&gt;お問い合わせ内容&lt;/dt&gt;
          &lt;dd&gt;&lt;?php echo nl2br($body); ?&gt;&lt;/dd&gt;
        &lt;/dl&gt;
      &lt;?php endif; ?&gt;
      &lt;p&gt;
        &lt;a href=&quot;form.html&quot;&gt;フォームに戻る&lt;/a&gt;
      &lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;</code></pre></div>



<p>&lt;?php if (count($error) &gt; 0) : ?&gt; → エラーがあればエラー文を表示</p>



<p>&lt;?php else : ?&gt; → エラーがない場合は、フォームからPOST形式で取得した値を各々表示</p>



<p>&lt;?php endif; ?&gt; → PHPのif文終了タグ</p>



<p class="is-style-supplement-border">nl2br関数(new line to br)： 改行コード前にbr要素を挿入してくれる<br>ブラウザ画面上で改行をサポートしてくれる <br>→ テキストエリアの内容を表示する時によく使う</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【職業訓練校】Web制作6ヶ月コースの授業内容やリアルな感想など1ヶ月毎のまとめ</title>
		<link>https://creator-kid.com/code/programming-school/</link>
		
		<dc:creator><![CDATA[Ryuji]]></dc:creator>
		<pubDate>Thu, 09 Dec 2021 16:17:22 +0000</pubDate>
				<category><![CDATA[CODE]]></category>
		<category><![CDATA[Web制作]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[職業訓練]]></category>
		<guid isPermaLink="false">https://creator-kid.com/?p=3351</guid>

					<description><![CDATA[2021年10月1日から職業訓練校でWeb制作を学び始めました。 コロナ渦になった頃から、リモートワークで仕事できるようになにか手に職をつけたいと思って独学でプログラミングを始めてたのですが、仕事をしながらだとなかなか長...]]></description>
										<content:encoded><![CDATA[
<p>2021年10月1日から職業訓練校でWeb制作を学び始めました。</p>



<p>コロナ渦になった頃から、リモートワークで仕事できるようになにか手に職をつけたいと思って独学でプログラミングを始めてたのですが、仕事をしながらだとなかなか長続きせずにいました。</p>



<p>そんなとき2021年の春先に腰を痛めてしまい、これから先も肉体労働を続けていくのが不安になりました。</p>



<p>これまで食品工場の製造→飲食店→冷凍倉庫でフォークリフトとずっと肉体を酷使してきたので、身体にガタがきたのだと思います。</p>



<p>「これを機に肉体労働を卒業してプログラミングの勉強に本腰を入れろ！という神様のお告げなんだ。」と自分に言い聞かせ、３４歳という歳からプログラミングの勉強を始めようと決心しました。</p>



<p class="is-style-p_microcopy"><a href="https://creator-kid.com/life/lifehack/vocational-school/" target="_blank" rel="noreferrer noopener">職業訓練校入学までのロードマップ</a>はこちら</p>


<div class="related_article typesimple"><a class="related_article__link no-icon" href="https://creator-kid.com/life/lifehack/vocational-school/"><figure class="eyecatch of-cover thum"><img decoding="async" width="485" height="255" src="https://creator-kid.com/wp-content/uploads/2022/01/職業訓練校入学-485x255.jpg" class="archives-eyecatch-image attachment-oc-post-thum wp-post-image" alt="" srcset="https://creator-kid.com/wp-content/uploads/2022/01/職業訓練校入学-485x255.jpg 485w, https://creator-kid.com/wp-content/uploads/2022/01/職業訓練校入学-300x158.jpg 300w, https://creator-kid.com/wp-content/uploads/2022/01/職業訓練校入学-1024x538.jpg 1024w, https://creator-kid.com/wp-content/uploads/2022/01/職業訓練校入学-768x403.jpg 768w, https://creator-kid.com/wp-content/uploads/2022/01/職業訓練校入学.jpg 1200w" sizes="(max-width: 485px) 45vw, 485px" /></figure><div class="related_article__meta archives_post__meta inbox"><div class="related_article__ttl ttl"><span class="labeltext">関連記事</span>【2021年】実例とともに詳しく解説！職業訓練校入学までのロードマップ。</div><time class="time__date gf undo">2022.01.09</time></div></a></div>


<p>※この記事は職業訓練校卒業するまで随時更新していきます。</p>



<h2 class="wp-block-heading" id="web制作学習1ヶ月目">Web制作学習１ヶ月目</h2>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-site_color type_normal"><div class="box_title"><span class="span__box_title">１ヶ月目</span></div><div class="cboxcomment">
<ul class="wp-block-list">
<li>グループワーク（3日間）</li>



<li>Officeソフト(Word, Excel, PowerPoint)</li>



<li>CMS実習（Wordpress）</li>



<li>HTML</li>



<li>CSS</li>
</ul>
</div></div>



<h3 class="wp-block-heading" id="グループワーク">グループワーク</h3>



<p>初日の入校式が終わると、2〜4日目の3日間でいきなりグループワークがありました。<br>グループワークはその3日間の午後だけで、初日に<strong>NASAゲーム</strong>、２、３日目に<strong>販売戦略プロジェクト</strong>とその発表がありました。</p>



<p>NASAゲームはグループワークで利用可能な<strong>コンセンサスゲーム</strong>です。<br>コンセンサスゲームとは、チームメンバーと<strong>合意形成（コンセンサス）</strong>を行う必要があるゲームです。</p>



<h4 class="wp-block-heading" id="nasaゲーム">NASAゲーム</h4>



<p>まず始めに、個別で考えてから自分の意見を提示します。<br>その後、チームメンバーと話し合いながら全員でチームの１つの結論を導きます。</p>



<p>話し合いをする中で意見が対立することがありますが、その時に<strong>多数決や諦めではなくしっかりと話し合って合意すること</strong>がコンセンサスゲームの目的となっています。</p>



<p>私のチームは結果的には１番優秀な成績でしたが、その結果よりも「<span style="text-decoration: underline;">自分の1人の意見よりコンセンサスをとって導いたチームの結論の方が遥かに優れた回答を出せる</span>」ということを体験し、コンセンサスの重要さを学びました。</p>



<h4 class="wp-block-heading" id="販売戦略プロジェクト">販売戦略プロジェクト</h4>



<p>販売戦略プロジェクトは、実際ありそうなクライアントからの依頼に対して<strong>ターゲットの決定、配色の提案、キャッチフレーズ、コンテンツなど</strong>をチームで話し合い、PowerPointで資料を作成して発表する流れでした。</p>



<p>具体的には、私のチームが担当したのは「食パン耳ラスクプロジェクト」で、サンドイッチ専門店の店主が「サンドイッチを作る過程で廃棄物として出てしまうパンの耳をラスクとしてネット販売をしたい」という依頼。</p>



<p>今回はホームページを作成し、下記の項目をチームで考えて資料にまとめ発表することをしました。</p>



<div class="wp-block-stk-plugin-cbox-notitle cbox is-style-black_box type_simple"><div class="cboxcomment">
<ul class="wp-block-list">
<li>もっと多くの人にパンの耳ラスクを知ってもらいたいが、ターゲットを絞った提案をしてほしい</li>



<li>誰に対しどのような提案をすれば売り上げが向上するか考えてほしい</li>



<li>キャッチフレーズやリード文、コンテンツについて考えてほしい</li>



<li>ページカラー（メイン１色　サブ２色）を提案してほしい</li>



<li>コンテンツ部分の内容を提案してほしい</li>
</ul>
</div></div>



<p>初めましてのチームメンバーと３時間以内で話し合い+資料の準備をしないといけない状況だったので、時間はかなり限られていました。</p>



<p>私のチームは「チームの決定事項に対してデータなどを用いて理由づけができれば良い」という考えだったので、時間内に終わらせられるかって感じで進めていましたが、他のチームは家に持ち帰ったり朝早く来て資料作成しているチームも見られました。</p>



<p>発表では他のチームの提案内容や発表者の声の大きさ・スピードなど５項目くらいを評価して、総合点で優秀なチームを選ぶといった方式をとっていました。まぁ発表者が優秀であれば高得点を取れるという正直狙いがよくわからないプロジェクトでした。</p>



<h3 class="wp-block-heading" id="officeソフト">Officeソフト</h3>



<p>Webサイト制作の発表する時に最低限レベルの資料を作れるように、Office製品のWord、Excel、PowerPointの基本的な操作を4日間学びました。</p>



<p>しかし、それ以来ふれる機会がないので教わったことはほとんど覚えていない気がします。</p>



<h3 class="wp-block-heading" id="cms実習">CMS実習</h3>



<p>WordPressを使って管理画面付きWebサイトの構成や使い方を学びました。</p>



<p>私自身このWordPressブログを2019年にネットの情報を参考に立ち上げて試行錯誤してきたので、ほとんどの新たに教わることはありませんでした。</p>



<p>しかし、そんな中でも自分の中にちゃんと落とし込めたし、使いこなせてなかった機能を新たに使えるようになったのは大きいと思います。</p>



<h3 class="wp-block-heading" id="html">HTML</h3>



<p>HTMLを使ってWebページを作成・修正方法を学びました。</p>



<div class="wp-block-stk-plugin-cbox-notitle cbox is-style-site_color type_normal"><div class="cboxcomment">
<ol class="wp-block-list">
<li>HTMLの基本</li>



<li>文章の定義
<ol class="wp-block-list">
<li>見出しを定義する　h要素：見出し</li>



<li>段落を定義する　p要素：段落</li>



<li>改行を定義する　br要素：改行</li>



<li>強調を定義する　em要素：強調</li>



<li>強い重要性を定義する　strong要素：強い重要性</li>



<li>入力した通りに表示する　pre要素：整形済みテキスト</li>



<li>その他よく使うHTML要素<br>blockquote要素：長い引用文<br>ins要素：あとから内容を追加<br>del要素：あとから内容を削除</li>
</ol>
</li>



<li>リストの定義
<ol class="wp-block-list">
<li>リストを定義する</li>



<li>番号なしリストを定義する<br>ul要素：番号なしリスト枠<br>li要素：リスト項目</li>



<li>番号付きリストを定義する<br>ol要素：番号付きリスト枠<br>li要素：リスト項目</li>



<li>定義リストを定義する<br>dl要素：定義リスト枠<br>dt要素：定義リストタイトル<br>dd要素：定義リスト説明</li>
</ol>
</li>



<li>テーブルの定義
<ol class="wp-block-list">
<li>テーブルを定義する<br>table要素：テーブル枠<br>tr要素：テーブル行<br>th要素：見出しセル<br>td要素：通常セル</li>



<li>テーブルの行や列を連結する　セル連結用属性</li>
</ol>
</li>



<li>グループの定義
<ol class="wp-block-list">
<li>ブロックレベルのグループを定義する<br>header要素：ヘッダー<br>nav要素：ナブ・ナビゲーション<br>footer要素：フッター<br>main要素：メイン（主要コンテンツ：各ページに１つのみ）<br>article要素：アーティクル<br>section要素：セクション（章・部分）<br>aside要素：アサイド（バナー・広告・関連記事）<br>div要素：ディブ（汎用グループ・レイアウト用グループ）</li>



<li>要素に名前をつける属性<br>class属性<br>id属性<br>class名・id名の命令規則<br>構造家タグでよく使われる構成</li>



<li>インラインのグループを定義する<br>span要素：インラインのグループ</li>
</ol>
</li>



<li>リンクの定義
<ol class="wp-block-list">
<li>リンクを定義する<br>a要素：リンクを定義</li>



<li>絶対パスと相対パス<br>絶対パス<br>相対パス<br>絶対パスと相対パスの比較<br>ディレクトリマップ</li>



<li>ページ内リンクを定義する<br>ページトップへ戻るリンク</li>
</ol>
</li>



<li>画像の定義
<ol class="wp-block-list">
<li>画像を定義する<br>img要素：画像表示<br>figure要素；図表用グループ<br>figcaption要素：図表用キャプション</li>



<li>画像をリンク化する</li>
</ol>
</li>



<li>実体参照<br></li>
</ol>
</div></div>



<p>独学でHTMLを勉強していたので復習という形で授業を受けていましたが、ちょっとした疑問なども気軽に授業中に質問できたので自分の中でしっかり整理できました。</p>



<p>例えば、idとclassの使い分けなど動画での学習ではそんな細かく説明はなかったので使い分けを知らずに漠然と使用していましたが、フリーランス講師ならではの生きた情報を交えて教えていただきました。</p>



<p>また、VSCodeのおすすめの設定やプラグイン、VSCodeでの略式のコードの打ち込み方なども教わり、以前よりも効率よくコードを打てるようになったと思います。</p>



<h3 class="wp-block-heading" id="css">CSS</h3>



<p>CSSを使ってWebページの装飾を学びました。</p>



<div class="wp-block-stk-plugin-cbox-notitle cbox is-style-site_color type_normal"><div class="cboxcomment">
<ol class="wp-block-list">
<li>スタイルシートの基本
<ol class="wp-block-list">
<li>CSS適用方式<br>インライン方式<br>埋め込み方式<br>外部リンク方式<br>link要素：外部ファイル読み込み</li>



<li>CSSファイルの新規作成<br>CSSファイルの命名規則</li>
</ol>
</li>



<li>文字・文章のスタイルを定義
<ol class="wp-block-list">
<li>文字・文章のスタイルを定義<br>文字色を定義する：color<br>文字サイズを定義する：font-size<br>文字の太さを定義する：font-weight<br>文字のスタイルを定義する：font-style<br>文章の装飾を定義する：text-decoration<br>行揃えを定義する：text-align<br>書体を定義する：font-family<br>行間を定義する：line-height<br>文字に影をつける：text-shadow</li>



<li>Webフォントの使い方：Google Fonts</li>



<li>検証ツールでCSSエラー個所を探す</li>
</ol>
</li>



<li>背景色・背景画像のスタイルを定義
<ol class="wp-block-list">
<li>背景色・背景画像を定義<br>背景色を定義：background-color<br>背景画像を定義：background-image<br>背景画像の繰り返しを定義：background-repeat<br>背景画像の表示開始位置を定義：background-position<br>背景画像の固定・移動を定義：background-attachment<br>背景画像のサイズを定義：background-size<br>背景のスタイルを一括定義：background<br>１つの要素に対して背景画像を複数指定</li>
</ol>
</li>



<li>ボックススタイルを定義（幅・高さ・余白・線）
<ol class="wp-block-list">
<li>ボックス構造<br>ブロックボックスとインラインボックス</li>



<li>ボックスのスタイルを定義<br>コンテンツ領域の幅を定義：width<br>コンテンツ領域の高さを定義：height<br>パディング領域（内余白）を定義：padding<br>ボーダー領域の線種を定義：border-style<br>ボーダー領域の線幅を定義：border-width<br>ボーダー領域の線の色を定義：border-color<br>ボーダー領域のスタイルを一括定義：上下左右一括指定<br>ボーダー領域のスタイルを一括定義：場所を限定して一括指定<br>角丸を定義する：border-radius<br>マージン領域（外余白）を定義する：margin<br>マージンにautoを指定した時の挙動<br>body要素の外余白を0にする<br>入れ子の内側の上マージンが突き抜ける</li>



<li>ボックスサイズの計算方法：boz-sizing</li>



<li>要素に影をつける：box-shadow</li>
</ol>
</li>



<li>画像のスタイルを定義
<ol class="wp-block-list">
<li>classセレクタ</li>



<li>画像の幅・高さを定義：width, height</li>



<li>画像の最小幅・最小高さを定義：min-height, min-height</li>



<li>画像の最大幅・最大幅を定義：max-width, max-height</li>



<li>はみ出た画像を縮小する</li>



<li>表示位置を定義<br>文章の回り込み：float<br>回り込みの解除：clear</li>



<li>行ない複数画像の縦方向位置調整</li>



<li>画像下の隙間をなくす</li>



<li>img要素の定番定義</li>



<li>画像を角丸表示</li>
</ol>
</li>



<li>リストスタイルを定義
<ol class="wp-block-list">
<li>リストのスタイルを定義<br>リストのデフォルトデザイン<br>リストマーカーの種類を定義する：list-style-type<br>リストマーカーの画像を定義する：list-style-image<br>リストマーカー位置を定義する：list-style-position<br>リストマーカーを一括定義する：list-style<br>リストのインデントを調整する：padding-left<br>リストマーカー画像を背景画像で定義する<br></li>
</ol>
</li>



<li>テーブルのスタイルを定義
<ol class="wp-block-list">
<li>テーブルの枠線を定義：border</li>



<li>テーブルの枠線隙間を定義する：border-collapse</li>



<li>テーブルの文字サイズを定義する：font-size</li>



<li>テーブルの背景色・文字色を定義：background-color, color</li>



<li>セル余白を定義する：padding</li>



<li>セル内の横方向業揃えを定義する：text-align</li>



<li>セル内の縦方向揃え位置を定義する：vertical-align</li>



<li>テーブルの幅を定義：width</li>



<li>テキストの折り返し方法を定義する：white-space</li>



<li>テーブルの表示方法を定義：table-layout</li>



<li>はみ出た内容が非表示時に略文字で知らせる：text-overflow</li>
</ol>
</li>
</ol>
</div></div>



<p>こちらも動画を見て独学で学習したことがありましたが、参考にしていた動画では細かな説明がなかったのでよく理解できていないことが多々ありました。</p>



<p>例えば、独学で学んでいた時はブロック要素とかインライン要素とかよくわからずにいましたが、わからなくても特に問題ないと思っていました。<br>しかし、要素を「中央揃え」にしたいと思ってもその要素がブロック要素なのかインライン要素なのかによって使用するプロパティが違ってきます。</p>



<p>ブロック要素自体を中央揃えは左右にマージン「auto」かつ、対象要素に横幅の指定必須となってきます。（※width指定なしの場合親要素いっぱい横幅でマージン「0」になるため）<br>しかし、要素内コンテンツ（インライン要素）の中央揃えにする場合のプロパティはtext-aligh: centerを使います。</p>



<h3 class="wp-block-heading" id="受講して感じたこと">受講して感じたこと</h3>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-blue_box type_normal"><div class="box_title"><span class="span__box_title">良かった点</span></div><div class="cboxcomment">
<ul class="wp-block-list">
<li>講師が2人体制で2人ともフリーランス</li>



<li>キャリアコンサルタントが時代遅れな考えの人ではない</li>
</ul>
</div></div>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-red_box type_normal"><div class="box_title"><span class="span__box_title">悪かった点</span></div><div class="cboxcomment">
<ul class="wp-block-list">
<li>知っていることを教わると時間の無駄だと感じる</li>
</ul>
</div></div>



<h4 class="wp-block-heading" id="講師2人体制で2人ともフリーランス">◎講師2人体制で2人ともフリーランス</h4>



<p>講師が2人体制でフリーランスである点は非常に良かったと思いました。</p>



<p>職業訓練校に通おうか迷ってた理由の一つが、学校にしか勤めていない講師に教わることでした。<br>ずっと学校で教えているということは、時代遅れなことを教わることになります。</p>



<p>しかし、フリーランスの講師2人はそれぞれ過去に違う仕事をしていた経験がありますし、個々で仕事をしているので生きた情報を教わることができます。</p>



<p>さらに2人体制ということもあり、クラスでわからない人がいてももう一人が補助する体制なので、授業の進行に遅れをとらない点も良かったと思います。</p>



<h4 class="wp-block-heading" id="キャリアコンサルタントが時代遅れな考えの人ではない"><meta charset="utf-8">◎キャリアコンサルタントが時代遅れな考えの人ではない</h4>



<p>職業訓練校側の目的は失業者を育成して、最終的には就職してもらうことです。</p>



<p>東京都の職業訓練後の就職率は４７都道府県中４７位と一番低いみたいです。<br>その理由の一つはフリーターでも東京にはいろんな仕事があるので暮らしていけるとのこと。</p>



<p>職業訓練校側的には就職率を上げたいとこですが、そういうとこに勤めているキャリアコンサルタントは今の時代に合わない考え方を押し付けてくるイメージでした。（勝手な先入観ですが）</p>



<p>しかし、実際にキャリアコンサルティングの面談時にお話しすると、「こーしろ、あーしろ」などは一切言わずに、その人にあったキャリアプランを一緒に考えてくれる人でした。</p>



<p>一昔前は私が思っていた感じの古い体制だったみたいですが、その担当者のおばちゃんが「それではダメだ」との想いから今のような体制に変えたくて変えたそうです。</p>



<p>そんな人がキャリアコンサルティングの長であることはなによりも心強いと思いました。</p>



<h4 class="wp-block-heading" id="知っていることを教わると時間の無駄だと感じる">×知っていることを教わると時間の無駄だと感じる</h4>



<p>私は2019年から独学でWordpressでブログを開設したんですが、この職業訓練校でもWordpressの使い方の授業で習いました。</p>



<p>しかし、すでに自分が知っていることを１週間もかけて習わなくてはいけないのは、すごくストレスに感じました。</p>



<p>確かに自分が知らなかった機能や設定などもあり勉強になることもありましたが、結構時間の無駄だなと感じていました。</p>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【2021年】実例とともに詳しく解説！職業訓練校入学までのロードマップ。</title>
		<link>https://creator-kid.com/life/lifehack/vocational-school/</link>
		
		<dc:creator><![CDATA[Ryuji]]></dc:creator>
		<pubDate>Mon, 18 Oct 2021 16:49:25 +0000</pubDate>
				<category><![CDATA[ライフハック]]></category>
		<category><![CDATA[ハローワーク]]></category>
		<category><![CDATA[失業保険]]></category>
		<category><![CDATA[職業訓練]]></category>
		<guid isPermaLink="false">https://creator-kid.com/?p=3214</guid>

					<description><![CDATA[ちょっとプログラミング勉強したいから職業訓練校に通おうと思うんだけど、誰でも簡単に通えるもんなの？ 簡単ではないけれど、誰でも通えるよ！条件を満たしていれば失業給付金ももらいながら学校に通えるから、実例とともに解説してあ...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-stk-plugin-voicecomment voice comment_gray r icon_blue"><figure class="icon"><img decoding="async" class="voice_icon__img" src="https://creator-kid.com/wp-content/uploads/img_8717-e1634572592671.jpg" width="100" height="100"/><figcaption class="avatar-name name">りゅじ</figcaption></figure><div class="voicecomment">
<p>ちょっとプログラミング勉強したいから職業訓練校に通おうと思うんだけど、誰でも簡単に通えるもんなの？</p>
</div></div>



<div class="wp-block-stk-plugin-voicecomment voice default l icon_black"><figure class="icon"><img decoding="async" class="voice_icon__img" src="https://creator-kid.com/wp-content/uploads/2020/06/creator-kid-logo-3rd.png" width="100" height="100"/><figcaption class="avatar-name name">KiD</figcaption></figure><div class="voicecomment">
<p>簡単ではないけれど、誰でも通えるよ！<br>条件を満たしていれば失業給付金ももらいながら学校に通えるから、実例とともに解説してあげるよ。</p>
</div></div>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-green_box type_normal"><div class="box_title"><span class="span__box_title">この記事の信頼性</span></div><div class="cboxcomment">
<p>2021年5月中旬に自己都合退職し、10月1日から都内の職業訓練校に通い始めたブログ運営者りゅじ(Ryuji)の実体験をできる限りわかりやすく書き留めています。</p>
</div></div>



<h2 class="wp-block-heading">職業訓練とは</h2>



<p>職業訓練（別名<strong>ハロートレーニング</strong>・離職者訓練・求職者支援訓練）と呼ばれていて、仕事を探している人を対象とした<strong>無料の職業訓練制度</strong>のことをいいます。</p>



<p>キャリアアップや希望する就職を実現するために必要な職業スキルや知識を習得することができるよう豊富なコースが用意されています。</p>



<p>また近年は職業訓練の需要が増えていることもあり、各都道府県が専門学校や大学、資格の学校などの民間に委託をして職業訓練を実施する委託訓練も増加しています。</p>



<h2 class="wp-block-heading">職業訓練校の分類</h2>



<p>職業訓練は「失業保険を受給している求職者」を対象としたものと「それ以外の人」に分類されています。</p>



<p>失業保険の受給の有無は在職時に一定期間以上雇用保険に加入していたかどうかによって変わってきます。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h3 class="wp-block-heading">公共職業訓練（離職者訓練）</h3>



<p>主に<strong>雇用保険を受給している求職者</strong>の方を対象に、就職に必要な職業スキルや知識を習得するための訓練を無料で実施しています。</p>



<h3 class="wp-block-heading">求職者支援訓練</h3>



<p>主に<strong>雇用保険を受給できない求職者</strong>の肩を対象に、就職に必要な職業スキルや知識を習得するための職業訓練を無料で実施しています。</p>



<p>また、一定の支給要件を満たす場合は職業訓練の受講を支援するための給付金（職業訓練受講給付金）が受けられます。</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full is-resized"><a href="https://jsite.mhlw.go.jp/tokyo-roudoukyoku/hourei_seido_tetsuzuki/shokugyou_kunren/menu/shienkunren.html" target="_blank" rel="noopener"><img decoding="async" src="https://creator-kid.com/wp-content/uploads/image.png" alt="" class="wp-image-3215" width="349" height="439" srcset="https://creator-kid.com/wp-content/uploads/image.png 522w, https://creator-kid.com/wp-content/uploads/image-238x300.png 238w, https://creator-kid.com/wp-content/uploads/image-485x611.png 485w" sizes="(max-width: 349px) 100vw, 349px" /></a><figcaption>厚生省東京労働局</figcaption></figure>
</div>
</div>
</div>
</div>



<p class="is-style-supplement-warning">両方ともテキスト代は自己負担となります。</p>



<h2 class="wp-block-heading">職業訓練校のお金に関するメリット</h2>



<ol class="wp-block-list"><li>失業手当の受給期間が延長される場合がある</li><li>受講手当や通所手当を受け取ることができる</li><li>失業保険の受給手続きが簡単になる</li><li>職業訓練受講給付金の対象であればお金をもらいながら学べる</li></ol>



<h3 class="wp-block-heading">❶失業手当の受給期間が延長される場合がある</h3>



<p>職業訓練のメリットの１つは<strong><span class="span-stk-maker-yellow">失業手当を受給しながら訓練を受けられる</span></strong>ことです。</p>



<p>そして、失業手当の受給期間が公共職業訓練を受けている間は延長される場合があります！</p>



<p>その場合は、職業訓練期間が終わるまで失業手当の受給期間が延長されるので、結果として合計でもらえる失業手当が増えることになります。</p>



<h4 class="wp-block-heading">受給残日数</h4>



<p>ここで気をつけなければいけないポイントは、<strong><span class="span-stk-maker-yellow">受給残日数</span></strong>です。<br>所定の受給残日数が残っていなければ、失業手当の受給期間は延長されません。</p>



<p class="has-text-align-center is-style-p_balloon_bottom">職業訓練開始日における失業保険の支給残日数目安</p>



<figure class="wp-block-table is-style-stripes"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-center" data-align="center">所定給付日数</th><th class="has-text-align-center" data-align="center">給付制限なし<br>（会社都合退職）</th><th class="has-text-align-center" data-align="center">給付制限あり<br>（自己都合退職）</th></tr></thead><tbody><tr><td class="has-text-align-center" data-align="center">90日間</td><td class="has-text-align-center" data-align="center">１日</td><td class="has-text-align-center" data-align="center">３１日</td></tr><tr><td class="has-text-align-center" data-align="center">120日間</td><td class="has-text-align-center" data-align="center">１日</td><td class="has-text-align-center" data-align="center">４１日</td></tr><tr><td class="has-text-align-center" data-align="center">150日間</td><td class="has-text-align-center" data-align="center">３１日</td><td class="has-text-align-center" data-align="center">５１日</td></tr><tr><td class="has-text-align-center" data-align="center">180日間</td><td class="has-text-align-center" data-align="center">６１日</td><td class="has-text-align-center" data-align="center">６１日</td></tr><tr><td class="has-text-align-center" data-align="center">210日間</td><td class="has-text-align-center" data-align="center">７１日</td><td class="has-text-align-center" data-align="center">７１日</td></tr><tr><td class="has-text-align-center" data-align="center">240日間</td><td class="has-text-align-center" data-align="center">９１日</td><td class="has-text-align-center" data-align="center">９１日</td></tr><tr><td class="has-text-align-center" data-align="center">270日間</td><td class="has-text-align-center" data-align="center">１２１日</td><td class="has-text-align-center" data-align="center">１２１日</td></tr><tr><td class="has-text-align-center" data-align="center">300日間</td><td class="has-text-align-center" data-align="center">１５１日</td><td class="has-text-align-center" data-align="center">１５１日</td></tr><tr><td class="has-text-align-center" data-align="center">330日間</td><td class="has-text-align-center" data-align="center">１８１日</td><td class="has-text-align-center" data-align="center">１８１日</td></tr></tbody></table><figcaption><meta charset="utf-8">職業訓練開始日における失業保険の支給残日数目安</figcaption></figure>



<p>また、失業保険は会社都合退職であればすぐに支給開始されますが、自己都合退職の場合は2ヶ月の給付制限が設けられます。</p>



<p>しかし、職業訓練を開始すれば給付制限がなくなり、すぐに失業手当を受け取れるようになります。</p>



<p><span class="span-stk-maker-yellow">職業訓練を受けるということは<strong>金銭面でも大きなメリット</strong>がある</span>と言えます。</p>



<h3 class="wp-block-heading">❷受講手当や通所手当を受け取ることができる</h3>



<h4 class="wp-block-heading">受講手当</h4>



<p>訓練に出席した日について<strong>日額５００円</strong>を<strong>最大４０日分</strong>、つまり<strong>２万円</strong>支給されます。</p>



<p>テキスト代は自己負担ですが、この受講手当でまかなえるので実質無料で職業訓練校で学ぶことができます。</p>



<h4 class="wp-block-heading">通所手当</h4>



<p>1ヶ月の通勤定期券代が支給されます。（1ヶ月未満の場合は日割り計算となります）<br>通所手当は上限が1ヶ月あたり4万2,500円。</p>



<p class="is-style-supplement-warning">ハローワークで経済的かつ合理的な理由（より早くて、安価な経路がある等）によって判断されるため、申請した経路でない別の経路の金額によって支給されることがあります。</p>



<h3 class="wp-block-heading">❸失業保険の受給手続きが簡単になる</h3>



<p>失業保険を受給するためには、失業認定日にハローワークへ足を運び、職員と面談して転職活動状況などの報告をしなければなりません。</p>



<p>しかし、職業訓練を受講中は毎月の失業認定日に<strong>訓練校側が失業保険の受給手続きを代行してくれます</strong>。</p>



<h3 class="wp-block-heading">❹職業訓練受講給付金の対象であればお金をもらいながら学べる</h3>



<p>名前が似ていて紛らわしいですが、<strong>職業訓練受講給付金</strong>とは「<strong>ハローワークに求職の申し込みをしている</strong>」、かつ「<strong>雇用保険を受給していない</strong>」方が対象となる制度です。</p>



<p>求職者支援訓練を受講することが前提でかつ、以下の条件を満たした方がもらえる給付金です。</p>



<div class="wp-block-stk-plugin-cbox-notitle cbox is-style-site_color type_normal"><div class="cboxcomment">
<ol class="wp-block-list"><li>本人収入が<span class="span-stk-maker-yellow">月8万円以下</span></li><li>世帯全体の収入が<span class="span-stk-maker-yellow">月25万円以下</span></li><li>世帯全体の金融資産が<span class="span-stk-maker-yellow">300万円以下</span></li><li>現在住んでいる所以外に<span class="span-stk-maker-yellow">土地・建物を所有していない</span></li><li>全ての<span class="span-stk-maker-yellow">訓練実施日</span>に出席している（やむを得ない理由がある場合でも、支給単位期間ごとに8割以上の出席率がある）</li><li>世帯の中に給付金を受給して訓練を受けている人がいない</li><li><span class="span-stk-maker-yellow">過去3年以内に</span>、不正行為により、特定の給付金の支給を受けたことがない</li></ol>
</div></div>



<p>見ていただいたらわかると思いますが、職業訓練受講給付金を受給するための条件はかなり厳しいと言えます。</p>



<p>経済的な条件 ＋ 受講態度も評価対象とされています。</p>



<p class="is-style-supplement-succes">新型コロナウイルスの影響を受けてシフトが減少した方や、休業を余儀なくされている方などが、働きながら訓練を受講しやすくするため、特例措置を設けています。詳しくは<a href="https://jsite.mhlw.go.jp/tokyo-roudoukyoku/hourei_seido_tetsuzuki/shokugyou_kunren/newpage_00009.html" target="_blank" rel="noreferrer noopener">こちら</a>。</p>



<h2 class="wp-block-heading">職業訓練校の申し込み手順</h2>



<p>ここからは私の実例も一緒にご紹介していこうと思います。（私の実例は<span class="span-stk-maker-blue">青枠内</span>に記載します。）</p>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-black_box type_simple"><div class="box_title"><span class="span__box_title">職業訓練校申し込み手順</span></div><div class="cboxcomment">
<ol class="wp-block-list"><li>ハローワークで求職申し込み・職業相談</li><li>訓練校とコースを選ぶ</li><li>職業訓練校を見学・説明会に参加する</li><li>入学申し込みをする</li><li>選考試験・面接を受ける</li><li>入学手続きを済ませる</li></ol>
</div></div>



<h3 class="wp-block-heading">❶ハローワークで求職申し込み・職業相談</h3>



<p>離職票と雇用保険被保険者証を持参し、ハローワークに行き求職者申し込みをします。</p>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-blue_box type_normal"><div class="box_title"><span class="span__box_title">実例</span></div><div class="cboxcomment">
<ul class="has-black-color has-text-color wp-block-list"><li><meta charset="utf-8"></li><li>2021年5月中旬に自己都合退職し、会社から離職票が送られてきたのが6月初旬。</li><li>6月9日に東京都のハローワークにいき求職者申し込みをする。</li><li>埼玉へ引っ越しがあっため、待機期間を終えた６月18日に東京都のハローワークに書類を受け取りに行き、6月21日に埼玉県のハローワークに移管届けを提出。</li><li>7月7日に初回認定日のためハローワークに行き認定を受ける。</li><li>認定を受けた後、職業訓練校に興味を持っていたので、いくつか職業訓練校のパンフレットを持ち職業相談を受ける（<span class="span-stk-maker-yellow">１回目</span>）。</li><li>7月5日までが9月入校の申し込み期間だったということを知り、早くても10月入校しか申し込めないことがわかる。</li></ul>
</div></div>



<p class="is-style-supplement-warning">職業訓練校へ申し込むには、職業相談を<strong><span class="span-stk-maker-yellow"><span style="text-decoration: underline;">２回</span></span></strong>しないと申し込むことができません。</p>



<p class="is-style-supplement-succes">タイミングによっては申し込み期間が終わってる場合があるので、できるだけ早く職業相談しに行くことをお勧めします。</p>



<h3 class="wp-block-heading">❷訓練校とコースを選ぶ</h3>



<p>自分が興味ある職業訓練の冊子を持参し、職業相談しコース選びについてアドバイスを受けます。</p>



<p>受講したいコースが決まっている人は、申し込みや選考・面接のアドバイスなどを受けることができます。</p>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-site_color type_normal"><div class="box_title"><span class="span__box_title">チェックポイント</span></div><div class="cboxcomment">
<ul class="wp-block-list"><li>職業訓練校の場所&nbsp;→無理なく通える場所にあるか</li><li>訓練期間の長さ（数ヶ月〜2年間）</li></ul>
</div></div>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-blue_box type_normal"><div class="box_title"><span class="span__box_title">実例</span></div><div class="cboxcomment">
<ul class="has-black-color has-text-color wp-block-list"><li>7月20日に10月入校の冊子がハローワークに届くということで、職業相談しにハローワークへ。（<span class="span-stk-maker-yellow">２回目</span>）</li><li>過去にプログラミング系を受講した生徒が「3ヶ月だと短く感じた」というリアルな声を教えていただいたので、6ヶ月間のコースに絞ることに。</li><li>埼玉のハローワークからでも東京都の職業訓練校に申し込めるということだったので、東京都にある職業訓練校に応募することを決める。</li></ul>
</div></div>



<h3 class="wp-block-heading">❸職業訓練校の施設見学会・説明会に参加する</h3>



<p>受講するコースが決まったら応募する前に職業訓練校の施設見学会に参加しましょう。（要事前予約）</p>



<p>参加不参加は自由ですが、これから数ヶ月〜2年と通う訓練校の雰囲気や授業内容について知ることができます。また、訓練校にやる気をアピールすることにもなります。</p>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-blue_box type_normal"><div class="box_title"><span class="span__box_title">実例</span></div><div class="cboxcomment">
<ul class="has-black-color has-text-color wp-block-list"><li>職業相談をした際に施設見学会の参加を勧められましたが、正直行くの面倒くさいと思っていました。<br>しかし、今思い返せば参加して本当によかったと思います。その理由は下記３つ。<ol><li>職業訓練校の冊子には載っていないコースの詳細を知ることができ、本当に自分が学びたいコースであることを確信できた。</li><li>選考に面接があったので、説明会に参加したことでやる気をアピールできた。</li><li>コロナで実際に使う教室は見学することができなかったが、学校の雰囲気を感じることができた。</li></ol></li><li>7月27日・30日・8月4日と候補日があり一旦は27日で電話予約するも、台風の予報で前日に30日に変更し参加。</li></ul>
</div></div>



<h3 class="wp-block-heading">❹入学申し込みする</h3>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-site_color type_normal"><div class="box_title"><span class="span__box_title">入学申し込みに必要なもの</span></div><div class="cboxcomment">
<ol class="wp-block-list"><li>受講申込書（申し込む職業訓練校が載っている冊子に付属してます）</li><li>写真（3.0cm×2.4cm)（裏面に氏名と脂肪科目番号を記入）</li><li>返信用封筒「長３封筒」（縦23.5cm×横12.0cm) + 94円切手<br>（返信用封筒には自分の住所・氏名・志望科目番号・科名を記入）</li></ol>
</div></div>



<p class="is-style-supplement-normal"><strong>東京都の職業訓練校</strong>へ申し込む場合は、住所地を管轄する<strong>ハローワークに行き職業相談窓口で上記の書類など確認してもらい、受付印をもらいそのまま提出</strong>して申し込みをします。<br><br>しかし、<strong>埼玉県の職業訓練校</strong>へ申し込む場合はハローワークで入学願書（受講申込書）に受付印を押してもらい、<strong>提出期間内に埼玉県職業能力開発センターに自分で直接郵送</strong>します。<br><br>このように県によって多少の差異があるので、ハローワークの職業相談でしっかりと情報を得て把握することが大事になります。</p>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-blue_box type_normal"><div class="box_title"><span class="span__box_title">実例</span></div><div class="cboxcomment">
<ul class="has-black-color has-text-color wp-block-list"><li>東京の職業訓練校に応募するので、8月2日に埼玉県のハローワークへ行き必要な書類を提出。職業相談の担当の人が受講申込書に目を通し、志望理由など確認をしてくれる。</li><li>もし選考に落ちた場合のことを聞いてみると、私の場合は11月入校になると失業手当の延長ができないことを知る。（<strong>11月1日入校時点で失業保険支給残日数が残り13日</strong>となるため。）</li></ul>
</div></div>



<h3 class="wp-block-heading">❺選考試験・面接を受ける</h3>



<div class="wp-block-stk-plugin-cbox-notitle cbox is-style-site_color type_normal"><div class="cboxcomment">
<ul class="wp-block-list"><li>3ヶ月訓練：申込書の記載内容による<strong>書類選考</strong>を実施</li><li>6ヶ月訓練：申込書の記載内容による<strong>書類選考</strong>及び<strong>面接選考</strong>を実施</li></ul>
</div></div>



<p>選考方法はコースや職業訓練校により様々みたいですが、私が見ていた訓練校の冊子では上記のような選考だけでした。</p>



<p>他にも基礎学力テストや適性検査、Web系であればシステムなどの専門的な知識が問われる場合もあるみたいです。</p>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-blue_box type_normal"><div class="box_title"><span class="span__box_title">実例</span></div><div class="cboxcomment">
<ul class="has-black-color has-text-color wp-block-list"><li>面接は電話で予約。<br>8月19日か20日のどちらかで、私の場合は8月20日10:40で受付番号は11番でした。</li><li>入学申し込みの際に送った証明写真は、長髪をゴムで結っているがっつり髭面の姿で撮って提出してしまいました。</li><li>今の自分の状況を整理するとかなり不利だと考え、面接前に美容院へ行き久しぶりに爽やか短髪にして面接に臨みました。</li><li>面接当日は真夏日でめちゃくちゃ暑かったが、ジャケット・ネクタイ無しのビジネスカジュアル。私の面接前後の人たちは2人とも就活生のようながっつりリクルートスーツでジャケットを着用。</li></ul>
</div></div>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-red_box type_normal"><div class="box_title"><span class="span__box_title">実際に面接で聞かれた質問（１０分間）</span></div><div class="cboxcomment">
<ul class="wp-block-list"><li>本人確認</li><li>志望動機</li><li>なぜプログラミングに興味を持ちましたか？ </li><li>転職活動の状況はどうですか？ </li><li>毎日ちゃんと学校に通えますか？ </li><li><p class="p1">コロナでも隣の人と席が近いですが大丈夫ですか？</p></li><li>他の人と意見が対立した時どうしますか？ </li><li>いろんな人と一緒に受講しますが大丈夫ですか？ </li><li>今後の転職する際の職種・業界はなんですか？ </li></ul>
</div></div>



<p>倍率にもよると思いますが、志望動機とちゃんと問題なく学校に通えることを確認しているように感じたので、そこら辺をしっかり受け答えできれば心配ないと思います。</p>



<h3 class="wp-block-heading">❻入学手続きを済ませる</h3>



<p>選考に通過したら、入学手続きをします。<br>この手続きを忘れてしまうと、せっかく合格しても合格が取り消されてしまうので注意する必要があります。</p>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-blue_box type_normal"><div class="box_title"><span class="span__box_title">実例</span></div><div class="cboxcomment">
<ul class="has-black-color has-text-color wp-block-list"><li>9月3日以降に結果が郵送される予定でしたが、ぴったり9月3日に郵送されてきました。これに落ちた場合のプランBを考えてなかったので、開封するまで1時間くらい寝かせたことを今でも覚えています。返信用封筒が分厚かったので受かってるだろー！とは思いましたけど、内心かなりビビってました。</li><li>開封すると、入校許可書が入っていて大喜び！わーい！</li><li>他には入校手続きに必要な書類が入っていて、9月10日必着で郵送しなければなりませんでした。</li><li>本来であれば「合格者説明会」があるのですが、コロナのため郵送での手続きで終了。</li></ul>
</div></div>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-site_color type_normal"><div class="box_title"><span class="span__box_title">入校手続書類</span></div><div class="cboxcomment">
<ul class="wp-block-list"><li>誓約書</li><li>宛名ラベル</li><li>公共職業訓練等受講届け（雇用保険受給資格者のみ）</li><li>公共職業訓練等通所届け（雇用保険受給資格者のみ）</li><li>バス運賃・距離証明書（バスを利用される方のみ）</li></ul>
</div></div>



<h2 class="wp-block-heading">職業訓練校入学決定後の失業認定日</h2>



<p>訓練入校日前日までは失業認定日にハローワークへ来所が必要になってきます。</p>



<p class="is-style-supplement-warning">失業認定日に来所しないと基本手当の支給は受けられないので注意してください。</p>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-blue_box type_normal"><div class="box_title"><span class="span__box_title">実例</span></div><div class="cboxcomment">
<ul class="has-black-color has-text-color wp-block-list"><li>私の場合は9月1日と9月29日が失業認定日で、&nbsp;9月3日に職業訓練校の合格通知を受け取りました。</li><li>9月1日の失業認定日は、就職活動回数は職業訓練校に申し込むための職業相談で特に問題ありませんでした。</li><li>9月29日の失業認定日は、就職活動は何もしてませんでしたが、職業訓練校に合格し入学する予定になっていたので、その旨を失業認定申告書に記入すれば問題なく認定されます。</li></ul>
</div></div>



<h2 class="wp-block-heading">職業訓練校入校日</h2>



<p>入校日前に職業訓練校から入校式に関する案内が郵送されてきます。<br>その中に日時・場所・持ち物などが記載されているので、それに沿って入校式へ参加します。</p>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-blue_box type_normal"><div class="box_title"><span class="span__box_title">入校式</span></div><div class="cboxcomment">
<ul class="has-black-color has-text-color wp-block-list"><li>持参するもの<ul><li>印鑑・朱印</li><li>黒ボールペン</li><li>受講ガイドブック（同封されています）</li><li>テキスト代（釣り銭なく）<br>※テキストを当日購入する場合は、持ち帰るバッグを準備していった方が良いです。</li></ul></li><li>服装：特に記載はありませんでしたが、台風の影響もあってかがっつりスーツの人は極小だったと思います。綺麗目なビジネスカジュアルで全く問題ないですし、カジュアルな普段着の人も多かったのでそちらでも問題ないと思います。</li></ul>
</div></div>



<p>また、入校日前に管轄のハローワークからは職業訓練受講指示書や、入校式後にハローワークへ来所する際の案内などが同封されています。</p>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-blue_box type_normal"><div class="box_title"><span class="span__box_title">入校式後のハローワークでの手続き</span></div><div class="cboxcomment">
<ul class="has-black-color has-text-color wp-block-list"><li>持参するもの<ul><li>雇用保険受給資格者証（コピーは提出後にもらえます）</li><li>失業認定申告書（同封されている例に倣って記入）</li><li>公共職業訓練等受講届け（入校式で配布されます）</li><li>印鑑（訂正などで使用することがある）</li></ul></li><li>手続き自体はいつもの失業認定日より少し長いくらいの時間がかかります。</li><li>手続きできる時間が「14:00-16:00の間にきてください」と指定されているので、<strong>時間を間違えないように注意してください</strong>。私は17時までだと思い込んでいたら16時までだったことに気がつき、焦ってハロワまで行きました。</li><li>台風で当日ハロワークに来れない場合は、郵送でも構わないと前日に連絡をいただきましたが、郵送する場合は特定かレターパックなどで送らなければならない上に返信用封筒も用意しないといけませんでした。直接ハロワークに行った方が簡単です。</li></ul>
</div></div>



<h2 class="wp-block-heading">最後に職業訓練校に申し込むデメリット</h2>



<div class="wp-block-stk-plugin-cbox cbox intitle is-style-red_box type_normal"><div class="box_title"><span class="span__box_title">デメリット</span></div><div class="cboxcomment">
<ul class="wp-block-list"><li>申し込みしてから受講開始までめちゃくちゃ時間がかかる<br>→ すぐに申し込めない・受講できない</li><li>職業訓練校は併願できない → 落ちたらかなり致命的なタイムロスになる</li><li>生活水準を落とさないと、失業手当だけでは生活がかなり苦しい</li></ul>
</div></div>



<p>以上のことを考慮して、職業訓練校に申し込んでいただけたらと思います。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
