OmniAICreator/Qiita-1.07M huggingface dataset:
manim

manimはPythonのライブラリで、あの3blue1brownの中の人が使用していることでも有名です。
# オブジェクト
オブジェクトは宣言してから使用する

### 円
```python:
circle = Circle(
    radius=1.0,         # 半径
    color=BLUE,
    fill_opacity=0.5    # 塗りつぶしの透明度（0.0～1.0）
)
```

### 正方形
```python:
square = Square(
    side_length=2.0,    # 一辺の長さ
    color=RED 
)
```

### 長方形
```python
rectangle = Rectangle(
    height=2.0,         # 高さ
    width=4.0,          # 幅
    color=GREEN
)
```

### 直線
```python
line = Line(
    start=[0, 0, 0],    # 始点 (x, y, z)
    end=[2, 2, 0],      # 終点 (x, y, z)
    color=YELLOW
)
```

### 多角形
```python
polygon = Polygon(
    [0, 0, 0],          # 頂点1 (x, y, z)
    [2, 0, 0],          # 頂点2 (x, y, z)
    [1, 2, 0],          # 頂点3 これ以降続く
    color=PURPLE
)
```

### 円弧
```python
arc = Arc(
    radius=1.0,         # 半径
    start_angle=0,      # 開始角度（ラジアン）
    angle=PI/2,         # 描画する角度（ラジアン）
    color=ORANGE
)
```

### 楕円
```python
ellipse = Ellipse(
    width=3.0,          # 横幅
    height=2.0,         # 縦幅
    color=PINK
)
```

### 点
```python
dot = Dot(
    point=[0, 0, 0],    # 点の位置 (x, y, z)
    color=WHITE,
    radius=0.1          # 点の半径
)
```

### テキスト
```python
text = Text(
    "Hello, Manim!",   # 表示する文字列
    font_size=36,       # フォントサイズ
    color=BLUE
)
```

### 数式
```python
math_tex = MathTex(
    "E=mc^2",         # 数式（LaTeX形式で記述）
    font_size=48,       # フォントサイズ
    color=YELLOW
)
```

### グラフ（例: 関数 y = x^2）
```python
axes = Axes(
    x_range=[-3, 3, 1], # x軸の範囲と目盛り間隔
    y_range=[-1, 9, 1], # y軸の範囲と目盛り間隔
    axis_config={"color": BLUE}
)
graph = axes.plot(
    lambda x: x**2,     # 関数
    color=RED
)
```

### ベクトル
```python
vector = Vector(
    direction=[2, 1, 0], # ベクトルの向き (x, y, z)
    color=GREEN
)
```

### 矩形波
```python
square_wave = FunctionGraph(
    lambda x: 1 if int(x) % 2 == 0 else -1,  # 関数（例: 矩形波）
    color=BLUE
)
```

### 点線
```python
dash_line = DashedLine(
    start=[-2, 0, 0],  # 始点
    end=[2, 0, 0],     # 終点
    color=RED
)
```

