「ブログ」カテゴリーアーカイブ

ブログ投稿用のカテゴリ

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(4) ~学習済みモデルで自作画像を認識~

前回の

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(3) ~CNNによる高精度モデル編~

までで、MNISTデータセットを使い高精度なCNNモデルを作成しました。
今回はその学習済みモデルを再利用し、自分で描いた手書き数字画像を実際に判定してみましょう。


ステップ①:学習済みモデルの保存

前回での学習コードに以下を追加して、モデルを保存しておきます。


これで C:\python_env\mnist_cnn_model.h5 が生成されます。


ステップ②:自作画像を準備する

1️⃣ 白背景に黒文字で「0〜9」の数字を描いた画像を用意
2️⃣ 画像サイズを 28×28ピクセル にリサイズ
3️⃣ ファイル形式は .png または .jpg でOK

(例)

C:\python_env\my_digit.png

※手書きペイントツールで描いてもOK。
できるだけ文字を中央に配置し、背景は白が理想です。


ステップ③:推論スクリプトを作成

ファイル名:

predict_my_digit.py

内容:


ステップ④:実行

仮想環境を有効化して、次のコマンドを実行:


ステップ⑤:結果と考察

項目内容
予測結果AIが自作の手書き数字を正しく認識し、予測結果が画面に表示される
処理時間数百ミリ秒程度で即時に判定が完了
注意点白背景×黒文字の前提で学習しているため、背景と文字が逆の場合は反転処理を削除
応用例手書き書類の数字抽出、郵便番号や伝票番号の自動読み取りなどに応用可能
考察CNNモデルにより自作データでも高い精度を維持。前処理(反転・正規化)が認識精度に大きく影響

💡 ワンポイント

もし背景が黒で文字が白の場合は、
次の行を削除してください:


✅ まとめ

これで「自分の描いた手書き数字」をAIが正しく認識できるようになりました。
この流れを応用すれば、より複雑な画像分類(例えば「猫と犬」や「手書き文字分類」)にも発展できます。

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(3) ~CNNによる高精度モデル編~

前回の記事

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(2) ~実践サンプルコード編~

では、全結合層(Dense Layer)のみを使った
シンプルなニューラルネットワークで手書き数字を認識しました。

今回はその続編として、
より高い精度を実現するために

  • 🌀 CNN(畳み込みニューラルネットワーク)

  • 🌊 Dropoutによる過学習防止

  • ⚙️ 学習率調整(Learning Rate Scheduling)

を導入した「高精度モデル版」を構築します。


🧩 動作環境(同シリーズ共通)

項目バージョン・設定内容
OSWindows 11 Pro(64bit)
Python3.13.7(公式版インストーラ)
pip25.2
仮想環境venv(C:\python_env\env)
TensorFlow2.20.0
matplotlib3.10.6


🧱 ステップ①:CNNを使ったモデル構築

CNNは画像認識に特化したネットワーク構造で、
人間の「目」と同じように特徴(輪郭・形・濃淡)を自動的に抽出します。


⚙️ ステップ②:学習率を調整して最適化

Adam オプティマイザの learning_rate を指定することで、
勾配更新のスピードを細かく制御できます。


📈 ステップ③:学習を実行

学習中の精度や損失の推移がターミナルに表示されます👇



🧾 ステップ④:テストデータで評価

CNNを導入したことで、精度は 約99%前後 に向上します🚀


🧠 ステップ⑤:予測結果の可視化


📊 ステップ⑥:精度の推移をグラフ化(オプション)

このグラフで、学習が過学習に陥っていないか確認できます。

💾 手順まとめ:ファイル保存〜実行まで

① ファイルを作成

任意のテキストエディタ(例:VSCode、メモ帳、サクラエディタなど)で
以下のコードをコピーして貼り付けてください。

ファイル名は:

mnist_cnn_high_accuracy.py

② コード内容(完全版)


③ 保存場所

