入門

スポンサーリンク
Python

Python | 自動化:エラー通知

概要(エラー通知は「落ちたことを人間に伝える仕組み」)エラー通知は、「プログラムがコケた瞬間に、人間がちゃんと気づけるようにする仕組み」です。例外ログは「証拠を残す」もので、エラー通知は「誰かに知らせる」ものです。自動化が進んでくると、夜中...
Python

Python | 自動化:例外ログ

概要(例外ログは「エラーの証拠を残すブラックボックスレコーダー」)例外ログは、「エラーが起きた“瞬間の情報”を、その場で消えずに後から見返せるように残しておく仕組み」です。プログラムは、一瞬で例外を投げて落ちます。でも、人間がそれを目で見て...
Python

Python | 自動化:バルク処理

概要(バルク処理は「チマチマやらずにまとめてやる」技)バルク処理(bulk processing)は、ざっくり言うと「1件ずつチマチマ処理するのではなく、まとめてガッと処理することで速く・安定して・無駄なく動かすやり方」です。自動化の現場だ...
Python

Python | 自動化:リトライ処理

概要(リトライ処理は「一度コケても、もう一歩だけ踏み込む仕組み」)リトライ処理は、「一回失敗したからといって、すぐ諦めずに“もう一度やってみる”仕組み」です。特に自動化では、ネットワークが一瞬だけ不安定になるAPI サーバーが一時的に重い外...
Java

Java | Java 標準ライブラリ:Integer キャッシュ

Integer キャッシュってそもそも何かInteger キャッシュ は、Java が「よく使われる小さい整数については、Integer オブジェクトを使い回す」という最適化の仕組みです。もっとざっくり言うと、Integer のある範囲の値...
Java

Java | Java 標準ライブラリ:auto-unboxing

auto-unboxing は「ラッパークラスから中身を自動で取り出す仕組み」まず前提から整理します。Java には、値そのものの 基本型(プリミティブ型) とそれをオブジェクトとして包んだ ラッパークラス のペアがあります。int ↔ I...
Java

Java | Java 標準ライブラリ:auto-boxing

auto-boxing は「基本型 ↔ ラッパー型の自動変換」まず前提として、Java には基本型(プリミティブ型)int, long, double, boolean, char などラッパークラス(オブジェクトとしての箱)Integer...
Java

Java | Java 標準ライブラリ:ラッパークラス全体像

ラッパークラスとは何かをざっくりつかむJava の「ラッパークラス」は、int や double のような プリミティブ型(基本型)を “オブジェクトとして包んだクラス” です。対応はこうなっています。boolean → Booleanby...
Java

Java | Java 標準ライブラリ:Optional.ifPresent

ifPresent は「値があるときだけ処理するためのスイッチ」Optional.ifPresent は、「Optional の中に値が“入っているときだけ” この処理を実行してね」と言うためのメソッドです。雰囲気としては、次の if 文の...
Java

Java | Java 標準ライブラリ:Optional.orElse / orElseGet

Optional.orElse / orElseGet は「無いときどうするかを決めるメソッド」Optional は「あるかもしれないし、ないかもしれない値」を入れる箱でした。では、その箱が「空だったとき」にどうするかを決めるのが orEl...
Java

Java | Java 標準ライブラリ:Optional.of / ofNullable

Optional.of / ofNullable の役割をざっくりつかむOptional を「値を入れる箱」と考えると、Optional.of と Optional.ofNullable は「箱に値を入れるときの入口が2種類ある」と思ってく...
Java

Java | Java 標準ライブラリ:Optional の目的

Optional は「null をそのまま渡さないための箱」java.util.Optional は、簡単に言うと「あるかもしれないし、ないかもしれない値」を入れて渡すための“箱”です。それだけ聞くと「じゃあ null でよくない?」と思う...
Java

Java | Java 標準ライブラリ:文字コード(Charset)

