<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>tsumari blog</title><link>https://tsumari.pupu.jp/blog/</link><description>Recent content on tsumari blog</description><generator>Hugo -- gohugo.io</generator><language>ja-JP</language><copyright>tsumari</copyright><lastBuildDate>Thu, 04 Jun 2026 08:48:00 +0900</lastBuildDate><atom:link href="https://tsumari.pupu.jp/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>【退職】失業認定日(5)</title><link>https://tsumari.pupu.jp/blog/posts/2026/06/04/</link><pubDate>Thu, 04 Jun 2026 08:48:00 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2026/06/04/</guid><description>&lt;h2 id="所要時間"&gt;所要時間
&lt;/h2&gt;&lt;p&gt;「失業認定申告書」に「次回認定日・時間」が記載してあり、来所時間はあらかじめ指定されている。&lt;/p&gt;
&lt;p&gt;今回は「9:00〜9:30」の枠で、&lt;br&gt;
8:48来所 → 9:13退所。&lt;strong&gt;約25分&lt;/strong&gt;だった。&lt;/p&gt;
&lt;p&gt;今度は過去イチ空いていた。待合の座席はほぼ誰もいなかった。&lt;/p&gt;
&lt;h2 id="-認定"&gt;① 認定
&lt;/h2&gt;&lt;p&gt;以下の2件を申告した。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;前回認定日の職業相談&lt;/li&gt;
&lt;li&gt;dodaオンラインセミナー受講&lt;br&gt;
→求職活動証明書としてメールが届くので、印刷したものを持参&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="-職業相談"&gt;② 職業相談
&lt;/h2&gt;&lt;p&gt;職員「残り21日ですので、次回来るともう終了になっちゃいます。もし就職が決まった場合は、就職日の前日に来て就職申告してください。その日までの保険料精算しますので。」&lt;br&gt;
私「わかりました」&lt;br&gt;
職員「IT系で探してるんだってね。そういう専門の学校出てるんだもんね。」&lt;br&gt;
私「そうですね」&lt;br&gt;
職員「私も在宅勤務したいけど、それなら無理だなあ」&lt;br&gt;
私「あはは」&lt;/p&gt;
&lt;p&gt;ほぼ雑談で終わり。&lt;/p&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;今回は空いていてめちゃくちゃスムーズに終わってよかった。&lt;br&gt;
なのになぜか帰宅後頭痛がひどくてなにもできなかった。むかつく。&lt;br&gt;
とうとう次回で支給が終了になる。さすがにそろそろ転職活動をはじめなければいけないな、と考え焦り始めている。&lt;/p&gt;</description></item><item><title>【退職】失業認定日(4)</title><link>https://tsumari.pupu.jp/blog/posts/2026/05/07/</link><pubDate>Thu, 07 May 2026 09:51:00 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2026/05/07/</guid><description>&lt;h2 id="所要時間"&gt;所要時間
&lt;/h2&gt;&lt;p&gt;「失業認定申告書」に「次回認定日・時間」が記載してあり、来所時間はあらかじめ指定されている。&lt;/p&gt;
&lt;p&gt;今回は「10:00〜10:30」の枠で、&lt;br&gt;
9:51来所 → 11:37退所。&lt;strong&gt;約1時間45分&lt;/strong&gt;だった。&lt;/p&gt;
&lt;p&gt;GW明けのせいか、過去イチ混んでいた。待合の座席はほぼ満席で、座って待つこともできなかった。&lt;/p&gt;
&lt;h2 id="-認定"&gt;① 認定
&lt;/h2&gt;&lt;p&gt;以下の1件を申告した。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;前回認定日の職業相談&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;前回の再求職申込手続から1週間弱しかないためか(?)、今回の求職活動は&lt;strong&gt;1回でOK&lt;/strong&gt;だった。&lt;/p&gt;
&lt;h2 id="-職業相談"&gt;② 職業相談
&lt;/h2&gt;&lt;p&gt;職員「在宅勤務で探しているんですか？」&lt;br&gt;
私「はい」&lt;br&gt;
職員「（パソコンをみて）あぁ、IT系希望なんですね。それならいろいろありますもんね。」&lt;br&gt;
私「そうですね。」&lt;/p&gt;
&lt;p&gt;内容自体はこれまでと変わらず、あっさり終了。&lt;/p&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;とにかく混んでいてめちゃくちゃ疲れた。&lt;/p&gt;</description></item><item><title>【退職】再求職申し込み</title><link>https://tsumari.pupu.jp/blog/posts/2026/04/27/</link><pubDate>Mon, 27 Apr 2026 15:19:35 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2026/04/27/</guid><description>&lt;p&gt;税務署の短期パートが終了したので、ハローワークに再求職申し込みに行った。&lt;/p&gt;
&lt;h2 id="所要時間"&gt;所要時間
&lt;/h2&gt;&lt;p&gt;8:51来所 → 10:24退所。&lt;strong&gt;約１時間半&lt;/strong&gt;だった。&lt;/p&gt;
&lt;h2 id="-再求職申し込み"&gt;① 再求職申し込み
&lt;/h2&gt;&lt;p&gt;「離職状況証明書」はまだ受け取っていない状態だったが、問題なく手続きできた。&lt;br&gt;
（後日提出でOKとのこと）&lt;/p&gt;
&lt;p&gt;認定日の予定も変わらなかった。&lt;/p&gt;
&lt;p&gt;次回認定日まで1週間弱しかないためか(?)、今回の求職活動は&lt;strong&gt;1回でOK&lt;/strong&gt;との案内。&lt;/p&gt;
&lt;p&gt;→ この後の職業相談だけで条件を満たす形になった。&lt;/p&gt;
&lt;h2 id="-職業相談"&gt;② 職業相談
&lt;/h2&gt;&lt;p&gt;次回認定日の説明の後、&lt;/p&gt;
&lt;p&gt;職員「引き続きIT系で探す感じですか？」&lt;br&gt;
私「はい」&lt;br&gt;
職員「そうですか」&lt;/p&gt;
&lt;p&gt;以上。&lt;/p&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;雇用保険の手続き自体はすぐに呼ばれてスムーズに終わったが、&lt;br&gt;
職業相談の待ち時間が長く、待ちくたびれた…。&lt;/p&gt;
&lt;p&gt;そして、実際の職業相談は一瞬で終わるので、&lt;br&gt;
&lt;strong&gt;「このために1時間以上待ったのか…」&lt;/strong&gt; という気持ちになった。&lt;/p&gt;</description></item><item><title>税務署の短期パートで働いてみた</title><link>https://tsumari.pupu.jp/blog/posts/2026/04/25/</link><pubDate>Sat, 25 Apr 2026 15:19:35 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2026/04/25/</guid><description>&lt;p&gt;税務署の短期パートは、確定申告の知識はほぼ不要だった。それでも約3週間やってみて、悪い経験ではなかった。ITしかやったことがない身にとって、違う現場の空気を吸うにはちょうどよかった。&lt;/p&gt;
&lt;h2 id="なぜ税務署で働いたのか"&gt;なぜ税務署で働いたのか
&lt;/h2&gt;&lt;p&gt;母にずっと勧められていた。「めっちゃ簡単らしい。土日休みだし。やってみたら！」ハローワークのインターネットサービスで約3週間の短期募集を見つけ、応募した。&lt;/p&gt;
&lt;p&gt;失業手当のことは事前にハローワークで確認済みだ。いったん就職扱いで支給は止まる。パート終了後に再求職申し込みをすれば再開でき、待機期間はない。短期で切って戻る、なら問題ない。&lt;/p&gt;
&lt;p&gt;応募はハローワークの職員が電話で対応してくれた。その後、履歴書と紹介状を持参し、その日のうちに面接日程の連絡が来た。&lt;/p&gt;
&lt;h2 id="面接で聞かれることと聞かれないこと"&gt;面接で聞かれることと、聞かれないこと
&lt;/h2&gt;&lt;p&gt;面接では簡単なExcel試験があった。お手本どおり5分以内に入力、という内容だが、3分ほどで終わった。タイピングができてよかった。&lt;/p&gt;
&lt;p&gt;志望理由は「SEとしての業務経験があるので、パソコンを使った業務に興味があり応募した」程度しか言えなかった。確定申告関連の経験はあるかと聞かれ、「ない」と答えた。&lt;/p&gt;
&lt;p&gt;普通の人にあるわけないやん！？と思ったので、手応えは微妙だった。でも採用された。&lt;/p&gt;
&lt;p&gt;勤務開始前日にハローワークで就職申告をした。働き始める前日までの分を失業認定してもらう形だ。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;前回認定日の就職相談&lt;/li&gt;
&lt;li&gt;前回来所時の職業相談（パートに応募した日）&lt;/li&gt;
&lt;li&gt;就職マッチングフェアの参加&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;これらをまとめて申告し、失業認定申告書にも税務署就職の旨を記載した。なお、退職時は職場から離職状況証明書が必要になる。再求職申し込みのときに使う（後日提出可）。&lt;/p&gt;
&lt;h2 id="仕事内容は書類整理としか言えない"&gt;仕事内容は「書類整理」としか言えない
&lt;/h2&gt;&lt;p&gt;「書類整理」と聞いていてもイメージできなかった。やってみると、確かにこれは書類整理としか表現できない。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ハンコ押し&lt;/li&gt;
&lt;li&gt;書類並び替え&lt;/li&gt;
&lt;li&gt;A4サイズか確認しホチキスを外す&lt;/li&gt;
&lt;li&gt;索引簿を見て台帳番号を記入&lt;/li&gt;
&lt;li&gt;PCで氏名検索→整理番号記入&lt;/li&gt;
&lt;li&gt;PCで整理番号検索→台帳番号記入&lt;/li&gt;
&lt;li&gt;穴あけ・バインダーに入れる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;作業は書類の上部に書いてある番号の順番どおりに並べるだけで、中身はほとんど見ない。税金や確定申告の知識が無いため勤務前は不安だったが、まったく必要なかった。4月は書類整理が中心。2〜3月なら納税者対応もあるのだろうが、今回の期間では関係なかった。&lt;/p&gt;
&lt;p&gt;e-Taxが普及しているとはいえ、まだこれだけ大量の紙があることに驚いた。デジタル化の話ばかり聞くが、現場には紙の山が残っている。&lt;/p&gt;
&lt;h2 id="良かったこと微妙だったこと"&gt;良かったこと、微妙だったこと
&lt;/h2&gt;&lt;p&gt;良かったのは職員の説明が丁寧でわかりやすかったこと。一人で黙々と作業できる。ほぼ会話なし。残業なし、土日休み。IT現場とは違う、別種の楽さがある。&lt;/p&gt;
&lt;p&gt;微妙だったのは休憩室。狭く、毎年のように来ているベテランパートさん同士が盛り上がっていて、ちょっと気まずかった。&lt;/p&gt;
&lt;p&gt;スキル面の学びはほぼない。税金の知識も要らない以上、履歴書に書けるような成長もなかった。&lt;/p&gt;
&lt;p&gt;もう一つ気になったのはセキュリティだ。個人情報を大量に扱う割に、ゆるい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;書類を広げっぱなし&lt;/li&gt;
&lt;li&gt;私用スマホの持ち込みOK&lt;/li&gt;
&lt;li&gt;物理的な制限も特になし&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;公的機関だから厳しいのかと思っていたが、現場の運用はそうでもなかった。セキュリティまわりもちょっと勉強した自分からすると、ちょっと目を疑うレベル。ただ、それが日常として回っている、というのも一つの発見ではある。&lt;/p&gt;
&lt;h2 id="キャリアアップの場ではない"&gt;キャリアアップの場ではない
&lt;/h2&gt;&lt;p&gt;税務署の短期パートは、キャリアアップの場ではない。確定申告を学ぶ場でもない。番号どおりに書類を整理する仕事だ。&lt;/p&gt;
&lt;p&gt;それでも、普段関わらない業務と現場の雰囲気を体験できたのは貴重だった。母の「簡単らしい」は半分正しかった。簡単だが、学びは薄い。でも、違う環境に身を置くという意味では、求職中の自分にはちょうどよかった。&lt;/p&gt;
&lt;p&gt;次に似た募集を見たら、またやるかどうかはわからない。ただ、「税務署＝税金のプロが働く場所」という想像は、一度壊したほうがいい。紙と番号と、黙々とした手作業の場所だ。&lt;/p&gt;</description></item><item><title>就職マッチングフェアは、求職者向けイベントの顔をした簡易面接だった</title><link>https://tsumari.pupu.jp/blog/posts/2026/03/16/</link><pubDate>Mon, 16 Mar 2026 15:19:35 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2026/03/16/</guid><description>&lt;p&gt;県内のIT企業に興味があり、ついでに求職活動として認めてもらえるなら、と初参加してみたが、想像していた「企業説明を軽く聞くだけの場」とはかなり違った。&lt;/p&gt;
&lt;h2 id="来場だけで求職活動になる"&gt;来場だけで求職活動になる
&lt;/h2&gt;&lt;p&gt;会場は複数企業のブースを自由に回る形式だった。受付を済ませた時点で求職活動証明書を受け取れた。極端な話、企業の説明を一社も聞かなくても「この場に来た」だけで認められる。（！？）&lt;/p&gt;
&lt;h2 id="面接になる準備が足りない"&gt;面接になる。準備が足りない
&lt;/h2&gt;&lt;p&gt;企業説明を聞くだけだと思っていた。訪問カード——簡易的な履歴書——を渡すと、職歴について質問が始まった。ほぼ面接だ。&lt;/p&gt;
&lt;p&gt;1社目は学生向けの説明っぽく、朝会・夕礼、フレックス、未経験言語への段階的アサインなどを聞いた。宗教っぽい企業文化もなさそう（たぶん）。&lt;/p&gt;
&lt;p&gt;2社目は印象が良かった。社員数は少なめで、残業ゼロを強調し、体調不良での急な休みも問題ないとのこと。子育て中の女性社員が在宅勤務している話があり、「こういう働き方がいいな」と素直に思った。小規模な会社のほうが自分には合うのかもしれないと感じた。&lt;/p&gt;
&lt;p&gt;3社目で疲れが出た。帰ろうとしたところで声をかけられ、断りきれずに参加してしまった。私の悪いところ。最初はリモート可能と言われたが、別の担当者からは「エンジニアは出社」と言われ、話が食い違っていた。この時点で候補から外れた。営業感も強く、その後メールや電話が来たので辞退の連絡を入れた。&lt;/p&gt;
&lt;p&gt;企業によって温度差が激しい。ガツガツ来るところもある。合わないと感じたら、無理に話を進めないほうがいい。フェアは断りの技術もいる。&lt;/p&gt;
&lt;h2 id="会社規模より働き方"&gt;会社規模より働き方
&lt;/h2&gt;&lt;p&gt;改めて感じたのは、自分が重視しているのは会社の規模ではなく「働き方」だということだ。在宅勤務で静かに開発できる環境。急な休みが通る文化。&lt;/p&gt;
&lt;p&gt;ただ、フェアでそれが正確にわかるとは限らない。3社目のリモート可否の食い違いがその例だ。話を聞くだけでは足りず、後から確認が必要になる。&lt;/p&gt;
&lt;h2 id="説明会ではなく簡易面接として臨む"&gt;説明会ではなく、簡易面接として臨む
&lt;/h2&gt;&lt;p&gt;就職マッチングフェアは悪いものではない。求職活動の証明が取れる。複数社を短時間で見られる。初めての参加だったが、少し前進した気はする。&lt;/p&gt;
&lt;p&gt;ただ、参加するなら「説明会」ではなく「簡易面接＋営業トークに耐える場」として臨んだほうがいい。訪問カードの内容をちゃんと話せる準備をしておく。合わない会社は早めに切る。体力も要る。&lt;/p&gt;
&lt;p&gt;疲れた。でも、次に行くとしたら少しはマシに動けると思う。&lt;/p&gt;</description></item><item><title>【退職】失業認定日(3)</title><link>https://tsumari.pupu.jp/blog/posts/2026/03/12/</link><pubDate>Thu, 12 Mar 2026 15:19:35 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2026/03/12/</guid><description>&lt;h2 id="所要時間"&gt;所要時間
&lt;/h2&gt;&lt;p&gt;「失業認定申告書」に「次回認定日・時間」が記載してあり、来所時間はあらかじめ指定されている。&lt;/p&gt;
&lt;p&gt;今回は「9:30〜10:00」の枠で、&lt;br&gt;
9:16来所 → 9:58退所。&lt;strong&gt;約30分&lt;/strong&gt;だった。&lt;/p&gt;
&lt;h2 id="-認定"&gt;① 認定
&lt;/h2&gt;&lt;p&gt;以下の2件を申告した。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;前回認定日の職業相談&lt;/li&gt;
&lt;li&gt;dodaオンラインセミナー受講&lt;br&gt;
→求職活動証明書としてメールが届くので、印刷したものを持参&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="-職業相談"&gt;② 職業相談
&lt;/h2&gt;&lt;p&gt;職員「在宅勤務で探しているんですか？」&lt;br&gt;
私「はい」&lt;br&gt;
職員「ハローワークインターネットサービスで探しているんですか？」&lt;br&gt;
私「それも使っていますし、ネットのIT系の求人サイトも使っています」&lt;br&gt;
職員「あ、IT系でしたら在宅勤務ありますもんね。そうですか。」&lt;/p&gt;
&lt;p&gt;前回までと異なり個室に通されたため少し身構えたが、&lt;br&gt;
内容自体はこれまでと変わらず、あっさり終了。&lt;/p&gt;
&lt;p&gt;混雑状況によるものかもしれない。&lt;/p&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;今回はオンラインセミナーの受講のみで申告したが、問題なかった。&lt;/p&gt;
&lt;p&gt;失業認定申告書の書き方も、だいぶ慣れてきた。&lt;/p&gt;</description></item><item><title>【退職】失業認定日(2)</title><link>https://tsumari.pupu.jp/blog/posts/2026/02/12/</link><pubDate>Thu, 12 Feb 2026 15:19:35 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2026/02/12/</guid><description>&lt;h2 id="所要時間"&gt;所要時間
&lt;/h2&gt;&lt;p&gt;「失業認定申告書」に「次回認定日・時間」が記載してあり、来所時間はあらかじめ指定されている。&lt;/p&gt;
&lt;p&gt;今回は「9:00〜09:30」の枠で、&lt;br&gt;
8:45来所 → 9:43退所。&lt;strong&gt;約1時間&lt;/strong&gt;だった。&lt;/p&gt;
&lt;h2 id="-認定"&gt;① 認定
&lt;/h2&gt;&lt;p&gt;今回からは必要な求職活動回数は2回以上となる。&lt;br&gt;
ただし、前回認定日の職業相談が1回としてカウントされるため、実質１回でOKだ。&lt;/p&gt;
&lt;p&gt;以下の3件を申告した。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;前回認定日の職業相談&lt;/li&gt;
&lt;li&gt;dodaオンラインセミナー受講&lt;br&gt;
→求職活動証明書としてメールが届くので、印刷したものを持参&lt;/li&gt;
&lt;li&gt;ファイナンシャル・プランニング技能検定3級受験&lt;br&gt;
→受験時のスコアレポートを持参&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;問題なくそのまま認定された。&lt;/p&gt;
&lt;h2 id="-職業相談"&gt;② 職業相談
&lt;/h2&gt;&lt;p&gt;職員「リモートで探してるんだって？」&lt;br&gt;
私「はい」&lt;br&gt;
職員「どうですか？良さげなところはあった？」&lt;br&gt;
私「まあ〜そうですね、検討しているところです」&lt;br&gt;
職員「そうですか」&lt;/p&gt;
&lt;p&gt;以上。あっさり終わった…。&lt;/p&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;失業認定申告書の書き方に自信がなかったため、鉛筆で記入して持参したが、&lt;br&gt;
内容に問題はなく、その場でボールペンでなぞって提出となった。&lt;/p&gt;
&lt;p&gt;今回は初めての「2回必要」だったこともあり、&lt;br&gt;
オンラインセミナーだけで本当に大丈夫なのか不安で、FP3級受験も含めて3回分申告した。&lt;/p&gt;
&lt;p&gt;結果として特に問題はなかったため、&lt;br&gt;
&lt;strong&gt;今後はオンラインセミナー中心でも十分対応できそう&lt;/strong&gt;という印象だ。&lt;/p&gt;</description></item><item><title>求職活動の実績としてFP3級の受験を受験してみた</title><link>https://tsumari.pupu.jp/blog/posts/2026/01/31/</link><pubDate>Sat, 31 Jan 2026 15:37:00 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2026/01/31/</guid><description>&lt;img src="https://tsumari.pupu.jp/blog/posts/2026/01/31/2026-02-17.webp" alt="Featured image of post 求職活動の実績としてFP3級の受験を受験してみた" /&gt;&lt;p&gt;日本FP協会の「ファイナンシャル・プランニング技能検定3級（以下FP3級）」の試験を受験し、合格した。&lt;/p&gt;
&lt;h2 id="受験した理由"&gt;受験した理由
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;求職活動の実績作り&lt;/li&gt;
&lt;li&gt;お金に対する理解を深めたい&lt;/li&gt;
&lt;li&gt;保険・税金・年金を理解して自分で判断できるようになりたい&lt;/li&gt;
&lt;li&gt;無職期間の不安を減らしたい&lt;/li&gt;
&lt;li&gt;無職期間の時間を有効活用したい&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="得点"&gt;得点
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;学科：54点 / 60点 （36点以上合格）&lt;/li&gt;
&lt;li&gt;実技：80点 / 100点 （60点以上合格）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="教材"&gt;教材
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.youtube.com/playlist?list=PL9sX7I8Jw7bHf6LmMwJ2r1dge98twySD0" target="_blank" rel="noopener"
 &gt;たぬぽんのFP３級勝組道場&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://fp3-siken.com/" target="_blank" rel="noopener"
 &gt;FP3級ドットコム&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;とくにたぬぽんのYouTubeはとてもわかりやすくて理解が進んだ。&lt;br&gt;