わかりやすくするために、
これまでと同じフォルダ内(例:C:\python_env)に保存するのがおすすめです。

C:\python_env\mnist_cnn_high_accuracy.py

④ 実行手順

1️⃣ 仮想環境を有効化(重要):


2️⃣ スクリプトを実行:

⑤ 実行結果

  • 学習が進むと各 Epoch ごとの精度が表示される

  • 終了時に

    Test accuracy: 0.9935

    のような高精度結果が出る

  • その後、

    • AIが予測した数字画像(例:「7」)

    • 学習精度グラフ(train_acc / val_acc)
      が順に表示されます


⑥ 終了後

仮想環境を終了:


🚀 結果と考察

比較項目前回(Dense)今回(CNN+Dropout)考察
モデル構造全結合層のみ畳み込み+プーリングCNNが画像の空間特徴を直接学習でき、汎化性能が向上
エポック数510学習回数は増えるが精度向上に寄与
学習時間(目安)約5秒約20秒パラメータが増えるため計算時間は増加
精度(テスト)約97.6%約99.2%CNN導入で+1〜2ポイント改善
過学習対策なしDropout(0.5)Dropoutにより汎化が改善し、過学習を抑制

CNNを導入することで、特徴抽出の自動化が進み、
より安定した高精度の画像認識が可能になりました。


💡 応用ポイント

  • 🔹 BatchNormalization を追加するとさらに安定化

  • 🔹 データ拡張(ImageDataGenerator) で汎化性能アップ

  • 🔹 モデル保存model.save("mnist_cnn_model.h5")


✅ まとめ

本記事では、

CNN(畳み込みニューラルネットワーク)+Dropout+学習率調整
を導入して、手書き数字認識AIを高精度化しました。

精度は 約99% に到達し、実用的な画像認識モデルの基礎が完成です。

🔜 次回予告

「(4) 学習済みモデルを使って自分の手書き画像を判定する」

自分で描いた数字画像を読み込んで、
AIがそれを正しく識別できるか試してみましょう🖋️

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(2) ~実践サンプルコード編~

前回の記事
🧠Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(1) ~環境構築編~

では、

「Python公式版+仮想環境を使ったTensorFlow開発環境構築」
を行い、AI開発の準備が整いました。

今回はその続編として、
実際にTensorFlowとKerasを使って手書き数字を判定するAIモデルを作る実践編 を解説します。
データの読み込みからモデルの学習・評価・予測までを、
最小限のシンプルなコードで体験してみましょう。


🧩 動作環境(前回と同じ構成)

項目バージョン・設定内容
OSWindows 11 Pro(64bit)
Python3.13.7(公式版インストーラ)
pip25.2
仮想環境venv(C:\python_env\env)
TensorFlow2.20.0
matplotlib3.10.6


🧠 ステップ①:MNISTデータセットを読み込む

TensorFlowには「手書き数字データ(MNIST)」が標準で付属しています👇


🧩 ステップ②:データの前処理


これで学習が安定し、計算精度が向上します。

🧩 ステップ③:モデル構築(Keras Sequential)


🧩 ステップ④:学習を実行


約5エポックで 98%前後の精度 が出るはずです✨

🧩 ステップ⑤:テストデータで評価


🧩 ステップ⑥:実際に予測してみる


AIが画像を認識して、数字を正しく判定してくれます👀✨

ステップ①~⑥のコードについて

各ステップは、順番に実行される処理の流れを分けて説明しているだけで、
実際のプログラムとしては 連続して動く1つのコード になります。

つまり、実際に実行する場合は次のようにすべてまとめて書いて問題ありません👇


✅ 例:mnist_sample.py として保存する内容


💾 保存と実行

  1. C:\python_env などに上記を mnist_sample.py として保存

  2. 仮想環境を有効化:


  3. 実行:

  4. 実行例

