2026-01

スポンサーリンク
C#

C# Tips | 文字列処理:文字列分割

はじめに 「文字列分割」は“バラしてから意味をつける”ための基本技業務システムでは、「1本の文字列の中に、複数の値が詰め込まれている」ことがよくあります。CSV の 1 行、区切り文字付きの設定値、ユ...
C#

C# Tips | 文字列処理:ケバブケース変換

はじめに 「ケバブケース変換」は“フロントエンド世界との共通語”C# の世界では UserName(PascalCase)や userName(camelCase)が主流ですが、フロントエンドや一部の...
C#

C# Tips | 文字列処理:スネークケース変換

はじめに 「スネークケース変換」は“別世界の命名ルールをつなぐアダプタ”C# の世界では UserName や OrderId のような PascalCase/camelCase が主流ですが、業務で...
C#

C# Tips | 文字列処理:キャメルケース変換

はじめに 「キャメルケース変換」は“名前をそろえるためのルールエンジン”業務で C# を書いていると、「名前の書き方」をそろえたくなる場面がたくさん出てきます。JSON のプロパティ名、API のパラ...
C#

C# Tips | 文字列処理:小文字変換

はじめに 「小文字変換」は“ゆるく受け入れて、きっちり比べる”ための道具大文字変換と同じくらい、業務コードでよく使うのが「小文字変換(Lower)」です。特に、こんな場面で出てきます。ユーザー入力を小...
C#

C# Tips | 文字列処理:大文字変換

はじめに 「大文字変換」は“比較とフォーマットを安定させるための基本技”文字列処理の中でも、「大文字変換(Upper)」はかなり頻出のテクニックです。特に業務システムでは、こんな場面でよく使われます。...
C#

C# Tips | 文字列処理:半角→全角

はじめに 「半角→全角」は“見た目とフォーマットをそろえるための技”さっきの「全角→半角」は、検索や比較を安定させるための前処理でした。一方で「半角→全角」は、どちらかというと「見た目」と「フォーマッ...
C#

C# Tips | 文字列処理:全角→半角

はじめに なぜ「全角→半角」が業務でこんなに大事なのか日本語の業務システムでは、「見た目は同じなのに、文字コードが違うせいで一致しない」という事故が本当に多いです。「A」と「A」、「1」と「1」、「@...
C#

C# Tips | 文字列処理:空白トリム

はじめに 「空白トリム」は“バグの温床”を一気に減らすお掃除スキル業務システムで文字列を扱うとき、地味だけどめちゃくちゃ効くのが「空白トリム」です。ユーザー入力、CSV、設定ファイル、外部API――そ...
C#

C# Tips | 文字列処理:null安全文字列

はじめに 「null安全文字列」は“落ちないコード”への第一歩C# で業務コードを書いていると、かなりの頻度で出てくる例外があります。NullReferenceException――いわゆる「ヌルポ」...
PHP

PHP Tips | 文字列処理:検索・置換 – 単語境界のみ置換

「単語境界のみ置換」って何をしたいのかまず、やりたいことのイメージからいきます。「単語境界のみ置換」は、こういうニーズです。「cat という単語だけを dog に置き換えたい。でも、category ...
PHP

PHP Tips | 文字列処理:検索・置換 – 配列で一括置換

「配列で一括置換」でやりたいことをイメージするまず、やりたいことはこうです。1回の処理で、「複数の文字列」をまとめて置き換えたい。例えば、こんなケースです。元の文字列: "PHP7 と PHP8 を比...
PHP

PHP Tips | 文字列処理:検索・置換 – 大文字小文字を無視して置換

「大文字小文字を無視して置換」ってどういうこと?まず、やりたいことのイメージからいきます。元の文字列: "Hello WORLD, hello world.""hello" を "Hi" に置き換えた...
PHP

PHP Tips | 文字列処理:検索・置換 – 正規表現置換

正規表現置換って何をするもの?まずイメージからいきます。正規表現「マッチ」は、「この文字列がパターンに当てはまるか?」を調べるものでした。正規表現「置換」は、「パターンに当てはまる“部分”を、別の文字...
PHP

PHP Tips | 文字列処理:検索・置換 – 正規表現マッチ

正規表現マッチって何をするもの?まずイメージからいきます。「正規表現マッチ」は、文字列が「あるパターン」に当てはまるかどうかをチェックするための仕組みです。「パターン」というのがポイントで、単なる「部...
PHP

PHP Tips | 文字列処理:検索・置換 – すべて含むかチェック

「すべて含むかチェック」でやりたいことをイメージするここでやりたいのはこういう判定です。「この文章の中に、指定した複数キーワードが“全部”含まれているか?」例で見ると分かりやすいです。本文: "本日は...
PHP

PHP Tips | 文字列処理:検索・置換 – 複数キーワードのいずれかを含むか

「複数キーワードのいずれかを含むか」とは何をしたいのかやりたいことはこうです。「この文章の中に、NGワード一覧のどれか1つでも含まれていたらアウトにしたい」イメージしやすい例でいうと:本文: "本日は...
PHP

PHP Tips | 文字列処理:検索・置換 – 後方一致チェック

「後方一致チェック」でやりたいことをまずイメージする「後方一致」は、こういう判定のことです。文字列: "report.csv"キーワード: ".csv" → 最後が一致している(true)キーワード:...
PHP

PHP Tips | 文字列処理:検索・置換 – 前方一致チェック

「前方一致チェック」でやりたいことをまずイメージする「前方一致」は、こういう判定のことです。文字列: "ABC123"キーワード: "ABC" → 先頭が一致している(true)キーワード: "AB"...
PHP

PHP Tips | 文字列処理:検索・置換 – 部分一致チェック

「部分一致チェック」でやりたいことをまずイメージするやりたいことはシンプルです。「ある文字列の中に、探したいキーワードが含まれているかどうか」を調べたい。例えば、こういう判定です。本文: "本日は晴天...
Java

Java Tips | 文字列処理:先頭大文字化

先頭大文字化は「ちょっとだけ“きれいな名前・ラベル”にする」技キャメルケースやスネークケースほど大げさではないけれど、業務で地味によく出てくるのが 「先頭だけ大文字にしたい」 というニーズです。use...
Java

Java Tips | 文字列処理:ケバブケース変換

ケバブケース変換は「Java の名前を“URL やフロントエンドの世界”に合わせる」技ここまで出てきたキャメルケース(userName)、スネークケース(user_name)に続いて、フロントエンドや...
Java

Java Tips | 文字列処理:スネークケース変換

スネークケース変換は「Java の名前を“DB や設定ファイルの世界”に合わせる」技キャメルケース変換が「外の世界を Java っぽくする」技だとしたら、スネークケース変換はその逆で、「Java の名...
Java

Java Tips | 文字列処理:キャメルケース変換

キャメルケース変換は「バラバラな単語を“Java っぽい名前”にそろえる」技業務システムを書いていると、こんな文字列がよく出てきます。user_nameUSER_NAMEuser-nameuser n...
Java

Java Tips | 文字列処理:小文字変換

小文字変換は「表記ゆれを“ゆるく受け止める”ための技大文字変換が「全部そろえてガチっと比較する」イメージだとしたら、小文字変換は「とりあえずぜんぶ丸めて、ゆるく受け止める」イメージに近いです。GET,...
Java

Java Tips | 文字列処理:大文字変換

大文字変換は「バラバラな表記を“同じもの”として扱う」ための技業務システムでは、ユーザーや外部システムが好き勝手な表記でデータを送ってきます。abc, Abc, ABC が混ざっていたり、jp, JP...
Java

Java Tips | 文字列処理:半角→全角

半角→全角は「機械っぽい文字を“日本語の紙”に合わせる」技全角→半角は「検索や比較のために揃える」話でしたが、半角→全角はどちらかというと「見た目・帳票・印刷物の世界」に寄ったニーズが多いです。例えば...
Java

Java Tips | 文字列処理:全角→半角

全角→半角は「バラバラな入力を“同じもの”として扱う」ための技業務システムで一番よくある地味トラブルの一つが、これです。「1234」と「1234」が別物として扱われてしまう「ABC」と「ABC」で検索...
Java

Java Tips | 文字列処理:英字抽出

英字抽出は「ごちゃ混ぜ文字列から“アルファベットだけ”をすくい上げる」技業務システムでは、「商品名に英字と数字と日本語が混ざっている」「ログにIDやコードが埋まっている」「外部システムから来た文字列が...
Java

Java Tips | 文字列処理:数字抽出

数字抽出は「文章の中から“数値だけ”をすくい上げる」技業務システムでは、ログメッセージ、メール本文、外部システムからのテキスト、Excel から吐き出された中途半端な文字列など、「文字と数字がごちゃ混...
Java

Java Tips | 文字列処理:正規表現置換

正規表現置換は「パターンに合うところだけ賢く書き換える」技正規表現マッチが「パターンに合う部分を見つける」技だとしたら、正規表現置換は「パターンに合う部分だけを、狙った形に書き換える」技です。「電話番...
Java

Java Tips | 文字列処理:正規表現マッチ

正規表現マッチは「文字列の中から“パターン”を見つける」技文字列分割が「区切りで切る」技だとしたら、正規表現マッチは「ルール(パターン)に合う部分だけを見つける」技です。「メールアドレスかどうかチェッ...
Java

Java Tips | 文字列処理:文字列分割

文字列分割は「一つの塊を意味ごとに切り出す」技業務システムでは、CSVの1行、ログ1行、設定ファイルの1行、HTTPヘッダ、クエリ文字列など、「一つの長い文字列を、意味のあるピースに切り分けたい」場面...
Java

Java Tips | 文字列処理:高速StringBuilder

「高速StringBuilder」は“たくさんつなぐ”場面を丸ごと任せる道具前回の「文字列連結」で触れたとおり、+ 連結は少ない回数なら問題ありませんが、ループの中で何百回・何千回と連結するときは、S...
Java

Java Tips | 文字列処理:文字列連結

文字列連結は「小さなピースを一つのメッセージにまとめる」技業務システムでは、ログメッセージ、SQL、URL、エラーメッセージ、メール本文など、「いくつかの値を組み合わせて一つの文字列にしたい」場面がひ...
JavaScript

JavaScript | 1 日 120 分 × 7 日アプリ学習:API通信アプリ(LibreTranslate APIで翻訳アプリ)

1日目のゴールと今日やることLibreTranslate API 中級編 1 日目のテーマは「テキストを入力 → API に送信 → 翻訳結果を表示する“翻訳アプリの基礎”を作る」ことです。扱う技術は...
JavaScript

JavaScript | 1 日 120 分 × 7 日アプリ学習:API通信アプリ(Datamuse APIで関連語検索アプリ)

1日目のゴールと今日やることDatamuse API 中級編 1 日目のテーマは「単語を入力すると、関連する単語や類義語を API から取得して表示するミニアプリを作る」ことです。キーワードはこの 3...
Java

Java | Java 詳細・モダン文法:並行・非同期 – 非同期例外処理