文字コードと Charset を直感でつかむまず前提から整理します。コンピュータの中では、文字は「バイト列(0と1の並び)」として保存・送信されます。一方、Java の String は「文字そのもの(Unicode)」として扱われます。こ...
Java

Java | Java 標準ライブラリ:split の落とし穴

split は「正規表現で区切る」メソッドだという前提String#split は、 「文字列を区切り文字で分割する」メソッド ですが、まず一番大事なポイントは「引数は“ただの区切り文字”ではなく、“正規表現”として解釈される」ということで...
JavaScript

JavaScript | 配列・オブジェクト:ループ処理 – ループの可読性

ループの可読性とは何か「可読性が高いループ」とは、意図が一目で分かり、バグが起きにくく、後から変更しやすい書き方です。ここが重要です:処理の目的(抽出・変換・集計・実行)に合った構文を選び、否定条件を早く捨て、インデックス管理を必要最小に抑...
JavaScript

JavaScript | 配列・オブジェクト:ループ処理 – インデックス利用の注意点

インデックス利用とは何か配列やオブジェクトをループ処理するとき、インデックス(位置番号)を使って要素へアクセスすることがあります。例えば arr は先頭要素、arr は i 番目の要素です。ここが重要です:インデックスは便利ですが、境界や型...
JavaScript

JavaScript | 配列・オブジェクト:ループ処理 – early return 的な書き方

早期リターン(early return)とは何かearly return は「不要な処理をなるべく“前で打ち切る”書き方」です。関数の先頭でガード(不正条件ならすぐ return)し、ループ内でも“用がない要素は早く抜ける/次へ進む”ことで...
JavaScript

JavaScript | 配列・オブジェクト:ループ処理 – ネスト配列の処理

ネスト配列とは何かネスト配列は「配列の中にさらに配列が入っている」入れ子構造です。例えば行列(2次元)、ツリー(多次元)、グループ化されたデータなどが該当します。ここが重要です:処理の設計は“どの深さまで扱うか”と“要素が配列か値かをどう区...
JavaScript

JavaScript | 配列・オブジェクト:ループ処理 – reduce での集計

reduce での集計の基本reduce は「配列の全要素を順に処理して、ひとつの値へ“畳み込む(集約する)”」ためのメソッドです。合計・平均・最大最小だけでなく、辞書(オブジェクト)や Map を作る、グルーピングする、といった“構造的な...
JavaScript

JavaScript | 配列・オブジェクト:ループ処理 – map と forEach の違い

何が違うのかmap は「各要素を同じルールで変換して“新しい配列”を返す」メソッドです。一方、forEach は「各要素に対して“処理(副作用)を実行するだけ”で、配列は返しません」。ここが重要です:結果の配列が欲しいなら map、ログ出力...
JavaScript

JavaScript | 配列・オブジェクト:ループ処理 – break / continue の使えない理由(forEach)

forEach で break / continue が使えない理由forEach は「配列の各要素に対して“関数を呼び出す”」高階メソッドです。ここが重要です:forEach は“自分でループを制御していない”ため、コールバック内から b...
JavaScript

JavaScript | 配列・オブジェクト:ループ処理 – forEach

forEach とは何かforEach は「配列の各要素に対して、指定した関数を順番に“実行する”」ためのメソッドです。ここが重要です:forEach は“副作用(処理をすること)”が目的で、戻り値として新しい配列は返しません。要素を変換し...
JavaScript

JavaScript | 配列・オブジェクト:ループ処理 – for…of

for...of とは何かfor...of は「配列など“反復可能(イテラブル)”なものを、要素の値にフォーカスしてシンプルに処理する」構文です。ここが重要です:for...of は“値”を1つずつ取り出します。インデックスが不要な処理に最...
JavaScript

JavaScript | 配列・オブジェクト:ループ処理 – for での配列処理

