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

ブログ投稿用のカテゴリ

Java:安全な乱数生成に役立つ!SecureRandomの使いどころ

1. SecureRandomとは

SecureRandomは、**暗号論的に安全な乱数(CSPRNG:Cryptographically Secure Pseudo-Random Number Generator)**を生成するためのJavaクラスです。
java.securityパッケージに含まれ、セキュリティトークン、APIキー、暗号鍵などの生成に利用されます。

通常のRandomクラスは予測可能な乱数を生成するため、攻撃者にシードを特定される危険性があります。
対してSecureRandomはOSの暗号エンジンを利用して予測不能な乱数を生成します。


2. Randomとの違い

項目RandomSecureRandom
主な用途ゲーム・抽選・シミュレーション暗号・セキュリティ関連
再現性シード指定で再現可能予測困難・安全性重視
エントロピー源疑似乱数(数列)OSの乱数エンジン
パフォーマンス高速やや低速(安全性優先)
実装場所java.utiljava.security

3. Javaバージョン別の対応ポイント

バージョン特徴・変更点
Java 8最も広く使われる環境。SecureRandomはデフォルトで十分安全。getInstanceStrong()も使用可能(JDK実装依存)。
Java 11Base64.getUrlEncoder()などの標準エンコーダが安定。マルチスレッド環境でのSecureRandom利用も改善。
Java 17 (LTS)デフォルトの乱数アルゴリズムが強化(DRBGが推奨)。新しいSecureRandom実装が追加。
Java 21 (LTS)SecureRandomのアルゴリズム選択がより細かく制御可能に。DRBGがデフォルトで推奨パス。

💡 DRBGとは?
Java 17以降では、NIST標準(SP800-90A)に準拠したDRBG(Deterministic Random Bit Generator)が使用可能です。
これは暗号学的により強固な乱数生成手法で、今後の推奨実装となります。


4. サンプルコード:安全なトークン生成 

🧩 出力例:

安全なトークン: qZ1jJ9vCQyQJk6lK2fYvUg

5. 高度な使い方(Java 17以降対応)

✅ 強力なDRBGインスタンスを明示的に取得

💡 HexFormatはJava 17で追加された便利クラスです。
Base64よりも短い表現でログ出力に適しています。


6. よくある利用シーン

シーン使用目的推奨API
認証トークン生成セッションIDやAPIキーSecureRandom + Base64
CSRFトークンWebフォームの保護SecureRandom + HexFormat
パスワードリセットURL予測困難な一時リンク生成getInstanceStrong()
暗号鍵生成AESなどの鍵素材SecureRandom
UUID代替高強度ランダムIDSecureRandomで独自生成

7. ベストプラクティス

推奨事項理由
SecureRandomの使い回し毎回生成するとコストが高い
OS依存のソースを活用/dev/urandomなどで高品質な乱数
getInstanceStrong()を必要時のみ使用起動が遅くなるため常用は非推奨
Base64やHexFormatで可読化ログやトークンで扱いやすい
シード指定は避けるセキュリティが低下するため

8. パフォーマンス比較(目安)

操作平均速度安全性
Random.nextInt()非常に高速
SecureRandom.nextInt()中程度
SecureRandom.getInstanceStrong()やや遅い最高
SecureRandom (DRBG)中〜高最高(推奨)

9. まとめ

ポイント内容
用途暗号・認証・トークン生成に最適
バージョン対応Java 8〜21全対応
推奨実装SecureRandom または DRBG(Java 17+)
注意点シード指定・再生成の多用を避ける
一言安全性を重視する場面では必ずSecureRandomを!

🧠 コラム:SecureRandomを使うべき「具体例」

  • OAuth 2.0 認可コードの生成

  • JWTの署名鍵生成

  • Cookieのsession_id生成

  • APIトークン・CSRFトークン・暗号鍵など

「ユーザーや外部に漏れたら困る値」には必ずSecureRandom!

Oracle「ORA-01830: 日付書式の変換で不要なデータが含まれています。」原因と対処法

