Java

スポンサーリンク
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 | 基本ユーティリティ:ディレクトリ作成

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