スポンサーリンク
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 のレコード数チェック、インポート前の件数確認、...
スポンサーリンク