あとはIPA試験でもおなじみの過去問道場でひたすら周回した。&lt;/p&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;○×や選択式の問題が中心なので答えやすく、全体的に取り組みやすい試験だった。&lt;/p&gt;
&lt;p&gt;試験会場が遠方だったため早めに向かったところ、空いていたのでそのまま試験を開始できた。&lt;br&gt;
めちゃくちゃスムーズに進み、11:15の予約だったが、ちょうど11:15に試験が終わるという想定外の速さだった❣&lt;/p&gt;
&lt;p&gt;思ったより高得点で合格できたのも嬉しかった。&lt;/p&gt;
&lt;p&gt;退職に向けて調べていた内容や、保険・税金・年金といった「知っておいた方がいいけど学ぶ機会が少ない分野」を体系的に理解できたと思う。&lt;br&gt;
特に、年末調整でなんとなく入力していた生命保険料控除について、「控除の仕組み」をきちんと理解できたのは良かった。&lt;/p&gt;
&lt;p&gt;というか、義務教育で教えてほしかった内容ばかりだ。&lt;br&gt;
実生活に直結する重要な内容にもかかわらず、学ぶ機会が少ないのは少し不思議に感じる。&lt;/p&gt;
&lt;p&gt;せっかくなので２級も受験しようかなと少し勉強してみたものの、&lt;br&gt;
私はIPA試験に集中する方針に切り替えた。&lt;/p&gt;</description></item><item><title>完璧にやろうとして何もできない病</title><link>https://tsumari.pupu.jp/blog/posts/2026/01/20/</link><pubDate>Tue, 20 Jan 2026 15:37:00 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2026/01/20/</guid><description>&lt;img src="https://tsumari.pupu.jp/blog/posts/2026/01/20/2026-01-20.webp" alt="Featured image of post 完璧にやろうとして何もできない病" /&gt;&lt;p&gt;やる気がないわけではない。むしろ逆だ。本当は全部ちゃんとしたい。それなのに、今日も何もできていない。&lt;/p&gt;
&lt;h2 id="やる気はある手が動かない"&gt;やる気はある。手が動かない
&lt;/h2&gt;&lt;p&gt;ちゃんと勉強したい。計画は完璧な形にしたい。ノートはきれいにまとめたい。中途半端にしたくない。&lt;/p&gt;
&lt;p&gt;そうやって準備だけ整えて、気づいたら1日が終わっている。やっていないのに疲れた、という日が続く。&lt;/p&gt;
&lt;h2 id="ハードルが高すぎる"&gt;ハードルが高すぎる
&lt;/h2&gt;&lt;p&gt;勉強するなら、100点取れるようになりたい。始めるなら、継続できないと意味がない。&lt;/p&gt;
&lt;p&gt;こういう条件を自分で付けている。だから「今日はやらない」がいつも選ばれる。やる気がないんじゃなくて、ハードルが高すぎる。&lt;/p&gt;
&lt;h2 id="やらないほうが楽な理由"&gt;やらないほうが楽な理由
&lt;/h2&gt;&lt;p&gt;完璧にやろうとするのには理由がある。&lt;/p&gt;
&lt;p&gt;失敗したくない。努力した結果がしょぼかったら耐えられない。やったのにできなかったとき、傷つく。やらないでいれば、「本当はできる自分」でいられる。&lt;/p&gt;
&lt;p&gt;だからやらずにいる。その代わりに、今日という時間を確実に失っている。わかっている。&lt;/p&gt;
&lt;p&gt;それでも手が動かない。&lt;/p&gt;
&lt;h2 id="60点でいいと思えない"&gt;60点でいい、と思えない
&lt;/h2&gt;&lt;p&gt;頭の中では「60点でいい」「途中で終わってもいい」とわかっている。でも体が従わない。ノートをきれいに整えてから始めようとする。計画を完璧にしてから動こうとする。また何もしないまま終わる。&lt;/p&gt;
&lt;p&gt;完璧じゃなくていい、と言葉にするのは簡単だ。認めるのは難しい。ゼロよりマシな一歩を、自分に許せていない。&lt;/p&gt;
&lt;h2 id="まだ治らない"&gt;まだ治らない
&lt;/h2&gt;&lt;p&gt;この記事を書いている今も、まだ治らない。やりたいことはある。できていない。理由もわかっている。それでも今日はここまでだ。&lt;/p&gt;
&lt;p&gt;ただ、やらない理由が「怠け」じゃなくて「怖さ」に近いことだけは、少しわかった気がする。&lt;/p&gt;</description></item><item><title>【退職】失業認定日(1)</title><link>https://tsumari.pupu.jp/blog/posts/2026/01/15/</link><pubDate>Thu, 15 Jan 2026 15:19:35 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2026/01/15/</guid><description>&lt;h2 id="所要時間"&gt;所要時間
&lt;/h2&gt;&lt;p&gt;「失業認定申告書」に「次回認定日・時間」が記載してあり、来所時間はあらかじめ指定されている。&lt;/p&gt;
&lt;p&gt;今回は「10:30〜11:00」の枠で、&lt;br&gt;
10:26来所 → 11:26退所。&lt;strong&gt;約1時間&lt;/strong&gt;だった。&lt;/p&gt;
&lt;p&gt;手続き自体はスムーズだが、待ち時間込みだとそれなりにかかる。&lt;/p&gt;
&lt;h2 id="-認定"&gt;① 認定
&lt;/h2&gt;&lt;p&gt;必要な求職活動回数は原則2回以上だが、&lt;br&gt;
&lt;strong&gt;初回認定日に限っては1回でOK&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;雇用保険受給者初回説明会の参加が1回とカウントされるため、&lt;br&gt;
今回は何もせず、そのまま認定された。&lt;/p&gt;
&lt;h2 id="-職業相談"&gt;② 職業相談
&lt;/h2&gt;&lt;p&gt;初めてなので何もわからず、求職活動として何がカウントされるのかを確認してきた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;オンラインセミナーの受講でもいいのか。&lt;/li&gt;
&lt;li&gt;FP3級の受験を考えているが、それでもいいのか。&lt;/li&gt;
&lt;li&gt;それは仮に不合格だったとしてもいいのか。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;などを質問。&lt;/p&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;FP3級受験は求職活動として認められるが、その職種を希望していることが前提とのこと。&lt;br&gt;
そのため、希望職種にファイナンシャルプランナーを追加することに…(!?)&lt;/p&gt;
&lt;p&gt;また、FP受験が求職活動に該当するかについては、職員もはっきりわからなかったようで、職員同士で揉めていて確認に時間がかかった。&lt;/p&gt;
&lt;p&gt;初回はかなり緩めだが、2回目以降は求職活動がちゃんと必要になるので注意だ。&lt;/p&gt;</description></item><item><title>【退職】雇用保険受給者初回説明会の参加</title><link>https://tsumari.pupu.jp/blog/posts/2026/01/08/</link><pubDate>Thu, 08 Jan 2026 17:37:00 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2026/01/08/</guid><description>&lt;img src="https://tsumari.pupu.jp/blog/posts/2026/01/08/2026-01-08.webp" alt="Featured image of post 【退職】雇用保険受給者初回説明会の参加" /&gt;&lt;h2 id="場所"&gt;場所
&lt;/h2&gt;&lt;p&gt;ハローワーク内の会議室。&lt;br&gt;
参加者は20人ほどで、着席場所は自由だった。&lt;/p&gt;
&lt;h2 id="持ち物"&gt;持ち物
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;雇用保険の失業等給付受給資格者のしおり&lt;/li&gt;
&lt;li&gt;筆記用具&lt;/li&gt;
&lt;li&gt;マイナンバーカード&lt;/li&gt;
&lt;li&gt;ハローワーク受付表&lt;/li&gt;
&lt;li&gt;ハローワークナビ&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="必要な時間"&gt;必要な時間
&lt;/h2&gt;&lt;p&gt;約2時間&lt;/p&gt;
&lt;h2 id="内容"&gt;内容
&lt;/h2&gt;&lt;h3 id="-雇用保険受給資格者証の受け取り"&gt;① 雇用保険受給資格者証の受け取り
&lt;/h3&gt;&lt;p&gt;ひとりずつ名前を呼ばれて、挙手してその場で&lt;br&gt;
「雇用保険受給資格者証」を受け取った。&lt;/p&gt;
&lt;p&gt;その際にマイナンバーカードの確認もあった。&lt;br&gt;
出席確認も兼ねているのかな。&lt;/p&gt;
&lt;p&gt;私は賃金額確認中のため仮交付だった。&lt;br&gt;
支給番号などが未記入の状態のものを受け取った。&lt;/p&gt;
&lt;h3 id="-雇用保険説明ビデオ口頭"&gt;② 雇用保険説明(ビデオ＋口頭)
&lt;/h3&gt;&lt;p&gt;失業給付を受け取るしくみや、&lt;br&gt;
失業認定申告書の書き方について説明を受けた。&lt;/p&gt;
&lt;p&gt;必要な求職活動回数は原則2回以上だが、&lt;br&gt;
&lt;strong&gt;初回認定日に限っては1回でOK&lt;/strong&gt; であり、&lt;br&gt;
&lt;strong&gt;今回の説明会参加が1回とカウントされる&lt;/strong&gt; とのこと。&lt;/p&gt;
&lt;p&gt;雇用保険受給資格者証に記載されていた初回認定日まで、&lt;br&gt;
「あと1週間しかないの！？」と一瞬焦ったが、&lt;br&gt;
今回は特に追加の活動は不要とわかり、ひと安心した。&lt;/p&gt;
&lt;p&gt;注意点として、以下を脅し気味に説明された。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1日数時間でも働いたら書く&lt;/li&gt;
&lt;li&gt;書かないと不正受給扱いになる可能性がある&lt;/li&gt;
&lt;li&gt;絶対にバレる、バレたら返還＋ペナルティ&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-公共職業訓練やセミナー等の紹介"&gt;③ 公共職業訓練やセミナー等の紹介
&lt;/h3&gt;&lt;p&gt;無料で受講できるのはいいなーと思ったが、&lt;br&gt;
どこも自宅から遠い場所で、近所で受けられるものがほとんどなかった。&lt;/p&gt;
&lt;p&gt;田舎はつらいなぁ…と思いつつ、と聞き流した。&lt;/p&gt;
&lt;h3 id="-国民年金について説明"&gt;④ 国民年金について説明
&lt;/h3&gt;&lt;p&gt;年金事務所の方から、&lt;br&gt;
第2号被保険者から第1号被保険者への切り替え手続きが必要&lt;br&gt;
という説明があった。&lt;br&gt;
私はすでに手続き済みなので、聞き流した。&lt;/p&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;2時間は長くて結構疲れた。&lt;br&gt;
30分前に到着したが、誰もいなくて無駄に不安に過ごした時間があったのも地味にしんどい。（ほぼ全員5分前くらいに来た）&lt;br&gt;
心配性なのでそんなギリギリ行動できない。&lt;/p&gt;</description></item><item><title>【退職】国民年金の手続き</title><link>https://tsumari.pupu.jp/blog/posts/2026/01/07/</link><pubDate>Wed, 07 Jan 2026 16:37:00 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2026/01/07/</guid><description>&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;種類&lt;/th&gt;
 &lt;th&gt;加入者&lt;/th&gt;
 &lt;th&gt;保険料の負担&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;第1号被保険者&lt;/td&gt;
 &lt;td&gt;自営業、農林業者、無職、自由業者、学生&lt;/td&gt;
 &lt;td&gt;各自で納付&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;第2号被保険者&lt;/td&gt;
 &lt;td&gt;厚生年金保険加入者、共済組合員、船員&lt;/td&gt;
 &lt;td&gt;給与から天引き&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;第3号被保険者&lt;/td&gt;
 &lt;td&gt;第2号被保険者に扶養されている配偶者&lt;/td&gt;
 &lt;td&gt;自己負担なし&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;退職に伴い、厚生年金保険の資格も喪失したので、第2号→第1号被保険者へ変更する手続きが必要だ。&lt;/p&gt;