📊 補足:精度向上のヒント

  • CNN(畳み込みニューラルネットワーク) を導入する

  • Dropout で過学習を防止

  • エポック数や学習率 の調整

これらを追加すると、より実践的なモデルになります。


🚀 まとめ

本記事では、
TensorFlowとKerasを用いて「手書き数字判定AI」を実装しました。

これで、

  • データの前処理

  • モデル構築

  • 学習・評価・予測
    というAIの基本的な流れを一通り理解できたはずです。

次回

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(3) ~CNNによる高精度モデル編~

は、CNNを用いた高精度モデル化(第3回) に挑戦します🔥

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(1) ~環境構築編~

AIや機械学習に興味がある方にとって、「画像認識」は最初の一歩として最適なテーマです。
今回は Python + TensorFlow + Keras を使って、手書き数字を自動判定するプログラムを実際に作ってみましょう。
有名な「MNIST(エムニスト)」という手書き数字データセットを使うことで、数十行のコードで高精度な認識が可能になります。


~公式版インストールから仮想環境・動作確認まで~


💻 環境例

項目バージョン・設定内容
OSWindows 11 Pro(64bit)
Python3.13.7(公式版インストーラ)
pip25.2
仮想環境venv(C:\python_env\env)
TensorFlow2.20.0
matplotlib3.10.6

🧩 ステップ①:公式Pythonのインストール

1️⃣ Python公式サイトへアクセス

👉 https://www.python.org/downloads/windows/

2️⃣ 最新の「Windows installer (64-bit)」をダウンロード

①Downloads → Windows を選択し、「Latest Python 3 Release – Python 3.13.7」をクリック

②画面下にある「Windows installer (64-bit)」をクリックしてダウンロード

3️⃣ インストーラ起動後の設定

以下のチェックを必ず確認してください。

Add python.exe to PATH
Use admin privileges when installing py.exe
➡ 「Customize installation」を選択して進む

4️⃣ Advanced Options の設定

  • ☑ Install Python 3.13 for all users

  • ☑ Add Python to environment variables

  • ☑ Precompile standard library

  • 📁 インストール先を以下に変更:

    C:\Python313

5️⃣ 「Install」をクリックして完了!


🧩 ステップ②:インストール確認

インストール完了後、コマンドプロンプトで以下を実行👇

✅ 出力例

🧩 ステップ③:仮想環境の作成と有効化

プロジェクト専用の仮想環境を作成して、ライブラリの競合を防ぎます。


有効化:

✅ 成功すると、プロンプトの先頭に (env) が表示されます

🧩 ステップ④:TensorFlowとmatplotlibをインストール

仮想環境が有効な状態で以下を実行👇


インストール後に確認:

✅ 出力例(抜粋)


🧩 ステップ⑤:動作確認

TensorFlowが正常に動作しているか確認します。


✅ 出力例:

※ oneDNN に関する警告が表示されても正常です。
性能最適化のための通知なので無視してOKです。


🧩 ステップ⑥:仮想環境の管理コマンドまとめ

操作内容コマンド
仮想環境を終了deactivate
仮想環境を再開cd C:\python_env && env\Scripts\activate
ライブラリ一覧確認pip list
仮想環境の削除rmdir /s /q C:\python_env

✅ まとめ

この手順で構築すれば、
Windows上で安定して動作する TensorFlow + Keras + matplotlib 環境が整います。
AI学習・画像認識・データ分析など、あらゆるPython開発に対応可能です💡

💬 次回予告

次の記事

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(2) ~実践サンプルコード編~

では、「TensorFlowとKerasで手書き数字を判定する」実践サンプルコード

を紹介します。
実際にMNISTデータセットを使って、
AIが数字を“読む”プロセスを一緒に学んでいきましょう。

JavaScriptなしで実現!HTML5 Canvasアニメーションで魅せるWeb装飾

HTML5の登場以降、Webデザインの表現力は大きく進化しました。
その中でも<canvas>タグは、まるで映像作品のような動きをブラウザ上で描くための強力な機能です。

