Oracle「ORA-00054: リソースがビジー状態です」発生時の回避策

Oracleで以下のようなエラーが出ることがあります:

ORA-00054: リソースがビジー状態です。NOWAITを指定したためまたはタイムアウトが発生しました。

これは「対象のオブジェクトが別のセッションでロックされており、現在アクセスできない」ことを意味します。
主に DDL(CREATE、ALTER、DROPなど)を実行した際 に発生します。


🧠 主な発生原因

原因説明
セッションロック他のセッションがテーブルやインデックスを更新中でロック中
長時間トランザクションCOMMITされていないセッションが存在
DDLとDMLの競合DML実行中にALTER TABLEなどDDLを実行しようとした
自動統計・バックアップ中バックグラウンド処理が対象オブジェクトをロックしている

🧩 ロック状況の確認方法

1️⃣ ロックされているオブジェクトを特定


2️⃣ SQLを確認

🧰 回避策①:ロック解除(セッション切断)

他セッションが原因の場合は、該当セッションを強制終了します。


sidserial# は上記クエリで確認可能。

管理者権限(SYSDBA)が必要です。


🧰 回避策②:NOWAIT句またはWAIT句を利用

NOWAIT句(即時判定)


ロック中なら即エラーを返します。スクリプト制御時などに便利です。

WAIT句(待機)


最大10秒まで待機して、解除されれば処理を続行します。

🧰 回避策③:時間をおいて再実行

統計収集や自動ジョブが走っている時間帯(例:夜間バッチ中)に発生しやすいため、
時間をおいて再実行 するのも有効です。
特に自動メンテナンスが有効な環境では、深夜帯に競合することが多いです。


🧰 回避策④:DDLを業務外時間に実行

DDLはオブジェクトを完全ロックするため、
業務時間内にALTERやDROPを実行すると高確率で発生します。

定期メンテナンス時間帯 にスケジュール化しましょう。


⚠️ 注意点

  • KILL SESSION は強制終了のため、他処理への影響リスク がある

  • バッチ処理や自動統計のタイミングと重なると再発する

  • ロック発生元を特定し、原因セッションの対処を優先 することが重要


✅ まとめ(表)

対策内容注意点
セッション確認v$locked_object でロック特定管理者権限が必要
強制切断ALTER SYSTEM KILL SESSION他処理への影響注意
WAIT句利用ロック解除を待つタイムアウト指定が重要
実行タイミング調整バッチや統計処理の時間帯を避ける定期メンテナンス枠を活用

JSいらず!HTMLだけでポップアップを出せる「popover」属性がすごい

これまで「ポップアップ」や「モーダルウィンドウ」を作るには、
JavaScriptやCSSトリックを駆使するのが当たり前でした。

ところが最近、**HTMLだけでポップアップを表示できる新属性「popover」**が登場!
これが想像以上にシンプルで、しかも見た目も自然なんです。

この記事では、「popover」属性の基本的な使い方から応用例までまとめています。


🚀 popover属性とは?

popover属性は、HTMLの要素に「ちょっとした吹き出し」や「軽いモーダル」を表示するための新仕様です。
JavaScriptなしで開閉制御でき、ボタンやリンクに紐づけて簡単に使えます。

対応ブラウザ

  • ✅ Chrome 114以降

  • ✅ Edge 114以降

  • ✅ Safari 17以降

  • ⚠️ Firefox(現時点では開発中)

※2025年現在、多くのモダンブラウザでサポートが進んでいます。


🧱 基本の使い方

✅ 最小構成の例 


<表示例>

💬 ポイント解説

  • popover 属性を付与した要素が、ポップアップ対象になります。

  • popovertarget 属性で、どの要素を表示するか指定します。

  • ボタンをクリックするだけで自動的に開閉制御してくれます。


🎨 スタイルを整える

デフォルトのままだと少し味気ないので、CSSで整えましょう。


これで、軽いツールチップやメニュー風の見た目にできます。

背景を白系にすれば、Webアプリ風のモーダルにも。


⚙️ 応用:自動で閉じる・メニュー風表示 

popovertargetaction="toggle" を使うと、クリックごとに開閉を切り替えられます。
ナビゲーションメニューやヘルプボックスなどにも応用可能です。

<表示例>


🧠 裏側の仕組み

HTMLの「popover」属性は、ブラウザ側で開閉制御を自動的に処理します。
内部的には :popover-open という擬似クラスが追加され、
CSSで開閉状態を検知することもできます。


この仕組みにより、JSでイベントを監視せずとも

**「開いたときだけアニメーション」**などを実現できます。


💻 実用例:通知メッセージ


JavaScript不要で、ユーザーに小さなメッセージを伝えることが可能です。

フォーム送信後の完了メッセージなどにもぴったり。


⚠️ 注意点

  • 古いブラウザでは未対応なので、必要に応じて<dialog>タグやJSフォールバックを検討。

  • 開く方向は自動制御されるため、細かい位置調整が難しい場合があります。

  • 長文や複雑なレイアウトには不向き(軽量ポップアップ用途がベスト)。


🌟 まとめ

特徴内容
JavaScript不要HTMLだけで完結
見た目自由CSSで簡単カスタマイズ
軽量ページ読み込みが早い
一部ブラウザ注意Firefoxは実装中

🔮 今後の展望

「popover」属性はまだ新しい技術ですが、
“JavaScriptレスなUI” を目指すHTML進化の象徴です。

今後は、ツールチップ・通知・設定メニューなど、
より多くのシーンで採用が進むと期待されます。

🧠 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回) に挑戦します🔥