OmniAICreator/Qiita-1.07M huggingface dataset:
モバイルアプリ開発におけるセキュリティーチェックリスト

![マインドマップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79373/7a777487-00a3-8d3d-11d9-c9583ad24993.png)


モバイルアプリの利用が拡大する中、セキュリティ対策はその成否を左右する重要な要素です。不十分なセキュリティは、個人情報の漏洩やアプリの信頼性低下を招く可能性があります。本記事では、プライバシー保護やデータ暗号化を含むモバイルアプリ開発におけるセキュリティチェックポイントを紹介します。

## 1. データの保護

### 1.1 データの暗号化
- **保存中のデータ（at-rest）の暗号化**: AES-256などの強力な暗号化アルゴリズムを使用。
- **転送中のデータ（in-transit）の暗号化**: HTTPSやTLSを利用してデータを安全に送受信。
- **API通信の暗号化**: APIキーやトークンを暗号化して安全に管理。

### 1.2 ローカルデータストレージの管理
- 機密データをローカルストレージに保存しない。
- ファイル暗号化ライブラリを使用して、データを保護。

## 2. 認証と認可

### 2.1 安全な認証
- OAuth 2.0やOpenID Connectを利用した安全な認証フローを導入。
- 多要素認証（MFA）の導入。

### 2.2 権限の適切な管理
- ユーザー権限を最小限に設定。
- サーバーサイドで権限検証を行い、クライアントサイドのみに依存しない。

## 3. プライバシー保護

### 3.1 ユーザーデータの最小収集
- 必要最小限のデータのみを収集。
- プライバシーポリシーを明確に提示し、ユーザーの同意を得る。

### 3.2 データ共有の制御
- サードパーティSDKやAPIを利用する場合、データの取り扱いを確認。
- データ共有にはユーザーの明示的な同意を求める。

## 4. セキュリティ脆弱性の防止

### 4.1 コードの保護
- ソースコードを難読化してリバースエンジニアリングを防止。
- APIキーやシークレットをアプリ内にハードコードしない。

### 4.2 脆弱性スキャン
- OWASP Mobile Security Testing Guideに基づいてアプリをテスト。
- 静的アプリケーションセキュリティテスト（SAST）や動的アプリケーションセキュリティテスト（DAST）を実施。

## 5. ネットワークセキュリティ

### 5.1 セキュリティ証明書の管理
- ピンニング（Certificate Pinning）を利用して中間者攻撃を防止。
- 信頼できるCAから発行された証明書を使用。

### 5.2 セッション管理
- セッションタイムアウトを設定。
- セッションデータを暗号化し、クッキーに保存する場合はSecure属性を付与。

## 6. アプリのアップデートとメンテナンス

### 6.1 定期的なアップデート
- 使用しているライブラリやフレームワークの脆弱性を確認し、定期的に更新。

### 6.2 ユーザー通知
- セキュリティ関連の更新がある場合、ユーザーに通知。

## 参考リンク