&lt;h2 id="手続きする場所"&gt;手続きする場所
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;国民年金に加入するための手続き&lt;br&gt;
&lt;a class="link" href="https://www.nenkin.go.jp/service/kokunen/kanyu/20140710-04.html" target="_blank" rel="noopener"
 &gt;https://www.nenkin.go.jp/service/kokunen/kanyu/20140710-04.html&lt;/a&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;市役所または年金事務所でできるそうだが、マイナポータルだけで完結できた。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;個人の方の電子申請（国民年金）&lt;br&gt;
&lt;a class="link" href="https://www.nenkin.go.jp/denshibenri_kojin/denshibenri_kojin/shinsei_kojin.html" target="_blank" rel="noopener"
 &gt;https://www.nenkin.go.jp/denshibenri_kojin/denshibenri_kojin/shinsei_kojin.html&lt;/a&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;マイナポータルのトップ画面で 「年金＞国民年金に加入する方・加入中の方の手続き」を選択。&lt;/p&gt;
&lt;h2 id="提出するもの"&gt;提出するもの
&lt;/h2&gt;&lt;p&gt;資格取得（種別変更）届&lt;/p&gt;
&lt;h2 id="必要な時間"&gt;必要な時間
&lt;/h2&gt;&lt;p&gt;マイナポータル経由のねんきんネットで申請してから、約二週間で完了になった。&lt;br&gt;
年末年始を挟んだので時間がかかったのかも。&lt;/p&gt;
&lt;h2 id="国民年金保険料の前納"&gt;国民年金保険料の前納
&lt;/h2&gt;&lt;p&gt;国民年金保険料の納付は口座振替・前納をすると割引が適用されてお得だそうだ。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;国民年金保険料の前納&lt;br&gt;
&lt;a class="link" href="https://www.nenkin.go.jp/service/kokunen/hokenryo/zenno.html" target="_blank" rel="noopener"
 &gt;https://www.nenkin.go.jp/service/kokunen/hokenryo/zenno.html&lt;/a&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;このうち、「2年前納」制度が最も割引が大きく、17,010円も安くなるとのこと。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;国民年金保険料の「2年前納」制度&lt;br&gt;
&lt;a class="link" href="https://www.nenkin.go.jp/service/kokunen/hokenryo/ninenzenno.html" target="_blank" rel="noopener"
 &gt;https://www.nenkin.go.jp/service/kokunen/hokenryo/ninenzenno.html&lt;/a&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;途中で厚生年金に切り替わっても返金される&lt;/strong&gt; とのことなので、&lt;strong&gt;手元に余裕資金があるなら、2年前納が最適解&lt;/strong&gt; のようだ。&lt;/p&gt;