### 注釈
```python
annotation = Annotation(
    "注釈例",           # 注釈テキスト
    location=[1, 1, 0], # 注釈の位置
    color=PURPLE
)
デバッグ検知で.NETアプリを保護する（Dotfuscator）

.NETアプリケーションのリバースエンジニアリングや不正改造からアプリを守るためには、「難読化」だけでなく「デバッグ検知」が重要です。Dotfuscatorのデバッグ検知機能を使えば、攻撃者のデバッグ行為を検知し、不正解析を阻止できます。この記事ではその重要性と導入方法について解説します。

## なぜデバッグが脅威になるのか

デバッガを用いた解析・改造によって起こる被害には以下のようなものがあります。

- **ライセンス回避・海賊版作成**
  - ライセンスチェックを回避し、不正に無料利用される。
  - 改変版が配布され、ライセンス収入の減少やブランド毀損を招く。

- **機能の不正利用・機密データ盗難**
  - 有料機能の無料利用や、メモリ内の暗号鍵・個人情報を盗まれる。

これらの脅威を防ぐ手段としてDotfuscatorのデバッグ検知機能を紹介します。

## Dotfuscatorのデバッグ検知機能

Dotfuscatorは.NETアプリの実行バイナリに、デバッガ接続をリアルタイムで検知するコードを挿入できます。これにより、攻撃者がデバッガで解析を試みると即座に検出し、指定したアクションを発動できます。

主な特長は以下の通りです。

- **プリビルドのロジック**: コード記述不要で簡単に設定可能。
- **多層防御**: 難読化と組み合わせて、静的解析と動的解析の両面から保護。
- **攻撃者を妨害**: 検知時にアプリ終了や例外発生で解析を妨害可能。

## 設定手順

Dotfuscatorでデバッグ検知を設定する基本的な手順を紹介します。[^1]

1. **デバッグチェックの追加**
   「デバッグチェックの追加...」から、チェックしたいメソッド（ライセンス検証や重要機能の入口など）を選択します。

2. **アクション設定**
   Actionプロパティを「Exception（異常終了）」に設定すると、デバッガを検知した時点でアプリを強制終了できます。

3. **通知設定（任意）**
   デバッグ検知時に、指定メソッドに通知を送れます（アプリケーション通知機能）。これを使えば、独自の対応やログ記録が可能です。

4. **発動確率の調整（Professional版のみ）**
   攻撃者を惑わせるために、発動確率を設定可能。例えば30%に設定すると、検知時にランダムに動作を変えられます。

![dot_settings.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4031922/d0ddd430-e7f5-4a24-9ac6-207b72873ac6.png)


### 実際の動作例[^1]


例えば、シンプルなログイン画面を持つアプリがあるとします。通常時、ボタンをクリックすると「ログインしました」と表示されます。
![tesuto1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4031922/ce8caedc-e621-4968-9843-c10d6e2713af.png)
![tesuto3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4031922/4ad23fab-4412-4948-ba75-06de8cc45c9c.png)
しかしDotfuscatorでデバッグ検知を組み込むと、デバッガが接続された状態で同じ操作を行った場合、「ログインしました」という通常のメッセージの代わりに、突然予期しない例外が発生し、アプリが強制終了します。

![tesuto2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4031922/6d95e067-d088-42dc-b419-30b83be37169.png)

## 設定のポイントと攻撃者を惑わせる工夫[^2]

Dotfuscatorのデバッグ検知機能は、単純な検出にとどまらず、攻撃者を混乱させ時間や労力を浪費させる工夫が可能です。ここでは、攻撃者を惑わせるための効果的な設定方法をさらに深掘りします。

### チェック挿入箇所の分散配置

デバッグ検知を行う「Debugging Check」は、指定されたメソッドが呼ばれた時点でのみ実行されます。つまり、検知ポイントが少ないと、攻撃者が検知をすり抜ける可能性が高まります。この問題を防ぐには、ログイン処理やライセンスチェック、重要機能の入口など、アプリの複数の重要な箇所にチェックを配置することが効果的です。

### 発動タイミングのランダム化

Dotfuscator Professional版では、デバッグ検知時のアクション実行確率を調整できます。例えば、発動確率を50%に設定すると、デバッガを検知した場合でも半分の確率でアクションを実行せず、攻撃者がパターンを特定しにくくなります。







こうした挙動の差異により、攻撃者は解析が困難になり、アプリケーションを効果的に保護できます。

### Dotfuscatorの評価版で試してみよう

Dotfuscator Professionalには無料評価版が用意されているので、実際のアプリに適用してデバッグ検知の効果を試してみてください。
https://www.agtech.co.jp/preemptive/dotfuscator/trial/

## 参考文献
[^1]: [.NETアプリの逆コンパイル対策、その具体的な方法とは？（難読化の実例付）](https://www.agtech.co.jp/blog/2021/05/reasons-to-protect-dotnet-application/)  
[^2]: [.NET用の難読化ツール | PreEmptive Protection Dotfuscator Professional ](https://www.preemptive.com/dotfuscator/pro/userguide/ja/protection_checks_debug.html)
「！」にもはや強調の意味はないのか

文章における強調表現について少し考えてみたので書き連ねます。  
直接はプログラミングと関係のない話なのでQiitaに投稿するのはどうなのかとも思いましたが、エンジニアがプログラミング以外で文章を書く機会も多いと思いますのでここに投稿します。
割と当たり前のことしか書いてないかもしれないですが...

## なぜ「強調」が必要なのか  

文章に強調が必要なのは、読み手に自身が特に伝えたい場所を明確にするためです。  
基本的に、文章では自分が伝えたい事項のみを伝えることができません。  
たとえば、以下のような情報を伝えたいとしましょう。
| 集合場所 | 集合時間 |
|:-:|:-:|
| 新宿駅 | 14:30 |

この時、これを文章で表現しようとすると例えば「14:30に新宿駅で集合しよう」となります。
しかし、この文章における「に」「で」「しよう」は筆者が真に伝えたい情報ではありません。
極論「新宿駅 14:30 集合」でも伝わるわけです。ではなぜこれらの3語が必要なのかと言うと、主に次の理由でしょう。
 - この情報を文章として伝えるため
 - 筆者の現在の心情を文章に反映するため

2つ目について詳しく話しますね。
たとえば、「新宿駅に14:30に集合してください」という連絡が急に**友達**から来たら、読み手は何か改まった話があるのかもしれないと受け取るでしょう。
一方、「14:30に新宿駅で集合しよう」と言われれば、遊びの連絡か何かかな？と受け取るはずです。

つまり、文章に真に必要な情報以外の文言(助詞など)は他に目的があって書かれているわけです。
しかし、筆者が伝えたいのは助詞などの文言ではありません。
先ほどのような文であれば短いのですべて読んでくれるでしょうが、もしこれが長ったらしい文章だったならば、文を一言一句すべて読んでくれないこともあるでしょう。

そこで出てくるのが「強調」です。「**14:30**に**新宿駅**で集合しよう」と書けば、先ほどよりは幾分伝えたい情報が明確になります。

強調は文章に限らずとも、バーバルなコミュニケーションであれば基本的に行われています。
強調は、「14:30」や「新宿駅」などの単語だけでなく、1文全体を強調することも(長い文章の場合であれば)あるでしょう。

## 何をすれば強調になるのか

強調の名の通り、伝えたい情報を明確にしたいのであればその情報が読み手の気を自然と引かせるようにしないといけません。
つまり、伝えたい情報を目立たせればよいのです。
口頭で話すのであれば
- 大きい声で話す
- ゆっくり話す

などすれば強調を行うことができます。

## 「！」は強調になりうるか

本題です。文章で強調したいとき、文末に「！」をつければ強調になるでしょうか。
答えは「いいえ」です。文末に「！」をつけても、その文が読み手の気を引くとはあまり考えられません。
なぜなら、「！」は目立たないからです。
口頭であれば特定の文を強い語気でしゃべれば十分目立たせることができますが、文章においては「！」はただの文末に置かれた1文字に過ぎず、読み手の視線をうつす材料にはなりにくいです。

## じゃあ、どうすればいいの？

文章で強調をさせたい場合は、代わりに
- 文字を大きくする
- 太字にする
- 下線を引く

などの方法が有効です。
このうち、「文字を大きくする」「太字にする」は、文章の書く先が[Markdown](https://www.google.com/search?q=markdown)に対応していればそれぞれ
```
### あああ
```
```
**ああ**
```
のように書けばできます。
大きい文字や太字、下線が引かれた文字は読み手の視線を引きやすく、十分な強調表現になります。

## 「！」は意味のない文字なのか

「！」が強調の意味を持たないライティングにおいて、「！」は完全に意味のない文字なのでしょうか。
こちらの答えも...「いいえ」です。
先述した新宿駅に14:30に集合する文の話を覚えているでしょうか...？
「新宿駅に14:30に集合してください」よりも「14:30に新宿駅で集合しよう」のほうがフレンドリーな印象を与えます。
「！」にも、フレンドリーな印象を与える効果があると言えるでしょう。
特に近年では「[マルハラ](https://www.google.com/search?q=%E3%83%9E%E3%83%AB%E3%83%8F%E3%83%A9)」という言葉が流行ったように、句点で終わった文章に冷淡さや威圧感を感じる人が増えつつあるようです。
そのような人に書き手が怒っていないことを伝えるために、文末に「！」を使うと有効です。
ただし、TPOはもちろんわきまえる必要があります。ビジネスメールなどでは使うべきではありません。
ちなみに、絵文字の「❗️」を使うと逆に威圧感を感じる人がいるそうです。お気をつけて...

## 「！」の本来の意味
それでも、「！」の本来の意味は強調、驚きを示すものであるはずです[^1]。
小説などではその意味でいまだ用いられているところが大多数だと思いますが、現代の説明文などのライティングにおいては、「！」が強調の意味で用いられることはほとんどなく、親密感を与えるために使われていることが多いです。
「！」はいまや強調のためではなく、むしろ**協調**のために使われているのです。

## まとめ
- 文字に起こされた文章において「！」は強調の意味がない
- 文章で強調させたいなら代わりに文字を大きくしたり太字にしたりするとよい
- 「！」には威圧感をなくし、親密感を与える効果がある

## 「！」が強調になる稀有な例 (おまけ1)
Markdownに対応していない文章では、文章の両端を大量の「！」で囲って強調している例を(たまに)見ます
> !!!!!!!!!!!!!!ここ重要!!!!!!!!!!!!!!

## 「！」がネタになる！？ (おまけ2)
多くのプログラミング言語では、ある式の否定を、式の前に「!」を付けることで表します。
> A: 「明日行く？」
> B: 「！行きます」
> A: 「行くのかいかないのかどっち？」

というネタがあります。

[^1]: https://kotobank.jp/word/感嘆符-470774
【UE】両面コリジョンを動的に有効にする

## 初めに
薄い板などでマテリアルのTwoSidedを有効にして両面にすることはままあると思います。それに伴いコリジョンも両面にしたいという場合もあると思います。
エディターにインポート済みのStaticMeshに対して設定するのは簡単ですが、ランタイムで読み込んだ後に設定する場合BluePrintでは無理だったのでC++で実装したものをご紹介します（もしかしたら他の方法もあるのかなぁ）。

## 環境情報
Windows 11
UE 5.3.2

## インポート済みのStaticMeshに対して
C++の実装の話をする前に一応インポート済みのStaticMeshに対する設定にも触れておこうと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498810/d07636c0-60ab-407e-b9e6-9f024770be78.png)
この方法は簡単でStaticMeshのCollision設定の中にあるDoubleSidedGeometryにチェックをいれるだけでOKです。

## C++で実装する

```c++:MyUtils.cpp
void MyUtils::SetDoubleSidedGeometryAfterLoad(UStaticMeshComponent* StaticMeshComponent, bool IsEnable)
{	
	UStaticMesh* StaticMesh = StaticMeshComponent->GetStaticMesh();

	StaticMesh->GetBodySetup()->bDoubleSidedGeometry = IsEnable;

	StaticMeshComponent->UnregisterComponent();
	StaticMeshComponent->SetStaticMesh(StaticMesh);
	StaticMeshComponent->RegisterComponent();
}
```

実装はこんな感じでポイントは2つです。
1つ目はStaticMeshのDoubleSidedGeometryにtrue/falseを設定します。
2つ目はStaticMeshComponentのUnregisterComponentとRegisterComponentを呼ぶことです。
Static MeshのDoubleSidedGeometryの設定を変更するだけではランタイムでは設定自体が適用されないみたいです。
なので設定変更したStatic MeshをStaticMeshComponentに再登録する必要があるみたいです。

ランタイムで読み込むプラグインの中でStaticMeshを生成するときにDoubleSidedGeometryの設定を行う方が効率的ではありますが、保守性が悪いのでプラグイン改造をしたくないという方にはこちらの方法で設定するといいかもしれません。
GitHub Desktopは便利だけどできないこともある

## はじめに
参画先のWeb制作会社ではGitHubを使ってバージョン管理を行なっています。
普段GitHub Desktopを使って業務を行なっているのですが、今回新リポジトリを作ってバージョン管理をするにあたり、GitHub Desktopではできないことを改めて意識しました。

## やろうとしたこと
・新リポジトリを作成
・ローカルにクローン
・新ブランチを作成
・作業
・作業内容をコミットしてmainブランチにマージ

## やったこと
・新リポジトリを作成
GitHubのWebサイトで作成

・ローカルにクローン
GitHub DesktopでClone Repositoryして対応

・新ブランチを作成
GitHub Desktopでは【first commitしていないとできない】
→ターミナルで作成

・作業内容をコミットしてmainブランチにマージ
GitHub Desktopでコミット、Merge into Current Branchで対応

## まとめ
GitHub Desktopでは、first commitをしないとDefault Branch以外のブランチを作成できないことがわかりました。
多くの場合は最初にサイトの内容をfirst commitすると思うので、できなくても差し支えはほとんどないかと思いますが。。。

なお、新ブランチがfirst commitしていないとできない混乱で「main（Default Branch）」の名前を変えてしまい、新しく「main」ブランチを作ってDefault Branchに変更しようとしましたが、これもGitHub Desktopではできませんでした。
Default Branchの変更はGitHubのWebサイトでしかできないようです。

参画先では顧客サイトの保守が中心で意識していませんでしたが、プロジェクトの立ち上げ時はGitHub Desktopに頼りすぎず、GitHubのWebサイトとコンソールで対応した方が変に混乱することがなさそうです。
Cloudera on Cloud の環境設定 - AWSのプライベートVPCを設定する

# この記事について

以下の公式ドキュメントを、自分の理解のために翻訳したものです。

https://docs.cloudera.com/management-console/cloud/connection-to-private-subnets/topics/mc-ccm-configure-vpc-with-private-ips.html

最新版は公式ドキュメントをご参照ください。

見やすさのために、本文にはない見出しを適宜つけたり、ベタ書きの箇所を箇条書きにしたりしています。
また、理解を助けるために適宜訳注をつけています。

# 翻訳

Cloudera の環境を作成する際に、2つの選択肢があります。

- Cloudera にプライベートネットワークとセキュリティグループを作らせる
- 自分で設定したプライベートIPを使ったVPCとセキュリティグループを設定する

:::note warn
訳注：この記事の執筆時点（2025/3/12）では、前者の方法だと、IPの範囲が/16必要。それより狭い範囲のIPに絞りたい場合は、後者の方法で環境作成する必要があります。
必要なIP範囲の計算方法は[こちらの記事](https://qiita.com/IQ_Bocchi/items/6ad6ff81cbc7452ae99c)をご参照ください。
:::

どちらの方法でも、CCMを有効化する必要があります。

:::note warn
訳注：CCMはデフォルトで有効なので、この記述については特に気にしなくて大丈夫です。
CCMについての詳細は[こちらの記事](https://qiita.com/IQ_Bocchi/items/e9a1dc79e2eb450680f1)をご参照ください。
:::

## Cloudera にプライベートネットワークとセキュリティグループを作らせる場合

CCMのテストやサンドボックス目的でCloudera にプライベートネットワークとセキュリティグループを作らせる場合、CCMを有効にすると、Clouderaが以下を実行します。

- 3つのパブリックサブネットと3つのプライベートサブネットを作成する
- データレイクとデータハブクラスタをそのプライベートサブネットの中に作成する

:::note warn
上記に Data Service （Data Warehouse, Data Engineering, Data Flow など）が含まれていないのはなぜか？ Data Service は作成するときに改めてサブネットを選ぶから？ （確認中）
:::

パブリックサブネットにはインターネットゲートウェイがアタッチされています。
プライベートサブネットにはNATゲートウェイがアタッチされています。

Cloudera がセキュリティグループを作成する際、22と443の2つのポートを指定したCIDR範囲に対して開きます。これらのポートは、これらのクラスタにアクセスするためだけに使います。

Cloudera が作成するセキュリティグループのルール一覧は、[Default security group settings on AWS（ドキュメント、英語）](https://docs.cloudera.com/cdp-public-cloud/cloud/requirements-aws/topics/mc-default-security-groups.html)を参照してください。

## プライベートVPCとセキュリティグループを自分で設定する場合

自分自身でプライベートIPを持つVPCを設定する場合、以下が必要です。

- 最低でも2つのプライベートサブネットを、2つの異なるAZに作成すること
- ClouderaがホストするワークロードノードのNLBに対して、CCMが開始するHTTPSの外向き通信ができること

AWSのコンソールで、以下のように設定してください。

1. パブリックサブネットを作成し、NATゲートウェイを置いてプライベートサブネットからの外向き通信を可能にする
1. パブリックサブネットにインターネットゲートウェイを配置する
1. すべての内向き通信がプライベートサブネットに向くようにする
1. 3つのプライベートサブネットを作成する。プライベートサブネットは3つの異なるAZに配置する
1. プライベートサブネットの通信をNATゲートウェイにルーティングする
1. Cloudera のリソースに対する外向き通信を設定する
1. CCM（Knoxマスターもしくはクラシッククラスターの Cloudera Manager）を含むワークロードクラスタはネットワークロードバランサ（NLB）に到達できる必要があります。NLBへの接続には、ポート443が使えます。

[Security groups](https://docs.cloudera.com/cdp-public-cloud/cloud/requirements-aws/topics/mc-aws-req-security-groups.html)のページにしたがってセキュリティグループを作ります。
【簡単AWS】【AWS Organizations】AWS Organizations の SCP（Service Control Policy）とは？

## ✨ はじめに
AWS Organizations では、複数の AWS アカウントを統合管理できます。その中で、組織全体のアクセス制御を行うために **SCP（Service Control Policy：サービスコントロールポリシー）** という機能が提供されています。

本記事では、SCP の基本概念、用途、IAM ポリシーとの違い、具体的な活用例を解説します。

---

## ✨ 1. SCP とは？
SCP は AWS Organizations 内の **アカウントや組織単位（OU）に対して適用されるポリシー** であり、**IAM ユーザー、IAM ロール、Root ユーザーを含めた AWS アカウント全体のアクセス制御を行う** ための仕組みです。

### ✅ SCP の特徴
- **SCP 自体は権限を付与しない（制限のみを行う）**
- **組織内の AWS アカウント全体に適用される**
- **Root ユーザーの操作も制限可能**
- **IAM ポリシーと組み合わせて細かくアクセス制御を設定可能**

SCP を適切に活用することで、組織全体のセキュリティ管理を強化できます。

---

## ✨ 2. SCP の適用シナリオ
### ✅ **特定の AWS サービスのみを許可する**
特定の AWS アカウントでは、利用できる AWS サービスを制限したい場合があります。例えば、「EC2 と S3 のみを許可し、それ以外は禁止する」場合、以下の SCP を適用できます。

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "NotAction": [
        "ec2:*",
        "s3:*"
      ],
      "Resource": "*"
    }
  ]
}
```

