Java

スポンサーリンク
Java

Java | 「木構造の距離計算」をもっと深く理解する

Javaで考える「木構造の距離計算」をもっと深く理解する(前半)木構造の距離をきちんと理解できると、ツリー探索・木DP・グラフアルゴリズムが一気につながって見えるようになります。 距離は「ノード同士が...
Java

Java | ツリー構造を「再帰」で処理する

Javaのツリー構造を「再帰」で処理するという発想(前半)ツリー構造を扱うとき、再帰はほとんど「チート級」に相性が良いテクニックです。 フォルダ階層、メニュー構造、組織図、DOMツリー、JSONのネス...
Java

Java | Tree Dynamic Programming

Javaで学ぶ「木DP(Tree Dynamic Programming)」(前半)木DP(Tree DP)は、動的計画法(Dynamic Programming)と木構造(ツリー)が組み合わさったテ...
Java

Java | グラフ探索アルゴリズム

Javaで学ぶ「グラフ探索アルゴリズム」(前半)グラフ探索アルゴリズムは、アルゴリズム学習の中でも「一段レベルが上がる」テーマです。 SNSの友達関係、道路の経路、依存関係、ネットワーク構造など、 現...
Java

Java | ソートアルゴリズムを体系的に学ぶ

Javaで学ぶ「アルゴリズムとデータ構造」(前半)アルゴリズムとデータ構造は、Javaに限らずすべてのプログラミング言語で「土台」になる考え方です。 文法を覚えるだけでは、コードは書けても「うまい設計...
Java

Java | ソートアルゴリズムを体系的に学ぶ

Javaでソートアルゴリズムを体系的に学ぶ(前半)ソート(並べ替え)は、アルゴリズムの世界で最も基本的でありながら、 「きちんと体系的に理解しているか」がはっきり差になるテーマです。 配列やリストを昇...
Java

Java | 再帰のセキュリティ上の注意点

Javaで考える「再帰のセキュリティ上の注意点」(前半)再帰は、アルゴリズムを美しく書ける強力なテクニックです。 ツリー探索、ファイル走査、数列計算、パーサ、バックトラッキングなど、 多くの場面で再帰...
Java

Java | フィボナッチを高速化する方法

Javaで学ぶ「フィボナッチを高速化する方法」(前半)フィボナッチ数列は、アルゴリズム学習の定番テーマです。 しかし、素直な再帰で書いたフィボナッチは「とんでもなく遅い」コードになります。 前半では、...
Java

Java | ツリー構造の実践的な操作

Javaで学ぶ「ツリー構造の実践的な操作」(前半)ツリー構造は、アルゴリズムの教科書だけの話ではなく、実務で頻繁に登場するデータ構造です。 フォルダ階層、メニュー構造、組織図、JSON、XML、DOM...
Java

Java | 「二分探索木(BST)」をもっと深く理解する

Javaで学ぶ「二分探索木(BST)」をもっと深く理解する(前半)二分探索木(Binary Search Tree, BST)は、「探索を速くするための木構造」です。 配列やリストでの線形探索に比べて...
Java

Java | 木構造の最短経路・距離計算

Javaで学ぶ「木構造の最短経路・距離計算」(前半)木構造の「距離」や「最短経路」は、アルゴリズムの世界でも実務でもよく登場するテーマです。 フォルダ間の距離、組織図での上下関係の距離、ネットワーク構...
Java

Java | アルゴリズムの計算量

Javaで学ぶ「アルゴリズムの計算量」(前半)アルゴリズムの計算量は、「そのコードがどれくらい遅くなる可能性があるか」を見抜くためのものです。 小さい入力では気にならなくても、データ量が増えた瞬間に「...
Java

Java | ツリー構造の探索アルゴリズム

Javaで学ぶ「ツリー構造の探索アルゴリズム」(前半)ツリー構造は、プログラミングの世界で非常に重要なデータ構造です。 フォルダ階層、組織図、JSON、DOM、抽象構文木など、現場で触れるものの多くが...
Java

Java | 「動的計画法」を体系的に理解する

Javaで学ぶ「動的計画法」を体系的に理解する(前半)動的計画法(Dynamic Programming, DP)は、アルゴリズムの世界で非常に重要なテクニックです。 「難しそう」「数学っぽくて怖い」...
Java

Java | 再帰とループの最適な使い分け

Javaで学ぶ「再帰とループの最適な使い分け」(前半)Javaを学び始めると、多くの読者が「再帰とループ、どっちを使えばいいのか?」という疑問にぶつかります。 どちらも「繰り返し」を表現する手段ですが...
Java

Java | 再帰の高速化テクニック

Javaで学ぶ「再帰の高速化テクニック」(前半)再帰は美しく書ける反面、処理が遅くなりやすいという弱点があります。 特に Java の再帰は「関数呼び出しのコスト」や「スタックの深さ」に影響されるため...
Java

Java | 再帰的なアルゴリズムの実例集

Javaで学ぶ再帰アルゴリズム(前半)Javaの再帰は、初心者にとって「少し難しそう」に見えるテーマですが、実は仕組みが分かればとてもシンプルです。 この前半では、再帰の基本構造、Javaでの書き方、...
Java

Java Tips | I/O・ネットワーク:CSV書き込み

業務で「CSV書き込みユーティリティ」が必要になる理由CSVは、外部ベンダーへのデータ提供、他システムへの連携、ユーザーへのエクスポート、バックアップなど、業務システムの「出口」としてめちゃくちゃよく...
Java

Java Tips | I/O・ネットワーク:CSV読み込み

業務で「CSV読み込みユーティリティ」が必要になる理由CSVは、業務システムで一番よく使われるデータ形式のひとつです。 顧客一覧、売上データ、設定情報、外部ベンダーとの連携ファイル——どれもだいたい ...
Java

Java Tips | I/O・ネットワーク:BOM除去

BOM(Byte Order Mark)とは何か、なぜ業務で「除去」が必要になるのかBOM(Byte Order Mark)は、テキストファイルの先頭に付く 「このファイルは UTF-8 だよ」 とい...
Java

Java Tips | I/O・ネットワーク:文字コード変換

業務で「文字コード変換ユーティリティ」が必要になる場面業務システムでは、UTF-8 だけで世界が完結してくれれば楽ですが、現実はそうはいきません。 古い社内システムが Shift_JIS、外部ベンダー...
Java

Java Tips | I/O・ネットワーク:再帰zip

「再帰zip」ユーティリティが業務で活きる場面再帰zipという言葉が少し硬く聞こえるかもしれませんが、やっていることはシンプルです。 「あるディレクトリを指定したら、その配下のサブディレクトリも含めて...
Java

Java Tips | I/O・ネットワーク:tar対応

業務で「tar対応」ユーティリティが必要になる場面ZIP は Windows 文化、tar は Unix/Linux 文化——そんなイメージがあります。 業務システムでも、サーバーが Linux だっ...
Java

Java Tips | I/O・ネットワーク:zip解凍

なぜ「zip解凍ユーティリティ」が業務で重要になるのかZIP は「複数ファイルをまとめる箱」です。レポート一式、バックアップ、ユーザーへの一括ダウンロードなど、業務システムでは ZIP を受け取って中...
Java

Java Tips | I/O・ネットワーク:zip圧縮

なぜ「zip圧縮ユーティリティ」が業務で強い武器になるのかgzip が「1ファイル専用の圧縮袋」だとしたら、ZIP は「複数ファイルをまとめる箱」です。 業務システムでは、レポート一式、エクスポート結...
Java

Java Tips | I/O・ネットワーク:gzip解凍

なぜ「gzip解凍ユーティリティ」が業務で必須になるのか業務システムでは、ログ、CSV、JSON、バックアップファイルなどを gzip で圧縮して保存・転送することがよくあります。 その結果、「読むと...
Java

Java Tips | I/O・ネットワーク:gzip圧縮

gzip圧縮ユーティリティは何のために必要なのか業務システムでは、ログ、CSV、JSON、バックアップファイルなど「サイズが大きくなりがちなデータ」を扱う場面が多くあります。 そのまま保存するとディス...
Java

Java Tips | I/O・ネットワーク:ストリームコピー

ストリームコピーって何をするユーティリティなのか「ストリームコピー」は、InputStream から OutputStream へバイト列をそのまま流す処理です。 ざっくり言うと「どこかから読んだデー...
Java

Java Tips | I/O・ネットワーク:バイト読み込み

なぜ「バイト読み込み」ユーティリティが業務で必要になるのかテキストファイルだけなら「行単位」「文字列単位」の読み込みで十分ですが、業務システムではそれだけでは足りません。 PDF、画像、ZIP、Exc...
Java

Java Tips | I/O・ネットワーク:行単位読み込み

なぜ「行単位読み込み」ユーティリティが業務で効いてくるのか業務システムで扱うファイルは、CSV、ログ、設定ファイルなど「1行=1レコード」「1行=1メッセージ」という形がとても多いです。 このとき、フ...
Java

Java Tips | I/O・ネットワーク:ファイル書き込み

業務で使える「ファイル書き込みユーティリティ」とは何か業務システムでは、ログ出力、CSVエクスポート、レポート生成、一時ファイルの保存など、「ファイルに書く」場面が必ず出てきます。 そのたびに Fil...
Java

Java Tips | I/O・ネットワーク:ファイル読み込み

業務で使える「ファイル読み込みユーティリティ」とは何か業務システムでは、設定ファイル、CSV、ログ、インポート用データなど、「ファイルを読む」場面が必ず出てきます。 毎回その場で FileInputS...
Java

Java | 1 日 120 分 × 7 日アプリ学習 中級編:オブジェクト指向(OOP) - 継承アプリ

1日目のゴール継承アプリ1日目のテーマは「共通部分をまとめる」=継承の入口を“安全に”体験すること です。今日は、「継承って便利そうだけど、どこが嬉しくて、どこが危険なのか」を、まず“共通部分をまとめ...
Java

Java | 1 日 120 分 × 7 日アプリ学習 中級編:オブジェクト指向(OOP) - カプセル化アプリ

1日目のゴール中級編「カプセル化アプリ」1日目のテーマは「直接触らせない」=カプセル化の感覚を体でつかむこと です。キーワードはprivate と getter / setter。でも、ただ「書き方を...
Java

Java | 1 日 120 分 × 7 日アプリ学習 中級編:オブジェクト指向(OOP) - クラス責務分離アプリ