&lt;p&gt;こちらもマイナポータル経由のねんきんネットから手続きできた。&lt;/p&gt;
&lt;h2 id="支払い方法"&gt;支払い方法
&lt;/h2&gt;&lt;p&gt;口座振替を申し込んだため案内待ち。判明次第追記予定。&lt;/p&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;市役所で国民健康保険の手続き中に、「国民年金の手続きはしましたか？」と聞かれ、「マイナポータルから申請しました」と答えた。市役所から年金事務所に確認し、申請が届いていることを確認して終わった。&lt;/p&gt;
&lt;p&gt;おそらく何もしていなければその場で国民年金の手続きも完了できたので、マイナポータルから申請する必要がなかったと思う。&lt;/p&gt;
&lt;p&gt;自宅でマイナポータルから申請できたのは便利だったが、結局健康保険の手続きで市役所に行くことになったので、同時に完了できる市役所での手続きを選べばよかったと後悔している。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;他の手続きで市役所に行く予定がある場合は、まとめて市役所で手続き&lt;/li&gt;
&lt;li&gt;行く予定がない・平日動けない場合はマイナポータル一択&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これが最適解だと思う。&lt;/p&gt;</description></item><item><title>【退職】健康保険の手続き</title><link>https://tsumari.pupu.jp/blog/posts/2025/12/26/</link><pubDate>Fri, 26 Dec 2025 16:37:00 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2025/12/26/</guid><description>&lt;p&gt;退職に伴い、健康保険の資格を喪失したので、他の健康保険に加入しなければならない。選択肢として次の方法があるが、私は国民健康保険に加入した。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;家族が加入している健康保険の扶養になる&lt;/li&gt;
&lt;li&gt;社会保険の任意継続保険者となる&lt;/li&gt;
&lt;li&gt;国民健康保険に加入する&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="1-家族が加入している健康保険の扶養になる"&gt;1. 家族が加入している健康保険の扶養になる
&lt;/h2&gt;&lt;p&gt;失業保険を受給していて、日額が基準を超えると扶養に入れないそうだ。&lt;br&gt;
私は、今回は失業保険を受給するつもりで、計算していないがおそらく超えると思われるので選択しなかった。&lt;/p&gt;
&lt;p&gt;※正確な可否は加入先の健康保険組合によって異なると思う。&lt;/p&gt;
&lt;h2 id="2-社会保険の任意継続保険者となる"&gt;2. 社会保険の任意継続保険者となる
&lt;/h2&gt;&lt;p&gt;最長2年間、社会保険を延長するという「任意継続」制度がある。&lt;br&gt;
任意継続した場合の保険料は、健康保険のサイトに掲載されていた。&lt;/p&gt;
&lt;p&gt;在職中は会社が負担していた分も自己負担になるため、保険料は高くなるケースが多い。&lt;/p&gt;
&lt;h2 id="3-国民健康保険に加入する"&gt;3. 国民健康保険に加入する
&lt;/h2&gt;&lt;p&gt;国民健康保険の保険料は、世帯の前年の所得に応じて算定される。市役所で試算してもらうことができる。&lt;/p&gt;
&lt;p&gt;事前に試算してもらった結果、任意継続するより国民健康保険の方が若干安く、手続きをさっさと終えられる国民健康保険を選んだ。&lt;/p&gt;
&lt;h3 id="手続きする場所"&gt;手続きする場所
&lt;/h3&gt;&lt;p&gt;市役所&lt;/p&gt;
&lt;h3 id="手続きに必要なもの"&gt;手続きに必要なもの
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;本人確認書類（運転免許証、マイナンバーカード）&lt;/li&gt;
&lt;li&gt;健康保険の資格喪失証明書&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="健康保険の資格喪失証明書について"&gt;健康保険の資格喪失証明書について
&lt;/h4&gt;&lt;p&gt;待っていても届かなかったので、離職票のコピーでなんとかなるかと思い市役所に行ってみたが、「資格喪失証明書は必須」と帰されてしまった。&lt;/p&gt;
&lt;p&gt;14日以内に手続きが必要と期限が迫っていたので、人事にメールで問い合わせると、すぐにPDFで資格喪失証明書が送られてきた。&lt;/p&gt;
&lt;p&gt;印刷して無事に手続き完了できた。結果的に14日を過ぎても特に問題なかった。&lt;/p&gt;
&lt;h3 id="必要な時間"&gt;必要な時間
&lt;/h3&gt;&lt;p&gt;約30分程度で終わった。&lt;/p&gt;
&lt;h3 id="支払い方法"&gt;支払い方法
&lt;/h3&gt;&lt;p&gt;不明。追記予定。&lt;/p&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;健康な身体のおかげで、病院に行くことはなく、手続きも特にトラブルなく済んだ。&lt;/p&gt;
&lt;p&gt;健康保険の資格喪失証明書をすんなり入手できなかったのが悔しい。必要な場合は人事に連絡を、とかどこかに書いてあっただろうか。書いてなかったと思うんだけど。見落としかなぁ。&lt;/p&gt;
&lt;p&gt;余談だが、&lt;br&gt;
社会保険は社保（シャホ）&lt;br&gt;
国民健康保険は国保（コクホ）&lt;br&gt;
と略される。&lt;/p&gt;
&lt;p&gt;初めて手続きする私には、用語を覚えるのが難しかった。&lt;/p&gt;</description></item><item><title>【退職】はじめてのハローワーク（求職活動申込）</title><link>https://tsumari.pupu.jp/blog/posts/2025/12/23/</link><pubDate>Tue, 23 Dec 2025 12:37:00 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2025/12/23/</guid><description>&lt;p&gt;離職票を受け取ってからすぐにハローワークに行った。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;（参考）雇用保険の具体的な手続き&lt;br&gt;
&lt;a class="link" href="https://www.hellowork.mhlw.go.jp/insurance/insurance_procedure.html" target="_blank" rel="noopener"
 &gt;https://www.hellowork.mhlw.go.jp/insurance/insurance_procedure.html&lt;/a&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="持ち物"&gt;持ち物
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;離職票&lt;/li&gt;
&lt;li&gt;マイナンバーカード&lt;/li&gt;
&lt;li&gt;&lt;del&gt;証明写真&lt;/del&gt;　マイナンバーカードを提示するなら不要&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="必要な時間"&gt;必要な時間
&lt;/h2&gt;&lt;p&gt;タイミングが悪く混雑している時間帯に行ったせいもあり、待ち時間含めて3時間かかった。&lt;/p&gt;
&lt;h2 id="やったこと"&gt;やったこと
&lt;/h2&gt;&lt;h3 id="受付"&gt;①受付
&lt;/h3&gt;&lt;p&gt;総合案内にて、失業保険の手続きに来た旨を伝える。&lt;br&gt;
離職票をここで提出する。&lt;/p&gt;
&lt;h3 id="求職申込み"&gt;②求職申込み
&lt;/h3&gt;&lt;p&gt;ハローワークインターネットサービス上に「求職者マイページ」を開設する。&lt;br&gt;
結構入力しなければならない内容が多いので、スマホ一つでは大変だった。&lt;br&gt;
事前に登録しておくこともできるもよう。&lt;/p&gt;
&lt;h3 id="登録した求職登録の内容確認"&gt;③登録した求職登録の内容確認
&lt;/h3&gt;&lt;p&gt;求職者マイページに登録した内容を職員の方と一緒に確認する。&lt;br&gt;
任意入力なので入力しなかった項目とか。「希望年収は？」等。&lt;/p&gt;
&lt;h3 id="-手続き"&gt;④ 手続き
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;退職理由の確認&lt;/li&gt;
&lt;li&gt;マイナンバーカード確認&lt;/li&gt;
&lt;li&gt;振込先口座の記入&lt;/li&gt;
&lt;li&gt;受付票の受け取り&lt;/li&gt;
&lt;li&gt;今後のスケジュール説明（雇用保険受給者初回説明会の日程について）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;手続き自体は難しくなかったが、とにかく時間がかかった。&lt;br&gt;
特に求職申込みの入力項目が多く、スマホだけで対応するのはかなり大変だ。&lt;br&gt;
事前に求職者マイページを作っておくのを強くおすすめする。&lt;/p&gt;
&lt;p&gt;マイナンバーカードもあると写真提出を省略できるので便利だ。&lt;/p&gt;</description></item><item><title>約10年続けた会社を辞めた</title><link>https://tsumari.pupu.jp/blog/posts/2025/12/10/</link><pubDate>Wed, 10 Dec 2025 10:15:48 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2025/12/10/</guid><description>&lt;img src="https://tsumari.pupu.jp/blog/posts/2025/12/10/2025-12-10.webp" alt="Featured image of post 約10年続けた会社を辞めた" /&gt;&lt;p&gt;約10年間続けてきた会社を退職した。&lt;/p&gt;
&lt;h2 id="どんな会社で何をしていたか"&gt;どんな会社で、何をしていたか
&lt;/h2&gt;&lt;p&gt;自社通販サイトの開発・運用を担うチームに在籍していた。&lt;/p&gt;
&lt;p&gt;直近はほとんど通販サイトが仕事の中心だった。最初はPHPベースの構成で、機能追加・改修・運用・保守を担当する。手順書の作成も日常的な業務だった。&lt;/p&gt;
&lt;p&gt;設計や方針を決める立場というより、実装を担う側にいた。対人より黙々と作業するほうが向いている、と後から思うようになったのも、この仕事ぶりと関係している。&lt;/p&gt;
&lt;h2 id="恵まれていたそれでも辞めた"&gt;恵まれていた。それでも辞めた
&lt;/h2&gt;&lt;p&gt;仕事には恵まれていた。周囲の人達に助けられ、自分自身も確実に成長できたと思う。多くの人に助けられて10年以上働き続けられた。信頼し、信頼されていた。給料も良かった。完全リモートで働けていた。&lt;/p&gt;
&lt;p&gt;それでも辞めた。年数を重ねるにつれて「自分の得意・不得意」「やりたいこと」が前よりはっきりしてきて、今の仕事とのズレが見えるようになった。&lt;/p&gt;
&lt;h2 id="いちばんの理由は変わらない自分だった"&gt;いちばんの理由は「変わらない自分」だった
&lt;/h2&gt;&lt;p&gt;勉強しない。文句は言う、不満はある。でも結局、なにも変えない。&lt;/p&gt;
&lt;p&gt;周囲がそんな空気で、気づけば私自身もそうなっていて、そんな自分を私自身が一番嫌っていた。&lt;/p&gt;
&lt;p&gt;会社の文化が合わない、出社回帰が嫌、適性にズレがある——どれも本当だ。でもいちばん重かったのは、「このままの私」で居続けることだった。&lt;/p&gt;
&lt;p&gt;「このまま続ける未来」と「新しい挑戦をする未来」を比べたとき、後者のほうが明らかにワクワクしていた。「変わらないこと」より「変えてみること」を選びたかった。&lt;/p&gt;
&lt;h2 id="適性とのズレ"&gt;適性とのズレ
&lt;/h2&gt;&lt;p&gt;求められる役割と、自分の適性に少しズレを感じるようになった。小さな違和感が積もっていた。&lt;/p&gt;
&lt;h2 id="会社の文化が合わなくなった"&gt;会社の文化が合わなくなった
&lt;/h2&gt;&lt;p&gt;もともと、朝礼で企業理念を大声で読み上げたり、当番がスピーチをする文化があり、これで消耗していた。&lt;/p&gt;
&lt;p&gt;さらに、出社回帰の雰囲気が強くなってきた。そのことについての不安ははっきり伝えた。「あなたはこれからもこのまま在宅勤務で問題ない」ということを言われた。だが「私だけOK」という状況は居心地がよいとは言えない。違和感が残った。&lt;/p&gt;
&lt;h2 id="引き留められても最後まで引き継いだ"&gt;引き留められても、最後まで引き継いだ
&lt;/h2&gt;&lt;p&gt;ありがたいことに、「戦力として頼りにしている」「辞められると困る」と言ってもらい、退職時期についてはかなり引き留められた。&lt;/p&gt;
&lt;p&gt;長くお世話になった職場なので、できるだけ迷惑をかけたくなかった。次の職場が決まっているわけでもないので、最後まで責任を持って引き継ぎや対応を行った。正直、逆に迷惑になっていないか不安だったが、その点も問題ないと言ってもらえた。&lt;/p&gt;
&lt;h2 id="これからやりたいこと"&gt;これからやりたいこと
&lt;/h2&gt;&lt;p&gt;走り続けてきた約10年だった。まずは休みながら、自分のペースを取り戻したい。&lt;/p&gt;
&lt;p&gt;今まで仕事で深く関わってこなかった分野を、改めて基礎から学び直したい。2026年のIPA試験がどのようになるか、まだ明らかになっていないが、何かしらのIPA高度試験の合格を目標にしたい。&lt;/p&gt;
&lt;p&gt;これからの道がはっきり見えているわけではないので、不安のほうが大きい日もある。それでも今は、「ここからまた始めていいんだ」と思えるようになった。&lt;/p&gt;
&lt;p&gt;このブログも、そんな小さな挑戦と試行錯誤の記録として書いていく。&lt;/p&gt;</description></item><item><title>Webhook要求を受信するとMicrosoft Teamsチャネルに投稿する</title><link>https://tsumari.pupu.jp/blog/posts/2024/07/09/</link><pubDate>Tue, 09 Jul 2024 20:44:32 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2024/07/09/</guid><description>&lt;h2 id="こんなのが表示されるようになった"&gt;こんなのが表示されるようになった
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;Action Required:&lt;br&gt;
O365 connectors within Teams will be deprecated and notifications from this service will stop.&lt;br&gt;
Learn more&lt;br&gt;
about the timing and how the Workflows app provides a more flexible and secure experience. If you want &amp;gt; to continue receiving these types of messages, you can use a workflow to post messages from a webhook &amp;gt; request.&lt;br&gt;
Set up workflow&lt;br&gt;
&lt;a class="link" href="https://devblogs.microsoft.com/microsoft365dev/retirement-of-office-365-connectors-within-microsoft-teams/" target="_blank" rel="noopener"
 &gt;https://devblogs.microsoft.com/microsoft365dev/retirement-of-office-365-connectors-within-microsoft-teams/&lt;/a&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;2024 年 8 月 15 日より、Microsoft Teams の Office 365 コネクタ機能が廃止されます。&lt;br&gt;
スケーラブルで柔軟性があり、安全な方法で Teams との間で情報を中継するソリューションとして、Power Automate ワークフローをお勧めします。&lt;/p&gt;
&lt;p&gt;とのこと。&lt;/p&gt;
&lt;h2 id="ワークフロー作成"&gt;ワークフロー作成
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Teamsでチャネルを右クリックし、「ワークフロー」を選択&lt;/li&gt;
&lt;li&gt;「Webhook要求を受信するとチャネルに投稿する」を選択&lt;/li&gt;
&lt;li&gt;名前を入力し、「ワークフローを追加する」をクリック&lt;/li&gt;
&lt;li&gt;「ワークフローが作成されました。POST要求を行って実行してください」の下に記載のURLに対してPOST実行するようにする&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;設定したチャネルがプライベートチャネルだからか、投稿時にエラーになった&lt;br&gt;
Workflowsで作成したワークフローを開いて「投稿者」を「フロー ボット」→「ユーザー」に変更したら投稿できるようになった&lt;/li&gt;
&lt;li&gt;Adaptive Cards の使い方はこの辺を参考にする&lt;br&gt;
&lt;a class="link" href="https://adaptivecards.io/samples/" target="_blank" rel="noopener"
 &gt;https://adaptivecards.io/samples/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>【Hugo】バージョンをアップデートする</title><link>https://tsumari.pupu.jp/blog/posts/2024/06/16/</link><pubDate>Sun, 16 Jun 2024 17:03:01 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2024/06/16/</guid><description>&lt;h2 id="現在のバージョン"&gt;現在のバージョン
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-Bash" data-lang="Bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ hugo version
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo v0.125.7+extended darwin/arm64 BuildDate&lt;span style="color:#f92672"&gt;=&lt;/span&gt;2024-05-08T14:46:24Z VendorInfo&lt;span style="color:#f92672"&gt;=&lt;/span&gt;brew
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ which hugo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/opt/homebrew/bin/hugo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ brew --version
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Homebrew 4.3.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="homebrewの更新"&gt;Homebrewの更新
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-Bash" data-lang="Bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ brew update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;==&lt;/span&gt;&amp;gt; Updating Homebrew...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Updated &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; taps &lt;span style="color:#f92672"&gt;(&lt;/span&gt;homebrew/core and homebrew/cask&lt;span style="color:#f92672"&gt;)&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;==&lt;/span&gt;&amp;gt; New Formulae
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;codecov-cli geni kubelogin poutine
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;==&lt;/span&gt;&amp;gt; New Casks
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;font-beiruti font-palemonasmufi-bolditalic font-palemonasmufi-regular itermai
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;font-palemonasmufi-bold font-palemonasmufi-italic impel xnapper
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;==&lt;/span&gt;&amp;gt; Outdated Formulae
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aom c-ares curl freetds git highway hugo libsodium node openldap openssl@3 pcre2 php ruby ruby-build sqlite
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;You have &lt;span style="color:#ae81ff"&gt;16&lt;/span&gt; outdated formulae installed.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;You can upgrade them with brew upgrade
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;or list them with brew outdated.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="hugoの更新"&gt;Hugoの更新
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-Bash" data-lang="Bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ brew upgrade hugo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ hugo version
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo v0.127.0+extended darwin/arm64 BuildDate&lt;span style="color:#f92672"&gt;=&lt;/span&gt;2024-06-05T10:27:59Z VendorInfo&lt;span style="color:#f92672"&gt;=&lt;/span&gt;brew
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="設定ファイルの更新"&gt;設定ファイルの更新
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;netlify.toml&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[build.environment]
 HUGO_VERSION = &amp;#34;0.127.0&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;.github/workflows/main.yml&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; - name: Setup Hugo
 uses: peaceiris/actions-hugo@v2
 with:
 hugo-version: &amp;#34;0.127.0&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>WebPってなに？</title><link>https://tsumari.pupu.jp/blog/posts/2024/06/13/</link><pubDate>Thu, 13 Jun 2024 19:33:32 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2024/06/13/</guid><description>&lt;p&gt;Googleが開発した画像ファイルフォーマットで、WebP（ウェッピー）と読むらしい。&lt;br&gt;