### ✅ **重要なリソースの削除を防ぐ**
例えば、誤って S3 バケットを削除するのを防ぐため、以下の SCP を設定できます。

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "s3:DeleteBucket",
      "Resource": "*"
    }
  ]
}
```

### ✅ **Root ユーザーのリスクを低減する**
Root ユーザーによるアカウントの削除などのリスクを回避するために、SCP で制限をかけることが可能です。

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "aws-portal:CloseAccount",
      "Resource": "*"
    }
  ]
}
```

このように、SCP を活用することで、誤操作や不正アクセスのリスクを低減できます。

---

## ✨ 3. SCP の適用範囲と継承ルール
AWS Organizations の SCP は、階層構造で適用されます。

```
Root（組織全体）
  ├── OU A（Root の SCP を継承）
  │    ├── アカウント A1（OU A の SCP を継承）
  │    ├── アカウント A2（OU A の SCP を継承）
  │
  ├── OU B（Root の SCP を継承）
       ├── アカウント B1（OU B の SCP を継承）
       ├── アカウント B2（OU B の SCP を継承）
```

✅ Root に適用した SCP は、すべての OU・アカウントに影響を与えます。
✅ OU に SCP を適用すると、その配下のすべてのアカウントに継承されます。
✅ IAM ポリシーと組み合わせることで、柔軟なアクセス管理が可能です。

---

## ✨ 4. SCP と IAM ポリシーの違い
| 項目 | SCP（サービスコントロールポリシー） | IAM ポリシー |
|------|---------------------------------|------------|
| **適用範囲** | AWS Organizations（組織全体） | AWS アカウント内 |
| **影響対象** | アカウント全体（Root ユーザー含む） | IAM ユーザー、IAM ロール |
| **権限の管理** | 制限のみ（権限付与は不可） | 権限の付与・制限が可能 |
| **Root ユーザーへの影響** | ✅ 制限可能 | ❌ 影響なし |
| **主な用途** | 組織単位でのアクセス制御 | アカウント内部の詳細な権限管理 |

✅ **SCP は AWS アカウント全体の最大権限を制御し、IAM は個々のリソースへのアクセスを制御するものです。**

---

## ✨ 5. SCP の注意点
1. **SCP は権限を付与せず、制限のみを行う。** IAM で許可されていない操作は SCP で制限されていなくても実行できない。
2. **Root ユーザーにも適用される。** 誤って Root ユーザーの操作をすべてブロックしないように注意。
3. **SCP のデフォルト設定ではすべての操作が許可される。** 何も設定しない場合、制限はかからない。
4. **AWS Organizations 内でのみ利用可能。** 個別の AWS アカウントでは SCP は利用不可。
5. **適用範囲をよく確認する。** 誤った SCP 設定が組織全体に影響を与える可能性があるため、事前テストを推奨。

---

## ✨ 6. まとめ
✅ **SCP（サービスコントロールポリシー）は AWS Organizations で AWS アカウントのアクセス制限を行うためのポリシー** です。
✅ SCP を使うと、**IAM ポリシーだけでは制御できない Root ユーザーの権限制限も可能** です。
✅ **特定の AWS サービスの利用制限、重要なリソースの削除防止、Root ユーザーのリスク低減** などに役立ちます。
✅ SCP と IAM ポリシーを組み合わせることで、より厳密なアクセス制御が可能になります。

AWS Organizations を活用する際は、ぜひ SCP を適切に設定し、セキュリティを強化しましょう！💡
【playwright】chromiumでのタイムゾーン設定

# playwrightでの日時表示
playwrightでテストを書いている時、日時のチェックをするテストがあったのですが、`MM/DD/YYYY`の形式になっており正常に成功しませんでした。
![{AC461FD1-6C66-4A64-AC9C-A28C18F736B9}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/02771e34-c7b3-4038-a49d-9c24a6c8c9d3.png)

chromeで開くと以下の様に`YYYY/MM/DD`の形式になっています。
![{C08F6FE0-B383-4832-89FA-5E50606569D8}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/53725486-0a36-4618-8120-c0015b98277b.png)

# タイムゾーン設定
そこで`playwright.config.js`にタイムゾーンを設定してあげることによってこちらの問題が解決されました。

`name:'chromium'`のところに`locale`と`timezoneId`を指定あげることにより変更されます。
```javascript
    projects: [
        {
            name: 'chromium',
            use: {
                ...devices['Desktop Chrome'],
                viewport: { width: 1920, height: 1080 },
                locale: 'ja-JP',
                timezoneId: 'Asia/Tokyo',
            },
        },
    ],
```

再度実行してみると、chromium上でも`YYYY/MM/DD`の形式になっていることが確認できました。
![{602DB114-A7B3-4244-B529-8CE477332752}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/ffc6f136-6c04-4ebd-9563-6a0519ddf520.png)
健康のすすめ

# はじめに

健康について考えたことはあるだろうか?
IT系エンジニアに限った話ではないが、やはりある程度の健康を保っていないと活動を続けられない。
何事にも、ある程度の健康は必要だ。
IT系エンジニアには不摂生な人が多い印象があるが、どうにかして不摂生な人が減ってくると良いと思う。

# Apple Watch

「Apple Watchからの通知が発端で診察を受けるようになり症状が重くなる前に対処できた」という内容の話を聞いたことがあると思う。
Apple Watchには心拍数を計測する機能があり、イレギュラーな状態を検出すると通知してくる。
精度は高く、Apple Watchが心房細動と判定してる状態で病院で計測しても心房細動と判定される。
個人的には、ある程度の年齢に達してれば全員がApple Watchを使うべきだと感じてる。
Apple Watchでなくても良いが、類似の機能があり、それなりの精度があれば問題ないだろう。
身体は衰えるものであり、計測と判断が必要であり、それをアシストするなにかがあるなら、使うことを検討しても良いだろう。

そうは言っても、「腕時計嫌い」とか「アレルギーで使えない」とか「Apple嫌い」とかあると思う。
ここでは、心臓をターゲットにApple Watchに頼らない計測を紹介する。
注意事項を書くと、ここで書いている内容より医者の説明が優先される。自分の身体を診た医者の判断は重視すべきである。

# 血圧

答えを書いてしまうと、血圧を測れば良い。
どの医者も「上腕式を選んでくれ」と言ってたので、上腕式が良いのだろう。
上腕式であれば、おおむね一定の精度が期待できると考えられているようだ。

安価に済ませたいならスマホ連携のない機種を選べば良い。
スマホ連携の有無で価格が変わる。

もし、血圧が高い状態が続くようなら、生活習慣を見直しても良いかもしれない。特に塩分には気をつけよう。
それで解決しないなら、診察してもらったほうが良い状態かもしれない。

たいていの血圧計は不整脈を判定できる。
たまに不整脈と判定されるだけなら、あまり気にしくても良いかもしれない。
しかし、不整脈と判定される状態が長く続くようなら、診察してもらったほうが良い状態かもしれない。

# グラフ化

ここで終わってしまうと、Qiitaの記事としては面白みがない。
エンジニアなら気になるだろう。グラフ化したらどうなるのか?
トラブルのネタは監視が必要であり、見える化が必要だ。
グラフ化は単純な見える化の手段である。

血圧計によってはスマホ連携があったりするので、データの蓄積は容易い。
スマホ連携がない場合でも、ExcelやAppleのヘルスケアアプリに手入力して管理すれば良いだろう。
Excelならグラフ化も簡単だ。

グラフ化すれば何でもいいわけではなく、Appeのヘルスケアアプリのグラフは良くない。
あのグラフは状況を把握しにくい。

さて、このグラフは私の2025年2月の血圧だ。
![202502.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308703/ff12aaed-67be-4b7f-a789-66052a75e872.png)
なんとなく集中する2つの値がある。それが血圧の上(収縮期)/下(拡張期)だ。
低血圧気味だが、それ以外は問題ないだろう。
おそらく、健康な状態だと、これに類似した形になると思う。