「アニメーション=JavaScriptが必要」と思われがちですが、実はJavaScriptを使わずにCanvasを動かす方法も存在します。
今回は、HTML5の<canvas>タグだけで実現できる動くWeb装飾について紹介します。


🖋️ <canvas>タグの基本とは?

<canvas>タグは、HTML5で導入されたグラフィック描画用の要素です。
通常はJavaScriptを使って図形やアニメーションを描きますが、近年はCSSアニメーションやSVG、さらにはGIF・APNGを組み合わせてCanvasを動かす手法も増えています。


このようにCanvasを定義するだけで、背景や装飾として利用可能。

さらに、CSSや画像アニメーションを活用することで、JavaScriptなしでも“動きを感じさせる”デザインを作ることができます。


🌊 JavaScriptなしで実現する波紋・粒子エフェクト

近年注目されているのが、Canvasを静的画像やCSSアニメーションと組み合わせるアプローチです。

✅ 例:波紋エフェクト(CSS連携) 


これだけで、Canvas上に波紋が広がるような演出をCSSだけで表現できます。

動的スクリプトが不要なので、ローディング画面やメインビジュアルにも最適です。

サンプル


✨ パーティクル風の演出も可能

粒子(パーティクル)をイメージした演出も、背景のCanvasを複数重ねることで再現可能です。
たとえば、透明度の異なる複数のCanvasレイヤーをCSSで重ねると、光がゆらめくような表現になります。



これにより、動きを感じさせる静かな装飾が可能になります。

サンプル


🧩 活用シーン

HTML5 Canvasを使った静的アニメーションは、以下のような場面で効果的です。

  • 🌐 ローディング画面:シンプルで軽量な波紋アニメーションを表示

  • 🖼️ メインビジュアル:粒子や光を使った背景エフェクト

  • 🔲 ボタンホバー時:クリック誘導に動きを加える

  • 💻 プレゼン用サイト:静かな動きでブランド感を演出


💬 まとめ

JavaScriptを使わなくても、HTML5 Canvasを上手く活用すれば軽量で美しいアニメーション表現が可能です。
CSSやCanvasレイヤーを組み合わせることで、Webサイト全体の印象を大きく向上させることができます。

「動き=JS」ではなく、「表現=HTML5 × CSS × Canvas」
これが、モダンWebデザインの新しいアプローチです。

Oracle「ORA-28001: パスワードの有効期限が切れています」対応手順

Oracle Database を利用していると、ログイン時に
「ORA-28001: パスワードの有効期限が切れています」
というエラーに遭遇することがあります。

これは、データベースのセキュリティ機能として「パスワード有効期限」が設定されており、期限を過ぎたユーザがログインできなくなるために発生します。

この場合のエラーの原因と具体的な対応手順を解説します。


エラーの原因

Oracle データベースでは、ユーザごとに割り当てられた プロファイル(Profile) により、パスワード有効期限が管理されています。

典型的な原因は以下の通りです。

  • デフォルトの DEFAULT プロファイルで PASSWORD_LIFE_TIME が 180日 などに設定されている

  • 長期間パスワードを変更しておらず、期限切れとなった

  • 運用上、期限管理を無効化していなかった


対応手順

1. SQL*Plus などからログインを試みる

期限切れの場合、通常のユーザではログインできません。
DBA 権限を持つユーザ(例: sys as sysdba)でログインする必要があります。


2. パスワードをリセットする

対象ユーザのパスワードを変更します。


例:

これでユーザは再びログインできるようになります。


3. パスワード有効期限を確認する

どのプロファイルが割り当てられているかを確認します。

次に、そのプロファイルの設定を確認します。



4. パスワード期限を延長・無効化する(必要に応じて)

運用上パスワード期限を無期限にしたい場合は、以下のように設定します。


特定のユーザ専用プロファイルを作成し、そのみに適用する運用もおすすめです。