静止画とアニメーションの両方をサポート。&lt;/p&gt;
&lt;h2 id="特徴"&gt;特徴
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;JPEG、PNGに比べて高い圧縮率。&lt;/li&gt;
&lt;li&gt;ロスレス圧縮（画質を一切劣化させない圧縮）と有損圧縮（若干の画質劣化を伴う圧縮）の両方をサポート。&lt;/li&gt;
&lt;li&gt;透過画像をサポート。&lt;/li&gt;
&lt;li&gt;アニメーション画像もサポート。GIFの代替として使用できる。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="作り方"&gt;作り方
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Googleが提供するツールをダウンロード&lt;br&gt;
&lt;a class="link" href="https://developers.google.com/speed/webp/download" target="_blank" rel="noopener"
 &gt;https://developers.google.com/speed/webp/download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;macOS: Homebrewを使って&lt;code&gt;brew install webp&lt;/code&gt;コマンドでインストール&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;変換コマンド実行&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-Bash" data-lang="Bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ cwebp tsumarika.jpg -o tsumarika.webp
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Saving file &lt;span style="color:#e6db74"&gt;&amp;#39;tsumarika.webp&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;File: tsumarika.jpg
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dimension: &lt;span style="color:#ae81ff"&gt;960&lt;/span&gt; x &lt;span style="color:#ae81ff"&gt;960&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Output: &lt;span style="color:#ae81ff"&gt;43002&lt;/span&gt; bytes Y-U-V-All-PSNR 40.17 47.15 45.30 41.41 dB
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;0.37 bpp&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;block count: intra4: &lt;span style="color:#ae81ff"&gt;2088&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;58.00%&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; intra16: &lt;span style="color:#ae81ff"&gt;1512&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;42.00%&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; skipped: &lt;span style="color:#ae81ff"&gt;362&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;10.06%&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bytes used: header: &lt;span style="color:#ae81ff"&gt;172&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;0.4%&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mode-partition: &lt;span style="color:#ae81ff"&gt;8103&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;18.8%&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Residuals bytes |segment 1|segment 2|segment 3|segment 4| total
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; macroblocks: | 2%| 11%| 14%| 74%| &lt;span style="color:#ae81ff"&gt;3600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; quantizer: | &lt;span style="color:#ae81ff"&gt;36&lt;/span&gt; | &lt;span style="color:#ae81ff"&gt;36&lt;/span&gt; | &lt;span style="color:#ae81ff"&gt;31&lt;/span&gt; | &lt;span style="color:#ae81ff"&gt;23&lt;/span&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;filter level: | &lt;span style="color:#ae81ff"&gt;11&lt;/span&gt; | &lt;span style="color:#ae81ff"&gt;15&lt;/span&gt; | &lt;span style="color:#ae81ff"&gt;20&lt;/span&gt; | &lt;span style="color:#ae81ff"&gt;25&lt;/span&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;tsumarika.jpg(184KB) → tsumarika.webp(43KB) になった。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="960" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://tsumari.pupu.jp/blog/posts/2024/06/13/tsumarika.webp" srcset="https://tsumari.pupu.jp/blog/posts/2024/06/13/tsumarika_hu_eecd1e98923e5475.webp 800w, https://tsumari.pupu.jp/blog/posts/2024/06/13/tsumarika.webp 960w" width="960"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>【Git】ファイル名の大文字小文字の変更を検知してくれない</title><link>https://tsumari.pupu.jp/blog/posts/2024/06/12/</link><pubDate>Wed, 12 Jun 2024 18:41:59 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2024/06/12/</guid><description>&lt;p&gt;デフォルトでは、Gitはファイル名の大文字・小文字の変更を検知してくれないらしい。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-Bash" data-lang="Bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 設定変更する&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ git config core.ignorecase false
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# もしくは、追跡をやめてもらってから&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ git rm --cached hoge.php
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 再度ステージ&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ git add Hoge.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【VSCode】フォルダを開いたときにコマンドを自動で実行する</title><link>https://tsumari.pupu.jp/blog/posts/2024/06/09/</link><pubDate>Sun, 09 Jun 2024 16:55:50 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2024/06/09/</guid><description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;ターミナル＞タスクの構成＞テンプレートからtasks.jsonを生成＞Others を選択&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;tasks.json&lt;/code&gt; ファイルを以下に修正&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// See https://go.microsoft.com/fwlink/?LinkId=733558
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// for the documentation about the tasks.json format
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;2.0.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;tasks&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;label&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Laravel Serve&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;shell&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;command&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;php artisan serve&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;runOptions&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;runOn&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;folderOpen&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VSCodeを閉じて、再度開くと実行されるのを確認&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;参考にさせていただきました。&lt;br&gt;
&lt;a class="link" href="https://supilog.supisupi.com/blog/b1e6undi9op2/" target="_blank" rel="noopener"
 &gt;https://supilog.supisupi.com/blog/b1e6undi9op2/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>GitHub Actions でFTP自動デプロイ</title><link>https://tsumari.pupu.jp/blog/posts/2024/05/12/</link><pubDate>Sun, 12 May 2024 16:35:07 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2024/05/12/</guid><description>&lt;p&gt;急にロリポップでレンタルサーバーを借りてみた。&lt;br&gt;
エコノミープランでもPHP使えるんだ。安いな！？とおもって。&lt;/p&gt;
&lt;p&gt;さっそくいろいろ遊んでみることにした。&lt;br&gt;
まずこのHugoブログをデプロイしたい。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;GitHubリポジトリのSettings &amp;gt; Actions secrets and variables に以下のSecretを登録&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FTP_SERVER&lt;/code&gt;: ロリポップのアカウント情報から取得&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FTP_USERNAME&lt;/code&gt;: ロリポップのアカウント情報から取得&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FTP_PASSWORD&lt;/code&gt;: ロリポップのアカウント情報から取得&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FTP_SERVER_DIR&lt;/code&gt;: &lt;code&gt;blog/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Actions を開き &lt;code&gt;set up a workflow yourself&lt;/code&gt; をクリック&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;main.yml を以下にする&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;blog&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;on&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;push&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;branches&lt;/span&gt;: [&lt;span style="color:#ae81ff"&gt;master]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;workflow_dispatch&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;jobs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;ftp-deploy&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;runs-on&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;ubuntu-latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;steps&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;uses&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;actions/checkout@v3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;with&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;submodules&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;true&amp;#34;&lt;/span&gt; &lt;span style="color:#75715e"&gt;#これがないとthemeがcloneできない&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Netlify用の設定を書き換え&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Modify hugo.toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;run&lt;/span&gt;: |&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; sed -i &amp;#34;s|baseURL = &amp;#39;https://tsumari.netlify.app/&amp;#39;|baseURL = &amp;#39;https://tsumari.pupu.jp/blog/&amp;#39;|g; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; s|# relativeURLS = true|relativeURLS = true|; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; s|# canonifyurls = true|canonifyurls = true|&amp;#34; hugo.toml
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; head -n 7 hugo.toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Setup Hugo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;uses&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;peaceiris/actions-hugo@v2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;with&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;hugo-version&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;0.125.7&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;extended&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Build&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;run&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;hugo --minify&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Sync files&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;uses&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;SamKirkland/FTP-Deploy-Action@4.3.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;with&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;server&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;${{ secrets.FTP_SERVER }}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;username&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;${{ secrets.FTP_USERNAME }}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;password&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;${{ secrets.FTP_PASSWORD }}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;server-dir&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;${{ secrets.FTP_SERVER_DIR }}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;local-dir&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;./public/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>『動かして学ぶ！Flutter開発入門』</title><link>https://tsumari.pupu.jp/blog/posts/2024/01/27/</link><pubDate>Sat, 27 Jan 2024 10:47:32 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2024/01/27/</guid><description>&lt;p&gt;&lt;a class="link" href="https://amzn.to/4ogEgQa" target="_blank" rel="noopener"
 &gt;『動かして学ぶ！Flutter開発入門』&lt;/a&gt;（掛内 一章 / 翔泳社）&lt;/p&gt;
&lt;p&gt;※この記事には Amazon アソシエイトリンクが含まれます。&lt;/p&gt;
&lt;h2 id="モチベーション"&gt;モチベーション
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;iOS、Androidアプリの作り方をあまりイメージできない
&lt;ul&gt;
&lt;li&gt;学生の時にJavaでAndroidアプリ作ったことしかない…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;他の言語に触れる機会をつくりたい&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="メモ"&gt;メモ
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Flutterのプログラミング言語はDart&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Java/Python/JavaScriptの特徴を備える&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class="link" href="https://docs.flutter.dev/get-started/install/macos/mobile-ios?tab=vscode" target="_blank" rel="noopener"
 &gt;https://docs.flutter.dev/get-started/install/macos/mobile-ios?tab=vscode&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VSCode Flutter extensions install
&lt;ul&gt;
&lt;li&gt;Download the Flutter SDK&lt;/li&gt;
&lt;li&gt;Add Flutter to your PATH&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.zshenv&lt;/code&gt; file.:&lt;code&gt;export PATH=$HOME/development/flutter/bin:$PATH&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Configure Xcode
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sudo sh -c 'xcode-select -s /Applications/Xcode.app/Contents/Developer &amp;amp;&amp;amp; xcodebuild -runFirstLaunch'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xcodebuild -downloadPlatform iOS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo xcodebuild -license&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Install CocoaPods
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;brew install cocoapods&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Android Studio install
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://developer.android.com/studio?hl=ja" target="_blank" rel="noopener"
 &gt;https://developer.android.com/studio?hl=ja&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;HelloWorld&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>データベーススペシャリストは、午後Ⅱの4点で落ちた</title><link>https://tsumari.pupu.jp/blog/posts/2023/12/21/</link><pubDate>Thu, 21 Dec 2023 18:28:14 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/12/21/</guid><description>&lt;p&gt;データベーススペシャリスト試験、不合格だった。ただ、落ち方が悔しい。&lt;/p&gt;