🧩 エラーの概要

Oracleデータベースで日付型を扱う際に発生する代表的なエラーのひとつが、
「ORA-01830: 日付書式の変換で不要なデータが含まれています。」 です。

このエラーは、TO_DATE 関数や TO_TIMESTAMP 関数などで
日付文字列とフォーマットマスクが一致していない ときに発生します。


⚠️ 主な原因

原因詳細
フォーマットと実際の文字列が一致していない例:TO_DATE('2025/10/10 12:00:00','YYYY-MM-DD HH24:MI:SS') のように、区切り文字(/ と -)が異なる
余分な空白や文字が含まれている例:'2025-10-10 '(末尾にスペース)や '2025-10-10T12:00:00'("T" が不要)など
不正な日付データを変換しようとしている例:'2025-13-10'(13月など存在しない日付)
型変換の二重適用既にDATE型の列に対して再度 TO_DATE を適用しているケース
NLS設定の影響セッションのデフォルト日付形式が異なる場合、フォーマット不一致が起きやすい

💡 再現例と解説

この例では、/(スラッシュ)で区切られているのに
フォーマットマスクが -(ハイフン)になっているため不一致です。

✅ 正しい例:


🔍 対処法まとめ

対処法内容
フォーマットマスクを一致させる区切り文字・桁数・要素(年・月・日)を文字列と揃える
TRIM関数で空白を除去TO_DATE(TRIM(列名), 'YYYY-MM-DD') のように記述
型を確認する既にDATE型なら TO_CHAR などで変換すべき
NLS設定を確認SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER LIKE 'NLS_DATE%'; で現状を確認
データクリーニング不正な日付を REGEXP_LIKE などで除外してから変換

🧠 補足:フォーマット指定の注意点

Oracleの日付フォーマット指定子には以下のようなものがあります:

指定子意味
YYYY西暦(4桁)
MM月(01〜12)
DD日(01〜31)
HH24時(00〜23)
MI
SS

たとえば YYYY-MM-DD HH24:MI:SS のように指定すれば
「2025-10-10 12:00:00」形式の文字列を正しく変換できます。


🧾 まとめ

ポイント内容
発生原因フォーマットとデータの不一致
よくあるパターン区切り文字違い・余分な空白・不正な日付
確認ポイントNLS設定、文字列の内容、列のデータ型
対処法フォーマット統一・データクリーニング・TRIM活用

✨ 例:実践的なクエリ

不正データを確認するSQL例:

変換時に安全に行う例:


🏁 まとめの一言

ORA-01830 は「フォーマットと実データのズレ」がほぼすべての原因。
SQLのフォーマット指定を正確に合わせるだけで、ほとんどのケースは解消します。

Excel:Ctrl+Enterが便利!複数セルに一気に同じ値を入力する方法

Excelで「同じ値を何度も入力していて面倒…」と思ったことはありませんか?
そんな時に知っておくと超便利なのが、Ctrl+Enter
複数セルへ同じ値を一瞬で入力できる“神ショートカット”です。
事務作業からデータ整理まで、覚えるだけで作業スピードが劇的に変わります。


🪄 対応バージョン

バージョン対応状況
Excel 2010✅ 対応
Excel 2013✅ 対応
Excel 2016✅ 対応
Excel 2019✅ 対応
Microsoft 365(サブスク版)✅ 対応
Excel for Mac✅ 対応(⌘+Enter)

💡 Mac版では ⌘+Enter で同様に一括入力が可能です。


⚡ 基本の使い方ステップ

ステップ操作内容説明
同じ内容を入れたいセルを選択ドラッグまたはShift+方向キーで範囲選択
1つのセルに値を入力例:「済」や「OK」など
Ctrl+Enterを押す選択したすべてのセルに同じ値が一括入力


💡 補足:選択方法によってCtrlの使い方が変わる

状況操作方法説明
連続したセルドラッグまたはShift+方向キーCtrlを押す必要なし
離れたセル(非連続)Ctrlを押しながらクリック複数箇所にまとめて入力したい時に便利

