プログラミング

スポンサーリンク
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:基本判定・変換 – null または undefined 判定

「null または undefined 判定」とは何か業務コードでは「値が 0 かどうか」よりも、「そもそも値が“あるか・ないか”」を判定する場面がとても多いです。ここでいう「ない」は、JavaScr...
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:基本判定・変換 – undefined 判定

JavaScript における undefined とはundefined は「まだ値が決まっていない」「存在しないものを見に行った」ときに JavaScript が自動的に使う特別な値です。プログラ...
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:基本判定・変換 – null 判定

JavaScript における「null」とはまず「null」は、「ここには“意図的に”値がない」ということを表す特別な値です。たとえば「まだデータが来ていない」「検索したけど見つからなかった」など、...
JavaScript

JavaScript | 非同期処理:Promise 基礎 - エラー伝播

まず「エラー伝播」を一言でいうとPromise のエラー伝播は、「どこかの then で失敗しても、その“失敗情報”がチェーンを下へ流れていき、最後の catch まで届く仕組み」のことです。コールバ...
JavaScript

JavaScript | 非同期処理:Promise 基礎 – 値の受け渡し

まず「値の受け渡し」を一言でいうとPromise の「値の受け渡し」は、「前の then(または resolve/reject)で決まった値が、次の then / catch にバトンのように渡ってい...
JavaScript

JavaScript | 非同期処理:Promise 基礎 – チェーン処理

まず「チェーン処理」を一言でいうとPromise のチェーン処理は、「非同期のステップを、then を使って“上から順番に”つなげていく書き方」 です。コールバック地獄だと、A の中で B を呼んでB...
JavaScript

JavaScript | 非同期処理:Promise 基礎 – finally の役割

まず finally を一言でいうとfinally は、「Promise が成功しても失敗しても“どっちにしても最後に必ず実行したい処理”を書く場所」です。例えば、ローディング表示を消したいモーダルを...
JavaScript

JavaScript | 非同期処理:Promise 基礎 – catch の基本

まず catch を一言でいうとcatch は、「Promise で起きたエラー(失敗)を、最後にまとめて受け止める場所」です。then が「成功したときの続きを書く場所」だとしたら、catch は ...
JavaScript

JavaScript | 非同期処理:Promise 基礎 – then の基本

まず then を一言でいうとthen は、「Promise が“成功したあとにやりたい処理”を登録するための関数」です。Promise は「そのうち結果が入る箱」でしたね。then はその箱に対して...
JavaScript

JavaScript | 非同期処理:Promise 基礎 – reject の役割

まず「reject」のイメージを一言でreject は、「この Promise の非同期処理は“失敗”で終わったよ、と確定させるスイッチ」です。そして同時に、「なぜ失敗したのか(エラー情報)はこれだよ...
JavaScript

JavaScript | 非同期処理:Promise 基礎 – resolve の役割

まず「resolve」のイメージを一言でresolve は、「この Promise の非同期処理は“成功”で終わったよ、と確定させるスイッチ」です。そして同時に、「成功した結果はこれだよ」と、Prom...
JavaScript

JavaScript | 非同期処理:Promise 基礎 – Promise の状態(pending / fulfilled / rejected)

Promise の状態を一言でイメージするPromise は「そのうち結果が入る箱」 で、その箱には常にどれか 1 つの「状態」がくっついています。pending(保留中)fulfilled(成功)r...
JavaScript

JavaScript | 非同期処理:Promise 基礎 – Promise とは何か

まず Promise を一言でイメージするPromise は、「まだ終わっていない非同期処理の“結果がそのうち入る箱”」だと思ってください。今は結果が分からないけど、そのうち 成功するかもしれないもし...
Java

Java Tips | 文字列処理:郵便番号チェック

郵便番号チェックは「“7桁の数字っぽいもの”だけを通す」ための技住所入力フォーム、配送先登録、請求書の宛先設定…。業務システムで「郵便番号」を扱う場面もかなり多いですよね。ここで何もチェックしないと、...
Java

Java Tips | 文字列処理:電話番号チェック

電話番号チェックは「“電話っぽい数字”だけを通す」ための技業務システムでは、電話番号を入力してもらう場面が本当に多いです。問い合わせフォーム、会員登録、配送先情報、緊急連絡先…。ここでチェックをしない...
Java