1日目のゴール中級編の1日目は「オブジェクト指向の本質=1クラス1役割」を“体で理解する”こと。今日のテーマは 責務(Responsibility)・分離(Separation)・保守性(Mainta...
Java

Java | 1 日 90 分 × 7 日アプリ学習 初級編:ファイル保存アプリ

1日目のゴール1日目のテーマは「ファイルに“文字”を書いて、“あとから読み返せる”感覚をつかむこと」 です。今日はまだ「完璧な設計」は目指しません。まずはこう思えたら勝ちです。「メモをファイルに保存し...
Java

Java | 1 日 90 分 × 7 日アプリ学習 初級編:例外処理アプリ

1日目のゴール1日目のテーマは「例外ってそもそも何?」「try / catch って何をしているの?」を、感覚でつかむこと です。今日は、こんな流れで進めます。例外とは何かなぜ try / catch...
Java

Java | Web 基礎・HTTP・REST:HTTP 詳細 - セッション

セッションを一言でいうとセッションは「同じユーザーからの一連のリクエストを“ひとまとまり”として扱うためのサーバー側の仕組み」です。HTTP は本来「1 回 1 回がバラバラで、前後のつながりを覚えな...
Java

Java | Web 基礎・HTTP・REST:HTTP 詳細 - Cookie

Cookie を一言でいうとCookie は「ブラウザの中に一時的にメモしておける“名札・メモ用紙”」です。HTTP は本来「1 回 1 回のリクエストがバラバラで、前後のつながりを覚えていない」仕組...
Java

Java | Web 基礎・HTTP・REST:HTTP 詳細 - User-Agent

User-Agent を一言でいうとUser-Agent は「このリクエストを送っている“クライアントの正体”をサーバーに伝えるヘッダー」です。ブラウザなのか、スマホアプリなのか、Java のプログラ...
Java

Java | Web 基礎・HTTP・REST:HTTP 詳細 - Accept

Accept を一言でいうとAccept ヘッダーは「サーバーさん、レスポンスは“この種類のデータ”で返してくれると嬉しいです、という希望を伝えるヘッダー」です。クライアント(ブラウザやアプリ)が「J...
Java

Java | Web 基礎・HTTP・REST:HTTP 詳細 - Content-Type

Content-Type を一言でいうとContent-Type は「このボディの中身は“何の種類のデータ”かを相手に教えるためのヘッダー」です。中身が JSON なのか、HTML なのか、画像なのか...
Java

Java | Web 基礎・HTTP・REST:HTTP 詳細 - ボディの役割

ボディを一言でいうとHTTP のボディは「実際にやり取りしたい“中身そのもの”が入る場所」です。ヘッダーが「説明書」だとしたら、ボディは「商品そのもの」。ユーザー情報の JSON、HTML のページ、...
Java

Java | Web 基礎・HTTP・REST:HTTP 詳細 - ヘッダーの役割

ヘッダーを一言でいうとHTTP のヘッダーは「リクエストやレスポンスにくっついてくる“メタ情報(付加情報)”」です。本体(ボディ)が「中身」だとしたら、ヘッダーは「この中身は何なのか」「どう扱ってほし...
Java

Java | Web 基礎・HTTP・REST:HTTP 詳細 - パスパラメータ

パスパラメータを一言でいうとパスパラメータは「URL の一部として書かれる“ID などの変わる部分”」です。/users/1 の 1/products/123/reviews の 123みたいに、「ど...
Java

Java | Web 基礎・HTTP・REST:HTTP 詳細 - クエリパラメータ

クエリパラメータを一言でいうとクエリパラメータは「同じ URL の“条件やオプション”を指定するための追加情報」です。/users という「ユーザー一覧」というリソースに対して、「有効なユーザーだけ欲...
Java

Java | Web 基礎・HTTP・REST:HTTP 詳細 - URL 構造

URL を一言でいうとURL は「インターネット上の“場所”を指し示す住所」です。ブラウザやプログラムは、この URL を手がかりに「どのサーバーの」「どのサービスの」「どのデータを」取りに行けばいい...
Java

Java | Web 基礎・HTTP・REST:HTTP 基礎 - 安全なメソッド

「安全なメソッド」を一言でいうとHTTP でいう「安全なメソッド」は、「サーバー側の状態を変えないメソッド」 のことです。何回呼んでも、DB の中身が変わらない。新しいデータも増えないし、削除もされな...
Java

Java | Web 基礎・HTTP・REST:HTTP 基礎 - 冪等性

冪等性を一言でいうと冪等性(べきとうせい)は、「同じ操作を何回繰り返しても、最終的な結果が変わらない性質」のことです。1 回やっても、10 回やっても、「状態」が同じなら冪等。回数によって結果が変わる...
Java

Java | Web 基礎・HTTP・REST:HTTP 基礎 - PATCH

PATCH を一言でいうとPATCH は「このリソースの“一部だけ”を変えてほしいときに使うメソッド」です。PUT が「丸ごと上書きして」なら、PATCH は「ここだけ直して(パッチを当てて)」という...
Java

Java | Web 基礎・HTTP・REST:HTTP 基礎 - DELETE の役割

DELETE を一言でいうとDELETE は「この URL が指しているものを“消して”」とサーバーに頼むためのメソッドです。ユーザー削除商品削除お気に入り解除など、「そのリソース自体をなくす・無効に...
Java

Java | Web 基礎・HTTP・REST:HTTP 基礎 - PUT の役割

PUT を一言でいうとPUT は「この場所のデータを“丸ごとこの内容で上書きして”というメソッド」です。POST が「新しく作って」だとしたら、PUT は「ここにあるものを、このデータで置き換えて」で...
Java

Java | Web 基礎・HTTP・REST:HTTP 基礎 - POST の役割

POST を一言でいうとPOST は「サーバーにデータを送りつけて、“何かしらの処理をしてもらう”ためのメソッド」です。特に重要なのは、新しいデータ(リソース)を作成するサーバー側の状態を変えるという...
Java

Java | Web 基礎・HTTP・REST:HTTP 基礎 - GET の役割

GET を一言でいうとGET は「サーバーのデータを“読むだけ”のメソッド」です。「この URL の内容を見せて」「このデータを教えて」というときに使います。サーバー側の状態を変えない(書き換えない)...
Java

Java | Web 基礎・HTTP・REST:HTTP 基礎 - HTTP メソッド一覧

HTTP メソッドを一言でいうとHTTP メソッドは「この URL に対して、サーバーに何をしてほしいのか」を表す“動詞”です。同じ /users という URL でも、GET なら「取得したい」、P...
Java

Java | Web 基礎・HTTP・REST:HTTP 基礎 - リクエスト / レスポンス

リクエスト / レスポンスを一言でいうとHTTP の世界は、ものすごく乱暴に言うと「お願い」と「返事」だけでできています。ブラウザやアプリがサーバーに送る「お願い」がリクエスト、サーバーがそれに対して...
Java

Java | Web 基礎・HTTP・REST:HTTP 基礎 - HTTP プロトコル概要

HTTP プロトコルを一言でいうとHTTP は「ブラウザ(クライアント)と Web サーバーが会話するための“決まりごと(プロトコル)”」です。ブラウザが「このページください」「このデータください」と...
Java

Java | 1 日 90 分 × 7 日アプリ学習 初級編:ミニToDoアプリ(CUI)

1日目のゴール1日目のテーマは「ミニToDoアプリを“ちゃんとクラス設計して、List で管理し、入力で動かす”感覚をつかむこと」 です。いきなり完璧なアプリを作るのではなく、クラスをどう分けるかタス...
Java

Java | 1 日 90 分 × 7 日アプリ学習 初級編:Map を使うアプリ

1日目のゴール1日目のテーマは「Map=“キーと値のペアを覚えておくノート”という感覚をつかむこと」 です。今日はまだ、HashMap の細かいメソッドを全部覚える日ではありません。まずは頭の中に、「...
Java

Java | 1 日 90 分 × 7 日アプリ学習 初級編:List を使うアプリ

1日目のゴール1日目のテーマは「配列は“長さが固定”、ArrayList は“長さが変えられる”」という感覚をつかむこと です。今日はまだ、メソッド名を全部暗記する日ではありません。頭の中にまず、「配...
Java

Java | 1 日 90 分 × 7 日アプリ学習 初級編:コンストラクタ入門アプリ

1日目のゴール1日目のテーマは「コンストラクタって何?」「初期化って何してるの?」を“ふわっと”から“ハッキリ”に変えること です。今日はまだ「書き方を全部覚える日」じゃなくて、コンストラクタ=そのク...
Java

Java | アルゴリズムと再帰関数 (recursive function)

前半:Javaで理解する「アルゴリズム」と「再帰関数」の基礎Javaは静的型付けで、関数(メソッド)の動きが明確に見えるため、再帰の学習にとても向いている言語だ。ここでは、プログラミング初心者でも「再...
Java

Java | 1 日 90 分 × 7 日アプリ学習 初級編:クラス分割アプリ

1日目のゴール1日目のテーマは「Javaの“クラス”ってそもそも何者なのか」と「mainメソッドとの関係」を、頭の中でスッキリさせること です。いきなり「クラス分割しよう!」と言われても、クラスの正体...
Java

Java Tips | 日付・時間:テスト用日時固定

なぜ「テスト用日時固定」ユーティリティが必要になるのか日付・時間に依存するロジックは、業務システムのど真ん中にいます。「締め切りを過ぎているか」「有効期限内か」「月末かどうか」「営業日かどうか」。こう...
Java

Java Tips | 日付・時間:Clock差し替え

なぜ「Clock差し替え」が業務ユーティリティとして重要なのか日付・時間を扱うコードを書くとき、多くの人が最初にやるのは LocalDate.now() や Instant.now() をそのまま呼ぶ...
Java

Java Tips | 日付・時間:日付キャッシュ

日付キャッシュユーティリティは何のために必要か「今日の日付」「今月の営業日一覧」「今年の祝日一覧」など、日付まわりの計算は、業務システムのあちこちで何度も呼ばれます。しかも、多くの場合「同じ結果」が何...
Java

Java Tips | 日付・時間:夏時間判定

夏時間判定ユーティリティは何のために必要か日本にいるとあまり意識しませんが、アメリカやヨーロッパでは「夏時間(Daylight Saving Time, DST)」が当たり前に使われています。同じ「A...
Java

Java Tips | 日付・時間:タイムゾーン一覧

タイムゾーン一覧ユーティリティは何のために必要かグローバルなサービスや、海外拠点を持つ会社のシステムでは、「どのタイムゾーンで日時を扱うか」をユーザーに選ばせる場面がよく出てきます。ユーザー設定画面の...
Java

Java Tips | 日付・時間:日付重複判定

日付重複判定ユーティリティは何のために必要か業務システムでは、期間がかぶってはいけない場面がたくさんあります。割引キャンペーン期間が重複してはいけない。同じ部屋の予約が同じ時間帯に二重に入ってはいけな...
Java

Java Tips | 日付・時間:範囲内判定

「範囲内判定」とは何をしたいユーティリティか業務システムでは、ものすごく頻繁に「この日付はキャンペーン期間内か?」「この日時はメンテナンス時間帯に含まれるか?」「この日付は契約の有効期間に入っているか...
Java

Java Tips | 日付・時間:日付比較

日付比較ユーティリティは何のために必要か業務システムでは、「締め日を過ぎているか?」「有効期限内か?」「開始日 ≤ 対象日 ≤ 終了日か?」といった“日付の比較”が、あらゆるところに出てきます。このと...
Java

Java Tips | 日付・時間:休日除外

「休日除外」とは何をしたいユーティリティなのか「この期間のデータを集計したいけど、休日は含めたくない」「SLA は“営業日ベース”なので、休日はカウントから外したい」。こういうときに必要になるのが「休...
Java

Java Tips | 日付・時間:営業日一覧

「営業日一覧」とは何をするユーティリティかまずイメージしてほしいのは、カレンダーから「土日と祝日を抜いた日だけ」を抜き出した表です。請求締め、入金予定表、納期チェック、SLA(何営業日以内に対応)など...
Java

Java Tips | 日付・時間:年一覧生成

年一覧生成とは何をするユーティリティか「年度選択のプルダウンに 2015〜2030 年を出したい」「レポート画面で対象年を選ばせたい」「ログ集計で“どの年のデータか”を一覧にしたい」。こういうときに使...
Java

Java Tips | 日付・時間:月一覧生成

月一覧生成とは何をするユーティリティか「2023年1月〜2025年12月までの月を全部出したい」「指定期間の月ごとのレポートを作りたい」「画面のプルダウンに“年月”を並べたい」。こういうときに使うのが...
Java

Java Tips | 日付・時間:日付範囲生成

日付範囲生成とは何をするユーティリティか「今月の全日付を一覧にしたい」「レポート期間の開始日〜終了日を1日ずつ処理したい」「1週間分のデータを日ごとに集計したい」。こういうときに必要になるのが「日付範...
Java

Java Tips | 日付・時間:CRON生成

CRON生成とは何をするユーティリティかここまで「CRON解析(読む側)」をやってきましたが、今回は逆方向です。CRON生成とは、アプリ側で「こういうスケジュールで動かしたい」という条件から、0 3 ...
Java

Java Tips | 日付・時間:CRON解析

CRON解析とは何をするものかCRON解析とは、「0 0 * * * のような CRON 表記を読み取り、次にいつ実行されるかを計算する」「この CRON は毎日? 毎週? 毎月? どんなタイミングで...
Java

Java Tips | 日付・時間:スケジューラ補助

スケジューラ補助とは何を助けるユーティリティなのかスケジューラ補助とは、「決まった時間に処理を実行したい」「一定間隔で繰り返し処理したい」「次の実行時刻を計算したい」といった“時間に基づく処理”を安全...
Java

Java Tips | 日付・時間:実行時間計測

「実行時間計測」で何を知りたいのか実行時間計測は、一言でいうと「この処理、実際どれくらい時間かかっているの?」を数字で見える化することです。なんとなく「遅い気がする」ではなく、「平均 120ms」「ピ...
Java

Java Tips | 日付・時間:ストップウォッチ

「ストップウォッチ」とは何をするクラスかイメージしてほしいのは、手に持つあのストップウォッチです。ボタンを押した瞬間に「スタート」、もう一度押したら「ストップ」、表示には「経過時間」が出る。Java ...
Java

Java Tips | 日付・時間:タイマー測定

「タイマー測定」で何をしたいのかイメージする業務システムを書いていると、「この処理、どれくらい時間かかっているんだろう?」「リリース前に性能をざっくり測りたい」「ログに処理時間を出しておきたい」という...
Java

Java Tips | 日付・時間:ナノ秒変換

ナノ秒変換で何をしたいのかをまずイメージする「処理が何ナノ秒で終わったか知りたい」「高頻度トレードやIoTでサブミリ秒の世界を扱いたい」「ログの順序を“同じミリ秒の中”でも区別したい」。こういう“めち...
Java

Java Tips | 日付・時間:秒変換

秒変換で何をしたいのかイメージする「DBに“1970年からの秒”で保存されている」「外部APIがエポック秒で送ってくる」「処理時間を秒でログに出したい」。こういうときに必要になるのが、日付・時間と「秒...
Java

Java Tips | 日付・時間:ミリ秒変換

「ミリ秒変換」で何をしたいのかイメージする「処理時間をミリ秒で計測したい」「DBには long のミリ秒で保存されている」「外部APIが“1970年からのミリ秒”で送ってくる」。こういうときに必要にな...
Java

Java Tips | 日付・時間:ISO変換

「ISO変換」とは何をするものか「API は ISO 形式で日時を返してくる」「ログを ISO 形式で出したい」「他言語ともやり取りしたい」そんなときに出てくるキーワードが ISO-8601 です。I...
Java

Java Tips | 日付・時間:フォーマット共通化

なぜ「フォーマット共通化」が重要なのか同じシステムの中で、画面Aは「2025/03/26」、画面Bは「2025-03-26」、ログは「2025-03-26T10:00:00Z」――こういうバラバラな状...
Java

Java Tips | 日付・時間:JST変換

JST変換のゴールイメージ「アプリは日本時間で動いている」「外部APIはUTCで返してくる」「DBにはUTCで保存したいけど画面はJSTで見せたい」。こういうときに必要になるのが JST(日本標準時)...
Java

Java Tips | 日付・時間:UTC変換

UTC変換のゴールイメージ「アプリは日本時間で動いているけど、DBには UTC で保存したい」「ログは全部 UTC に統一したい」「外部APIは UTC で返してくる」業務システムで“時間”をちゃんと...
Java

Java Tips | 日付・時間:タイムゾーン変換

タイムゾーン変換のゴールイメージ「サーバは UTC、ユーザーは日本時間」「海外拠点はロサンゼルス時間」「ログは全部 UTC で残したい」業務システムで“時間”を扱うとき、ほぼ必ず出てくるのが「タイムゾ...
Java

Java Tips | 日付・時間:日付丸め

「日付丸め」とは何をするものか「2025-03-26 を“月初”にそろえたい」「日付を“週単位”にまとめたい」「分析用に“日単位”までに丸めたい」こういうときに出てくるのが「日付丸め」です。日付丸めは...
Java

Java Tips | 日付・時間:時間丸め

「時間丸め」とは何をするものか「10:03 を 5 分単位に丸めて 10:05 にしたい」「ログの時刻を“分単位”にそろえたい」「勤務時間を 15 分単位で計算したい」こういうときに出てくるのが「時間...
Java

Java Tips | 日付・時間:経過時間

経過時間のゴールイメージ「処理に何秒かかった?」「ログインから何時間経過した?」「締切まであと何時間?」業務システムでは、“2つの日時の差”=経過時間を扱う場面がとても多いです。ここでまず押さえてほし...
C#

バイブコーディングとセキュリティーについて

バイブコーディングの本質と現代開発における位置づけバイブコーディングとは、仕様や設計書に厳密に従うのではなく、直感や流れ、試行錯誤を重視してコードを書く開発スタイルである。とくにAIによるコード生成や...
Java

Java Tips | 日付・時間:経過日数

経過日数のゴールイメージ「申込日から何日経った?」「納期まであと何日?」「プロジェクト開始からの経過日数は?」業務システムだと、“2つの日付の差”=経過日数を出す場面が本当に多いです。ここでまず押さえ...
Java

Java Tips | 日付・時間:年齢計算

年齢計算のゴールイメージ「生年月日から現在の年齢を出したい」「基準日時点での年齢を知りたい」業務システムだと、会員管理・保険・年齢制限チェックなどで“年齢”はよく出てきます。ここで一番やってはいけない...
Java

Java Tips | 日付・時間:祝日判定

祝日判定のゴールイメージ「この日付は祝日か?」「祝日は営業日から除外したい」「祝日は締切をずらしたい」業務システムでは、祝日判定はかなりの頻度で登場します。ここでまず押さえてほしい現実があります。祝日...
Java

Java Tips | 日付・時間:営業日判定

営業日判定のゴールイメージ「この日付は営業日か?」「締切日が休業日のときは翌営業日にずらしたい」業務システムでは、こういう“営業日判定”が本当に頻繁に出てきます。ここで大事なのは、営業日=「土日以外」...
Java

Java Tips | 日付・時間:曜日取得

曜日取得のゴールイメージ「2025-03-26 は何曜日?」「この日付が土日かどうか知りたい」業務システムだと、営業日判定・カレンダー表示・締切日のチェックなどで“曜日”は頻出です。ここでやってはいけ...
Java

Java Tips | 日付・時間:年末取得

「年末取得」は“その年の最後の日を意味でつかまえる”こと業務システムでは、「今年の年末」「会計年度の最終日」「前年の年末」みたいな話がよく出てきます。ここでやってはいけないのは、「12 月 31 日で...
Java

Java Tips | 日付・時間:年初取得

「年初取得」は“その年の1月1日を意味で取り出す”こと業務システムだと、「今年の年初」「会計年度の開始日」「前年の年初」みたいな話がよく出てきます。ここでやってはいけないのは、month = 1; d...
Java

Java Tips | 日付・時間:月末取得

「月末取得」は“その月の最後の日を安全につかまえる”こと業務システムでは、「今月の月末」「請求月の月末」「締め月の月末」が頻出します。ここでやってはいけないのは、「31 日で固定」「30 日で固定」「...
Java

Java Tips | 日付・時間:月初取得

「月初取得」は“その月の1日を安全に取り出す”こと業務システムでは、「今月の月初」「請求月の月初」「締め月の月初」をよく使います。ここでやってはいけないのは、day = 1; のように自分で日付をいじ...
Java

Java Tips | 日付・時間:日付減算

日付減算の本質は「過去にさかのぼるカレンダー計算を任せること」日付減算は、「今日から 7 日前」「3 ヶ月前」「1 年前の同じ日」といった“カレンダー上で過去にさかのぼる”計算です。ここでも一番やって...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 14日目

14日目のゴールとテーマ14日目のテーマは「2週間で身につけた“Javaでアプリを作る力”を言語化して、次の一歩につなげる」 です。今日は新しい文法を増やす日ではありません。この2週間であなたが積み上...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 13日目

13日目のゴールとテーマ13日目のテーマは「プロジェクトを“整理する力”と“ライブラリを使う力”を身につける」 です。ここまでで、あなたはクラスオブジェクトカプセル化クラス同士の関係例外処理ファイル保...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 12日目

12日目のゴールとテーマ12日目のテーマは「タスクをファイルに保存して、“終了しても消えないアプリ”にする」 です。ここまでのタスク管理アプリは、起動している間はちゃんと動きますが、アプリを終了すると...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 11日目

11日目のゴールとテーマ11日目のテーマは「例外処理で“落ちないアプリ”に近づく」 です。ここまでで、あなたはクラス・オブジェクト・カプセル化・クラス同士の関係を使って、小さなタスク管理アプリを形にし...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 10日目

10日目のゴールとテーマ10日目のテーマは「これまでの要素を全部つなげて、“小さな本格アプリ”としてまとめる」 です。ここまでであなたは、変数・配列・ArrayListif・for・whileメソッド...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 9日目

9日目のゴールとテーマ9日目のテーマは「クラス同士の“関係”を設計して、小さな本格アプリの形にする」 です。ここまでであなたは、1つのクラス(Task)を作りオブジェクトを new してArrayLi...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 8日目

8日目のゴールとテーマ8日目のテーマは「カプセル化(情報を隠す)と getter / setter で、“壊れにくいクラス”に育てる」 です。7日目で、あなたはすでに自分でクラス(Task)を作りオブ...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 7日目

7日目のゴールとテーマ7日目のテーマは「クラスとオブジェクトで“自分だけの型”を作り、アプリの世界に登場人物を生み出す」 です。ここまでで、あなたは変数・配列・ArrayListでデータを扱い、if・...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 6日目

6日目のゴールとテーマ6日目のテーマは「メソッドで“処理を分ける力”を身につけて、コードを読みやすく育てる」 です。5日目までで、あなたはすでに入力を受け取る条件分岐で動きを変えるループで繰り返すAr...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 5日目

5日目のゴールとテーマ5日目のテーマは「配列より“柔軟なリスト”を使って、追加・削除ができるアプリに近づく」 です。4日目までで、配列を使って「複数のデータをまとめて扱う」ことができるようになりました...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 4日目

4日目のゴールとテーマ4日目のテーマは「配列で“複数のデータ”をまとめて扱い、ループと組み合わせて処理する」 です。ここまでで、1つの値(int や String)を変数に入れて扱うことはできるように...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 3日目

3日目のゴールとテーマ3日目のテーマは「同じ処理を“繰り返す”力を身につけて、ちょっとしたミニアプリをループで回す」 です。1日目・2日目で、「1回だけ動くプログラム」は書けるようになりました。でも、...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 2日目

2日目のゴールとテーマ2日目のテーマは「ユーザーの入力を受け取り、条件分岐で“動きが変わるアプリ”を作る」 です。1日目は、決まった文字や数字を「表示するだけ」の世界でした。今日はそこから一歩進んで、...
Java

Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 1日目

1日目のゴールとテーマ1日目のテーマは「Javaの“型にはまった書き方”に慣れながら、最初の小さなアプリを動かす」 です。Pythonと違って、Javaは「決まりごと」が多い言語です。最初は少し堅苦し...
Java

Java Tips | 日付・時間:日付加算

「日付加算」は“カレンダーの面倒を Java に任せる”こと日付加算は、「今日から 7 日後」「月末から 1 日後」「3 ヶ月後の同じ日」といった“カレンダー計算”をコードでやることです。これを自前で...
Java

Java Tips | 日付・時間:日時→文字列

「日時→文字列」は“見せ方を決める”作業日時オブジェクト(LocalDate や LocalDateTime など)は、そのままだと「内部的に意味のある値」ですが、人間には少し分かりにくいことがありま...
Java

Java Tips | 日付・時間:文字列→日時

文字列→日時変換の全体イメージ「String で受け取った日付・時刻」を、そのまま文字列のまま扱うと、比較・加算・バリデーションがすべて自前実装になってしまいます。そこでやるべきことはシンプルで、「文...
Java

Java Tips | 日付・時間:Calendar変換

Calendar は「古い日付 API」だが、変換パターンを覚えれば怖くないjava.util.Calendar は、Date と同じく“古い日付 API”です。今の Java では LocalDat...
Java

Java Tips | 日付・時間:Date変換

古い Date と新しい java.time を「つなぐ」という発想java.util.Date は、昔からある「日時クラス」です。でも今の Java では、LocalDate / LocalTime...
Java

Java Tips | 日付・時間:Instant変換

Instant は「世界共通の“瞬間”を表すタイムスタンプ」Instant は、「UTC を基準にした、世界共通の“ある瞬間”」 を表すクラスです。「1970-01-01T00:00:00Z(UTC)...
Java

Java Tips | 日付・時間:ZonedDateTime生成

ZonedDateTime は「タイムゾーン付きの日時」ZonedDateTime は、「日付(年月日)+時刻(時分秒)+タイムゾーン」 をまとめて扱うクラスです。LocalDateTime は「どこ...
Java

Java Tips | 日付・時間:LocalDateTime生成

LocalDateTime は「日付+時刻」をまとめて扱うクラスLocalDateTime は、「年月日」と「時分秒(ナノ秒まで)」を一つにまとめて扱うクラスです。 タイムゾーンは持たないので、「ある...
Java

Java Tips | 日付・時間:LocalTime生成

LocalTime は「時刻だけ」を扱うクラスLocalTime は、「時・分・秒だけ」を扱うクラスです。日付(年月日)もタイムゾーンも持ちません。「営業開始時刻(09:00)」「締切時刻(17:30...
Java

Java Tips | 日付・時間:LocalDate生成

LocalDate は「日付だけ」を扱うクラスLocalDate は、「年月日だけ」を扱うクラスです。時刻(時分秒)もタイムゾーンも持ちません。「請求日」「締切日」「誕生日」「営業日」など、“日付だけ...
Java

Java Tips | コレクション:集合演算

「集合演算」は“重複なしの集まり”同士を比べる道具Java の Set は、「重複を許さない集まり」です。HashSet や LinkedHashSet、TreeSet などが代表ですね。業務では、「...
Java

Java Tips | コレクション:BiMap実装

BiMap は「キーと値の両方から引ける Map」普通の Map<K, V> は「キー → 値」の片方向だけです。でも業務では、「値からも逆引きしたい」場面がよく出てきます。HTTPステータスコード ...
Java

Java Tips | コレクション:MultiMap実装

MultiMap は「1つのキーに“複数の値”をぶら下げる Map」普通の Map<K, V> は「キー1つにつき値1つ」です。でも業務では、「キー1つに対して値が複数ある」場面がよく出てきます。部署...
Java

Java Tips | コレクション:PriorityQueue利用

PriorityQueue は「優先度の高いものから順に取り出せるキュー」PriorityQueue は、普通のキューと違って「入れた順」ではなく「優先度の高い順(または小さい順)」で取り出せるキュー...
Java

Java Tips | コレクション:Stack代替

「Stack代替」は“古い Stack を捨てて、Deque に乗り換える”という発想Java には java.util.Stack というクラスがありますが、今の実務では 「Stack は使わず、D...
Java

Java Tips | コレクション:Deque操作

Deque は「両端から出し入れできるキュー」Deque(デック)は “Double Ended Queue” の略で、「先頭」と「末尾」の両方から要素を出し入れできるコレクションです。普通のキューは...
Java

Java Tips | コレクション:CopyOnWrite利用

CopyOnWrite は「書き込みのたびに“丸ごとコピー”して安全を買う」仕組みCopyOnWrite 系コレクション(CopyOnWriteArrayList / CopyOnWriteArray...
Java

Java Tips | コレクション:同期ラッパー

同期ラッパーは「既存のコレクションを“とりあえず安全にする”ための包み紙」同期ラッパー(synchronized wrapper)は、Collections.synchronizedList や Co...
Java

Java Tips | コレクション:スレッドセーフMap

「スレッドセーフMap」は“同時に触られても壊れない辞書”業務システムでは、「ユーザーID→セッション情報」「商品コード→商品情報」「設定キー→設定値」のように、Map を共有して使う場面が本当に多い...
Java

Java Tips | コレクション:スレッドセーフList

「スレッドセーフList」は“同時に触られても壊れないリスト”業務システムでは、複数スレッドから同じ List にアクセスする場面が普通に出てきます。ログを貯める、イベントを溜める、キャッシュ的に使う...
Java

Java Tips | コレクション:固定長キュー

固定長キューは「常に“最後のN件だけ”を覚えておく箱」固定長キューは、「新しいものをどんどん入れるけれど、サイズは最大N件まで」「あふれたら“一番古いもの”から自動的に捨てる」というルールを持ったキュ...
Java

Java Tips | コレクション:LRUキャッシュ

LRUキャッシュは「よく使うものだけを手元に置き、古いものから捨てる」箱業務システムでは、「毎回DBに取りに行くのは重いけど、全部メモリに載せるのもキツい」みたいな場面がよく出てきます。そこで出てくる...
Java

Java Tips | コレクション:Enumコード検索

Enumコード検索は「外から来たコード値を“正しいEnum”に変換する」技業務システムでは、DBやAPI、設定ファイルなどから「コード値」が文字列や数値で飛んできます。"N" なら新規、"P" なら処...
Java

Java Tips | コレクション:Enum名前一覧

Enum名前一覧は「コード上の識別子を“文字列の一覧”として取り出す」技Enum は「定数の集合」ですが、その一つ一つには「名前(識別子)」があります。Status.NEW の NEW の部分です。業...
Java

Java Tips | コレクション:Enum一覧取得

Enum一覧取得は「コードに埋めた“選択肢”を、動的に取り出す」技Enum は「定数の集合」を型として表現する仕組みです。ステータス、区分コード、画面のプルダウン候補など、業務システムで大活躍します。...
Java

Java Tips | コレクション:Stream→Optional

Stream→Optional は「“0件かもしれない結果”を安全に受け取る」技Stream は「0件以上の要素の流れ」です。でも業務では、「この条件に合うものを“1件だけ”取りたい」「見つからないか...
Java

Java Tips | コレクション:Optional→Stream

Optional→Stream は「あるかもしれない1件」を“流れ”に乗せる技Optional は「値があるかもしれない/ないかもしれない」を表す箱です。Stream は「0件以上の要素の流れ」です。...
Java

Java Tips | コレクション:nullセーフStream

「nullセーフStream」は「nullかもしれないコレクションを、そのままStreamで扱う」技業務コードでは、本当は良くないけれど、現実として「null が返ってくるコレクション」がたくさんあり...
Java

Java Tips | コレクション:distinctByKey

distinctByKey は「“このキーで一意”をコードに刻む」技Stream の distinct() は、「要素そのものが同じかどうか」で重複を消します。でも業務では、「ユーザーIDが同じなら重...
Java

Java Tips | コレクション:join処理

join処理は「バラバラの要素を“1本の文字列”にまとめる」技業務システムでは、「IDをカンマ区切りでログに出したい」「SQLの IN ('A','B','C') を組み立てたい」「画面に 山田 / ...
Java

Java Tips | コレクション:zip処理

zip処理は「2つの列を“ペアの列”にする」技zip(ジップ)処理は、「2つのコレクションを、同じ位置同士でペアにしていく」操作です。名前のリスト点数のリストこの2つを「名前+点数」のペアにしたい——...
Java

Java Tips | コレクション:インデックス付きループ

インデックス付きループは「位置情報をちゃんと意識して回す」技for (T x : list) の拡張 for 文はシンプルで読みやすいですが、「何番目か(インデックス)」が欲しくなった瞬間に、ちょっと...
Java

Java Tips | コレクション:ページング

ページングは「長い一覧を“ちょうどいい一枚”に切り分ける」技業務システムでは、「検索結果が1万件あります」とか普通に起こります。でも画面に1万件は出せませんよね。だから「1ページ20件」「3ページ目を...
Java

Java Tips | コレクション:Stream例外ラップ

「Stream例外ラップ」は「チェック例外を“Streamで扱える形”に着替えさせる」技Stream の map や forEach に渡すラムダは、基本的に「チェック例外を投げられない」制約がありま...
Java

Java Tips | コレクション:並列Stream制御

並列Stream制御は「速くしたいけど、暴れさせたくない」技Stream にはstream()(普通の順次処理)とparallelStream()(並列処理)の2つの世界があります。「CPUコアを全部...
C#

日本の企業・官公庁が公開している無料API

日本では政府・自治体・企業が公開している無料APIが多数あります。実務や個人開発でよく使われるものを、カテゴリ別に整理して紹介します。官公庁・政府系API統計・経済データ1. 総務省統計局 – e-S...
Java

Java | Web 基礎・HTTP・REST:Web 全体像 - SPA と MPA

SPA と MPA を一言でいうとSPA は Single Page Application(シングルページアプリケーション) の略で、「最初に 1 つのページを読み込んだあと、画面の中身だけを Ja...
Java

Java | Web 基礎・HTTP・REST:Web 全体像 - フロントエンド / バックエンド

フロントエンド / バックエンドを一言でいうとフロントエンドは「ユーザーの目に見える“表側”」。バックエンドは「見えないところで動いている“裏側の頭脳と心臓”」。あなたが Java で書くのは、基本的...
Java

Java | Web 基礎・HTTP・REST:Web 全体像 - 3 層アーキテクチャ

3 層アーキテクチャを一言でいうと3 層アーキテクチャは、「Web アプリを 3 つの役割にきれいに分けて作ろう」という設計の型 です。プレゼンテーション層(画面・API の入り口)アプリケーション層...
Java

Java | Web 基礎・HTTP・REST:Web 全体像 - 動的コンテンツ

動的コンテンツを一言でいうと動的コンテンツは、「リクエストのたびにサーバー側で中身を“その場で作って返すコンテンツ」 です。誰がアクセスしたかいつアクセスしたかどんな条件でアクセスしたかによって、返す...
Java

Java | Web 基礎・HTTP・REST:Web 全体像 - 静的コンテンツ

静的コンテンツを一言でいうと静的コンテンツは、「サーバー側で中身が変わらないファイルを、そのままブラウザに配るもの」です。HTML、CSS、画像(PNG/JPEG)、JavaScript ファイル、P...
Java

Java | Web 基礎・HTTP・REST:Web 全体像 - アプリケーションサーバー

アプリケーションサーバーを一言でいうとアプリケーションサーバーは「ビジネスロジックを本気で動かすための“Java 実行プラットフォーム”」だと思ってください。Web サーバーが「HTTP を受け取って...
Java

Java | Web 基礎・HTTP・REST:Web 全体像 - Web サーバーとは

Web サーバーを一言でいうとWeb サーバーは、「ブラウザ(クライアント)からの HTTP リクエストを受け取り、HTTP レスポンスを返す“受付兼配達係”」です。ブラウザが「このページください」「...
Java

Java | Web 基礎・HTTP・REST:Web 全体像 - ブラウザの役割

ブラウザの役割を一言でいうとブラウザは、「人間と Web の世界をつなぐ“通訳兼プレイヤー”」です。人間が URL を入力したりボタンを押したりすると、ブラウザがサーバーに HTTP リクエストを送り...
Java

Java | Web 基礎・HTTP・REST:Web 全体像 - クライアントとサーバー

クライアントとサーバーを一言でいうとクライアントとサーバーは、「お願いする側」と「応える側」です。ブラウザやスマホアプリが クライアント、そのリクエストを受け取って処理するのが サーバー。Web の世...
Java

Java | Web 基礎・HTTP・REST:Web 全体像 - Web アプリの仕組み

Web 全体像をざっくりつかむまずは「ブラウザで URL を開くと、裏で何が起きているのか」をイメージでつかみましょう。あなたがブラウザに と入力して Enter を押すと、ブラウザは「サーバー」に対...
Java

Java Tips | コレクション:Stream生成

Stream生成は「データに“流れ”をつける」入り口Stream は「コレクションや配列などの要素を、流れとして扱うためのビュー」です。filter や map、collect などの“Stream ...
Java

Java Tips | コレクション:List→配列

List→配列変換は「柔らかい入れ物を“カチッとした形”にする」技Java では、業務ロジックは List で書きたいけれど、古いライブラリやフレームワークの引数が「配列(String[] など)」を...
Java

Java Tips | コレクション:配列→List

配列→List変換は「生の配列を“扱いやすいコレクション”に変える」技Java には「配列」と「List」という、よく似ているけれど性格の違う入れ物があります。配列:String[] など。古くからあ...
Java

Java Tips | コレクション:List→Map変換

List→Map変換は「一覧を“引ける辞書”に変える」技List<T> は「順番付きのただの並び」です。Map<K, V> は「キーから値を素早く引ける辞書」です。業務では、DB から List<Us...
Java

Java Tips | コレクション:安全get

「安全get」は「落ちてもおかしくない場所に、クッションを敷いておく」技List#get や Map#get は、とてもよく使う基本メソッドですが、そのまま使うと、意外と簡単に例外や NullPoin...
Java

Java Tips | コレクション:デフォルトMap取得

「デフォルトMap取得」は「なかったとき、何を返すか」を先に決めておく技Map を使っていると、ほぼ必ずこういうコードが出てきます。Integer count = map.get(key);if (c...
Java

Java Tips | コレクション:Map反転

Map反転は「矢印の向きをひっくり返す」技Map<K, V> は「K → V」という矢印の集まりです。Map反転は、この矢印の向きを「V → K」にひっくり返して、新しい Map<V, K> を作るイ...
Java

Java Tips | コレクション:Map値抽出

「Map値抽出」は“辞書の中身だけを取り出す”イメージMap<K, V> は「キー → 値」の対応表です。業務では「ユーザーID → ユーザー情報」「商品コード → 商品情報」など、ほぼ必ず出てきます...
Java

Java Tips | コレクション:Mapキー抽出

「Mapキー抽出」は“辞書の見出しだけを取り出す”イメージMap<K, V> は「キーと値のペアの集まり」です。「商品ID → 商品名」「ユーザーID → ユーザー情報」「コード → マスタ値」など、...
Java

Java Tips | コレクション:ランダム抽出

ランダム抽出は「誰を選ぶかを“公平に”決める」技ランダム抽出は、ざっくり言うと「コレクションの中から、ランダムに要素を取り出す」処理です。テスト用にランダムなユーザーを 1 人選びたい。キャンペーン当...
Java

Java Tips | コレクション:シャッフル

シャッフルは「順番に意味を持たせないために、あえてぐちゃっと混ぜる」技シャッフルは、ざっくり言うと「コレクションの要素の順番をランダムに入れ替える」処理です。テストデータの順番を毎回変えたい。おすすめ...
Java

Java Tips | コレクション:バッチ分割

バッチ分割は「一気にやると危ない処理を、小さな塊に分けて安全に回す」技バッチ分割は、ざっくり言うと「大量データを、バッチ(かたまり)単位に分けて処理する」ためのユーティリティです。1 万件のレコードを...
Java

Java Tips | コレクション:分割処理

分割処理は「大きな塊を、ちょうどいいサイズのかたまりに刻む」技分割処理は、ざっくり言うと「大きな List を、一定サイズごとの小さな List に分ける」テクニックです。一度に 1 万件のレコードを...
Java

Java Tips | コレクション:フラット化

フラット化は「入れ子の一覧を、一本の一覧に伸ばす」技フラット化は、ざっくり言うと「List<List<T>> のような“入れ子のコレクション”を、List<T> という“まっすぐなコレクション”に伸ば...
Java

Java Tips | コレクション:マッピング

マッピングは「一覧の“形”を変える」技マッピングは、ざっくり言うと「ある型の一覧を、別の型の一覧に変換する」処理です。ユーザー一覧から「名前だけの一覧」を作る。商品一覧から「価格だけの一覧」を作る。注...
Java

Java Tips | コレクション:フィルタ

フィルタは「欲しいものだけを残して、あとは流す」技フィルタは、ざっくり言うと「条件に合う要素だけを残して、それ以外を捨てる」処理です。注文一覧から「未出荷のものだけ」を残す。ユーザー一覧から「有効ユー...
Java

Java Tips | コレクション:件数カウント

件数カウントは「どれくらいあるか」を正確に言葉にする技業務では「何件あるか?」を数える場面が本当に多いです。今日の注文件数、エラー件数、未処理タスク件数、特定条件を満たすユーザー数…。だからこそ、「件...
Java

Java Tips | コレクション:平均算出

「平均算出」は“バラバラな値を代表する一つの数字”を作る技平均は、たくさんの値を「代表する一つの数字」にまとめるための道具です。売上の平均金額、テストの平均点、作業時間の平均、単価の平均…。業務では「...
Java

Java Tips | コレクション:合計算出

「合計算出」は“一覧から一つの数字にギュッと圧縮する”基本テク業務コードで一番よく出てくる集計が「合計」です。売上金額の合計、ポイントの合計、在庫数の合計、工数の合計…。どれも「たくさんの値 → ひと...
Java

Java Tips | コレクション:最小値取得

「最小値取得」は“いちばん小さいものを安全に一発で取り出す”ユーティリティ業務コードでは、「最小値」が欲しい場面もかなり多いです。最小金額、最古の日付、最小スコア、最小バージョン番号…。毎回 for ...
Java

Java Tips | コレクション:最大値取得

「最大値取得」は“いちばん大きいものを安全に一発で取り出す”ユーティリティ業務コードでは、「最大値」が欲しい場面がよく出てきます。最大金額、最新日付、最大スコア、最大バージョン番号…。毎回 for 文...
Java

Java Tips | コレクション:集計

集計は「一覧から“知りたい数字”だけを取り出す」技集計は、ざっくり言うと「たくさんのデータから、意味のある数字を取り出す」ことです。売上一覧から「合計金額」「平均単価」「件数」を出す。ユーザー一覧から...
Java

Java Tips | コレクション:グルーピング

グルーピングは「バラバラの一覧を“意味のあるかたまり”に整理する」技グルーピングは、ざっくり言うと「一覧を、あるキーごとにまとめ直す」ことです。売上一覧を「店舗ごと」にまとめる。ユーザー一覧を「都道府...
Java

Java Tips | コレクション:カスタムComparator

カスタムComparatorは「業務ルールをそのまま並び順にする道具」Comparator は「どっちが先か」を決めるための“比較ルール”です。カスタムComparatorは、そのルールを自分で定義す...
Java

Java Tips | コレクション:逆順ソート

逆順ソートは「優先度の高いものを先頭に持ってくる」ための技ソートというと「小さい順・古い順」をイメージしがちですが、業務ではむしろ「新しい順」「優先度の高い順」「金額の大きい順」が圧倒的に多いです。つ...
Java

Java Tips | コレクション:ソート

コレクションのソートは「並び順というビジネスルール」をコードにする作業ソートは単なる「小さい順・大きい順」ではありません。業務では「名前の五十音順」「日付の新しい順」「ステータス順(独自の優先度)」な...
Java

Java Tips | コレクション:重複除去

重複除去は「一意な世界にそろえてから考える」ためのユーティリティ業務コードでは、同じ値が何度も出てくることがよくあります。ユーザーIDの一覧、商品コードの一覧、タグの一覧…。そのまま処理すると、同じユ...
Java

Java Tips | コレクション:null除外

「null除外」は“混ざってしまった null を一度で掃除する”ユーティリティ業務コードを書いていると、こういうコレクションがよく生まれます。List<String> names = Arrays....
Java

Java Tips | コレクション:空Map安全取得

空Map安全取得は「null を“空の設定”にそろえる」ための小さな約束Map を返すメソッドも、業務コードに山ほど出てきます。設定値のマップ、コード→ラベルのマップ、集計結果のマップなど。そこでよく...
Java

Java Tips | コレクション:空List安全取得

空List安全取得は「null を“空”にそろえる」ための小さな約束List を返すメソッドって、業務コードに山ほど出てきますよね。検索結果、関連データ、設定値の一覧、などなど。そこでよく起きるのが、...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – モダン Java 総復習

モダン Java 総復習のゴールここまで「設計・実務視点」でいろいろ見てきましたが、モダン Java を一言でまとめると、こういう世界観になります。「Java 8 以降の機能(ラムダ、Stream、O...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – 実務でよくある罠

「実務でよくある罠」とは何かここでいう「罠」は、コンパイルは通るし一見正しく動いているように見えるのに、本番や長期運用の中でじわじわ効いてきて、バグ・障害・保守地獄につながるポイントのことです。初心者...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – モダン構文の使い過ぎ問題

「モダン構文の使い過ぎ問題」とは何かJava には、ラムダ式、Stream API、Optional、record、switch 式、パターンマッチングなど、「モダンでカッコいい構文」がたくさんありま...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – 公開 API の互換性

公開 API の互換性とは何か公開 API の互換性とは、「一度公開した API を、後から変更しても利用者のコードが壊れないようにすること」です。ここでいう「利用者」は、あなたのクラスを呼び出す別の...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – API 設計観点

API 設計観点とは何かAPI 設計観点とは、「他の人(他のクラス・他の開発者・他のシステム)が使いやすく、安全で、誤解されないインターフェースをどう作るか」という視点のことです。Java の API...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – ライブラリ選定基準

ライブラリ選定基準とは何かライブラリ選定基準とは、「このプロジェクトでどの外部ライブラリを使うかを判断するためのルール」 のことです。Java の世界には膨大なライブラリがあります。便利なものもあれば...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – チーム内 Java 方針

チーム内 Java 方針とは何かチーム内 Java 方針とは、「このチームでは Java をこう使う」という“共通ルール・共通思想”のことです。コーディング規約が「書き方のルール」だとすれば、チーム内...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – コーディング規約統一

コーディング規約統一とは何かコーディング規約統一とは、「プロジェクト全員が同じ“書き方のルール”でコードを書くようにすること」です。これは単なる“見た目の統一”ではありません。読みやすさ、保守性、レビ...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – LTS バージョン

LTS バージョンを一言でいうとJava の LTS(Long-Term Support)バージョンは、「長期間サポートされる“安定版”の Java」です。実務で言うと、「会社やプロジェクトが“これを...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – バージョンアップ対応

バージョンアップ対応を一言でいうとJava のバージョンアップ対応は、「今ちゃんと動いているシステムを壊さずに、新しい Java(JDK/JRE)に乗り換えるための一連の作業」です。単に「JDK を入...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – 非推奨 API の扱い

「非推奨 API」とは何か非推奨 API(deprecated API)は、「今はまだ使えるけれど、将来は消えるかもしれない/使ってほしくない」と宣言された API のことです。Java では @De...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – レガシーコード対応

レガシーコード対応を一言でいうとレガシーコード対応は、「よく分からないけど本番で動いている古いコード」を、壊さずに理解し、少しずつ安全にマシな状態へ近づけていく作業です。「全部書き直したい」という気持...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – 古い Java との互換性

「古い Java との互換性」とは何を指しているか「古い Java との互換性」というとき、実は複数のレイヤーの話が混ざっています。コンパイルしたクラスファイルが、どのバージョンの JVM で動くかと...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – モダン Java の書き方

「モダン Java の書き方」とは何かここでいう「モダン Java」は、Java 8 以降で手に入った機能や考え方を前提にした書き方のことだと思ってください。昔ながらの「for 文だらけ・null だ...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – 可読性とパフォーマンスのバランス

「速いコード」より「分かるコード」が先まず大前提として、実務では「とにかく速いコード」より「読んで分かるコード」の方が価値が高いです。なぜかというと、ほとんどのコードは「読む時間>書く時間>実行時間」...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – defensive programming

defensive programming を一言でいうとdefensive programming(防御的プログラミング)は、「相手(呼び出し側や外部システム)が“ちゃんとしている”と期待しすぎない...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – イミュータブル設計

イミュータブル設計を一言でいうとイミュータブル(immutable)は、「一度作ったら中身が変わらないオブジェクト」のことです。Java で一番有名なのは String です。String は rep...
Java

Java Tips | コレクション:不変Map生成

不変Map生成は「絶対に変わらない対応表」をコードで保証する技術不変Map(Immutable Map)は、「一度作ったらキーと値の対応が二度と変わらないMap」です。put も remove も c...
Java

Java Tips | コレクション:不変List生成

不変List生成は「絶対に変わらない約束」をコードに刻む技術不変List(Immutable List)は、「一度作ったら中身を二度と変えられないList」です。add も remove も set ...
Java

Java Tips | コレクション:Set初期化

Set初期化は「重複を許さない集まりの“性質”を決める」作業Setは「同じ要素を二度入れない」コレクションです。だからこそ、初期化の段階で「順序は必要か」「変更できるか」「固定の集合か」を決めておくこ...
Java

Java Tips | コレクション:Map初期化

Map初期化は「キーと値の世界の“ルール決め”」から始まるMapの初期化は、単に「空のMapを作る」「最初からいくつかのキーと値を入れておく」だけの話に見えますが、その瞬間に「変更できるか」「順序を保...
Java

Java Tips | コレクション:List初期化

List初期化は「最初の一歩で“性質”を決める」作業Listの初期化は、単に「空のリストを作る」「要素入りのリストを作る」だけの話に見えますが、実はこの瞬間に「変更できるか」「スレッドセーフか」「固定...
Java

Java Tips | 文字列処理:文字列比較IgnoreNull

「文字列比較IgnoreNull」は null に振り回されないための小さなルール業務システムでは、DBの値・画面入力・外部APIのレスポンスなど、「null かもしれない String」を比較する場...
Java

Java Tips | 文字列処理:SafeSubstring

SafeSubstring は「落ちない部分文字列」を返すための小さな盾String#substring は便利ですが、そのまま使うとすぐに例外を投げます。beginIndex や endIndex ...
Java

Java Tips | 文字列処理:MessageFormat簡易化

MessageFormat簡易化は「よく使う型を“いい感じに包む”」テクニックMessageFormat は、国際化(i18n)対応も視野に入れた強力なフォーマットクラスですが、初心者からすると「書き...
Java

Java Tips | 文字列処理:i18n文字列取得

i18n文字列取得は「画面の言葉をコードから切り離す」技術i18n(internationalization)は「多言語対応」のことです。i18n文字列取得は、「日本語・英語・中国語…など、ユーザーの...
Java

Java Tips | 文字列処理:プレースホルダ置換

プレースホルダ置換は「文字列に“名前付きの穴”をあけておく」技術プレースホルダ置換は、文字列の中に {name} や ${id} のような「名前付きの穴」をあけておき、あとからそこに値を流し込んで完成...
Java

Java Tips | 文字列処理:テンプレート展開

テンプレート展開は「決まった型に値を流し込む」技術テンプレート展開は、「ひな形(テンプレート)となる文字列の中に、動的な値を埋め込んで完成形の文字列を作る」テクニックです。メール本文の定型文に名前や日...
Java

Java Tips | 文字列処理:ランダム文字挿入

ランダム文字挿入は「ちょっとした“ノイズ”や“識別子”を混ぜる」テクニックランダム文字挿入は、既存の文字列の中に「ランダムな文字」を差し込む処理です。たとえば、IDの途中にランダム文字を混ぜて一意性を...
Java

Java Tips | 文字列処理:行数カウント

行数カウントは「テキストの大きさ」を測る基本ツール行数カウントは、「この文字列は何行あるか?」を数える処理です。ログの行数、テキストエリア入力の行数、ファイル内容の行数チェックなど、業務ではかなりよく...
Java

Java Tips | 文字列処理:単語数カウント

単語数カウントは「文章を“意味のかたまり”として扱う」ための基礎技術単語数カウントは、文章を「いくつの単語で構成されているか」を調べる処理です。英語の文章解析、検索キーワードの処理、タグ入力のチェック...
Java

Java Tips | 文字列処理:文字カウント

文字カウントは「制限」と「バリデーション」の土台になる文字カウントは、その名の通り「文字列の長さを数える」処理です。一見すごく地味ですが、業務システムではかなり重要な役割を持ちます。入力フォームで「名...
Java

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

単語分割は「検索・集計・ハイライト」の入口になる処理単語分割は、1本の文章を「単語ごと」にバラす処理です。英語なら "I love Java programming" を のように分けるイメージです。...
Java

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

行分割は「1つの長い文字列を“行ごと”に扱えるようにする」技業務システムでは、ログ、テキストファイル、メール本文、エラーメッセージなど、「複数行の文字列」を扱う場面がたくさんあります。でも、Javaの...
Java

Java Tips | 文字列処理:後方一致

後方一致は「この文字列で終わっているか」を見るシンプルな判定後方一致は、「文字列が、ある決まった文字列で“終わっているか”どうか」を調べるテクニックです。ファイル名が .csv で終わるものだけ処理し...
Java

Java Tips | 文字列処理:前方一致

前方一致は「この文字列で始まっているか」を見るシンプルな判定前方一致は、「文字列が、ある決まった文字列で“始まっているか”どうか」を調べるテクニックです。商品コードが ABC で始まるものだけ抽出した...
Java

Java Tips | 文字列処理:部分一致

部分一致は「含まれているかどうか」を調べる基本テクニック業務システムで「部分一致」はめちゃくちゃよく出てきます。商品名に「りんご」が含まれているデータだけ検索したい。エラーメッセージに特定のキーワード...
Java

Java Tips | 文字列処理:回文判定

回文判定は「左右対称かどうか」を見るシンプルなアルゴリズム回文(かいぶん)は、「前から読んでも後ろから読んでも同じ文字列」のことです。英語なら level, noon、日本語なら「たけやぶやけた」「し...
Java

Java Tips | 文字列処理:文字列反転

文字列反転は「順番をひっくり返す」だけ…だけど侮れない文字列反転は、その名の通り「文字の並び順を逆にする」処理です。"ABC" → "CBA""山田太郎" → "郎太田山"一見すると「ただの遊び」みた...
Java

Java Tips | 文字列処理:日付形式チェック

日付形式チェックは「“存在しない日付”を早めにはじく」ための技業務システムでは、日付入力は定番中の定番です。生年月日、締め日、請求日、支払日、予約日、納期…。ここで何もチェックしないと、2024-13...
Java

Java Tips | 文字列処理:数値形式チェック

数値形式チェックは「パースする前に落とすためのフィルタ」業務システムでは、画面から入力された文字列を「整数として扱いたい」「金額として扱いたい」「小数として扱いたい」という場面が山ほどあります。ここで...
Java

Java Tips | 文字列処理:URL形式チェック

URL形式チェックは「“リンクとして成立しているか”を早めにはじく」ための技ユーザーに「ホームページURL」「コーポレートサイト」「SNSのURL」などを入力してもらう場面、結構ありますよね。ここで何...
Java

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

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

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

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

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

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

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

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

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

マスク処理は「見せていいところだけ見せる」ための技業務システムでは、「全部は見せちゃダメだけど、ある程度は見せたい情報」がたくさんあります。クレジットカード番号電話番号メールアドレス会員ID、社員番号...
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 したオブジェクトが住む場所スタック(...
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桁、固定長ファイルの項目は右詰め・左詰め...
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、エラーメッセージ、メール本文など、「いくつかの値を組み合わせて一つの文字列にしたい」場面がひ...
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 は一言でいうと、「同じ場所を同時に触ろうとする複数スレッドを、順番待ちにさせる仕組み」です。もっと具体的に言うと、あるオ...
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 | 基本ユーティリティ:ファイルサイズ取得

ファイルサイズ取得は「重さを意識した設計」をするための技業務システムでは、「このファイル、本当にメモリに全部載せて大丈夫?」「アップロードされたファイルが想定より巨大じゃない?」といった“重さ”の感覚...
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 で見たり、ニューヨーク時間で見たりする作業です。同じ「瞬間」なのに、国や地域によって...
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 は「型を書かなくても、右辺からコンパイラが型を推論してくれるローカル変数宣言」のためのキーワードです。「型がなくなる」のではなく、「型を書く手間を省く」だけで、コンパイル...
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...
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 の世界では長いあいだ、「値がないこと」...
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 文でゴ...
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、テストデータ用のダミー値など、「誰ともかぶらず、予測されにくい文字列」が欲しくなる...
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 は「まだ何も入っていない参照」を表す特別な値で、オブジェクト型の変数な...
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 から入った「小さな“処理そのもの”を値として書くための記法」です。「このタイミングで、こういう処理を実行してほしい」という“やりたいこと”...
Java

Java | Java 詳細・モダン文法:ジェネリクス – ジェネリクスの制約

「ジェネリクスの制約」を一言でいうとJava のジェネリクスには、「こう書けたら便利そうだけど、仕様上あえて禁止されていること」 がいくつもあります。new T() が書けないT[](ジェネリック配列...
Java

Java | Java 詳細・モダン文法:ジェネリクス – ジェネリクスメソッド

ジェネリクスメソッドを一言でいうとジェネリクスメソッドは、「メソッドの“中だけ”で使える型パラメータを宣言して、そのメソッドを型安全に汎用化する仕組み」です。public static <T> T f...
Java

Java | Java 詳細・モダン文法:ジェネリクス – PECS 原則

PECS 原則を一言でいうとPECS 原則は、ジェネリクスのワイルドカードを使うときの合言葉です。Producer Extends, Consumer Super「値を“生産する(取り出す)側”には ...
Java

Java | Java 詳細・モダン文法:ジェネリクス – 下限境界(super)

下限境界(super)を一言でいうとジェネリクスの下限境界 ? super T は、「このコレクションは T か、その“親クラスたち”のどれかを要素型として持つ。だから、T を入れるのは安全だよ」と宣...
Java

Java | Java 詳細・モダン文法:ジェネリクス – 上限境界(extends)

上限境界(extends)を一言でいうとジェネリクスの上限境界(extends)は、「この型パラメータには、あるクラス T か、そのサブクラスだけを許可します」と制限をかけるための仕組みです。<T e...
Java

Java | Java 詳細・モダン文法:ジェネリクス – ワイルドカード(?)

ワイルドカード(?)を一言でいうとジェネリクスのワイルドカード ? は、「ここには“何らかの型”が入るけど、具体的な型は気にしない・決めたくない」というときの “あいまいな型パラメータ”です。List...
Java

Java | Java 詳細・モダン文法:ジェネリクス – ジェネリクスと配列の違い

テーマの全体像を先にまとめるジェネリクス(List<String> など)と配列(String[])は、どちらも「同じ型の要素をたくさん持つ」ために使いますが、中身のルールやチェックのタイミングがかな...
Java

Java | Java 詳細・モダン文法:ジェネリクス – 型消去の概念

型消去を一言でいうと型消去(type erasure)は、「ジェネリクスの <T> みたいな型情報は“コンパイル時だけ”に使われて、コンパイル後のクラスファイル(実行時)からは消えてしまう」という仕組...
Java

Java | Java 詳細・モダン文法:ジェネリクス – 型パラメータの宣言

「型パラメータの宣言」を一言でいうと型パラメータの宣言は、「クラスやメソッドの“名前の横に” <T> などを書いて、ここには後で具体的な型をはめ込みますよ、と宣言すること」です。class Box<T...
Java

Java | Java 詳細・モダン文法:ジェネリクス – ジェネリクスとは

ジェネリクスを一言でいうとジェネリクス(generics)は、「クラスやメソッドの中に “型の穴” を開けておいて、使うときにその穴に好きな型をはめられる仕組み」です。List<String> や M...
Java

Java | 1 日 120 分 × 7 日アプリ学習:初級編

この初級編7日間プランの全体像この「1 日 120 分 × 7 日・初級編」は、あなたがすでにmain メソッド変数・if・forメソッド配列など「超初級」で触った前提で、そこから一段階レベルを上げる...
Java

Java | 1 日 60 分 × 7 日アプリ学習:超初級編

この7日間プランの全体像このプランは「Java はまったく初めて」「プログラミングもほぼ初めて」という人を想定しています。毎日 60 分 × 7 日で、コンソール(黒い画面)で動く小さなアプリを作れる...
Java

Java | Java 標準ライブラリ:CompletableFuture 基礎

CompletableFuture を一言でいうとCompletableFuture は、「将来終わる“非同期の計算結果”を表す箱(Future)に対して、『終わったらこれをして、その後これをして…』...
Java

Java | Java 標準ライブラリ:Future

Future を一言でいうとjava.util.concurrent.Future は、「別スレッドで走っている“将来の計算結果”を受け取るための“約束の箱”」です。時間のかかる処理を Executo...
Java

Java | Java 標準ライブラリ:ExecutorService 概要

ExecutorService を一言でいうとExecutorService は、「スレッドを自分で new せずに、”仕事(タスク)だけ” を投げれば、いい感じに別スレッドで実行してくれる仕組み」で...
Java

Java | Java 標準ライブラリ:Timer / TimerTask

Timer / TimerTask を一言でいうとTimer と TimerTask は、「指定した時間後に、あるいは一定間隔で、“別スレッドで” 処理を実行してくれるシンプルなタイマー機能」です。「...
Java

Java | Java 標準ライブラリ:Base64

Base64 を一言でいうとjava.util.Base64 は、「バイナリデータ(画像・PDF・任意のバイト列)を、テキスト(英数字+記号)だけで安全にやり取りできるように変換するためのクラス」です...
Java

Java | Java 標準ライブラリ:UUID

UUID を一言でいうとjava.util.UUID は、「ほぼ絶対に重ならない“ランダムな ID” を簡単に作るためのクラス」です。データベースの主キー、ファイル名、トークン、セッションID など、...
Java

Java | Java 標準ライブラリ:Locale

Locale を一言でいうとjava.util.Locale は「このユーザー(or この処理)は、どの言語・どの国・どの地域のルールで動けばいいのか」を表すための“タグ”です。英語なら en、日本語...
Java

Java | Java 標準ライブラリ:ResourceBundle

ResourceBundle を一言でいうとjava.util.ResourceBundle は、「画面メッセージや文言を、言語ごと・国ごとに切り替えるための仕組み」です。アプリのソースコードに日本語...
Java

Java | Java 標準ライブラリ:Properties クラス

Properties クラスを一言でいうとjava.util.Properties は、「文字列のキーと文字列の値を、設定ファイル的に管理するためのクラス」です。ざっくり言うと、Map<String,...
Java

Java | Java 標準ライブラリ:StackTrace の読み方

StackTrace を一言でいうとStackTrace(スタックトレース)は、「例外が発生したときに、そのときの『呼び出し履歴』を上から順に全部並べたもの」です。どのクラスの、どのメソッドの、どの行...
Java

Java | Java 標準ライブラリ:RuntimeException を使う判断

RuntimeException を一言でいうとRuntimeException は、「“呼び出し側に明示的な例外処理を強制したくはないが、異常はちゃんと知らせたい” ときに使う例外の親クラス」です。...
Java

Java | Java 標準ライブラリ:カスタム例外

カスタム例外を一言でいうと「カスタム例外」は、自分のアプリやライブラリ専用の例外クラスを新しく定義して、エラーの意味を分かりやすく、扱いやすくするためのものです。NullPointerExceptio...
Java

Java | Java 標準ライブラリ:非チェック例外

非チェック例外を一言でいうと「非チェック例外(unchecked exception)」は、“コンパイラが try-catch や throws 宣言を強制してこない例外”かつ“たいていはプログラマー...
Java

Java | Java 標準ライブラリ:チェック例外

チェック例外を一言でいうと「チェック例外(checked exception)」は、“この失敗は普通に起こりうるから、呼び出し側でちゃんと対処を考えろ” とコンパイラが迫ってくる例外です。ファイルがな...
Java

Java | Java 標準ライブラリ:例外階層構造

例外階層構造を一言でいうとJava の「例外階層構造」は、「エラーの種類を、親子関係(クラスの継承)で整理した“族譜”」です。この“族譜”を理解しておくと、どの例外をキャッチすべきかどこで throw...
Java

Java | Java 標準ライブラリ:NIO と IO の違い

「IO」と「NIO」をざっくり一言でいうとまず一番上のイメージだけ先に置きます。従来の java.io は、「ストリームを通して、データを順番に流す I/O(線でつながったイメージ)」java.nio...
Java

Java | Java 標準ライブラリ:BufferedWriter

BufferedWriter を一言でいうとBufferedWriter は、「文字をいったんバッファ(メモリ)に貯めてから、まとめて出力ストリームに書き込むことで、高速にテキストを書き込むためのクラ...
Java

Java | Java 標準ライブラリ:BufferedReader

BufferedReader を一言でいうとBufferedReader は、「文字をまとめて内部バッファに貯めながら、“行単位で”効率よく読み取るための Reader」です。ファイルやネットワークか...
Java

Java | Java 標準ライブラリ:try-with-resources

try-with-resources を一言でいうとtry-with-resources は、「使い終わったら必ず close() しなきゃいけないものを、自動で確実に閉じてくれる try 文の書き方...
Java

Java | Java 標準ライブラリ:Files.copy

Files.copy を一言でいうとFiles.copy は、「ファイル(またはディレクトリ)の中身を、別の場所にコピーするためのメソッド」です。「あるパスのものを、別のパスへコピーしたい」「入力スト...
Java

Java | Java 標準ライブラリ:Files.lines

Files.lines を一言でいうとFiles.lines は、「テキストファイルを 1 行ずつ“ストリームとして”読み出すためのメソッド」です。Files.readAllLines が「全部いっぺ...
Java

Java | Java 標準ライブラリ:Files.readAllLines

Files.readAllLines を一言でいうとFiles.readAllLines は、「テキストファイルを“まるごと読み込んで”、1行ずつ List<String> にして返してくれるメソッド...
Java

Java | Java 標準ライブラリ:Path / Paths

Path / Paths をざっくり一言でいうとPath は、「ファイルやディレクトリまでの“道順(パス)”を表すオブジェクト」です。Paths は、「Path を作るための “工場(ファクトリ)クラ...
Java

Java | Java 標準ライブラリ:File クラス

File クラスをざっくり一言でいうとjava.io.File は、「ディスク上の “ファイル or ディレクトリ” を指し示すための “住所カード”」です。ここがとても大事で、File 自体は「中身...
Java

Java | Java 標準ライブラリ:ファイル入出力概要

Java のファイル入出力をざっくり一言でいうとJava の「ファイル入出力(I/O)」は、「ディスク上のファイルに、プログラムから文字やバイトを読み書きするための仕組み」です。初心者のうちに、まず次...
Java

Java | Java 標準ライブラリ:Period と Duration

Period と Duration をざっくり一言でいうとPeriod と Duration は、どちらも「時間の長さ」を表すクラスですが、何を基準にしているかがまったく違います。Period … 年...
Java

Java | Java 標準ライブラリ:DateTimeFormatter

DateTimeFormatter をざっくり一言でいうとDateTimeFormatter は、「LocalDate / LocalTime / LocalDateTime / ZonedDateT...
Java

Java | Java 標準ライブラリ:ZonedDateTime

ZonedDateTime をざっくり一言でいうとZonedDateTime は、「日付(年・月・日)+時刻(時・分・秒)+タイムゾーン」をまとめて表現するクラスです。LocalDateTime が「...
Java

Java | Java 標準ライブラリ:LocalDateTime

LocalDateTime をざっくり一言でいうとLocalDateTime は、「日付(年・月・日)+時刻(時・分・秒)」を、タイムゾーンなしで表すクラスです。LocalDate が「日付だけ」Lo...
Java

Java | Java 標準ライブラリ:LocalTime

LocalTime をざっくり一言でいうとLocalTime は、「日付もタイムゾーンもいらない、“純粋な時刻(時・分・秒だけ)”」を表すクラスです。朝 9 時に開店、12 時に休憩開始、18 時に閉...
Java

Java | Java 標準ライブラリ:LocalDate

LocalDate をざっくり一言でいうとLocalDate は、「タイムゾーンも時刻も持たない、“純粋な日付(年・月・日だけ)”」をあつかうためのクラスです。誕生日、締切日、営業日、請求日など、「そ...
Java

Java | Java 標準ライブラリ:Date の問題点

なぜ「Date の問題点」を知っておくべきかJava の古い日付・時刻 API(java.util.Date / java.util.Calendar)は、長年「バグを生みやすい」「直感とズレている」...
Java

Java | Java 標準ライブラリ:parallelStream の注意点

parallelStream を一言でいうと何かparallelStream() は、「Stream の処理を、CPU の複数コアを使って“自動で並列実行してくれるモード”」です。list.strea...
Java

Java | Java 標準ライブラリ:Stream の再利用不可性

Stream が「再利用できない」ってどういうことかまず結論から言うと、Java の Stream は「一度“流して”終端操作を呼んだら、そのストリームは二度と使えない(使い捨て)」という性質を持って...
Java

Java | Java 標準ライブラリ:Stream の遅延評価

「遅延評価」をざっくりイメージするまず感覚から固めます。Stream の「遅延評価(lazy evaluation)」とは、「stream().filter().map() と“パイプラインを組み立て...
Java

Java | Java 標準ライブラリ:Optional と Stream の併用

なぜ「Optional と Stream の併用」が話題になるのかOptional と Stream、どちらも「null を避けつつ、宣言的に書く」ための道具です。でも実務でコードを書き始めると、こう...
Java

Java | Java 標準ライブラリ:joining

joining をざっくり一言でいうとCollectors.joining は、「Stream の中の文字列たちを、1 本の文字列に“つなげて”まとめるための Collector」です。collect...
Java

Java | Java 標準ライブラリ:groupingBy

groupingBy をざっくり一言でいうとCollectors.groupingBy は、「Stream の要素を、ある“キー”ごとにグループ分けして Map にまとめる ための仕組み」です。イメー...
Java

Java | Java 標準ライブラリ:Collectors.toList

Collectors.toList をざっくり一言でいうとCollectors.toList() は、「Stream の結果を List に集め直すための“まとめ方テンプレ”」です。stream()....
Java

Java | Java 標準ライブラリ:collect

collect の役割をざっくりイメージするStream の collect は一言でいうと、「ストリームの“流れ”を、最終的な入れ物や形(List・Set・Map・1つの値など)にまとめる操作」です...
Java

Java | Java 標準ライブラリ:flatMap

flatMap をざっくりイメージするまず、一番大事な感覚から。map は「1つの要素 → 1つの値」に変換する操作でした。flatMap は「1つの要素 → 0個以上の“複数要素”」に変換して、最後...
Java

Java | Java 標準ライブラリ:filter 操作

filter 操作をざっくりイメージするStream の filter は、一言でいうと「流れてくる要素の中から、条件に合うものだけを通し、合わないものを捨てる 操作」です。大事なポイントはこの 3 ...
Java

Java | Java 標準ライブラリ:map 操作

「map 操作」をざっくりイメージするStream の map は、一言でいうと「流れてくる要素を、別の値に変換して流し直す 操作」です。元の要素数は変えない1 個入ったら、必ず 1 個出てくる「中身...
Java

Java | Java 標準ライブラリ:Stream の生成

「Stream の生成」をざっくりイメージするStream API の最初の一歩は、「そもそも Stream をどうやって作るか」です。filter や map は、その前に「Stream がある」こ...
Java

Java | Java 標準ライブラリ:Stream API 概要

Stream API をざっくりイメージするまず感覚から先に。Stream API は、「配列やコレクションなど“データの列”に対して、 “何をしたいか”を宣言的に書けるパイプライン」です。for 文...
Java

Java | Java 標準ライブラリ:Collections.unmodifiableList

Collections.unmodifiableList の役割をざっくりつかむCollections.unmodifiableList は、「この List、“見たり読むのはいいけど、書き換えは禁止...
Java

Java | Java 標準ライブラリ:Collections.sort

Collections.sort の役割をざっくりつかむCollections.sort は、「List の中身を並び替えるための標準メソッド」です。配列には Arrays.sort がありましたよね...
Java

Java | Java 標準ライブラリ:Comparable

Comparable をざっくりイメージするまず一言でまとめると、Comparable は「このクラスの“標準の並び順”はこうです」と自分自身で宣言するためのインターフェースです。String なら「...
Java

Java | Java 標準ライブラリ:Comparator

Comparator の役割をざっくりイメージするComparator は一言でいうと、「オブジェクト同士を“どういう順番で並べるか”を後付けで教えるためのオブジェクト」です。int や String...
スポンサーリンク