まず「非同期の例外」がなぜややこしいのか同期コードなら、try-catch で囲めばだいたい済みます。try { int x = doSomething(); // ここで例外が出たら catch に...
Java

Java | Java 詳細・モダン文法:並行・非同期 – allOf / anyOf

allOf / anyOf を一言でいうとCompletableFuture.allOf と CompletableFuture.anyOf は、「複数の非同期処理をまとめて扱うための“ハブ”」です。...
Java

Java | Java 詳細・モダン文法:並行・非同期 – thenApply / thenCompose

まず「何をつなぎたいのか」をはっきりさせるCompletableFuture を使うとき、thenApply と thenCompose の違いで必ずつまずきます。でも本質はシンプルで、こうです。「た...
Java

Java | Java 詳細・モダン文法:並行・非同期 – CompletableFuture 組み合わせ

CompletableFuture の「組み合わせ」をざっくり俯瞰するCompletableFuture の本質は「非同期処理を“値”として扱い、それらをつなぎ合わせること」です。単発で supply...
Java

Java | Java 詳細・モダン文法:並行・非同期 – ThreadPool 設計

ThreadPool を一言でいうと「スレッドの再利用工場」ThreadPool(スレッドプール)は、「あらかじめ何本かスレッドを作っておき、タスクをそこに流し込んで再利用する仕組み」です。毎回 ne...
Java

Java | Java 詳細・モダン文法:並行・非同期 – ExecutorService 詳細

ExecutorService を一言でいうとExecutorService は、「スレッドを自分で new せずに、“仕事(タスク)だけ渡して実行してもらう”ための仕組み」です。new Thread...
Java

Java | Java 詳細・モダン文法:並行・非同期 – happens-before

happens-before を一言でいうとhappens-before は、「この処理が終わってから、あの処理が“必ずその結果を見える形で”起きる」という“時間とメモリの順序”を表す言葉です。もっと...
Java

Java | Java 詳細・モダン文法:並行・非同期 – volatile の役割

volatile を一言でいうとvolatile は、「この変数の“最新の値”を、すべてのスレッドから必ず見えるようにする」ためのキーワードです。もっと砕くと、「CPU やスレッドごとのキャッシュにこ...
Java

Java | Java 詳細・モダン文法:並行・非同期 – synchronized の仕組み

synchronized は何を「約束」してくれるのかsynchronized は一言でいうと、「同じ場所を同時に触ろうとする複数スレッドを、順番待ちにさせる仕組み」です。もっと具体的に言うと、あるオ...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル復元

はじめに 「ファイル復元」は“やらかした後に助けてくれる最後の味方”バックアップを取るだけでは、まだ片手落ちです。本当に大事なのは、「壊したあとに、元に戻せること」です。設定ファイルを上書きしてアプリ...
C#

C# Tips | ファイル・ディレクトリ操作:世代管理バックアップ

はじめに 「世代管理バックアップ」は“時間を巻き戻すための仕組み”バックアップを「とりあえずコピーしておく」だけで終わらせると、すぐにこうなります。バックアップフォルダがファイルだらけでカオスになる。...
C#

C# Tips | ファイル・ディレクトリ操作:バックアップ作成

はじめに 「バックアップ作成」は“事故前提”でコードを書く技術業務システムでファイルを扱うなら、「バックアップをどう残すか」は避けて通れません。人が操作をミスることもあるし、プログラムがバグることもあ...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル名重複回避

はじめに なぜ「ファイル名重複回避」が必要になるのか業務でファイルを扱っていると、かなりの頻度でこういう状況に出会います。同じフォルダに同名ファイルがすでに存在している。ユーザーが同じ名前で何度もエク...
C#

C# Tips | ファイル・ディレクトリ操作:禁則文字除去

はじめに 「禁則文字除去」は“事故る前の最後のガード”業務でファイル名やフォルダ名を「プログラム側で決める」こと、よくありますよね。ユーザーが入力したタイトルをそのままファイル名にしたい。日付やIDを...
C#

C# Tips | ファイル・ディレクトリ操作:パス安全化

はじめに 「パス安全化」は“ファイルを触る前の身だしなみ”業務でファイルを扱うコードを書くとき、本当によく出てくるのが「パス文字列」です。ユーザー入力、設定ファイル、外部システムから渡される値――それ...
C#

C# Tips | ファイル・ディレクトリ操作:ZIP解凍

はじめに 「ZIP解凍」ができると“受け取ったファイルをさばける人”になる業務だと、相手から渡されるファイルがそのままではなく、ZIP で固められていることが本当に多いです。日次バッチの結果、帳票一式...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル圧縮(ZIP)

はじめに 「ZIP を扱える」と業務ツールの格が一段上がる業務でよくあるシーンです。複数ファイルを ZIP にまとめてメールで送りたい。バックアップを ZIP で固めて日付ごとに保存したい。外部システ...
C#

C# Tips | ファイル・ディレクトリ操作:大容量ファイル逐次読み込み

はじめに 「全部読み込む」はもう卒業しよう大きなログファイル、巨大な CSV、数 GB のテキスト。こういうファイルを相手にするときに、File.ReadAllText や File.ReadAllL...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル監視(FileSystemWatcher)

はじめに 「ファイル監視」ができると“自動処理”の世界が一気に広がる業務システムを書いていると、こんな要望がよく出てきます。フォルダにファイルが置かれたら、自動で取り込んで処理したい。設定ファイルが書...
C#

C# Tips | ファイル・ディレクトリ操作:ログローテーション

はじめに なぜ「ログローテーション」が必要になるのか業務システムを真面目に運用し始めると、必ずと言っていいほど「ログファイルがデカくなりすぎる問題」にぶつかります。1つのログファイルに延々と書き続ける...
C#

C# Tips | ファイル・ディレクトリ操作:TSV対応CSV

はじめに 「TSV対応CSV」とは“区切り文字を意識できる人”になること業務でファイル連携をしていると、こういうことが起きます。CSV ください、と言われたのに、実際に渡されるのはタブ区切り(TSV)...
C#

C# Tips | ファイル・ディレクトリ操作:CSV書き込み

はじめに 「CSV書き込み」ができると“外部連携の入口”が開くCSV 読み込みが「外部からデータをもらう入口」だとしたら、CSV 書き込みは「外部にデータを渡す出口」です。集計結果を CSV で出力し...
C#

C# Tips | ファイル・ディレクトリ操作:CSV読み込み

はじめに 「CSV読み込み」がちゃんと書けると一気に“業務っぽく”なる業務システムで一番よく出てくるファイル形式、それが CSV です。売上データ、マスタデータ、ログのエクスポート、外部システムとの連...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル結合

はじめに 「分割したなら、いつか必ず結合する」前回は「ファイル分割」でしたね。大きすぎるファイルを扱いやすくするために分けたなら、どこかのタイミングで「元に戻したい」「まとめて扱いたい」というニーズが...
JavaScript

JavaScript | 非同期処理:非同期の基礎概念 – 非同期が必要な理由

まず「なぜ非同期なんて面倒なものがあるのか」いきなり本音から言うと、多くの人はこう感じます。「同期処理だけで書けたらどれだけ楽か」「非同期って急に難しくなるし、できれば避けたい」実は JavaScri...
JavaScript

JavaScript | 非同期処理:非同期の基礎概念 – 実行順序の全体像

まず「実行順序の全体像」を一言でまとめるJavaScript の実行順序は、ざっくり言うとこうなります。同期処理(ふつうのコード)を上から順番に実行する同期が一段落してコールスタックが空いたら、Pro...
JavaScript

JavaScript | 非同期処理:非同期の基礎概念 – イベントループ

まずイベントループを一言でイメージするイベントループは、「JavaScript に“次にやるべき仕事”をひたすら渡し続ける司会進行役」です。JavaScript はシングルスレッドで、同時に動ける処理...
JavaScript

JavaScript | 非同期処理:非同期の基礎概念 – マイクロタスクキュー

マイクロタスクキューとは何か(まずざっくりイメージ)マイクロタスクキューは、「とても優先度の高い“あとで実行する処理”が並ぶ、特別レーンの待ち行列」 です。前回の「タスクキュー」は、setTimeou...
JavaScript

JavaScript | 非同期処理:非同期の基礎概念 – タスクキュー

まずタスクキューを一言でイメージするタスクキューは、「あとで実行する処理(コールバック)を順番に並べておく待ち行列」 です。JavaScript はシングルスレッドなので、「今」実行できるのは 1 つ...
JavaScript

JavaScript | 非同期処理:非同期の基礎概念 – Web API の役割

全体像:Web API は「JavaScript の外にいる助っ人」まず前提から整理します。ブラウザの中で JavaScript が動くとき、JavaScript エンジン(言語そのものを実行する脳み...
JavaScript

JavaScript | 非同期処理:非同期の基礎概念 – コールスタック

コールスタックとは何か(まずイメージから)コールスタックは、「今、どの関数を実行中で、その関数からどの関数を呼び出しているか」を記録している“関数呼び出しの積み重ねメモ” です。JavaScript ...
JavaScript

JavaScript | 非同期処理:非同期の基礎概念 – JavaScript がシングルスレッドである理由

まず「シングルスレッド」のイメージからJavaScript が「シングルスレッド」というのは、「同時に実行できるのは、基本的に1つのことだけ」 という意味です。console.log() を実行してい...
JavaScript

JavaScript | 非同期処理:非同期の基礎概念 – ブロッキングとは何か

「ブロッキング」とは何か(まずイメージから)「ブロッキング」は、ある処理が終わるまで、そこから先の処理が一切進めなくなる状態のことです。JavaScript だと「一番の働き手(メインスレッド)が、そ...
JavaScript

JavaScript | 非同期処理:非同期の基礎概念 – 同期処理と非同期処理の違い

同期処理と非同期処理の一番大事なイメージまず、抽象的な言葉を捨てて、イメージから掴みにいきます。同期処理は、「一列に並んで順番待ちする世界」 です。前の人の処理が終わるまで、次の人は絶対に動けません。...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – クラスの初期化順序

ゴール:「クラスが new されたとき“何がどの順番で動くか”をイメージできるようになる」クラス設計がうまくいくかどうかは、「初期化の順番」をちゃんと理解しているかにかなり左右されます。フィールド初期...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – staticメソッド

ゴール:「これは“インスタンスのメソッド”か“クラスのメソッド”か」を自分で選べるようになるstatic メソッドは一言でいうと、「new した“個体”ではなく、“クラスそのもの”にぶら下がる関数」で...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – staticプロパティ

ゴール:「static は“インスタンスじゃなくてクラスに属するもの”だと腹で理解する」static を一言でいうと、「new した“個体”ではなく、“クラスそのもの”にぶら下がるもの」です。ここがふ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – getter / setter の型

ゴール:「getter / setter の“型”を見て、どう使うかイメージできるようになる」getter / setter は、クラスのプロパティに「振る舞い」をくっつける仕組みです。でも、ただ「便...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – readonlyプロパティの活用

ゴール:「この値は“変わらない”」を型で約束できるようになるreadonly プロパティは、クラス設計でめちゃくちゃコスパのいい武器です。一言でいうと、「この値は、作ったあとに書き換えちゃダメ」をコン...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – public / private / protected

ゴール:「どこまで外に見せるか」を自分でコントロールできるようになるpublic / private / protected は、「クラスの中身をどこまで外に見せるか」を決めるスイッチです。ここをなん...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – メソッドの型指定

ゴール:「メソッドの型だけ見て“何をするか”がだいたい分かるように書ける」クラスのメソッドって、書こうと思えば何でも書けます。だからこそ「型をどう付けるか」で、読みやすさと安全性が大きく変わります。こ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – コンストラクタ引数と型

ゴール:「コンストラクタの引数に“どんな型をつけるか”を意識して設計できるようになることクラスを書くとき、コンストラクタは「インスタンスをどう初期化するか」を決める、とても重要な場所です。ここでの型設...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – プロパティの型設計

ゴール:「クラスのプロパティに“どんな型をつけるか”を意識して設計できるようになること」クラスを書くとき、「プロパティ名」だけでなく「プロパティの型」をどう設計するかで、そのクラスの使いやすさ・安全さ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – クラスの基本構文復習

クラスってそもそも何者?「設計図」と「new」の関係から整理するまずイメージからいきます。クラスはざっくり言うと、「オブジェクトを量産するための設計図」です。設計図(class)を書いておいて、new...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 実務での関数分割ルール

ゴール:「どこまでを1つの関数にして、どこから分けるか」を自分の基準で判断できるようになる実務で一番モヤっとしやすいのがここです。「この関数、長い気はするけど、どこで分ければいいの?」「分けたら分けた...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 可読性の高い関数型設計

ゴール:「関数の“型”を見ただけで、何をするかだいたい分かる」状態を目指す可読性の高い関数型設計って、難しい言い方をしているけれど、やりたいことはシンプルです。その関数の「型」だけを見たときに、何を受...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数設計での型肥大対策

ゴール:「型がデカくなってきた…」と感じたときに、落ち着いて“細く・分けて・名前をつける”発想を持てるようにするTypeScript を真面目に書けば書くほど、そのうち必ずこうなります。「型、でかすぎ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 非同期関数への移行準備

ゴール:「あとで async にしたくなっても困らない関数設計」を身につけるいきなり全部 async/await にする必要はありません。むしろ大事なのは、「今は同期処理だけど、いつでも非同期(asy...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – assert関数の型定義

ゴール:「assert 関数の型」を“道具として設計できる”ようになるまずイメージからいきます。assert 関数は一言でいうと、「この条件が成り立たないなら、ここで止まってくれ」「この時点で、値はも...
JavaScript

JavaScript | 1 日 120 分 × 7 日アプリ学習:API通信アプリ(NewsAPI.orgでニュースアプリ)

1日目のゴールと今日やることNewsAPI.org 中級編 1 日目のテーマは「ニュース API から記事一覧を安全に取得して、ちゃんと“待ち”と“失敗”を扱えるようになること」です。キーワードはこの...
JavaScript

JavaScript | 1 日 120 分 × 7 日アプリ学習:API通信アプリ(WeatherAPI.comで天気アプリ)

1日目のゴールと今日やること中級編 API 通信アプリ 1 日目のテーマは「fetch と async/await を使って、天気 API から安全にデータを取ってくる」ことです。キーワードはこの 3...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル分割

はじめに 「ファイル分割」は“逃げ”ではなく戦略業務をやっていると、だいたい一度はこうなります。ログがバカみたいに大きくなって、テキストエディタで開けない。外部システムから「1 ファイル 10MB ま...
C#

C# Tips | ファイル・ディレクトリ操作:テキスト一括置換

はじめに 「テキスト一括置換」は業務の“地味だけど超重要”作業業務システムを書いていると、こんなことがよく起きます。古いコードや設定ファイルのパスを一気に変えたい。ログファイルや CSV の中の特定の...
C#

C# Tips | ファイル・ディレクトリ操作:BOM付きUTF-8保存

はじめに なぜ「BOM付きUTF-8保存」が業務で大事なのか業務システムだと、こんな場面がよく出てきます。外部システムから「UTF-8(BOM付き)で送ってください」と仕様で指定されている。Excel...
C#

C# Tips | ファイル・ディレクトリ操作:ファイルエンコーディング判定

はじめに 「エンコーディング判定」が分からないとハマる世界業務でテキストファイル(CSV、ログ、設定ファイルなど)を扱うとき、ほぼ必ず出てくるのが「このファイル、何のエンコーディングで書かれているの?...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル文字数カウント

はじめに 「文字数カウント」は“なんとなく”で書くと危ない「ファイルの文字数を数える」――これも一見シンプルですが、実務では意外と奥が深いです。文字数でバリデーションしたい(例:1 万文字を超える説明...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル行数カウント

はじめに 「行数を数える」だけなのに、なぜユーティリティにするのか「ファイルの行数カウント」って、一見すごく地味ですよね。でも業務では、ログ解析、CSV のレコード数チェック、インポート前の件数確認、...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル差分検出

はじめに 「違うかどうか」から一歩進んで「どこが違うか」前回の「ファイル内容比較」は、「同じか」「違うか」を true / false で判定する話でした。でも、業務ではそれだけでは足りない場面がよく...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル内容比較

はじめに 「同じファイルか?」は業務でめちゃくちゃ重要業務システムを書いていると、こんなことを知りたくなる場面がよくあります。バックアップ前:「前回のバックアップと中身が同じなら、コピーをスキップした...
C#

C# Tips | ファイル・ディレクトリ操作:ファイルロック判定

はじめに なぜ「ファイルロック判定」が業務で重要なのか業務システムでは、「今このファイル、誰かが開いていないかな?」を気にしなければいけない場面がよくあります。たとえば、次のような状況です。他のプロセ...
C#

C# Tips | ファイル・ディレクトリ操作:一時フォルダ作成

はじめに 一時フォルダは「作業用の安全な砂場」一時ファイルと同じくらい、業務でよく使うのが「一時フォルダ」です。大きな ZIP を展開して中身を処理するとき、複数ファイルを一時的に並べてからまとめてア...
Java

Java Tips | 基本ユーティリティ:URLデコード

URLデコードは「URLの中身を人間とプログラムの世界に戻す」技URLエンコードが「暴れそうな文字を URL の中で安全な形に変える」技だとしたら、URLデコードはその逆で、「%E3%81%82 みた...
Java

Java Tips | 基本ユーティリティ:URLエンコード

URLエンコードは「URLの中で暴れる文字をおとなしくさせる」技業務システムで外部APIを叩くとき、ブラウザからのリダイレクトURLを組み立てるとき、クエリパラメータを自前で作るとき。そのたびに出てく...
Java

Java Tips | 基本ユーティリティ:Base64デコード

Base64デコードは「文字列を元の世界に連れ戻す」技Base64エンコードが「バイナリを文字列の世界に連れてくる」技だとしたら、Base64デコードはその逆で、「Base64文字列から、元のバイト列...
Java

Java Tips | 基本ユーティリティ:Base64エンコード

Base64エンコードは「バイナリを文字の世界に連れてくる」技業務システムでは、画像・PDF・バイナリデータを「そのままでは扱いにくい場所」に載せたい場面がよくあります。例えば、JSON のフィールド...
Java

Java Tips | 基本ユーティリティ:XMLパース

XMLパースは「外部仕様を自分のオブジェクトに落とし込む」技XML生成が「こちらの世界のデータを外に出す」なら、XMLパースはその逆で、「外の世界から来た XML を、自分の世界(Java のオブジェ...
Java

Java Tips | 基本ユーティリティ:XML生成

XML生成は「機械にも人にも読める構造を作る」技JSON が主流になった今でも、業務の世界では XML が普通に生きています。古い外部システム連携、バッチの入出力、設定ファイル、帳票レイアウト定義など...
Java

Java Tips | 基本ユーティリティ:JSONパース

JSONパースは「外の世界のデータを自分の型に落とす」技JSON文字列化が「Javaのオブジェクトを外の世界に出す」技だとしたら、JSONパースはその逆で、「外の世界から来た JSON を、自分の型に...
Java

Java Tips | 基本ユーティリティ:JSON文字列化

JSON文字列化は「データを言語の壁から解放する」技業務システムでは、フロントエンドとの通信、外部API連携、ログ出力、設定ファイルなど、あらゆるところで JSON が使われます。Java のオブジェ...
Java

Java Tips | 基本ユーティリティ:TSV対応

TSV対応は「CSVの兄弟をちゃんと扱う」技業務システムでは、CSV だけでなく TSV(Tab Separated Values)もよく出てきます。「Excel からタブ区切りで出したデータ」「ログ...
Java

Java Tips | 基本ユーティリティ:CSV分解

CSV分解は「カンマの意味をちゃんと理解する」技CSV を読むときに、line.split(",") と書きたくなる気持ちはよく分かります。でもそれをやると、名前にカンマが入っていたり、ダブルクォート...
Java

Java Tips | 基本ユーティリティ:CSV一行生成

CSV一行生成は「地味だけど壊れやすいところを固める」技業務システムで CSV を出力するとき、「とりあえずカンマでつなげばいいでしょ」と思って書き始めると、すぐにハマります。名前にカンマが入っていた...
Java

Java Tips | 基本ユーティリティ:ファイル名生成

ファイル名生成は「衝突させずに意味を持たせる」ための技業務システムでは、ログファイル、レポート出力、アップロードファイルの保存先など、「新しいファイル名を決める」場面が山ほどあります。ここで適当に "...
Java

Java Tips | 基本ユーティリティ:MIMEタイプ判定

MIMEタイプ判定は「中身の種類をちゃんと確認する」ための技拡張子はあくまで「ラベル」でしかなくて、virus.exe を virus.png にリネームすることも簡単にできます。業務システムでファイ...
Java

Java Tips | 基本ユーティリティ:拡張子取得

拡張子取得は「ファイルの中身を推測するためのラベル取り」業務システムでは、「CSV だけ受け付けたい」「画像ファイルだけ処理したい」「ログローテーションで .log だけ対象にしたい」など、「ファイル...
Java

Java Tips | 基本ユーティリティ:ファイルサイズ取得

ファイルサイズ取得は「重さを意識した設計」をするための技業務システムでは、「このファイル、本当にメモリに全部載せて大丈夫?」「アップロードされたファイルが想定より巨大じゃない?」といった“重さ”の感覚...
PHP

PHP Tips | 文字列処理:変換系 – kebab-case → camelCase

kebab-case と camelCase のイメージをそろえるまずは形の違いをはっきりさせましょう。kebab-case はこういうスタイルです。user-namecreated-atmax-re...
PHP

PHP Tips | 文字列処理:変換系 – camelCase → snake_case

camelCase と snake_case のイメージをそろえるまずは形の違いを頭の中でハッキリさせましょう。camelCase はこういうスタイルです。userNamecreatedAtmaxRe...
PHP

PHP Tips | 文字列処理:変換系 – snake_case → camelCase

まず「snake_case」と「camelCase」の違いをちゃんとイメージする最初に、形の違いをはっきりさせましょう。snake_case 例:user_namecreated_atmax_retr...
PHP

PHP Tips | 文字列処理:変換系 – 単語の先頭のみ大文字

「単語の先頭のみ大文字」にしたいって、具体的にどういうこと?まずゴールのイメージからいきます。before: hello worldafter : Hello Worldbefore: user na...
PHP

PHP Tips | 文字列処理:変換系 – 英字をすべて大文字

「英字をすべて大文字」にする目的を整理するまず、「なんでわざわざ全部大文字にするのか?」をはっきりさせておきます。よくある目的はこんな感じです。コードやIDを「大文字で統一」して見た目とルールを揃えた...
PHP

PHP Tips | 文字列処理:変換系 – 英字をすべて小文字

「英字をすべて小文字」にする目的をはっきりさせるまず、なぜ「全部小文字」にしたいのかを整理しておきます。よくある目的はこんな感じです。ユーザー名やログインIDを「大文字・小文字を区別せずに扱いたい」メ...
PHP

PHP Tips | 文字列処理:変換系 – ひらがな → カタカナ

「ひらがな → カタカナ」でやりたいことまずゴールをはっきりさせます。「ひらがなで書かれた文字列」を、「同じ読みのカタカナ」に変換したい。例えば、こんな文字列があるとします。やまだ たろうかたかなすー...
PHP

PHP Tips | 文字列処理:変換系 – カタカナ → ひらがな

「カタカナ → ひらがな」でやりたいことまずゴールをはっきりさせます。「カタカナで書かれた文字列」を、「同じ読みのひらがな」に変換したい。例えば、こんな文字列があるとします。ヤマダ タロウカタカナスー...
PHP

PHP Tips | 文字列処理:変換系 – 半角 → 全角変換

「半角 → 全角変換」でやりたいことここで目指したいのはこういう状態です。入力された「半角の英数字・記号・カナ」などを、システム内部では「全角」にそろえて扱いたい。例えば、ユーザーがこう入力してきたと...
PHP

PHP Tips | 文字列処理:変換系 – 全角 → 半角変換

「全角 → 半角変換」でやりたいことまずゴールをはっきりさせます。ユーザーが入力した「全角の英数字・記号・スペース」などを、システム内部では「半角」にそろえたい。例えば、こういう入力が来ることがありま...
PHP

PHP Tips | 文字列処理:文字数・切り出し – 固定長になるよう左パディング

「固定長になるよう左パディング」とは何かイメージとしてはこうです。文字列を「決まった長さ」にそろえるために、足りない分を左側に 0 やスペースで埋めること。特に「数値っぽい項目」でよく使います。1 →...
PHP

PHP Tips | 文字列処理:文字数・切り出し – 固定長になるよう右パディング

「固定長になるよう右パディング」とは何かまずイメージからいきましょう。文字列を「決まった長さ」にそろえるために、足りない分を右側にスペースや 0 などで埋めることこれが「右パディング」です。例えば、外...
PHP

PHP Tips | 文字列処理:文字数・切り出し – 最小文字数チェック

「最小文字数チェック」がやりたいこと「最大文字数チェック」が「長すぎないか?」を見るのに対して、「最小文字数チェック」はこうです。入力された文字列が「○文字以上あるか?」をチェックして、短すぎたらエラ...
PHP

PHP Tips | 文字列処理:文字数・切り出し – 最大文字数チェック

「最大文字数チェック」がやりたいことやりたいことはシンプルです。入力された文字列が「○文字以内かどうか」をチェックして、長すぎたらエラーにしたい。例えば、ニックネームは 30文字まで自己紹介は 200...
PHP

PHP Tips | 文字列処理:文字数・切り出し – バイト数で切り出し

「バイト数で切り出し」とは何をしているのかここまでずっと「文字数」で安全に扱う話をしてきましたが、今回のテーマはあえて逆方向——「バイト数で切り出す」です。文字数ではなく、「何バイトまで」という単位で...
PHP

PHP Tips | 文字列処理:文字数・切り出し – 指定開始位置から安全に部分取得

このユーティリティがやりたいことの全体像「指定開始位置から安全に部分取得」というのは、ざっくり言うとこういうことです。文字列の「何文字目から」「何文字分」を取り出したい。しかも、日本語(マルチバイト)...
PHP

PHP Tips | 文字列処理:文字数・切り出し – 単語単位で省略

「単語単位で省略」がやりたいことこれまでの「指定文字数で省略」は、「文字数」でバッサリ切るものでした。今回の「単語単位で省略」は、もう一歩だけ気を遣った省略です。文章を途中でブツッと切るのではなく、「...
PHP

PHP Tips | 文字列処理:文字数・切り出し – 指定文字数で省略(省略記号なし)

「指定文字数で省略(省略記号なし)」がやりたいことここでやりたいのは、とてもシンプルです。文字列が長すぎるときに、「指定した文字数まで」でバッサリ切る。末尾に「…」などの省略記号は付けない。例えば、タ...
PHP

PHP Tips | 文字列処理:文字数・切り出し – 指定文字数で省略(…付き)

「指定文字数で省略(…付き)」がやりたいことやりたいことはシンプルです。文字列が長すぎるときに、「指定した文字数まで」で切り、末尾に「…(三点リーダー)」を付けて短く見せる。例えば、タイトルがこうだと...
PHP

PHP Tips | 文字列処理:文字数・切り出し – マルチバイト安全な文字数取得

「マルチバイト安全な文字数取得」とは何かまず前提として、PHP の文字列は「バイト列」です。strlen() は「文字数」ではなく「バイト数」を返します。ここが最初の落とし穴です。UTF-8 で日本語...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – ユーザー定義型ガード

ゴール:「ユーザー定義型ガード」を“自分で設計して使いこなせる”ようになるここで目指したいのは、「ユーザー定義型ガードって何?」から一歩進んで、「いつ・どう設計するとコードが楽になるか」までイメージで...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 型ガード関数の設計

まず「型ガードって何を守ってくれるのか」をイメージする型ガード関数は一言でいうと、「この値は〇〇型だよ、と TypeScript に“証拠付きで教える”ための関数」です。普通の if だと、TypeS...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 条件分岐による戻り値型変化

ゴール:「if や switch で分岐した結果、戻り値の型がどう変わるか」を意識して設計できるようになる関数の戻り値って、「常に同じ型」だけじゃなくて、条件によって“中身の型”が変わることがあります...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – エラーを投げる関数の型

まず「エラーを投げる関数」を2種類に分けて考えるいきなり型の話に行く前に、役割で分けます。エラーを投げる関数には、大きく言って次の2パターンがあります。1つ目は、「必ずエラーを投げて、絶対に呼び出し元...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – neverを返す関数設計

ゴール:「never を返す関数」が“設計上どういう意味を持つか”を理解するnever は、初心者から見ると一番「意味不明な型」に見えます。でも、関数設計の文脈では、「ここには絶対に到達しない」「この...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – void戻り値の設計判断

ゴール:「とりあえず void」から卒業するまず一番大事なことを先に言います。多くの初心者は、「戻り値を使わないから、とりあえず void」と書きがちです。でも、本当にそうしていい場面と、「void ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – bind / call / apply と型

ゴール:bind / call / apply を「型の目」で理解するここで目指したいのは、「bind / call / apply が“何をするメソッドか”」だけでなく、「TypeScript 的に...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – thisパラメータの明示

「thisパラメータを明示する」とは何をしているのかまず言葉の整理からいきます。TypeScript でいう「thisパラメータ」とは、関数の一番最初の引数の位置にだけ書ける、特別な仮引数のことです。...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – this を使う関数の型指定

まず「this を型として扱う」という発想からJavaScript ではおなじみの this ですが、TypeScript では 「this そのものにも型を付けられる」 というのがポイントです。fu...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数を返す関数の型

「関数を返す関数」って、まず何者?いきなり型の話に行く前に、イメージを固めましょう。function createAdder(a: number) { return (b: number) => a ...
C#

C# Tips | ファイル・ディレクトリ操作:一時ファイル作成

はじめに 一時ファイルは「使い捨ての作業机」業務システムを書いていると、「ちょっとだけデータを置いておきたい」場面がよく出てきます。たとえば、大きなファイルを分割して処理するときの中間結果、ダウンロー...
C#

C# Tips | ファイル・ディレクトリ操作:パス正規化

はじめに 「パス正規化」って何をすること?「パス正規化」という言葉、ちょっと堅いですよね。でもやっていることはシンプルで、「バラバラな書き方のパスを、同じルールで整える」ことです。同じ場所を指している...
C#

C# Tips | ファイル・ディレクトリ操作:パス結合

はじめに なぜ「パス結合」が業務でめちゃくちゃ大事なのかファイルやディレクトリを扱うコードを書くとき、ほぼ必ず出てくるのが「パスの結合」です。たとえば「ログフォルダのパス」と「ファイル名」からフルパス...
C#

C# Tips | ファイル・ディレクトリ操作:絶対パス→相対パス

はじめに なぜ「絶対パス→相対パス」が必要になるのかさっきまでは「相対パス → 絶対パス」をやりましたが、現場ではその逆、「絶対パス → 相対パス」に変換したい場面もかなり多いです。例えばこんなケース...
C#

C# Tips | ファイル・ディレクトリ操作:相対パス→絶対パス

はじめに なぜ「相対パス→絶対パス」が業務で重要なのか業務システムでは、設定ファイルやログ出力先などを「相対パス」で書くことがよくあります。たとえば logs\app.log や ..\config\...
C#

C# Tips | ファイル・ディレクトリ操作:ディレクトリ一覧取得

はじめに なぜ「ディレクトリ一覧取得」が業務で重要なのか業務システムでは、ファイルだけでなく「フォルダ(ディレクトリ)」を扱う場面が非常に多いです。たとえば次のようなケースです。日付ごとにフォルダが作...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル一覧取得

はじめに なぜ「ファイル一覧取得」が業務の入り口になるのか業務システムでファイルを扱う処理は、ほぼ必ず「まず対象フォルダのファイル一覧を取る」ところから始まります。たとえば「このフォルダの CSV を...
C#

C# Tips | ファイル・ディレクトリ操作:指定拡張子検索

はじめに なぜ「指定拡張子検索」が業務で重要なのか業務システムでは、「.csv だけ集めてバッチ処理したい」「.log だけを圧縮したい」「.bak だけをバックアップフォルダに移動したい」といった、...
C#

C# Tips | ファイル・ディレクトリ操作:空フォルダ削除

はじめに なぜ「空フォルダ削除」が業務で役に立つのか業務システムでファイルを扱っていると、ログやバックアップ、インポート・エクスポート用の一時フォルダなどがどんどん増えていきます。ファイルは削除してい...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル属性変更

はじめに 「ファイル属性変更」ができると何が嬉しいのか業務でファイルを扱っていると、こんなことが起きます。「ユーザーがコピーしてきたファイルが読み取り専用で、削除できない」「ログファイルを隠しファイル...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル読み取り専用判定

はじめに なぜ「読み取り専用判定」が業務で効いてくるのか業務システムでファイルを扱うとき、「このファイル、書き込んでいいのか?」「上書きしようとしたら失敗した」「削除できないと思ったら読み取り専用だっ...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル更新日時取得

はじめに なぜ「ファイル更新日時取得」が業務で重要なのか業務システムでは、「前回処理してから更新されたファイルだけを再処理したい」「一定期間更新されていないログを削除したい」「外部システムからのファイ...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル作成日時取得

はじめに なぜ「ファイル作成日時取得」が業務で重要なのか業務システムでは、「一番新しいファイルだけ処理したい」「一定期間より古いファイルを削除したい」「いつ受信したファイルなのかをログに残したい」とい...
C#

C# Tips | ファイル・ディレクトリ操作:ファイルサイズ取得

はじめに なぜ「ファイルサイズ取得」が業務で重要なのか業務システムでは、「受信したファイルが想定サイズ以上かチェックする」「空ファイル(サイズ 0)をエラーとして弾く」「バックアップやログの容量を集計...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル名一括変更

はじめに なぜ「ファイル名一括変更」が業務で効くのか業務システムや日々の運用では、「毎日出力されるファイルに連番を振りたい」「人が付けたバラバラな名前を、システムで扱いやすい規則的な名前に揃えたい」「...
Java

Java Tips | 基本ユーティリティ:パス正規化

パス正規化は「同じ場所を同じ文字列で表す」ための技ファイルパスって、同じ場所を指しているのに書き方がバラバラになりがちです。logs/app/../app/current.log と logs/app...
Java

Java Tips | 基本ユーティリティ:再帰削除

再帰削除は「作業領域を丸ごと片付ける」ための技業務システムでは、「ジョブごとに作った作業ディレクトリを最後に丸ごと消したい」「テストで作った一式を一発で片付けたい」といった、“ディレクトリ配下を全部削...
Java

Java Tips | 基本ユーティリティ:ファイル削除

ファイル削除は「後片付けをちゃんとやる」ための技業務システムは、動けば終わりではなく「後片付け」まで含めて仕事です。一時ファイル、古いバックアップ、失敗した処理の中途半端な成果物など、放っておくとディ...
Java

Java Tips | 基本ユーティリティ:ファイルコピー

ファイルコピーは「安全にデータを移動・退避させる」ための技業務システムでは、「インポート用ファイルをバックアップしてから処理したい」「出力結果を別ディレクトリに退避したい」「テンプレートを所定の場所に...
Java

Java Tips | 基本ユーティリティ:一時ファイル作成

一時ファイル作成は「一時的な作業領域を安全に借りる」技業務システムでは、「大きなデータを一度ファイルに落としてから処理したい」「ZIP を展開して中身を検査したい」「外部システムに渡す前に一時的にファ...
Java

Java Tips | 基本ユーティリティ:ディレクトリ作成

ディレクトリ作成は「ログや一時ファイルの置き場を整える」ための技業務システムでは、ログ出力先、インポートファイル置き場、エクスポート結果の出力先、一時ファイルの作業ディレクトリなど、「ディレクトリが存...
Java

Java Tips | 基本ユーティリティ:ファイル存在確認

ファイル存在確認は「前提条件をちゃんと確かめてから動く」ための技業務システムでは、「設定ファイルがある前提で起動する」「インポート用の CSV が届いている前提でバッチを回す」「テンプレートファイルが...
Java

Java Tips | 基本ユーティリティ:CPUコア数取得

CPUコア数取得は「どこまで並列化してよいか」を知るための技マルチスレッドや並列処理を書くとき、「スレッドを何本まで増やしていいのか」はとても重要です。CPU が 2 コアしかないのに 100 スレッ...
Java

Java Tips | 基本ユーティリティ:メモリ使用量取得

メモリ使用量取得は「今どれくらい余裕があるか」を知るための技業務システムが重くなったり、OutOfMemoryError で落ちたりするとき、「その瞬間にどれくらいメモリを使っていたのか」が分かるかど...
Java

Java Tips | 基本ユーティリティ:Javaバージョン判定

Javaバージョン判定は「使っていい機能の境界線を知る」ための技業務システムでは、「このコードは Java 8 でも動かしたい」「Java 11 以上なら新しい API を使いたい」「古いランタイムで...
Java

Java Tips | 基本ユーティリティ:OS判定

OS判定は「環境依存コードを一箇所に閉じ込める」技Java は基本的にマルチプラットフォームですが、実務ではどうしても OS ごとに挙動を変えたい場面が出てきます。例えば「Windows だけパスの区...
Java

Java Tips | 基本ユーティリティ:環境変数取得

環境変数取得は「インフラ側の設定をアプリから読む」技業務システムでは、「本番とステージングで接続先を変えたい」「パスワードや API キーをコードに書きたくない」「コンテナやクラウドの設定をそのまま使...
Java

Java Tips | 基本ユーティリティ:システムプロパティ取得

システムプロパティ取得は「実行環境の設定をコードから読む」技業務システムでは、「本番と検証で挙動を変えたい」「OS や Java のバージョンをログに出したい」「起動オプションで渡した値を読みたい」と...
Java

Java Tips | 基本ユーティリティ:ログフォーマット

ログフォーマットは「あとから読めるログ」を作るための設計ログは「その瞬間に何が起きていたか」を後から再現するための記録です。でも、ただ System.out.println("エラーしました") と出...
Java

Java Tips | 基本ユーティリティ:スタックトレース文字列化

スタックトレース文字列化は「エラーの足跡をテキストとして残す」技例外が起きたとき、Java は「スタックトレース」という“足跡”を持っています。これは「どのメソッドからどのメソッドへ呼ばれて、最終的に...
Java

Java Tips | 基本ユーティリティ:例外ラップ

例外ラップは「生の例外をそのまま外に漏らさない」ための技業務システムを書いていると、標準ライブラリや外部ライブラリから、いろいろな種類の例外が飛んできます。SQLException, IOExcept...
Java

Java Tips | 基本ユーティリティ:タイムアウト制御

タイムアウト制御は「いつまでも待たない」ための安全装置業務システムで一番怖いのは、「固まっているのに気づかない」状態です。外部 API が返ってこない、DB が詰まっている、重い処理が終わらない──こ...
Java

Java Tips | 基本ユーティリティ:再試行処理

再試行処理は「一時的な失敗に負けない仕組み」業務システムでは、外部 API、DB、メッセージキュー、ファイル I/O など、「たまに失敗するけれど、少し待ってもう一度やれば成功する」処理がたくさんあり...
Java

Java Tips | 基本ユーティリティ:スリープユーティリティ

スリープユーティリティは「意図的に待つ」を安全にラップする道具業務システムでも、「少し待ってから再試行したい」「ポーリング間隔を空けたい」「テストで時間経過をシミュレートしたい」といった場面で「スリー...
Java

Java Tips | 基本ユーティリティ:タイムゾーン変換

タイムゾーン変換は「同じ瞬間を別の国の時計で見る」ことタイムゾーン変換は、「ある瞬間」を、日本時間で見たり、UTC で見たり、ニューヨーク時間で見たりする作業です。同じ「瞬間」なのに、国や地域によって...
PHP

PHP Tips | 文字列処理:基本操作 – <br> を改行に戻す

「<br> を改行に戻す」とは何をしているのか前回は「改行を <br> に変換」でした。今回はその逆、つまりHTML の <br> を、テキストの「改行文字(\n など)」に戻すという処理です。例えば...
PHP

PHP Tips | 文字列処理:基本操作 – 改行を <br> に変換

「改行を <br> に変換」とは何をしているのかテキストエリアなどから受け取った文字列には、ユーザーが入力した「改行」が含まれています。でも、そのまま HTML に出力すると、ブラウザは改行文字(\n...
PHP

PHP Tips | 文字列処理:基本操作 – 指定タグのみ許可して HTML サニタイズ

このユーティリティがやりたいことの全体像「指定タグのみ許可して HTML サニタイズ」というのは、ざっくり言うとこういうことです。ユーザー入力などの HTML をそのまま表示すると危ないので、危険なタ...
PHP

PHP Tips | 文字列処理:基本操作 – HTML タグ除去

「HTML タグ除去」とは何かPHP で文字列を扱っていると、<p>, <a>, <div> のような「HTML タグ」が含まれていることがあります。ブラウザで表示する分には問題ありませんが、「純粋な...
PHP

PHP Tips | 文字列処理:基本操作 – 改行コードを CRLF に統一

「改行コードを CRLF に統一」とは何かPHP で複数行の文字列やテキストファイルを扱うとき、「改行」が入りますが、その改行の実体は環境によって違います。代表的な改行コードは次の3種類です。LF :...
PHP

PHP Tips | 文字列処理:基本操作 – 改行コードを LF に統一

「改行コードを LF に統一」とは何かPHP で文字列やファイルを扱うとき、「改行」が入っていることはよくあります。でも、実は「改行」と一口に言っても、環境によって使われる「改行コード」が違います。代...
PHP

PHP Tips | 文字列処理:基本操作 – 連続スペースを1つにまとめる

「連続スペースを1つにまとめる」とは何かPHP で文字列を扱っていると、ユーザー入力や外部データの中に「スペースが連続している」状態がよく紛れ込みます。例えば、次のような文字列です。$text = "...
PHP

PHP Tips | 文字列処理:基本操作 – 前後の全角・半角スペース除去

「前後の全角・半角スペース除去」とは何かPHP で文字列を扱うとき、ユーザー入力や外部データには「余計なスペース」がくっついていることがよくあります。しかも、日本語環境だと「半角スペース」だけでなく「...
PHP

PHP Tips | 文字列処理:基本操作 – 空文字を null に変換

空文字を null に変換するってどういうこと?PHP で文字列を扱うときに出てくる代表的な2つの状態が「空文字 ""」と「null」です。前回は「null を空文字に変換」でしたが、今回は逆方向――...
PHP

PHP Tips | 文字列処理:基本操作 – null を空文字に変換

文字列処理の「null を空文字に変換」とは何かPHP で文字列を扱うとき、「null」と「空文字("")」はよく似て見えますが、まったく別物です。初心者のうちは、この違いが原因でバグが出たり、「なん...
C#

C# Tips | ファイル・ディレクトリ操作:拡張子変更

はじめに なぜ「拡張子変更」が業務で役に立つのか業務システムでは、「処理前は .tmp として保存しておき、処理が成功したら .csv にリネームする」「受信したファイルを .dat から .bak ...
C#

C# Tips | ファイル・ディレクトリ操作:再帰的フォルダ削除

はじめに なぜ「再帰的フォルダ削除」は危険で、だからこそ重要なのか業務システムでは、「一時作業フォルダを丸ごと消す」「古いバックアップフォルダをまとめて削除する」「処理失敗時に作業領域をクリーンアップ...
C#

C# Tips | ファイル・ディレクトリ操作:再帰的フォルダコピー

はじめに なぜ「再帰的フォルダコピー」が業務で重要なのか業務システムでは、「あるフォルダ一式を丸ごとバックアップしたい」「テンプレートフォルダをそっくり複製して新しい案件用フォルダを作りたい」「旧サー...
C#

C# Tips | ファイル・ディレクトリ操作:ディレクトリ削除

はじめに なぜ「ディレクトリ削除」は特に慎重さが必要なのか業務システムでは、古いバックアップフォルダを消す、一時作業用フォルダを片付ける、処理に失敗した作業領域をクリーンアップするなど、「フォルダごと...
C#

C# Tips | ファイル・ディレクトリ操作:ディレクトリ作成

はじめに なぜ「ディレクトリ作成」が業務で重要なのか業務システムでは、ログ出力フォルダ、バックアップフォルダ、インポート用フォルダ、エクスポート用フォルダなど、「フォルダが存在していること」を前提にし...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル削除

はじめに なぜ「ファイル削除」は慎重さが必要なのか業務システムでは、古いログを消す、一時ファイルを片付ける、処理に失敗した中間ファイルを削除するなど、「ファイルを消す」処理が必ず出てきます。ただし、コ...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル移動

はじめに なぜ「ファイル移動」が業務で重要なのか業務システムでは、「処理前フォルダから処理済みフォルダへ移動する」「受信フォルダからアーカイブフォルダへ退避する」「一時フォルダから本番フォルダへ本番反...
C#

C# Tips | ファイル・ディレクトリ操作:ファイルコピー

はじめに なぜ「ファイルコピー」が業務で重要なのか業務システムでは、バックアップを取る、別フォルダにエクスポートする、他システム連携用の受け渡しフォルダにコピーする、といった「ファイルを別の場所に複製...
C#

C# Tips | ファイル・ディレクトリ操作:ディレクトリ存在チェック

はじめに なぜ「ディレクトリ存在チェック」が重要なのか業務システムでは、ログ出力フォルダ、バックアップフォルダ、インポート用フォルダ、エクスポート用フォルダなど、「フォルダが存在すること」を前提にした...
C#

C# Tips | ファイル・ディレクトリ操作:ファイル存在チェック

はじめに ファイル「存在チェック」はなぜ大事か業務システムでは、「このファイルがある前提」で処理を書いてしまうと、現場で簡単に事故が起きます。たとえば「毎朝、前日の売上 CSV を読み込むバッチ」が、...
Python

Python | DB・SQL:DB 設計

DB 設計って何?まずはゴールのイメージからDB 設計は、「アプリで扱う情報を、テーブル・カラム・関係に分解して、矛盾なく・拡張しやすく・速く扱える形にする作業」です。言い換えると、「現実の世界(ユー...
Python

Python | DB・SQL:接続プール

接続プールって何?まずはイメージから接続プール(コネクションプール)は、「データベースへの接続を、使い回すための“待機列(プール)”」です。DB への接続は、実はかなり重い処理です。毎回「接続を開く ...
Python

Python | DB・SQL:N+1 問題

N+1 問題って何?まずはざっくりイメージN+1 問題は、「本当は少ない回数のクエリで済むのに、気づかないうちに大量のクエリを投げてしまっている状態」のことです。特に多いのが、1 回目のクエリで「親デ...
Python

Python | DB・SQL:パフォーマンス

「パフォーマンス」って何?まずは感覚からDB・SQL の「パフォーマンス」は、ざっくり言うと「どれくらい速く・無駄なく・安定して動くか」です。同じ結果を出すクエリでも、1 秒で終わる書き方1 分かかる...
Python

Python | DB・SQL:バルク処理

バルク処理って何?まずはイメージからバルク処理(バルク INSERT / バルク UPDATE など)は、「大量のデータをまとめて一気に処理する」やり方のことです。1 行ずつチマチマ INSERT す...
Python

Python | DB・SQL:migration

migration って何?まずはイメージからmigration(マイグレーション)は、「データベースの“形”(テーブルやカラムの構造)を、コードでバージョン管理して、少しずつ進化させていく仕組み」で...
Python

Python | DB・SQL:relationship

relationship って何?まずはイメージからSQLAlchemy の relationship は、「テーブル同士のつながり(リレーション)を、Python のオブジェクト同士のつながりとして...
Python

Python | DB・SQL:join

join って何?まずはイメージからJOIN は、「別々のテーブルに分かれている情報を、くっつけて一つの表として見る」ための仕組みです。現実のアプリでは、ユーザー情報と注文情報、商品情報とカテゴリ情報...
Python

Python | DB・SQL:CRUD

CRUD って何?まずは全体像からCRUD(クラッド)は、データベース操作の基本 4 セットの頭文字です。Create(作る)、Read(読む)、Update(更新する)、Delete(削除する)。ア...
Python

Python | DB・SQL:セッション

セッションって何?まずはざっくりイメージ「セッション」は、データベースとやり取りするときの「ひとまとまりの会話」のようなものです。Python から見ると、あるタイミングで DB との“窓口”を開くそ...
Python

Python | DB・SQL:ORM モデル

ORM モデルって何?まずはイメージから「ORM モデル」は、データベースのテーブルを「Python のクラスとして表現したもの」です。ORM は Object Relational Mapping(...
Python

Python | DB・SQL:SQLAlchemy 基本

SQLAlchemy って何者?ざっくりイメージSQLAlchemy は、「Python からデータベースを触るための超定番ライブラリ」です。一言でいうと、SQL を直接書く代わりに、Python の...
Python

Python | DB・SQL:SQLite

SQLite ってそもそも何者?SQLite(エスキューライト)は、「組み込み型」のリレーショナルデータベースです。PostgreSQL や MySQL みたいに「サーバーを立てて接続するタイプ」では...
Python

Python | DB・SQL:PostgreSQL

PostgreSQL ってそもそも何者?PostgreSQL(ポストグレスキューエル)は、オープンソースのリレーショナルデータベース管理システム(RDBMS)です。「無料で使えるのに、企業の本番システ...
Python

Python | DB・SQL:ACID

概要(ACID は「ちゃんとしたトランザクション」の 4 つの約束)ACID は、データベースのトランザクションが「ちゃんとしている」ことを表す 4 つの性質の頭文字です。Atomicity(原子性)...
Python

Python | DB・SQL:トランザクション

概要(トランザクションは「一連の処理を、成功か失敗かで丸ごと扱う仕組み」)トランザクションは、データベースに対して行う「一連の処理」を、「全部まとめて成功」か「全部なかったことにする(失敗)」かのどち...
Python

Python | DB・SQL:インデックス

概要(インデックスは「データベースの辞書の“索引”」)インデックス(index)は、データベースにとっての「本の索引」です。本の後ろにある五十音順の索引があると、目的の用語のページを一瞬で開けますよね...
Python

Python | DB・SQL:サブクエリ

概要(サブクエリ=「SQL の中にもう一個 SQL を入れる」)サブクエリは、「SQL 文の中に、さらに別の SQL 文(小さな SELECT)を入れるテクニック」です。イメージとしては、一回クエリを...
Python

Python | DB・SQL:JOIN

概要(JOIN は「バラバラの表をつないで、1 枚の結果にする」)JOIN は、SQL の中でも「一段レベルが上がった感じ」がするところですが、本質はとてもシンプルで、「関連する 2 つ以上のテーブル...
Python

Python | DB・SQL:HAVING

概要(HAVING は「集計結果に対する WHERE」だと思うと分かりやすい)HAVING は、SQL の中でも「ちょっとだけ上級者向け」に見える句ですが、本質はシンプルで、「GROUP BY でグル...
Python

Python | DB・SQL:GROUP BY

概要(GROUP BY は「グループごとにまとめて計算する」ためのスイッチ)GROUP BY は、SQL で「グループごとに集計する」ための仕組みです。「ユーザーごとの合計金額」「日付ごとの件数」「科...
Python

Python | DB・SQL:ORDER

概要(ORDER BY は「結果の並び順を決めるスイッチ」)SQL の ORDER BY 句は、SELECT で取り出した結果を「どんな順番で並べるか」を指定するための仕組みです。「年齢の若い順に」「...
Python

Python | DB・SQL:WHERE

概要(WHERE は「どの行だけを相手にするか」を決めるフィルター)SQL の WHERE 句は、テーブルの中から「どの行だけを対象にするか」を決めるフィルターです。SELECT だけでなく、UPDA...
Python

Python | DB・SQL:SELECT

概要(SELECT は「欲しいデータだけを取り出すコマンド」)SQL の SELECT 文は、データベースから「欲しいデータだけ」を取り出すためのコマンドです。Excel の表から「この列だけ見たい」...
Python

Python | DB・SQL:SQL 基本

概要(SQL は「データベースに話しかける言語」)SQL(エスキューエル)は、データベースに対して「これして」「あれして」と命令を出すための言語です。Excel の表をもっと厳密にしたものが「テーブル...
JavaScript

JavaScript | 1 日 120 分 × 7 日アプリ学習:タイマー & ストップウォッチ

1日目のゴールと今日やること中級編の 1 日目は「タイマー & ストップウォッチの基礎ロジックを完全に理解する」ことがテーマです。今日扱うキーワードは次の 6 つ。setTimeoutsetInter...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – 処理時間計測テンプレ

ねらい:どのマクロも「どこに何秒かかっているか」を一発で見える化する「このマクロ、なんか遅いんだけど、どこが重いのか分からない」「改善したつもりだけど、本当に速くなったのか数字で確認できない」ここを感...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – バッチ処理テンプレ

ねらい:複数の処理を「一括で・安全に・同じ型で」流すバッチ処理テンプレ「このマクロを実行して、そのあとにあのマクロを実行して…」「毎朝、同じ順番で“取り込み→変換→JOIN→集計→出力”をやっている」...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – 処理ログ自動生成

ねらい:どのマクロにも「同じ形の処理ログ」を自動で残す「このマクロ、ちゃんと最後まで動いたのか?」「どのシートを何件処理したのか?」「エラーが出たのは何時何分で、どの処理中だったのか?」こういう“あと...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – 設定シート方式テンプレ

ねらい:「設定シート方式」という“考え方そのもの”をテンプレ化するここまで、JOIN・集計・差分・変換…と、いろんな「ノーコード系ツール」を見てきましたよね。実は全部、同じ“型”でできています。共通し...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – ノーコード変換ツール

ねらい:「置換・整形・コード変換」を“設定だけ”で回すノーコード変換エンジン「この列の全角を半角にしたい」「このコードを名称に変えたい」「この文字列の一部を置き換えたい」「日付の書式を統一したい」こう...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – ノーコード差分ツール

ねらい:設定シートを書くだけで「差分チェック」が回る世界にする「旧データと新データの差分を取りたい」「マスタの更新内容を確認したい」「システムAの出力とシステムBの出力が本当に同じか確かめたい」こうい...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – ノーコード集計ツール

ねらい:集計ロジックは「設定シート」に閉じ込めて、コードは一切いじらない毎回「この列でグループ化して、この列を合計して…」という集計マクロを書き換えていくと、集計パターンが増えるたびにコードが増え、誰...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – 完全ノーコードのJOINツール

ねらい:VBAコードは一切触らず「設定だけ」でJOINできるようにする「明細にマスタをくっつけたい」「別システムのコードを名称に変えたい」こういう“JOIN作業”を、毎回 VLOOKUP や XLOO...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – マッピング設定だけで動く高速ツール

ねらい:コードをいじらず「マッピング表」だけで動く汎用高速ツール毎回「この列をあっちの列に」「この値はこう変換して」と、VBAの中身を書き換えていませんか。それをやっている限り、ツールは作る人にしか触...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – 拡張JOIN(1対多)

ねらい:VLOOKUPではできない「1対多JOIN」をVBAで“型”にするふつうのJOIN(VLOOKUP的なもの)は「1対1」です。顧客コード → 顧客名、商品コード → 商品名、のように「1つのキ...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – 3段JOINテンプレ

ねらい:明細に「3つのマスタ」を段階的にくっつける“3段JOIN”の型2段JOINまではよくやっていると思いますが、実務だとこういうケースが出てきます。売上明細に「商品名」を付けたい。商品から「カテゴ...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – 2段JOINテンプレ

ねらい:明細に「マスタA→マスタB」を段階的にくっつける“2段JOIN”の型を作る「明細に部門名を付けて、さらにその部門から所属長名を付けたい」「売上明細に商品マスタをJOINして、さらにカテゴリマス...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – 一括変換ツール

一括変換ツールのねらい:大量データを「一気に整形・変換」する“作業自動化の核”一括変換ツールは、実務で最も“時短効果が高い”テンプレのひとつです。現場では、こんな作業が毎日のように発生します。全角 →...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – マスタ更新ツール

ねらい:マスタを「手入力」から「差分反映の型」に変えるマスタ更新って、本当は一番慎重にやりたいところなのに、現場ではこうなりがちです。新しいCSVを開く古いマスタを開くVLOOKUPやフィルタで差分を...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – CSV差分ツール

ねらい:2つのCSVの「追加・削除・変更」を一瞬で洗い出すCSV差分ツールのゴールは、「前回のCSV」と「今回のCSV」を比べて、どの行が追加され、どの行が削除され、どの行の中身が変わったかを機械的に...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – 名寄せ高速ツール

ねらい:ぐちゃぐちゃな「同じ顧客」を、機械的に“同一人物グループ”にまとめる名寄せは、「同じ人・同じ会社なのに、表記ゆれや入力ゆれでバラバラに登録されているレコードをまとめる」作業です。顧客マスタ、取...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – 重複検査ツール

ねらい:人の目では見落とす「重複」を、VBAで一網打尽にする重複検査は、地味だけど実務ではかなり重要な仕事です。顧客マスタの二重登録、案件IDの重複、メールアドレスの重複、請求書番号の重複…。どれも「...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – 採番自動ツール

ねらい:番号ルールを「人の勘」から「VBAの型」に変える現場で一番モメやすいのが「番号」です。伝票番号案件番号申請番号問い合わせIDこれを人が手入力で振っていると、同じ番号を二重に使ってしまう飛び番・...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – 監査ログツール

ねらい:Excelマクロの「誰が・いつ・何をしたか」を残す“監査ログ”の型を作るマクロが便利になればなるほど、あとからこういうことを聞かれる場面が増えます。誰がこのファイルをいつ更新したのか。このボタ...
Excel VBA逆引き

Excel VBA 逆引き集 | 実務テンプレ完全版(超再利用部品) – エクセル方眼自動整形

ねらい:どんなシートでも一発で「方眼紙レイアウト」にそろえる「エクセル方眼」は好き嫌いが分かれますが、社内の帳票や申請書が全部エクセル方眼で作られている現場も多いですよね。問題は、毎回「列幅を 1.2...
JavaScript

JavaScript | 1 日 90 分 × 7 日アプリ学習:ミニ総合アプリ(初級編)

1日目のゴールと今日やること1日目のテーマは「入力 → 一覧表示 → 削除 → 条件分岐までを一つのミニアプリでつなげる」ことです。今日やるのは、超シンプルだけど“アプリっぽさ”がちゃんとあるもの:テ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数を引数に取る設計

「関数を引数に取る」とは、責任を“相手に渡す”設計まずイメージからいきます。function doTwice(fn: () => void) { fn(); fn();}doTwice(() => {...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数型interfaceの書き方

前提:関数にも「interface で形を決める」という発想があるまず押さえたいのは、「関数の型は type だけじゃなく、interface でも書ける」ということです。type FnByType ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数型エイリアス設計

まず「関数型エイリアス」とは何かをはっきりさせる関数型エイリアスは、かんたんに言うと「よく使う関数の“形”に名前をつけること」です。type StringToNumber = (value: stri...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – map / filter / reduce 用関数型

ゴール:map / filter / reduce の「関数型」を言葉で説明できるようになるまず目標からはっきりさせます。map / filter / reduce は、「配列に対して“どう変換するか...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 高階関数の型付け

まず「高階関数」をちゃんと定義しておく高階関数(higher-order function)は、ざっくり言うと「関数を受け取る」か「関数を返す」か、あるいはその両方をする関数のことです。functio...
Python

Python | Web フレームワーク:バックエンド設計

概要(バックエンド設計=「見えないところの“筋肉と血管”を設計すること」)バックエンド設計は、「画面に見えないところで、アプリをちゃんと動かすための仕組みをどう組み立てるか」を考える作業です。どんなデ...
Python

Python | Web フレームワーク:API 実践

概要(API 実践=「画面なしでデータをやり取りする Web アプリ」)API 実践は、「ブラウザに HTML を返す」のではなく、「プログラム同士がデータをやり取りする窓口」を作る練習です。Djan...
Python

Python | Web フレームワーク:Web アプリ実践

概要(「Web アプリ実践」は“全部をつなげて動かす”フェーズ)ここまでで、Django のモデル・ビュー・URL・テンプレート・認証・セッション・設定・分割構造など、部品ごとの話をかなり見てきました...
Python

Python | Web フレームワーク:Django の分割構造

概要(Django の分割構造=「大きな家を部屋ごとに区切る設計」)Django の「分割構造」は、一言でいうと「プロジェクト全体を、役割ごと・機能ごとにきれいに分ける仕組み」です。一番大きな単位が「...
Python

Python | Web フレームワーク:Django 設定

概要(Django 設定=「プロジェクト全体のルールブック」)Django の設定(settings.py)は、「このプロジェクトは、どんなルールで動くのか」を一箇所にまとめたファイルです。どのアプリ...
Python

Python | Web フレームワーク:Django セッション

概要(Django セッション=「ブラウザごとの“一時的な記憶領域”」)Django のセッションは、「このブラウザは、前回どんな状態だったか」をサーバー側に覚えておくための仕組みです。ログイン状態カ...
Python

Python | Web フレームワーク:Django 認証

概要(Django 認証=「ユーザーを識別して、ログイン状態を管理する仕組み」)Django 認証は、「このリクエストを送ってきたのは誰か」「その人はログイン済みか」「その人にこの操作をさせてよいか」...
Python

Python | Web フレームワーク:Django migration

概要(Django migration=「モデルの変更履歴を DB に安全に反映する仕組み」)Django の migration(マイグレーション)は、一言でいうと、「models.py の変更を、...
Python

Python | Web フレームワーク:Django ORM

概要(Django ORM=「SQL を書かずに DB を触るための翻訳レイヤー」)Django ORM は、「データベース(SQL の世界)」と「Python オブジェクト(クラスとインスタンスの世...
Python

Python | Web フレームワーク:URLconf

概要(URLconf=「URL とビューを結びつける交通整理係」)Django の URLconf(URL configuration)は、「どの URL にアクセスされたときに、どのビューを呼ぶか」...
Java

Java | Java 詳細・モダン文法:言語仕様詳細 – マルチ catch

マルチ catch を一言でいうとマルチ catch は、「複数の例外型を、同じ 1 つの catch ブロックでまとめて処理できる構文」です。catch (IOException | SQLExce...
Java

Java | Java 詳細・モダン文法:言語仕様詳細 – ntry-with-resources 拡張

まず「元祖」try-with-resources をおさらいするtry-with-resources は、「使い終わったら必ず close() しなきゃいけないリソース(ファイル、ソケット、DB 接続...
Java

Java | Java 詳細・モダン文法:言語仕様詳細 – null 許容と switch

なぜ「null と switch」をちゃんと考えないといけないのかswitch は「値に応じて分岐する」構文ですが、その値が null になりうるかどうかを意識していないと、実行時にいきなり Null...
Java

Java | Java 詳細・モダン文法:言語仕様詳細 – instanceof の進化

instanceof の「進化」をざっくり俯瞰するinstanceof は、もともと「あるオブジェクトが、ある型のインスタンスかどうかを調べるための演算子」としてスタートしました。昔は「型チェック」と...
Java

Java | Java 詳細・モダン文法:言語仕様詳細 – パターンマッチング(instanceof)

パターンマッチング付き instanceof を一言でいうと「instanceof で型を調べたあと、すぐ下でキャストして変数に代入する」――この“二度書き”をまとめて一発で書けるようにした構文が、パ...
Java

Java | Java 詳細・モダン文法:言語仕様詳細 – sealed class

sealed class を一言でいうとsealed クラスは「このクラスを継承してよい“サブクラスの種類”を、あらかじめ限定する仕組み」です。継承を完全に禁止する final と違って、「継承は許す...
Java

Java | Java 詳細・モダン文法:言語仕様詳細 – レコード(record)

record を一言でいうとrecord は「フィールドを持つだけの“データ用クラス”を、最小限のコードで定義するための仕組み」です。equals / hashCode / toString / コン...
Java

Java | Java 詳細・モダン文法:言語仕様詳細 – テキストブロック

テキストブロックを一言でいうとテキストブロックは、"""(ダブルクォート3つ)で囲んで「複数行の文字列を、そのままの見た目で書ける」新しい文字列リテラルです(Java 15 以降で正式導入)。今までの...
Java

Java | Java 詳細・モダン文法:言語仕様詳細 – yield

yield を一言でいうとyield は、switch「式」の中で「この case ブロックから“この値を返す”」とコンパイラに伝えるためのキーワードです。return が「メソッドから値を返す」のに...
Java

Java | Java 詳細・モダン文法:言語仕様詳細 – switch 式(Java 14+)

switch 式とは何か(Java 14 以降の新しい switch)Java 14 以降では、switch が「文(statement)」だけでなく「式(expression)」としても使えるように...
Java

Java | Java 詳細・モダン文法:言語仕様詳細 – var(ローカル変数型推論)

var を一言でいうとvar は「型を書かなくても、右辺からコンパイラが型を推論してくれるローカル変数宣言」のためのキーワードです。「型がなくなる」のではなく、「型を書く手間を省く」だけで、コンパイル...
JavaScript

JavaScript | ES6+ 文法:その他の ES6+ 機能 – ES 仕様の更新追跡方法

何を追えばいいのか(ゴールのイメージ)まず、「ES 仕様の更新を追う」と聞くと、毎年の ECMAScript 版(ES2020, ES2021…)その中に入る新機能(Optional chaining...
JavaScript

JavaScript | ES6+ 文法:その他の ES6+ 機能 – Intl API

Intl API とは何か(まずイメージから)Intl(Internationalization)は、「言語や国ごとのルールに合わせて、数値・通貨・日付・文字列などをキレイに表示するための標準 API...
JavaScript

JavaScript | ES6+ 文法:その他の ES6+ 機能 – Reflect

Reflect とは何か(まずイメージから)Reflect は ES6 で追加された、「オブジェクトに対する基本操作を、“関数の形”でまとめて持っている道具箱」 です。これまでバラバラに存在していたプ...
JavaScript

JavaScript | ES6+ 文法:その他の ES6+ 機能 – Proxy

Proxy とは何か(まずイメージから)Proxy は、「あるオブジェクトの前に立って、そのオブジェクトへの操作を横取り・監視・カスタマイズできる“番人”」のような仕組みです。普通はこうです。cons...
JavaScript

JavaScript | ES6+ 文法:その他の ES6+ 機能 – for…of の内部

for...of の「見た目」と「中身」は別物だと思ってみるfor...of は、表面上はとてもシンプルです。const arr = [10, 20, 30];for (const value of ...
JavaScript

JavaScript | ES6+ 文法:その他の ES6+ 機能 – Generator

Generator とは何か(まずイメージから)Generator(ジェネレータ)は、「少しずつ値を返しながら、一時停止・再開できる特別な関数」 です。普通の関数は、一気に最後まで実行されて「結果はこ...
JavaScript

JavaScript | ES6+ 文法:その他の ES6+ 機能 – Iterator

Iterator とは何か(まずイメージから)Iterator(イテレータ)は、「次の値をください」「もう終わりです」を順番に教えてくれる“値の自動販売機”のような仕組み です。自販機にコインを入れる...
JavaScript

JavaScript | ES6+ 文法:その他の ES6+ 機能 – Symbol

Symbol とは何か(まずイメージから)Symbol は、ES6 で追加された 「絶対にかぶらない“名前札”のような値」 です。string や number と同じ「プリミティブ型」の一種ですが、...
JavaScript

JavaScript | ES6+ 文法:その他の ES6+ 機能 – Nullish coalescing

Nullish coalescing とは何か(まずイメージから)Nullish coalescing(ヌリッシュ・コアレスシング)は?? という演算子で書く、「値が null または undefin...
JavaScript

JavaScript | ES6+ 文法:その他の ES6+ 機能 – Optional chaining

Optional chaining とは何か(まずイメージから)Optional chaining(オプショナルチェイニング)は?. という記号で書く、「存在しないかもしれないプロパティに安全にアクセ...
Next.js

Next.jsで学ぶReact講座 | Reactの基本操作 – 入力した文字をそのまま画面にリアルタイム表示するフォーム

このテーマのゴールここで目指すのは、「入力欄に打ち込んだ文字が、そのままリアルタイムで画面に表示されるコンポーネント」を自分で作れるようになることです。これは一見シンプルですが、React でフォーム...
Next.js

Next.jsで学ぶReact講座 | Reactの基本操作 – ボタンを押すと「表示/非表示」が切り替わるテキスト

このテーマのゴールここで身につけたいのは、「ボタンを押すとテキストが表示されたり消えたりする」コンポーネントを自分で作れるようになることです。この小さな動きの中に、React の重要ポイントがぎゅっと...
Next.js

Next.jsで学ぶReact講座 | Reactの基本操作 – ボタンを押すと増えるカウンター

このテーマのゴールここでやりたいのは、「ボタンを押すと数字が増える」カウンターコンポーネントを通して、React の state とイベント処理の超基本を体で覚えることです。画面に数字が表示されていて...
Java

Java | Java 詳細・モダン文法:日付・時刻 API – 日付計算の注意点

日付計算が「思ったより難しい」理由日付計算は、一見「足し算・引き算だけ」に見えますが、実際には月末の長さの違い、うるう年、タイムゾーン、夏時間(DST)、日付の境界の扱いなど、落とし穴だらけです。ja...
Java

Java | Java 詳細・モダン文法:日付・時刻 API – Clock

Clock を一言でいうとClock は「“今”をどう決めるかをカプセル化するためのオブジェクト」です。Instant.now() や LocalDateTime.now() が、裏側で「どの時計を使...
Java

Java | Java 詳細・モダン文法:日付・時刻 API – Instant

Instant を一言でいうとInstant は「世界共通の“ある一瞬”を、UTC 基準で表したもの」です。人間が「2025年1月18日 10時(日本時間)」と考えるのに対して、Instant は「1...
Java

Java | Java 詳細・モダン文法:日付・時刻 API – OffsetDateTime

OffsetDateTime を一言でいうとOffsetDateTime は「日付+時刻 + UTC からのズレ量(オフセット)」をセットで表すクラスです。ZonedDateTime が「タイムゾーン...
Java

Java | Java 詳細・モダン文法:日付・時刻 API – TimeZone の扱い

まず「タイムゾーンって何者か」を整理するタイムゾーンは、ざっくり言うと「その場所の“ローカルな時刻”と、世界共通の時刻(UTC)をどう対応づけるかのルール」です。日本(Asia/Tokyo)は「UTC...
Java

Java | Java 詳細・モダン文法:日付・時刻 API – 不変オブジェクトとしての日時

「不変な日時」ってどういうことかまず言葉からいきます。LocalDate や LocalDateTime、ZonedDateTime など java.time のクラスは「不変(immutable)」...
Java

Java | Java 詳細・モダン文法:日付・時刻 API – DateTime API 設計思想

なぜ新しい DateTime API が必要だったのかまず一番大事な背景からいきます。Java 8 で導入された java.time(DateTime API)は、「古い日付 API(java.uti...
JavaScript

JavaScript | 1 日 90 分 × 7 日アプリ学習:フォーム送信シミュレーター(初級編)

1日目のゴールと今日やること1日目のテーマは「フォーム送信の仕組みを“JavaScript で自由にコントロールできるようになる”」ことです。フォーム送信シミュレーターは、「入力 → 確認画面 → 擬...
JavaScript

JavaScript | ES6+ 文法:新データ構造 – 実務利用判断

まずゴールをはっきりさせる:何を判断したいのかES6 の「新データ構造」と言われると、Map / SetWeakMap / WeakSetが一気に出てきて、「全部使えたほうがいいのかな?」と身構えがち...
JavaScript

JavaScript | ES6+ 文法:新データ構造 – GC と Weak 構造

まず「GC」とは何か(やさしくイメージから)JavaScript の世界では、「もう使われなくなったデータを、自動で片付けてくれる仕組み」 が動いています。これを GC(Garbage Collect...
JavaScript

JavaScript | ES6+ 文法:新データ構造 – size プロパティ

size プロパティとは何か(まずイメージから)size プロパティは、「そのコレクションの中に、今いくつ要素が入っているか」を教えてくれる数字 です。ES6 の新しいデータ構造では、MapSetに ...
JavaScript

JavaScript | ES6+ 文法:新データ構造 – 反復処理

ES6 の反復処理とは何か(まずイメージから)ES6 以降の「新データ構造」(Map, Set, WeakMap, WeakSet)には、「反復処理しやすいように統一された仕組み」 が用意されています...
JavaScript

JavaScript | ES6+ 文法:新データ構造 – Set による重複排除

Set で重複排除とは何か(まずイメージから)Set は「同じ値を 2 回入れようとしても、1 回分しか持たないコレクション」でしたね。この「同じ値は 1 つだけ」という性質を利用すると、配列に同じ値...
JavaScript

JavaScript | ES6+ 文法:新データ構造 – Map vs Object

まずざっくりイメージ:Map と Object は「役割」が違う同じように「キーと値」を扱えるので、最初は「Map でも Object でもできるじゃん。どっち使えばいいの?」と感じると思います。ざっ...
JavaScript

JavaScript | ES6+ 文法:新データ構造 – WeakSet

WeakSet とは何か(まずイメージから)WeakSet は、「オブジェクトだけを入れられる、弱い参照を持つ Set」 です。普通の Set と似ていますが、決定的に違う点がいくつかあります。1つ目...
JavaScript

JavaScript | ES6+ 文法:新データ構造 – WeakMap

WeakMap とは何か(まずイメージから)WeakMap は、「キーをオブジェクトに限定した、”弱い紐づけ” をするための特別な Map」 です。普通の Map と似ていますが、決定的に違うのはここ...
JavaScript

JavaScript | ES6+ 文法:新データ構造 – Set

Set とは何か(まずイメージから)Set は、ES6 で追加された「重複を許さない値の集まり(コレクション)」 です。配列:同じ値を何回入れてもいいSet:同じ値は 1 回しか入らないというイメージ...
JavaScript

JavaScript | ES6+ 文法:新データ構造 – Map

Map とは何か(まずイメージから)Map は、ES6 で追加された「キーと値のペアを柔軟に保存できる専用のコレクション」 です。似たものに「オブジェクト {}」がありますが、Map には大きな違いが...
Power Query M Formula Language

Power Query 実務テンプレ | データ取込・更新系:Excel特定シート名指定取込

ゴールのイメージを先にそろえる今回のテーマは「Excelブックの中から、特定のシート名だけを Power Query で安定して取り込む実務テンプレ」です。たとえば「毎月『集計』シートだけを読みたい」...
Power Query M Formula Language

Power Query 実務テンプレ | データ取込・更新系:Excelファイル1枚目固定取込

ゴールのイメージを先にそろえる今回のテーマは「毎回レイアウトは同じだけど、ブック名や中身だけ変わるExcelファイルから、“必ず1枚目のシートだけ”をPower Queryで取り込む実務テンプレ」です...
Power Query M Formula Language

Power Query 実務テンプレ | データ取込・更新系:毎月届くCSVを同一形式で更新

まず「理想の運用イメージ」をはっきりさせる目指すゴールはとてもシンプルです。毎月届くCSVファイルを、あるフォルダにポンと入れるだけ。Excel側では、Power Queryの[更新]ボタンを押すだけ...
Power Query M Formula Language

Power Query 実務テンプレ | データ取込・更新系:CSVのヘッダー行が途中にあるデータ取込

ゴールのイメージを先にそろえる今回のテーマは「CSVのヘッダー行が途中にある(しかも場合によっては何回も出てくる)データを、Power Queryでキレイに取り込む実務テンプレ」です。よくあるパターン...
Power Query M Formula Language

Power Query 実務テンプレ | データ取込・更新系:CSVファイルを自動取込(文字コード自動判定)

まずゴールのイメージをそろえましょうあなたがやりたいことは、ざっくり言うとこうです。「フォルダに CSV を置くだけで、Power Query がいい感じに文字コードを判定して取り込み、あとは[更新]...
Power Query M Formula Language

Power Query | パワークエリ失敗しない設計ルール集

失敗しない設計ルール集(完全実務版)① 全体設計ルール(最重要)1. 目的を「出力テーブル」で定義する理由途中処理を考え始めると破綻するルール最終的に出したい「列名・型・粒度」を先に決めるNG取込 →...
Power Query M Formula Language

Power Query | パワークエリについて

パワークエリ(Power Query)について、まず全体像を段階的に整理します。① パワークエリとは何かExcel / Power BI に標準搭載されているデータ取得・加工・変換専用ツール大量データ...
Next.js

Next.jsで学ぶReact講座 | Reactの基本操作 – 金額と税率を受け取って税込み価格を出すコンポーネント

このテーマのゴールここでやりたいのは、「金額」と「税率」を props で受け取り、コンポーネントの中で計算して「税込み価格」を表示することです。つまり、「見た目+計算ロジック」をひとつの部品としてま...
Next.js

Next.jsで学ぶReact講座 | Reactの基本操作 – 名前だけを変えて挨拶するコンポーネント

このテーマのゴールここでやりたいのは、「カード」という“部品”を1つ作って、タイトルと本文だけ差し替えて何度も使えるようにすることです。前の「名前だけ変えて挨拶」と同じ発想ですが、もう少し“実際のアプ...
Next.js

Next.jsで学ぶReact講座 | Reactの基本操作 – 名前だけを変えて挨拶するコンポーネント

このテーマのゴール「名前だけを変えて挨拶するコンポーネント」は、React の いちばん基本的な“部品の考え方” をつかむための題材です。同じ「挨拶」という見た目・構造を使い回しつつ、「名前だけを変え...
Java

Java | Java 詳細・モダン文法:Optional – フィールドに Optional を持たない理由

そもそも Optional は「フィールド用」に設計されていないまず大前提として押さえておきたいのは、Optional は「戻り値用のコンテナ」として設計されている、ということです。「値があるかもしれ...
Java

Java | Java 詳細・モダン文法:Optional – Optional の誤用例

なぜ「Optional の誤用」を意識する必要があるのかOptional は「null を安全に扱うための道具」ですが、使い方を間違えると、むしろコードが読みにくくなったり、バグの温床になったりします...
Java

Java | Java 詳細・モダン文法:Optional – Optional.orElseThrow

Optional.orElseThrow を一言でいうとOptional.orElseThrow は「中身があればその値を返し、なければ“ここで失敗だ”と明示的に例外を投げる」ためのメソッドです。「こ...
Java

Java | Java 詳細・モダン文法:Optional – Optional.filter

Optional.filter を一言でいうとOptional.filter は「中身が“あるときだけ”条件をチェックし、条件を満たさなければ空にしてしまう」ためのメソッドです。Stream の fi...
Java

Java | Java 詳細・モダン文法:Optional – Optional.flatMap

Optional.flatMap を一言でいうとOptional.flatMap は「中身が“あるときだけ”、Optional を返す関数を適用し、その二重になった Optional を平らにして返す...
Java

Java | Java 詳細・モダン文法:Optional – Optional.map

Optional.map を一言でいうとOptional.map は「中身が“あるときだけ”変換し、なければ何もしないで空のまま返す」ためのメソッドです。null チェックしてからメソッドを呼ぶ、とい...
Java

Java | Java 詳細・モダン文法:Optional – null 排除設計

「null 排除設計」を一言でいうと「null 排除設計」は、“アプリケーションの中を null が自由に歩き回らないようにする設計”です。完全に null をゼロにするのは現実的ではありませんが、「...
Java

Java | Java 詳細・モダン文法:Optional – Optional 設計思想

Optional が生まれた一番大きな理由Optional が Java に入ってきた一番の理由は、「null による事故を減らしたい」これに尽きます。Java の世界では長いあいだ、「値がないこと」...
JavaScript

JavaScript | ES6+ 文法:モジュール – バンドラとの関係

そもそも「バンドラ」とは何か(まずイメージから)バンドラ(bundler)は、「たくさんの JS ファイル(モジュール)を、ブラウザが読みやすい形にまとめてくれる道具」 です。ES6 の import...
JavaScript

JavaScript | ES6+ 文法:モジュール – モジュール分割設計

モジュール分割設計とは何か(まずイメージから)モジュール分割設計は、「アプリ全体を、意味のある小さな“部品(ファイル)”に分けて、その関係をきれいに整理すること」 です。1ファイル = 1モジュール、...
JavaScript

JavaScript | ES6+ 文法:モジュール – 循環参照の注意

循環参照とは何か(まずイメージから)モジュールの「循環参照(循環依存)」は、モジュール A がモジュール B を import し、同時にモジュール B もモジュール A を import している状...
JavaScript

JavaScript | ES6+ 文法:モジュール – モジュールスコープ

モジュールスコープとは何か(まずイメージから)モジュールスコープは、「そのモジュール(=1ファイル)の中だけで有効な“自分専用の世界”」 のことです。ES6 モジュール(import / export...
JavaScript

JavaScript | ES6+ 文法:モジュール – 動的 import

動的 import とは何か(まずイメージから)ES6 以降のモジュールの import には、「ファイルの先頭で書く静的な import」と「コードの中で呼び出せる動的 import」の2種類があり...
JavaScript

JavaScript | ES6+ 文法:モジュール – import の別名

「import の別名」とは何か(まずイメージから)import の別名 は、「他のファイルから持ってきた名前に、今のファイルで使いやすい別の名前を付け直す」 仕組みです。同じ名前が他でも使われていて...
JavaScript

JavaScript | ES6+ 文法:モジュール – 再エクスポート

再エクスポートとは何か(まずイメージから)再エクスポート(re-export)は、「他のモジュールから import したものを、そのまま(または名前を変えて)もう一度 export し直すこと」 で...
JavaScript

JavaScript | ES6+ 文法:モジュール – default export

default export とは何か(まずイメージから)default export は、「このモジュール(ファイル)の“看板商品”を 1 つだけ外に出す」ための仕組みです。名前付き export:...
JavaScript

JavaScript | ES6+ 文法:モジュール – 名前付き export

名前付き export とは何か(まずイメージから)名前付き export は、「このファイルから、名前を付けて外に公開するものを選ぶ仕組み」です。// math.jsexport const PI ...
JavaScript

JavaScript | ES6+ 文法:モジュール – import / export 基本

モジュールの考え方(まず全体像から)モジュールは、「ファイルごとに役割を分けて、必要なものだけをやり取りする仕組み」です。1ファイル = 1モジュール、と考えておけばOKです。「このファイルから外に出...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – コールバック関数の型指定

まず「コールバック関数」をちゃんとイメージするコールバック関数は、ざっくり言うと「関数に“あとで呼んでね”と渡される関数」です。function doTwice(callback: () => voi...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 可変長引数の型安全化

「可変長引数」は型の世界だとどう見えるのかまず、可変長引数は JavaScript 的にはこうです。function sum(...numbers: number[]) { return number...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – rest引数の型指定

rest引数ってそもそも何をしているのかまずは「rest引数」の正体からいきます。function sum(...numbers: number[]) { // numbers は「配列」として受け取...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – デフォルト引数と型

「デフォルト引数」と「型」はセットで考えるものまず前提から整理します。TypeScript の「デフォルト引数」は、「引数が渡されなかったときに使う値を、関数の宣言側で決めておく仕組み」です。func...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数のオプション引数設計

まず「オプション引数って何者か」を整理するTypeScript で「オプション引数」と言うとき、だいたい次の2つの書き方を指します。function greet(name: string, title...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 戻り値型を省略すべき場面

前提:「全部書く」か「全部省略」か、の二択ではないまず大事なのは、戻り値型は「常に書くべき」でも「常に省略すべき」でもない、ということです。すでに話してきたように、外部公開の関数・複雑な処理・ジェネリ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 戻り値型を明示すべき場面

まず前提:「いつも書け」ではなく「ここぞで書く」TypeScript は戻り値型をかなりうまく推論してくれます。だから「全部に : 型 を書け」という話ではありません。大事なのは、「推論に任せると“危...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 引数と戻り値の型関係

「引数の型」と「戻り値の型」はセットで設計するものまず一番大事な前提から。関数の型は、「何を受け取って(引数)、何を返すか(戻り値)」この2つの組み合わせで決まります。function add(a: ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – アロー関数の型推論

まず「アロー関数の型推論」で何が起きているかアロー関数はこういう形の関数です。const add = (a, b) => a + b;const add = (a, b) => a + b;TypeS...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数宣言と関数式の違い

まず「関数宣言」と「関数式」をざっくり区別する最初に形だけ見て違いを押さえましょう。関数宣言(function declaration)function add(a: number, b: numbe...
JavaScript

JavaScript | 1 日 90 分 × 7 日アプリ学習:タブ切り替えアプリ(初級編)

1日目のゴールと今日やること1日目のテーマは「タブ切り替えアプリの“いちばん小さな仕組み”を理解する」ことです。タブ切り替えアプリとは、「ボタン(タブ)を押すと、対応する画面だけが表示される」という、...
Python

Python | 1 日 90 分 × 7 日アプリ学習:数当てゲーム(初級編)

1日目のゴールと今日やること1日目のテーマは「数当てゲームの“いちばん小さい芯”を作る」 ことです。いきなり完成版は作りません。今日はまず、プレイヤーから数字を入力してもらうその数字を「大きい」「小さ...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – imperative vs declarative

「命令的」と「宣言的」をざっくり一言でいうと命令的(imperative)は、「どうやってやるか」を一歩一歩、自分で指示していく書き方です。宣言的(declarative)は、「何をしたいか」だけを宣...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – forEach の落とし穴

forEach を一言でいうとforEach は「Stream の最後に、要素 1 つずつに対して“なにかする”ための終端操作」です。System.out.println したり、外部のリストに追加し...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – 例外処理と Stream

なぜ「例外処理と Stream」が難しく感じるのかStream は「関数型っぽく、処理の流れを宣言的に書く」ための仕組みです。一方で Java の例外は「throw して try-catch で受ける...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – Optional と Stream 設計

Optional と Stream を一緒に考える理由Java でモダンなコードを書くとき、Optional と Stream はセットで設計を考えると一気にきれいになります。どちらも「要素があるかも...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – downstream collector

downstream collector ってそもそも何?downstream collector は、日本語にすると「下流の Collector」です。でも名前よりもイメージが大事で、ざっくり言うと...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – partitioningBy

partitioningBy を一言でいうとCollectors.partitioningBy は、Stream の要素を「ある条件を満たすかどうか(true / false)」で きっちり 2 つの...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – groupingBy 複数キー

「groupingBy 複数キー」でやりたいことのイメージCollectors.groupingBy の「複数キー」は、ざっくり言うと「1 つの条件じゃなくて、2 個以上の条件の組み合わせでグループ分...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – Collector の自作

Collector 自作のゴールをまずイメージするCollector を自作する、というのは「Stream の要素を、標準の toList や groupingBy では表現しづらい“自分専用の集め方...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – collect の仕組み

collect を一言でいうとcollect は、「Stream に流れてきた要素たちを、“コンテナ(List / Set / Map など)や集計結果”にまとめ上げるための終端操作」です。reduc...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – reduce

reduce を一言でいうとStream#reduce は、「ストリームに流れてくる複数の要素を、“1 つの値”に畳み込むための終端操作」です。全部を 1 つに“まとめる”イメージです。合計を出す、最...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – allMatch / anyMatch

allMatch / anyMatch を一言でいうとallMatch と anyMatch は、「Stream の要素が“条件を満たしているかどうか”を、真偽値で答える終端操作」です。allMatc...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – findFirst / findAny

findFirst / findAny を一言でいうとfindFirst と findAny は、「Stream の中から“1 件だけ”要素を取り出すための終端操作」です。どちらも戻り値は Optio...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – limit / skip

limit / skip を一言でいうとlimit と skip は、どちらも 「ストリームから流れてくる要素の“範囲”を切り取るための中間操作」 です。ざっくり言うと、limit(n) は「先頭から...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – sorted

sorted を一言でいうとStream#sorted は、ストリームに流れてくる要素を「並べ替えた新しいストリーム」を返す中間操作です。「順番を整える係」が sorted だと思ってください。sor...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – distinct

distinct を一言でいうとStream#distinct() は、「ストリームの中から“重複している要素”を取り除き、“一意な要素だけ”を残す中間操作」 です。イメージとしては、「同じ値が何回も...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – flatMap の用途

flatMap を一言でいうとStream#flatMap は、「1 つの要素から“0 個以上の要素の流れ(Stream)”を作り、それらを 1 本のストリームに“平らに”つなげる中間操作」です。ma...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – map の設計

map を一言でいうとStream#map は、「ストリームの各要素に“変換処理”を 1 回ずつ適用し、その結果から“新しいストリーム”を作る中間操作」 です。元の要素を別の形にしたいとき――文字列を...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – filter の設計

filter を一言でいうとStream#filter は、「流れてくる要素のうち、“条件を満たすものだけ”を次のステップに通す中間操作」 です。SQL でいう WHERE 句に近いイメージで、tru...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – 中間操作と終端操作

中間操作と終端操作を一言でいうとStream API の「中間操作」と「終端操作」は、“流れをつくる操作(中間)” と “流れを終わらせて結果を取り出す操作(終端)”という役割分担になっています。この...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – Stream パイプライン

Stream パイプラインを一言でいうとStream パイプラインは、「データの流れを、生成 → 中間操作 → 終端操作 という“流れ(パイプライン)”としてつなげて書くスタイル」です。for 文でゴ...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – クラス設計の考え方

クラス設計の考え方とは何かクラス設計は、「コードをどう書くか」より先に、「このクラスは何者で、何ができて、どこまで面倒を見るのか」を決める作業です。JavaScript の class は、単に「便利...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – getter / setter

getter / setter とは何か(まずイメージから)getter / setter は、「プロパティに見える“入り口・出口”の裏に、処理を仕込むための仕組み」 です。普通のプロパティはこうです...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – プライベートフィールド(#)

プライベートフィールド(#)とは何かプライベートフィールドは、class の中で「クラスの外から絶対に直接触られたくない値」を隠すための仕組みです。書き方は、名前の前に # をつけます。class U...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – 静的メソッド

静的メソッドとは何か(まずイメージから)静的メソッド(static メソッド)は、「インスタンスではなく“クラスそのもの”に属するメソッド」 です。普通のメソッドはこう呼びます。const user ...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – super

super とは何か(まずイメージから)super は、クラスの継承で使う「親クラスへの入り口」です。具体的には次の2つの役割があります。親クラスの constructor を呼ぶ親クラスのメソッドを...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – 継承(extends)

継承(extends)とは何か(まずイメージから)継承(extends)は、「あるクラスをベースにして、それを少しだけ“追加・変更”したクラスを作る仕組み」 です。「動物」という共通部分を持つクラスが...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – メソッド定義

クラスの「メソッド定義」とは何かクラスのメソッドは、「そのクラスから作ったインスタンスができる“動き(振る舞い)”を表す関数」です。class の中に書く関数が、インスタンスから user.greet...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – インスタンス生成

「インスタンス生成」とは何か(まずイメージを掴む)クラスは「設計図」、インスタンスは「その設計図から作られた実物」です。class User { ... } は「ユーザーとはこういう性質・機能を持つ」...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – constructor

constructor とは何か(まずはイメージから)constructor は、class から new したときに「最初に一回だけ」呼ばれる特別なメソッドです。役割はシンプルで、インスタンスが生ま...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – class 構文

class 構文とは何か(まずイメージを掴む)class 構文は、「同じような性質と振る舞いをもつオブジェクトを量産するための設計図を書くための文法」です。「ユーザー」「商品」「敵キャラ」みたいな“種...
Java

Java Tips | 基本ユーティリティ:日付差分計算

日付差分計算は「どれくらい時間が経ったか」を正しく言語化する作業業務システムでは、「締切まであと何日か」「利用期間は何ヶ月か」「滞在時間は何時間か」といった「差分」を扱う場面が本当に多いです。このとき...
Java

Java Tips | 基本ユーティリティ:現在日時取得

現在日時取得は「システムの“今”を正しくつかむ」ための基本技術業務システムでは、ログ記録、更新日時の保存、期限チェック、バッチ処理の実行タイミングなど、あらゆる場面で「現在日時」が必要になります。ただ...
Java

Java Tips | 基本ユーティリティ:日付パース

日付パースは「文字列をちゃんとした日付オブジェクトにする」作業業務システムでは、画面入力、CSV、外部 API などから、日付はまず「文字列」として届きます。"2025/01/14" や "2025-...
Java

Java Tips | 基本ユーティリティ:日付フォーマット

日付フォーマットは「人間とシステムの橋渡し」業務システムでは、日付や日時を「システムが扱いやすい形」と「人間が読みやすい形」の間で何度も行き来します。DB では DATE や TIMESTAMP、Ja...
Java

Java Tips | 基本ユーティリティ:ランダム文字列生成

ランダム文字列生成は「安全なカギ札を作る作業」業務システムでは、一時パスワード、認証コード、トークン、セッションID、テストデータ用のダミー値など、「誰ともかぶらず、予測されにくい文字列」が欲しくなる...
JavaScript

JavaScript | 1 日 90 分 × 7 日アプリ学習:タイマーアプリ(初級編)

1日目のゴールと今日やることこの「JavaScript タイマーアプリ(基礎) 初級編」では、最終的に「スタート」「ストップ」「リセット」ができる、シンプルなタイマーアプリを作ることを目指します。でも...
Java

Java Tips | 基本ユーティリティ:UUID生成

UUID は「ほぼかぶらない ID を即席で作る道具」業務システムでは、「世界中どこで作っても、まずかぶらない ID」が欲しくなる場面がよくあります。注文番号、トランザクション ID、一時ファイル名、...
Java

Java Tips | 基本ユーティリティ:toString生成

toString は「オブジェクトの名刺」を作るメソッドtoString() は、オブジェクトを人間が読める文字列に変換するためのメソッドです。業務システムでは、ログ出力、デバッグ、エラー調査、監視な...
Java

Java Tips | 基本ユーティリティ:hashCode生成

hashCode ってそもそも何をしているのかhashCode() は、オブジェクトから「ハッシュ値」と呼ばれる整数を計算するためのメソッドです。この整数は、そのオブジェクトの「ざっくりした特徴」を表...
Java

Java Tips | 基本ユーティリティ:安全なequals

「安全な equals」とは何かをまず整理するJava 初心者が最初につまずきやすいポイントのひとつが「equals の安全な使い方」です。特にやらかしがちなのが、null かもしれない変数に対して、...
Java

Java Tips | 基本ユーティリティ:型変換

型変換は「データを正しい器に入れ直す」作業業務システムでは、同じ「値」でも、場面によって求められる型が変わります。画面からは文字列で届く、計算には数値が必要、DB には文字列で保存する──この「型の行...
Java

Java Tips | 基本ユーティリティ:数値パース

数値パースは「文字列をちゃんとした数字にする」作業業務システムでは、画面入力や CSV、外部 API から「文字列として届いた数字」を、本物の int や long、BigDecimal に変換する場...
Java

Java Tips | 基本ユーティリティ:空文字判定

空文字判定は「入力の本当の中身を見る」作業業務システムでは、ユーザー入力や外部システムから受け取る文字列が「本当に何か入っているか」を判定する場面が大量に出てきます。ここでちゃんと判定できないと、必須...
Java

Java Tips | 基本ユーティリティ:文字列トリム

文字列トリムは「入力をきれいにするフィルター」業務システムでは、ユーザー入力や外部システムからの文字列に「余計な空白」が混ざるのは日常茶飯事です。例えば「 山田太郎 」のように前後にスペースが入ってい...
Java

Java Tips | 基本ユーティリティ:Optionalラッパー

Optional ラッパーってそもそも何者かJava の Optional<T> は、「値があるかもしれないし、ないかもしれない」を安全に表現するためのコンテナ型です。null をそのまま返したり受け...
Java

Java Tips | 基本ユーティリティ:Nullチェック

業務で必須になる「nullチェック」とは何かJava で業務システムを書くとき、「nullチェック」は避けて通れません。null は「まだ何も入っていない参照」を表す特別な値で、オブジェクト型の変数な...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第5章:仕上げ – 振り返り

この課題のねらいここは「学びをちゃんと自分のものにする」ための仕上げです。コードを書くことでもう一段うまくなりますが、振り返って言葉にすることでしか伸びない力もあります。自分が「何ができるようになった...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第5章:仕上げ – 最終アプリ実装

この課題のねらいここはいよいよ「全部つなげて、自分のアプリを最後まで作り切る」フェーズです。やることはシンプルで強いです。実装を最後までやり切る出てきたバグを自分で直す余力で UI を少しだけ“気持ち...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第5章:仕上げ – 最終アプリ設計

この課題のねらいここはいよいよ「自分のアプリをちゃんと設計する」フェーズです。コードを書く前に、仕様・ページ構成・ワイヤーフレームを言葉と簡単な図でまとめられるようになると、実装が一気にスムーズになり...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第5章:仕上げ – 設計練習

この課題のねらいここはいよいよ「コードを書く前に、頭と手で設計する」練習です。いきなりエディタを開かずに、紙とペンで画面構成・コンポーネント・state を考えられるようになると、バグも迷いも一気に減...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第5章:仕上げ – TypeScript

この課題のねらいここは「なんとなく動く React」から「型で守られた React」にステップアップするところです。TypeScript をちゃんと使えるようになると、props の渡し間違いstat...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第5章:仕上げ – デバッグ

この課題のねらいここは「React を書ける人」から「バグを直せる人」に変わる仕上げのステップです。どんなに上手いエンジニアでも、バグゼロで書くことはほぼありません。大事なのは「バグを出さないこと」で...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第4章:実用的React – ミニアプリ③

この課題のねらいここはいよいよ「実用的 React」の集大成です。テーマはミニ TODO アプリ──追加・削除・完了状態管理までを、自分の手で通しで作ること。state 設計親子コンポーネントと pr...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第4章:実用的React – 状態設計

この課題のねらいここは「React を“なんとなく書ける”から、“設計して書ける”に変わる」ポイントです。テーマは 状態設計(state をどこに持つか)。コンポーネントを増やしていくと必ずぶつかるの...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第4章:実用的React – フォーム

この課題のねらいここでは「フォーム入力をちゃんと React で扱う」ことがテーマです。キーワードは、state・onChange・onSubmit・バリデーション(入力チェック)。最終的に、「ユーザ...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第4章:実用的React – UX対応

この課題のねらいここは「ただ動くアプリ」から「ちゃんと気配りされたアプリ」に一段上げるところです。テーマは UX(ユーザー体験)対応──つまり、ローディング中に何も出さない“無言の時間”をなくすエラー...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第4章:実用的React – データ取得

この課題のねらいここはいよいよ「実用的 React」のど真ん中です。テーマは「API からデータを取ってきて、画面に表示する」という超・現場的な流れ。fetch でデータを取得する取得したデータを s...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第4章:実用的React – useEffect

この課題のねらいここからが「実用的な React」に一気に近づくところです。テーマは useEffect──「画面に表示する以外の処理(=副作用)」を、いつ・どのタイミングで実行するかをコントロールす...
Python

Python | 1 日 90 分 × 7 日アプリ学習:繰り返しカウントアプリ(初級編)

1日目のゴールと今日やることこの「繰り返しカウントアプリ 初級編」は、最終的に「1回、2回、3回…」のように、回数を数え上げる小さなアプリを作ることがゴールです。でも、1日目のゴールはもっとシンプルで...
Python

Python | Web フレームワーク:Django REST Framework

概要(Django REST Framework=「Django で API を作るためのフル装備セット」)Django REST Framework(DRF)は、「Django を使って、ブラウザで...
Python

Python | Web フレームワーク:Django 管理画面

概要(Django 管理画面=「DB をブラウザからいじれる最強の裏口」)Django 管理画面(Django admin)は、「自分で管理用の画面を作らなくても、モデルを登録するだけでブラウザからデ...
Python

Python | Web フレームワーク:Django のフォーム

概要(Django のフォーム=「入力フォームとバリデーションをまとめて面倒見てくれる仕組み」)Django のフォームは、「HTML フォームの入力項目」と「その値のチェック(バリデーション)」と「...
Python

Python | Web フレームワーク:Django のテンプレート

概要(Django のテンプレート=「HTML にデータを流し込む仕組み」)Django のテンプレートは、「HTML のひな型(型)をあらかじめ用意しておいて、ビューから渡されたデータをそこに流し込...
Python

Python | Web フレームワーク:Django のビュー

概要(Django のビュー=「URL ごとに何を返すかを決める場所」)Django の「ビュー」は、「この URL にアクセスされたら、どんな処理をして、どんなレスポンスを返すか」を決める場所です。...
JavaScript

JavaScript | ES6+ 文法:オブジェクト拡張 – オブジェクト操作設計

オブジェクト操作設計とは何か「オブジェクト操作設計」というのは、単に user.name = "Alice" といった「その場しのぎの代入」を書くのではなく、どんな形のオブジェクトにするか(構造・型)...
JavaScript

JavaScript | ES6+ 文法:オブジェクト拡張 – Object.getPrototypeOf

Object.getPrototypeOf とは何かObject.getPrototypeOf は、あるオブジェクトの「プロトタイプ(親オブジェクト)」を取り出すためのメソッドです。プロトタイプとは、...
JavaScript

JavaScript | ES6+ 文法:オブジェクト拡張 – Object.getOwnPropertyNames

Object.getOwnPropertyNames とは何かObject.getOwnPropertyNames は、オブジェクトが「自分で持っている」すべてのプロパティ名を配列で返すメソッドです。...
JavaScript

JavaScript | ES6+ 文法:オブジェクト拡張 – Object.fromEntries

Object.fromEntries とは何かObject.fromEntries は、「配列(や Map)の一覧」からオブジェクトを作り直すためのメソッドです。一言でいうと、Object.entri...
JavaScript

JavaScript | ES6+ 文法:オブジェクト拡張 – Object.entries

Object.entries とは何かObject.entries は、オブジェクトの中身を「配列の配列」に変換する ES2017(ES8)のメソッドです。「キーと値のペア」を という2要素配列にし、...
JavaScript

JavaScript | ES6+ 文法:オブジェクト拡張 – Object.assign

Object.assign とは何かObject.assign は、複数のオブジェクトを「左から右へ」順番にコピーして、1つのオブジェクトにまとめるための ES6 のメソッドです。一言でいうと、「プロ...
JavaScript

JavaScript | ES6+ 文法:オブジェクト拡張 – Object.is

Object.is とは何かObject.is は、「2つの値が“本当に”同じ値かどうか」を判定するための ES6 の比較関数です。見た目は ===(厳密等価演算子)に似ていますが、NaN と +0 ...
JavaScript

JavaScript | ES6+ 文法:オブジェクト拡張 – メソッド定義省略

メソッド定義省略とは何かオブジェクトの「メソッド定義省略」は、ES6 から入った“関数っぽいプロパティ”を短く書くための記法です。従来はこう書いていました。const user = { name: "...
JavaScript

JavaScript | ES6+ 文法:オブジェクト拡張 – 計算されたプロパティ名

計算されたプロパティ名とは何か「計算されたプロパティ名(computed property name)」は、オブジェクトリテラルのキーを、文字列リテラルではなく「式の結果」から動的に決める書き方です。...
JavaScript

JavaScript | ES6+ 文法:オブジェクト拡張 – プロパティ短縮記法

プロパティ短縮記法とは何かオブジェクトの「プロパティ短縮記法」は、変数名とプロパティ名が同じときに、キー: 値 の 値 を省略できる ES6 の書き方です。ふつうはこう書きます。const name ...
Python

Python | 1 日 60 分 × 7 日アプリ学習:超初級編

1日目のゴールと今日やること1日目のゴールは、たったこれだけです。自分で書いた Python のコードを実行して、画面に文字を出せるようになる。そのために今日は、この3つに集中します。プログラムって何...
JavaScript

JavaScript | 1 日 90 分 × 7 日アプリ学習:ランダム表示アプリ(初級編)

1日目のゴールと今日のテーマ1日目のテーマは「ランダムに1つ選んで表示する感覚をつかむ」 ことです。目指すのは、とてもシンプルなランダム表示アプリ。ボタンを押すと「今日の運勢」や「おみくじ結果」がラン...
Java

Java | Java 詳細・モダン文法:ラムダ式・関数型 – ラムダのスコープ

ラムダのスコープを一言でいうとラムダ式の「スコープ」は、「ラムダ式の“中から”“外のどこまで”見えるのか・アクセスできるのか」という話です。ここをちゃんと理解していないと、「ローカル変数をラムダの中で...
Java

Java | Java 詳細・モダン文法:ラムダ式・関数型 – コンストラクタ参照

コンストラクタ参照を一言でいうとコンストラクタ参照(ClassName::new)は、「new クラス名(...) を、そのまま“関数”として渡すための短い書き方」です。ラムダ式で書くと() -> n...
Java

Java | Java 詳細・モダン文法:ラムダ式・関数型 – メソッド参照

メソッド参照を一言でいうとメソッド参照(::)は、「すでに存在するメソッドやコンストラクタを、“ラムダ式の代わりに”そのまま関数として渡すための短い書き方」です。例えば、names.forEach(s...
Java

Java | Java 詳細・モダン文法:ラムダ式・関数型 – Supplier

Supplier を一言でいうとjava.util.function.Supplier<T> は、「引数は何も受け取らずに、T 型の値を 1 つ“供給する(用意してくれる)”関数」を表す関数型インター...
Java

Java | Java 詳細・モダン文法:ラムダ式・関数型 – Consumer

Consumer を一言でいうとjava.util.function.Consumer<T> は、「T 型の値を 1 つ受け取って“何かする”けれど、結果(戻り値)は返さない関数」 を表す関数型インタ...
Java

Java | Java 詳細・モダン文法:ラムダ式・関数型 – Function

Function を一言でいうとjava.util.function.Function<T, R> は、「T 型の値を 1 つ受け取って、R 型の値を 1 つ返す“変換処理”を表す関数型インターフェー...
Java

Java | Java 詳細・モダン文法:ラムダ式・関数型 – Predicate

Predicate を一言でいうとjava.util.function.Predicate<T> は、「T 型の値を 1 つ受け取って、true / false を返す“条件判定関数”を表す関数型イン...
Java

Java | Java 詳細・モダン文法:ラムダ式・関数型 – @FunctionalInterface

@FunctionalInterface を一言でいうと@FunctionalInterface は、「このインターフェースは“関数型インターフェース”として使うつもりですよ」とコンパイラに宣言するた...
Java

Java | Java 詳細・モダン文法:ラムダ式・関数型 – 関数型インターフェース

関数型インターフェースを一言でいうと関数型インターフェースは、「たった1つだけ“抽象メソッド”を持つインターフェースで、その1つのメソッドを“関数”として扱うための入れ物」です。ラムダ式は「単体では宙...
Java

Java | Java 詳細・モダン文法:ラムダ式・関数型 – ラムダ式の構文

ラムダ式とは何か(まずイメージから)ラムダ式は、Java 8 から入った「小さな“処理そのもの”を値として書くための記法」です。「このタイミングで、こういう処理を実行してほしい」という“やりたいこと”...
JavaScript

JavaScript | ES6+ 文法:スプレッド構文 – 旧構文との比較

スプレッド構文と「旧構文」をざっくり比較するとES6 のスプレッド構文 ... は、「配列やオブジェクトの中身をその場でバラして並べる」ための新しい書き方です。旧構文(ES5 まで)は、concat ...
JavaScript

JavaScript | ES6+ 文法:スプレッド構文 – 不変データ作成

「不変データ」とは何か(まずここを押さえる)不変データ(immutable data)とは、「一度作ったデータを書き換えず、変更したいときは新しいデータを作る」という考え方です。ここが重要です:配列....
JavaScript

JavaScript | ES6+ 文法:スプレッド構文 – 浅いコピーの理解

「浅いコピー」とは何か(まずイメージを掴む)スプレッド構文のコピー( や { ...obj })は「浅いコピー(shallow copy)」です。ここが最重要ポイントです:外側の「箱」(配列そのもの・...
JavaScript

JavaScript | ES6+ 文法:スプレッド構文 – 上書き順序

スプレッド構文の「上書き順序」とは何かスプレッド構文では、... を使って配列・オブジェクトの中身を「左から右へ」順番に展開していきます。ここが最重要ポイントです:オブジェクトの { ...a, .....
JavaScript

JavaScript | ES6+ 文法:スプレッド構文 – 結合処理

スプレッド構文による「結合処理」とは何かスプレッド構文での結合処理は、... を使って「配列やオブジェクトの中身をバラして並べ直し、新しい配列/オブジェクトを作る」書き方です。ここが重要です:配列なら...
JavaScript

JavaScript | ES6+ 文法:スプレッド構文 – 関数引数展開

関数引数展開とは何かスプレッド構文の「関数引数展開」は、fn(...array) のように書いて「配列(や配列っぽいもの)をバラして、関数の複数の引数として渡す」書き方です。ここが重要です:... が...
JavaScript

JavaScript | ES6+ 文法:スプレッド構文 – オブジェクトコピー

オブジェクトコピーとスプレッド構文の関係オブジェクトのスプレッド構文は、{ ...obj } のように書いて「オブジェクトの中身(プロパティ)を展開して、新しいオブジェクトを作る」書き方です。ここが重...
JavaScript

JavaScript | ES6+ 文法:スプレッド構文 – 配列コピー

スプレッド構文で「配列コピー」とは何かスプレッド構文を使うと、 のように書いて「配列の中身だけを取り出して、新しい配列を作る」ことができます。ここが重要です:const copy = arr; は“同...
JavaScript

JavaScript | ES6+ 文法:スプレッド構文 – オブジェクト展開

オブジェクトのスプレッド構文とは何かオブジェクトのスプレッド構文は、{ ...obj } のように書いて「オブジェクトの中身(プロパティ)をその場に展開する」書き方です。イメージとしては、「そのオブジ...
JavaScript

JavaScript | ES6+ 文法:スプレッド構文 – 配列展開

スプレッド構文の「配列展開」とは何かスプレッド構文の配列展開は、...array の形で「配列をバラして、その場に1個ずつ並べる」書き方です。ここが重要です: と書くと「arr の中身だけ」が新しい配...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第3章:Next.jsらしさ – ミニアプリ②

この課題のねらいここまで学んできた内容をぜんぶつないで「小さな Next.js アプリ」を完成させるステップです。特に意識してほしいのは次の2点です。複数ページ(URL)があるアプリを、自分で構成でき...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第3章:Next.jsらしさ – Metadata

この課題のねらいこの演習は、「Next.jsらしいメタデータの設定」に慣れることが目的です。特に、title(ブラウザタブや検索結果のタイトル)description(検索結果の説明文)を、Next....
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第3章:Next.jsらしさ – 画像

この課題のねらいこの演習は、「Next.js らしい画像の扱い方=Imageコンポーネント」を体験するのがテーマです。ふつうの <img> ではなく next/image を使うことで、高速表示(自動...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第3章:Next.jsらしさ – CSS

この課題のねらいこの演習のテーマは「Next.js での CSS Modules の基本を、自分の手でちゃんと通すこと」です。ポイントは次の3つです。CSS Modules用のファイルを作るclass...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第3章:Next.jsらしさ – レイアウト

この課題のねらいこの演習は「Next.js らしいレイアウト」の感覚をつかむことが目的です。特に大事なのは、ページごとに毎回ヘッダーを書くのではなく、共通ヘッダーを layout.tsx にまとめるど...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第3章:Next.jsらしさ – ページ遷移

この課題のねらいこの演習は「Next.jsならではのページ遷移の感覚」をつかむのがテーマです。やることはシンプルですが、アプリっぽさが一気に増えるポイントでもあります。2つのページを作るLink コン...
JavaScript

JavaScript | 1 日 90 分 × 7 日アプリ学習:簡単 ToDo アプリ(初級編)

1日目のゴールと今日のテーマ1日目のテーマは「配列でタスクを管理して、画面を“描き直しながら”ToDoリストを動かす感覚をつかむこと」です。作るのは、ほんとにシンプルな ToDo アプリです。テキスト...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第2章:Reactの基本 – ミニアプリ①

この課題のねらいここまでの「useState」「props」「コンポーネント分割」をぜんぶまとめて、小さな「カウンターアプリ」を完成させます。単なる練習問題ではなく、state で「今の値」を持つpr...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第2章:Reactの基本 – コンポーネント分割

この課題のねらいこの演習のテーマは「コンポーネント分割」と「props を使った汎用化」です。つまり、こういう流れを体で覚えてもらうことが目的です。最初は 1 つのコンポーネントにベタ書きリスト表示部...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第2章:Reactの基本 – 配列とmap

この課題のねらいこの演習は「配列 × map × React の描画」に慣れるためのものです。ここがわかると、「APIから取ってきた配列を一覧表示する」といった“実務のド真ん中”が一気にイメージしやす...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第2章:Reactの基本 – 条件分岐

この課題のねらいこの演習は「React で条件分岐して表示を切り替える」感覚をつかむのがテーマです。やることはシンプルですが、実務でめちゃくちゃ使う考え方です。true / false で表示を切り替...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第2章:Reactの基本 – イベント処理

この課題のねらいこの演習は「イベント処理 × useState」のセットに慣れることがテーマです。つまり、ボタンを押したら何かが変わる入力欄に文字を打ったら state に反映されるその state ...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第2章:Reactの基本 – useState

この課題のねらいこの演習は「useState を使って、画面が“動く”体験を自分の手で作る」のがテーマです。やることはシンプルですが、React の本質がギュッと詰まっています。useState で ...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第2章:Reactの基本 – props

この課題のねらいこの演習は、「props の感覚を体に入れる」ためのものです。親コンポーネントから子コンポーネントへ値を渡す子コンポーネントでその値を使って表示する必要なら console.log で...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第1章:準備と超基礎 – コンポーネント

この課題のねらいこの演習のテーマは「コンポーネントに慣れること」です。やることはシンプルで、関数コンポーネントを自分で作るそれを画面に表示する慣れてきたら、コンポーネントを別ファイルに分けて再利用する...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第1章:準備と超基礎 – JSX基礎

この課題のねらいこの演習は、React の「見た目を書く言語」である JSX に慣れるためのものです。難しいことは一切いりません。JSXでただ文字を出すJSXの中でちょっとした計算をするJSXの中で変...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第1章:準備と超基礎 – フォルダ構造

この課題のねらいこの演習は「Next.js のフォルダ構造が頭の中でつながっているか」を確認するためのものです。特に大事なのは、app/page.tsx を触って「ここがトップページなんだ」と実感する...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第1章:準備と超基礎 – 開発環境構築

開発環境構築の演習のねらいこの課題は「Next.js を使えるようになる」ための一番最初の関門です。コードを書く前に、まずは1つ目に、Next.js プロジェクトを自分の PC 上に作る2つ目に、開発...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日)演習問題・課題 | 第1章:準備と超基礎 – React / Next.jsの理解

React / Next.js の理解を深める演習問題学習の最後に、あなた自身の言葉で理解を整理するための課題です。ここでは、ただ答えを書くのではなく、「なぜそう言えるのか」までかみ砕いて説明します。...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日) | 第5章:仕上げと次の一歩 – 振り返りと次の学習

ここまでで「できるようになったこと」この講座、かなりのボリュームを一気に駆け抜けました。まずは、あなたが今もう「できるようになっていること」を、あえて言語化しておきます。Reactまわりでできることコ...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日) | 第5章:仕上げと次の一歩 – 最終アプリ実装

この章でやることの全体像ここまで「最終アプリ設計」までやってきたので、いよいよそれを実装 → デザイン調整 → 動作確認 → 修正の流れで形にしていきます。ここでは、前章の「講座管理ミニアプリ」(講座...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日) | 第5章:仕上げと次の一歩 – 最終アプリ設計

「最終アプリ設計」でやることの全体像ここまでで、単発の画面やミニアプリは作れるところまで来ています。ここから一歩進めて、複数画面があるデータを共通の前提で扱う実装の順番まで見通すという「小さいけれど一...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日) | 第5章:仕上げと次の一歩 – 簡単な設計練習

設計練習って何をやる時間かここまで、コードの書き方そのものはかなり身についてきています。でも実務に近づくと、いきなり「この画面作って」と言われます。つまり、「何をどう書くか」の前に、「どう分解して考え...
JavaScript

JavaScript | 1 日 90 分 × 7 日アプリ学習:入力チェックアプリ(初級編)

1日目のゴールと今日のテーマ1日目のテーマは「“入力された文字がOKかどうか”をプログラムに判断させる感覚をつかむこと」です。ただ文字を受け取るだけじゃなくて、未入力(空)のときに警告を出す。文字が長...
JavaScript

JavaScript | 1 日 90 分 × 7 日アプリ学習:強化版カウンターアプリ(初級編)

1日目のゴールと今日のテーマ1日目のテーマは「シンプルだけど“設計の考え方”が入ったカウンターアプリを作ること」です。ただの「+1ボタン」ではなく、複数ボタンを持つ。ボタンごとに役割を分ける(イベント...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – 「TypeScriptらしい書き方」の理解

「TypeScriptらしい書き方」って何を指しているのかまず前提をはっきりさせます。「TypeScriptらしい書き方」というのは、単に「: string とか : number をつけること」では...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – 基礎段階での型設計ルール

「型設計ルール」を決めておく意味最初に、なぜ「ルール」を意識した方がいいかから話します。TypeScript は、とりあえず書いてもそれなりに動いてくれる言語です。でも「何となく型を付ける」だけだと、...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – エラーにならないunion設計

なぜ「union型なのにすぐエラーになる」のかまず、よくあるつまずきから整理します。function printId(id: string | number) { console.log(id.toU...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – Discriminated Unionの考え方

まず「Discriminated Union」をざっくり日本語にすると難しいカタカナですが、意味はシンプルです。Discriminated Union(判別可能ユニオン)=「ある1つのプロパティの値に...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – 型の絞り込み(narrowing)

「型の絞り込み」とは何かを一言でつかむ型の絞り込み(narrowing)は、「最初はざっくりした型だったものを、条件分岐などを通して“より具体的な型”に狭めていくこと」です。TypeScript では...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – unionとintersectionの違い

まずイメージでつかむ:unionとintersectionは「または」と「かつ」最初に一番大事なことだけ頭に入れてください。A | B(union型)→ 「A または B」。どちらか一方ならOK。A ...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – intersection型の基本

intersection型は「AもBも両方持つ」型まず一言でいうと、intersection型(インターセクション型、&)は 「AかつB」=「Aの性質もBの性質も同時に持つ型」 です。対比でいうとこう...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – union型の共通プロパティ

「union型の共通プロパティ」とは何かまず前提から整理します。union型は「A か B かどちらか」の型でした。type User = { id: number; name: string;};t...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – union型とif分岐

union型とif分岐の関係をまずイメージでつかむunion型は「A か B かどちらか」という“選択肢のある型”でした。そして if 分岐は、「今この瞬間は A なのか B なのかを確かめるための問...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – union型の基本

union型は「AかBかどちらか」の型まずイメージからいきます。union型(ユニオン型)は、「この値は“これか、あれか”のどれかです」という“選択肢のある型」です。書き方はとてもシンプルで、型と型の...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 関数でよく出る型エラー

はじめに:型エラーは「怒られている」のではなく「守られている」関数まわりで出る型エラーは、最初かなりストレスになりますよね。でも本質的には、「その書き方だと、実行時にバグる可能性が高いよ」と Type...
TypeScript

TypeScript | 基礎文法:関数の基礎 – nullチェックの重要性

そもそも「nullチェック」って何のためにやるのかまず一番大事なところから。nullチェックは「そこに“あるはずのもの”が、本当にあるかを確認する行為」です。プログラムを書いていると、ついこう思いがち...
TypeScript

TypeScript | 基礎文法:関数の基礎 – in演算子による型ガード

「in演算子による型ガード」は何をしてくれるのかin 演算子による型ガードは、「このオブジェクトは、このプロパティを持っているか?」を調べることで、型を絞り込む仕組みです。人間の感覚だと、こうです。「...
TypeScript

TypeScript | 基礎文法:関数の基礎 – typeofによる型ガード

typeofによる型ガードとは何かtypeof による型ガードは、「値の実行時の型をチェックして、その結果をもとに TypeScript が変数の型を“狭くする”仕組みです。人間の感覚としてはこうです...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 型ガードの基礎

「型ガード」とは何かを一言でつかむまずイメージからいきます。型ガードは、「この if を通ったなら、この変数は“この型”だと安全に言えるよ」ということを、TypeScript にちゃんと分かってもらう...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 条件分岐と型推論

「条件分岐すると型も変わる」という感覚から始めるTypeScript のおいしいところは、if や switch で条件分岐すると、「そのブロックの中だけ型が狭くなる」 ことです。「条件でチェックした...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 戻り値で型が決まるケース

「戻り値で型が決まる」ってどういうことかふつうは「引数の型 → 戻り値の型」という流れで関数を考えますが、TypeScript では 「戻り値の書き方や宣言のしかたが、逆に“型”を決める・変化させる」...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 関数型エイリアス

関数型エイリアスってそもそも何?まず一言でいうと、関数型エイリアスは「関数の“形”に名前をつける仕組み」です。「この関数は、こういう引数を受け取って、こういう型を返す」という“関数の型”に、わかりやす...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 関数を変数に代入する型

「関数を変数に代入する」ときに型で何を約束しているかまず前提をそろえます。TypeScript では、「関数そのもの」も値として扱えて、変数に代入できます。function add(a: number...
TypeScript

TypeScript | 基礎文法:関数の基礎 – コールバック関数の型

「コールバック関数の型」とは何かまず、「コールバック関数」という言葉をちゃんと掴みましょう。コールバック関数は、「関数に“引数として渡される関数”」のことです。function doTwice(fn:...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 関数式の型

「関数式の型」とは何かまず言葉の整理からいきます。TypeScript で「関数式の型」といったとき、だいたい次のようなものを指します。const add = function (a: number,...
TypeScript

TypeScript | 基礎文法:関数の基礎 – アロー関数の型

アロー関数でも「型の考え方」は普通の関数と同じまず一番大事なところから。アロー関数でも、「引数の型」と「戻り値の型」を決める考え方は、普通の function とまったく同じです。// 通常の関数fu...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 可変長引数(rest)

可変長引数(rest)は「いくつ来るか分からない引数」を受け取る仕組みまずイメージから。可変長引数(rest 引数)は、「この関数、引数が 1 個かもしれないし、10 個かもしれない。数が決まっていな...
TypeScript

TypeScript | 基礎文法:関数の基礎 – デフォルト引数

デフォルト引数は「来なかったときの標準値」デフォルト引数は、「この引数が渡されなかったときは、代わりにこれを使ってね」という“標準値”をあらかじめ決めておく仕組みです。書き方はシンプルで、引数に = ...
TypeScript

TypeScript | 基礎文法:関数の基礎 – オプション引数

オプション引数は「渡してもいいし、渡さなくてもいい」引数まずイメージからいきます。オプション引数は、「この引数は“あってもなくてもいい”よ」ということを型で表すための仕組みです。書き方はとてもシンプル...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日) | 第5章:仕上げと次の一歩 – TypeScript超入門(必要最低限)

この章でやる「TypeScript超入門」のゴールここでは、Next.js × React を「実務に耐えるレベル」にぐっと近づけるために、TypeScript の必要最低限だけを押さえます。やること...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日) | 第5章:仕上げと次の一歩 – エラーメッセージの読み方

エラーは「敵」じゃなくて「ヒント」ここまで来ると、もうあなたは「Next.js × React でアプリを作れる人」です。ここから先で一番“差”がつくのは、エラーが出たときにどう向き合うかです。エラー...
TypeScript

TypeScript | 基礎文法:関数の基礎 – never型の基礎

never型は「絶対に起こらない」を表す型まず一番大事なイメージからいきます。never 型は、「ここには“値が存在しないはずだ”」「ここには“絶対に到達しないはずだ”」という場所を型で表すための特別...
TypeScript

TypeScript | 基礎文法:関数の基礎 – void型

void型は「値を返さないつもり」を表す型void 型は、「この関数は“意味のある値”を返さない」という意図を型で表すための特別な型です。function print(message: string)...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 戻り値型の省略

「戻り値型の省略」って、していいの?ダメなの?まず結論から言うと、TypeScript では 「戻り値型は省略しても動く」 し、「でも省略しない方がいい場面もたくさんある」 です。function a...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 戻り値型

戻り値型って何を約束しているのか関数の「戻り値型」は、「この関数は、呼び出されたときに“最終的にどんな型の値を返すか”の約束を書く場所です。function greet(name: string): ...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 関数の引数型

関数の引数型って何をしているのかまず一番シンプルに言うと、「この関数は、どんな“形”の値を受け取るのかを約束する」のが引数型です。function add(a: number, b: number):...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – 実務でのオブジェクト設計感覚

実務でのオブジェクト設計は「現実世界のモデル化」から始まるまず大前提として、実務でのオブジェクト設計は、「TypeScript の文法をどう書くか」より前に、「現実の世界をどう切り取るか」から始まりま...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – オブジェクト型エラーの読み方

「オブジェクト型エラーの読み方」のゴールを決めるTypeScript のエラーメッセージは、最初は「英語の塊」にしか見えないと思います。でも、よく出るパターンは決まっていて、「どこを見れば“何がズレて...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – keyof typeof の組み合わせ

「keyof typeof」は値から「キーの型」を取り出す最強コンボまず結論からいきます。keyof typeof は、「実際のオブジェクト(値)から、そのプロパティ名の“型”を自動で作る」ための組み...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – typeof の基本

TypeScript の typeof は「値から型を取り出す道具」まず一番大事なポイントからいきます。TypeScript の typeof は、「ある値(変数・オブジェクトなど)から、その“型”を...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – keyof の基本

keyof は「プロパティ名だけを取り出すための型演算子」keyof は、「オブジェクト型から“プロパティ名”だけを取り出して、新しい型を作る」ための演算子です。まずは一番シンプルな例から見てみましょ...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – オブジェクトの分割代入

オブジェクトの分割代入って何をしているのかまずイメージからいきましょう。オブジェクトの分割代入は、「オブジェクトの中から、欲しいプロパティだけを“取り出して”変数にする書き方」です。const use...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – スプレッド構文と型

スプレッド構文ってそもそも何をしているのかスプレッド構文(...)は、「あるオブジェクト(や配列)の中身を“広げて”新しいオブジェクト(や配列)を作る記法」です。const user = { name...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – 型安全なオブジェクト更新

「型安全なオブジェクト更新」とは何を守ることかまずゴールをはっきりさせます。型安全なオブジェクト更新とは、「オブジェクトを書き換えるときに、存在しないプロパティ名を書いたり、間違った型の値を入れたりし...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – 部分一致が通らない理由

「部分一致が通らない」ってどういうことかまず、ここでいう「部分一致」はだいたいこんな状況を指しています。type User = { name: string; age: number;};const ...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – excess property check

excess property check とは何か(ざっくりイメージ)excess property check(余剰プロパティチェック)は、「その型に存在しないプロパティを、オブジェクトリテラルに...
JavaScript

JavaScript | 1 日 60 分 × 7 日アプリ学習:超初級編

1日目のゴールと全体の流れ1日目のテーマは「JavaScriptに触ってみて、“動いた!”を体で感じること」です。理解度は50%で十分。それよりも「自分の手で打ったコードが反応した」という経験を作りた...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – オブジェクトの再代入

「オブジェクトの再代入」とは何を指しているのかまず言葉の整理からいきます。ここでいう「オブジェクトの再代入」は、変数に入っているオブジェクトそのものを、別のオブジェクトに入れ替えることを指します。ty...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – ネストしたオブジェクト型

ネストしたオブジェクト型とは何か(まずはイメージから)ネストしたオブジェクト型は、「オブジェクトの中に、さらにオブジェクトが入っている形を、そのまま型で表現したもの」です。現実のデータって、ユーザーの...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – readonlyプロパティ

readonlyプロパティとは何か(「一度決めたら変えない」約束)readonly プロパティは、「このプロパティは一度値を入れたら、あとから書き換えてはいけない」という約束を型レベルで表す仕組みです...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – optionalプロパティ

optionalプロパティとは何か(「あってもなくてもいい」項目)オブジェクトのプロパティには、「必ず必要なもの」と「なくてもよいもの」があります。TypeScriptでは、「なくてもよいプロパティ」...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – type と interface の違い

まずざっくり:「どっちも“型を定義する道具”」type も interface も、「型に名前をつける」ための仕組みです。どちらもオブジェクトの形を表現できます。interface User { id...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – interface の基本

interface は「オブジェクトの設計図」interface は、オブジェクトの「形(どんなプロパティを持つか)」を表す設計図です。「このオブジェクトは、こういうプロパティを持っていて、その型はこ...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – 型エイリアスの作成

型エイリアスとは何か(ざっくり言うと「型にあだ名をつける」)型エイリアスは、既にある型に「別名(あだ名)」をつける仕組みです。type キーワードを使って、「この型をこれからはこの名前で呼ぶね」と宣言...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – オブジェクトリテラルの型推論

「オブジェクトリテラルの型推論」とは何をしてくれているのかオブジェクトリテラルとは、{ ... } で直接書いたオブジェクトのことです。const user = { name: "Taro", age...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – プロパティに型を付ける

「プロパティに型を付ける」とは何をしているのかオブジェクトは「名前付きの値の集まり」です。TypeScriptでは、その「名前付きの値」1つ1つに対して、「ここにはこういう型の値だけ入ってほしい」とい...
TypeScript

TypeScript | 基礎文法:オブジェクト基礎 – オブジェクト型の基本

オブジェクト型とは何か(まずはざっくりイメージ)オブジェクト型は、「関連する複数の値を、1つのまとまりとして扱うための型」です。name や age のような「項目(プロパティ)」と、その型をセットで...
JavaScript

JavaScript | ES6+ 文法:分割代入 – 安全な分割

安全な分割とは何か分割代入は「欲しい値だけ」を短く取り出せますが、未定義(undefined)や欠落、深いネスト、null、宣言順の問題で簡単にエラーになります。ここが重要です:安全な分割の基本は「外...
JavaScript

JavaScript | ES6+ 文法:分割代入 – 値の入れ替え

値の入れ替え(スワップ)とは何か分割代入を使うと、2つ以上の変数の値を“一時変数なし”で入れ替えられます。ここが重要です:左側のパターンに「新しい並び」を書き、右側に「古い並び」を配列で渡すだけ。読み...
JavaScript

JavaScript | ES6+ 文法:分割代入 – rest 要素

rest 要素とは何かrest 要素(残余要素)は、分割代入の左側で ...rest のように書き、“取りきれなかった残り全部”を配列やオブジェクトとしてまとめて受ける記法です。ここが重要です:配列な...
JavaScript

JavaScript | ES6+ 文法:分割代入 – 一部要素のスキップ

一部要素のスキップとは何か配列の分割代入では、左側のパターンにカンマだけを書いて「その位置の要素を受け取らない」ことができます。ここが重要です:スキップは“要素の位置”で意味を表すので、読み手が「どこ...
JavaScript

JavaScript | ES6+ 文法:分割代入 – 関数引数での使用

関数引数での分割代入とは何か関数のパラメータ部分で分割代入を使うと、渡された配列・オブジェクトから「必要な値だけ」を直接取り出して、引数の宣言に“意図(何を使うのか、欠けたらどうするのか)”を明示でき...
JavaScript

JavaScript | ES6+ 文法:分割代入 – ネスト分割

ネスト分割とは何かネスト分割(ネストした分割代入)は、オブジェクトや配列の“入れ子構造”から、必要な値だけを階層に沿って取り出す書き方です。ここが重要です:左側のパターン(構造の形)に合わせて、右側の...
JavaScript

JavaScript | ES6+ 文法:分割代入 – 変数名変更

変数名変更(エイリアス)とは何か分割代入の「変数名変更」は、オブジェクトのプロパティ名を“別名の変数”へ取り出す書き方です。ここが重要です:{ prop: alias } の形で「右側のオブジェクトの...
JavaScript

JavaScript | ES6+ 文法:分割代入 – デフォルト値

デフォルト値(既定値)とは何か分割代入のデフォルト値は、「取り出そうとした場所に値が無い(undefined)」とき、代わりに使われる“埋め草”です。ここが重要です:デフォルト値は undefined...
JavaScript

JavaScript | ES6+ 文法:分割代入 – オブジェクトの分割代入

オブジェクトの分割代入とは何かオブジェクトの分割代入は、オブジェクトから「欲しいプロパティだけ」を取り出し、同名の変数に一気に割り当てる ES6 の書き方です。ここが重要です:左側のパターン { id...
JavaScript

JavaScript | ES6+ 文法:分割代入 – 配列の分割代入

配列の分割代入とは何か配列の分割代入は、配列の「位置」に合わせて、複数の変数へ一気に値を取り出す書き方です。ここが重要です:左側のパターン に、右側の配列の先頭から順に対応します。足りない要素は un...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日) | 第4章:実用的React – ミニアプリ③

ここで作るTODOアプリのゴールここまでで、state・props・イベント・フォーム・配列表示・状態設計など、React / Next.js の「部品」は一通り触ってきました。ここではそれを全部まと...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日) | 第4章:実用的React – 状態設計の考え方

状態設計の全体イメージReact / Next.js を「とりあえず動かす」ところから一歩進むと、必ずぶつかるのが「状態(state)をどこに持つか問題」です。コンポーネントを分割すればするほど、どこ...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日) | 第4章:実用的React – フォーム処理

フォーム処理の全体イメージReact / Next.js で「実用的なアプリ」を作ろうとすると、必ず出てくるのがフォームです。ログインフォーム、問い合わせフォーム、検索フォーム、プロフィール編集画面…...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日) | 第4章:実用的React – ローディング・エラー処理

ローディング・エラー処理がなぜ「実務で必須」なのかアプリが「ちゃんと動く」ことと、「ちゃんと使える」ことは別物です。API からデータを取ってくるような画面では、必ずこういう瞬間が生まれます。データを...
JavaScript

JavaScript | 1 日 120 分 × 7 日アプリ学習:フォームバリデーションアプリ

この7日間のゴールと全体像この 7 日間は「ログインフォーム風のミニアプリ」を題材に、メールアドレスとパスワードの入力チェックを通して、正規表現での形式チェックエラー表示と submit 制御ユーザー...
TypeScript

TypeScript | 基礎文法:配列・タプル – 配列操作時の型エラー対処

よくある「配列操作の型エラー」はどこから来るのかTypeScriptで配列を触り始めると、かなりの確率で型エラーにぶつかります。でも、その多くは「TypeScriptが何を守ろうとしているか」が分かる...
TypeScript

TypeScript | 基礎文法:配列・タプル – forEachと型

forEachは「配列をなめるだけ」のメソッドforEach は、配列の各要素に対して順番に処理を実行するだけのメソッドです。map や filter と違って、戻り値を使って新しい配列を作ったりはし...
TypeScript

TypeScript | 基礎文法:配列・タプル – reduceの型指定

reduceの「型指定」とは何を決めるものかreduce は、配列を「1つの値」に畳み込むメソッドです。TypeScript的に一番大事なのは、「途中経過(累積値:acc)の型をどう扱うか」です。この...
TypeScript

TypeScript | 基礎文法:配列・タプル – findの戻り値型

findの基本的な動きと戻り値のイメージfind は、配列の中から「条件を満たす最初の要素」を1つだけ返すメソッドです。もし条件を満たす要素が1つも見つからなかった場合は、undefined を返しま...
TypeScript

TypeScript | 基礎文法:配列・タプル – filterの型推論

filterの型推論は「何が残る配列か」を推理してくれる仕組みfilter は、「条件を満たす要素だけを残して新しい配列を作る」メソッドです。TypeScript はここで、「元の配列の要素の型」と「...
TypeScript

TypeScript | 基礎文法:配列・タプル – 配列mapの型推論

「配列mapの型推論」とは何をしてくれているのかmap は、「配列の各要素を変換して、新しい配列を作る」メソッドです。TypeScriptは、このときに「元の配列の要素の型」と「変換関数の戻り値の型」...
TypeScript

TypeScript | 基礎文法:配列・タプル – スプレッド構文と型

スプレッド構文とは何か(型の世界でどう見えるか)スプレッド構文 ... は、配列やオブジェクトの「中身を展開する」ための記法です。配列なら「要素をバラして別の配列に入れ直す」、オブジェクトなら「プロパ...
TypeScript

TypeScript | 基礎文法:配列・タプル – 可変長タプル

可変長タプルとは何か(「一部だけ長さが伸びるタプル」)タプルは本来「要素数が固定」の型ですが、「ここまでは固定、それ以降は同じ型がいくつでも続いていい」という形を表現できるのが「可変長タプル(可変長タ...
TypeScript

TypeScript | 基礎文法:配列・タプル – タプルとreadonly

タプルとreadonlyの関係をざっくりイメージするタプルは「要素の数・順番・型が決まっている小さなセット」でした。ここに readonly を組み合わせると、「形も中身も変えない前提のタプル」を作れ...
TypeScript

TypeScript | 基礎文法:配列・タプル – タプルの要素アクセス

タプルの要素アクセスは「位置ごとに型が決まっている」のがキモタプルは、「何番目に何の型が入るか」まで型で決まっている配列でした。だからこそ、要素にアクセスしたときも「どの位置を取るか」で型が変わります...
TypeScript

TypeScript | 基礎文法:配列・タプル – タプルと配列の違い

まずざっくりしたイメージの違い同じ「[]」を使うのでややこしいんですが、役割はけっこう違います。配列:「同じ型の値が、いくつ並ぶか分からない入れ物」タプル:「要素の数・順番・型が決まっている、小さな“...
TypeScript

TypeScript | 基礎文法:配列・タプル – タプルの型固定

「タプルの型固定」とは何かタプルの一番大きな特徴は、「要素の数・順番・型がすべて固定される」ことです。普通の配列は「number が何個でも」「string が何個でも」という“長さフリー”な構造です...
TypeScript

TypeScript | 基礎文法:配列・タプル – タプルの基本構文

タプルの基本構文の全体像タプルは、「要素の数・順番・型が決まっている配列」を表すための構文です。基本形はとてもシンプルで、「配列リテラルの [] の中に、位置ごとの型をカンマ区切りで並べる」だけです。...
TypeScript

TypeScript | 基礎文法:配列・タプル – タプルとは何か

タプルとは何か(「位置に意味がある配列」)タプルは、ざっくり言うと「要素の数と順番と型が決まっている配列」です。普通の配列は「同じ型の値がズラッと並ぶもの」ですが、タプルは「1番目はこれ、2番目はこれ...
TypeScript

TypeScript | 基礎文法:配列・タプル – readonly配列

readonly配列とは何か(「中身を書き換えられない配列」)readonly配列は、一言でいうと「中身を変更できない配列」です。「参照はするけど、追加・削除・書き換えはさせたくない」というときに使い...
TypeScript

TypeScript | 基礎文法:配列・タプル – union型配列

union型配列とは何か(まずイメージから)union型配列は、「この配列には“いくつかの型のどれか”が入る」ということを型で表現したものです。たとえば「number か string のどちらかが入...
TypeScript

TypeScript | 基礎文法:配列・タプル – 配列に異なる型を入れた場合

「配列に異なる型を入れる」と TypeScript はどう解釈するかまず前提として、TypeScript は「配列の中身(要素)を見て、その配列の型を決める」言語です。なので、配列に異なる型を混ぜると...
TypeScript

TypeScript | 基礎文法:配列・タプル – 配列の型推論

配列の型推論とは何かTypeScriptは、わざわざ「: string[]」のように型を書かなくても、初期値から配列の型を自動で推論してくれます。つまり、次のように書いた瞬間に、コンパイラは「これは ...
TypeScript

TypeScript | 基礎文法:配列・タプル – string[] と Array<string>

string[] と Array<string> は「意味は同じ」最初に結論から言うと、string[] と Array<string> は意味はまったく同じです。どちらも「string 型の要素だけ...
TypeScript

TypeScript | 基礎文法:配列・タプル – 配列型の書き方

配列型とは何かをまずイメージする配列は「同じ種類の値を、順番付きで並べたもの」です。TypeScriptでは、「この配列には何の型の要素が入るのか」を型として表現できます。const numbers ...
TypeScript

TypeScript | 基礎文法:変数・基本型 – unknown型との違い

any型とunknown型は「似て非なるもの」どちらも「どんな値でも代入できる型」ですが、性格は真逆です。ざっくり言うと、any型:型チェックをほぼ無効化する「なんでもアリモード」unknown型:何...
TypeScript

TypeScript | 基礎文法:変数・基本型 – any型の危険性

any型が「一番危険な型」と言われる理由any 型は、「何でも入るし、どこにでも代入できる」特別扱いの型です。一見すると「エラーが消えて便利」に見えますが、その代わりにTypeScriptの一番大事な...
TypeScript

TypeScript | 基礎文法:変数・基本型 – any型とは何か

any型とは何か(TypeScriptの「なんでもアリ」モード)any 型は、一言でいうと「TypeScriptの型チェックをほぼ無効化するための型」です。number や string のように「こ...
TypeScript

TypeScript | 基礎文法:変数・基本型 – 型エラーの典型パターン

型エラーの「典型パターン」を知っておく意味型エラーは無限にあるように見えて、実はよく出るパターンはかなり限られています。この「典型パターン」を押さえておくと、エラーを見た瞬間に「ああ、これはあのパター...
TypeScript

TypeScript | 基礎文法:変数・基本型 – 型エラーの読み方

型エラーは「TypeScriptからの手紙」だと思って読むまず前提として、型エラーは「お前のコードがダメ」と責めてくるものじゃなくて、「ここがこうズレてるよ」と教えてくれるかなり親切な手紙です。だから...
TypeScript

TypeScript | 基礎文法:変数・基本型 – as const の意味

as const は「この値をそのままの形で固定して」と伝えるスイッチas const は、TypeScript に対してこう宣言するためのものです。「この値は“変わらない前提”だから、できるだけその...
TypeScript

TypeScript | 基礎文法:変数・基本型 – booleanリテラル型

booleanリテラル型とは何かbooleanリテラル型は、「true だけ」「false だけ」といった、特定の真偽値だけを許可する型です。普通の boolean 型は「true か false の...
TypeScript

TypeScript | 基礎文法:変数・基本型 – 数値リテラル型

数値リテラル型とは何か数値リテラル型は、「特定の数値だけを許可する型」です。普通の number 型は「どんな数値でもOK」ですが、数値リテラル型は「この変数には 1 しか入れてはいけない」「0 か ...
TypeScript

TypeScript | 基礎文法:変数・基本型 – 文字列リテラル型

文字列リテラル型とは何か文字列リテラル型は、「特定の文字列だけを許可する型」です。普通の string 型は「どんな文字列でもOK」ですが、文字列リテラル型は「この文字列“だけ”OK」という、もっと狭...
TypeScript

TypeScript | 基礎文法:変数・基本型 – リテラル型とは

リテラル型とは何か(ざっくりイメージ)リテラル型は、「特定の値そのものを型として扱う」ための仕組みです。普通の string 型は「どんな文字列でもOK」、number 型は「どんな数値でもOK」です...
TypeScript

TypeScript | 基礎文法:変数・基本型 – const時の型の固定

const は「値」と「型」をその場で固定する宣言const は「再代入できない変数」を宣言するキーワードですが、TypeScriptでは型の固定のされ方にも特徴があります。const で宣言した瞬間...
TypeScript

TypeScript | 基礎文法:変数・基本型 – 再代入時の型チェック

「再代入時の型チェック」とは何をしているのかTypeScriptは「一度決めた型に対して、その後もずっと一貫しているか」をコンパイル時にチェックします。変数に最初に値を入れた瞬間、あるいは型注釈を書い...
TypeScript

TypeScript | 基礎文法:変数・基本型 – 明示型と推論型の使い分け

「明示型」と「推論型」とは何かTypeScriptには、型を扱う2つのスタイルがあります。ひとつは「明示型」——自分で : string や : number のように型を書いて宣言するやり方。もうひ...
TypeScript

TypeScript | 基礎文法:変数・基本型 – 型推論の仕組み

型推論とは何か型推論(type inference)は、「あなたが書いたコードから、TypeScriptが自動的に型を推測してくれる仕組み」です。毎回すべての変数や関数に型注釈を書かなくても、初期値や...
TypeScript

TypeScript | 基礎文法:変数・基本型 – 型注釈の書き方

型注釈とは何か型注釈(type annotation)は、「この変数・この引数・この戻り値には、こういう型の値しか入れません」とコードの中で宣言するための書き方です。TypeScriptでは、変数名や...
TypeScript

TypeScript | 基礎文法:変数・基本型 – null / undefined

null / undefined は「値がない」を表す特別な2人まず大枠からいきます。null と undefined は、どちらも「値がない状態」を表すための特別な値です。ただし、まったく同じ意味で...
TypeScript

TypeScript | 基礎文法:変数・基本型 – boolean型

boolean型とは何かboolean型は、「真か偽か」を表すための型です。取れる値はたった2つ、true(真)か false(偽)だけ。「ログインしているか?」「在庫はあるか?」「エラーが起きたか?...
TypeScript

TypeScript | 基礎文法:変数・基本型 – number型

number型とは何かTypeScriptのnumber型は、「数値」を表すための基本型です。整数も小数も、正の数も負の数も、すべてまとめてnumberとして扱います。JavaScript/TypeS...
TypeScript

TypeScript | 基礎文法:変数・基本型 – string型

string型とは何かTypeScriptのstring型は、「文字列」を表すための基本型です。人の名前、メッセージ、住所、IDなど、「文字の並び」で表現されるものはすべてstringで扱います。Ty...
TypeScript

TypeScript | 基礎文法:変数・基本型 – let / const の違い

let と const は「変えられるかどうか」を表すスイッチまず大事な前提として、TypeScript(というかモダンなJavaScript)では、変数宣言に var ではなく let と cons...
TypeScript

TypeScript | 基礎文法:環境・前提理解 – VSCodeでのTypeScript補完確認

VSCodeはTypeScriptと相性がいい「賢いノート」VSCodeは、TypeScriptを使うときにほぼ標準と言っていいエディタです。理由はシンプルで、「TypeScriptの型情報を理解して...
TypeScript

TypeScript | 基礎文法:環境・前提理解 – コンパイルの流れ(ts → js)

TypeScriptコードはそのままでは動かないまず大前提として、ブラウザも Node.js も TypeScript を「そのまま」実行することはできません。理解できるのはあくまで JavaScri...
TypeScript

TypeScript | 基礎文法:環境・前提理解 – strict モードの意味

strict モードとは何かTypeScript の strict モードは、一言でいうと「型チェックを最大限きびしくするスイッチ」です。tsconfig.json の compilerOptions...
TypeScript

TypeScript | 基礎文法:環境・前提理解 – tsconfig.json の役割

tsconfig.jsonとは何かtsconfig.json は、TypeScript プロジェクトの「設定ファイル」です。TypeScript コンパイラ(tsc)が「どのファイルを、どんなルールで...
TypeScript

TypeScript | 基礎文法:環境・前提理解 – TypeScriptのインストール

TypeScriptをインストールする前に知っておく前提TypeScriptは単体で動くわけではなく、「Node.js」と「npm」が前提になります。npmはNode.jsに付属しているパッケージ管理...
TypeScript

TypeScript | 基礎文法:環境・前提理解 – npm / npx の違い

npmとnpxは「似てるけど役割が違う道具」npmとnpxは、どちらもNode.jsをインストールすると一緒についてくるコマンドです。名前が似ているのでややこしいですが、役割はけっこう違います。ざっく...
TypeScript

TypeScript | 基礎文法:環境・前提理解 – Node.jsの役割

Node.jsとは何かと、TypeScriptとの関係Node.jsは「ブラウザの外でJavaScriptを動かすための実行環境」です。中身では、もともとChromeなどのブラウザで使われている高速な...
TypeScript

TypeScript | 基礎文法:環境・前提理解 – TypeScriptが解決する問題

TypeScriptが解決しようとしている世界の悩みTypeScriptは「かっこいい新しい言語を作りたかったから」生まれたわけではなく、「JavaScriptで本気の開発をするときに、みんながハマっ...
TypeScript

TypeScript | 基礎文法:環境・前提理解 – JavaScriptとの違い

TypeScriptとJavaScriptの関係と前提理解TypeScriptは「JavaScriptを拡張した言語」で、よく「JavaScriptのスーパーセット」と呼ばれます。つまり、JavaSc...
TypeScript

TypeScript | 基礎文法:環境・前提理解 – TypeScriptとは何か

TypeScriptとは何かTypeScriptは「JavaScriptをもっと書きやすく、安全にしたバージョン」と考えるとイメージしやすいです。技術的には「JavaScriptのスーパーセット(上位...
Python

Python | Web フレームワーク:Django のモデル

概要(Django のモデル=「DBテーブルを Python クラスとして扱う仕組み」)Django の「モデル」は一言でいうと、「データベースのテーブルを、Python のクラスとして表現したもの」...
Python

Python | Web フレームワーク:テンプレート(Jinja2)

概要(テンプレート=「HTML の型にデータを流し込む仕組み」)テンプレート(Jinja2)は一言でいうと、「HTML のひな型(型)をあらかじめ用意しておいて、Python のデータをそこに流し込ん...
Python

Python | Web フレームワーク:ドキュメント UI

概要(ドキュメント UI=「API 仕様書をブラウザで触れる画面」にしたもの)ドキュメント UI は、「API の仕様を、人間がブラウザ上で見たり、その場で試したりできる画面」のことです。FastAP...
Python

Python | Web フレームワーク:OpenAPI

概要(OpenAPI=「API の設計図を機械と人間で共有するためのフォーマット」)OpenAPI は、「この Web API は、どんな URL があって、どんな入力を受け取り、どんなレスポンスを返...
Python

Python | Web フレームワーク:静的ファイル

概要(静的ファイル=「ただ置いておくだけで中身が変わらないファイル」)静的ファイルは、「サーバー側で中身を計算したり書き換えたりせず、そのままブラウザに渡すだけのファイル」のことです。具体的には、よく...
JavaScript

JavaScript | ES6+ 文法:テンプレート文字列 – 従来文字列との比較

何が違うのか(テンプレート文字列 vs 従来の文字列)テンプレート文字列はバッククォートで囲み、${...} に式をそのまま埋め込めて、複数行も“書いたとおり”に保持します。従来の文字列(' や ")...
JavaScript

JavaScript | ES6+ 文法:テンプレート文字列 – 可読性向上パターン

可読性向上パターンの考え方テンプレート文字列は“見た目をコードにそのまま表せる”のが強みです。ここが重要です:見た目(レイアウト)とロジック(計算・整形)を分離し、式の埋め込みは短く保つことで、初心者...
JavaScript

JavaScript | ES6+ 文法:テンプレート文字列 – XSS 対策の注意点

テンプレート文字列と XSS の基本認識テンプレート文字列はバッククォートで囲み、${...} に式を埋め込める便利な仕組みですが、ここが重要です:テンプレート文字列自体には自動エスケープ機能がありま...
JavaScript

JavaScript | ES6+ 文法:テンプレート文字列 – タグ付きテンプレート

タグ付きテンプレートとは何かタグ付きテンプレートは、テンプレート文字列の先頭に“関数名”を置き、文字列と式の分解結果をその関数で“加工してから”最終文字列を得る仕組みです。ここが重要です:通常のテンプ...
JavaScript

JavaScript | ES6+ 文法:テンプレート文字列 – HTML 生成用途

テンプレート文字列で HTML を作る意味テンプレート文字列はバッククォートで囲み、${...} に式を埋め込めるため、“見た目どおり”に HTML 断片を組み立てられます。ここが重要です:複数行とイ...
JavaScript

JavaScript | ES6+ 文法:テンプレート文字列 – 関数呼び出し埋め込み

関数呼び出し埋め込みとは何かテンプレート文字列はバッククォートで囲み、${ ... } の中に“任意の式”を置けます。その式に関数呼び出しを書けば、戻り値が文字列の中にそのまま埋め込まれます。ここが重...
JavaScript

JavaScript | ES6+ 文法:テンプレート文字列 – 条件式埋め込み

条件式埋め込みとは何かテンプレート文字列はバッククォートで囲み、${...}の中に“式”を書いて評価結果を挿入できます。ここが重要です:if/else をそのまま書くのではなく、三項演算子や論理演算子...
JavaScript

JavaScript | ES6+ 文法:テンプレート文字列 – 改行保持

改行保持とは何かテンプレート文字列はバッククォートで囲むだけで、書いた改行や空白をそのまま保持します。ここが重要です:'\n' を手書きしなくても、テンプレート内の改行が実際の文字列に含まれるため、H...
JavaScript

JavaScript | ES6+ 文法:テンプレート文字列 – 式の埋め込み

式の埋め込みとは何かテンプレート文字列はバッククォートで囲み、${ ... } に“式”を入れて、その評価結果を文字列内に埋め込めます。ここが重要です:式は変数だけでなく、計算、関数呼び出し、条件(三...
JavaScript

JavaScript | ES6+ 文法:テンプレート文字列 – バッククォート

テンプレート文字列とは何かテンプレート文字列は、バッククォート()で囲む新しい文字列リテラルです。ここが重要です:式の埋め込み(${...})、複数行の文字列、可読性の高い整形が“素の文法”で書けます...
JavaScript

JavaScript | 1 日 120 分 × 7 日アプリ学習:ローカル保存対応メモ帳

この7日間のゴールと全体像この 7 日間は「ローカル保存対応メモ帳」を題材に、ブラウザだけで完結する“ちゃんとした”アプリを作りながら、次の3つを体に入れることがゴールです。localStorage ...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日) | 第4章:実用的React – データ取得(fetch)

APIとは何か「データください」をお願いするための窓口React / Next.js で「データを画面に表示したい」とき、どこかからデータを「取ってくる」必要があります。そのときに話に出てくるのが A...
Next.js

Next.jsで学ぶReact講座(完全初心者向け・30日) | 第4章:実用的React – useEffect入門

useEffectとは「画面の変化に合わせて“副作用”を実行する仕組み」ここまで扱ってきた useState は、「値(状態)を覚えておく仕組み」でした。useEffect は、それとは別の役割を持っ...
JavaScript

JavaScript | ES6+ 文法:関数の進化 – 高階関数との相性

高階関数とは何か高階関数は「関数を“引数として受け取る”、または“関数を返す”関数」のことです。関数を値として扱えることで、ロジックの差し替え・再利用・合成が簡単になります。ここが重要です:ES6+ ...
スポンサーリンク
タイトルとURLをコピーしました