Java Tips | 文字列処理:メール形式チェック

メール形式チェックは「“それっぽい文字列”を早めにはじく」ための技業務システムでは、ユーザーにメールアドレスを入力してもらう場面が山ほどあります。ログインID、問い合わせフォーム、会員登録、通知先設定...
Java

Java Tips | 文字列処理:伏字処理

伏字処理は「内容は伝えつつ、直接は書かない」ための技マスク処理は「個人情報などを見せていい範囲だけ残す」テクニックでした。一方で 伏字処理 は、もう少し“表現寄り”のテクニックです。NGワードを伏せた...
Java

Java Tips | 文字列処理:マスク処理

マスク処理は「見せていいところだけ見せる」ための技業務システムでは、「全部は見せちゃダメだけど、ある程度は見せたい情報」がたくさんあります。クレジットカード番号電話番号メールアドレス会員ID、社員番号...
PHP

PHP Tips | 文字列処理:フォーマット – HTML エスケープ

「HTML エスケープ」で何を守りたいのかまず、ここをちゃんとイメージしてほしいです。ユーザー入力をそのまま画面に出すと、こういうことが起きます。$name = $_GET['name'] ?? 'ゲ...
PHP

PHP Tips | 文字列処理:フォーマット – URL デコード

「URL デコード」で何をしたいのかイメージする前回の「URL エンコード」は、「生の文字列 → URL 用に安全な文字列(%E3%81…)」への変換でした。URL デコードは、その逆です。"Hell...
PHP

PHP Tips | 文字列処理:フォーマット – URL エンコード

そもそも「URL エンコード」とは何をしているのかまず、ざっくりイメージからいきます。"こんにちは PHP & URL" → "こんにちは PHP & URL" のまま URL に入れる → 文字化け...
PHP

PHP Tips | 文字列処理:フォーマット – 数字のみ抽出

「数字のみ抽出」でやりたいことをまずイメージするここでやりたいのは、こういうことです。"合計: 1,234円(税込)" → "1234""TEL: 03-1234-5678" → "031234567...
PHP

PHP Tips | 文字列処理:フォーマット – 英数字のみ抽出

「英数字のみ抽出」でやりたいことをイメージするまず、ゴールのイメージからはっきりさせます。"ユーザーID: user-001" → "user001""商品コード ABC-123-JP" → "ABC...
PHP

PHP Tips | 文字列処理:フォーマット – 数値以外除去

「数値以外除去」でやりたいことをイメージするまず、ゴールのイメージからはっきりさせます。"1,234" → "1234""¥9,800円" → "9800""TEL: 03-1234-5678" → ...
PHP

PHP Tips | 文字列処理:フォーマット – 金額フォーマット(通貨記号付き)

「通貨記号付きの金額フォーマット」でやりたいことをイメージするまず、ゴールのイメージからいきます。1000 → "¥1,000"1234567 → "¥1,234,567"1234.5 → "¥1,2...
PHP

PHP Tips | 文字列処理:フォーマット – 金額フォーマット(カンマ)

「金額フォーマット(カンマ)」でやりたいことをイメージするまず、やりたいことはとてもシンプルです。"1000" → "1,000""1000000" → "1,000,000""0" → "0""12...
PHP

PHP Tips | 文字列処理:フォーマット – 郵便番号フォーマット

まず「郵便番号フォーマット」でやりたいことをはっきりさせる業務で郵便番号を扱うとき、だいたいこんな状況になります。ユーザー入力はバラバラです。"1234567""123-4567""123−4567"...
PHP

PHP Tips | 文字列処理:フォーマット – 電話番号フォーマット

まず「電話番号フォーマット」でやりたいことをはっきりさせる業務で電話番号を扱うとき、だいたいこんな問題が出てきます。ユーザーが「ハイフンあり」「ハイフンなし」「スペース入り」などバラバラに入力してくる...
C#

C# Tips | 文字列処理:パディング(右)

はじめに 「右パディング」は“枠を決めて、左にそろえて並べる”技左パディングが「右寄せ」だとしたら、右パディングはその逆で「左寄せ」をきれいにそろえるためのテクニックです。業務システムだと、例えばこん...
C#

C# Tips | 文字列処理:パディング(左)