🔍 Ctrlキーの役割とは?

普通のEnterキーは「1セルだけ確定して次へ移動」します。
一方、Ctrl+Enter は「選択中すべてのセルに確定」して、移動しません

操作動作の違い
Enter1セル確定 → 下のセルへ移動
Ctrl+Enter全選択セルに同じ値を確定 → カーソルはそのまま

💡 Ctrlキーは「移動を止めて、全選択セルに反映させる命令キー」です。


🚀 どんなシーンで使える?

実務・日常問わず、Ctrl+Enterが活きる場面はとても多いです👇

🗂️ 1. ステータス管理の更新

進捗管理表などで、「完了」「未対応」などの文字を一括で入力。
範囲選択 → Ctrl+Enter で一発反映。

📅 2. 日付の一括設定

同じ日付を複数行に入力したいときに便利。
例:「2025/10/09」を範囲指定してCtrl+Enter。

👥 3. 担当者名・部署名の一括入力

一覧表で「営業部」「経理部」など同じ部署名をまとめて反映。
離れた場所でもCtrl+クリックで選択して一括確定。

🔢 4. テストデータ・ダミー値の作成

仮の数値や文字を一気に入力して、検証や集計を行うときに便利。

🧮 5. 数式を一括入力

たとえば =TODAY() を入力 → Ctrl+Enter で全セルに今日の日付を表示。


⚙️ 類似ショートカットとの違い

ショートカット内容特徴
Ctrl+Enter同じ値を一括入力最も汎用的
Ctrl+D上のセルをコピー縦方向に使う
Ctrl+R左のセルをコピー横方向に使う

💡 Ctrl+Enter は「最初に選んだセルの値を全体に適用」するのが特徴です。


🧠 まとめ

ポイント内容
ショートカットCtrl+Enter(Macは⌘+Enter)
効果複数セルに同じ値を一括反映
対象文字・数値・関数もOK
対応バージョンExcel 2010以降すべて対応
主な活用例ステータス・日付・部署名・数式など
メリット作業効率が劇的にアップ


✨ 編集後記

Excelの作業時間を短縮したいなら、まず覚えるべきが Ctrl+Enter
単純作業を何倍も早く終わらせられるショートカットです。
今日からぜひ試してみてください!

WinMerge:正規表現を使った高度な差分検索テクニック

WinMergeは「ファイルの違いを見るだけのツール」ではありません。
正規表現とフィルタ機能を組み合わせることで、不要な差分を除外し、実質的な変更だけに集中できます。

この記事では、
初心者でもすぐに使える「正規表現の基本」と、
上級者向けの「フィルタファイルを使った高度な差分除外テクニック」までを詳しく解説します。


🔍 正規表現を使える主な場面

機能対応説明
検索・置換検索ダイアログで「正規表現を使用」にチェック
フィルタファイル(.flt)比較時に除外ルールを定義できる
差分検出ロジック⚙ 一部特定パターンの行を無視可能

🧩 よく使う正規表現例

目的正規表現例意味
空行を無視^\s*$空白や改行のみの行を除外
日付を無視\d{4}-\d{2}-\d{2}例:2025-10-09 のような日付を除外
コメント行を無視^#.* / ^\s*//.*コメント始まりの行をスキップ
数値部分を無視\d+動的なIDやカウンタ値を除外