for とは何かfor は「カウンター(インデックス)を使って、配列を順番に処理する」ための基本的なループ構文です。ここが重要です:配列の長さと位置を明示的に扱えるので、部分処理・スキップ・早期終了・逆順など自由度が高い一方、インデックス管...
Python

Python | 自動化:タイムアウト処理

概要(タイムアウト処理は「いつまでも待たない」ための保険)タイムアウト処理は、「相手(外部サービス・コマンド・ファイル処理など)がいつまでたっても返事してこないときに、一定時間で“もう待つのをやめる”仕組み」です。自動化では、タイムアウトを...
Python

Python | 自動化:コルーチン

概要(コルーチンは「途中で一旦止まって、あとで再開できる関数」)コルーチン(coroutine)は、めちゃくちゃざっくり言うと「自分の途中経過(状態)を持ったまま、一旦止まって、あとでそこから再開できる特別な関数」です。普通の関数は「呼ぶ ...
Python

Python | 自動化:await / async

概要(async / await は「同時進行のための文法」)async / await は、「Python に“ここは待ち時間だから、その間ほかの仕事をしていいよ”と伝えるための文法」です。async def で「この関数は“同時進行でき...
Python

Python | 自動化:aiohttp

概要(aiohttp は「非同期版 requests」だと思うと入りやすい)aiohttp は、「asyncio と一緒に使うための HTTP クライアントライブラリ」です。雑に言うと、requests …… 普通の(同期)HTTP クライ...
Python

Python | 自動化:非同期 asyncio

概要(asyncio は「1人で同時進行する」仕組み)マルチスレッドやマルチプロセスは「人を増やす」イメージでした。asyncio はちょっと違っていて、「1人なんだけど、待ち時間のあいだに別の作業にパパっと切り替える」というスタイルの仕組...
Python

Python | 自動化:concurrent.futures

概要(concurrent.futures は「並列処理をいい感じにラップしてくれる道具」)concurrent.futures は、「マルチスレッド」「マルチプロセス」を、初心者でも扱いやすい形にしてくれる標準ライブラリです。やっているこ...
Python

Python | 自動化:マルチプロセス

概要(マルチプロセスは「CPUを増やしてゴリゴリ計算させる」仕組み)前回のマルチスレッドは「待ち時間のあいだに別の仕事をする」話でした。マルチプロセスはもう一歩踏み込んで、「CPU のコアをフルに使って、重い処理そのものを速くする」ための仕...
Python

Python | 自動化:マルチスレッド

概要(マルチスレッドは「待ち時間のあいだに、別の仕事を回す」仕組み)Python のマルチスレッドは、「1つのプログラムの中で、複数の“流れ(スレッド)”を同時進行させる」仕組みです。自動化の世界だと、Web API をたくさん叩く複数サイ...
Python

Python | 自動化:Web API 集計 BOT

概要(Web API 集計 BOT は「データを取って、すぐに意味のある形にするロボット」)Web API 集計 BOT は、単なる「データ収集 BOT」から一歩進んで、「取ってきたデータをその場で集計して、使える数字にしてくれるロボット」...
Python

Python | 自動化:データ収集 BOT

概要(データ収集BOTは「決まった場所から、決まった情報を黙々と集めてくれるロボット」)データ収集 BOT は、「毎日このサイトの価格をチェック」「このAPIから定期的にデータを取得」といった“繰り返しの情報収集”を、Python に任せる...
Python

Python | 自動化:Selenium ログイン自動化

概要(Selenium ログイン自動化は「ブラウザ操作を人間の代わりにやらせる」)Selenium は「ブラウザをコードで操作するロボット」です。URL を開く、ID・パスワードを入力する、ボタンをクリックする、といった作業を Python...
Python

Python | 自動化:ファイル変換自動化

概要(「○○を置いたら自動で△△に変換」を型にする)ファイル変換自動化は、「特定のフォルダにファイルを置くだけで、Python が自動で別形式に変えてくれる」仕組みです。例えば、Excel → CSV、CSV → Excel、画像のサイズ変...
Python