- [OWASP Mobile Security Testing Guide](https://owasp.org/www-project-mobile-security-testing-guide/) - モバイルアプリセキュリティのベストプラクティス。
- [NIST Application Security Guidelines](https://csrc.nist.gov/) - アプリケーションセキュリティに関するガイドライン。
- [Google Play Console - セキュリティガイド](https://support.google.com/googleplay/android-developer/answer/9875930) - Google Playでのセキュリティ要件。
- [Apple Developer - プライバシーとデータ保護](https://developer.apple.com/privacy/) - iOSアプリ開発におけるプライバシー保護。

## まとめ

モバイルアプリ開発におけるセキュリティは、ユーザーの信頼を得るために欠かせない要素です。本チェックリストを活用し、プライバシー保護やデータ暗号化を徹底することで、安全で信頼性の高いアプリを構築しましょう。
dSPACE ControlDeskプロジェクト移動方法

## 1. はじめに
プロジェクト全体/一部をコピーしたり，他のPCに移動させたいときがあります．
全部一から作らなくても一部のファイルは引き継げるという情報です．

## 2. 全体像
![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2654082/14d0186b-59af-8724-ae1a-ed495e16ca59.png)
![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2654082/76223db4-c7a6-5af8-8306-682009838047.png)
![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2654082/27983197-b263-3c94-3e95-84bf0bb6edd0.png)

## 3. ファイルごとの解説
### プロジェクトフォルダ
バージョンが同じ場合，プロジェクトフォルダを丸ごと複製することができます．
sdfファイルもプロジェクトフォルダ内にコピーされているので，Simulinkモデルを変更しないのであればそのまま使えます．
変更する場合はslxファイルも移行先のPCで使用しているSimulinkで再コンパイルして`projectパネル`の~.sdfを右クリックしてreplaceをクリックして新しいsdfを選択してください．
同じPCの場合もpathが変わるので同じ設定が必要だと思います．（未確認）

### layファイル
レイアウト情報が詰まったファイル．
Layoutingタブでimportやexportができます．
バージョンが異なる場合importしても空欄になるときがあるのでそのときは諦めて一から作りましょう．

### slxファイル
基本的には移行先のMATLAB環境にslxファイルのバージョンを合わせてください．

### xevtファイル
Event Configureのpythonファイル．
pythonプログラムはコピペしてテキストファイルに貼り付けてやり取りするのが手っ取り早いです．
npmとnpxの違い

React Nativeで開発を始める際、npmとnpxの違いに戸惑うことがあるので、備忘録。
# npm (Node Package Manager)
npmは、Node.jsのパッケージを**管理**するためのツールで、以下の機能を持っています。
- **パッケージのインストール**: プロジェクトで使用するライブラリやツールをインストールする。
- **依存関係の管理**: プロジェクト内のpackage.jsonファイルを通じて、使用しているパッケージとそのバージョンを管理する。
- **スクリプトの実行**: package.json内に定義されたスクリプトをnpm run スクリプト名で実行できる。
# **npx (Node Package Executer)**
npxは、npm5.2から同梱されているツールで、パッケージをインストールせずにコマンドを実行できるため、以下の用途に適しています。
- **一時的なパッケージの実行**: グローバルにインストールされていないパッケージでも、`npx <パッケージ名`>とすることで、即時ダウンロードして実行できる。
- **特定バージョンの実行**: npx パッケージ名@バージョンと指定することで、特定のバージョンのパッケージを直接実行できる。
# **React Native開発における使い分け**
React Nativeのプロジェクトを新規作成する際、npxを使用してreact-nativeコマンドを実行するのが一般的かと思われます。例えば、以下のコマンドで新しいプロジェクトを作成できたり、iOSビルドを実行してシミュレーターを起動したり。
```
npx react-native init MyNewProject
npx react-native run-ios
```
一方、npmはプロジェクト内で使用するパッケージのインストールや依存関係の管理に使用します。例えば、package.jsonの作成をしたり追加のライブラリをインストールしたり。
```
npm init
npm install <ライブラリ名> --save
npm install <ライブラリ名> --save-dev
```
npm installのみだと、package-lock.jsonの内容を読み取ってインストールします。
`--save`と`--save-dev`の違いは、前者はdependencies（＝本番環境）に、後者はdevDependencies（＝開発環境）にインストールされます。ちなみにそれらのオプションを省略した場合はdependenciesに追加されます。
ネットワークセキュリティのチェックリスト

![マインドマップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79373/570d6bc1-3cc1-a046-69fc-f9f7dba0dd2c.png)


ネットワークセキュリティは、組織や個人をサイバー攻撃から守るための基盤です。ファイアウォール、VPN、ネットワーク分離といった基本的な対策を適切に実施することで、多くのリスクを軽減できます。本記事では、ネットワークセキュリティ向けの具体的なチェックリストを紹介します。

## ファイアウォールの設定

### 1. ファイアウォールポリシーの最適化
- 必要最小限のポートのみを開放する。
- 特定のIPアドレスやネットワーク範囲にアクセスを限定する。
- ファイアウォールルールを定期的にレビューし、不要なルールを削除する。

### 2. ログの監視と分析
- ファイアウォールログを有効にし、不審なアクティビティを監視する。
- 自動化ツールを利用して、異常検出を迅速化する。

### 3. ファームウェアとソフトウェアの更新
- ファイアウォールのファームウェアを定期的にアップデートし、最新のセキュリティパッチを適用する。

## VPN（仮想プライベートネットワーク）の使用

### 1. 安全なプロトコルの選択
- IKEv2/IPSecやOpenVPNなどの安全なプロトコルを使用する。
- 古いプロトコル（PPTPなど）は使用しない。

### 2. 強力な認証方法の採用
- ユーザー認証には強力なパスワードと多要素認証（MFA）を組み合わせる。
- デジタル証明書を活用してデバイス認証を強化する。

### 3. 接続の監視とログ記録
- VPNの接続ログを記録し、不審な接続を確認する。
- アクティブセッションを定期的に監視する。

## ネットワーク分離の実施

### 1. VLAN（仮想LAN）の活用
- 部署やシステムごとにネットワークを分離し、不要なトラフィックを制限する。
- ゲストネットワークと社内ネットワークを完全に分離する。

### 2. セグメンテーションポリシーの設定
- 機密情報を扱うシステムには厳格なアクセス制御を実施する。
- サーバー、クライアント、IoTデバイスをそれぞれ別のセグメントに分ける。

### 3. トラフィックの監視
- 各ネットワークセグメント間のトラフィックを監視し、異常を検知する。
- IDS（侵入検知システム）やIPS（侵入防止システム）を活用する。

## ネットワーク監視とリアルタイムアラート

### 1. ネットワーク監視ツールの導入
- ZabbixやNagiosなどのツールでネットワークパフォーマンスを監視する。
- セキュリティイベント管理（SIEM）を利用して、統合的な監視を実現する。

### 2. リアルタイムアラートの設定
- 異常なトラフィックや不審なアクティビティを検知した際に即時アラートを受け取る。
- アラートを運用チームに迅速に通知し、即座に対応できる体制を構築する。

## その他の基本対策

### 1. 定期的なセキュリティテスト
- ペネトレーションテストを実施し、ネットワークの弱点を洗い出す。
- 定期的なセキュリティ診断を行い、改善点を特定する。

### 2. バックアップの管理
- ネットワーク設定を定期的にバックアップし、万が一の障害時に迅速に復旧できるようにする。

### 3. 従業員教育の実施
- 従業員に対して基本的なセキュリティ意識を高めるトレーニングを行う。
- フィッシングメールや不審なリンクに対する警戒心を持たせる。

## まとめ

ファイアウォール、VPN、ネットワーク分離を中心としたネットワークセキュリティ対策を適切に実施することで、組織や個人のセキュリティリスクを大幅に軽減できます。本チェックリストを活用し、堅牢なネットワーク環境を構築しましょう。

## 参考リンク

- [ファイアウォールの基礎 - Cisco](https://www.cisco.com/c/ja_jp/solutions/firewall.html) - ファイアウォールの仕組みや導入方法を解説。
- [VPNのベストプラクティス - NIST](https://csrc.nist.gov/) - 安全なVPNの使用に関する推奨事項。
- [ネットワーク分離とセグメンテーション - Palo Alto Networks](https://www.paloaltonetworks.com/) - ネットワークセグメンテーションの重要性と実践方法。
- [Zabbix公式ドキュメント](https://www.zabbix.com/documentation) - ネットワーク監視ツールの設定と使用方法。
クラウド運用環境向けのセキュリティーチェックリスト

![マインドマップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79373/62eb89dc-0133-d5b1-b134-084342420847.png)


クラウド環境の利用が広がる中、AWS、Azure、GCPといった主要なクラウドプロバイダーにおけるセキュリティ対策は、運用の成功に欠かせません。本記事では、各プラットフォームに特化したセキュリティーチェックリストを紹介します。

## 共通のセキュリティ原則

クラウド環境でのセキュリティは、プラットフォームに依存しない共通の原則があります。

1. **最小権限の原則（Least Privilege）**:
   - 必要最低限の権限をユーザーやリソースに付与する。

2. **ネットワークセグメンテーション**:
   - 仮想ネットワーク内でトラフィックを分離し、不必要なアクセスを防止する。

3. **セキュリティの自動化**:
   - 定期的なセキュリティ診断やポリシーチェックを自動化。

4. **暗号化の徹底**:
   - データを保存中（at-rest）と転送中（in-transit）の両方で暗号化。

## AWS向けセキュリティチェックリスト

### 1. IAM（Identity and Access Management）の設定
- ユーザーとロールには最小限の権限を割り当てる。
- IAMポリシーを定期的にレビューする。
- IAMユーザーではなく、IAMロールを活用してサービスにアクセス。

### 2. S3バケットのセキュリティ
- バケットに公開アクセス権を設定しない。
- バケット内のデータを暗号化（AES-256やAWS KMS）する。
- アクセスログを有効化して不審なアクティビティを監視。

### 3. セキュリティグループの管理
- 必要最小限のポートだけを開放。
- IPアドレス範囲を特定のネットワークに制限する。
- セキュリティグループのルールを定期的に見直す。

## Azure向けセキュリティチェックリスト

### 1. Azure Active Directory（AAD）の活用
- 多要素認証（MFA）を有効化する。
- 条件付きアクセスポリシーを設定し、特定の条件でアクセスを制限。

### 2. ネットワークセキュリティ
- Azure Virtual Network（VNet）でネットワーク分離を実施。
- ネットワークセキュリティグループ（NSG）を活用してトラフィックを制御。
- DDoS Protectionを有効にする。

### 3. Azure Security Centerの利用
- 推奨事項に基づいてセキュリティ構成を改善。
- セキュリティ警告をリアルタイムで確認し、対応を行う。

## GCP向けセキュリティチェックリスト

### 1. Identity and Access Management（IAM）の設定
- プリンシパルごとにカスタムロールを作成して最小権限を適用。
- 監査ログを有効化し、権限の使用状況を追跡。

### 2. Cloud Storageのセキュリティ
- バケットポリシーを厳格に設定。
- Cloud Storageのデータを暗号化（Google-managedまたはカスタマー管理の鍵）。

### 3. VPC Service Controlsの設定
- サービス境界を設定してリソースへのアクセスを制限。
- 外部からのアクセスをモニタリングし、不審なアクティビティを検出。

## 具体的なツールの活用

1. **AWS Config**: AWS環境のコンプライアンスをモニタリング。
2. **Azure Policy**: Azureリソースのポリシー準拠を自動化。
3. **Google Cloud Security Command Center**: GCPリソースのセキュリティリスクを管理。

## セキュリティの継続的改善

クラウド環境のセキュリティは、一度の設定で完了するものではありません。継続的にリソースを監査し、新しい脅威やベストプラクティスに対応することが重要です。

## まとめ

AWS、Azure、GCPそれぞれに特化したセキュリティ対策を実践することで、クラウド運用環境のリスクを最小限に抑えることができます。本チェックリストを参考に、堅牢なクラウドセキュリティを実現しましょう。

## 参考リンク

- [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/) - AWSのベストプラクティスを解説。
- [Azure Security Documentation](https://docs.microsoft.com/en-us/azure/security/) - Azureのセキュリティリファレンス。
- [Google Cloud Security Overview](https://cloud.google.com/security) - GCPのセキュリティガイドライン。
- [OWASP Cloud Security Guidelines](https://owasp.org/www-project-cloud-security/) - クラウドセキュリティの一般的なガイドライン。
stringとwstringの変換

# stringとwstringを変換する
staticクラスでStringUtilityというのを定義しておきます。
その中の関数に
```C++

#include<DxLib.h>
#include<cassert>

std::wstring StringUtility::StringToWstring(const std::string& str)
{
    
    std::wstring ret;
    //一度目の呼び出しは文字列数を知るため
    auto result = MultiByteToWideChar(CP_UTF8,
                                    0,
                                    str.c_str(),//入力文字列
                                    str.length(),
                                    nullptr,
                                    0);
    assert(result >= 0);
    ret.resize(result);//確保する
    //二度目の呼び出しは変換
    result = MultiByteToWideChar(CP_UTF8,
        0,
        str.c_str(),//入力文字列
        str.length(),
        ret.data(),
        ret.size());
    return ret;
}

std::string StringUtility::WstringToString(const std::wstring& wstr)
{
    std::string ret;
    //一度目の呼び出しは文字列数を知るため
    auto result = WideCharToMultiByte(
        CP_ACP,
        0,
        wstr.c_str(),//入力文字列
        wstr.length(),
        nullptr,
        0,
        nullptr,
        nullptr);
    assert(result >= 0);
    ret.resize(result);//確保する
    //二度目の呼び出しは変換
    result = WideCharToMultiByte(
        CP_ACP,
        0,
        wstr.c_str(),//入力文字列
        wstr.length(),
        ret.data(),
        ret.size(),
        nullptr,
        nullptr);
    return ret;
}
```
このようなものを作っておけば、変換の役に立ちます
Emacs Lisp 超初心者がコマンドを作ってみる 〜 フレームを最前面に 〜

# はじめに

別フレーム表示で微妙な点として、他のEmacs フレームや、他のいわゆるウインドウの後ろだと、そのまま Ediff 実行してしまうという現象が出ました。

そこで Ediff 実行時に最前面に持ってくるようにします。

# 指定フレームを再前面に持ってくる

変更箇所
````common_lisp
; (前略)
(with-selected-frame (car frames)
    ;; pepm-frame try to most front
    (select-frame-set-input-focus (selected-frame))
    ;; run ediff
    (ediff-regions-internal
; (後略)
````
select-frame-set-input-focus 一発で良いようです。 手元ではEmacs フレームのみならず他のいわゆるウインドウ(Google Chromeのウインド等)も含めて最前面に表示してくれているようです。

指定フレームは with-selected-frame の中なので単に(selected-frame) するだけです。

当該フレームが iconify されていても復元し、最前面に持ってきてくれています。

今回はここまで。
Webアプリ開発向けセキュリティーチェックリスト

![マインドマップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79373/0d609ccc-3cbf-9f5f-af55-ad540bdb81c3.png)


Webアプリケーション開発において、セキュリティ対策は非常に重要です。不適切な対策は、個人情報漏洩やサービス停止といった重大なリスクを引き起こす可能性があります。ここでは、OWASP（Open Web Application Security Project）Top 10に基づいたセキュリティーチェックリストを紹介します。

## OWASP Top 10に基づいたセキュリティ項目

### 1. インジェクション（Injection）
**チェックポイント**:
- ユーザー入力を信頼しない。
- パラメータ化クエリ（Prepared Statement）を使用する。
- 入力値を適切に検証・サニタイズする。

### 2. 認証の不備（Broken Authentication）
**チェックポイント**:
- セッションIDを安全に生成・管理する。
- パスワード保存には安全なハッシュアルゴリズム（例: bcrypt）を使用する。
- 多要素認証（MFA）を導入する。

### 3. 機密情報の露出（Sensitive Data Exposure）
**チェックポイント**:
- 機密情報は暗号化する（例: TLS、AES）。
- 安全な通信プロトコル（HTTPS）を強制する。
- 機密データをログに記録しない。

### 4. XML外部エンティティ（XXE）
**チェックポイント**:
- 外部エンティティを無効化する。
- XMLパーサーの設定をセキュアにする。
- XMLの代わりにJSONを使用することを検討する。

### 5. アクセス制御の不備（Broken Access Control）
**チェックポイント**:
- ロールベースまたは属性ベースのアクセス制御を実装する。
- デフォルトでアクセスを拒否するポリシーを設定する。
- サーバーサイドでアクセス権を検証する。

### 6. セキュリティ設定ミス（Security Misconfiguration）
**チェックポイント**:
- 不要な機能やサービスを無効化する。
- アップデートとパッチ適用を定期的に行う。
- 詳細なエラーメッセージをユーザーに表示しない。

### 7. クロスサイトスクリプティング（XSS）
**チェックポイント**:
- HTMLエンティティのエスケープ処理を行う。
- JavaScriptのコンテンツセキュリティポリシー（CSP）を設定する。
- ユーザー入力を適切にサニタイズする。

### 8. 不十分な安全性のあるデシリアライズ（Insecure Deserialization）
**チェックポイント**:
- 信頼できないデータをデシリアライズしない。
- デシリアライズ時のデータの検証を行う。
- JSON Web Token（JWT）など安全な形式を使用する。

### 9. 使用済みコンポーネントの脆弱性（Using Components with Known Vulnerabilities）
**チェックポイント**:
- 使用しているライブラリやフレームワークの脆弱性を定期的に確認する。
- 必要に応じて最新版にアップデートする。
- 不要な依存関係を削除する。

### 10. 不十分なログとモニタリング（Insufficient Logging & Monitoring）
**チェックポイント**:
- セキュリティ関連のイベントを適切に記録する。
- 不正アクセスや異常をリアルタイムで検知する仕組みを導入する。
- ログデータを安全に保管する。

## 実践のポイント

1. **自動化ツールの活用**:
   - セキュリティテストツール（例: OWASP ZAP、Burp Suite）を導入し、脆弱性を検出。

2. **継続的なセキュリティレビュー**:
   - コードレビューやセキュリティ監査を定期的に実施。

3. **セキュリティトレーニング**:
   - 開発者に対してセキュリティ教育を行い、リスクを最小限に。

## まとめ

OWASP Top 10に基づくセキュリティーチェックリストは、Webアプリケーション開発における基本的なガイドラインです。これらを実践することで、セキュリティリスクを大幅に軽減できます。しかし、このリストは包括的なものではなく、特定のプロジェクトや業界固有のリスクには対応していない場合もあります。開発者やセキュリティチームは、プロジェクトの性質に応じて追加の対策を検討する必要があります。

開発初期からセキュリティを考慮し、堅牢なアプリケーションを構築しましょう。


## 参考リンク
- [OWASP Top 10 - 公式サイト](https://owasp.org/www-project-top-ten/) - 最新のOWASP Top 10に関する詳細情報。
- [NIST Web Application Security Guidelines](https://csrc.nist.gov/) - アメリカ国立標準技術研究所によるセキュリティガイドライン。
- [Google Developers - Web Fundamentals](https://developers.google.com/web/fundamentals/security) - Googleが提供するWebセキュリティの基本情報。
- [セキュリティテストツール OWASP ZAP](https://owasp.org/www-project-zap/) - OWASPが提供する無料のセキュリティテストツール。
【モダンCSS】コンテナクエリって結局何か？

## コンテナクエリとは
CSSの新機能で、親要素（コンテナ）のサイズに基づいてスタイルを変更できる機能で、従来のメディアクエリ（@media）が画面幅に応じてスタイルを変更するのに対し、コンテナクエリは特定の要素のサイズに応じてスタイルを変更することができます。

:::note
2023年2月から全ての主要ブラウザで利用可能になっており、新しめのバージョンであれば主要ブラウザで使用することができます。
:::

## コンテナクエリがWebデザインにもたらす影響とは
先程コンテナクエリは特定の要素のサイズに応じてスタイルと定義できると述べました。
そはすなわち以下3点を可能にします。

- より柔軟なレイアウト設計が可能になる
- コンポーネント単位でのレスポンシブデザインを実現しやすくなる
- 同じ画面幅でも、コンテナのサイズに応じて最適なデザインにできる

画面幅ではなく、親要素に合わせたスタイル変更というのは想像以上に便利なもので、コンポーネント指向ととても相性がいいと思います。無駄にメディアクエリを書きまくる必要もなく、同じコンポーネントを利用しても親要素の状態に応じてスタイルを変えることも可能になります。


## コンテナクエリを実際に使ってみる

簡単なHTMLを用意
```index.html
<div class="container">
  <div class="child">
    <!-- コンテンツ -->
  </div>
</div>
```
基準となるコンテナを設定します。

```css
.container {
  container-type: inline-size;  /* または size */
}
```

コンテナに応じたスタイルを定義します。
```css
/* コンテナの幅が400px以上の時のスタイル */
@container (min-width: 400px) {
  .child {
    display: flex;
    justify-content: space-between;
  }
}
```

コンテナクエリを使ったデモになります。以下で点線の右下をドラッグし、コンテナ幅を変更してみてください。画面幅が変わらずとも子要素のサイズやレイアウトが変わるのがわかると思います。
<p class="codepen" data-height="400" data-default-tab="css,result" data-slug-hash="GgKEPMN"></p>
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>

:::note warn
コンテナクエリを使用する際は以下に注意しましょう

- 擬似要素（::before、::after）は基準コンテナとして使用できません
- パフォーマンスへの影響を考慮する必要があります
- コンテナクエリの単位を使用する際は、入れ子構造に注意が必要です
- W3Cの仕様では現在も草案段階のため、今後実装方法や機能に変更が発生する可能性があります
:::

## まとめ
今回はコンテナクエリについて取り上げました。
TailwindCSSのv4.0（ベータ版）でもコンテナクエリが実装される予定らしですし、今後のCSSの中核技術となること間違いなしだと思います。

コンテナクエリを使用することで、より柔軟で効率的なレスポンシブデザインの実装が可能になります。特にコンポーネント指向のデザインを採用している場合に効果を発揮するので、今後も活用していこうと思います。
重大なセキュリティ事件から学ぶ教訓（Target・Equifax・Sony Pictures）

サイバー攻撃やセキュリティ事件は、企業や個人に深刻な影響を与えますが、これらの失敗例から学ぶことで、同様のリスクを軽減し、将来的な被害を防ぐことができます。本記事では、過去の重大なセキュリティ事件を振り返り、そこから得られる教訓と改善ポイントについて解説します。

## 事例 1: Targetのデータ侵害事件

### 概要
2013年、アメリカの小売大手Targetがサイバー攻撃を受け、POSシステム（販売時点管理）のセキュリティが突破されました。この攻撃は、Targetと取引のあった空調管理会社が使っていた弱いセキュリティシステムを経由して行われました。ハッカーはこの脆弱性を利用し、Targetのネットワークに侵入した後、顧客のクレジットカード情報や個人情報を盗み出しました。

**参考リンク**:
- [Targetのデータ侵害事件に関する詳細情報（英語）](https://www.csoonline.com/article/2130877/target-data-breach.html)
### 教訓と改善ポイント
1. **サードパーティのセキュリティ管理の重要性**:
   - 外部ベンダーとの接続を最小限に抑え、アクセス権限を厳格に管理する。
   - サプライチェーン全体のセキュリティ基準を定期的に評価。

2. **セキュリティ監視システムの強化**:
   - 不審なトラフィックをリアルタイムで検知するための監視ツールを導入。
   - 迅速な対応プロセスの確立。

## 事例 2: Equifaxの個人情報流出事件

### 概要
2017年、アメリカの信用情報機関Equifaxがウェブアプリケーションの既知の脆弱性を放置していたことが原因で、サイバー攻撃を受けました。この攻撃により、約1億4700万件もの個人情報が流出しました。被害に含まれる情報には、社会保障番号、名前、住所、誕生日、運転免許番号などが含まれており、アメリカ史上最大規模のデータ侵害事件の1つとされています。

**参考リンク**:
- [Equifaxデータ侵害事件（英語）](https://www.equifaxsecurity2017.com/)
- [The New York Timesによる詳細な報道（英語）](https://www.nytimes.com/2017/09/07/business/equifax-data-breach.html)
### 教訓と改善ポイント
1. **パッチ管理の徹底**:
   - システムの脆弱性を定期的にスキャンし、即時修正する体制を整備。
   - 未修正の脆弱性が攻撃の入り口になることを認識。

2. **情報セキュリティ意識の向上**:
   - 従業員に定期的なトレーニングを実施し、セキュリティの重要性を浸透させる。

## 事例 3: Sony Picturesのハッキング事件

### 概要
2014年、Sony Picturesがハッカー集団「Guardians of Peace」による大規模なハッキング攻撃を受けました。この攻撃は、北朝鮮が関与していると考えられており、映画『The Interview』の公開を阻止する目的で行われたとされています。攻撃者は、Sony Picturesの内部ネットワークに侵入し、従業員の個人情報、未公開映画、経営陣のメール内容など大量のデータを流出させました。

**参考リンク**:
- [Sony Picturesハッキング事件 - Wikipedia](https://en.wikipedia.org/wiki/Sony_Pictures_hack)
- [The Guardianの記事（英語）](https://www.theguardian.com/technology/sony-pictures-hack)
### 教訓と改善ポイント
1. **ネットワークセグメンテーションの重要性**:
   - 機密情報を含むシステムを分離し、アクセス制御を強化する。

2. **インシデント対応計画の準備**:
   - ハッキングが発生した際の広報対応や復旧計画を事前に策定。

## 全体を通しての学び

### 1. セキュリティ基本対策の徹底
- 強力なパスワード管理、定期的なシステムアップデート、2要素認証の導入。

### 2. 人的要因のリスク低減
- 従業員教育を通じて、フィッシングメールやソーシャルエンジニアリング攻撃に対する意識を向上させる。

### 3. 監視と迅速な対応
- 常時監視ツールを活用し、不審な活動をリアルタイムで検知。
- 攻撃発生時には迅速に対応するためのチームとプロセスを整備。

## まとめ

過去の重大なセキュリティ事件は、単なる失敗例ではなく、今後のリスク軽減のための貴重な教訓です。これらの学びを活かし、基本的なセキュリティ対策の徹底と継続的な改善を通じて、より安全な環境を築きましょう。
【TypeScript】文字列形式で表現された時間を秒数に変換

# はじめに
TypeScript で文字列形式で表現された時間（例えば `"00:05:30"` や `"30"`）を、秒数に変換する関数 `convertToSeconds` を実装しました。

# 実装
文字列（`hh:mm:ss`）を秒数に変換する `convertToSeconds` 関数を詳しく解説します。


```typescript
interface TimeOptions {
    allowOverflow?: boolean; // オーバーフローの制限
    maxSeconds?: number; // 許容される最大秒数
}

function convertToSeconds(
    timeStr: string, 
    options: TimeOptions = { allowOverflow: true }
): number {
    const [second = 0, minute = 0, hour = 0]
        = timeStr.split(':').reverse().map(v => +v || 0);
    
    let totalSeconds;
    
    if (options.allowOverflow) {
        totalSeconds = hour * 3600 + minute * 60 + second;
    } else {
        const validMinute = Math.min(59, Math.max(0, minute));
        const validSecond = Math.min(59, Math.max(0, second));
        
        totalSeconds = hour * 3600 + validMinute * 60 + validSecond;
    }
    
    return options.maxSeconds !== undefined ? Math.min(totalSeconds, options.maxSeconds) : totalSeconds;
}
```



**関数の概要**
`convertToSeconds` 関数は、与えられた時間文字列をコロン（`:`）で区切り、その時間を**秒単位に変換した数値**で返します。入力には以下の形式がサポートされています。
- `00:05:30`（時:分:秒）
- `05:30`（分:秒）
- `30`（秒）

また、オプションで以下を指定できます。

- **`allowOverflow`**
    - `true`: 70 分のような値をそのまま秒数に変換します。
    - `false`: 無効な値を丸めます。
        - 70 分(`70:00`)は無効とみなされ、最も近い有効な時間（59分）に丸められます。
- **`maxSeconds`**
    - 指定された場合、計算された秒数がこの値を超えると、その値に丸められます。

**使用例**
```typescript
convertToSeconds('10:20:30'); // 37230
convertToSeconds('20:30'); //. 1230
convertToSeconds('45');  // 45

convertToSeconds('70:80:90', { allowOverflow: true }); // 256890
// オーバーフローを制限
convertToSeconds('70:80:90', { allowOverflow: false }); // 255599

// 最大秒数制限
convertToSeconds('10:20:30', { maxSeconds: 3600 }); // 3600
convertToSeconds('00:00:59', { maxSeconds: 30 }); // 30 

// 空文字列や無効なフォーマットの入力
convertToSeconds(''); // 0
convertToSeconds('invalid'); // 0
convertToSeconds('1::2'); // 3602
```

# おわりに
この関数は、さまざまな形式の時間文字列を秒数に変換する便利なツールです。入力が無効な場合は `0` を返すことで、エラーを防ぎます。

また、`allowOverflow` や `maxSeconds` のオプションにより、異なる要件や入力形式に対応可能です。
個人情報流出の事例と教訓（Yahoo! Japan・Facebook）

個人情報流出事件は、被害者となった企業や個人に多大な影響を与えるだけでなく、社会全体にも深刻な問題を引き起こします。本記事では、具体的な個人情報流出事件の事例と、それがもたらす長期的な影響、そしてそこから得られる教訓について解説します。

## 主な個人情報流出事件

### Yahoo! Japanの個人情報漏洩事件

**概要**:
2013年、Yahoo! Japanが運営するサービスで、不正アクセスにより約2200万件の個人情報が流出しました。この事件では、アカウントIDやメールアドレスが流出対象となり、パスワードの漏洩は確認されませんでしたが、アカウント乗っ取りのリスクが懸念されました。

**影響**:
- サービス利用者の不安が増大。
- Yahoo!のブランドイメージの損傷。
- セキュリティ対策への緊急投資が必要となりました。

**教訓**:
- ユーザー情報の暗号化の徹底。
- 定期的なセキュリティ診断の重要性。

**参考リンク**:
- [Yahoo! Japanの個人情報漏洩事件 - 日本経済新聞](https://www.nikkei.com/)（詳細情報）

### Facebookの個人情報不正利用事件

**概要**:
2018年、Facebook（現Meta）は、約8700万人のユーザー情報が不正利用された事件に直面しました。この情報は、政治コンサルティング会社ケンブリッジ・アナリティカにより、ユーザーの許可なしに取得され、政治広告のターゲティングに使用されました。

**影響**:
- 利用者の信頼が大幅に低下。
- Facebookは巨額の罰金を科され、規制強化のきっかけとなった。
- プライバシー保護に関する世界的な議論を促進。

**教訓**:
- サードパーティへのデータ共有の監視と管理。
- プライバシー設定の見直しと透明性の確保。

**参考リンク**:
- [Facebookとケンブリッジ・アナリティカ問題 - BBC News](https://www.bbc.com/)（英語）

### 旅行業界の大手企業による情報流出事件

**概要**:
2020年、日本の大手旅行業者で、システムの脆弱性を悪用され、約500万件の顧客情報が流出しました。この情報には、名前や住所、電話番号、旅行先などが含まれていました。

**影響**:
- 顧客への通知対応や補償コストの増加。
- 同業他社への波及効果。
- 業界全体のセキュリティ基準が見直される契機に。

**教訓**:
- システムの継続的な脆弱性診断の必要性。
- インシデント発生時の迅速な対応プロセスの確立。

**参考リンク**:
- [旅行業界の大規模情報流出事件 - 朝日新聞デジタル](https://www.asahi.com/)

## 個人情報流出が引き起こす長期的な影響

### 1. 顧客との信頼関係の損失
流出事件をきっかけに、企業と顧客との信頼関係が崩れることがあります。一度失った信頼を回復するには多大な時間とリソースが必要です。

### 2. 法的および財務的な影響
データ漏洩に対する罰金や訴訟費用、補償費用が発生し、企業の財務状況を圧迫します。

### 3. 業界全体への波及
1社のセキュリティ問題が明るみに出ることで、同業他社も規制強化や顧客対応のプレッシャーにさらされます。

## 教訓と対策

### 1. 個人情報の暗号化とアクセス制限
個人情報は、暗号化を行い、アクセス権限を厳格に管理することが必要です。

### 2. 従業員教育とセキュリティ意識向上
フィッシングメールやソーシャルエンジニアリング攻撃に対する従業員の意識を高めるためのトレーニングを定期的に実施します。

### 3. セキュリティ対策の継続的な見直し
システムやプロセスを定期的に監査し、最新のセキュリティ脅威に対応するためのアップデートを行います。

## まとめ

個人情報流出事件は、企業や個人に多大な影響を与えますが、適切なセキュリティ対策を講じることでリスクを最小限に抑えることが可能です。過去の事例を教訓に、強固なセキュリティ環境を構築し、個人情報を安全に保護することが求められます。
中小企業が直面したセキュリティリスク

#中小企業は、大企業に比べてサイバーセキュリティ対策が不十分であることが多く、攻撃者にとって狙いやすいターゲットとなっています。本記事では、小規模な組織が抱えるセキュリティリスクの背景と、具体的な事例を紹介します。

## 中小企業が抱える脆弱性

### 1. 限られたリソース
- **セキュリティ予算の制約**: 中小企業は予算が限られており、高度なセキュリティソリューションを導入しにくい。
- **専門知識の不足**: セキュリティ専門家を雇用する余裕がない企業も多い。

### 2. セキュリティ意識の欠如
- **教育不足**: 社員へのセキュリティ教育が不足している。
- **脆弱なパスワードの利用**: 簡単に推測可能なパスワードが使用されることが多い。

### 3. サードパーティリスク
- **外部委託のセキュリティ不足**: 中小企業は業務の一部を外部委託することが多く、これが新たな脆弱性を生む可能性がある。

## 具体的なセキュリティリスク事例

### ランサムウェア攻撃による業務停止

**事例**: 2023年、ある製造業の中小企業がランサムウェア攻撃を受け、製造ラインが一時的に停止しました。攻撃者は業務データを暗号化し、復元のために身代金を要求しました。

**参考リンク**:
- [ランサムウェア攻撃に関するIPAのガイドライン](https://www.ipa.go.jp/security/ransomware/) - ランサムウェアの基礎と対策について解説。

**影響**:
- 業務停止による大幅な損失。
- 顧客からの信頼の低下。
- セキュリティ対策の緊急導入によるコスト増。

### フィッシングメールによる情報漏洩

**事例**: 2024年、IT関連の中小企業で、従業員がフィッシングメールのリンクをクリックし、顧客の機密情報が漏洩する事件が発生しました。

**参考リンク**:
- [フィッシング対策協議会の公式情報](https://www.antiphishing.jp/) - フィッシング詐欺の最新情報と対策を紹介。

**影響**:
- 顧客情報の流出による法的リスク。
- 取引先との契約解除。
- ブランドイメージの損傷。

### IoTデバイスの脆弱性を突いた攻撃

**事例**: 2022年、小規模な物流会社で使用されているIoTデバイスが攻撃を受け、配送システムがハッキングされました。

**参考リンク**:
- [IoTセキュリティガイドライン - 総務省](https://www.soumu.go.jp/main_sosiki/joho_tsusin/security/iot_security.html) - IoTセキュリティ対策に関する公式情報。

**影響**:
- 配送スケジュールの遅延。
- 顧客対応コストの増加。
- システムの復旧に時間と費用がかかる。

## 中小企業が取るべき対策

### 1. セキュリティ教育の実施
- 従業員にフィッシングメールや基本的なセキュリティリスクについて教育を行う。

### 2. パスワード管理の強化
- 強力なパスワードを使用し、パスワード管理ツールを活用する。
- 2要素認証（2FA）の導入を推奨。

### 3. 基本的なセキュリティ対策の導入
- ウイルス対策ソフトやファイアウォールを適切に設定。
- ソフトウェアやシステムのアップデートを定期的に実施。

### 4. 外部リソースの活用
- セキュリティコンサルタントや専門サービスを活用し、リスク評価や対策を実施。

## まとめ

中小企業は、大企業に比べてセキュリティ対策が不足しがちですが、適切な教育や基本的な対策を講じることで多くのリスクを軽減できます。具体的な事例を教訓に、コストを抑えつつも効果的なセキュリティ対策を実施することが重要です。
25日目: ライブラリを整理する

[競プロ用ライブラリを作る Advent Calendar 2024](https://qiita.com/advent-calendar/2024/yukkku-ribitol)の25日目です.

https://qiita.com/advent-calendar/2024/yukkku-ribitol

# 何するの?

似ているトレイトがバラバラに定義されてたのを一か所にまとめたり, ドキュメントを拡充したりします.

## `util.rs`にまとめる

例えば[群](https://github.com/Yukkku/ribitol/blob/main/src/weightedunionfind.rs#L4)と[モノイド](https://github.com/Yukkku/ribitol/blob/main/src/segmenttree.rs#L1)が全然違うところで定義されてたりするのでこれをまとめたりします.

代数的なトレイトは以下で利用されていたので, 要件ごとにトレイトを作成してまとめました.

- [WeightedUnionFind](https://qiita.com/Yukkku/items/bd4feeb44e54ed4752b5) - 群
- [SegmentTree](https://qiita.com/Yukkku/items/3d0609efb2845cafc1a9) - モノイド
- [SparseTable](https://qiita.com/Yukkku/items/dfdfcf04280d61e9ce5e) - 冪等なモノイド
- [BinaryIndexedTree](https://qiita.com/Yukkku/items/54f0b96d7e2cb92c388f) - アーベル群
- [LazySegmentTree](https://qiita.com/Yukkku/items/9e658f3bd95ffeabaa7b) - 遅延伝搬可能なモノイド
- [PersistentSegmentTree](https://qiita.com/Yukkku/items/c5c6e39e84b2302cdce6) - モノイド　
- [MasterTree](https://qiita.com/Yukkku/items/e6196f89f56fe598b507) - なんかいろいろ

LazySegmentTreeの遅延伝搬する作用素や, MasterTreeのトレイトは用途が限定的で一般化するメリットが少ないので, そのままにしておきます (MasterTreeのトレイトは専用に各演算を定義し直しているので, 最適化すると利便性が下がってしまいます)

また, 「最小値が存在する ([RadixHeap](https://qiita.com/Yukkku/items/5f918fd0d985f14abf03))」や,「加法の単位元が存在する ([Dijkstra](https://qiita.com/Yukkku/items/222bdd6bd685a21b2fd8))」などの条件も一般的であるため, 共通化しておきます. ついでに「乗法単位元が存在する」「最大値が存在する」なども作っておきましょう

## コメントを書く

- [WeightedUnionFind](https://qiita.com/Yukkku/items/bd4feeb44e54ed4752b5)
- [LazySegmentTree](https://qiita.com/Yukkku/items/9e658f3bd95ffeabaa7b)
- [FFT](https://qiita.com/Yukkku/items/3f0ea90753ef76ff60da)

のドキュメントを書き忘れていたので, 書きました.

## clippyに怒られる

`cargo clippy`するとめちゃめちゃ怒られました. (39箇所)
- `len`があるなら`is_empty`も実装しろ
- `Default`を実装しろ
- 無駄なライフタイム注釈を省略しろ
などなど...

修正した結果, 冤罪が1件だけあり, [ModInt](https://qiita.com/Yukkku/items/d09a490d68d31202e6e0)の
```rs
impl<const N: u32> Div for ModInt<N> {
    type Output = Self;
    fn div(self, rhs: Self) -> Self {
        self.mul_pow(rhs, Self::PHI - 1)
    }
}
```
というソースコードで「割り算なのに引き算の記号あるんだけどおかしいんじゃねぇの」とのことです. もちろんオイラーの定理を変形するとこうなので間違ってません.

# まとめ

完走した感想ですが, めっちゃきつかったです. (学校のレポートもあるのでなんかもうすごかったです)

明らかにコンテスト中に実装するのがかなり辛い[も](https://qiita.com/Yukkku/items/20571a5a684907f448e0)[の](https://qiita.com/Yukkku/items/e6196f89f56fe598b507)とかも作り置きできたのでよかったです.
日本国内のセキュリティ事件

日本国内でも数多くのセキュリティ事件が発生しており、企業や個人に大きな影響を与えています。本記事では、日本で話題となった具体的なセキュリティ事件と、その影響について解説します。

## ベネッセ個人情報漏洩事件

### 概要
2014年、教育関連企業のベネッセコーポレーションが約3500万件もの個人情報を漏洩する事件が発覚しました。この情報には、氏名、住所、電話番号などの個人データが含まれていました。原因は、外部委託先の従業員による内部不正行為でした。

### 影響
- **顧客への信頼低下**: ベネッセは多額の賠償金を支払い、ブランドイメージが大きく損なわれました。
- **法改正への影響**: この事件をきっかけに、日本の個人情報保護法が改正され、罰則が強化されました。

### 教訓
- 内部不正の防止策として、アクセス権限の管理や従業員教育の重要性が浮き彫りになりました。

### 参考リンク
- [ベネッセ個人情報漏洩事件 - Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%99%E3%83%8D%E3%83%83%E3%82%BB%E5%80%8B%E4%BA%BA%E6%83%85%E5%A0%B1%E6%BC%8F%E6%B4%A9%E4%BA%8B%E4%BB%B6)

## 日本年金機構の個人情報流出

### 概要
2015年、日本年金機構が約125万件の個人情報を流出させる事件が発生しました。この攻撃は、標的型メール攻撃（スピアフィッシング）によるもので、職員が不審なメールの添付ファイルを開封したことが原因でした。

### 影響
- **国民の信頼喪失**: 年金情報の流出により、国民の政府機関への信頼が低下。
- **追加コスト**: 再発防止策としてのシステム改修や対策費用が増大。

### 教訓
- 職員教育の強化や、標的型メール攻撃を防ぐためのセキュリティシステムの導入が必要とされています。

### 参考リンク
- [日本年金機構の個人情報流出事件 - Wikipedia](https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E5%B9%B4%E9%87%91%E6%A9%9F%E6%A7%8B%E3%81%AE%E5%80%8B%E4%BA%BA%E6%83%85%E5%A0%B1%E6%B5%81%E5%87%BA)

## 暗号資産取引所コインチェックのハッキング

### 概要
2018年、暗号資産取引所コインチェックが約580億円相当の仮想通貨NEMを流出させる大規模なハッキング被害に遭いました。この攻撃は、ホットウォレットと呼ばれるオンラインで接続されたウォレットが標的となり、セキュリティの不備が悪用されました。

### 影響
- **業界全体への影響**: 仮想通貨取引所のセキュリティ基準が厳格化。
- **顧客補償**: コインチェックは被害を受けた顧客に対し補償を実施。

### 教訓
- 暗号資産の管理には、オフラインのコールドウォレットを活用することが重要。

### 参考リンク
- [コインチェック仮想通貨流出事件 - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%B3%E3%82%A4%E3%83%B3%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E4%BB%AE%E6%83%B3%E9%80%9A%E8%B2%A8%E6%B5%81%E5%87%BA%E4%BA%8B%E4%BB%B6)

## 三菱電機のサイバー攻撃

### 概要
2020年、三菱電機がサイバー攻撃を受け、企業の機密情報が流出したと報じられました。この攻撃は、中国を拠点とするハッカー集団によるものとされています。

### 影響
- **企業イメージの悪化**: 機密情報流出により、取引先や顧客の信頼が低下。
- **国際的な緊張**: この攻撃は国際的なサイバーセキュリティ問題としても注目されました。

### 教訓
- 高度な攻撃に対抗するためのセキュリティ監視体制と、サプライチェーン全体の防御力向上が求められます。

### 参考リンク
- [三菱電機のサイバー攻撃 - 朝日新聞デジタル](https://www.asahi.com/articles/ASN1K4D64N1JULFA005.html)

## KADOKAWAのサイバー攻撃事件

### 概要
2024年6月、KADOKAWAグループが大規模なサイバー攻撃を受けました。この攻撃により、同社の主要なオンラインサービスや社内システムが深刻な影響を受けました。攻撃の手法は高度で、サーバーやネットワークへのアクセス障害が発生しました。

### 影響
- **サービス停止**: 同社が運営する「ニコニコ動画」などの主要サービスが一時的に停止し、多くのユーザーが利用できない状態となりました。
- **情報漏洩**: 約25万人の個人情報が漏洩したことが確認され、利用者の信頼に影響を与えました。
- **業務への影響**: 出版事業の生産や物流、会計機能にも支障が生じ、業績への影響が懸念されました。

### 対応
- **復旧作業**: KADOKAWAは主要ネットワークとサーバー環境の復旧を急ぎ、6月末までに完了を目指しました。
- **情報開示**: 攻撃の詳細や影響範囲について、公式サイトやプレスリリースを通じて随時報告しました。

### 教訓
- **サイバーセキュリティの強化**: 大規模なサイバー攻撃のリスクに備え、企業はセキュリティ対策の強化と従業員教育の徹底が求められます。
- **迅速な対応と情報開示**: インシデント発生時には、迅速な対応と透明性のある情報開示が、利用者や取引先の信頼維持に不可欠です。

## まとめ

これらの事件は、日本国内の企業や政府機関にとって大きな教訓となりました。内部不正の防止や標的型攻撃への対策、仮想通貨や機密情報の保護など、多岐にわたる課題が浮き彫りになっています。これらを踏まえた上で、組織全体でセキュリティ意識を高め、適切な対策を講じることが重要です。
歴史に残るサイバー攻撃事件（WannaCry・SolarWinds）

サイバー攻撃はここ数十年で進化し続け、私たちの社会に多大な影響を与えてきました。その中でも特に注目すべき歴史的なサイバー攻撃の事例を紹介します。このような事件から学び、セキュリティ対策を強化することが重要です。

## WannaCry（ワナクライ）ランサムウェア攻撃

### 概要
WannaCryは、ランサムウェアと呼ばれるマルウェアの一種で、感染したシステムのファイルを暗号化し、復元のために身代金を要求する攻撃です。2017年5月、このランサムウェアはWindowsの脆弱性「EternalBlue」を利用して一気に拡散しました。この脆弱性は、NSA（米国家安全保障局）が開発したツールが流出したことによって悪用され、攻撃者に利用されました。

WannaCryはネットワークを通じて他のデバイスに自己複製しながら広がる特性を持ち、短期間で世界中に被害をもたらしました。感染したシステムの画面には「身代金を支払わなければファイルを復元できない」との警告が表示され、支払いはビットコインで要求されました。

### 概要
2017年5月、WannaCryと呼ばれるランサムウェアが全世界で猛威を振るいました。この攻撃は、Microsoft Windowsの脆弱性を利用して広がり、150カ国以上で20万台以上のコンピュータが感染しました。

### 影響
- **医療機関**: イギリスの国民保健サービス（NHS）が大きな被害を受け、診療や手術が停止。
- **企業**: 多数の企業が業務停止に追い込まれた。
- **個人**: 感染したデバイス上のデータが暗号化され、身代金を要求されました。

### 教訓
- 定期的なソフトウェア更新（パッチ適用）の重要性。
- ランサムウェア対策としてバックアップを確保することの必要性。

## SolarWindsサプライチェーン攻撃

### 概要
SolarWindsサプライチェーン攻撃は、2020年に発覚した高度なサイバー攻撃で、IT管理ソフトウェア「Orion」のアップデートプロセスが攻撃者によって改ざんされる形で行われました。攻撃者は、SolarWindsの開発環境に侵入し、正規のアップデートに悪意あるコードを混入させることに成功しました。

この改ざんされたソフトウェアアップデートは、世界中の政府機関や企業に配布され、多くの組織が攻撃者の手に渡ったバックドアを通じて侵害されました。この攻撃は、サプライチェーン全体に影響を及ぼし、ソフトウェアプロバイダーのセキュリティがいかに重要であるかを強調しました。攻撃は数か月にわたって続き、攻撃者は広範なデータへのアクセスを得ました。

### 概要
2020年、SolarWinds社のIT管理ソフトウェア「Orion」が攻撃者によって改ざんされました。この改ざんされたソフトウェアは、アップデートを通じて数多くの企業や政府機関に配布されました。

### 影響
- **米国政府機関**: 国防総省や財務省など複数の機関が影響を受けました。
- **企業**: MicrosoftやFireEyeなどの大企業も被害を受け、機密情報が流出。
- **長期的影響**: この攻撃はサプライチェーン全体におけるセキュリティリスクを強調しました。

### 教訓
- サプライチェーン全体のセキュリティを考慮する必要性。
- ソフトウェアやサービスプロバイダーの信頼性を慎重に検討すること。

## 他の注目すべき事例

### Stuxnet（スタックスネット）
- **概要**: 2010年、核施設の遠心分離機を標的にした史上初のサイバー兵器。
- **影響**: 物理的な被害をもたらし、国家レベルのサイバー攻撃の可能性を示しました。

### Targetのデータ侵害
- **概要**: 2013年、小売チェーンTargetの支払いシステムが攻撃され、1億人以上の顧客データが流出。
- **影響**: 顧客への信頼が失われ、企業に莫大な損害が発生。

## おわりに

これらのサイバー攻撃事件は、私たちにサイバーセキュリティの重要性を再認識させるものです。企業や個人が適切な対策を講じることで、同様の被害を防ぐことができます。これらの事例を教訓として、セキュリティ対策の改善に取り組みましょう。

## 参考リンクと動画
さらに詳しく学びたい方は、以下のリンクや動画をご覧ください：

- [IPA ランサムウェア対策](https://www.ipa.go.jp/security/ransomware/) - ランサムウェアに関する詳細な解説と対策を提供。
- [SolarWinds攻撃の詳細（英語）](https://www.solarwinds.com/securityadvisory) - SolarWinds社が公開した攻撃の概要と対応策。
- [YouTube: What is WannaCry? - サイバー攻撃の仕組みを解説する動画](https://www.youtube.com/watch?v=UErwHc7b6ho)
- [NIST サイバーセキュリティフレームワーク](https://www.nist.gov/cybersecurity) - セキュリティのベストプラクティスに関する情報（英語）。
セキュリティー教育の重要性

![マインドマップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79373/5a8df7a0-3a99-9a9a-4a32-4167568fcdaf.png)


現代のデジタル社会において、サイバー攻撃の脅威は企業や個人にとって無視できない問題となっています。このような環境下で、セキュリティー教育は単なる知識習得にとどまらず、組織全体や個人のデジタル資産を守るための重要な施策です。この記事では、セキュリティー教育の重要性について、企業や個人に分けて解説します。

## 企業におけるセキュリティー教育の重要性

### 1. 人的リスクの軽減
- **概要**: サイバー攻撃の多くは、従業員のミスや不注意を利用しています。フィッシング詐欺やマルウェアのダウンロードは、教育の不足が原因で発生することが多いです。
- **解決策**: 従業員に対する定期的なセキュリティー教育は、攻撃を防ぐための第一歩です。

### 2. 組織全体のセキュリティー向上
- **概要**: 従業員がセキュリティー意識を高めることで、組織全体の防御力が向上します。
- **例**:
  - 強力なパスワードの作成
  - 未承認デバイスの使用禁止
  - 不審なメールの報告

### 3. コンプライアンスの遵守
- **概要**: 多くの業界では、セキュリティー教育が法律や規制の一部となっています。
- **例**:
  - GDPR（一般データ保護規則）
  - ISO 27001（情報セキュリティ管理システム）

### 4. インシデント対応力の向上
- **概要**: 教育を通じて、従業員はインシデント発生時に適切に対応できるスキルを身につけます。
- **例**:
  - データ漏洩時の報告プロセス
  - セキュリティーシステムの利用方法

## 個人におけるセキュリティー教育の重要性

### 1. 個人情報の保護
- **概要**: 強力なパスワードや2要素認証の活用を学ぶことで、個人情報が盗まれるリスクを軽減できます。
- **例**:
  - フィッシング詐欺メールの見分け方
  - 信頼できるウェブサイトの利用方法

### 2. 金銭的被害の防止
- **概要**: サイバー犯罪者による詐欺や不正送金を防ぐためには、セキュリティーの基本知識が不可欠です。
- **例**:
  - 不審なリンクや添付ファイルをクリックしない
  - 定期的な口座チェック

### 3. 社会的な影響の軽減
- **概要**: 個人のセキュリティー意識が低いと、家族や友人、職場にまで影響を及ぼす可能性があります。
- **例**:
  - 感染したデバイスからの攻撃が広がるリスク
  - ソーシャルメディアアカウントの乗っ取り

## セキュリティー教育を効果的に実施するためのポイント

### 1. 定期的なトレーニング
- オンライン講座や社内研修を活用し、継続的な教育を提供する。

### 2. 実践的なシナリオを活用
- 実際の攻撃シナリオを模擬した演習を行い、従業員や個人がリアルな状況で対応を学べるようにする。

### 3. 簡単で分かりやすい資料
- 初心者にも理解しやすい教材を用意し、学習へのハードルを下げる。

### 4. トレンドを反映
- 最新のサイバー攻撃手法やセキュリティー対策を常に取り入れる。

## まとめ

セキュリティー教育は、企業や個人の情報資産を守るための重要な柱です。教育を通じてリスクを軽減し、サイバー攻撃から身を守る意識とスキルを高めることができます。定期的な学びと実践を通じて、より安全なデジタル環境を築きましょう。

## 参考リンク
さらに詳しく学びたい方は、以下のリンクをご覧ください：

- [IPA 情報セキュリティ教育プログラム](https://www.ipa.go.jp/security/education/) - 日本の情報セキュリティに関する教育資料やツールを提供。
- [NIST セキュリティトレーニングガイドライン](https://www.nist.gov/cybersecurity) - 最新のセキュリティトレーニングと教育リソース（英語）。
- [Cybersecurity & Infrastructure Security Agency (CISA)](https://www.cisa.gov/) - サイバーセキュリティに関するガイドラインや教育資料（英語）。
- [Google サイバーセキュリティ教育](https://safety.google/security/) - Googleが提供するセキュリティ教育のためのリソース。
パスワード管理の重要性とベストプラクティス

![マインドマップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79373/3170ced5-409e-be3b-9570-edfc42e880bb.png)


現代のデジタル社会では、パスワードは私たちのオンラインアカウントや個人情報を守るための重要な防御手段です。しかし、多くの人々が弱いパスワードや不適切な管理方法を使用しており、サイバー攻撃のリスクが高まっています。この記事では、パスワード管理の重要性とベストプラクティスを解説します。

## パスワード管理の重要性

### なぜパスワードが重要なのか？
パスワードは、オンラインアカウントやデバイスへのアクセスを制御する最前線の防御です。強力なパスワードは、不正アクセスを防ぐだけでなく、個人情報の漏洩や経済的な損失を防ぐ重要な役割を果たします。

### パスワード漏洩のリスク
- **データ漏洩**: 弱いパスワードや再利用されたパスワードは、攻撃者に簡単に推測される可能性があります。
- **経済的損害**: 金融アカウントが侵害されることで、不正な送金や詐欺が発生することがあります。
- **個人情報の悪用**: ソーシャルメディアやメールアカウントの侵害により、個人情報が不正利用されるリスクがあります。

## ベストプラクティス

### 1. 強力なパスワードを作成する
- **長さ**: パスワードは少なくとも12文字以上にする。
- **複雑性**: 大文字、小文字、数字、記号を組み合わせる。
- **ランダム性**: 意味のある単語やフレーズを避ける。

#### 悪い例:
- password123
- 123456
- qwerty

#### 良い例:
- Y7d$hP!9zX&3
- C!3l@F1r9O2*

### 2. パスワードを再利用しない
- 同じパスワードを複数のアカウントで使用すると、1つのアカウントが侵害された場合に他のアカウントも危険にさらされます。

### 3. パスワード管理ツールを活用する
- **特徴**: パスワード管理ツールは、強力なパスワードを生成し、安全に保存します。
- **例**: LastPass、1Password、Bitwarden

### 4. 2要素認証 (2FA) を有効にする
- **概要**: パスワードに加えて、2つ目の認証要素を必要とする仕組み。
- **例**:
  - SMSコード
  - 認証アプリ（Google Authenticator、Authyなど）
  - ハードウェアキー（YubiKeyなど）
- **利点**: 万が一パスワードが漏洩しても、不正アクセスを防ぐ追加の防御となります。

### 5. 定期的にパスワードを変更する
- **頻度**: 少なくとも6か月ごとに変更を検討。
- **理由**: 以前に漏洩していた場合、新しいパスワードにすることでリスクを軽減できます。

## まとめ

パスワードは、私たちのデジタル生活を守る重要な鍵です。適切な管理と強力なパスワードの使用、そして2要素認証を組み合わせることで、サイバーセキュリティの向上が可能です。上記のベストプラクティスを日常生活に取り入れ、個人情報をしっかりと守りましょう。

## 参考リンク
さらに詳しく学びたい方は、以下のリンクをご覧ください：
- [IPA 情報セキュリティ対策](https://www.ipa.go.jp/security/) - パスワード管理やセキュリティの基礎についての解説。
- [NIST パスワードガイドライン](https://pages.nist.gov/800-63-3/sp800-63b.html) - 強力なパスワードの作成に関する最新ガイドライン（英語）。
- [Google セキュリティ チェックアップ](https://myaccount.google.com/security-checkup) - Googleアカウント向けのセキュリティ診断ツール。
- [LastPass パスワードマネージャー](https://www.lastpass.com/) - パスワード管理ツールの紹介。
【AWS SAP】Kinesis Data Streams と Firehose がどうしても覚えられない人向け

# Kinesis Data Streams と Firehose の違い
どうしても覚えられないのでまとめました。

## Kinesis Data Streams
リアルタイムのデータ処理
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746730/f2209d02-907e-8c6c-8931-14bbcf59e367.png)


## Kinesis Data Firehose
データ転送
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746730/ac1c3f7f-3321-8010-a1e6-557b17c2e211.png)

## 基本の違い

| **項目**           | **Kinesis Data Streams**                    | **Kinesis Firehose**                     |
|--------------------|--------------------------------------------|------------------------------------------|
| **ユースケース**    | リアルタイムデータ処理                      | データのバッチ転送                       |
| **制御性**         | 高い（データ保持、シャード数の設定など）       | 低い（設定は簡単、フルマネージド）        |
| **処理の複雑さ**   | ユーザーがアプリケーションで処理を実装する必要がある | **AWS側で自動的にデータを処理・配信**         |
| **転送先**         | 自由に選択可能（例: Lambda, S3, DynamoDB）   | 固定（S3, Redshift, Elasticsearchなど）  |
| **データ保持期間** | 最大7日間                                    | データを保持しない（リアルタイム転送のみ）|
| **リアルタイム性** | ミリ秒単位のリアルタイム処理が可能             | 遅延が発生する可能性がある（60秒以内）     |

---

## 覚え方

### 1. 「ストリームは流れ、ホースは給水」
- **Streams**は「常に流れる」→ リアルタイム処理。
- **Firehose**は「一気に注ぐ」→ バッチで目的地に注ぎ込むイメージ。

### 2. 「カスタムな流れとホース任せ」
- Streamsは「自分で流れを制御」する。→ 開発者が細かくコントロール。
- Firehoseは「AWS任せ」→ フルマネージドで手間いらず。

### 3. 「ストリームは一時的、ホースは運搬」
- Streamsは一時的にデータを保持する（最大7日間）。
- Firehoseは保持せず直接運搬。

## 具体例で理解

### 1. **Streams**
- **シナリオ**: 株価データをリアルタイムで分析。
- **動作**: 開発者がアプリを作り、データを取り出して処理。

### 2. **Firehose**
- **シナリオ**: IoTセンサーのデータをS3に保存。
- **動作**: AWSが自動的にデータをS3に送る。

## シンプルにまとめた語呂

- **「ストリームは細かく作る、ホースはAWS任せ」**

## Kinesis Data StreamsとFirehoseの違い
| 特徴                      | **Kinesis Data Streams**                   | **Kinesis Data Firehose**                     |
|---------------------------|--------------------------------------------|-----------------------------------------------|
| シャード                  | 必須。スループット管理に使用            | **不要**。完全管理型でスケーリング自動化     |
| スケーリング方法          | 手動でシャード数を調整                   | 自動スケーリング                              |
| データ処理の柔軟性        | コンシューマーがカスタムロジックを実装可能 | 簡易なデータ変換（Lambda関数で対応可能）     |
| 配信先                   | 一時的に保存しながら、消費者が取得する     | データを直接指定されたターゲットへ送信       |
| レイテンシ                | ミリ秒単位での処理                       | 数秒から1分程度                               |
| 適用例                   | カスタム処理や高スループットが必要な場合  | シンプルでストリーミングデータを保存する場合 |
サイバー攻撃の種類(フィッシング・マルウェア・DDos攻撃)

![マインドマップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79373/5a0d7dd3-90f8-ea8d-06dc-88ba53a6175b.png)



現代のデジタル化された社会において、サイバー攻撃は毎日のように発生しており、個人や組織に大きな害を与える可能性があります。この記事では、主要なサイバー攻撃の種類とその特徴を解説します。

## フィッシング (Phishing)

### 概要
フィッシングは、主にメールやスマートフォンを使用して人を騙し、正常なサービスに許可されていない情報を取得する攻撃です。攻撃者（送信者）は、本物を装ったメールやリンクを送信し、受信者（被害者）を信じ込ませて個人情報を提供させます。たとえば、ログイン情報やクレジットカード情報が標的となります。

### 特徴
- 攻撃者は、銀行や公式機関になりすますことが多い
- 被害者の信頼を利用し、クリックや入力を誘導する
- 技術的対策だけでは防ぎきれない場合が多い

### 例
- 銀行を装ったメールを送り、偽のログインページに誘導
- 「アカウントがロックされました」という偽の通知を使い、ユーザーに個人情報を入力させる

### 解説
「フィッシング」とは、いかに人間を騙すかという「ソーシャルエンジニアリング」の一種です。たとえば、何かのフォームを埋めたりリンクをクリックさせたりすることで、設定情報や金融情報を搾取される危険性があります。

## マルウェア (Malware)

### 概要
マルウェアは、攻撃者が意図的に作成した有害なプログラムで、人間の認識なしにシステムに侵入し、データの盗難や破壊などを引き起こします。たとえば、攻撃者はメールに感染したファイルを添付して送信し、被害者がそのファイルを開くことでマルウェアがシステムに侵入します。

### 特徴
- 攻撃者は感染したプログラムを仕掛けることで、被害者のシステムに悪影響を与える
- 被害者の認識なしに動作し、気付かれにくい
- 自動的に他のシステムへ感染を広げる種類も存在

### 例
- 攻撃者がランサムウェアを送りつけ、被害者の重要なファイルを暗号化
- フィッシングメールの添付ファイルを通じてトロイの木馬がインストールされ、データが盗まれる

### 解説
「マルウェア」の名称は「有害なソフトウェア」に由来します。攻撃者は、被害者が不注意でファイルを開く、またはリンクをクリックするよう仕向けることで、システムを感染させます。これには、ウイルス、トロイの木馬、スパイウェアなどが含まれ、被害者のデータやシステムそのものに悪影響を与えます。対策としては、不審なメールや添付ファイルを開かないこと、信頼できるセキュリティソフトを使用することが重要です。

## DDoS攻撃 (Distributed Denial of Service)

### 概要
DDoS攻撃は、複数のシステム（ボットネットと呼ばれる感染したデバイスのネットワーク）から一斉に大量のリクエストを送信し、ターゲットのサーバーやネットワークを機能不全に追い込む攻撃です。攻撃者はこれにより、サービスの停止や応答遅延を引き起こします。

### 特徴
- 攻撃側は「ボットネット」と呼ばれる感染デバイス群を操作
- 被害側はサーバーの過負荷により、ウェブサイトやサービスが停止
- 攻撃を防ぐのが難しく、被害の範囲が広がりやすい

### 例
- 攻撃者が世界中の感染したPCを利用してオンラインショッピングサイトを停止させる
- オンラインゲームサーバーに大量の接続リクエストを送り、プレイヤーが接続できない状況を作る

### 解説
DDoS攻撃では、攻撃者が多くの感染デバイスを利用して一斉にターゲットを攻撃します。この「分散型」という特性により、防御側は攻撃の元を特定しにくくなります。結果として、ターゲットのサービスが長時間停止する可能性があります。対策としては、トラフィックをフィルタリングするセキュリティサービスや分散型のネットワーク構成が有効です。

## おわりに
サイバー攻撃は日々進化しています。これらの基本を理解し、有効な対策を実装することが重要です。さらに詳しく知りたい方は、以下のリンクもご参考ください。

## 参考リンク
- [IPA セキュリティ情報センター](https://www.ipa.go.jp/security/)
- [OWASP サイバー攻撃のガイド](https://owasp.org/www-project-top-ten/)
- [NIST Cybersecurity Framework](https://www.nist.gov/cyberframework)
セキュリティ対策の基本（ファイアウォール・ウイルス対策ソフト・暗号化）

![マインドマップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79373/00186d18-de0a-b95b-080b-26ed0185db2c.png)


現代社会において、サイバー攻撃から個人や組織を守るための基本的なセキュリティ対策は欠かせません。この記事では、セキュリティの基本となる3つの対策「ファイアウォール」「ウイルス対策ソフト」「暗号化」について、その概要と重要性を解説します。

## ファイアウォール

### 概要
ファイアウォールは、ネットワーク上の通信を監視し、不正なアクセスを遮断するためのシステムまたはデバイスです。家庭用ルーターや企業のサーバーにも組み込まれており、外部からの攻撃を防ぐ重要な役割を果たします。




### 役割
- **不正アクセスの防止**: 攻撃者がネットワークに侵入するのを防ぐ。
- **トラフィックの監視**: 通信内容を監視し、不審なデータを検出。
- **ポリシー管理**: 組織のセキュリティポリシーに基づき通信を許可または拒否。

### 使用例
- 個人宅のインターネット接続を保護するための家庭用ルーター
- 企業が外部ネットワークと内部ネットワークを隔離する際に利用

### 注意点
ファイアウォールは万能ではなく、適切な設定や定期的な更新が必要です。また、内部からの攻撃には対応できないため、他の対策と組み合わせることが重要です。

## ウイルス対策ソフト

### 概要
ウイルス対策ソフト（アンチウイルスソフト）は、マルウェア（ウイルス、スパイウェア、ランサムウェアなど）を検出し、除去するためのソフトウェアです。個人ユーザーから企業まで、あらゆるデバイスにインストールされています。

### 役割
- **マルウェアの検出**: 既知および未知のマルウェアを特定。
- **リアルタイム保護**: デバイスが感染する前に脅威をブロック。
- **定期スキャン**: 保存データをスキャンして感染を確認。

### 使用例
- 個人用パソコンでのファイルスキャン
- 企業のネットワーク全体を保護するエンタープライズソリューション

### 注意点
ウイルス対策ソフトだけでは新しい脅威に対応できない場合があります。そのため、定期的なアップデートと他のセキュリティ対策の併用が不可欠です。

## 暗号化

### 概要
暗号化は、情報を特定のアルゴリズムで変換し、正当な鍵を持つ人だけが読める形式にする技術です。これにより、データが盗まれても内容が漏洩しないように保護します。

### 役割
- **データ保護**: データが盗まれても内容が読めない。
- **通信のセキュリティ向上**: HTTPSなどの暗号化通信で安全なデータ送受信を実現。
- **コンプライアンス対応**: 個人情報や機密情報を保護するための法的要件を満たす。

### 使用例
- 電子メールの暗号化（PGPなど）
- ウェブサイトでの安全な通信（SSL/TLS）
- ハードディスクの暗号化（BitLockerなど）

### 注意点
暗号化されたデータを復号化する鍵の管理が重要です。鍵が紛失するとデータが使用できなくなるリスクがあります。

## おわりに
ファイアウォール、ウイルス対策ソフト、暗号化は、セキュリティ対策の基本中の基本です。それぞれの特徴と役割を理解し、適切に導入することで、個人や組織の情報をより安全に守ることができます。これらの対策を組み合わせることで、堅牢なセキュリティ環境を構築しましょう。
セキュリティーとは何か？

![マインドマップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79373/d35dbf45-375f-1e5e-e17b-5933eb998d2f.png)


# セキュリティとは何か？

## 基本概念
セキュリティとは、情報や資産を不正な使用、破壊、詐欺から保護するための概念です。

現代においては、情報システムが一般化し、個人や企業の関連情報がネットワークやクラウドに保存される時代です。このため、セキュリティ対策は、個人から国家レベルまで重要視されるようになりました。

## 目的
セキュリティ対策の目的は、情報や資産の「保護」です。その実現には次のような要素が含まれます。

- **情報の可用性を保つ**
  - 例えば、システムの障害やデータの喪失を防ぐことです。サーバーの重要データはバックアップで保護したり、不要なデータの突発削除を防ぐことが含まれます。

- **情報の正確性を確保する**
  - データが変更されず、信頼できる状態で保ち続けられるようにすることです。ログファイルを検討し、不正な変更を認識するためのツールが活用されます。

- **不正なアクセスを防ぐ**
  - 無許可な人々が情報を取得したり、使用したりすることを防ぐことです。このためにはユーザー認証やネットワークファイアウォールの正しい設定が必要です。

## 情報セキュリティの3要素
情報セキュリティの基本概念は「機密性」「完全性」「可用性」の3要素に分けられます。

### 機密性 (Confidentiality)
情報が許可された人にのみ提供されるよう保つことを指します。例えば、データの規制されたアクセスや、暗号化により実現されます。これにより、この情報を見られるべき人のみが利用できるようになります。

### 完全性 (Integrity)
情報が不正に変更されていないことを確保する要素です。これはデータを適切なものとして保ち続けるための概念で、変更ログやチェックサムの実装が重要です。プロジェクトマネジメントや誰がどのようなデータを操作したかを明確にすることも含まれます。

### 可用性 (Availability)
情報やシステムが必要なときに利用可能であることを指します。システム全体の最適な運営、バックアップ、ディザスタリカバリーが話題になります。これは、地震や情報システムの障害などの不測の事態に備えたプランの一部です。

## おわりに
セキュリティは、今日のデジタル化された社会では分野を問わずに必要な概念です。この基本を理解することで、個人や組織は、安全な情報システムを構築するための最初の一歩を踏み出すことができます。

## 参考資料とリンク
- [IPA 情報セキュリティの基本概念](https://www.ipa.go.jp/security/foundation.html)
- [OWASP 情報セキュリティガイド](https://owasp.org/)
- [NIST セキュリティフレームワーク](https://www.nist.gov/cyberframework)
Python venv 仮想環境を使うまで【Windows】（自分用）

# 前提
- Python & pip インストール済み
- Windows

# 事前手順(別環境のPJがある場合)
## 事前のプロジェクトの依存関係をメモ
```bat
pip freeze > requirements.txt
```
## 必要なファイルの移管
- ソースコードとrequirements.txt 

# 手順
## プロジェクトのルートフォルダを作る
```bat
mkdir Sample
cd Sample
```
## 仮想環境(myenv)作成
```bat
python -m venv myenv
```
## 仮想環境の起動
バックスラッシュ（\）であることに注意。
```bat
myenv\Scripts\activate
```
## pip install
```bat
pip install XXX
pip install -r requirements.txt
```
## 仮想環境の終了
```bat
myenv\Scripts\deactivate
```

参考：[pip と venv を使って仮想環境にパッケージをインストールする](https://packaging.python.org/ja/latest/guides/installing-using-pip-and-virtual-environments/)
【HTML】table要素の基本

HTMLを学び始めてまもなかったり、意外に柔軟性を効かせづらかったり、とこのtable要素を使ったレイアウトは何気に難しいです。

Excelで作成するような簡素な表であれば、簡単に実現でき重宝することは間違い無いですが、Webサイトであのような簡素でお堅い表を実装することは個人的にほぼみたことありません。

モダンなデザインを目指せば目指すほどで、表すら垢抜けさせようと試行錯誤がなされたデザインになります。

そのような時、table要素の基本を知っていると融通が効いたり、諦めて違う手法で実装しようと判断ができるようになるので、興味がある方はご一緒にどうぞ。:point_up:

## table要素とは？
![スクリーンショット 2024-12-25 21.21.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3624902/31f84ceb-92db-6ede-d615-26d67592f73d.png)

HTMLの一要素であり、この要素を使用することで、上記の表のようなレイアウトを実現できます。

画像ではなくコードで実装することにより、テキストの大きさやセルの大きさを画面幅問わず調整しやすかったり、スクリーンリーダーでの読み上げもさせやすいなどのメリットがあります。

## table要素の周辺知識
表ということもあり、主に以下の場面で使用されます。
整理・比較というのが主な場面ですね。

**データの比較表示**
- 数値データの整理
- 商品一覧やスケジュールの表示
- 統計情報の提示
- able要素の基本構造

tableを作成する時は、基本的に以下の要素を覚えておくと問題なく作成できると思います。

※tableに関係する要素やプロパティは他にもあるかもしれませんが今回は基本なので

**主要な構成要素**
`<table>`: 表全体を定義する親要素
`<thead>`: 表のヘッダー部分を定義
`<tbody>`: 表の本体部分を定義
`<tfoot>`: 表のフッター部分を定義（任意）
`<tr>`: 行を定義
`<th>`: 見出しセルを定義
`<td>`: データセルを定義

## 実際の使用例

**基本的な実装例**
```index.html
<table>
  <thead>
    <tr>
      <th>商品名</th>
      <th>価格</th>
      <th>在庫</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>商品A</td>
      <td>1,000円</td>
      <td>10個</td>
    </tr>
  </tbody>
</table>
```

**スタイリングとレスポンシブ対応**
```style.css
基本的なCSS設定
/* 基本スタイル */
table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 1em;
}

th, td {
  padding: 0.5em;
  border: 1px solid #ddd;
  text-align: left;
}

/* レスポンシブ対応 */
@media screen and (max-width: 600px) {
  table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
  }
}
```

**アクセシビリティ対応**
```index.html
<table role="grid" aria-label="商品一覧">
  <caption>商品一覧表</caption>
  <thead>
    <tr>
      <th scope="col">商品名</th>
      <th scope="col">価格</th>
    </tr>
  </thead>
  <!-- 以下tbody -->
</table>
```

## 実装時の注意点
tableというのは表を作成する要素であり、本記事初期で示した通り、表にすべきデータがあってそれらを比較や整理したい場合に使用するべきです。その為使用場面は考慮すべきですし、ユーザーが見やすい・操作しやすいように意識して実装すべきだと思います。

**適切な場面で使う**
- 表形式のデータ表示に限定して使用
- レイアウト目的での使用は避ける
- レスポンシブ対応の考慮

**ユーザーが操作しやすいように**
- 縦積みレイアウトへの変換
- フォントサイズの調整
- アクセシビリティへの配慮

**適切なaria属性の使用**
- 見出しセルの明確な指定
- スクリーンリーダー対応

:::note
表形式でないデータの場合やtable要素で微妙に組みづらいデザインの場合は以下で代替することも検討できます。

- Flexboxレイアウト
- CSS Grid
- リスト要素 + CSS
- セマンティックな要素 + ARIA属性
:::

## まとめ
今回はtable要素について取り上げました。

table要素は、表形式のデータを効果的に表示するための重要なHTML要素です。適切な使用と実装により、ユーザーにとって理解しやすい情報提示が可能となります。

個人的にtableで実装してみたけど、デザイン通りのレスポンシブ対応がtable要素だとしづらいなどの場面に遭遇したり、意外に苦しめられてきた記憶があります。

table要素の基礎について理解しつつ、より良い制作物や実装フローを踏めるようにしていきましょう！
【イベントレポート】なんでもCopilot#14「TamaiサンタがCopilot＋PCと一緒に出現！クリコパ」　#なんでもCopilot

いつも記事を読んでいただきありがとうございます！
モブエンジニア（[@mob-engineer](https://qiita.com/mob_engineer))です！

今回は12/25（水）**なんでもCopilot#14**へ参加しましたので、アウトプットとしてイベントレポートを執筆いたしました。

サクッと読める分量で執筆しておりますので、お気軽に読んでいただければ幸いです。

### イベントページ

https://nandemo.connpass.com/event/339356/

### なんでもCopilotアドベントカレンダー

https://adventar.org/calendars/10228

## オープニング
- Copilotユースケース
    - 社内ドキュメントの要約
    - エージェントによるタスク処理
    - 画像生成、画像認識など

## たまいサンタがやってきた！　Recall Copilot＋PC

https://learn.microsoft.com/ja-jp/windows/ai/apis/recall

https://support.microsoft.com/en-us/windows/manage-your-recall-snapshots-and-disk-space-2c35b596-5a96-4090-b791-c27fae75f660

https://blogs.windows.com/windows-insider/2024/11/22/previewing-recall-with-click-to-do-on-copilot-pcs-with-windows-insiders-in-the-dev-channel/

https://learn.microsoft.com/ja-jp/windows/client-management/manage-recall

- 自己紹介
    - 自宅サーバー（TDC）を用いて、検証を行っている
    - オンプレ製品に注力している
    - つよつよ自宅サーバの人
- Copilot + PC（2024/12/25時点の情報）
    - Windows 11のシステム要件より高い基準を満たしたPC
        - NPU（AI処理プロセッサのようなもの）が40 + TOPS
        - メモリは16GB
        - ストレージは256GB
    - データ保管のためにストレージが必要になる
- デモ環境
    - Microsoft Surface Pro With 5G法人向けモデル
    - Recallとは
        - 過去に作業した内容を記録する機能
        - 過去情報を見れるため、顔認証が必要になる
        - OCR機能も搭載している（文字もコピー可能）
        - URL情報をコピーすることでアクセスも可能
        - ハイライト機能を使うことで、OCRも簡単に行える
        - 機密情報を取り扱う場合は、Recall機能を止めることも可能
    - Recallユースケース
        - バッテリーを効率的に利用可能になる
        - Entra IDと紐づけて、組織管理するときは別途ポリシー設定が必要
            - 構成プロファイルの設定が必要
    - 質疑応答
        - どこに保存されているのか
            - 基本的にローカルに保存される
            - アクセスしたとしても暗号化されているため他ユーザが安易に見れるわけではない
        - Recallのデータのセキュア度合いは
            - ローカルのみにしか保存されない＋本人しか確認できない
        - 他のストレージへ保管可能か
            - 内蔵ストレージしかスクショを保存できない
        - 暗号化ポリシーについて
            - 暗号化ポリシーの詳細については公開されていない
            - Windows Hello、VPN機能を設けてセキュリティ設定している
        - 利用容量について
            - 業務利用であれば3GBくらい利用しそう
            - Windows365、リモートデスクトップ接続利用であれば、スクショはとられない
        - スクショの頻度
            - 5秒おきにスクショをとっている
        - 取得タイミングのコントロールは可能なのか？
            - コントロールは難しい
        - スクリーンショットの対象は
            - アクティブなウィンドウのみに見受けられる

最後まで記事を読んでいただきありがとうございます！