注意点

  • セキュリティポリシー上、期限を無期限にするのは推奨されない場合があります。

  • 運用規定に従い、定期的に強度の高いパスワードへ更新しましょう。

  • 本番環境では、DBA以外のアカウントで誤って変更しないよう注意が必要です。


まとめ

「ORA-28001: パスワードの有効期限が切れています」は、パスワードの期限切れによるエラーです。

  • DBA権限でログイン

  • パスワード変更

  • プロファイル確認と調整

この流れで対応すれば、迅速に復旧できます。運用に合わせてパスワード有効期限の設定を見直すことも重要です。

Javaの例外テストが楽になる!JUnit5のassertThrows便利な使い方

1. assertThrowsとは?

JUnit5で例外をテストする際に便利なのが assertThrows です。
従来は try-catch を使って例外を検証していましたが、コードが冗長になりがちでした。JUnit5から追加された assertThrows を使うと、例外発生をシンプルにテストできます。


これだけで 「この処理で IllegalArgumentException が発生すること」 を確認できます。

2. 旧来のtry-catch方式との比較

JUnit4までの書き方は以下のようになります。


fail を入れたり、catchブロック内で assertEquals を書く必要があり、テストコードが長くなっていました。
assertThrows を使えば、これを 1行でシンプルに記述可能 です。


3. 例外メッセージの検証

assertThrows は戻り値として発生した例外オブジェクトを返すため、メッセージや詳細を検証することも可能です。@Test


これにより 例外種別だけでなく、エラーメッセージの妥当性 も簡単にチェックできます。

4. 複数の例外クラスに対応

もし異なる種類の例外が発生する可能性がある場合、複数の assertThrows を組み合わせてテストできます。


これにより、条件ごとに発生する例外をきちんと検証できます。

5. assertThrowsを使うメリットまとめ

  • コードがシンプル:try-catchやfailを省略できる

  • 例外メッセージの検証が容易

  • 複数パターンの例外を簡潔に記述可能

  • 可読性が向上し、保守性もアップ


まとめ

JUnit5の assertThrows を使えば、例外発生テストがとてもスッキリ書けるようになります。
「テストコードの読みやすさ・保守性を高めたい」という方には必須のテクニックです。
これを取り入れるだけで、テストがより楽しく、効率的になるので試してみましょう!

スナップグループで快適マルチタスク!Windows11の新機能解説

Windows11では、ウィンドウ整理を効率化する新機能として 「スナップレイアウト」「スナップグループ」 が導入されました。これらを活用することで、複数のアプリや作業画面を直感的に管理でき、マルチタスク作業が一段と快適になります。この記事では、両機能の特徴と使い方、活用シーンを詳しく解説します。


スナップレイアウトとは?

まず基礎となるのが スナップレイアウト です。
ウィンドウを画面端にドラッグすると、自動的に左右や上下に分割表示できる機能は従来のWindowsにもありましたが、Windows11ではさらに進化しました。

  • ウィンドウを最大化ボタン(右上の□)にカーソルを合わせるとレイアウト候補が表示

  • 2分割だけでなく、3分割・4分割など多彩な配置パターンを選択可能

  • 画面解像度に応じて最適化されたレイアウトを提示

これにより、複数のウィンドウを瞬時に整列させられます。


スナップグループとは?

スナップグループ は、スナップレイアウトで配置したウィンドウを「ひとまとまり」として扱える機能です。

たとえば、次のような場面で活躍します。

  • 左側にブラウザ、右側にWordを並べて作業中

  • 他のアプリに切り替えたあとでも、タスクバーから元の組み合わせにワンクリックで戻れる

つまり、スナップレイアウトで作った「作業環境セット」を保存・呼び出せるようになったのが スナップグループ です。