⚙️ WinMergeの検索で正規表現を使う方法

  1. メニューから 「編集」→「検索…」 を開く

  2. 検索キーワードに正規表現を入力(例:^ERROR.*

  3. 下部の「正規表現を使用」にチェック

  4. 「次を検索」で対象行を強調表示

🔍 よく使う検索パターン集

パターン意味
^ERROR.*ERRORで始まる行を検索
TODO|FIXMETODO または FIXME を検索
[A-Z]{3}3文字以上の大文字英単語
\bhttps?://[^\s]+URLを抽出

🧱 フィルタファイルとは?

WinMergeで比較時に「特定の行を無視」するための設定ファイルです。
拡張子は .flt
コメントや空白行、日付などのノイズを除外して、本質的な差分を見やすくできます。


🧰 フィルタファイルの作り方

① 新規作成

  1. メモ帳などで新しいテキストファイルを作成

  2. 以下の内容を記述


    項目意味
    Enable=1フィルタ有効化
    IncludeFileMask対象ファイル(例:*.java)
    ExcludeRegExp除外したい正規表現(カンマ区切りOK)
  3. 名前をつけて保存
    例:

    C:\Users\<ユーザー名>\Documents\WinMerge\filters\comment_filter.flt

② WinMergeに読み込ませる

  1. WinMergeを起動

  2. メニューで
    [編集] → [フィルタを選択] をクリック

  3. 「ファイル比較フィルタ」ダイアログで
    [参照…] → 作成した .flt ファイルを選択

  4. 「OK」を押すと有効化完了!

これで比較時にフィルタが自動的に適用されます。


③ 効果を確認する例

比較ファイルA

比較ファイルB

通常比較では「日付が違う」と表示されますが、
次のようなフィルタを設定すれば「差分なし」になります。

ExcludeRegExp=^//.*,^\d{4}-\d{2}-\d{2}.*$

→ コメントや日付行を完全に無視できるようになります!


🎯 フィルタの応用テクニック

シーン推奨設定例
コードレビューコメント・空行を除外 (^//.*, ^\s*$)
ログ比較タイムスタンプを除外 (\d{2}:\d{2}:\d{2})
設定ファイル(JSON)動的値を除外 ("updated_at":\s*".*")
HTML比較script/styleタグ内を除外 ()
💡 複数の .flt ファイルを作り、用途に応じて切り替えるのがおすすめです。

🧠 まとめ

ポイント内容
正規表現で柔軟に検索複雑な条件でも効率的にマッチング
フィルタファイルで差分を制御コメント・日付などノイズを無視
設定は簡単メモ帳で作ってWinMergeに読み込むだけ
比較効率UP実質的な変更に集中できる

🏁 結論

WinMergeの「正規表現」と「フィルタファイル」を組み合わせると、
**「無駄な差分を消して、本質だけを見る」**比較環境が作れます。

コードレビュー、ログ検証、設定差分チェックなど、
日常の比較作業を大幅に効率化してくれる強力な武器です。

Redmineコメントを読みやすくするMarkdown記法まとめ

Redmineでは、チケットコメントやWikiでMarkdown記法が使えます。
ただのテキスト入力よりも見やすく、チーム内の情報共有が格段にスムーズになります。
この記事では、Redmineのコメントで使える代表的なMarkdown書式をまとめて紹介します。


🔹 Markdownの基本ルール

Redmineの設定で「テキスト書式」が Markdown になっている場合に使用可能です。
管理者設定から [管理] > [設定] > [全般] > [テキスト書式] で確認しましょう。


📘 よく使うMarkdown記法一覧

目的記法例表示例
見出し# タイトルタイトル
強調**重要**重要
斜体*補足*補足
打ち消し~~不要~~不要(取り消し線)
箇条書き- 項目1
- 項目2
・項目1
・項目2
番号付きリスト1. 手順A
2. 手順B
1. 手順A
2. 手順B
引用> メモ内容メモ内容(引用表示)
コードブロック```java
System.out.println("Hello");
```
コード枠付きで表示
リンク[Redmine公式](https://www.redmine.org/)Redmine公式へのリンク
画像![代替テキスト](画像URL)画像を表示
水平線---水平線が引かれる
チェックリスト- [x] 完了
- [ ] 未完了
☑ 完了/□ 未完了

💡 コメントを見やすくするテクニック

1. 見出しで構造化

### 問題の詳細
### 再現手順
### 対応方針

といった形で区切ると、レビューする側がすぐに内容を把握できます。


2. コードやログは囲む

Redmineはコードハイライトに対応しているため、

sql
SELECT * FROM users WHERE status = 'active';

のように書くと、整ったコードブロックで表示されます。


3. 引用でメッセージのやりとりを整理

前回のコメント引用
対応方針を確認しました。

このように相手の発言を引用してから返信すると、会話の流れが分かりやすくなります。


4. リンクで関連チケットを明示

  • [チケット#123](https://redmine.example.com/issues/123)

  • #123 とだけ入力しても自動リンクされる


🧩 Redmine特有の便利書式

機能記法例説明
チケット参照#123該当チケットにリンク
添付ファイルリンクattachment:log.txt添付済みファイルを参照
Wikiページ参照[[Wikiページ名]]Wiki内リンク
メンション@ユーザー名通知を送る(設定による)

🌟 まとめ

ポイント内容
構造化見出しと箇条書きで整理
明確化引用とリンクで文脈を共有
強調太字・斜体で重要箇所を目立たせる
見やすさコードや表を活用して情報を整理

Markdownを使いこなせば、Redmineのコメントは「読む」ものから「伝わる」ものへ進化します。
特に開発・運用チームでは、ログ・SQL・設定内容をコードブロックで整えるだけでも大幅に改善できます。

Teamsで背景をカスタムする方法:オリジナル画像で印象アップ

Microsoft Teamsでは、オンライン会議の背景を自由にカスタマイズできます。
オリジナルの背景画像を設定することで、印象アッププライバシー保護、さらには企業ブランディングにもつながります。
この記事では、自作画像の設定手順からおすすめの背景アイデアまでをメモしておきます。


🎨 背景カスタムのメリット

項目メリット
プライバシー保護自宅やオフィスの様子を隠せる
印象アッププロフェッショナルな雰囲気を演出
ブランド強化会社ロゴや企業カラーを反映できる
気分転換会議の雰囲気を柔らかくできる

🧭 背景設定の基本手順(PC版)

  1. Teamsを起動し、会議を開始または参加します。

  2. 画面右上の 「…(その他の操作)」→「背景効果」 をクリック。

  3. 既存の背景一覧の下にある 「新しい画像を追加」 を選択。

  4. 任意の画像ファイル(JPGまたはPNG)をアップロード。

  5. 選択した画像をクリックして 「適用」

💡 補足: 背景画像は、%AppData%\Microsoft\Teams\Backgrounds\Uploads に保存されます。
直接このフォルダに画像を追加しても反映されます。


📱 スマホアプリでの設定方法(iOS / Android)

  1. 会議中に 「…」メニュー → 背景効果 をタップ。

  2. 「+」ボタンで新しい画像を選択。

  3. 適用をタップして反映。

※ スマホ版では一部端末でカスタム背景が非対応の場合があります。


🖼️ 背景に使えるおすすめ画像テーマ

テーマ雰囲気使用例
シンプルグラデーション落ち着き・清潔感社内ミーティング
書斎・オフィス風信頼感・集中力プレゼン・面談
自然風景リラックスチーム懇談や雑談
自社ロゴ入り背景プロ意識外部会議・商談
ファンタジー/アート風創造性クリエイティブ職・イベント配信

💡 背景画像の推奨サイズ・形式

項目名1項目名2項目名3項目名4項目名5
A2B2C2D2
A3B3C3D3E3
A4B4D4E4
A5B5C5D5E5

✨ オリジナル背景を作るコツ

  • Canva や Fotor などのオンラインツールを活用

  • ロゴ透過PNGを重ねるだけでブランド背景に

  • 背景色は 青・グレー系が会議映えしやすい

  • 明るさをやや落とすことで人物が目立つ


🔒 背景が反映されない場合のチェックポイント

原因対処法
Teamsが古い最新バージョンへ更新
GPU設定が無効設定→デバイス→GPUアクセラレーションを有効に
画像形式が非対応JPGまたはPNGに変換
フォルダ権限の問題管理者権限でTeamsを起動

🧩 まとめ:自分らしさを演出して印象アップ!

Teamsの背景カスタマイズは、わずか数クリックで印象を変えることができる便利な機能です。
会議の目的や雰囲気に合わせて背景を使い分ければ、コミュニケーションの質も向上します。
ぜひ自分だけの背景で、次のミーティングをスタイリッシュに演出しましょう!

Oracle「ORA-01652: 一時セグメントを拡張できません」対処手順

Oracleデータベースで大規模なソート処理や集計を行うと、
次のようなエラーが発生することがあります。

ORA-01652: 一時セグメントを拡張できません

このエラーは、一時表領域(TEMP)の空き容量不足によって
SQL実行が中断されたことを意味します。
ここでは、その原因と具体的な対処手順をわかりやすく解説します。


⚠️ エラーの意味

「ORA-01652」は、OracleがSQL実行中に必要な一時領域を確保できなかったことを示すエラーです。
特に次のような処理で発生しやすくなります。

  • 大量データを扱う ORDER BY / GROUP BY / DISTINCT / JOIN

  • インデックス作成集計処理

  • TEMP表領域が固定サイズで、自動拡張が無効


🔍 主な原因

原因詳細
TEMP表領域の容量不足TEMPファイルのサイズが小さい
自動拡張が無効TEMPFILE の AUTOEXTEND が OFF
不要なセッションがTEMPを占有他ユーザーの大規模SQLがTEMPを使用中
SQLの非効率な実行計画インデックス未使用・結合順序の問題

🧭 対処手順

① TEMP表領域の使用状況を確認

現在の使用率を確認します。

または以下のSQLでも確認可能です。


② TEMPファイルを追加または拡張

TEMP領域が不足している場合、ファイルを追加します。

または新しいTEMPファイルを追加します。


③ 不要なセッションを確認・終了

一時領域を使い続けているセッションを確認します。

不要なセッションが確認できた場合は、管理者権限で終了します。


④ SQLをチューニングする

  • インデックスを利用する

  • 不要なDISTINCTやORDER BYを削除

  • 結合順序を見直す

  • 集計処理を段階的に分割

一時領域を減らすため、SQLの実行計画を確認します。


⑤ TEMP表領域を再作成(最終手段)

TEMPファイル破損や肥大化が疑われる場合は、
再作成を検討します。


🌟 まとめ

対処法内容
TEMP使用量確認V$TEMP_SPACE_HEADERやV$SORT_USAGEで確認
TEMP拡張ADD TEMPFILE または RESIZE
セッション整理不要なセッションをKILL
SQLチューニング実行計画の見直し
TEMP再作成最終手段として実施

📘 補足:再発防止策

  • 定期的に V$TEMP_SPACE_HEADER を監視

  • TEMP表領域は AUTOEXTEND ON を推奨

  • 大規模SQL実行前に EXPLAIN PLAN を確認

  • バッチ処理では 分割実行 を検討

Java:SQL接続でつまずかないためのtry-with-resources活用法

JavaでSQL接続を扱うとき、多くの初心者が陥るのが「リソースの解放忘れ」「例外処理の煩雑さ」です。
特に Connection, PreparedStatement, ResultSet の3つは明示的に close() しないと、メモリリークや接続枯渇の原因になります。

この記事では、そんな問題をtry-with-resources構文でスマートに解決する方法を紹介します。


🧱 try-with-resourcesとは?

Java 7以降で導入された構文で、AutoCloseable インターフェースを実装したオブジェクトを
自動的にクローズしてくれる仕組みです。

✅ 従来のコード例(Java 6以前)


👉 冗長で、finally ブロックがネストしやすく、例外の見落としが発生しやすいのが難点です。

🚀 try-with-resourcesを使った改良版


✨ メリットまとめ
項目従来の書き方try-with-resources
リソース解放明示的にclose()が必要自動でcloseされる
コード量冗長スッキリ
例外の安全性finallyで記述ミスの恐れ例外を安全に補足
可読性低い高い

🧠 複数リソースを扱うときのポイント

try(...) の中で複数のリソースを「セミコロン ;」で区切って宣言できます。


順序は重要

最後に開いたリソース (ResultSet) から順に自動クローズされます(LIFO順)。


⚙️ try-with-resourcesとカスタムクラス

自作クラスでも AutoCloseable を実装すれば、
try-with-resources構文で安全に自動クローズが可能です。


出力結果:
処理中...
リソースを解放しました

⚠️ 注意点:例外の隠蔽に注意

もし try 内と close() 内の両方で例外が発生した場合、
try 内の例外が優先され、close() の例外は「抑制された例外」として記録されます。


🔍 まとめ

ポイント内容
構文try(リソース宣言){ ... }
バージョンJava 7以降
対応型AutoCloseableを実装する全クラス
主な利点コード簡略化・例外安全性・リソースリーク防止

💬 おわりに

try-with-resources は見た目以上に強力です。
「リソース管理を明示的に書かない」だけで、コードの信頼性と保守性が大幅に向上します。

特にSQL接続まわりでは、この構文を使わない理由がないほどの必須テクニックです。
今後のJava開発では「標準の書き方」として身につけておきましょう。

CSSとHTMLだけで作る立体的カードUI(Shadow DOM対応)

JavaScriptなしで、transform / perspective / layered shadowsCSSカスタムプロパティ だけで

“パッ”と目を引く3Dカードを作成してみましょう。

さらに Shadow DOM 内でも同じ見た目を再現できるよう、::part() と変数で拡張可能にします。


ゴール(できあがりイメージ)

  • マウスホバーでわずかに傾く3D表現

  • 斜めに流れるハイライト(きらめき)

  • ライト/ダークどちらでも映える配色

  • prefers-reduced-motion でアニメ控えめ

  • Shadow DOM対応::part() と CSS変数で外部からのテーマ変更OK

デモ:CSSとHTMLだけで作る3DカードUI

💡 マウスを乗せるとカードがわずかに傾き、立体的な効果が確認できます。


最小HTML(ライトDOM版) 

コアCSS(ライトDOM版) 


Shadow DOM に対応させる考え方

ポイントは 「パーツを切り出す」「CSS変数でテーマ化」
外側(ライトDOM)から Shadow DOM 内を直接スタイルできないため、コンポーネント作者が part を付与し、利用者は ::part() で装飾色や半径は CSS変数で調整します。

Web Component 側(作者向け:影DOM内のテンプレ)

※ここでは概念を示すための HTMLスケッチ です。実際の ShadowRoot 作成は JS が必要ですが、スタイル設計の指針としてご覧ください。

利用者側(外部)からのテーマ上書き例 

まとめ

  • 作者は Shadow DOM 内で CSS変数part名を定義

  • 利用者ホストへ変数指定し、必要なら ::part() でピンポイント調整


デザインバリエーション(クラス追加だけ)


アクセシビリティと実用Tips

  • ボタン/リンクのヒット領域は最低44×44pxを意識(paddingで確保)

  • prefers-reduced-motion に配慮(すでに対応)

  • コントラストoklchcolor-mix()で暗所・明所どちらも読みやすく

  • 画像のalt を適切に

  • フォールバック:古い環境では oklch が未対応 → 代替色を上書き可能に


よく使うCSSカスタムプロパティ(外から上書きOK)

変数名役割
--card-bg背景色#fff / #111
--card-fg文字色#111 / #eee
--card-accentCTAなどの強調色oklch(0.78 0.17 30)
--card-radius角丸12px / 20px
--card-shadow-1影レイヤ(近)0 1px 2px rgba(0,0,0,.2)
--card-shadow-2影レイヤ(遠)0 8px 24px rgba(0,0,0,.12)
--card-border境界線1px solid rgba(0,0,0,.06)
--card-tilt傾き(通常)rotateX(5deg) rotateY(-6deg)
--card-tilt-hover傾き(ホバー)rotateX(6.5deg) rotateY(-10deg)
--card-glossハイライトlinear-gradient(120deg, transparent 30%, rgba(255,255,255,.4) 45%, transparent 60%)
--card-gloss-sizeハイライトサイズ200% 200%

トラブルシュート

  • 立体感が弱い--card-tilt と影(--card-shadow-2)を強める

  • グロスが強すぎる--card-gloss の不透明度を上げる(=白を薄く)

  • 画面酔いprefers-reduced-motion 環境で確認、もしくはカードに .is-outline を付与

  • Shadow DOM で色が変わらない → 変数は ホスト(custom element)側に定義しているか確認


まとめ

項目ポイント
3D表現transformとperspectiveで奥行きを演出
輝き::beforeのグラデとbackground-positionで流し込み
配色oklchとcolor-mixでライト/ダーク両対応
アクセシビリティprefers-reduced-motionと十分なヒット領域
Shadow DOM作者はpart公開&変数化/利用者は::part()と変数上書き
拡張クラス追加でelevated/glass/outlineを切替

【Windows 11】コマンドプロンプト起動時に全角入力になる問題を解決!ターミナル設定で半角英数に固定する方法

Windows 11で「cmd(コマンドプロンプト)」を開くと、なぜか最初から 全角入力(ひらがな)モード になってしまう──。
以前はIMEの詳細設定やレジストリ編集が必要でしたが、最新版(Windows 11 24H2以降)では、Windows ターミナルの設定から簡単に解決できます。

🖥️ 検証環境

  • OS:Windows 11 Pro 24H2

  • 構成:コマンドプロンプト(cmd.exe)を既定プロファイルとして使用

※上記環境では、「既定の IME 入力モード」をプロファイル単位で制御できます。


⚙️ 症状

  • コマンドプロンプトを開いてコマンド入力してみると「全角」入力モードになっていて、ん?と思うことがあります。

  • 半角/全角ボタンで半角入力モードには戻るが、コマンドプロンプト起動直後が全角入力モードという状態


🧭 原因

Windows 11では、入力モード(半角/全角)が アプリ単位で記憶される仕様になっています。
CMDが前回全角で閉じられた場合、次回も全角モードで開いてしまうことがあるのです。

しかし、新しいWindows ターミナル環境(v1.21以降) では、この初期状態をプロファイルごとに固定できるようになりました。


✅ 解決方法(最新版:Windows ターミナル設定でIMEモードを固定)

① Windows ターミナルを開く

  • スタートメニューで「cmd」または「Windows Terminal」を検索して起動します。

  • 上部タブで「コマンド プロンプト」を開きます。


② 設定を開く

  • 右上の「▼」アイコン → 「設定」をクリック
     またはショートカットキー Ctrl + ,(カンマ) でもOK。


③ 「スタートアップ」メニューを選択

左メニューから「スタートアップ」を開きます。


④ 「既定の IME 入力モード」を変更

  • 「既定の IME 入力モード」という項目があります。

  • ここをクリックして 「半角英数字(英語)」 を選択。

  • 最後に「保存」をクリック。


🧩 効果

これで、コマンドプロンプトを開いた瞬間に自動的に「A(半角英数)」モードでスタートします。
他のアプリ(メモ帳・ブラウザなど)のIMEには影響しません。


💬 旧環境(設定項目がない場合)

もしこの設定が表示されない場合は、
Windows ターミナルのバージョンが古いか、Windowsが22H2〜23H2世代の可能性があります。
その場合は以下のいずれかで対処可能です:

  • IMEの「アプリごとの入力モード設定」をオフ

  • PowerShellスクリプト/レジストリで EnablePerAppMode=0 を設定

(※旧環境向けの方法は別記事で解説予定)


🧊 まとめ

方法対応バージョン難易度備考
ターミナル設定Windows 11 24H2以降★☆☆(簡単)推奨
IME詳細設定~23H2★★☆旧UIで利用可
レジストリ変更全バージョン★★★管理者権限が必要

✨ 結論

🔹 今のWindows 11なら、コマンドプロンプトのIME初期状態はターミナルで設定するのが最も確実!
🔹 スクリプトもレジストリも不要。GUIで一発設定。

この新機能のおかげで、開発や管理作業のたびに「半角に戻す」手間はもう不要です。
環境が24H2以降なら、ぜひ設定しておきましょう。