&lt;p&gt;午前Ⅰ得点：免除&lt;br&gt;
午前Ⅱ得点：76点&lt;br&gt;
午後Ⅰ得点：73点&lt;br&gt;
午後Ⅱ得点：56点&lt;/p&gt;
&lt;p&gt;午後Ⅱが56点。合格ラインまであと4点だ。&lt;/p&gt;
&lt;h2 id="確実に落ちたと思っていた"&gt;「確実に落ちた」と思っていた
&lt;/h2&gt;&lt;p&gt;感覚としては、午後Ⅱはボロボロだった。「確実に落ちたな」と思えるくらい書けなかった。なのに56点。あと4点。&lt;/p&gt;
&lt;p&gt;難関資格だし、「どうせ初回は合格できない」と思っていた。だから本気で勉強していなかった面がある。結果を見ると、もっとちゃんとやっていればいけたのでは、という気持ちになる。&lt;/p&gt;
&lt;p&gt;不合格は不合格だ。でも、完全に実力不足で落ちたというより、&lt;strong&gt;諦めた分が4点として返ってきた&lt;/strong&gt;ように感じる。&lt;/p&gt;
&lt;h2 id="次は情報処理安全確保支援士"&gt;次は情報処理安全確保支援士
&lt;/h2&gt;&lt;p&gt;来年もまたデータベーススペシャリストに挑戦するつもりだ。まずはその前に、4月は情報処理安全確保支援士を受けてみようと思っている。&lt;/p&gt;
&lt;p&gt;同じことを繰り返したくない。今回わかったのは「どうせ無理」という気持ちが、4点分くらいは確実に削る、ということだ。&lt;/p&gt;</description></item><item><title>『モダンJavaScriptの基本から始める React実践の教科書』</title><link>https://tsumari.pupu.jp/blog/posts/2023/11/06/</link><pubDate>Mon, 06 Nov 2023 18:52:25 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/11/06/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;モダンJavaScriptの基本から始める React実践の教科書&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="モチベーション"&gt;モチベーション
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;jQuery全盛期でフロントエンドの知識が止まっている&lt;/li&gt;
&lt;li&gt;もともとJavaScriptはWebブラウザ上で複雑な動きを実装する程度のものだったが、今はフロントエンドだけではなく、バックエンドも実装できる（Node.jsなど）&lt;/li&gt;
&lt;li&gt;スマホアプリ、デスクトップアプリケーション等もJavaScriptで実装できてしまう
&lt;ul&gt;
&lt;li&gt;どうやって？そのイメージができてない…。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="メモ"&gt;メモ
&lt;/h2&gt;&lt;h3 id="chapter1-モダンjavascript-の基礎"&gt;Chapter1 モダンJavaScript の基礎
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;従来のコードは、手続き的でわかりやすい反面、レンダリングコストの問題が発生しやすかったり、コードが肥大化してくるとどこで何をしているかわからないつらさ→これを解決するのが仮想DOM&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;プレーンなJavaScript例&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;document.&lt;span style="color:#a6e22e"&gt;getElemenyById&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;nushida&amp;#34;&lt;/span&gt;).&lt;span style="color:#a6e22e"&gt;aapendChild&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;textElement&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;jQueryの例&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;$&lt;/span&gt;(&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;#&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;nushida&lt;/span&gt;).&lt;span style="color:#a6e22e"&gt;append&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;textElement&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;パッケージマネージャー&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;npm
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;npm install [パッケージ名]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npm install&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;yarn
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;yarn add [パッケージ名]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;yarn install&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;node_modules&lt;/code&gt; フォルダが生成される&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ECMAScript&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JavaScriptの標準仕様&lt;/li&gt;
&lt;li&gt;1年に1回更新される「ES2015」「ES2016」
&lt;ul&gt;
&lt;li&gt;ES2015(ES6) が転換期
&lt;ul&gt;
&lt;li&gt;let, constを用いた変数宣言&lt;/li&gt;
&lt;li&gt;アローファンクション&lt;/li&gt;
&lt;li&gt;Class構文&lt;/li&gt;
&lt;li&gt;分割代入&lt;/li&gt;
&lt;li&gt;テンプレート文字列&lt;/li&gt;
&lt;li&gt;スプレッド構文&lt;/li&gt;
&lt;li&gt;Promise&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;モジュールハンドラー（webpack）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;jsやcssをひとつのファイルにまとめてくれる&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;トランスパイラ（Babel）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JavaScriptの記法をブラウザで実行できる形に変換してくれるもの&lt;/li&gt;
&lt;li&gt;新しい記法で書かれたJavaScriptを古い記法に変換してくれる&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vite&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="chapter2-モダンjavascript-の機能に触れる"&gt;Chapter2 モダンJavaScript の機能に触れる
&lt;/h3&gt;&lt;h4 id="let-constを用いた変数宣言"&gt;let, constを用いた変数宣言
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;var
&lt;ul&gt;
&lt;li&gt;上書き可能&lt;/li&gt;
&lt;li&gt;再宣言可能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;let
&lt;ul&gt;
&lt;li&gt;上書き可能&lt;/li&gt;
&lt;li&gt;再宣言不可能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;const ※ほとんどの場合で使用
&lt;ul&gt;
&lt;li&gt;上書き不可能
&lt;ul&gt;
&lt;li&gt;オブジェクト型の場合、中の値を変更可能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;再宣言不可能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="テンプレート文字列"&gt;テンプレート文字列
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;従来
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;私の名前は&amp;quot; + name + &amp;quot;です。&amp;quot;&lt;/code&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ES2015以降
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;`私の名前は${name}です。`&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="アロー関数"&gt;アロー関数
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;従来&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;func1&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;value&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;value&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;アロー関数 （「&lt;code&gt;=&amp;gt;&lt;/code&gt; があれば関数」と考える）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;func2&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;value&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;value&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;//引数が1つの場合、カッコを省略可能
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;func3&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;value&lt;/span&gt; =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;value&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;//処理が単一行の場合は波括弧とreutnrを省略可能
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;func4&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;num1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;num2&lt;/span&gt;) =&amp;gt; &lt;span style="color:#a6e22e"&gt;num1&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;num2&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;//カッコで囲んでまとめて省略して返却
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;func5&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;val1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;val2&lt;/span&gt;) =&amp;gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;val1&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;age&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;val2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="分割代入"&gt;分割代入
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;myProfile&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;つまり&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;age&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;24&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// myProfile.~ が冗長
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;message&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;`私の名前は&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;myProfile&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;です。年齢は&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;myProfile&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;age&lt;/span&gt;&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;歳です。`&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;//分割代入を使用。一致するプロパティ名を取り出せる
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; { &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;age&lt;/span&gt; } &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;myProfile&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;message&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;`私の名前は&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;です。年齢は&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;age&lt;/span&gt;&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;歳です。`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;//抽出したプロパティ名に別名をつける
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; { &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;newName&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;age&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;newAge&lt;/span&gt; } &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;myProfile&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;message&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;`私の名前は&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;newName&lt;/span&gt;&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;です。年齢は&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;newAge&lt;/span&gt;&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;歳です。`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;//デフォルト値指定可能
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; { &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;ゲスト&amp;#34;&lt;/span&gt; } &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;myProfile&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;message&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;`私の名前は&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;です。`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;//配列も可。格納順通りに。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;myProfile&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#e6db74"&gt;&amp;#34;つまり&amp;#34;&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;24&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; [ &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;age&lt;/span&gt; ] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;myProfile&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;message&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;`私の名前は&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;です。年齢は&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;age&lt;/span&gt;&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;歳です。`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="スプレッド構文"&gt;スプレッド構文
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;要素の展開&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr1&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;summaryFunc&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;num1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;num2&lt;/span&gt;) =&amp;gt; &lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;num1&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;num2&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;//普通に配列の値を渡す場合
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;summaryFunc&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr1&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;arr1&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;//スプレッド構文 内部の要素を順番に展開してくれる
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;summaryFunc&lt;/span&gt;(...&lt;span style="color:#a6e22e"&gt;arr1&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要素をまとめる&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr1&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; [&lt;span style="color:#a6e22e"&gt;num1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;num2&lt;/span&gt;, ...&lt;span style="color:#a6e22e"&gt;arr2&lt;/span&gt;] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;num1&lt;/span&gt;); &lt;span style="color:#75715e"&gt;//1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;num2&lt;/span&gt;); &lt;span style="color:#75715e"&gt;//2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr2&lt;/span&gt;); &lt;span style="color:#75715e"&gt;//[3,4,5]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要素のコピー、結合&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr4&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;20&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr5&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;40&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr6&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [...&lt;span style="color:#a6e22e"&gt;arr4&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr4&lt;/span&gt;); &lt;span style="color:#75715e"&gt;//[10,20]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr6&lt;/span&gt;); &lt;span style="color:#75715e"&gt;//[10,20]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;//イコールでコピーすると
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr8&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr4&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr4&lt;/span&gt;) &lt;span style="color:#75715e"&gt;//[10,20]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr8&lt;/span&gt;) &lt;span style="color:#75715e"&gt;//[10,20]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;arr4&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr4&lt;/span&gt;) &lt;span style="color:#75715e"&gt;//[100,20]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr8&lt;/span&gt;) &lt;span style="color:#75715e"&gt;//[100,20] ←こいつにも影響が出る
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="map関数"&gt;map関数
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nameArr&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#e6db74"&gt;&amp;#34;佐藤&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;高橋&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;つまり&amp;#34;&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;nameArr&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;map&lt;/span&gt;((&lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;) =&amp;gt; &lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="filter関数"&gt;filter関数
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;numArr&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;newNumArr&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;numArr&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;filter&lt;/span&gt;((&lt;span style="color:#a6e22e"&gt;num&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;num&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;===&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;newNumArr&lt;/span&gt;); &lt;span style="color:#75715e"&gt;//[1,3,5]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="-と--について"&gt;&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; と &lt;code&gt;||&lt;/code&gt; について
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;||&lt;/code&gt; はその左側がfalseなら右側を返す&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;num&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;null&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;fee&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;num&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;金額未設定です&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;fee&lt;/span&gt;); &lt;span style="color:#75715e"&gt;//金額未設定です
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; はその左側がtrueなら右側を返す&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;num&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;fee&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;num&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;何か設定されました&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;fee&lt;/span&gt;); &lt;span style="color:#75715e"&gt;//何か設定されました
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="chapter3-javascript-でのdom-操作"&gt;Chapter3 JavaScript でのDOM 操作
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;プレーンなJavaScriptやjQueryでは「この要素を」「高操作する」というように&lt;strong&gt;手続き的&lt;/strong&gt;にDOM操作を行う
&lt;ul&gt;
&lt;li&gt;Reactは「宣言的」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;HTMLのidやclass、DOMの階層構造とJavaScriptが密接で複雑になりやすく保守が難しかった&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="chapter4-react-の基本"&gt;Chapter4 React の基本
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;コンポーネント
&lt;ul&gt;
&lt;li&gt;他のファイルでも使えるように &lt;code&gt;export&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;他のファイルから使う &lt;code&gt;import&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;拡張子は &lt;code&gt;.jsx&lt;/code&gt; で作成する&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;イベント名、CSSプロパティ名すべてキャメルケースになる
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;onClickButton&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;props
&lt;ul&gt;
&lt;li&gt;コンポーネントに渡す引数のようなもの&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;state
&lt;ul&gt;
&lt;li&gt;コンポーネントが持つ状態&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;再レンダリング
&lt;ul&gt;
&lt;li&gt;変更を検知してコンポーネントを再処理する&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;React Hooks
&lt;ul&gt;
&lt;li&gt;useState&lt;/li&gt;
&lt;li&gt;useEffect&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="chapter5-react-とcss"&gt;Chapter5 React とCSS
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;CSS Modules&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;import&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;classes&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;from&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;./CssModules.module.scss&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Styled JSX&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;style&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;jsx&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;{&lt;span style="color:#e6db74"&gt;`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;/* ここにCSSを書く */
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;}&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;/style&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;styled components&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Emotion&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/** @jsxImportSource @emotion/react */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tailwind CSS&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;コンポーネントライブラリ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Headless UI&lt;/li&gt;
&lt;li&gt;Chakra UI&lt;/li&gt;
&lt;li&gt;Material-UI&lt;/li&gt;
&lt;li&gt;Semantic UI React&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="chapter6-再レンダリングの仕組みと最適化"&gt;Chapter6 再レンダリングの仕組みと最適化
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;再レンダリングが起きる条件&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stateが更新された&lt;/li&gt;
&lt;li&gt;propsが変更された&lt;/li&gt;
&lt;li&gt;再レンダリングされたコンポーネント配下のコンポーネントすべて&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;コンポーネントのメモ化（memo）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Component&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memo&lt;/span&gt;(() =&amp;gt; {});
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;関数のメモ化（useCallback）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;onClickButton&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;useCallback&lt;/span&gt;(() =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;alert&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;ボタンが押されました&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}, []);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;変数のメモ化（useMemo）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;useMemo&lt;/span&gt;(() =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;},[]);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="chapter7-グローバルなstate-管理"&gt;Chapter7 グローバルなState 管理
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;バケツリレー
&lt;ul&gt;
&lt;li&gt;下層のコンポ ーネントで使うために本来不要なpropsを受け渡していくこと&lt;/li&gt;
&lt;li&gt;コードが複雑化&lt;/li&gt;
&lt;li&gt;再利用しづらいコンポーネントになる&lt;/li&gt;
&lt;li&gt;不要な再レンダリングが増える&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Reactが提供しているContext を使うことでグローバルな値を管理
&lt;ul&gt;
&lt;li&gt;React.createContext で Context の器を作成&lt;/li&gt;
&lt;li&gt;Provider で囲む&lt;/li&gt;
&lt;li&gt;コンポーネントで React.useContext を使う&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;グローバルState管理ライブラリ
&lt;ul&gt;
&lt;li&gt;Redux&lt;/li&gt;
&lt;li&gt;Recoil&lt;/li&gt;
&lt;li&gt;Apollo Client&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="chapter8-react-とtypescript"&gt;Chapter8 React とTypeScript
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;TypeScript&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JavaScript で Type(型)を扱えるようにしているもの&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-JavaScript" data-lang="JavaScript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// : string で指定
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;str&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;string&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;A&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;str&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;; &lt;span style="color:#75715e"&gt;//OK
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;str&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;; &lt;span style="color:#75715e"&gt;//NG
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;npx create-react-app [プロジェクト名] --template typescript&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;tsconfig.json&lt;/code&gt; にプロジェクトに合わせた設定をおこなうことでルールをカスタマイズ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;型を定義することでエラーを防ぐ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;コンポーネントにも型を付与する&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="chapter9-カスタムフック"&gt;Chapter9 カスタムフック
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;任意の処理をまとめて自作のHooks(use〜)を作成する実装
&lt;ul&gt;
&lt;li&gt;ロジックをコンポーネントから分離&lt;/li&gt;
&lt;li&gt;複数コンポーネントでのロジックの再利用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;React標準Hooks
&lt;ul&gt;
&lt;li&gt;useState&lt;/li&gt;
&lt;li&gt;useEffect&lt;/li&gt;
&lt;li&gt;useCallback&lt;/li&gt;
&lt;li&gt;useMemo&lt;/li&gt;
&lt;li&gt;useContext&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>【Docker】WindowsでビルドしたDockerイメージがAWSで使えなかった</title><link>https://tsumari.pupu.jp/blog/posts/2023/10/31/</link><pubDate>Tue, 31 Oct 2023 16:36:38 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/10/31/</guid><description>&lt;h2 id="発生したこと"&gt;発生したこと
&lt;/h2&gt;&lt;p&gt;Docker や ECS の勉強中。&lt;/p&gt;
&lt;p&gt;Windows でビルドした Docker イメージを、ECR にプッシュして、&lt;br&gt;
それをベースイメージにして CodeBuild でビルドしようとしたら&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[Warning] The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="原因"&gt;原因
&lt;/h2&gt;&lt;p&gt;ビルドした環境とCPUアーキテクチャが違うから発生しているらしい。&lt;br&gt;
適当に選ばないでちゃんと適切なものを選択しないとだめだな…。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;x86_64&lt;br&gt;
インテル社が発表したx86アーキテクチャを64ビットに拡張したもの。&lt;/li&gt;
&lt;li&gt;aarch64&lt;br&gt;
スマートフォンやタブレットなどで多く使われるARMアーキテクチャを64ビットに拡張したもの。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="解決方法"&gt;解決方法
&lt;/h2&gt;&lt;p&gt;CodeBuild の環境イメージを&lt;br&gt;
&lt;code&gt;aws/codebuild/amazonlinux2-aarch64-standard:2.0&lt;/code&gt;&lt;br&gt;
↓&lt;br&gt;
&lt;code&gt;aws/codebuild/amazonlinux2-x86_64-standard:4.0&lt;/code&gt;&lt;br&gt;
に変更したら、ビルド成功した。&lt;/p&gt;
&lt;h2 id="参考"&gt;参考
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-env-ref-available.html" target="_blank" rel="noopener"
 &gt;CodeBuild に用意されている Docker イメージ&lt;/a&gt;&lt;/p&gt;</description></item><item><title>『システム運用アンチパターン』</title><link>https://tsumari.pupu.jp/blog/posts/2023/10/24/</link><pubDate>Tue, 24 Oct 2023 18:02:04 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/10/24/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;システム運用アンチパターン&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="モチベーション"&gt;モチベーション
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;「権限を持たない開発者」が私なので、何か出来そうなことがあれば参考にしたい&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="メモ"&gt;メモ
&lt;/h2&gt;&lt;h3 id="1章-devopsを構成するもの"&gt;1章 DevOpsを構成するもの
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;1日に30回のデプロイは、あなたの組織の最終目標ではないかもしれません。&lt;/li&gt;
&lt;li&gt;変更の内容を理解できない人がたとえ5人承認したとしても,変更の安全性は高まるはずがない
&lt;ul&gt;
&lt;li&gt;より多くの承認プロセスといった厳しい制限を増やし続けて安全性を手に入れているつもりになりがち&lt;/li&gt;
&lt;li&gt;このような時に無駄なやり取りこそがDevOpsが解決しようとしているもの&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;DevOpsはツールについてではなく、チームがどのように一緒に働くかについて考える
&lt;ul&gt;
&lt;li&gt;ツールによって可能になることに焦点を当てる&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CAMS&lt;/strong&gt;：cluture（文化）、automation（自動化）、metrics（メトリクス）、sharing（共有）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2章-パターナリスト症候群"&gt;2章 パターナリスト症候群
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;パターナリスト症候群：ある行動の実行や承認に必要な資格や信頼性を持つのは特定の人物だけである&lt;/li&gt;
&lt;li&gt;自動化の価値は何度でも実行できるという点にある&lt;/li&gt;
&lt;li&gt;承認プロセスの本当の目的を分析 →自動化で解消する
&lt;ul&gt;
&lt;li&gt;作業が発生していることを必要な人に知らせていること&lt;/li&gt;
&lt;li&gt;変更を中止する必要があるような、アクションの衝突がないこと&lt;/li&gt;
&lt;li&gt;変更のリスクが組織にとって許容できるものであること
&lt;ul&gt;
&lt;li&gt;標準的な変更：すでに確立された変更管理によって事前に承認。やり方や影響を理解している&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;レビューが行われていること&lt;/li&gt;
&lt;li&gt;操作や変更が適切なテストサイクルを経ていること&lt;/li&gt;
&lt;li&gt;承認者がプロセスの中で何を確認しているか？
&lt;ul&gt;
&lt;li&gt;承認依頼を即座に却下する原因となるものはなにか？&lt;/li&gt;
&lt;li&gt;承認するすべての依頼が満たしているべき条件は何か？&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;タスクを実行できる人を制限することで、リスクを減らすことができているわけではなく、一部の人にプレッシャーを集中させているだけ&lt;/li&gt;
&lt;li&gt;何かが機能していると確認できることは、単にエラーがないと確認できることよりも価値がある
&lt;ul&gt;
&lt;li&gt;知識を共有ことは責任を共有するために必要なこと
&lt;ul&gt;
&lt;li&gt;責任の拡大に対応するためにはシステムの全体像を一定のレベルで理解する必要がある&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;電子メールでの通知、通知先のメールアドレスをアプリケーションで管理しない。既存の配信リストを利用
&lt;ul&gt;
&lt;li&gt;通知リストの管理は組織のサービスデスクのプロセスで行うことが出来るはず。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;自動化の継続的な改善に取り組む&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3章-盲目状態での運用"&gt;3章 盲目状態での運用
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;自分たちが開発したシステムが本番でどのように動作するかをより詳細に理解することが求められている
&lt;ul&gt;
&lt;li&gt;本番前の環境で完全かつ徹底的にテストするのは実行不可能になりつつある&lt;/li&gt;
&lt;li&gt;本番環境で初めてテストされる処理もある&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;運用の可視化
&lt;ul&gt;
&lt;li&gt;メトリクス：システムリソースのある時点での測定値
&lt;ul&gt;
&lt;li&gt;CPU使用率・メモリ使用率など＋&lt;strong&gt;アプリケーション用のカスタムメトリクスを開発すること&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;リクエスト数：どのくらいの頻度でこの処理が発生しているか？&lt;/li&gt;
&lt;li&gt;エラー数：どのくらいの頻度で失敗しているか？&lt;/li&gt;
&lt;li&gt;レイテンシ：完了するまでにどのくらいの時間がかかるか？&lt;/li&gt;
&lt;li&gt;何を測定するか？健全なメトリクスと不健全なメトリクスを分けるものは何か？&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ログ：システムで発生したイベントを記述した、システムが生成するメッセージ
&lt;ul&gt;
&lt;li&gt;価値あるものとするために&lt;/li&gt;
&lt;li&gt;構造化されたログフォーマットにする（JSONのような）&lt;/li&gt;
&lt;li&gt;適切なログレベルで記録する&lt;/li&gt;
&lt;li&gt;エラーメッセージを読む時に生じる疑問を想定する&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4章-情報ではなくデータ"&gt;4章 情報ではなくデータ
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;利用者が値の良し悪しを知ることができるように、ウィジェットに文脈を与える&lt;/li&gt;
&lt;li&gt;最も重要な項目が最初に目に入るようにダッシュボードを構成&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="5章-最後の味付けとしての品質"&gt;5章 最後の味付けとしての品質
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;テストピラミッド
&lt;ul&gt;
&lt;li&gt;ユニットテスト＞統合テスト＞エンドツーエンドテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ユニットテスト
&lt;ul&gt;
&lt;li&gt;テスト対象のユニットに含まれないものは、モックやスタブを使用（統合テストで扱うべき）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;統合テスト
&lt;ul&gt;
&lt;li&gt;実際のDB接続してデータの書き込みや読み込みを検証&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="6章-アラート疲れ"&gt;6章 アラート疲れ
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;システムメトリクス（CPU使用率・メモリ使用率など）のアラートを受けても何をしたら良いかわからないことが多い。
&lt;ul&gt;
&lt;li&gt;なぜ、どのようにしてその状態になったのかについて何の文脈も与えてくれない&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;アラートには関連するドキュメントが必要
&lt;ul&gt;
&lt;li&gt;アラートを受け取った時に取るべき手順を説明する手順書&lt;/li&gt;
&lt;li&gt;そもそもなぜそれが通知する必要のあるアラートなのかも記載&lt;/li&gt;
&lt;li&gt;アラートメッセージに手順書へのリンクを記載&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;5分待てば自然に解除されるかもしれない時ではなく、すぐに調査する必要があると確信したときにアラートをトリガする&lt;/li&gt;
&lt;li&gt;必ずしも真夜中に誰かを起こす必要はない。発生していることを認知すれば十分なアラートは、メールなどにする&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="7章-空の道具箱"&gt;7章 空の道具箱
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;システム全体が自動化を念頭に置いて設計されていないと、自動化の欠如が生じる&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;運用&lt;/strong&gt;とは、プロダクトを構築し維持するために必要なすべてのタスクや活動のこと
&lt;ul&gt;
&lt;li&gt;サーバの監視&lt;/li&gt;
&lt;li&gt;テストパイプラインの管理&lt;/li&gt;
&lt;li&gt;ローカル開発環境の構築
&lt;ul&gt;
&lt;li&gt;これらが頻繁に繰り返される場合、標準化することが重要&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;自動化によって、権限を与え、スピードを上げ、再現性を高める&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="8章-業務時間外のデプロイ"&gt;8章 業務時間外のデプロイ
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;デプロイのレイヤ
&lt;ul&gt;
&lt;li&gt;機能デプロイ&lt;/li&gt;
&lt;li&gt;フリートデプロイ&lt;/li&gt;
&lt;li&gt;アーティファクトデプロイ&lt;/li&gt;
&lt;li&gt;データベースデプロイ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;テストを組織の文化の一部にする
&lt;ul&gt;
&lt;li&gt;テストケースのないマージリクエストは不完全なマージリクエストであるという考えを徹底させる&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;自動化ですべてを確認できるわけではありません。しかし、それは手動のテストも同様です。
&lt;ul&gt;
&lt;li&gt;不確実性を組織が許容できる範囲まで減らすことは可能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="9章-せっかくのインシデントを無駄にする"&gt;9章 せっかくのインシデントを無駄にする
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;人を直接批判してはならない。行動や振る舞いに焦点を当てる。&lt;/li&gt;
&lt;li&gt;今となっては明白な事実でも、その場では曖昧だった可能性があることを認識すう&lt;/li&gt;
&lt;li&gt;人ではなくシステムを責める&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="10章-情報のため込みブレントだけが知っている"&gt;10章 情報のため込み：ブレントだけが知っている
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;組織全体での情報共有が促進されず、あるトピックに関してキーパーソンにすべてを任せるようになったとき&lt;/li&gt;
&lt;li&gt;目標は、スタッフが離職しても、組織が活動するために必要な知識を保持すること&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="11章-命じられた文化"&gt;11章 命じられた文化
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;「○○を使ったシステムの使用経験が2～3年あること」
&lt;ul&gt;
&lt;li&gt;実際にはどのような経験が必要なのか？&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="12章-多すぎる尺度"&gt;12章 多すぎる尺度
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;組織の目標を意識すると、自分がこれから取り掛かる予定の仕事が違って見えるようになる&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;後半は飛ばし飛ばし読んだけど…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;何を達成したいのか、目的をはっきりさせること&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;が大事だなってことを改めて感じた。&lt;br&gt;
あとは、エラーメッセージ。「○○処理でエラーが発生しました」&lt;strong&gt;…で？どうすればいいの？&lt;/strong&gt; の部分を明確化するのも必要だ。意外とできていない。&lt;/p&gt;</description></item><item><title>『分散システムデザインパターン』</title><link>https://tsumari.pupu.jp/blog/posts/2023/10/17/</link><pubDate>Tue, 17 Oct 2023 10:44:10 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/10/17/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;分散システムデザインパターン&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="モチベーション"&gt;モチベーション
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;コンテナの使い道がわからないから理解を深めるため&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="メモ"&gt;メモ
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;シングルノード&lt;br&gt;
1台のマシン上で動く複数のコンテナについて&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;サイドカー&lt;/li&gt;
&lt;li&gt;アンバサダ&lt;/li&gt;
&lt;li&gt;アダプタ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;マルチノード&lt;br&gt;
複数のマシンにまたがるコンテナについて&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;レプリカがロードバランスされたサービス&lt;/li&gt;
&lt;li&gt;シャーディングされたサービス&lt;/li&gt;
&lt;li&gt;スキャッタ・ギャザー&lt;/li&gt;
&lt;li&gt;ファンクションとイベント駆動処理&lt;/li&gt;
&lt;li&gt;オーナーシップの選出&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;バッチ処理パターン (MapReduceとは‥？)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ワークキューシステム&lt;/li&gt;
&lt;li&gt;イベント駆動バッチ処理&lt;/li&gt;
&lt;li&gt;協調的バッチ処理&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="感想"&gt;感想
&lt;/h2&gt;&lt;p&gt;ぜんっぜん意味がわからなかった…。&lt;br&gt;
コンテナについての知識不足が一番の原因だと思うけど、翻訳された日本語を読むのが難しいのもあるかもしれない…。&lt;br&gt;
「レプリカがロードバランスされたサービス」だけは辛うじてイメージできた。&lt;br&gt;
いきなりこんな難しいオライリー本を読んで理解しようとするのではなく、いろいろ知らない単語があったのでそれをひとつひとつ調べて理解していくことから始めないとだめかなぁ…。&lt;/p&gt;</description></item><item><title>【Docker】ようやくわかってきたかも</title><link>https://tsumari.pupu.jp/blog/posts/2023/10/04/</link><pubDate>Wed, 04 Oct 2023 18:51:45 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/10/04/</guid><description>&lt;p&gt;何回説明読んでもイメージが全然できなかったんだけどようやくわかってきたかも。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dockerfile ＝ 設計図（CADデータみたいな）&lt;br&gt;
↓Build&lt;/li&gt;
&lt;li&gt;Image ＝ 3Dモデルファイル / 金型（何度でも使い回す）&lt;br&gt;
↓run&lt;/li&gt;
&lt;li&gt;Container ＝ 実物&lt;br&gt;
これを大量生産、3Dプリンターでぽこぽこ作るみたいな&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;頭が悪いので、こういう例え話に変換しないと理解できない。&lt;/p&gt;</description></item><item><title>私は技術力がない</title><link>https://tsumari.pupu.jp/blog/posts/2023/09/30/</link><pubDate>Sat, 30 Sep 2023 09:22:03 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/09/30/</guid><description>&lt;p&gt;私は技術力がない、と感じる。&lt;/p&gt;
&lt;h2 id="きっかけはホームページだけ"&gt;きっかけはホームページだけ
&lt;/h2&gt;&lt;p&gt;昔、自分の趣味のホームページを作るためにHTMLを触った。ほんとそれだけです、すみません、と言いたくなるくらいのスタート。&lt;/p&gt;
&lt;p&gt;工業高校の情報技術コースでちょっと学んだだけ。&lt;br&gt;
大学で学んだわけでもない。アルゴリズムをちゃんと学んだわけでもない。&lt;br&gt;
周りのエンジニアが当たり前に話している言葉の半分が、自分には入ってこないことがある。&lt;/p&gt;
&lt;h2 id="それでもエンジニアとして働いてる"&gt;それでもエンジニアとして働いてる
&lt;/h2&gt;&lt;p&gt;PHPベースの改修、手順書、運用、保守対応。&lt;/p&gt;
&lt;p&gt;「技術力がない」と言いながら、これまでずっと同じ領域で食べてきた。矛盾している。&lt;/p&gt;
&lt;h2 id="何がつらいか"&gt;何がつらいか
&lt;/h2&gt;&lt;p&gt;つらいのは、&lt;strong&gt;できないことではなく、できているはずなのに自信が持てないこと&lt;/strong&gt;だ。&lt;/p&gt;
&lt;p&gt;資格試験もそうだ。基本情報も応用情報も一度落ちてから、2回目でようやく合格した。合格証は手元にある。それでも「落ちた人が、やっと通った」くらいの感じが抜けない。&lt;/p&gt;
&lt;p&gt;仕事でも同じパターンがある。任されている。信頼もされている。&lt;br&gt;
それでも「本物のエンジニア」だとは思えない。&lt;br&gt;
比べる対象が、頭の中にいるだけの理想のエンジニアなのかもしれない。&lt;/p&gt;
&lt;h2 id="なんとかしたいの中身"&gt;なんとかしたい、の中身
&lt;/h2&gt;&lt;p&gt;「これじゃ恥ずかしいから、なんとかしたい」。今振り返ると、こういうことだった気がする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;技術力を一気に付けたい、というより、&lt;strong&gt;言い訳なく説明できる自分&lt;/strong&gt;になりたい&lt;/li&gt;
&lt;li&gt;わからないことをわからないまま隠したくない&lt;/li&gt;
&lt;li&gt;勉強の習慣を止めたくない&lt;/li&gt;
&lt;li&gt;何かアウトプットしたい（このブログを始めたのも、その延長かもしれない）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なんとかする、と言ったまま、まだなんとかできていない日もある。それでも、完全に諦めるほどには、なっていない。&lt;/p&gt;</description></item><item><title>朝起きられないのは、目的がないから</title><link>https://tsumari.pupu.jp/blog/posts/2023/09/28/</link><pubDate>Thu, 28 Sep 2023 06:32:12 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/09/28/</guid><description>&lt;p&gt;朝、早く起きられない。スヌーズを何度も押す。早起きしてやりたいことをあらかじめ決めておいても、アラームを聞きながら「なんで今やらなきゃいけないんだ？眠いんだけど。夜でよくね？」と思う。&lt;/p&gt;
&lt;h2 id="明日の朝は早起きして本読むぞでは起きられない"&gt;「明日の朝は早起きして本読むぞ〜」では起きられない
&lt;/h2&gt;&lt;p&gt;朝活の定番リストは知っている。散歩、本、勉強。着替えと洗顔が終わったら、やりたいことをやる……手順としてはわかる。&lt;/p&gt;
&lt;p&gt;でも「じゃあ明日の朝は早起きして本読むぞ〜」程度の気持ちだと、絶対起きられない。目的がないから。ふわっとした「やったほうがいい」では、アラームの前に負ける。&lt;/p&gt;
&lt;h2 id="朝起きる理由を自分で説明できないと無理"&gt;朝起きる理由を、自分で説明できないと無理
&lt;/h2&gt;&lt;p&gt;「なぜ、朝、早く起きてやらなければいけないのか」。これを自分が納得できる言葉で説明できないと、起きられない。&lt;strong&gt;起きないと困る・悔しい理由&lt;/strong&gt; が出てこないなら、朝起きる必要はない、と思う。&lt;/p&gt;
&lt;h3 id="だめな例"&gt;だめな例
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;「朝活したほうがいいらしい」&lt;/li&gt;
&lt;li&gt;「成功者は早起き」&lt;/li&gt;
&lt;li&gt;「本に書いてあった」&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="いい例"&gt;いい例
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;「また遅刻したらクビになっちゃう」&lt;/li&gt;
&lt;li&gt;「クビになったら、ライブに行く金がない」&lt;/li&gt;
&lt;li&gt;「あいつに負けたくない」&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="起きるしかないは本当"&gt;起きるしかない、は本当
&lt;/h2&gt;&lt;p&gt;やることと目的が決まったあとは、何時に起きるか決めて、そこから逆算して6〜7時間寝る。あとは起きるだけ。どうやって起きるか？起きるしかない。&lt;/p&gt;
&lt;p&gt;どうしても早く起きられないなら、もっと早く寝るしかない。もっと早く寝るには、早く起きるしかない。早く起きないと、夜眠くならないから。10分くらいずつでも、無理やり朝を早くして調整していくしかない、と今は思っている。&lt;/p&gt;
&lt;p&gt;朝が苦手なのは、意志が弱いからだけじゃない。&lt;strong&gt;夜の自分と朝の自分が別人&lt;/strong&gt;で、夜の自分が決めたことを朝の自分が否定する。&lt;/p&gt;
&lt;p&gt;「なぜ起きるか」が説明できない朝は、もう諦めたほうがいい、というのはわかった。&lt;/p&gt;</description></item><item><title>『瞬時に「言語化できる人」が、うまくいく。』</title><link>https://tsumari.pupu.jp/blog/posts/2023/09/22/</link><pubDate>Fri, 22 Sep 2023 07:23:54 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/09/22/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;瞬時に「言語化できる人」が、うまくいく。&lt;br&gt;
&lt;a class="link" href="https://amzn.asia/d/3QT3avy" target="_blank" rel="noopener"
 &gt;https://amzn.asia/d/3QT3avy&lt;/a&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;私はコミュニケーション力がないので、色々なコミュ力本や話し方本など読んできたが、&lt;br&gt;
何も変わらないのは、&lt;strong&gt;「どう伝えるか」より「何を伝えるか」が大事&lt;/strong&gt; というのを読んで、確かに。と思った。&lt;br&gt;
確かに「どう言ったら…？」より、「何を言ったら…？」で上手に話せない状況のほうが多い。&lt;/p&gt;
&lt;p&gt;言語化できるようにするためのトレーニング法として、メモ書きを紹介されている。&lt;br&gt;
内容は『0秒思考』と似ている。&lt;br&gt;
ただ、過去に『0秒思考』を読んだ時も実践しようとしたが、私にはこれ難しい…。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「問い」が思いつかない。
&lt;ul&gt;
&lt;li&gt;なんでもいい、と言われるとなおさらわからん&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;辛うじて考えた問いに対して「どう思う？」と言われても…
&lt;ul&gt;
&lt;li&gt;本当にわからない、解決策ない&lt;/li&gt;
&lt;li&gt;だから「まじでムカつく」くらいしか出てこない（語彙力がない）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;と、今日は本に対するどう思う？を書いてみた。&lt;br&gt;
どうだろうか。少しは練習になったかな。&lt;/p&gt;</description></item><item><title>Oracle PL/SQL で経過時間を記録する</title><link>https://tsumari.pupu.jp/blog/posts/2023/09/20/</link><pubDate>Wed, 20 Sep 2023 07:47:25 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/09/20/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;DECLARE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; START_TIME NUMBER;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; END_TIME NUMBER;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ELAPSED_TIME NUMBER;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;BEGIN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; START_TIME :&lt;span style="color:#f92672"&gt;=&lt;/span&gt; DBMS_UTILITY.GET_TIME;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;--何らかの時間がかかる処理
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; END_TIME :&lt;span style="color:#f92672"&gt;=&lt;/span&gt; DBMS_UTILITY.GET_TIME;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ELAPSED_TIME :&lt;span style="color:#f92672"&gt;=&lt;/span&gt; (END_TIME &lt;span style="color:#f92672"&gt;/&lt;/span&gt; START_TIME) &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; DBMS_OUTPUT.PUT_LINE(TO_CHAR(ELAPSED_TIME, &lt;span style="color:#e6db74"&gt;&amp;#39;FM00000.000&amp;#39;&lt;/span&gt;) &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;秒&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;END&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>CloudFrontのログをAthenaで検索</title><link>https://tsumari.pupu.jp/blog/posts/2023/09/12/</link><pubDate>Tue, 12 Sep 2023 06:16:42 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/09/12/</guid><description>&lt;h2 id="amazon-athena-とは"&gt;Amazon Athena とは
&lt;/h2&gt;&lt;p&gt;S3内のデータをSQLを使用して分析できるサービス。&lt;/p&gt;
&lt;h2 id="cloudfront-ログのテーブルの作成"&gt;CloudFront ログのテーブルの作成
&lt;/h2&gt;&lt;p&gt;以下のユーザーガイドに従って進める。&lt;/p&gt;
&lt;p&gt;Amazon CloudFront ログのクエリ&lt;br&gt;
&lt;a class="link" href="https://docs.aws.amazon.com/ja_jp/athena/latest/ug/cloudfront-logs.html" target="_blank" rel="noopener"
 &gt;https://docs.aws.amazon.com/ja_jp/athena/latest/ug/cloudfront-logs.html&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;以下の DDL ステートメントを Athena コンソールのクエリエディタに貼り付け、38行目の&lt;code&gt;LOCATION&lt;/code&gt; をログを保存する S3バケットに変更し、実行する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;CREATE&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;EXTERNAL&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;TABLE&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;IF&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;NOT&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;EXISTS&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;default&lt;/span&gt;.cloudfront_logs (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;`&lt;/span&gt;date&lt;span style="color:#f92672"&gt;`&lt;/span&gt; DATE,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;time STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;location&lt;/span&gt; STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bytes BIGINT,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;request_ip STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;method&lt;/span&gt; STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;host&lt;/span&gt; STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uri STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;status INT,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;referrer STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;user_agent STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;query_string STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cookie STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;result_type STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;request_id STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;host_header STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;request_protocol STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;request_bytes BIGINT,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;time_taken FLOAT,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xforwarded_for STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssl_protocol STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssl_cipher STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;response_result_type STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;http_version STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;fle_status STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;fle_encrypted_fields INT,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;c_port INT,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;time_to_first_byte FLOAT,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x_edge_detailed_result_type STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sc_content_type STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sc_content_len BIGINT,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sc_range_start BIGINT,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sc_range_end BIGINT
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;ROW&lt;/span&gt; FORMAT DELIMITED 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;FIELDS TERMINATED &lt;span style="color:#66d9ef"&gt;BY&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;\t&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;LOCATION&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;s3://CloudFront_bucket_name/&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TBLPROPERTIES ( &lt;span style="color:#e6db74"&gt;&amp;#39;skip.header.line.count&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;2&amp;#39;&lt;/span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cloudfront_logs&lt;/code&gt; テーブルが作成される。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[Edit Settings] (設定を編集) をクリックし、Amazon S3 内のクエリ結果の保存場所をセットアップ。私は&lt;code&gt;s3://CloudFront_bucket_name/athena&lt;/code&gt; にした。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="cloudfront-ログのクエリ例"&gt;CloudFront ログのクエリ例
&lt;/h2&gt;&lt;p&gt;date 列名は予約語であるため、二重引用符で囲む。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;DISTINCT&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cloudfront_logs 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;WHERE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;date&amp;#34;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;BETWEEN&lt;/span&gt; DATE &lt;span style="color:#e6db74"&gt;&amp;#39;2018-06-09&amp;#39;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;AND&lt;/span&gt; DATE &lt;span style="color:#e6db74"&gt;&amp;#39;2018-06-11&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;LIMIT&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;カラムが日付と時刻で分かれており、かつUTCのため日本時間に修正して出力する。&lt;br&gt;
長い。もっといいやり方あるかもしれない。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; date_format(at_timezone(&lt;span style="color:#66d9ef"&gt;Cast&lt;/span&gt;(concat(date_format(&lt;span style="color:#e6db74"&gt;&amp;#34;date&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;%Y-%m-%d&amp;#39;&lt;/span&gt;), &lt;span style="color:#e6db74"&gt;&amp;#39; &amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;time&amp;#34;&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;timestamp&lt;/span&gt;), &lt;span style="color:#e6db74"&gt;&amp;#39;Asia/Tokyo&amp;#39;&lt;/span&gt;), &lt;span style="color:#e6db74"&gt;&amp;#39;%Y-%m-%d %H:%i:%s&amp;#39;&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;datetime&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;request_ip&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;method&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;uri&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;result_Type&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;query_string&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;user_agent&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cloudfront_logs
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;LIMIT&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>データベーススペシャリスト試験に、午前Ⅰ免除がもったいないから申し込んだ</title><link>https://tsumari.pupu.jp/blog/posts/2023/09/11/</link><pubDate>Mon, 11 Sep 2023 05:29:28 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/09/11/</guid><description>&lt;p&gt;2023年秋、データベーススペシャリスト試験を受けることにした。&lt;/p&gt;
&lt;p&gt;応用情報に合格したあと、「2年間、午前Ⅰが免除になる」と初めて知って、勿体ないと思ったから。&lt;/p&gt;
&lt;h2 id="応用合格までの道のり"&gt;応用合格までの道のり
&lt;/h2&gt;&lt;p&gt;7年前、基本情報は不合格。&lt;br&gt;
4年前、応用情報も不合格。&lt;br&gt;
昨年春、基本に合格。&lt;br&gt;
今年春、応用に合格。&lt;br&gt;
本当にやっと、ギリギリのラインだった。&lt;/p&gt;
&lt;p&gt;その先の高度試験については、まともに調べたことすらなかった。応用が取れた時点で満足していた。&lt;br&gt;
DBスペシャリストを選んだのは、応用の午後で一番得意だった分野だから、というくらいの理由だ。&lt;/p&gt;
&lt;p&gt;一発合格できるとは思っていない。でも、この歳になってようやくわかった。「勉強を継続する」「習慣にする」ことのほうが、合格そのものより大事かもしれない、と。手を止めたくない、という気持ちで申し込んだ。&lt;/p&gt;
&lt;h2 id="申し込んだのに本腰が入らない"&gt;申し込んだのに、本腰が入らない
&lt;/h2&gt;&lt;p&gt;仕事がトラブル続きだったり、私生活が多忙だったり……言い訳はいくらでもある。&lt;br&gt;
参考書は申し込み後すぐ買った。&lt;br&gt;
特典の過去問PDFはiPadでやろうとして、あまりにやりづらくて断念し、コンビニで印刷した。&lt;/p&gt;
&lt;p&gt;そこまではした。そこから先が進まない。&lt;/p&gt;
&lt;p&gt;午後試験は問題文が長い。本気でやったら1時間以上は普通にかかる。&lt;br&gt;
だから「今から始めてもなあ…」となって後回しになる。&lt;br&gt;
「初受験だしどうせ合格できない」が頭をよぎる。&lt;/p&gt;
&lt;h2 id="自分に言い聞かせていること"&gt;自分に言い聞かせていること
&lt;/h2&gt;&lt;p&gt;夜の自分に期待しない。&lt;br&gt;
疲れた、という言い訳が出るから、朝にやる。&lt;br&gt;
完璧に解けなくていい。&lt;br&gt;
午前を1問でも、午後をちょっとでも読む。&lt;br&gt;
Studyplusのタイムラインで、同じ試験を目指す人がちゃんと勉強しているのを見て焦る。&lt;/p&gt;
&lt;p&gt;合格は厳しい。それでも、問題文の読み方や用語くらいは理解した上で臨みたい。&lt;br&gt;
合格するつもりでやる、と言っている。&lt;/p&gt;
&lt;p&gt;本当にそう思えているかは、ちょっとあやしい。&lt;br&gt;
「どうせ合格できない」と思いすぎていると思う。&lt;/p&gt;</description></item><item><title>自己紹介</title><link>https://tsumari.pupu.jp/blog/posts/2023/09/10/</link><pubDate>Sun, 10 Sep 2023 12:28:51 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/09/10/</guid><description>&lt;p&gt;こんにちは、tsumariと申します。&lt;/p&gt;
&lt;p&gt;文章能力もコミュニケーション能力も低いので&lt;br&gt;
ブログを始めたものの何を書いていいのかわからない…。&lt;/p&gt;
&lt;p&gt;一応ITエンジニアということで&lt;br&gt;
いろいろアウトプットしていければと思っています。&lt;/p&gt;
&lt;p&gt;ずっとブログでも始めようかなーとは考えていたものの行動に移せずいましたが、&lt;br&gt;
Hugoというものを見つけてようやく作ってみた次第です。&lt;/p&gt;
&lt;p&gt;昔はHTMLでホームページ作って自分で描いたイラストを載せたりするのが趣味でした。&lt;br&gt;
そんな感じのこともまたやりたいなぁ、と…。&lt;/p&gt;</description></item><item><title>【Hugo】Hugo を試してみる</title><link>https://tsumari.pupu.jp/blog/posts/2023/09/09/</link><pubDate>Sat, 09 Sep 2023 16:11:03 +0900</pubDate><guid>https://tsumari.pupu.jp/blog/posts/2023/09/09/</guid><description>&lt;h2 id="1-create-a-site"&gt;1. Create a site
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://gohugo.io/getting-started/quick-start/#create-a-site" target="_blank" rel="noopener"
 &gt;https://gohugo.io/getting-started/quick-start/#create-a-site&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-Bash" data-lang="Bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo new site hugo-practice
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd hugo-practice
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;theme = &amp;#39;ananke&amp;#39;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; hugo.toml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-add-content"&gt;2. Add content
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://gohugo.io/getting-started/quick-start/#configure-the-site" target="_blank" rel="noopener"
 &gt;https://gohugo.io/getting-started/quick-start/#configure-the-site&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-Bash" data-lang="Bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo new content posts/my-first-post.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-create-a-netlify-account"&gt;3. Create a Netlify account
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://app.netlify.com" target="_blank" rel="noopener"
 &gt;https://app.netlify.com&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="4-create-a-new-site-with-continuous-deployment"&gt;4. Create a new site with continuous deployment
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://gohugo.io/hosting-and-deployment/hosting-on-netlify/" target="_blank" rel="noopener"
 &gt;https://gohugo.io/hosting-and-deployment/hosting-on-netlify/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;を参考に。。&lt;/p&gt;</description></item></channel></rss>