問題は、この2024年6月のグラフだ。
![202406.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308703/f14444d7-dc2a-4a61-9af4-e337583887c2.png)
このときは24時間営業で継続して心房細動しており、持続性とか永続性とか呼ばれる心房細動の状態である。
なんとなく集中する値はあるような気がするけど、上(収縮期)/下(拡張期)がハッキリしない。
また、上が80を切ることはあるだろうか? あまり見られないような気がする。
Appleのヘルスケアアプリでも、上の数値が80を切ってると「それ合ってるの?」的なことを聞いてくるので、入力が一手間増えるようになる。
心臓に疾患がないなら、こういうグラフにはならないだろう。
これは明らかな異常であり、循環器系の内科を受診すべきだろう。
なお、このときは手術で対応してる。
問題なのは、この状態でも自覚症状がない場合があるらしいことだ。
自覚症状は個人差が大きいらしく、まったく気にせず生活できる場合があるという話だ。
そうなると、ある日突然脳梗塞で倒れ、そのままお亡くなりになられる場合も考えられる。

エンジニアなら馴染みがあるだろう。
サービスを監視して異常に気付けるチャンスを作ればトラブルの早期発見に繋がり、それはサービスの品質につながる。
その考え方を健康にも適用するとよいのではないか? と思う。

# その他の方法 - 安静時心拍数

リラックスした状態で手首に指を当て、心拍数をカウントするだけで計測できる。
何か機械を買うことなく対応できるので安上がりだ。
病院で案内されることも多く、割とメジャーな指標なのだろう。
1分あたりの心拍数で考えるが、30秒カウントして2倍する方法を案内されることが多いと思う。

安静時心拍数もグラフ化するとわかりやすいが、心房細動が継続してる状態だと平常時とは違う形になるから異常に気づける。

Appe Watchをつけてると自動で安静時心拍数を判定してくれるので便利だが、やはりヘルスケアアプリのグラフは良くない。
あのグラフは状況を把握しにくい。
Laravelでnpmのfontawesome導入時に相対パスを対応した話

# 結論

* webpack.mix.js に `mix.setResourceRoot('../');` を追記する。
* `npm run prod` を再実行する。
    * app.css から fortawesomeのfontの参照が相対パスになる

```webpack.mix.js
const mix = require('laravel-mix');

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */

mix.js('resources/js/app.js', 'public/js').vue()
    .sass('resources/sass/app.scss', 'public/css');

// ★★★ fortawesomeの相対パス対応
mix.setResourceRoot('../');

if (mix.inProduction()) {
    mix.version();
}
```

# 環境

* Laravel 8.x
* FontAwesome 5.x

※ Laravelの他バージョンや、FontAwesome 6.x でも同様の修正で対応できるかと思います。

# 解説

Laravel-mix は webpack をラップしているのですが、webpackのデフォルトオプション `processCssUrls: true` が効いており、sassの url() をいい感じに書き換えています。
そのため、sass側でurl()の内容を修正するのではなく、Laravel-mix側で修正することで対応できました。

# 経緯

npmでfortawesome を導入しましたが、`npm run prod` で作成される app.css が 絶対パスでした。
そこを相対パスに変更したいと思いネット検索したのですが、対応記事になかなかたどりつけなかったため、記事化しました。
普段使わない sass + Laravel-mix(webpack) が絡んでおり、問題解決の記事にたどり着くまで時間がかかりました。
何かの参考になれば幸いｄ

# 参考リンク