はじめに 「左パディング」は“桁をそろえて、きれいに並べる”技業務システムでは、こんな表示やデータ形式がよく出てきます。1 → 001 にしたい(3桁でゼロ埋め)A → A にしたい(4文字幅で右寄せ...
C#

C# Tips | 文字列処理:ランダム文字列生成

はじめに 「ランダム文字列生成」は“それっぽいIDやトークンを安全に作る”技業務システムで「ランダム文字列」が欲しくなる場面はたくさんあります。一時パスワードメール確認用トークン招待コードファイル名の...
C#

C# Tips | 文字列処理:UUID生成

はじめに 「UUID生成」は“かぶらないIDを雑に、でも安全に作る”技業務システムを作っていると、ほぼ必ず出てくるのが「一意なIDが欲しい」という場面です。注文ID、トランザクションID、ファイル名、...
C#

C# Tips | 文字列処理:電話番号検証

はじめに 「電話番号検証」は“ぐちゃっとした入力を、安全な数字列に整える”仕事電話番号入力って、郵便番号以上に“ゆらぎ”が激しいです。03-1234-56780901234567803−1234−56...
C#

C# Tips | 文字列処理:郵便番号検証

はじめに 「郵便番号検証」は“ゆらぎを受け止めて、きっちり7桁にそろえる”仕事郵便番号入力って、一見シンプルに見えますよね。「7桁の数字でしょ?」で終わりそうですが、実務ではそうはいきません。「123...
C#

C# Tips | 文字列処理:URL検証

はじめに 「URL検証」は“危なそうな文字列を入口で止めるフィルタ”業務システムで URL を扱う場面は多いですよね。ユーザーが入力したホームページURL外部サービスのコールバックURL管理画面で設定...
C#

C# Tips | 文字列処理:メールアドレス検証

はじめに 「メールアドレス検証」は“現実と割り切りのバランスを取る技”業務システムでほぼ確実に出てくるのが「メールアドレス入力欄」です。ここで悩ましいのが、「どこまで厳密にチェックするか?」です。RF...
C#

C# Tips | 文字列処理:日本語判定

はじめに 「日本語判定」は“文字列の中身の“顔ぶれ”を見分ける技業務システムだと、こんな要件がよく出てきます。氏名は日本語で入力してほしい(漢字・ひらがな・カタカナ)ログインIDは日本語禁止(英数字の...
C#

C# Tips | 文字列処理:英字のみ抽出

はじめに 「英字のみ抽出」は“コードやIDからアルファベットの芯だけを抜き出す”技業務システムでは、こんな文字列がよく出てきます。"UserID: AB123""商品コード: JP-2025-001"...
C#

C# Tips | 文字列処理:数字のみ抽出

はじめに 「数字のみ抽出」は“文字列から数値の芯だけを取り出す”技業務システムでは、こういう文字列がよく出てきます。"ID: 12345""注文No=AB-2025-00123""TEL 03-123...
C#

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

はじめに 「正規表現置換」は“パターンで探して、一気に書き換える”技一致判定は「合っているかどうか」、抽出は「取り出す」でした。正規表現置換は、そのさらに一歩先——「合っているところを、別の形に書き換...
C#

C# Tips | 文字列処理:正規表現抽出

はじめに 「正規表現抽出」は“文字列の中から欲しいところだけをすくい取る”技一致判定(IsMatch)は「ルールに合っているか?」を見るだけでしたが、業務ではそれだけでは足りません。ログの 1 行から...
C#

C# Tips | 文字列処理:正規表現一致判定

はじめに 「正規表現一致判定」は“文字列ルールをコードにする道具”業務システムでは、「この文字列はメールアドレス形式か?」「このコードは英数字だけか?」「この入力は3桁の数字か?」といった“ルールチェ...
C#

C# Tips | 文字列処理:文字列結合

はじめに 「文字列結合」は“バラした情報を一つの形にまとめる”技さっきまで「文字列分割」でバラす話をしてきましたが、業務ではその逆——「バラバラの情報を 1 本の文字列にまとめる」場面も同じくらい多い...
Java

Java | Java 詳細・モダン文法:JVM・パフォーマンス – escape analysis

escape analysis を一言でいうとescape analysis(エスケープ解析)は、JIT コンパイラが「このオブジェクトはメソッドの外に“逃げる”か?」「このオブジェクトはスレッドの外...
Java

Java | Java 詳細・モダン文法:JVM・パフォーマンス – String プール

String プールを一言でいうとString プールは、「同じ内容の文字列を、JVM の中でできるだけ 1 個だけにまとめて共有する仕組み」です。Java の String は不変(immutabl...
Java

Java | Java 詳細・モダン文法:JVM・パフォーマンス – 不要なオブジェクト生成

「不要なオブジェクト生成」がなぜパフォーマンス問題になるのかJava では new しても GC が片付けてくれるので、「とりあえず new しとけばいいや」となりがちです。でも、オブジェクトを作るた...
Java

Java | Java 詳細・モダン文法:JVM・パフォーマンス – パフォーマンス測定

「なんとなく速そう」ではなく「数字で語る」がパフォーマンス測定パフォーマンス測定の一番大事なポイントは、「体感」や「勘」ではなく、数字で語ることです。「この実装の方が速い気がする」ではなく、「この処理...
Java

Java | Java 詳細・モダン文法:JVM・パフォーマンス – Stop The World

Stop The World を一言でいうとStop The World(STW)は、「JVM が何か重要な作業をするために、アプリケーションのスレッドを一時的に全部止めること」です。特に GC(ガー...
Java

Java | Java 詳細・モダン文法:JVM・パフォーマンス – GC の基本

GC を一言でいうと「いらなくなったオブジェクトの自動掃除屋」GC(Garbage Collection)は、「もう使われていないオブジェクトを、自動で見つけて捨ててくれる仕組み」です。C や C++...
Java

Java | Java 詳細・モダン文法:JVM・パフォーマンス – ヒープ / スタック

ヒープとスタックを「机」と「倉庫」でイメージするまずはイメージからいきましょう。スタックは「今やっている作業のための机」。ヒープは「作ったモノを置いておく大きな倉庫」。机(スタック)の上には、今呼び出...
Java

Java | Java 詳細・モダン文法:JVM・パフォーマンス – JVM メモリ構造

JVM メモリ構造をざっくり一枚の絵にするまずイメージからいきます。JVM のメモリは、大きく言うと次のような「部屋」に分かれています。ヒープ(Heap):new したオブジェクトが住む場所スタック(...
JavaScript

JavaScript | 非同期処理:コールバック – Promise が生まれた背景

なぜ Promise なんてものが出てきたのか(ざっくり全体像)Promise は、「非同期処理をコールバックだけで頑張った結果、みんながしんどくなったので生まれた“救急アイテム” です。特に、次のよ...
JavaScript

JavaScript | 非同期処理:コールバック – 可読性の低下

「コールバックで可読性が落ちる」という話の本質コールバックは、非同期処理には欠かせない仕組みです。ただし、使い方次第でコードの「可読性(読みやすさ)」を一気に悪くしてしまう ことがあります。特に問題に...
JavaScript

JavaScript | 非同期処理:コールバック – エラーハンドリングの問題

コールバックとエラーハンドリングの関係(まず全体像)コールバックを使った非同期処理では、「エラーをどう扱うか」 が一気に難しくなります。同期処理なら、try { const result = doSo...
JavaScript

JavaScript | 非同期処理:コールバック – コールバック地獄

コールバック地獄とは何か(まずイメージ)コールバック地獄(callback hell)は、「非同期処理をコールバックだけでつなぎまくった結果、コードが右に右にネストしまくって、読めない・直せない状態」...
JavaScript

JavaScript | 非同期処理:コールバック – ネストしたコールバック

ネストしたコールバックとは何か(まずイメージ)ネストしたコールバックというのは、「コールバックの中で、さらに別の非同期処理を呼び、その中でまたコールバックを書き…と階段状に深くなっていく書き方」 のこ...
JavaScript

JavaScript | 非同期処理:コールバック – 同期コールバックとの違い

いちばん大事な違いのイメージまず、ざっくりこう覚えてください。同期コールバック→ 「その場で、すぐに呼ばれるコールバック」非同期コールバック→ 「あとで、別のタイミングで呼ばれるコールバック」どちらも...
JavaScript

JavaScript | 非同期処理:コールバック – 非同期コールバック

まず「非同期コールバック」を一言でイメージする非同期コールバックは、「“今すぐ”ではなく、“あとで”呼び出してもらうために登録しておく関数」のことです。普通のコールバックも「あとで呼ばれる関数」ですが...
JavaScript

JavaScript | 非同期処理:コールバック – setInterval の仕組み

setInterval を一言でいうと何かsetInterval は「この処理を◯ミリ秒ごとにくり返し実行してね」とブラウザ(または Node)に頼む関数です。setTimeout が「1回だけ、あと...
JavaScript

JavaScript | 非同期処理:コールバック – setTimeout の仕組み

まず setTimeout を一言でイメージするsetTimeout は、「この処理を◯ミリ秒“後に”実行してね」とブラウザ(または Node)にお願いする関数です。ポイントはここです。setTime...
JavaScript

JavaScript | 非同期処理:コールバック – コールバック関数とは

コールバック関数のイメージ(まず感覚から)コールバック関数は、「あとで呼んでね」と他の関数に渡しておく関数 です。自分で直接 myFunc() と呼ぶのではなく、「この処理が終わったときに、この関数を...
Java

Java Tips | 文字列処理:制御文字除去

制御文字除去は「“見えないゴミ”を取り除いてトラブルを防ぐ」技業務で外部システムからファイルを受け取ったり、コピー&ペーストされたテキストを扱っていると、画面には見えないのに、処理だけおかしくなる“謎...
Java

Java Tips | 文字列処理:JSONエスケープ

JSONエスケープは「文字列を“JSONとして壊さない形”にする」技業務でAPIを作ったり、フロントとバックエンドでJSONをやり取りしていると、「文字列をJSONに埋め込んだらパースエラーになった」...
Java

Java Tips | 文字列処理:SQLエスケープ

SQLエスケープは「文字列を“SQLの一部”として安全に扱う」ための技…なんだけど最初に、いちばん大事なことから言います。業務・実務では「SQLエスケープを書けるようになる」ことよりも、「SQLエスケ...
Java

Java Tips | 文字列処理:HTMLアンエスケープ

HTMLアンエスケープは「エンコードされた文字を“元の文字”に戻す」技HTMLエスケープは、< や & を < や & に変換して「安全に表示する」ための技でした。HTMLアンエスケープ...
Java

Java Tips | 文字列処理:HTMLエスケープ

HTMLエスケープは「文字列を“ただの文字”として安全に表示する」技Web画面に文字列を表示するとき、その文字列が「HTMLとして解釈されるか」「ただの文字として扱われるか」は、とても重要です。<b>...
Java

Java Tips | 文字列処理:改行統一

改行統一は「バラバラな改行コードを“同じルール”にそろえる」技業務システムを書いていると、いろんなところからテキストが入ってきます。Windows で作られたファイル、Linux サーバ上のログ、We...
Java

Java Tips | 文字列処理:中央寄せ

中央寄せは「タイトルや見出しを“きれいに見せる”」ための技左寄せ・右寄せは「読みやすさ」「桁そろえ」のためのテクニックでしたが、中央寄せ(センタリング) はどちらかというと「見た目のバランス」を整える...
Java

Java Tips | 文字列処理:右寄せ

右寄せは「桁をそろえて“数字やコードを読みやすくする”」技左寄せが「文字を左にそろえて見やすくする」技だとしたら、右寄せは「数字や桁ものを右にそろえて、比較しやすくする」技です。固定長ファイル、帳票、...
Java

Java Tips | 文字列処理:左寄せ

左寄せは「人間が読むために“左側をそろえる”」技パディングの話で「左パディング」「右パディング」をやりましたが、その中でも 左寄せ は「人間が読むときの見やすさ」に直結するテクニックです。固定長ファイ...
Java

Java Tips | 文字列処理:パディング

パディングは「長さをそろえて“機械が扱いやすい文字列”にする」技業務システムでは、「桁数が決まっている文字列」がよく出てきます。顧客番号は10桁、請求書番号は8桁、固定長ファイルの項目は右詰め・左詰め...
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(オプショナルチェイニング)は?. という記号で書く、「存在しないかもしれないプロパティに安全にアクセ...
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 に標準搭載されているデータ取得・加工・変換専用ツール大量データ...
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 | 基本ユーティリティ:空文字判定

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