スナップグループの使い方

  1. スナップレイアウトでウィンドウを並べる
    例:左にブラウザ、右にExcelを配置。

  2. タスクバーを確認
    配置したアプリごとにアイコンが表示され、さらにその組み合わせ(グループ)も並んで表示されます。

  3. グループをクリックして復元
    他のアプリを操作していても、タスクバーからワンクリックで元の作業環境に戻せます。

これにより、アプリを一つずつ切り替えて整列させ直す手間がなくなります。


活用シーン例

  • 資料作成:ブラウザで調べものをしながらWordにまとめる

  • データ分析:ExcelとPower BIを並べて数値確認

  • リモートワーク:Teamsの会議画面とOneNoteを同時表示

  • クリエイティブ作業:画像編集ソフトとブラウザを並べて参考資料をチェック

作業環境を「セット化」して切り替えられるので、場面ごとに効率よくマルチタスクを進められます。


まとめ

Windows11の スナップレイアウトスナップグループ は、デスクトップ作業を大幅に効率化する強力な新機能です。

  • スナップレイアウト → ウィンドウを自由に整列

  • スナップグループ → レイアウトをグループ化してワンクリック復元

複数アプリを同時に扱う方にとっては、まさに「ウィンドウ整理の新常識」といえるでしょう。ぜひ日常の作業に取り入れて、快適なマルチタスク環境を体験してみてください。

ゼロから学ぶ!Pythonで気軽にデータ分析入門

「Pythonでデータ分析を始めたいけど、難しそう…」
そんな初心者の方でも大丈夫!この記事では、家計簿や売上のような身近なデータを題材にして、Pythonで「データを読み込む → 集計 → グラフにする」までを体験します。

まずは小さな一歩から。ゲーム感覚で数字を扱っていくうちに、自然とデータ分析の基礎が身につきます。


サンプル環境

本記事の内容は以下の環境で動作確認しています。

項目バージョン / ツール
OSWindows 11 Pro 24H2
Python3.12.6
pip24.2
エディタPowerShell / VS Code
ライブラリpandas 2.x / matplotlib 3.x / openpyxl 3.x

Pythonとは?

Python(パイソン) は、シンプルで分かりやすいプログラミング言語です。

  • 文法がやさしい → 初めてでも読みやすい

  • 豊富なライブラリ → 家計簿、売上管理、グラフ化などすぐ活用できる

  • 学習者が多い → ネットに解説記事や質問回答がたくさん

今回は「pandas」「matplotlib」を使って、データを簡単に扱う方法を学びます。


1. Pythonをインストール

Windows 11なら Microsoft Store からインストールするのが簡単です。

  • スタート → Microsoft Store → 「Python」で検索

  • 今回は最新版の「Python 3.13」をインストールします
    ※ダウンロードすると自動的にインストールされます。


2. 動作確認

PowerShellで次を実行:

出力例:

Python 3.13.7

3. 必要なライブラリをインストール


successfullyと上記の様に表示されればインストール正常終了してます。


4. サンプルデータ

家計簿や売上のようなシンプルなデータを用意します。

sales.csv


5. Pythonで分析!4つの出力を体験

パターン① コンソール出力(数字で確認)

ファイル名を sample.py にして、わかりやすい場所(例:C:\Users\〇〇\Documents\python\)に保存します。

sample.py 」を保存したディレクトリに移動し、powershell でpython sample.pyと入力して実行すると以下の様に表示されます。

出力例:

👉 「今日は使いすぎた?」がすぐ分かります。


パターン② グラフ出力(見やすく可視化)

出力イメージ:

👉 支出の増減がひと目で分かります。


パターン③ ファイルに保存(CSV・画像)


👉 結果をExcelや画像にして保存すれば、あとで見返したり人に見せたりできます。


パターン④ Notebookで出力

Jupyter Notebookを使えば、

と書くだけで、コードの下に表がきれいに表示されます。

ステップ1: Notebookを起動

PowerShell で以下を実行します:

👉 ブラウザが開くので「File → New → Notebook → Python 3」で新しいノートブックを作ります。