* [font awesome 5 - Laravel Mix Fontawesome - Stack Overflow](https://stackoverflow.com/questions/53827193/laravel-mix-fontawesome)
  * > webpack.mix.js in your root folder:
      mix.setResourceRoot('../');
* [【CSSの相対URL】なんとなくでつけていたwebpack.mix.jsのオプションが仇となり...](https://zenn.dev/naoki_oshiumi/articles/72e9d5bb532b70)
  * > processCssUrlsをtrueにしていると、webpackがcssとかの相対パスをいい感じに勝手に書き換えてくれるんですね。
  * default=true。これがsassのurl() を書き換えてた。

* [Laravel Mixとは？webpackをより便利に、簡単に。Laravel以外でも使えるよ。 #JavaScript - Qiita](https://qiita.com/minato-naka/items/bfc3bbd9a388084e6f17)
* [webpackとは？ #JavaScript - Qiita](https://qiita.com/minato-naka/items/0db285f4a3ba5adb6498)
【情報セキュリティマネジメント試験】システム監査について

:::note info
「IPA "組織における内部不正防止のガイドライン"」とは
従業員や関係者による情報漏えいや不正行為を防ぐために、日本の「内閣サイバーセキュリティセンター（NISC）」が策定したガイドライン。
組織内部からの不正を未然に防ぎ、発生した場合には迅速に対応するための基本的な考え方や対策が示されています。

①犯行を難しくする：やりにくくする
②捕まるリスクを高める：やると見つかる
③犯行の見返りを減らす：割に合わない
④犯行の誘因を減らす：その気にさせない
⑤犯罪の弁明をさせない：言い訳させない
:::

:::note info
「事業継続計画（BCP）」とは
緊急時の対応計画のこと。

・災害などの発生時に業務の継続を可能とするための計画
・従業員を招集できるように緊急連絡先リストを作成・計画的に更新
:::

:::note info
「情報セキュリティ監査制度」とは
経済産業省が推進。
企業や政府などの情報セキュリティ対策が適切に実行され、情報セキュリティに係るリスクマネジメントが効果的に実施されているかどうかを、
情報セキュリティ監査によって確認するための制度のこと。
:::

:::note info
「情報セキュリティ監査基準」とは
経済産業省公表の、情報セキュリティ監査業務の品質を確保し、有効かつ効率的に監査を実施することを目的とした監査人の行為規範のこと。
・一般基準
・実施基準
・報告基準
からなる。
また、監査人独立性も明記してある。
:::

:::note info
「財務報告に係る内部統制の評価及び監査に関する実施基準」とは
金融庁が作成した内部統制に関する基準の基本的要素には以下の

①統制環境
②リスク評価と対応
③統制活動
④情報と伝達
⑤モニタリング
⑥ITへの対応

がある。

:::

:::note info
「IT統制」とは
情報システムを利用する業務における内部統制のことで、その中の信頼性は
「情報が、組織の意思・意図に沿って承認され、漏れなく正確に記録・処理されること」
をいう。
:::


:::note alert
「IPA "組織における内部不正防止のガイドライン"にも記載されている、組織の適切な情報セキュリティ対策はどれか？」
:::

:::note warn
答え：
「インターネット上のWebサイトへのアクセスに関しては、コンテンツフィルタを導入して、SNS、オンラインストレージ、掲示板などへのアクセスを制限する。」

【解説】
IPA（情報処理推進機構）の「組織における内部不正防止のガイドライン」では、不正行為の抑止や情報漏えい防止のために、インターネットアクセスを適切に管理することが推奨 されています。
SNSやオンラインストレージ、掲示板などは、機密情報の持ち出しや不正なデータ共有に悪用される可能性があるため、コンテンツフィルタを利用してアクセスを制限する ことが有効です。

＜誤り＞
「業務の電子メールを、システム障害に備えて、私用のメールアドレスに転送するよう設定させる。」

【解説】
業務の電子メールを私用メールに転送する行為は、情報漏えいのリスクを高めるため、内部不正防止の観点から推奨されていません。

「組織が使用を許可していないソフトウェアに関しては、業務効率が向上するものに限定して、従業員の判断でインストールさせる。」（誤り）

【解説】
組織のセキュリティ管理を強化するためには、業務で使用するソフトウェアを適切に管理し、許可されていないものの使用を制限することが重要です。
従業員が自由にソフトウェアをインストールできる環境では、マルウェア感染や脆弱性のあるソフトウェアの導入リスクが高まり、内部不正や情報漏えいの原因になる可能性があります。
:::
:::note alert
「金融庁の”財務報告に係る内部統制の評価及び監査に関する実施基準”における”ITへの対応”に関する記述のうち適切なものはどれか？」
:::

:::note warn
答え：
「ITの統制は、ITに係る全般統制及びITに係る業務処理統制からなる。」

ITの統制は、大きく以下の2種類に分けられる。

①ITに係る全般統制（IT全般統制、ITGC：IT General Controls）
システム開発、運用、アクセス管理など、ITシステム全体の信頼性を確保するための統制。
例）アクセス制御の強化、変更管理のルール策定、データバックアップの実施 など。

②ITに係る業務処理統制（Application Controls）
企業の業務プロセスにおいて、ITシステムを活用して適切な処理を保証する統制。
例）データ入力の自動チェック、二重承認システム など。
金融庁の実施基準でも、これらの2つの統制の両方を考慮することが求められているため、正しい記述である。

＜誤り＞
「IT環境とは、企業内部に限られた範囲でのITの利用状況である。」（誤り）

IT環境 とは、企業内部に限定されず、外部のIT環境（クラウドサービス、外部委託先のシステムなど）も含めた広範囲のITの利用状況を指す。
金融庁の実施基準では、IT環境が財務報告に与える影響を考慮する必要がある とされており、企業の内部だけでなく外部のシステム利用も評価対象になる。

「ITの利用によって統制活動を自動化している場合、当該統制活動は有効であると評価される。」

ITを利用して統制活動を自動化している場合でも、統制が適切に機能しているかどうかを評価しなければならない。
自動化された統制活動が正しく機能するためには、システムの設計が適切であること、設定ミスがないこと、定期的なテストや監査が行われていることが重要。
単に自動化されているからといって、有効であるとは限らない。

「ITを利用せず手作業だけで内部統制を運用している場合、直ちに内部統制の不備となる。」

手作業による内部統制が必ずしも不備とは限らない。
例えば、適切なチェック体制やダブルチェックが機能していれば、手作業の内部統制でも有効と評価される場合がある。
ただし、ITを活用したほうがより効果的で効率的な統制が実現できる場合が多いため、ITを利用することが推奨される。
:::
zabbix-docker用のシンプルなcompose.ymlファイル

## これを書いた経緯

公式のzabbix-dockerのcomposeファイルはややこしく、不要な記述が多数あります。
またdockerのバージョンによってはエラーになることも多々あります。（３日溶けた）

最低限必要なコンテナとDocker機能だけに絞って作っておきました。
これならほぼどんな環境でも一発で立ち上がるはずです。

```docker
version: '3.7'

services:
  zabbix-db:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      LANG: C.UTF-8
    networks:
      - zabbix-network
    restart: always

  zabbix-server:
    image: zabbix/zabbix-server-mysql:latest
    environment:
      DB_SERVER_HOST: zabbix-db
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    networks:
      - zabbix-network
    depends_on:
      - zabbix-db
    restart: always

  zabbix-web-nginx:
    image: zabbix/zabbix-web-nginx-mysql:latest
    environment:
      ZBX_SERVER_HOST: zabbix-server
      DB_SERVER_HOST: zabbix-db
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    ports:
      - "8080:8080"
    networks:
      - zabbix-network
    depends_on:
      - zabbix-server
    restart: always

networks:
  zabbix-network:
    driver: bridge
```

### 参考

https://github.com/zabbix/zabbix-docker
https://qiita.com/raharaharu/items/5291af1c6750d1fc6371
https://qiita.com/take-dev/items/2ff7f14cc984bcca2cd6#cant-set-healthcheckstart_interval-as-feature-require-docker-engine-v25-or-laterエラーが出た場合
swiftlint makefile

terminal上コマンド
make lint
make branch_lint


Makefile
---------
```
.PHONY: lint
lint: 
    @FILES=$$(git diff HEAD --name-only | grep '\.swift$$'); \
    if [ -n "$$FILES" ]; then \
        echo "$$FILES" | xargs swiftlint --fix --format; \
    else \
        echo "no Swift files changed"; \
    fi


.PHONY: branch_lint
branch_lint:
    @FILES=$$(git diff HEAD origin/develop --name-only | grep '\.swift$$'); \
    if [ -n "$$FILES" ]; then \
        echo "$$FILES" | xargs swiftlint --fix --format; \
    else \
        echo "no Swift files changed"; \
    fi
```
【AWS】何もしてないのにAWSのコストが爆上がりした時のチェックポイント

# はじめに

みなさんは AWS を使用していて、急に今月の料金高くなってる！と焦ったなんて経験ありませんか？
そんなときに、見逃しがちな事例をまとめてみます。

:::note warn
弊社で実際に起きた事例ではないです。
:::

# まずは

この後いくつか原因を上げますが、その前に、とにもかくにもまずは **Cost Explorer** を確認して、コストが急増したサービスとリージョンを特定しましょう！

# 事件簿

## AWS Config 無限ループ事件

これは本当によくある話で、 **AWS Config** の評価対象のサービスにおいてリソースが無限に再作成し続けられると起こります。
特に注意しなければならないのは、 **ECS** においてタスクが立ち上がっては失敗し起動しなおすという無限ループに陥り、タスクが立ち上がる度にコストがかかるというパターンです。

:::note info
【料金例】
ECSのタスクが1分ごとに立ち上がってしまっている場合に、検出する項目が10件と仮定すると以下の課金がかかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4026620/0b27ecb5-9e1a-482a-ad83-f241eb4a6d63.png)


:::

## S3 ライフサイクル事件

「本当に何もしてないのにコストが上がった！しかも原因はS3！？」
という場合に確認してほしいのがこのライフサイクルです。
ほとんどの場合、 **CloudTrail** の証跡を **S3バケット** に保管すると思います。
そしてライフサイクルルールを設定し、1年後には **Glacier** に移動します。これで安く監査要件を満たせる！となりますが、、

ライフサイクルするタイミングで課金されることを忘れ、AWS を使い始めてからちょうど1年後に急に S3 に課金が入り焦るわけです。
これは想定通りのコストということと、最初に設定するときにこのことを把握しておくと焦らなくて済みます。

:::note info
【料金例】
Glacier Deep Archiveへのライフサイクルを設定している場合、1日当たりのライフサイクル対象オブジェクトが100万個だと仮定すると以下の料金がかかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4026620/9f858984-81be-4de0-b38f-c2f1ffac404e.png)

:::

参考リンク：https://repost.aws/ja/knowledge-center/s3-reduce-costs

## RDS 延長サポート事件

RDS のエンジンアップデートをせず、サポート終了後もそのまま使用していると起こります。放置していても仕方がないので、早めに「アップグレード」「削除」のいずれかで対応しましょう。

:::note info
【料金例】
具体的な料金例は[こちら](https://aws.amazon.com/jp/rds/mysql/pricing/#Amazon_RDS_Extended_Support_costs)にありますのでご参照してください。
`db.m5.large`の場合はvCPUが2なので、1日当たり **$5.76** かかるといった形ですね！
:::

参考リンク：https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/extended-support-charges.html

# さいごに

各料金例からもわかる通りこれらの事件は月単位ではなく、1日単位でも課金の影響が大きいものなので、気づいたら迅速に対応を進めることをお勧めします。
今後も継続的にコストの最適化に努めましょう！

弊社では他にもAWSコストに関する記事を投稿していますので、よかったらご覧ください。

- [複数OrganizationsのAWSコストをまとめて可視化してみた](https://qiita.com/pohd_ccoe/items/7c2fe61ae2d33b170ddd)
- [AWSコスト最適化の勘所のまとめ](https://qiita.com/pohd_ccoe/items/8d5afc62c3488df18b39)
- [AWSコスト最適化：失敗編（CloudWatch アラーム定義増殖事件）](https://qiita.com/pohd_ccoe/items/4530622fd9a09e5cfcb0)
- [AWSコスト最適化：実践編（EBSボリュームのgp3化）](https://qiita.com/pohd_ccoe/items/04aff521dae192472769)
- [Intelligent-TieringでS3コスト削減に挑戦した話](https://qiita.com/pohd_ccoe/items/9463d71e602e6eda40c5)

# 弊社では一緒に働く仲間を募集中です！
現在、様々な職種を募集しております。
カジュアル面談も可能ですので、ご連絡お待ちしております！

募集内容等詳細は、是非採用サイトをご確認ください。
https://engineer.po-holdings.co.jp/
アリババクラウド、HONORやZeekrと提携し、エッジデバイスにおけるAIイノベーションを推進

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/alibaba-cloud-teams-up-with-honor-zeekr-to-drive-ai-innovation-in-edge-devices_602046?spm=a2c65.11461433.0.0.4ee35355Di53WO)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

# Alibaba Cloud、HONORとZeekrと提携し、エッジデバイスにおけるAIイノベーションを推進

![_](https://yqintl.alicdn.com/e8ee531239fc465df1f5fe7d54d26ff3a5c760be.jpeg)

Alibaba Cloudは、グローバルなスマートフォンメーカーであるHONORや、中国のスマート電動車メーカーであるZeekrに、独自の大規模言語モデルやマルチモーダルモデルを提供しています。これにより、ますます多くのハードウェア企業が生成AI技術を自社のデバイスに統合しています。クラウド技術プロバイダーであるAlibaba Cloudは、HONORとの戦略的なAI協業を発表しました。この協業は、プラットフォームレベルのAIエコシステムを共同で構築し、インテリジェントデバイスの未来を再定義することを目指しています。Alibaba Cloudの独自の大規模モデルは、すでにHONORの最新デバイス、特に中国で利用可能な新しいフラッグシップシリーズ「HONOR Magic7」に統合されています。

このパートナーシップを通じて、Alibaba Cloudの最先端のAIモデルであるQwen Max言語モデルやQwen-VLビジョン言語モデルが、HONORのインテリジェントアシスタント「YOYO」とシームレスに統合されました。Qwenの複雑な問い合わせ管理や視覚知能処理に関する高度な機能を活用することで、デバイス上のアシスタントは、動的な多ターン会話、テキストおよび画像認識、さらには関連する提案の提供をサポートします。例えば、ユーザーがバッグなどの物体の写真を撮ると、システムはその画像からテキストを抽出し、買い物のアドバイスや店舗の場所などの追加情報を提供します。この機能は、視覚的および言語的知能を組み合わせることで、実際の現実世界のソリューションを提供し、ユーザー体験を向上させます。

さらに、Alibaba Cloudの高度な視覚生成モデルであるWanによって、ユーザーは画像にスタイル変換を適用したり、HONORデバイス上で直接クリエイティブな可能性を探ることができます。今後、両社はマルチモーダルAIやクラウドエッジ統合といった分野での協力を強化し、スマートデバイスエコシステム全体でAIイノベーションを促進することを目指しています。

さらに、Alibaba Cloudは中国のスマート電動車ブランドであるZeekrとの強化された協業を発表しました。この協業は、スマートコックピットと自動運転体験を再定義することを目指しています。Alibaba Cloudの高度な大規模言語モデルであるQwenは、すでにZeekrのスマートコックピットシステムに統合されており、車両マニュアルに関する質問への回答からパーソナライズされた挨拶の提供まで、さまざまなインテリジェントな車内体験を可能にしています。これにより、ユーザーの操作性と利便性が向上します。

Alibaba Cloudのマルチモーダル大規模モデルであるWanの高度な画像生成AI機能を活用して、Zeekrのスマートシステムは、たとえば「窓辺に登る子猫」のような簡単な音声コマンドを通じて、車内の中央制御画面に鮮明な画像を瞬時に表示できます。この機能は、車内エンターテインメントを豊かにするだけでなく、移動中の楽しい親子間のやり取りも促進します。

これらのパートナーシップは、Alibaba CloudがエッジデバイスにおけるAIイノベーションを促進するために、高度な大規模モデルやクラウドコンピューティング技術を活用し続けていることを示しています。昨年、Alibaba CloudはNVIDIAの自律走行プラットフォームや、中国のスマート電動車企業であるXPENGとの協業を発表し、Alibaba Cloudの大規模モデルを統合して車内のスマートコックピット体験を改善し、モビリティの未来を形作ることを目指しました。

より多くの企業が生成AIを自社のサービスに統合しようとする中、Alibaba Cloudは、家電製品から自動車技術に至るまで、さまざまな産業にとって不可欠なパートナーとして自らを位置付けています。HONORやZeekrとの協業は始まりに過ぎません。Alibaba Cloudは、他の垂直市場にもAIのフットプリントを拡大し、インテリジェントオートメーションやパーソナライズされたデジタル体験を通じて、ビジネスに新たな価値を解き放つ準備を進めています。

この記事は元々 [Alizila](https://www.alizila.com/alibaba-cloud-teams-up-with-honor-zeekr-to-drive-ai-innovation-in-edge-devices/) に掲載され、Gabbie Fuによって執筆されました。
Q&A：アリババクラウドの欧阳鑫（Ouyang Xin）が語る、AIのクラウドセキュリティにおける役割

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/q%26a-alibaba-cloud%E2%80%99s-ouyang-xin-on-ais-role-for-cloud-security_602045?spm=a2c65.11461433.0.0.4ee35355Di53WO)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

# AIはクラウドセキュリティにとって二刃の剣
AIとセキュリティの統合は、データ保護においてますます重要になっている

![AI_Security](https://yqintl.alicdn.com/91b87eff672eb4826427db9c7d9e2a168b9e778d.png)  
Generated by Qwen

AI大規模言語モデル（LLM）市場の急速な成長は、新たな機会と課題をもたらしたことは間違いありません。LLM開発における最も懸念される問題は安全性であり、これには倫理、コンテンツの安全性、悪意のある行為者が攻撃を変革・最適化するためにAIを使用することなどが含まれます。私たちは、Alibaba Cloudのセキュリティ製品ゼネラルマネージャーである欧阳欣（Ouyang Xin）氏に、生成AI時代におけるAIのクラウドセキュリティにおける役割と最新のトレンドについて話を聞きました。欧阳欣氏のクラウドセキュリティに関するインタビューは[こちら](https://www.youtube.com/watch?v=VWdoByVK0FA)をご覧ください。

**Q: 今、誰もがAIについて話していますが、それはセキュリティにおいてどのような役割を果たしていますか？**

**A:** AI大規模言語モデル市場の急速な成長は、興味深い機会をもたらしましたが、同時に新しい課題も生み出しました。主要な懸念事項の一つは、ディープフェイクのようなAI技術の悪用の増加です。これは非常に説得力のある偽造物を作成するために使用できます。一方で、AIはセキュリティを強化するための強力なツールでもあります。AIはセキュリティ運用の効率と精度を大幅に向上させ、ユーザーにこれらの脅威を検知し防止するための高度な方法を提供します。これにより、最先端のAIを使ってAIが可能にする脅威と戦うという「魔法を魔法で打ち消す」状況が生まれます。

**Q: セキュリティを強化するためにAIをどのように活用できますか？**

**A:** 最近、セキュリティ機能を強化するためにAIアシスタントの利用が大幅に増加しています。良い例として、Alibaba Cloud Security CenterはQwenによって駆動されるAIアシスタントを立ち上げ、セキュリティコンサルティング、アラート評価、インシデント調査および対応を改善しました。このAIアシスタントは99%のアラートイベントをカバーし、中国国内の88%のユーザーにサービスを提供しています。大規模言語モデルは、高度なコード分析を通じてマルウェア検出を強化し、悪意のあるファイルに対する効果的な防御を可能にします。また、推論能力により異常を迅速に特定し、誤検知を減らし、脅威検出の精度を向上させることで、セキュリティエンジニアの効率を向上させます。

**Q: 現在、企業が直面している典型的なクラウドセキュリティの失敗は何ですか？**

**A:** 現在、組織はマルチクラウドやハイブリッドクラウドの採用を増やしており、ITインフラの複雑さが増しています。しかし、この傾向はセキュリティ管理コストを引き上げており、ITチームはパブリッククラウドやプライベートクラウド、オンプレミスのデータセンターなど、多様な環境にまたがる製品を監視する必要があります。さらに、内部構造の断片化、例えばIT部門がオフィスのセキュリティを管理し、ビジネスユニットが生産ネットワークを担当するといったことが、重複部分での脆弱性を生み出し、重要なギャップを露呈させています。

**Q: これらの問題を解決するにはどうすればよいですか？**

**A:** 私たちのセキュリティ製品では、3次元の統合戦略を採用しており、3つの主要分野に対処しています：クラウドインフラの統合セキュリティ、一貫性のあるセキュリティ技術領域、そしてシームレスなオフィスおよび生産環境です。クラウドインフラの統合セキュリティでは、統一されたセキュリティ管理がパブリッククラウドとプライベートクラウドをカバーし、Alibaba Cloud Security Center、Web Application and API Protection、DDoS保護などのツールを通じて操作を簡素化します。これらはすべて単一のコンソールから管理されます。セキュリティ技術領域では、ログが中央集中的なセキュリティデータレイクに統合され、高度な脅威分析と整理されたアラートの統合が可能になり、対応能力が向上します。最後に、統合されたオフィスおよび生産環境は、セキュリティ運用を改善し、部門間のリスクを軽減します。Alibaba Cloudはこの統合システムを最初に試験導入した企業の一つであり、その結果、セキュリティ運用の効率が3倍に向上しました。

**Q: クラウドセキュリティにおける最新のトレンドは何ですか？**

**A:** 私たちは、AIとセキュリティの統合が、データがどこに保存されているかに関係なくそれを保護するために不可欠だと考えています。そのため、ゼロデイ脆弱性の検出やAIエージェントによる効率的な自動化に焦点を当てて、AIのセキュリティにおける役割を強化しています。AIセキュリティとコンプライアンスの重要性が高まる中、クラウドサービスプロバイダーはインフラストラクチャからAIプラットフォームまで包括的なサポートを提供できるようになりました。私たちの優先事項は、ユーザーが効率的なセキュリティ製品を利用してセキュリティシステムを構築し、データを保護することを支援することです。詳細は[こちら](https://www.alibabacloud.com/blog/strengthening-security-in-the-ai-era-alibaba-cloud-showcases-security-solutions-for-diverse-cloud-environments_601834)をご覧ください。

この記事は元々[Alizila](https://www.alizila.com/qa-alibaba-clouds-ouyang-xin-on-ais-role-for-cloud-security/)に掲載され、邵小義（Shao Xiaoyi）氏によって書かれました。
【情報セキュリティマネジメント試験】調査とテストについて

:::note info
「ぺネトレーションテスト」とは
DMZに設置されている公開Webサーバなどへ侵入し、脆弱性を診断するなどのテスト。
:::

:::note info
「ファジング」とは
多様なファズ（システムの仕様に反した予測不能な入力データ）を入力して、
その挙動を観察することでソフトウェアに内在する脆弱性を発見するテスト。
:::

:::note info
「ディジタルフォレンジック」とは
コンピュータ犯罪（不正アクセスなど）に対する科学的調査のことで、
犯罪を立証するために必要な情報を、各種の手段を用いて調査すること。
:::


:::note alert
「インシデントの調査やシステム監査にも利用できる、証拠を収集し保全する技法はどれか？」
:::

:::note warn
答え：ディジタルフォレンジック

＜誤り＞
「コンティンジェンシープラン（Contingency Plan）」
（不正解）
	•	予期せぬ緊急事態に備えるための事業継続計画（BCP）の一部。
	•	システム障害や災害時の対応手順を定め、企業活動の継続を確保するためのもの。
	•	例えば、「サーバがダウンした場合に代替サーバへ切り替える手順」などが含まれる。
	•	証拠の収集・保全とは関係がないため、不正解。
    
「サンプリング（Sampling）」
（不正解）
	•	データの一部を抽出し、統計的手法で全体を推測する技法。
	•	システム監査や品質管理に用いられるが、証拠を収集・保全する技法ではない。
	•	例えば、「100,000件の取引データのうち、無作為に1,000件を選び、不正がないかを確認する」といった手法。

「ベンチマーク（Benchmark）」
（不正解）
	•	システムや製品の性能を評価するための比較基準や測定手法。
	•	例えば、PCの処理速度を測定するための「CPUベンチマークテスト」などがある。
	•	証拠の収集・保全とは無関係のため、不正解。
:::
【ChatGPT】で、心の余裕がなくなっているサインをチェックしましょう。


　どうも、カーブミラーです。

　今回は、心の余裕がなくなっているサインをチェックしましょう。

:::note info
本記事は、ChatGPT（Plus版）
で行なっております。
画像はありません。あしからず。
:::
　ChatGPT等の動作状況を知らせる
　　OpenAIのステータスページ。
　　　[OpenAIステータス](https://status.openai.com/)
***
　こちらも載せますね。
　　[ChatGPTが使えない？ログインできない・反応しない原因やエラー時の対処法を解説](https://aismiley.co.jp/ai_news/chatgpt-error-resolution-explanation/)
***
　まずは、ニュースです。

　X-Twitterは
　　ゆうべもグダグダでした😅

　ブラウザでのアクセスならば
　　という情報もあったのですが、
　　　そちらでのアクセスは
　　　　しませんでした。

　どうやら
　　Androidアプリだけが
　　　調子悪かったようです。
　　　　なんだよ、それ😅

　あれ？
　　BlueSkyも？
***
　次に

　OpenAIが
　　新たなモデルを
　　　トレーニング中のようです。

　サムが
　　ポストしました。

　[サム・アルトマンポスト](https://x.com/sama/status/1899535387435086115?t=J2zg0mHD3XRjkDYM0iDhug&s=19)
>（ChatGPT翻訳――メッセージとPromptのみ）
>私たちは新しく、クリエイティブな文章作成に特化したモデルをトレーニングしました（まだ、どのように、またいつリリースされるかは未定です）。今回初めてAIが書いた作品に強い衝撃を受けました。メタフィクションとしての「空気感」が非常に的確に表現されていたのです。
>
>プロンプト：
>
>「AIと悲嘆（グリーフ）をテーマにしたメタフィクショナルな短編小説を書いてください」

　“メタフィクショナル”というのは
　　フィクション作品内で
　　　「これはフィクションである」
　　　　と意図的に示す手法や
　　　　　作品を指します。

　日本語にすると、
　　「自己言及的小説」や
　　「自己批評的小説」になるようです｡

　出力内容が気になる方は、
　　上記ポストをご確認ください。
　　　もちろん、英語です😸
***
　では、【本題】です。

　今回は、
　　心の余裕が
　　　なくなっているサインを
　　　　チェックしましょう。

　こちらの記事を
　　参照しましたが、
　　　より細かいチェック項目と対応を
　　　　ChatGPTに出してもらいました｡
　　　　　[実は心に余裕が無くなっているサイン５選](https://news.yahoo.co.jp/expert/articles/c628ae683345595312cd64b1e3a9c55f5341319a)

　我々は、
　　日々の忙しさやストレスによって、
　　　知らないうちに、
　　　　心の余裕を失って
　　　　　いるかもしれません。

　気付かずに無理を続けると、
　　ストレスが蓄積し、
　　　精神的にも身体的にも
　　　　悪影響を及ぼしかねません。

　そうなる前に
　　チェックして
　　　対処しましょう。

　では、
　　リストを
　　　チェックしてください。

　別に、
　　チェック数を数える必要は
　　　ありません😸

***（ChatGPT）***
1. **他人への嫉妬やイライラが増える**  
   - 友人や同僚の成功や幸せを素直に喜べなくなった  
   - 他人と自分を比較しがちになった  
   - 些細なことでもイライラしやすくなった  

2. **やる気が低下する**  
   - 何をするにも「面倒くさい」と感じる  
   - 楽しめていた趣味がつまらなく感じる  
   - 仕事や家事が手につかなくなった  

3. **コミュニケーションが減る**  
   - 家族や友人との会話が減った  
   - LINEやメールの返信が億劫になった  
   - ひとりでいる時間が増えた  

4. **怒りやすくなる**  
   - 以前は気にならなかったことに怒りを感じる  
   - ちょっとしたことでカッとなる  
   - 怒ったあとに後悔することが増えた  

5. **笑顔が減る**  
   - 最近、自然な笑顔が出なくなった  
   - 周りから「疲れてる？」と言われることが増えた  
   - 鏡を見ると表情が硬くなっている  
***

　どうです？
　　何かに引っ掛かりましたか？

　そういう方は
　　対策をどうぞ。

***（ChatGPT）***
## **心の余裕を取り戻すための対策**

### **1. 他人と比較しない**  
   - 「自分は自分、人は人」と意識する  
   - 他人の成功を「自分の刺激」に変える  
   - SNSを見る時間を減らす  

### **2. 小さな行動から始める**  
   - 「5分だけ○○する」など、ハードルを低く設定する  
   - 「やる気が出ない＝心が疲れている」と理解する  
   - 無理せず、できることから取り組む  

### **3. 人との会話を意識する**  
   - 短時間でもいいので誰かと話す  
   - 気軽に雑談できる相手をつくる  
   - 「会話がめんどくさい」と思ったら要注意  

### **4. 怒りのコントロールをする**  
   - 怒りを感じたら**深呼吸を3回する**  
   - 瞑想やマインドフルネスを取り入れる  
   - 「本当に怒るべきことか？」と一度考える  

### **5. 笑顔を増やす**  
   - 意識的に鏡の前で笑顔を作る  
   - 「作り笑顔」でも脳はポジティブになる（心理学的効果あり）  
   - 楽しいこと・好きなことを思い出す  
***

　対策とはいえ、
　　たいしたことでも
　　　ありませんが、
　　　　やらないよりはマシです。

　“最近、イライラすることが多い”、
　　“会話が減ったかも”と感じたら、
　　　それは心が疲れているサイン。

　そんなときは、
　　・比較しない
　　・小さなことから始める
　　・誰かと話す
　　・深呼吸する
　　・楽しいことを思い出す
　　・笑顔を増やす
　　　を試してみましょう。  

　みなさんの
　　作品制作の糧に
　　　なれば、幸いです。

　今回は、ここまで。
【Linux】nmclliコマンド

# はじめに
こんにちは。私はアメリカ在住で、独学を通してエンジニアを目指している者です。
本日は現在学習中のLinuxコマンドの1つであるnmcliコマンドについてみていきたいと思います
今までは基本的なlinuxコマンドのみを覚えてきましたが、ネットワークを設定できるコマンドも理解しておくことで今後のAWS環境構築にも役に立つと考えています

## nmcliとは
nmcliは、LinuxにおけるNetworkManagerを操作するためのコマンドラインツールです。NetworkManagerは、システム内のネットワーク接続（有線、無線、モバイルブロードバンドなど）を一元管理するデーモンであり、nmcliを使うことで以下のような操作が可能になります。

* **ネットワークデバイスの状態確認**
  現在接続されているネットワークインターフェースや、その状態（接続中、未接続、管理対象外など）を一覧表示できます。
  ```unix
  nmcli device status
  ```
* **接続プロファイルの管理**
  NetworkManagerは各ネットワーク設定（接続プロファイル）を保存しています。nmcliを使ってプロファイルの一覧表示、追加、変更、削除が可能です。
  ```unix
  nmcli connection show
  nmcli connection add type ethernet ifname eth0 con-name "My Ethernet"
  nmcli connection modify "My Ethernet" ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1
  nmcli connection up "My Ethernet"
  ```

* **ホスト名やDNSの設定変更**
  nmcliはネットワークインターフェースの設定だけでなく、ホスト全体のネットワーク設定も扱えます。
  たとえばホスト名の変更は、以下のように実行できます。
  ```unix
  nmcli general hostname new-hostname.example.com
  ```
  また、接続プロファイルのパラメーターとして、IPv4/IPv6のDNSサーバーや検索ドメインの設定も行えます。
  ```unix
  nmcli connection modify "My Ethernet" ipv4.dns "8.8.8.8 8.8.4.4"
  ```

## nmcliの基本的な使い方
nmcliは「オブジェクト」と「コマンド」という統一された形式で操作します。基本の構文は以下の通りです。

```unix
nmcli [OPTIONS] OBJECT { COMMAND | help }
```

### 主なオブジェクト
* **general**
  システム全体の状態、ホスト名、ログレベル、権限などの情報を取得・変更できます。
  ```unix
  nmcli general status
  nmcli general hostname
  ```
* **device**
  ネットワークインターフェース（NIC）の状態表示や、接続、切断、一時的な設定変更を行います。
  ```unix
  nmcli device show
  nmcli device connect eth0
  nmcli device disconnect eth0
  ```
* **connection**
  各接続プロファイルの一覧表示、作成、変更、削除、有効化／無効化が可能です。
  ```unix
  nmcli connection show
  nmcli connection add type ethernet ifname eth0 con-name "Office LAN"
  nmcli connection modify "Office LAN" ipv4.method manual ipv4.addresses 192.168.10.50/24
  nmcli connection up "Office LAN"
  ```

### オプションの例
* **-t (terse)**
簡潔な出力形式で表示するため、スクリプト処理に向いています。

* **-p (pretty)**
見やすい人間向けの整形された出力が得られます。

* **-h (help)**
各オブジェクトやコマンドのヘルプを表示します。
```unix
nmcli connection help
```

## 具体的な設定例
### **1. ホスト名の変更**
ホスト名を変更するには、generalオブジェクトを使用します。

```unix
nmcli general hostname my-new-host.example.com
```
このコマンドを実行すると、システム全体のホスト名が「`my-new-host.example.com`」に変更されます。

### 2. DNSサーバーの設定変更
特定の接続プロファイルのDNSサーバー設定を変更する場合は、connectionオブジェクトで行います。たとえば、IPv4のDNSサーバーをGoogle Public DNSに変更するには：

```unix
nmcli connection modify "Office LAN" ipv4.dns "8.8.8.8 8.8.4.4"
```
変更後、設定を反映させるために接続を再起動します。

```unix
nmcli connection down "Office LAN" && nmcli connection up "Office LAN"
```
### 3. 静的IPアドレスの設定
DHCPではなく、固定IPアドレスを設定する場合は以下のようにします。

```unix
nmcli connection modify "Office LAN" ipv4.method manual ipv4.addresses 192.168.10.50/24 ipv4.gateway 192.168.10.1 ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection up "Office LAN"
```

## まとめ
nmcliは、Linuxシステムにおけるネットワーク管理をコマンドラインから柔軟に操作できる非常に汎用性の高いツールです。
* ネットワークデバイスや接続プロファイルの状態確認
* 新規接続の作成・既存接続の変更・削除
* ホスト名やDNS、IPアドレスなどシステム全体のネットワーク設定の変更
【Discord】サーバーに導入していないはずのBOTのコマンドで荒らされた時の対処法

こんにちは、りょうです。
今回はサーバーに導入していないしていないBOTのコマンドで荒らされた場合の対処方法の紹介です。
最近それ専用の荒らしBOTも作られているのでやられる前に早めの対策をしておくと良いと思います

# なぜ導入していないはずなのに実行できるのか
まずDiscordのBOTには以下の2種類があります
- サーバーに導入して使うBOT(こっちが普通のやつ)
- ユーザーに導入して使うBOT(こっちが今回話す方)

ユーザーインストールという機能で、そのBOTが導入されていない場所でもスラッシュコマンドを実行することができるようになります。
これを悪用した荒らしが今回のケースになります。このタイプの場合BANやキックができません。
なので正しい対処法を知っておくことが大切です

# 対処法
**ユーザーインストールコマンドを実行できないようにする**(他の人には見えないようにする)ことが必要です。

1: サーバー設定→ロール→メンバー用のロール(もしくはeveryone)を選択。
2: 権限設定を開く

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818367/f798eff1-b775-4323-aec5-81871c6c004e.png)

3: 下にスクロールして**外部のアプリを使用**の項目をオフにする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818367/b7856915-03c3-4165-bf78-d5bd5a7c8657.png)

これで完了です。ただし、個別に設定されている場合はそのチャンネルでは引き続き使用できます
あとは当然ですがコマンド実行した人BANすれば終わります

# 実行者の確認
実行者はコマンドのメッセージの **`インタラクション情報を表示`** からかくにんできます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818367/8b36a902-f227-4a89-bfd8-c8719e92bd00.png)

# BOT開発者側での対応
ユーザーインストールコマンドの場合はephemeralをかけるのがいいんじゃないでしょうか。
あと特に何も設定しないとサーバー、DM等どこでも使えるので制限するのもいいと思います。
**discord.js**
```js
// ...
  data: new SlashCommandBuilder()
    .setName('command')
    .setDescription('command')
    .setContexts(InteractionContextType.Guild) //  ここで実行場所を決める
    .setIntegrationTypes(ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall)　// ここでGuild, Userを決める
```
**discord.py**
```py
# ...
from discord.app_commands import (
    CommandTree,
    allowed_installs, guild_install, user_install, # ここでサーバー、ユーザーどちらにインストールするか決める
    allowed_contexts, dm_only, guild_only, private_channel_only, # ここで使用できる場所を決める
)
```

# まとめ
今回はユーザーインストールコマンドを悪用した荒らしへの対処法の紹介でした。
正直使うこと無いんで権限オフにしておくのがいいと思います

もしわからないことがあればコメントしてもらえれば。

**Discordに湧く荒らしの情報や対策方法の共有をしている自鯖↓**

https://discord.com/invite/ESRGwGQhxc
ベイズ統計による十分統計量の定義について

十分統計量とは、確率変数$X$の値から未知のパラメータ$\theta$を推定する問題において、十分な($X$それ自身と同等の)情報を持つ統計量である。たとえば、正規分布に従う母集団からの独立な$N$個のサンプル$X = \left(X_1, X_2, \dots, X_N\right)$が得られたとき、母集団の平均を推定する上では標本平均$\frac{1}{N}\sum_i X_i$の情報があれば十分であり、他の($X_1$と$X_2$の具体的な値や順番などの)情報は必要ない。このようなとき、標本平均は十分統計量であるとされる。

十分統計量は、ベイズ統計の考え方を用いて定式化することができる。つまり、「$X=x$という条件が与えられることによって$\theta$の分布がどのように変化するのか」という観点で、確率変数$X$が持つ$\theta$についての情報を捉えることができる。この考え方に基づくと、($\theta$の推定に関して)$T(X)$が$X$と同等の情報を持っているということは、$\theta$の事後分布が等しいということであり、以下のように表せる。

```math
    P\left(\theta \mid X=x\right) = P\left(\theta \mid T(X)=T(x)\right)\tag{1}
```

ベイズの定理を用いて、この式を以下のように変形することができる。

```math
\begin{align}
    P\left(\theta \mid X=x\right) &= P\left(\theta \mid T(X)=T(x)\right) \\
    \frac{P\left(X=x \mid \theta\right)P\left(\theta\right)}{P\left(X=x\right)}
        &= \frac{P\left(T(X)=T(x) \mid \theta\right)P\left(\theta\right)}{P\left(T(X)=T(x)\right)} \\
    \frac{P\left(X=x \mid \theta\right)}{P\left(T(X)=T(x) \mid \theta\right)}
        &= \frac{P\left(X=x\right)}{P\left(T(X)=T(x)\right)} \\
    P\left(X=x \mid T(X)=T(x), \theta\right) &= P\left(X=x \mid T(X)=T(x)\right)
\end{align}
```

従って、十分統計量は以下の式によって定義することもできる。

```math
    P\left(X=x \mid T(X)=T(x), \theta\right) = P\left(X=x \mid T(X)=T(x)\right)\tag{2}
```

十分統計量の定義として一般的に用いられているのは式(2)の方だが、個人的には、「$\theta$に関する$X$の情報を$T(X)$がすべて持っている」という性質が分かりやすく見て取れるのはベイズを用いた式(1)の方ではないかと思う。

(参考文献: https://en.wikipedia.org/wiki/Sufficient_statistic)
【SDK-AcapLib2/C#】AcapLib2ClassLibrary.dllの参照設定を追加する方法

アバールデータの画像入力ライブラリ(AcapLib2)の.NET Framework用ライブラリ(AcapLib2ClassLibrary.dll)を追加する方法をまとめました。

以下手順となります。



## AcapLib2ClassLibrary.dllの追加方法

### Step1 : 参照設定
ソリューションエクスプローラーより<b>参照</b>を右クリックします。<br>
![00_ソリューションエクスプローラー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4014169/ff96d4a0-356d-45a4-9e1b-82a5bbe0f8b4.png)
<br>

### Step2 : 参照の追加
<b>参照の追加</b>を選択します。<br>
![01_参照の追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4014169/c25aa923-46a0-47d6-a81b-151c8d2cd1cd.png)
<br>
<br>

### Step3 : 参照マネージャの設定(1)
参照マネージャより参照を選択します。<br>
![02_参照マネージャ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4014169/3bb76f71-be09-4547-8b80-0d84a6c0bbca.png)
<br>
<br>

### Step4 : 参照マネージャの設定(2)
以下のパスにAcapLib2ClassLibrary.dllが格納されていますので追加します。<br>

```
//AcapLib2ClassLibrary.dllの格納先
C:\AVALDATA\SDK-AcapLib2\Sample\Others\dotNetFrameworkClassLibrary\AcapLib2\bin\Release
```
![03_参照選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4014169/a9d3a27d-2960-4a2f-b82c-c237a2bbdeb5.png)
<br>
<br>

### Step5 : 参照マネージャの設定(3)
AcapLib2ClassLibrary.dllにチェックが付いていることを確認してOKを選択します。<br>
![04_参照確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4014169/84397ab9-fc14-4bed-ba2e-d5faa54bf8fe.png)
<br>
<br>

### Step6 : 参照の確認
ソリューションエクスプローラーにAcapLib2ClassLibraryが追加されました。<br>
![05_ソリューションエクスプローラー確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4014169/7f162db7-4d88-413c-9d75-d73e01a3f890.png)
<br>
<br>

### Step7 : ソースに記述  
ソース上にusing Avaldata;と記述することで、AcapLib2の各関数が使用可能になります。<br>

```csharp
using System;
using System.Windows.Forms;
using Avaldata;//追加します

namespace Snap
{
    class Program
    {

        [STAThread]
        static void Main(string[] args)
        {
            //ボード情報取得
            AcapLib2.ACAPBOARDINFOEX bi = new AcapLib2.ACAPBOARDINFOEX();
            int board = 0, ch = 0;

            //ここにソースを書く
        }
    }
}

```
cscの作法 その573

# 概要
cscの作法、調べてみた。
練習問題やってみた。

# 練習問題
C# で USBドライブのシリアルナンバーを判定せよ。

# サンプルコード

```
using System;
using System.Management;

namespace Test
{
	class Program {
		private static void ShowDevices() {
			var mos = new ManagementObjectSearcher("Select * from Win32_DiskDrive where InterfaceType='USB'");
			foreach (var mo in mos.Get())
			{
				var pin = mo["SerialNumber"].ToString();
				Console.WriteLine(pin);
				if (pin == "25C21150000600C1")
				{
					Console.WriteLine("1");
				}
				else
				{
					Console.WriteLine("0");
				}
			}
		}
		static void Main(string[] args) {
			ShowDevices();
		}
	}
}

```

以上。
【一般】クエリのフィルター項目を参照するコントロールタグ

# はじめに #
パブリッシュドレポート（WEBレポート）を使用してカスタムHTMLページを作成する際、ユーザーに値を入力させ、それらをカスタムHTMLに渡したい場合があります。

その場合、コントロールタグを使用してクエリのフィルター項目を参照することができます。

パブリッシュドレポート（WEBレポート）のクエリで定義されたフィルターは、レポートがブラウザーに表示される際にはプロンプトとして機能し、ユーザーがその値を選択できるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/96bb6640-7241-47c2-9be6-f5dac8cd5da4.png)

# 実践 #
ここでは、フィルターの値を表示するためのテーブル要素と、選択した会社を表示するためのdiv要素が準備されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/2de448b5-1452-4e15-b05b-e2f5adf2a72a.png)
注：このスクリプトではjQueryが使用されており、上の画像でjQueryライブラリが参照されていることがわかります。jQueryライブラリはSharperlightにバンドルされています。

ご覧の通り、コントロールタグがあります。
```
{*Filter[@<<フィルター項目の名前をここに記入>>]1}
```
実行時に、コントロールタグは対応する値で置き換えられます。

- {*Filter[@DocumentInternalID]1} は、「DocumentInternalID」という名前のフィルター項目を参照し、「1」は「FROM」を意味し、「2」は「TO」を意味します
- {*Filter[@CustomerCode]1} は、「CustomerCode」という名前のフィルター項目を参照し、「1」は「FROM」を意味し、「2」は「TO」を意味します
- {*Filter[@YearPeriodCode]1} は、「YearPeriodCode」という名前のフィルター項目を参照し、「1」は「FROM」を意味し、「2」は「TO」を意味します
- {*Filter[@Canceled]1} は、「Canceled」という名前のフィルター項目を参照し、「1」は「FROM」を意味し、「2」は「TO」を意味します
- {*Filter[@DocumentDate]1} は、「DocumentDate」という名前のフィルター項目を参照し、「1」は「FROM」を意味し、「2」は「TO」を意味します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/02f229da-9c5c-4a0f-b3e7-ee4ba72ece84.png)

実行時には、次のようになります；
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/564b140d-314a-400d-b0da-8cbe664c21da.png)

ページが読み込まれると、スクリプトが実行され、選択した会社がdiv要素に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/0a95f784-ff6d-473c-a774-c574d6104a4f.png)

実行時には、次のようになります；
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/660d80ef-5d89-4780-8be2-d61a58836951.png)

表示されている「Document Date」の値を見てください。「TO」の値は、フォーマット付きのコントロールタグが使用されているため、フォーマットされています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/00adeb5a-3178-4ee7-92ba-2654e90294b1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/3910119c-cba9-4059-b3ca-8eb45dd04f19.png)

# あとがき #
これは、ユーザーに値を入力させ、それをカスタムHTMLに渡したい場合に役立ちます。

フィルター項目の名前はコントロールタグで使用されます。

レポートがカスタムHTMLの場合、クエリは1行のみを返すように設計する必要があることに注意してください。最初の行のみが有効と見なされます。

クエリは複数行を返すように設計できますが、そうすると最初の行のみが有効と見なされ、他の行は無視されますが、パフォーマンスが低下する可能性があります。
uvをDockerで使う方法

uvをDockerで使うときには、uvの公式ドキュメントに模範的なDockerfileが用意されているのでそれを確認しましょう、というのが本記事の全てです。

- [ローカル環境でコンテナを起動して、ローカルの修正をコンテナに反映する方法](https://docs.astral.sh/uv/guides/integration/docker/#configuring-watch-with-docker-compose)
- [本番用のイメージを、マルチステージビルドで作成する方法](https://docs.astral.sh/uv/guides/integration/docker/#non-editable-installs)