Python | 自動化:PDF 自動生成

概要(PDF自動生成は「レポートや帳票を押印前まで自動で作る」)Python で PDF 自動生成ができると、こんなことができます。日次・月次レポートを PDF で自動出力見積書・請求書・領収書などの帳票をデータベースから一括生成分析結果や...
Python

Python | 自動化:Excel レポート自動作成

概要(「決まった Excel レポート」を毎回ボタン一発にする)Excel レポート自動作成は、「毎月・毎週・毎日、ほぼ同じレイアウトの Excel を作る仕事」をPython に肩代わりさせることです。やることの流れは、だいたい次のような...
Python

Python | 自動化:CSV のクリーニング

概要(CSV のクリーニングは「人力のチェックを Python に任せる」作業)CSV のクリーニングは、ざっくり言うと余計な空白や文字の揺れを揃える数値・日付をちゃんと数値・日付として扱えるように直す欠損・重複・異常値を見つけて整理すると...
JavaScript

JavaScript | 配列・オブジェクト:配列の変換・加工 – 非破壊的操作の考え方

非破壊的操作とは何か非破壊的操作は「元の配列を変更せず、新しい配列を返す」考え方とテクニックの総称です。ここが重要です:配列を“直接書き換えない”ことで、予期せぬ影響(共有参照のバグ、UI状態の崩れ)を防げます。React/Vue などの状...
JavaScript

JavaScript | 配列・オブジェクト:配列の変換・加工 – sort(カスタム)