ステップ2: セルごとにコードを書く

セル1: データ読み込み

👉セルを選択し、Shift  + Enterで実行すると表がセルの下にきれいに表示されます。

Notebookの特徴

print()不要 → 変数名だけで表や集計結果が表示される

グラフはセル下に直接描画

コード・結果・グラフが一つの画面でまとまって見やすい

✅ まとめると、記事で紹介したパターン④のコードは そのまま動きますが、Notebookではprintを省略して変数名だけ書けばOK という違いがあります。

👉 家計簿アプリ感覚で扱えて便利です。


まとめ

  • Pythonは初心者でも気軽に始められる

  • データ分析の出力には4パターンある

    1. 数字で見る(コンソール)

    2. グラフで見る(可視化)

    3. ファイルに保存(CSV・PNG)

    4. Notebookでまとめる

  • まずは「日ごとの支出」を分析してみるとイメージしやすい

【Excel】INDEX+MATCH関数で柔軟で高速なデータ検索を実現

Excelでデータ検索や参照を行うとき、多くの方が最初に思い浮かべるのは VLOOKUP関数 ではないでしょうか。
しかし、VLOOKUPには「参照範囲の制約」「列番号の固定」、「大量データだと重い」など不便な面もあります。
そこでおすすめなのが、 INDEX関数とMATCH関数を組み合わせる方法 です。

本記事では、INDEX+MATCH関数の使い方を基礎から応用まで解説します。


1. INDEX関数とMATCH関数の役割

INDEX関数

指定した範囲から「行番号・列番号」を基準に値を取り出す関数です。

=INDEX(範囲, 行番号, 列番号)

例:
=INDEX(B2:D5, 2, 3) → 範囲B2:D5の「2行目3列目」の値を取得


MATCH関数

指定した値が「範囲の何番目にあるか」を返す関数です。

=MATCH(検索値, 範囲, 検索方法)
  • 検索方法:0(完全一致)、1(以下)、-1(以上)

例:
=MATCH("東京", A2:A10, 0) → 「東京」がA2:A10の中で何番目かを返す


2. INDEX+MATCHの組み合わせ

INDEXとMATCHを組み合わせると、「検索値に基づいて柔軟に値を取得」できます。

=INDEX(参照範囲, MATCH(検索値, 検索範囲, 0))

例:
社員名を検索して、その人の所属部署を取得する場合

  • 検索値:セルE1(社員名)

  • 検索範囲:A2:A6(社員名一覧)

  • 参照範囲:B2:B6(部署一覧)

=INDEX(B2:B6, MATCH(E2, A2:A6, 0))

→ F2に入力した社員名に対応する部署が返る


3. VLOOKUPとの違い・メリット

  • 参照範囲を左右どちらにも指定可能
    VLOOKUPは「左端から右方向」にしか検索できませんが、INDEX+MATCHなら左にも右にも対応できます。

  • 列削除に強い
    VLOOKUPは列番号で指定するため列構成が変わるとエラーになりますが、INDEX+MATCHは柔軟です。

  • 高速処理が可能
    大量データを扱う場合でも、VLOOKUPだと処理が重くなって使えない事象が発生しますが、INDEX+MATCHの方を使用することで安定して動作します。


4. 応用例:2次元検索

行と列の両方で一致する値を取得することも可能です。

=INDEX(B2:D6, MATCH(G2, A2:A6, 0), MATCH(G1, B1:D1, 0))
  • G2に入力した「名前」

  • G1に入力した「科目」

  • → G3で名前×科目に対応する点数を取得


5. まとめ

  • INDEX関数は「値を取り出す」

  • MATCH関数は「位置を探す」

  • 2つを組み合わせることで 柔軟な検索・参照が可能

VLOOKUPでは対応できない場面でもINDEX+MATCHなら解決できます。
Excelで効率的なデータ検索を行いたい方は、ぜひ活用してみてください。