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...
スポンサーリンク