カスタム sort とは何かカスタム sort は「比較関数(compareFn)を自分で定義して、並べ替えの“ルール”をコントロールする」ことです。ここが重要です:compareFn は負・ゼロ・正の“数値”を返します(true/fals...
JavaScript

JavaScript | 配列・オブジェクト:配列の変換・加工 – sort(基本)

sort とは何かArray.prototype.sort は「配列の要素を並べ替える」メソッドです。ここが重要です:sort は“破壊的(インプレース)”で、元の配列そのものを書き換えます。返り値は同じ配列への参照です。比較関数を渡さない...
JavaScript

JavaScript | 配列・オブジェクト:配列の変換・加工 – reverse

reverse とは何かreverse は「配列の要素の並びを“逆順”に並べ替える」メソッドです。ここが重要です:reverse は“破壊的(インプレース)”に働き、元の配列そのものを逆順に書き換えます。戻り値は“同じ配列への参照”です。基...
JavaScript

JavaScript | 配列・オブジェクト:配列の変換・加工 – join

join とは何かjoin は「配列の要素を“区切り文字”でつないで、ひとつの文字列を作る」メソッドです。元の配列は変更されない非破壊操作で、返り値は常に文字列です。ここが重要です:区切り文字(セパレーター)は任意で、未指定ならカンマ、空文...
JavaScript

JavaScript | 配列・オブジェクト:配列の変換・加工 – flatMap

flatMap とは何かflatMap は「各要素を“変換”して、その結果を1階層だけ“平坦化(フラットに)”して新しい配列を返す」メソッドです。map と flat(1) を連続で行うのと同じ効果を、1回の処理で安全かつ読みやすく書けます...
JavaScript

JavaScript | 配列・オブジェクト:配列の変換・加工 – flat

flat とは何かflat は「“入れ子(ネスト)になった配列”を、指定した深さまで“平坦化(フラットに)して新しい配列”を返す」メソッドです。元の配列は変更しない非破壊操作です。ここが重要です:flat は“配列の中の配列”だけを展開しま...
JavaScript

JavaScript | 配列・オブジェクト:配列の変換・加工 – reduce

reduce とは何かreduce は「配列のすべての要素を順に処理して、“ひとつの値”にまとめる(集約する)」メソッドです。合計、最大値、オブジェクトの構築、グルーピングなど“ひとつにまとめ上げる”処理に向いています。ここが重要です:re...
JavaScript

JavaScript | 配列・オブジェクト:配列の変換・加工 – filter

filter とは何かfilter は「配列から、条件を満たす要素だけを“抽出して新しい配列”を返す」メソッドです。元の配列は変更しない非破壊操作で、返される配列の要素数は条件次第で増減します。ここが重要です:filter は“選別(ふるい...
JavaScript

JavaScript | 配列・オブジェクト:配列の変換・加工 – map

map とは何かmap は「配列の各要素に同じ処理を適用して、“変換後の新しい配列”を作る」ためのメソッドです。元の配列は変更されない非破壊操作で、要素数は常に同じままです。ここが重要です:map は“変換(mapping)”専用。副作用で...
Java

Java | Java 標準ライブラリ:Matcher の使い方

Matcher は「正規表現パターンを文字列に当てていく実行役」前回の Pattern の話とつなげると、役割分担はこうです。Pattern「正規表現(パターン)そのもの」を表す。何度も使い回せる“型”のような存在。Matcher「このパタ...
Java

Java | Java 標準ライブラリ:正規表現(Pattern)

正規表現と Pattern クラスの関係をざっくりつかむ「正規表現(regex)」は、「文字列の **“パターン” を言葉で書くための小さな言語」だと思ってください。「数字3桁‐数字4桁の電話番号」「@ を含むメールアドレスらしき文字列」「...
Java

Java | Java 標準ライブラリ:文字列比較の正解

なぜ「文字列比較」はつまずきポイントなのかJava 初心者がほぼ確実に一度はハマるのが、文字列比較でのミスです。見た目は同じ "abc" なのに、なぜか比較結果が false になる、if が通らない、バグる。原因のほとんどは、== と e...
Java

Java | Java 標準ライブラリ:文字列結合のパフォーマンス

なぜ「文字列結合のパフォーマンス」を気にする必要があるのかJava では文字列を扱う機会がとても多いです。ログ、SQL の組み立て、メッセージ生成、CSV 出力など、気づけばどこも文字列だらけになります。一見、"Hello " + name...
Java

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

StringBuffer はどんなクラスか(まず全体像)StringBuffer は、ざっくり言うと「中身を書き換えられる文字列バッファ」「スレッドセーフな StringBuilder」です。役割自体は StringBuilder とほぼ同...
Java

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

なぜ StringBuilder が必要になるのかまず前提として、String は「イミュータブル(不変)」です。一度作られた String の中身は絶対に変わりません。その結果、こういうコードを書くとString s = "";for (...
Java

Java | Java 標準ライブラリ:String のイミュータブル性

「イミュータブル」ってそもそも何?まず言葉から整理します。「イミュータブル(immutable)」は「不変」という意味です。Java の String はイミュータブルなので、一度作られた String オブジェクトの中身(文字列)は、絶対...
Java

Java | Java 標準ライブラリ:String クラスの特性

String クラスは「特別扱い」されているクラスString は、Java で文字列を扱うためのクラスです。でも、ただのクラスではなく「言語レベルで特別扱い」されている存在です。ダブルクォーテーション "..." で書いたものは全部 St...
Java

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

まず「clone は基本おすすめされない」という前提からいきなり結論から言うと、Object#clone() は「あるけど、できれば使わない方がいい API」です。理由はシンプルで、挙動が分かりにくい(浅いコピー/深いコピー問題)正しく実装...
Java

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

getClass は「そのオブジェクトの正体を教えてくれるメソッド」getClass() は、Object クラスが持っているメソッドで、「このオブジェクトは、実際にはどのクラスのインスタンスなのか」を教えてくれるメソッドです。どんなクラス...
Java

Java | Java 標準ライブラリ:hashCode 契約

hashCode 契約って何のこと?hashCode() は「オブジェクトを、整数の“番号”に変換するメソッド」です。主に HashMap や HashSet などの「ハッシュを使うコレクション」で使われます。そして Java には「equ...
スポンサーリンク