OmniAICreator/Qiita-1.07M huggingface dataset:
GitHubのコミットメッセージに最適！🚀 :fix: や :update: などのプレフィックス

# GitHub コミットメッセージの最適化ガイド 🚀

GitHub のコミットメッセージで `:fix:` や `:update:` などのプレフィックス（プレフィックス付き絵文字タグ）は、コミットの内容を簡潔に表すために使用されます。適切に使うことで、チーム開発がスムーズになり、履歴の管理が容易になります。

## **🔹 よく使われるプレフィックスの意味**

### **🛠 `:fix:` バグ修正**
バグや不具合を修正する際に使用。

**例:**
```bash
:fix: ログイン時の認証バグを修正
```

### **🔄 `:update:` 機能の更新**
小規模な変更や改善を行った場合に使用。

**例:**
```bash
:update: UIデザインを調整
```

### **✨ `:feat:` 新機能の追加**
新しい機能や大きな改善を行った場合に使用。

**例:**
```bash
:feat: パスワードリセット機能を追加
```

### **♻ `:refactor:` リファクタリング**
コードの整理や最適化を行った場合に使用。

**例:**
```bash
:refactor: API コールの最適化
```

### **📄 `:docs:` ドキュメント更新**
README やコメントの変更を行った場合に使用。

**例:**
```bash
:docs: README にセットアップ手順を追加
```

### **🔧 `:chore:` 雑務的な変更**
依存関係の更新や CI 設定の変更など、機能には影響しない変更を行った場合に使用。

**例:**
```bash
:chore: ESLint の設定を変更
```

---

## **🚀 コミットメッセージを改善するメリット**

### ✅ **履歴の管理がしやすくなる**
適切なプレフィックスをつけることで、コミット履歴を一目で理解しやすくなります。

### ✅ **チームメンバーとの連携がスムーズに**
他の開発者がどんな変更を行ったのかが直感的に分かり、コードレビューやバグ修正が効率的になります。

### ✅ **リリースノートの作成が楽になる**
プレフィックスを統一することで、自動的に変更内容を分類でき、リリースノートの作成がスムーズになります。

---

## **🎯 ベストプラクティス：Git コミットメッセージの書き方**

1. **英語 or 日本語？** → チームでルールを決める（例：`:fix: Fix login issue` or `:fix: ログイン問題を修正`）
2. **動詞の形を統一する** → 「修正した」「改善した」ではなく、「修正」や「改善」に統一
3. **コミットの粒度を適切に** → 1つのコミットには1つの変更内容を
4. **Issue 番号を関連付ける** → `:fix: #123 ログイン時の認証バグを修正`
5. **強調したい場合は詳細を追加** → `:feat: API エンドポイントを追加 (ユーザー情報取得)`

---

## **📌 Conventional Commits との関係**

Git のコミットメッセージには、[Conventional Commits](https://www.conventionalcommits.org/) という標準規格もあります。

例えば、`feat` や `fix` などのキーワードは以下のように書くこともできます。

```bash
feat: ユーザープロフィールページを追加
fix: 検索機能が動作しないバグを修正
chore: CI 設定を更新
```

この規則に従うことで、より多くのツールと連携しやすくなります。

---

## **🔍 まとめ：GitHub コミットメッセージを最適化しよう！**

✔ `:fix:`, `:update:`, `:feat:` などのプレフィックスを活用して、分かりやすいコミットを心がける。
✔ チーム内でルールを統一し、履歴を整理しやすくする。
✔ `Conventional Commits` を参考にしながら、最適な命名規則を採用する。

正しいコミットメッセージを習慣づけることで、チーム開発の効率が向上し、コード管理がスムーズになります。ぜひ試してみてください！ 🚀
Could not create or update Cloud Run service striperedirectreauth, Container Healthcheck failed. Revision 'OOOOOOOOO' is not ready and cannot serve traffic. 

firebaseのcloud functionsで

```
firebase deploy --only functions
```
をしようとした時に以下のようなものが出て困ったので残しておきます。

```
Could not create or update Cloud Run service striperedirectreauth,
Container Healthcheck failed. Revision '⚪︎⚪︎⚪︎' is not ready and cannot serve traffic. 
The user-provided container failed to start and listen on the port defined provided by the PORT=8080 environment variable within the allocated timeout. 
This can happen when the container port is misconfigured or if the timeout is too short. 
The health check timeout can be extended. Logs for this revision might contain more information.
```

ターミナルで
```
cd functions
```

をしてから

```
npm install axios
```
とか
```
npm install 〇〇 〇〇 〇〇
```
とりあえずcloud functionsで使うやつを片っ端から〇〇に当てはめていけばいいと思います

flutter webでもflutterでも同じだと思います。
（多分）
初心者(数学が優秀な人)にFizzBuzz書かせるととても面白かった

Pythonです。受験が難しいことで有名な中学校の2年生です。英語カテキョのついでに教える流れになりました（数学は超得意な生徒さん）

# 教えた関数
```Python
print()
input()
int()
if
else
elif
=
==, !=
四則演算(+, -, *, /)
```
for, whileはまだ教えていません。
%, //, &&, ||も教えていません（こんなことやりたい！って言われたらそのとき教えようと思っていました）
defも教えていません

一応、ifが発火したらそれ以降のelseとかはスキップされるよーなどの基礎は簡単に、本当に簡単に教えました

# FizzBuzzの第一歩
僕「まずは3の倍数でFizzと出力するようにしよう！」
生徒「わかった！」

```Python
N = input()
M = int(N)
if {Mが3の倍数}:
   print("Fizz")
```
生徒「うーん」
僕「（まだ%を教えてないもんな）」

生徒「！！」

```Python
N = input()
M = int(N)
if int(M / 3) == M / 3:
    print("Fizz")
```

生徒「動いた！！」
僕「天才かよ(面白いからこのままにしよ)(てか浮動小数点とintの比較でもpythonってTrue返すんか)」

# 5の倍数
僕「次に5の倍数を書こうね！
生徒「了解！」

生徒「......あれ？先に15の倍数から書いたほうが良くないですか？」
僕「気づくの早くない？？？？？？」

```Python
N = input()
M = int(N)
if int(M / 15) == M / 15:
    print("FizzBuzz")
elif int(M / 3) == M / 3:
    print("Fizz")
elif int(M / 5) == M / 5:
    print("Buzz")
```

# 感想
優秀な人っているんですね。親御さんに許可をもらって、プログラミング教えてよかった。
ちなみにforを教えたら即完成させました（そりゃそうか）
将来優秀なエンジニアになりますように。
何度やっても忘れるSSH化の備忘録

PCを買い替える度に設定方法を調べているので備忘録で残しておきます。


## 新しいSSHキーを生成する


下記をコピペして、メールアドレスは自分のものに書き換える


```
ssh-keygen -t ed25519 -C "your_email@example.com"
```


公開鍵作成されたことが表記される
```
Generating public/private ed25519 key pair.
```

パスワードを入力
```
Enter passphrase (empty for no passphrase):
```



こうなればOK!!
```
Your identification has been saved in /Users/you/.ssh/id_ed25519
Your public key has been saved in /Users/you/.ssh/id_ed25519.pub
The key fingerprint is:
SHA111:iLbtddYTPIJr6T+EUuJY5b8i4c9KUpTeA/zB+Xt111w example@gmail.com
The key's randomart image is:
+--[ED25519 111]--+
|            o.   |
|           o o. .|
|          . + o+ |
|     . .  +o.+ oo|
|    o . S* oB.. +|
|   . o  o +.o+.+|
|    . ....=o+. E+|
|     . .o. o.. +|
|      .  o++..   |
+----[SHA111]-----+

```


## 新しいSSHキーを生成する

下記を実行する

```
eval "$(ssh-agent -s)"
```


ファイルが存在するか一応確認する

```
open ~/.ssh/config
The file /Users/you/.ssh/config does not exist.
```


ない場合は作成
```
touch ~/.ssh/config
```


ある場合は開く
```
open ~/.ssh/config
```


これを貼り付け
```
Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519
```

変更が反映されているか確認
```
open ~/.ssh/config
```

下記をコピペして、SSH 秘密鍵を ssh-agent に追加して、パスワードをキーチェーンに保存する
```
ssh-add -K ~/.ssh/id_ed25519
```


## Githubアカウントへの新しいSSHキーの追加

下記をコピペして実行する

```
pbcopy < ~/.ssh/id_ed25519.pub
```
pbcopyコマンドが使えなければ、直接ファイルを開いてコピーする

![スクリーンショット 2025-03-26 14.32.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2704697/44542126-c916-4057-8309-a463ccb0bade.png)


こんな感じに表示されるので、コピーする
```
ssh-ed25519 hogefugahogefugahogefugahogefugahogefugahogefugahogefugahogefugaho example@gmail.com
````


あとはGihubの設定から SSH and GPG keys を選択し先ほどコピーした物を貼り付けます
![スクリーンショット 2025-03-26 14.34.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2704697/cbeb7545-58e2-47ba-bdbd-bb47f946226b.png)


SSH keys 画面に下記のように追加されていればOK
![スクリーンショット 2025-03-26 14.37.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2704697/ae146cb3-b6a6-404e-8d07-8e228ade5b03.png)

## SSH 接続をテストする

下記を実行する

```
ssh -T git@github.com
```


このように表示されればOK!!!
```
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
```

最後に一応git cloneが実行できるか確認してみましょう！
【Azure】VMのファイアウォールを復元したらBastion接続できなくなった話

---
# 【Azure】間違って「Microsoft Defender ファイアウォールの設定を復元」したら、VMに繋がらなくなった話【復旧手順】

## はじめに

Azureで構築したWindows仮想マシン（以降、VM）上で作業していたときに、  
うっかり「Microsoft Defender ファイアウォールの設定を復元」ボタンを押してしまい、  
VMが**Bastionでも接続不能**になるトラブルが発生しました。

:::image  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/f205611e-a443-47b0-92fc-6726359a602a.png)
:::

そのときの調査内容と、最終的な復旧手順をまとめます。

---

## Bastionでも接続不可に

設定を復元した直後から、Bastion経由で接続しようとすると以下のエラーが発生：

> **"The target machine is either currently unreachable..."**

:::image  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/95fd65fc-9217-4075-8c9a-5938a1256339.png) 
:::

### 🔍 Bastionとは？

Azure Bastionは、パブリックIPを使わずに仮想マシンにリモートデスクトップ（RDP）接続できる**セキュアな踏み台サーバー機能**です。  
内部的には**TCP 3389番ポート**を利用してRDP接続を行います。  
つまり、**RDPのファイアウォール設定が無効になっていると接続に失敗**します。

---

## PowerShellでファイアウォール設定を確認

Azureポータルの「実行コマンド」→「RunPowerShellScript」から、  
次のコマンドでRDP関連のファイアウォールルールを確認しました：

```powershell
Get-NetFirewallRule -DisplayGroup "Remote Desktop"
```

:::image  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/73a35ea9-8669-4442-b2b1-cf26b785917e.png)

:::

### 🔍 実行結果から判明したこと

```text
DisplayName   : Remote Desktop - User Mode (TCP-In)
Enabled       : False
DisplayName   : Remote Desktop - User Mode (UDP-In)
Enabled       : False
```

RDP接続に必要な**TCP 3389番ポートの受信ルール（Allow）**は存在していたが、**Enabled = False** になっていました。  
つまり、**ポートは存在するが、ファイアウォールでブロックされていた**状態です。

---

## RDP受信ルールを再度有効化

以下のコマンドで、Remote Desktop関連のすべてのファイアウォールルールを有効化：

```powershell
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
```

:::image  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/5c029feb-a8d5-4c23-b8cb-40577ed954e1.png)

:::

実行後、すぐに**Bastion接続が復旧**しました！

---

## VM内でも設定が反映されていることを確認

その後、VMにログインしてGUIからファイアウォールの「受信の規則」を確認すると、  
「リモート デスクトップ - ユーザー モード（TCP 受信）」が**有効**になっていました。

:::image  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/0aaffef6-5b60-4de8-bdd1-d96fe488bf76.png)
 
:::

---

## VM作成時のRDP設定との関係性

Azure VMを作成する際に、「受信ポートの選択」でRDP (3389) を許可していました。

:::image  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/441038ca-8769-494a-993e-9a7dae6f1fbf.png)

:::

この設定、ずっとNSG（ネットワークセキュリティグループ）側だけの設定かと思ってたんですが、
もしかして…VM内部のWindows Defenderファイアウォールにも影響を与えてる？
（つまり、3389番の受信ルールを最初から有効にしてくれてる？）

だとしたら、今回うっかり「設定の復元」を押してしまったことで
Defender側の3389設定が無効化されたのが、Bastion接続できなくなった直接的な原因なのかもしれません。





> ❗補足：NSG（ネットワークセキュリティグループ）で3389を許可していても、  
> OS内部のファイアウォール（Defender）でブロックされていれば通信できません。

---

## おわりに

VMで「Microsoft Defender ファイアウォールの設定を復元」すると、**リモート接続用のポートも無効化**されるため、  
**Bastionすら使えなくなる**という落とし穴にハマりました。

今回はAzureポータルの「実行コマンド」機能が命綱となって復旧できましたが、  
今後は復元操作をする際は事前に確認を取るよう注意したいと思います。

---
箱庭でUnityを動かしてみる（10日目）

# 2025/03/26(10日目)実施内容
## コンパイルエラー潰し
きっちり潰して，ゲームスタートと同時に参照可能にした

## Run
時刻を入力として受け取り，その時刻に合った処理を行う

# とりあえず...
今日までで一旦この活動を終了します
続くかも...？
AWS初学者の私がAWS Certified Cloud Practitionerに合格できました

# 資格取得理由
AWSの知識が皆無だった私は昨年から少しずつ、ダラダラとAWSの勉強をしてはやめてしてはやめてを繰り返していました。

ただ、勤務している会社の方針もあり、とりあえず試験を予約して受けるだけ受けてみようと決めました。

# 勉強内容
### 1. AWS Skill Builderを活用して、AWS全体の情報に一通り触れる
- 実際に使用したサイト: [AWS Skill Builder]()
- 上記のサイトでAWS クラウドの概念、AWS のサービス、セキュリティ、アーキテクチャ、料金、サポートについて学習することが可能
- 各レッスンごとにおさらいを兼ねた演習問題も出題されるので確認もしやすい。また、すべてのレッスンが完了した後も全体を通しての演習問題が出題されるので、勉強した知識についても再度確認ができる
- 参考：[模擬試験](https://explore.skillbuilder.aws/learn/courses/16792/aws-certified-cloud-practitioner-official-practice-question-set-clf-c02-ri-ben-yu/lessons/168810/official-practice-question-set-aws-certified-cloud-practitioner)


### 2. 参考書を使って知識の深掘り
- 今回使用した本：[AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー](https://www.amazon.co.jp/AWS%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-AWS%E8%AA%8D%E5%AE%9A-%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%BC-%E5%B1%B1%E4%B8%8B-%E5%85%89%E6%B4%8B/dp/4797397403)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606285/f20a3d98-5658-43c7-9036-a0f123a0a5c2.png)

- 基本的には図解等もあったので分かりやすかった印象
- 1の学習後ではあった後なのですんなり読めた可能性もあり、初めてAWSの勉強する方にとっては少しテンションが下がりそうなものになっているのかなといった印象でした

### 3. Udemyで模擬試験
あとは、模擬試験を解くだけでした。
- 基本レベルが2つ、応用レベルが4つの計６つをひたすら解く
- 解説付きかつ、回答後すぐに解説が確認できる演習モードと本番の試験と同様の問題数と時間を計測しながら行える試験モードがあり、タイミングや状況に応じて使い分けて模擬試験を実施できたのでかなり良かった


どれくらいの正答率であれば自信が持てるかは人によるとおもいますが、個人的には基本レベルは90%以上、応用レベルは80%以上かつ、それぞれの問題の回答について軽く解説できる程度あれば余裕で合格できるレベルかなと思いました。

実際に使用したコース：[【CLF-C02版】この問題だけで合格可能！AWS 認定クラウドプラクティショナー 模擬試験問題集（6回分390問)](https://www.udemy.com/course/aws-4260/)

# 最後に
合格までに費やした時間は取得しようと思ってから実際に取得するまでは数年かかりました
ただ、実際にきちんと取り組み始めてから合格するまでは１ヶ月前後でした。
毎日、30分~1時間勉強すれば１ヶ月もかからずに資格取得が可能なのかなと
AWSの知識がほぼ皆無な私でも短期間で取得が可能でしたので、大半の人が取得可能なものなんだろうなと感じました。

行動を起こすことが何より重要なんだなとこの試験を通して改めて認識しました。
試験を予約することで、これまでやる気にならなかった勉強がお金を無駄にしたくないしやるかと思えるようになり最終的には資格取得につながったと思います。

せっかくなので、AWSの知識をつけるついでに他の資格にもチャレンジしてみようかなと思います

最後まで読んでいただきありがとうございました。
あくまで個人の意見、勉強方法ですので、参考までにしていただけると幸いです。
【まるっと解説】スレッドフロート型掲示板とは何か？比較しながらまとめてみる。

## スレッドフロート型掲示板とは何か？

### スレッドフロート型掲示板の概要
スレッドフロート型掲示板とは、各ユーザーが自由にスレッド（トピックのようなもの）を作成でき、スレッド内でレスを投稿するとそのスレッドが掲示板上部に「フロート（浮上）」する仕組みを持つ掲示板を指すとのこと。

:::note info
2ch（現5ch）とかRedditとかがそう。
ひろゆきさん曰く**とほほ**さん（とほほのWWW入門でお馴染み）がスレッドフロート型掲示板の日本における**元祖**らしいです。
:::

### 歴史的背景（何故主流になったの？）
スレッドフロート型掲示板の起源は、1990年後半～2000年代初頭のインターネット普及期である。
・1999年、ひろゆきさんが海外の掲示板を参考に匿名性とスレッドの浮上機能を組み合わせた2chをリリースし爆発的な人気を獲得しました。

・匿名で手軽に書き込め、関心が高いトピックが自動で目立つところに移動する仕組みがユーザーの継続利用につながったそう。

### ふわっと技術解説＆動作原理など

・**スレッド**：主にRDBを用いスレッドIDでレスを管理。
・**レスの管理**：投稿日時順にインデックスを作成、スレッドごとにレス番号を自動で付与。
・**スレッド浮上の仕組み**：スレッドが最後に更新された日時を基準に動的に並び替える。

### 他サービスとの比較
| 比較軸 | スレッドフロート型掲示板 | SNS(X/Twitter) | チャット系（discord） |
|:-:|:-:|:-:|:-:|
|リアルタイム性|中くらい（人気スレは性質上フロートするため）|   非常に高い| 非常に高い|
|情報の保存性|高い（スレッド単位で整理）|低い（有益な情報も流れる）|中くらい|
|匿名性|非常に高い|低い| 低い|
|議論の集中性|非常に高い| 低い|中くらい|


### 参考文献（参照日2025年3月26日）

https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%E5%9E%8B%E6%8E%B2%E7%A4%BA%E6%9D%BF
【WPプラグイン】［MTS Simple Booking］予約品目の本文を表示させるカスタマイズ

## はじめに

MTS Simple Bookingプラグインでは、デフォルトでは予約品目の本文（`post_content`）が予約フォームに表示されません。今回は、予約品目の本文を予約フォームに表示させるためのカスタマイズ方法をご紹介します。

## カスタマイズの手順

### 1. 予約品目データの取得部分の修正

まず、`mtssb-article.php`ファイル内の`get_the_article()`メソッドを修正して、`post_content`フィールドを取得するようにします。

```php
static public function get_the_article($article_id=0) {
    global $wpdb;

    $sql = $wpdb->prepare("
        SELECT ID AS article_id,post_title AS name,post_content,post_type,post_status,
            m1.meta_value AS timetable,m2.meta_value AS restriction,m3.meta_value AS capacity,
            m4.meta_value AS quantity,m5.meta_value AS minimum,m6.meta_value AS maximum,
            m7.meta_value AS count,m8.meta_value AS addition
        FROM {$wpdb->posts}
        LEFT JOIN {$wpdb->postmeta} AS m1 ON m1.post_id=ID AND m1.meta_key='timetable'
        // ... 以下省略 ...
```

ポイント：
- SQLクエリのSELECT句に`post_content`を追加
- これにより予約品目の本文データが取得可能に

### 2. 予約フォームでの表示部分の追加

次に、`mtssb-booking-form.php`ファイル内の予約内容確認部分に本文を表示するコードを追加します。

```php
<p><?php echo esc_html($this->article['name']) ?><br />
    <?php if (!empty($this->article['post_content'])) : ?>
        <?php echo nl2br(esc_html($this->article['post_content'])) ?><br />
    <?php endif; ?>
    <?php echo apply_filters('booking_form_date', date('Y年n月j日 H:i', $this->thetime), $this->thetime) ?>
</p>
```

ポイント：
- 予約品目名の下に本文を表示
- `nl2br()`関数で改行を`<br>`タグに変換
- `esc_html()`でXSS対策
- 本文が空の場合は表示しない条件分岐

## カスタマイズのメリット

1. 予約品目の詳細情報を予約フォーム上で直接確認可能
2. 予約時の注意事項や特記事項を効果的に伝達
3. ユーザーの理解度向上による予約ミスの防止

## 注意点

1. 本文が長すぎる場合、フォームのレイアウトが崩れる可能性があります
2. HTMLタグを含む本文は、セキュリティ対策のためエスケープされます
3. 本文の装飾はプレーンテキストのみとなります

## まとめ

このカスタマイズにより、予約品目の本文を予約フォームに表示することができ、ユーザーへのより詳細な情報提供が可能になります。必要に応じて、CSSでスタイリングを追加することで、さらに見やすい表示にすることもできます。

以上が、MTS Simple Bookingプラグインで予約品目の本文を表示させるためのカスタマイズ方法です。
Unity-Coroutineの使う場面の例５選

# UnityでのCoroutineの活用シーン

Coroutine（コルーチン）は、Unityで時間の経過とともに処理を実行する際に便利な仕組みです。一定時間後に処理を実行したり、アニメーションのように徐々に値を変化させたりする場合に活用されます。

---

## 1. 一定時間待ってから処理を実行
### 例: 敵の攻撃後にクールダウンを入れる
```csharp
IEnumerator AttackCooldown()
{
    canAttack = false;
    yield return new WaitForSeconds(2.0f); // 2秒待つ
    canAttack = true;
}
```
⏳ **→ `WaitForSeconds(n)` を使うことで、指定した時間が経過するまで処理を待機できます。**

---

## 2. 徐々に値を変化させる（アニメーション・エフェクト）
### 例: フェードイン・フェードアウト
```csharp
IEnumerator FadeOut(CanvasGroup canvasGroup)
{
    while (canvasGroup.alpha > 0)
    {
        canvasGroup.alpha -= Time.deltaTime; // 少しずつ透明にする
        yield return null; // 次のフレームまで待つ
    }
}
```
🎨 **→ `Time.deltaTime` を使って、毎フレーム少しずつ値を変化させることができます。**

---

## 3. 一定間隔で処理を繰り返す
### 例: 敵が定期的に攻撃する
```csharp
IEnumerator EnemyAttack()
{
    while (true) // 無限ループ
    {
        Attack(); // 攻撃処理
        yield return new WaitForSeconds(3.0f); // 3秒ごとに攻撃
    }
}
```
🔄 **→ `while(true)` を使用すると、特定の間隔で処理を繰り返すことができます。**

---

## 4. 外部リソースをロードする
### 例: Webから画像をダウンロード
```csharp
IEnumerator LoadImage(string url)
{
    UnityWebRequest request = UnityWebRequestTexture.GetTexture(url);
    yield return request.SendWebRequest(); // ダウンロード待機

    if (request.result == UnityWebRequest.Result.Success)
    {
        Texture texture = ((DownloadHandlerTexture)request.downloadHandler).texture;
        myRenderer.material.mainTexture = texture; // 取得した画像を適用
    }
}
```
🌍 **→ `UnityWebRequest` を利用することで、非同期でのリソースダウンロードが可能になります。**

---

## 5. 物理的な動きをゆっくり変化させる
### 例: ドアをゆっくり開く
```csharp
IEnumerator OpenDoor()
{
    float elapsedTime = 0f;
    float duration = 2f; // 2秒かけて開く

    while (elapsedTime < duration)
    {
        door.transform.rotation = Quaternion.Lerp(startRotation, endRotation, elapsedTime / duration);
        elapsedTime += Time.deltaTime;
        yield return null; // 次のフレームまで待つ
    }
    door.transform.rotation = endRotation; // 最終位置にセット
}
```
🚪 **→ `Quaternion.Lerp` を使用すると、回転を滑らかに補間できます。**

---

## まとめ
| **用途** | **説明** | **関数** |
|----------|---------|---------|
| **一定時間後に処理を実行** | 例: クールダウン | `WaitForSeconds(n)` |
| **徐々に値を変化させる** | 例: フェードイン・アウト | `Time.deltaTime` |
| **一定間隔で処理を繰り返す** | 例: 敵の定期攻撃 | `while(true) + WaitForSeconds(n)` |
| **外部リソースをロード** | 例: 画像ダウンロード | `UnityWebRequest` |
| **物理的な動きを滑らかにする** | 例: ドアの開閉 | `Lerp` |

---

## まとめ
Coroutineを活用すると、フレーム単位や時間単位で処理を柔軟に制御できます。特に、**ゲーム内のエフェクトや時間経過を伴う処理に最適**です。適切に活用して、スムーズなゲームプレイを実現しましょう！
「失くしても安心」─ SecureNotesが実現するデジタル時代の新しい安心感


## エピソード1: 家族の絆で守る大切な記録

### シーン1: デジタル遺産の準備
> 横浜・鈴木家の居間

鈴木健一（68歳）は定年退職後、デジタル機器の扱いに慣れる努力をしていた。特に気になっていたのは、自分の不在時に家族が困らないよう、重要情報をどう残すかという問題だった。

「お父さん、また新しいアプリ？」リビングに入ってきた娘の真理子（38歳）が尋ねた。

「ああ、SecureNotesというんだ。山田くんに教えてもらってね」健一は画面を見せながら説明した。「ここに銀行口座や保険の情報、それに色々な手続きの方法をまとめておこうと思ってるんだ」

「へえ、でもそういう情報をアプリに保存して大丈夫なの？」

「それがね、このアプリは全部暗号化されてるんだ。それに『ガーディアン』というシステムがあって、例えば私が...何かあっても、家族が必要な情報にアクセスできるようになってる」

「それはいいかもね。お母さんはこういうの苦手だし」

「そうなんだよ。真理子と弟の拓也、それに私の弟をガーディアンにしようと思ってる。万が一の時は、最低2人の承認があれば情報を見られるようにしておくんだ」

### シーン2: 情報の整理
> 数週間後、鈴木家の書斎

健一はSecureNotesに様々な情報を整理して保存していた：

- 全銀行口座と証券口座の情報
- 生命保険と医療保険の詳細
- 不動産権利書の保管場所
- デジタルサービスのアカウント情報
- 家族への手紙や伝えたいこと

「よし、大事なことは全部入れたな」
健一は満足そうに画面を見つめた。そして、「万が一の時の手順」というタイトルのメモを開き、家族がどのようにこの情報にアクセスすべきかの手順を詳細に記した。

「あとはガーディアンに説明しておかないと」

### シーン3: 予期せぬ入院
> 2年後、横浜市立病院

突然の体調不良で健一は入院することになった。意識はあるものの、医師からは「しばらく安静に」と言われ、自宅の書類や情報にアクセスできない状況だった。

病室に娘の真理子が見舞いに来た。
「お父さん、保険の手続きしたいんだけど、書類どこにあるか教えて」

健一は少し考えて、「そういえば、SecureNotesに全部入れてあったな」と思い出した。
「真理子、覚えてる？あのSecureNotesというアプリ。そこに保険の情報も入れてある。でも今スマホが家にあって...」

「あ、あのガーディアンのやつね。わかった、リカバリー手続きってやつでいいんだよね？」

「そうそう。拓也か私の弟にも連絡して、承認してもらう必要があるよ」

### シーン4: 家族の連携
> 同日夕方、病院の廊下

真理子は兄の拓也に電話をかけていた。
「...というわけで、お父さんのSecureNotesにアクセスする必要があるの。ガーディアンの承認が必要なんだって」

「ああ、あれか。お父さんから以前説明されたよ。リカバリーリクエストを送ったの？」

「うん、今送ったところ。あなたのスマホに通知行ってると思う」

「了解、今確認する...あ、来てる来てる。『鈴木健一様のアカウントでリカバリーリクエストが...』だね。承認しておくよ」

「ありがとう。これで保険の情報が確認できるわ」

### シーン5: 情報へのアクセス
> 翌日、病院の病室

「お父さん、保険の手続きできたよ。SecureNotesに保存してあった情報のおかげで、全部スムーズに進んだわ」

ベッドで横になっていた健一は安心した表情を見せた。
「それは良かった。他にも色々入れてあるから、必要なら見ておくといい」

「実は他にも見てみたの。お父さんがまとめてくれた『万が一の時の手順』というメモ。すごく詳しく書いてあって感動したわ」

「そうか...実はあれ、ずっと伝えようと思っていたんだが、なかなか切り出せなくてね」

「お父さん、こういうデジタルツールを使いこなしてくれて本当に助かるわ。特にガーディアンシステムは素晴らしいアイデアね。家族がお互いをサポートする仕組みになってる」

「そうなんだよ。技術は進化しても、最後は人と人のつながりが大事なんだな」

健一と真理子は笑顔で見つめ合った。SecureNotesによって、単なる情報管理を超えた、家族の絆を強化するツールを手に入れたのだった。
【Python】リストの中身がtruthyかどうかを判定する方法

## 📝 使うリスト

```python
l = [1, 0, [], (2, 3), 'AA', '', False, ''*3]
```

---

## ✅ True（truthy）な要素だけをカウント

```python
new_l = [i for i in l if bool(i)]
print(new_l)  # → [1, (2, 3), 'AA']
print(f"Trueの数 : {len(new_l)}")  # → Trueの数 : 3
```

---

## 👀 解説

Pythonでは、次のような値は **False（falsy）扱い** になります：

- `0`
- `''`（空文字）
- `[]`（空リスト）
- `()`（空タプル）
- `False` そのもの

つまり、`bool(x)` が `True` になるものだけが「truthy」という風にいなります！

---

##  最短で書く

```python
print(f"Trueの数 : {sum(bool(i) for i in l)}")
```

---

truthy、falshyの取り扱いは慣れなのでいっぱい練習しましょう！！
ギャルとアジャイル開発💖✨


## はじめに🌈

やっほ〜！ギャルとアジャイル開発、めっちゃ関係なさそうだけど、実は超シナジーあるんよ🤩💡ギャルの生き方って、アジャイルの精神にドンピシャだから、それを活かして開発爆速にしよって話🔥✨

---

## ギャルの精神とアジャイルの共通点💅

### 1. 変化を愛する💖（ギャルマインド）

ギャルって、トレンドに超敏感！流行りが変わったら即対応、ノリと勢いで乗りこなす💃💨これってアジャイル開発の「仕様変更ウェルカム✨」な精神と同じじゃん？

### 2. 短期間で結果出す🔥（スクラムのスプリント）

ギャルは「今」を全力で生きる✨「とりまやってみる！」の精神で、短期間で試してフィードバックしていくのがアジャイル開発とシンクロ！小さく刻んで、どんどんアップデートしてこ💖

### 3. コミュ力モンスター💬✨

ギャルは友達とつながるのが命！常にDM・ストーリー・タグ付けで情報共有💡アジャイルでもチームのコミュニケーション超大事！バイブス合わせて、最高の開発しよ✌️💕

### 4. 失敗しても「それな！」で切り替え💡（Fail Fast）

ギャルは失敗してもクヨクヨしない！
「やばくね？」「それな〜🤣」で即リカバリー！
アジャイル開発でも「失敗したらすぐ直す」が鉄則！

### 5. 常に進化し続ける📈💖（ギャル進化論）

ギャルは「可愛くなるための努力」を惜しまない💄💖
メイクもファッションも最新トレンドにアップデート！
開発も常に最新技術キャッチして進化あるのみ🔥

---

## 具体的な実践方法💡

1. **「とりまやってみる」文化を作る**
   - 思いついたら即行動！試作品作ってフィードバック💨

2. **「バイブスを合わせる」ためのコミュ強化✨**
   - デイリースクラムで「今日のイケてること」シェア💖

3. **「それな！」精神で失敗を恐れない🔥**
   - 失敗したら即改善！「次行こ、次！」で前向きに💃

4. **「ギャル進化論」を開発に適用💄**
   - トレンド技術キャッチして、プロダクトも自分もアプデ✨

---

## まとめ💖

ギャルのポジティブマインドって、アジャイル開発に超向いてるのわかる？
変化を楽しんで、チームのバイブス上げて、失敗も糧にしながら最高のプロダクト作ってこ🔥✨

💖 **まじ卍！アジャイル開発、エモく回してこ〜！** 💖
Unity Catalog Python UDFにおける外部ライブラリのインストール

こちらのアップデートです。Python UDF(ユーザー定義関数)に更なる柔軟性を提供します。

https://docs.databricks.com/aws/en/release-notes/product/2025/march#install-custom-dependencies-in-unity-catalog-python-udfs-public-preview

> **Unity Catalog Python UDFにおけるカスタムの依存関係のインストール(パブリックプレビュー)**
> 外部ライブラリのカスタム依存関係を定義することで、Databricksランタイム環境を超えてPython UDFの機能を拡張します。[カスタムの依存関係を使用したUDFの拡張](https://docs.databricks.com/aws/ja/udf/unity-catalog#%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%81%AE%E4%BE%9D%E5%AD%98%E9%96%A2%E4%BF%82%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F-udf-%E3%81%AE%E6%8B%A1%E5%BC%B5)をご覧ください。

試してみます。

:::note info
**注意**
本機能は以下のコンピュートタイプでサポートされています。
- サーバーレスコンピュート
- Databricks Runtimeバージョン16.2以上を使用した汎用コンピュート
- SQLウェアハウス クラシックまたはプロ
:::


ジョークを返す[pyjokes(jokes as a service)](https://pypi.org/project/pyjokes/)を使ってUDFを定義します。

初めは依存関係を定義しないでPython UDFを定義します。

```sql
%sql
CREATE OR REPLACE FUNCTION users.takaaki_yayoi.get_joke()
RETURNS STRING
LANGUAGE PYTHON
AS $$
import pyjokes
return pyjokes.get_joke()
$$;
```

UDFを呼び出すと`pyjokes`が見つからないというエラーになります。

```sql
SELECT users.takaaki_yayoi.get_joke()
```
```
[UDF_USER_CODE_ERROR.GENERIC] Execution of function users.takaaki_yayoi.get_joke() failed. 
== Error ==
ModuleNotFoundError: No module named 'pyjokes'
== Stacktrace ==
  File "<udfbody>", line 2, in main
    import pyjokes SQLSTATE: 39000
```
![Screenshot 2025-03-26 at 13.17.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/346cd0f6-f894-4e43-8f11-061ea4396058.png)

[マニュアル](https://docs.databricks.com/aws/ja/udf/unity-catalog#%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%81%AE%E4%BE%9D%E5%AD%98%E9%96%A2%E4%BF%82%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F-udf-%E3%81%AE%E6%8B%A1%E5%BC%B5)に従って、`ENVIRONMENT`セクションを追加します。`dependencies`に依存関係`"pyjokes==0.8.3"`を定義します。今のところ`environment_version`は`'None'`しか指定できません。

```sql
%sql
CREATE OR REPLACE FUNCTION users.takaaki_yayoi.get_joke()
RETURNS STRING
LANGUAGE PYTHON
ENVIRONMENT (
  dependencies = '["pyjokes==0.8.3"]',
  environment_version = 'None'
)
AS $$
import pyjokes
return pyjokes.get_joke()
$$;
```

今回は成功します。

```sql
%sql
SELECT users.takaaki_yayoi.get_joke()
```
![Screenshot 2025-03-26 at 13.20.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/387068f0-6cb4-47b4-994e-f2ec9039f27d.png)

ご活用ください！

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)
Pydantic BaseSettingsにおけるCLI引数、環境変数、コンストラクタ引数の優先順位

# 
# 概要
pydantic-settingsのBaseSettingsクラスの初期化における入力変数の優先順位を調べました。

結論としては、CLI引数 > コンストラクタ引数 > 環境変数 > 環境変数ファイル（dotenv） > デフォルト値の優先度でした。

# 検証コード

```Python
import os
import shutil
import sys
from pathlib import Path

from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict

TMPENV = "tmp/.env"


def setup_tmp_env():
    """一時的な.envファイルを設定する"""
    env_file = Path(TMPENV)
    tmp_dir = env_file.parent
    tmp_dir.mkdir(exist_ok=True)
    env_file.write_text("NAME=dotenv")
    return env_file


def cleanup_tmp_env():
    """一時的な.envファイルを削除する"""
    env_file = Path(TMPENV)
    tmp_dir = env_file.parent
    if tmp_dir.exists():
        shutil.rmtree(tmp_dir)


class SettingsA(BaseSettings):
    name: str = Field(default="", description="名前")

    model_config = SettingsConfigDict(
        env_file=TMPENV,  # デフォルトの.envファイルを指定
        case_sensitive=False,
        cli_parse_args=True,
        cli_ignore_unknown_args=True,
        extra="ignore",
    )


def setup_test():
    sys.argv = ["script.py"]
    if os.environ.get("NAME"):
        del os.environ["NAME"]
    cleanup_tmp_env()


def test_settings_with_cli_args():
    # デフォルト値
    setup_test()
    settings = SettingsA()
    assert settings.name == ""

    # CLI引数を設定
    setup_test()
    sys.argv = ["script.py", "--name", "cli"]
    settings = SettingsA()
    assert settings.name == "cli"

    # 環境変数を設定
    setup_test()
    os.environ["NAME"] = "env"
    settings = SettingsA()
    assert settings.name == "env"

    # dotenvを設定
    setup_test()
    setup_tmp_env()
    settings = SettingsA()
    assert settings.name == "dotenv"

    # コンストラクタ引数
    setup_test()
    settings = SettingsA(name="constructor")
    assert settings.name == "constructor"

    # CLI引数とコンストラクタ引数を設定(CLI引数が優先)
    setup_test()
    sys.argv = ["script.py", "--name", "cli"]
    settings = SettingsA(name="constructor")
    assert settings.name == "cli"

    # コンストラクタ引数と環境変数（コンストラクタ引数が優先）
    setup_test()
    os.environ["NAME"] = "env"
    settings = SettingsA(name="constructor")
    assert settings.name == "constructor"

    # 環境変数とdotenvを設定（環境変数が優先）
    setup_test()
    os.environ["NAME"] = "env"
    setup_tmp_env()
    settings = SettingsA()
    assert settings.name == "env"


if __name__ == "__main__":
    test_settings_with_cli_args()
```

# おわりに
上記はデフォルトの優先順位の場合です。
[優先順位は変更可能](https://docs.pydantic.dev/latest/concepts/pydantic_settings/#changing-priority)です。

基本的にはデフォルトの優先順位で良いと思いますが、CLI引数よりコンストラクタ引数を優先したり、環境変数より環境変数ファイルを優先したくなる可能性もあるかなと思いました。
【Docker】Dockerとは

# はじめに

こんにちは。アメリカに住みながら独学でエンジニアを目指しているTairaです。

本日からDockerの学習を始めました。Dockerについて「具体的にどんな技術なのだろう？」と疑問に思っていましたが、現在勉強している教材がとても分かりやすかったので、簡単にまとめてみようと思います。

なお、記事の内容は参考資料の『仕組みと使い方がわかるDocker&Kubernetesのきほんのきほん』を基に作成しています。

## Dockerとは

Dockerとは、コンテナとDockerエンジンを活用して**データやプログラムを隔離できる仕組み**です。

Dockerを使うことで、アプリケーションやサービスを個別のコンテナとして独立させ、システム間の干渉を防ぎ、安全で管理しやすい環境を構築できます。

## なぜデータやプログラムを隔離したいのか

通常、1つのサーバーには1つのアプリケーションのバージョンしかインストールできません。

例えば、システムAとシステムBが同じMySQLを共有している状況を考えてみます。

![システム.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3883070/ba5b729a-ffd8-4f98-b7da-2f91e9d6f5ca.png)

この状態でMySQLをアップデートすると、

![システム2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3883070/a3a650bb-a1e7-4ba8-84aa-6336e6130f19.png)

システムAは7.0でしか動作しないのに、システムBは5.0でしか動作しないという問題が発生します。

Dockerを使い、各システムを隔離することで、このようなバージョン間の衝突を解決できます。

![システム3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3883070/462d87c8-3079-47d0-9bd3-c546b6e4b116.png)

※便宜上、システムとMySQLを同じコンテナに入れていますが、本来はそれぞれ別のコンテナに分けるのが望ましいです。

## Dockerの仕組み

Dockerは以下の図のような構成になっています。

![システム4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3883070/9e37896b-7c70-4852-b22a-fedb20f1a9fc.png)

Docker内部にはLinuxのOSのような仕組みがあります。Linuxはカーネルとディストリビューションの2つに分かれており、Dockerのコンテナにはこのディストリビューション部分が格納されています。

似た仕組みにVirtualBoxなどの仮想環境がありますが、VirtualBoxはOS上に完全な仮想OSを作るため重くなります。一方、Dockerはディストリビューションのみをコンテナに格納するため、VirtualBoxよりも軽量です。

## Dockerイメージ

Dockerでコンテナを作る際、1から作る必要はありません。

Docker Hubというサイトからイメージをダウンロードします。イメージは金型のようなもので、Apacheサーバーなどを立ち上げたい場合は、適切なイメージをダウンロードして使用します。

1からサーバーを構築するよりも、Dockerを使用すると大幅に時間を節約できます。

## メリット・デメリット

Dockerを使用する主なメリットは以下の通りです。

- 1台の物理マシンで複数のサーバーを運用できる
- サーバーの管理が簡単になる
- サーバーに詳しくなくても手軽に環境構築が可能

一方で、Dockerにもデメリットがあります。

- コンテナ化による学習コストが発生する
- コンテナ管理の複雑性が増すことがある

## まとめ

Dockerは、アプリケーションやサービスを隔離して管理を簡単にする強力なツールです。バージョン間の衝突や環境依存の問題を解決でき、開発環境や本番環境をスムーズに構築できるメリットがあります。初学者でも理解しやすいので、これからエンジニアを目指す方にはぜひ取り入れてほしい技術です。

## 参考資料

[仕組みと使い方がわかるDocker&Kubernetesのきほんのきほん](https://book.mynavi.jp/supportsite/detail/9784839972745.html)
【超簡単】検証用に有効期限切れのクライアント証明書をつくりたい

# 前提
Linux環境（Ubuntu22.04）を想定しています（が、WindowsやMacでもほぼ同様の手順です）

# 手順
## 1.OpenSSLのダウンロード
まずはOpenSSLをダウンロードします。ソースコードは[OpenSSLサイト](https://www.openssl-library.org/source/)からダウンロード可能です。
以下のコマンドを上から順番に実行していきます。
```
wget https://www.openssl.org/source/openssl-3.0.9.tar.gz

tar -xzf openssl-3.0.9.tar.gz

cd openssl-3.0.9
```

## 2.OpenSSLのインストール
続いてOpenSSLをインストールしていきます。
以下のコマンドを上から順番に実行していきます。
```
./Configure '-Wl,-rpath,$(LIBRPATH)'

make

make install
```

正しくインストールが完了している場合、以下のコマンドを実行すると正しくバージョン情報を取得することができます。
```
openssl version -a
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3933650/00504516-99c7-4601-92d5-6c0e95afbe8d.png)

## 3.認証局用の秘密鍵と証明書の作成
以降の処理は[こちら](https://qiita.com/mato-599/items/ee96c7641a7acac32a22)の記事を参考にしています。オプションの説明などの詳細に関してはそちらをご参照ください。

以下のコマンドを実行して認証局用の秘密鍵と証明書を作成します。

```
$ openssl req -x509 -new \
              -newkey rsa:2048 -keyout rootCA.key -nodes \
              -sha256 \
              -days 3650 \
              -out rootCA.crt \
              -subj "/C=JP/O=example.com/CN=EXAMPLE PKI ROOT"
```
## 4.クライアント証明書用の秘密鍵と署名要求を作成
以下のコマンドを実行してクライアント証明書用の秘密鍵と署名要求を作成します。
```
openssl req -newkey rsa:2048 -keyout expired-client.key -nodes -out expired-client.csr \
              -subj "/C=JP/O=example.com/CN=CLIENT"
```

## 5.認証局用の秘密鍵と証明書でクライアント証明書の署名要求に署名
以下のコマンドを実行してクライアント証明書用の秘密鍵と署名要求に署名します。
その際、**有効期限を１日前に指定します。**
```
 openssl x509 -req \
               -in expired-client.csr \
               -CA rootCA.crt -CAkey rootCA.key -CAcreateserial \
               -sha256 \
               -days -1 \ // 有効期限を一日前に指定
               -out expired-client.crt 
```
## 6.確認
以下のコマンドで作成したクライアント証明書の有効期限を確認することができます。
```
openssl x509 -in expired-client.crt -noout -dates
```
有効期限切れのクライアント証明書が作成できました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3933650/5e1f993d-4165-4d43-8b8e-5ab023dd833b.png)


# 参考
https://ja.linux-console.net/?p=30853

https://zenn.dev/tatsuto/articles/openssl-source-build

https://qiita.com/mato-599/items/ee96c7641a7acac32a22
JavaScript（ES6〜）文と式

## 式
値を生成し、変数に代入できます
```javascript
let sum = 3 + 4;  // 3 + 4 は式であり、結果は 7
```

## 文
プログラム内で実行される命令の単位
変数に代入できないため、式にはなれないです
```javascript
let x = 5;  // 変数宣言文
if (x > 10) {  // 条件文
  console.log('Greater than 10');
}
```

## 式文
式を単独で文として扱うもの
文の一種であるため、セミコロンで文を区切ります
```javascript
({ name: "Alice" });  // 式文として扱われます
{ name: "Alice" }  // これは式ですが、文としては解釈されない（構文エラー）、オブジェクトリテラル
```

## ブロック文
複数の文を`{}`でまとめたもの
if文やforループの中でもよく使われます
```javascript
{
  let x = 10;
  console.log(x);
}
```

## function宣言(文)とfunction式
### function宣言
function キーワードを使って名前付き関数を定義します
ブロック文で終わるため、セミコロンは不要
```javascript
// 関数宣言
function greet() {
  console.log("Hello!");
}

greet();  
```

### function式
変数に関数を代入する形で定義です
セミコロン必須
```javascript
// 関数式（無名関数）
const greet = function() {
  console.log("Hello!");
};

greet();
```

## まとめ
JavaScriptは文と式で構成され、文は式になれないが式は文になれます。セミコロンは基本的に文の末尾に必要ですが、ブロックで終わる文には不要です
IPA テキスト生成AIの導入・運用ガイドライン（2024年7月更新） 解説

本記事は [生成AIセキュリティ by ナレコム Advent Calendar 2024](https://qiita.com/advent-calendar/2024/genai-sec-knowcom) の25日目の記事です。

本Advent Calendarは、国内で唯一の技術領域 **責任あるAI** の [MVP受賞者](https://mvp.microsoft.com/en-US/MVP/profile/28dff07e-3dba-4772-97b9-944418868456) を中心に、生成AIを含めたAIやデータを企業が利活用するときに気をつけるセキュリティやガバナンスを中心に紹介します。

***

本記事は、IPA（情報処理推進機構）が公開した **「テキスト生成AIの導入・運用ガイドライン」** を、解説していくものです。

## ガイドラインの必要性

テキスト生成AIは、業務効率化や新たな価値創造の可能性を秘めていますが、同時に以下のようなリスクも存在します。

* **情報漏洩**: 機密情報や個人情報を学習してしまう
* **不正確な情報**: 事実と異なる情報を生成してしまう
* **著作権侵害**: 他者の著作物を無断で使用してしまう
* **風評被害**: 差別的、攻撃的なコンテンツを生成してしまう

これらのリスクを放置したまま導入・運用を進めてしまうと、**企業としての信頼を損なう**だけでなく、**法的責任を問われる**可能性もあります。

だからこそ、IPAが公開したガイドラインを参考に、リスクを理解した上で適切な対策を講じることが重要なんです。

## ガイドラインのポイントを3つに絞って解説

ガイドラインは全部で60ページ以上あり、情報量も多いので、どこから読めばいいかわからない…という方もいるかもしれません。そこで、ここでは特に重要なポイントを3つに絞って解説します。

### 1. 導入目的の明確化

まず最初に重要なのが、**「なぜテキスト生成AIを導入するのか？」** という目的を明確にすることです。

* **業務効率化**: どのような業務を効率化したいのか？
* **コスト削減**: どの程度のコスト削減効果を見込んでいるのか？
* **新規事業**: どのような新規事業に活用したいのか？

目的が曖昧なまま導入を進めてしまうと、**期待した効果が得られなかったり**、**不要な機能ばかりが増えてしまったり**する可能性があります。

### 2. リスク評価と対策

テキスト生成AIの導入・運用には、様々なリスクが伴います。ガイドラインでは、以下のリスクについて詳しく解説されています。

* **セキュリティリスク**: 情報漏洩、不正アクセスなど
* **コンプライアンスリスク**: 著作権侵害、個人情報保護法違反など
* **倫理的リスク**: 差別的なコンテンツ生成、フェイクニュース拡散など

これらのリスクを洗い出し、それぞれに対して適切な対策を講じることが重要です。

### 3. 継続的なモニタリングと改善

テキスト生成AIは、常に進化を続けています。そのため、導入後も**継続的にモニタリング**を行い、**改善**を重ねていく必要があります。

* **利用状況の分析**: どのように利用されているのか？
* **リスクの再評価**: 新たなリスクは発生していないか？
* **ガイドラインの見直し**: 最新の状況に合わせてアップデートされているか？


## 特に注意すべきリスクと対策例

ガイドラインに記載されているリスクと対策の中から、特に注意すべきものをいくつかピックアップしてご紹介します。

### リスク: プロンプトからの情報漏洩

**リスク:** テキスト生成AIに機密情報を含むプロンプトを入力してしまい、情報が漏洩してしまう。

**対策:**

* **プロンプト入力時の注意喚起**: 機密情報や個人情報を入力しないように注意喚起する。
* **プロンプトの暗号化**: プロンプトを暗号化して送信する。
* **データ保持期間の設定**: プロンプトのデータ保持期間を短く設定する。


### リスク: 不適切なコンテンツ生成

**リスク:** テキスト生成AIが差別的、攻撃的なコンテンツを生成してしまう。

**対策:**

* **フィルタリング機能の導入**: 不適切なコンテンツを自動的に検知し、ブロックする。
* **利用規約の整備**: 禁止事項を明確に記載する。
* **人間のレビュー**: 生成されたコンテンツを人間の目でチェックする。


## まとめ

「テキスト生成AIの導入・運用ガイドライン」は、テキスト生成AIを安全かつ有効に活用するための羅針盤となるものです。このガイドラインを参考に、自社の状況に合わせてリスク対策をしっかりと講じ、AIドリブンな社会を実現していきましょう。
リニアアルジェブラDXで切り拓くメールテンプレートの最前線

#  はじめに  

近年のDX推進の潮流を受け、私たちは破壊的イノベーションを創出するメールテンプレートDXを整備しました。
トランスフォーマーモデルと注意機構（Self-Attention）に加え、位置エンコーディングやマルチヘッドアテンションを組み込んだマルチモーダルGPTを活用することで、自然言語理解（NLU）と自然言語生成（NLG）の両面において高い性能を発揮し、アジャイルかつ応答性に優れたメールコミュニケーションを実現しています。
これによりプロンプトエンジニアリングの可能性を広げ、サイバーフィジカルシステム（CPS）を通じた業務改善を推進します。

お客様の課題に寄り添いながら展開する、リニアアルジェブラベースのAIソリューションは、「納期」と「時間」という実務的ハイパーパラメータのチューニングを通じて、
今後さらに “Ctrl + C” の如く、軽快かつ加速的にバージョンアップしてまいります。
私たち自身も、自己研鑽OJTというファインチューニング環境を最大限に活用しながら、
日々スキルと知見のアップデートを積み重ねていきましょう。

#  テンプレートプロンプトエンジニアリング
```



### （タイトル）の件  
**【ご連絡】〇〇について**

### 宛先情報  
**To：** `相手のメールアドレス`  
**会社名：** `相手の組織名`  



### 本文

`相手の組織名`  
`〇〇〇〇 様`

毎々、いつも大変お世話になっております。  
`（あなたの会社名）`の`（あなたの名前）`でございます。

このたびは〇〇の件につきましてご連絡申し上げます。  
`（本文：ご連絡内容やご案内などをご記載ください）`

 
以上。ご確認のほど、何卒よろしくお願い申し上げます。


━━━━━━━━━━━━━━━━━━━━━━━━━  
（自分の組織名）  
（自分の所属部署・役職）　（自分の名前）  
TEL：〇〇-〇〇〇〇-〇〇〇〇  
Email：xxxxx@example.com  
━━━━━━━━━━━━━━━━━━━━━━━━━
```

結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4043781/b7860461-834c-44b2-bb7a-c9c12c919026.png)



#  Python機能搭載型テンプレート
```Python
from datetime import datetime

# ------------------------
# 変数定義
# ------------------------
today = datetime.now().strftime("%Y年%m月%d日")

recipient_name = "田中 未来"
recipient_org = "株式会社テクノエンジニアリング"
recipient_email = "tanaka@example.co.jp"

sender_name = "破壊 革新"
sender_dept = "AIソリューション事業部"
sender_company = "株式会社イノベーションラボ"
sender_tel = "03-1234-5678"
sender_email = "Break@innovationlab.co.jp"

subject = "【ご連絡】資料のご送付について"
attachment_file = "Breakthrough_Innovation_20240101.pdf"

# ------------------------
# 出力
# ------------------------
print("（タイトル）")
print(subject + "\n")

print(f"宛先：{recipient_email}")
print(f"組織名：{recipient_org}\n")

print(f"{recipient_org}")
print(f"{recipient_name} 様\n")

print("毎々、いつも大変お世話になっております。")
print(f"{sender_dept}の{sender_name}です。\n")

print("添付の通り、先日ご依頼いただきました資料をお送りいたします。\n")

print("－以上－")
print("ご確認のほど、何卒よろしくお願い申し上げます。\n")

print(f"添付ファイル：「{attachment_file}」")
print(f"送信日：{today}\n")

print("━━━━━━━━━━━━━━━━━━━━━━━━━")
print(f"{sender_company}")
print(f"{sender_dept}　{sender_name}")
print(f"TEL：{sender_tel}")
print(f"Email：{sender_email}")
print("━━━━━━━━━━━━━━━━━━━━━━━━━")


```
#  まとめ
 いかがでしたか？
どこか懐かしい空気をまとった、かつてのNAVERまとめを彷彿とさせる“平成レトロ系ソリューション”でしたね(怪文書)
あえて中身を詰め込まない潔さが、むしろデジタル時代のカタカナイングリッシュ的カルチャーを象徴しているようにも感じられます。
カタカナイングリッシュは、英語に不安を感じる方々にも届くやさしい最適化表現。
そんな姿勢こそが、真の意味で「寄り添うUX」なのかもしれません。これこそ、私たちの寄り添い手法です。

それでは、
デジタル庁 テキスト生成AI利活用におけるリスクへの対策ガイドブック（α版：2024年6月更新） 解説

本記事は [生成AIセキュリティ by ナレコム Advent Calendar 2024](https://qiita.com/advent-calendar/2024/genai-sec-knowcom) の24日目の記事です。

本Advent Calendarは、国内で唯一の技術領域 **責任あるAI** の [MVP受賞者](https://mvp.microsoft.com/en-US/MVP/profile/28dff07e-3dba-4772-97b9-944418868456) を中心に、生成AIを含めたAIやデータを企業が利活用するときに気をつけるセキュリティやガバナンスを中心に紹介します。


この記事は、生成AIセキュリティに関わる全ての方に向けて、最新のガイドブックをポイントを絞って解説していくものです。

### テキスト生成AIのリスク対策の必要性

皆さんご存知の通り、ChatGPTをはじめとするテキスト生成AIは、私たちの仕事や生活を大きく変える可能性を秘めています。しかし、様々なリスクも存在します。
例えば、

* **不正確な情報**を生成してしまう
* **機密情報**を学習してしまう
* **著作権侵害**をしてしまう

などなど、様々なリスクが潜んでいます。これらのリスクを放置したままにしてしまうと、大変なことになりかねません。

### ガイドブックの概要

https://www.digital.go.jp/resources/generalitve-ai-guidebook


このガイドブックは、テキスト生成AIを**安全・安心**に利用するために、想定されるリスクとその対策についてまとめたものです。特に、政府情報システムへの生成AI導入に関わる行政職員を対象としていますが、**企業でAI導入を検討している方**にも非常に参考になる内容となっています。

**対象読者**

* 政府情報システムへの生成AI導入に関わる行政職員
* 自社サービスや業務改善のためにテキスト生成AIの導入検討をされている方

**構成**

ガイドブックは、本文（前半6章）と発展的内容を含んだ付録（後半3章）で構成されています。

### ガイドブックのポイント

ガイドブックには様々な情報が盛り込まれていますが、特に重要なポイントを3つに絞って解説します。

#### 1. テキスト生成AIに特化

生成AIには、テキストだけでなく、画像や音声、動画を生成できるものもあります。しかし、このガイドブックでは、**テキスト生成AI**に焦点を当てています。なぜなら、行政業務でやり取りする情報の多くはテキスト情報であり、デジタル庁におけるテキスト情報以外の生成AIの活用は検証段階だからです。

#### 2. 利用形態・ユースケース・工程に応じたリスクを分類

テキスト生成AIのリスクは、利用形態（特定のサービスに組み込まれた状態や、Web API形式等）やユースケースによって異なります。ガイドブックでは、これらの違いを意識し、**デジタル・ガバメント推進標準ガイドライン実践ガイドブック**で定義されている工程に応じたリスクや留意点をまとめています。

#### 3. 検証で判明したリスクを網羅

デジタル庁が実際に行った検証で判明したリスクや留意点が、可能な限り記載されています。これにより、**机上の空論**ではなく、実践的な対策を検討することができます。

### 特に注目すべきリスクと対策

ガイドブックには様々なリスクと対策が記載されていますが、ここでは特に注目すべきものをいくつかピックアップしてご紹介します。

* **リスク:** 不適切なプロンプトによる不適切なアウトプット
    * **対策:** プロンプトの設計に関するガイドライン策定、プロンプトエンジニアリングの実施
* **リスク:** 著作権侵害
    * **対策:** 学習データにおける権利処理の確認、生成物の著作権に関する注意喚起
* **リスク:** 倫理・社会的な問題を含むコンテンツの生成
    * **対策:** 倫理的な問題に対するフィルタリング機能の導入、利用規約における禁止事項の明示


### まとめ：AI時代の羅針盤となるガイドブック

「テキスト生成AI利活用におけるリスクへの対策ガイドブック（α版）」は、AI技術の進化に対応し、リスクを理解した上で安全な利活用を進めるための重要な指針です。**AIドリブン**な社会を実現するためには、このガイドブックを参考に、リスク対策をしっかりと講じていく必要があります。
Kubernetes and Cloud Native Associate (KCNA), Kubernetes and Cloud Native Security Associate (KCSA)受験記

## はじめに

CNCF主催の認定試験 **Kubernetes and Cloud Native Associate (KCNA), Kubernetes and Cloud Native Security Associate (KCSA)** を受験し合格したので、受験記を記載します。同認定試験の受験を考えている方の参考になれば幸いです。

## 免責事項(Disclamer)

:::note warn
* 本投稿は受験当時の情報となります。受験を検討する際は最新の情報の確認をお願いします。
* 本投稿は個人の所感です。
    * 所属する企業や団体は関係ありません。
    * 情報の利用は自己責任でお願いします。
:::

## 試験概要

* 受験日：2022/4/26, 2022/5/6
* 試験形式
    * オンライン試験
    * 1回再受験可能
    * 多肢選択形式
    * 試験時間90分
    * 試験言語はKCNAは日本語、英語が提供。KCSAは英語のみ。
    * 100点満点中67点以上で合格

## KCNA,KCSAとは

* Linux Foundationが主催する、Kubernetesに関する知識を認定する資格。2025年3月時点でKubernetes関連資格は以下が存在する。
    * CKA (Certified Kubernetes Administrator)：Kubernetesに関する基本的な知識 + Kubernetesクラスタの管理知識を問う資格
    * CKAD (Certified Kubernetes Application Developer)：Kubernetesを利用する側としての知識を問う資格。主にアプリケーション開発者を想定していると思われる。
    * CKS (Certified Kubernetes Security Specialist)：この試験を受けるにはCKAを持っていることが前提となる。これからもわかるように、CKAレベルの知識はある上で、セキュリティ向上のための知識を問う試験。
    * KCNA (Kubernetes and Cloud Native Associate)：Kubernetes、クラウドネイティブに関する基礎的な知識を問うアソシエイトレベルの試験。
    * KCSA (Kubernetes and Cloud Native Security Associate)：Kubernetes、クラウドネイティブにおけるセキュリティに関する知識を問うアソシエイレベルの試験。
* 上記5つの認定を取得すると[Kubestronaut](https://www.cncf.io/training/kubestronaut/)に認定されます。
* CKA/CKAD/CKSはコマンドオペレーション形式でしたが、KCNA/KCSAは4つの選択肢からの選択問題です。

## 勉強方法

### KCNA

* 以下のUdemy練習問題を1回分やって、内容的にこれまでの知識で行けそうだったので突撃しました。
    * https://www.udemy.com/course/kcna-exams/

### KCSA

* Udemyを探しても練習問題がなく、ネット上にもあまり情報がなかったです。
* ようやく[こちらのサンプル問題](https://www.vmexam.com/linux-foundation/linux-foundation-kcsa-certification-exam-sample-questions)を見つけて、それだけやってみて突撃しました。
* Kubernetes脅威モデルについて聞かれるようでしたが、あまりまとまった情報がなく[こちら](https://microsoft.github.io/Threat-Matrix-for-Kubernetes/)を参考にしました。

## 受験してみての所感

* 内容的には簡単で、エントリー向けの資格という感じでした。
* KCSA試験は日本語試験がリリースされておらず、英語で受けました。わからない単語が問題文中にあるのが一番苦労したところでしょうか。
* 余談ですが、Kubernetes系の試験申し込みはCKAを例にとると CKA, CKA-JPのように分かれており、日本語の問題文で受けたければCKA-JPで申し込む必要があります。
* CKA-JPで申し込むと試験中に問題文を日本語・英語で切り替え可能です。CKAで申し込むと、英語の問題文しか選べません。
内閣府 セキュアAIシステム開発ガイドライン(2023年11月発行) 解説

本記事は [生成AIセキュリティ by ナレコム Advent Calendar 2024](https://qiita.com/advent-calendar/2024/genai-sec-knowcom) の22日目の記事です。

本Advent Calendarは、国内で唯一の技術領域 **責任あるAI** の [MVP受賞者](https://mvp.microsoft.com/en-US/MVP/profile/28dff07e-3dba-4772-97b9-944418868456) を中心に、生成AIを含めたAIやデータを企業が利活用するときに気をつけるセキュリティやガバナンスを中心に紹介します。

---

本記事は、生成AIセキュリティに関わるすべての方に向けて、最新の「セキュアAIシステム開発ガイドライン」をわかりやすく解説するものです。

AI技術の進化は、セキュリティにも大きな影響を与えています。AIを安全に活用するためには、開発段階からセキュリティを考慮した設計が不可欠です。しかし、AI特有のリスクを理解せずに開発を進めると、思わぬセキュリティ上の問題を引き起こす可能性があります。

そこで、内閣府とNISCが共同で公開した「セキュアAIシステム開発ガイドライン」は、AIシステムを開発する組織が、安全なAIシステムを構築するための具体的な指針を提供します。

### 「セキュアAIシステム開発ガイドライン」とは？

このガイドラインは、AIシステムの開発ライフサイクル全体を通して、セキュリティを確保するための実践的なアドバイスを提供します。セキュアバイデザインの原則に基づき、設計、開発、導入、運用・保守の各段階で考慮すべきセキュリティ要件を明確にしています。

- 公式サイト: 

https://www8.cao.go.jp/cstp/stmain/20231128ai.html


### ガイドラインの主要な構成要素

ガイドラインは、以下の4つの主要な要素で構成されています。

1. **セキュアな設計:** システムに対する脅威をモデル化し、AI特有の脅威の影響を評価します。機能性やパフォーマンスと同等にセキュリティを考慮し、アーキテクチャ、設定、訓練データ、訓練アルゴリズムなどを選択する際に、セキュリティ上の利点とのトレードオフを検討します。
2. **セキュアな開発:** サプライチェーンのセキュリティを確保し、関連アセットを保護します。データ、モデル、プロンプトなどをSBOM（ソフトウェア部品表）等で文書化し、管理します。
3. **セキュアな導入:** 使用するインフラのセキュリティを確保し、継続的にモデルを保護します。機密情報へのアクセス、改ざん、外部への窃取の試みを検知し、防止するためのコントロール措置を実践します。インシデント管理手順を事前に定義し、適切なテストを実施した上でAIシステムをリリースし、ユーザーに適切な使用方法を明示します。
4. **セキュアな運用とメンテナンス:** システムの挙動を監視し、潜在的な侵入や侵害を検知できるようにします。デフォルトで自動アップデートを実装し、モデルなどの変更による挙動の変化について、ユーザーが評価できるようサポートします。

### 特に注目すべきポイント

ガイドラインの中で特に重要なのは、AI特有のリスクとそれに対する対策です。AIシステムは、従来のシステムとは異なるリスク要因を抱えています。

例えば、

* **敵対的サンプル:** AIモデルを誤認識させるような巧妙なデータを作成し、攻撃に利用する手法。
* **モデルの脆弱性:** AIモデル自体に存在する脆弱性を悪用し、機密情報を盗み出したり、モデルの挙動を改ざんしたりする攻撃。
* **データのプライバシー:** 個人情報を含むデータをAIに学習させる場合、プライバシー保護に配慮する必要がある。

これらのリスクを理解し、適切な対策を講じることが、AIシステムを安全に活用するための鍵となります。

### まとめ：AI時代のセキュリティ担当者に求められること

「セキュアAIシステム開発ガイドライン」は、AI技術の進化に対応し、セキュリティを強化するための重要な指針です。

AIシステムの開発者は、このガイドラインを参考に、セキュアバイデザインの原則に基づいた開発プロセスを確立することが求められます。また、セキュリティ担当者は、AI特有のリスクを理解し、適切なセキュリティ対策を講じることで、AIシステムを安全に活用するための体制を構築する必要があります。

AIを正しく理解し、安全に活用することで、より強固なセキュリティ体制を構築していきましょう。
watsonx.ai StudioのJupyter Notebookで環境変数を読み込む

CP4DaaSでwatsonx.ai StudioのJupyter Notebookで環境変数を読み込む方法を考えます。
APIKEYなどをプログラムにハードコーティングするのは再利用やセキュリティの観点から望ましくありません。そのため環境変数を別途定義して、Notebookから読み込んで使うことが多いと思います。

watsonx.ai Studioでは環境テンプレートの中に環境変数を記述して、利用することができます。なお、ファイル内に環境変数を定義したい場合は[こちらの記事](https://qiita.com/spssfun2017/items/8560ec3b88a84a62efd5)を参考にしてください。

# 環境テンプレートに環境変数を記述
プロジェクトの管理タブの「環境」の「テンプレート」から「新規テンプレート」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/2eec200a-24c4-4f8c-ab0a-e18041f4d1c2.png)


Nameに適当な名前を付けます。（ここではtestenv2）。使いたい環境を設定し(ここではデフォルトのまま)、「Create」をクリックします。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/5ec0609a-ca3d-4f57-9e52-918e16f266d7.png)


作成した環境の「…」のメニューから「編集」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/6fe7c979-8422-46e9-9886-8fe4d154f703.png)


Cutomizationの「Create」をクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/dbecf555-24b1-4dd0-be7a-a2424cde91be.png)


variablesセクションを作って環境変数を定義し、「Apply」します。

```:例
variables:
  APIKEY: xxx
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/02e323dc-c0a4-4567-b164-cf19a69e2c7b.png)

「Close」で閉じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/e17b3f60-b4a3-4068-baba-c3dd00b649a4.png)


# Notebookでの環境変数取得
新規のNotebookを作成します。
適当な名前をつけ、ランタイムの選択に先ほどつくったカスタム環境を選びます（ここではtestenv2)。そして「作成」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/f074996f-c2db-455a-a26c-0d9bbd9f2eca.png)


以下のように環境変数を取得できます。
```python
import os
os.environ.get("APIKEY")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/10345512-494e-457e-baad-1bda056e2b8e.png)


# 参考

#### 環境テンプレートのカスタマイズの例　環境変数の設定
https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/example-customizations.html?context=cpdaas&audience=wdp#set-vars


#### watsonx.ai StudioのJupyter Notebookで環境変数をファイルから読み込む #Watson-Studio - Qiita 

https://qiita.com/spssfun2017/items/8560ec3b88a84a62efd5
【ChatGPT】OpenAIが、画像生成AIのレベルを引き上げました。


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

　今回は、OpenAIが、ChatGPTの画像生成AIのレベルを引き上げました。

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

　今回は、
　　OpenAIが、
　　　ChatGPTの
　　　　画像生成AIのレベルを
　　　　　引き上げました。

　DALL-E3から
　　DALL-E4ではありません。

　どういうものなのか？
***
　ゆうべ3時に
　　OpenAIが、
　　　YouTubeで
　　　　LIVEを行ないました。
　　　　　[OpenAI公式YouTube LIVE](https://www.youtube.com/live/2f3K43FHRKo?si=xzdNRtmpYP4wRXGP)

　ChatGPTとSoraにおける4o画像生成

　Sam Altman、
　　Gabriel Goh、
　　　Prafulla Dhariwal、
　　　　Lu Liu、Allan Jabri、
　　　　　Mengchao Zhongが登場。

　4o画像生成の紹介と
　　デモを行いました｡

　その後、
　　OpenAI公式ページで
　　　詳細が発表されました。
　　　　[Introducing 4o Image Generation](https://openai.com/index/introducing-4o-image-generation/)

***（ChatGPTわかりやすく記事に）***
OpenAIは、最新のAIモデルであるGPT-4oに画像生成機能を統合し、ChatGPT内で直接画像を生成できる新機能「Images in ChatGPT」を発表しました。この機能は、ChatGPTのすべてのサブスクリプション層（Plus、Pro、Team、Free）で利用可能となります。 

**主な特徴と改善点:**

- **属性の正確な結びつき（バインディング）の向上:** GPT-4oは、複数のオブジェクトや属性を含む画像生成において、高い精度で要素間の関係性を維持します。例えば、5～8個のアイテムを含むプロンプトでも、色や形状の混同を避け、15～20個のオブジェクトに対しても正確なバインディングを実現しています。 

- **テキストレンダリングの改善:** 画像内のテキスト生成において、従来のモデルよりも明瞭で一貫性のあるテキストを生成します。これにより、ポスターやインフォグラフィックなど、テキストを含む画像の品質が向上しています。 

- **オートレグレッシブ手法の採用:** 従来の拡散モデルとは異なり、GPT-4oはオートレグレッシブ手法を使用して画像を生成します。これにより、テキストレンダリングや属性の結びつきが向上し、より高品質な画像生成が可能となっています。 

**安全対策と利用制限:**

OpenAIは、不適切なコンテンツの生成を防ぐため、性的なディープフェイクや有害な画像の生成をブロックする強力な安全対策を実装しています。また、生成された画像には、AIによって作成されたことを示すメタデータが含まれており、透明性を確保しています。 

**利用方法:**

この新機能は、ChatGPTのすべてのユーザーが利用可能で、無料ユーザーも一定の制限内で画像生成を試すことができます。ただし、無料層の使用制限はDALL-Eと同様で、需要に応じて変更される可能性があります。

OpenAIのGPT-4oによる画像生成機能の統合は、AIによるコンテンツ生成の新たな可能性を示しており、ユーザーにとってより直感的で有用な体験を提供します。
***

　ChatGPT のデフォルトの
　　画像生成器として、
　　　本日（2025/03/26）より
　　　　Plus、Pro、Team、
　　　　　および Free ユーザー向けに
　　　　　　展開されます。

　　Enterprise および Edu でも近日中に
　　　利用できるようになります。

　ここからわかることは、
　　**GPT-4oがマルチモーダルモデルで
　　　GPT-4oだけで描画できる**、
　　　　ということのようです。

　今後、DALL-E3はGPTsを
　　経由してなら使えるが、
　　　直接は使えなくなります。

　また、
　　**Sora でも使用できます**。

　　Prompt入力時に、
　　　Image/Videoの選択ができます。
　　　　この切り替えは
　　　　　継続されますので、
　　　　　　画像と動画を意識的に
　　　　　　　切り替える必要が
　　　　　　　　あります。

　　日本語Promptも
　　　使えましたので
　　　　使い勝手がよくなりました😸
***
　ここからは
　　使ってみてわかったことを。

　画像は、
　　一貫性が保たれます。

　日本語が描画できます👍
　　どうやら韓国語も描けるようです。
　　　上記ページにありました。

　　テキストは
　　　小さくても
　　　　ほぼ大丈夫な感じ。

　描画は
　　少し時間が掛かります。
　　　画像は少しずつ浮かび上がります｡

　画像ですが、
　　DALL-E3の編集機能が
　　　使えません。

　　Prompt入力での
　　　編集になります😭

　ダウンロードすると、
　　これまではWebPでしたが、
　　これからはPNGになります😅

　画像のPromptの
　　コピーができません。

　　そのため、
　　　書き出すように
　　　　指示する必要があります🤔

　縦長の画像は
　　これまでちょくちょく
　　　横倒し画像が生成されました。

　　試したところ、
　　　思ったとおりに
　　　　縦長画像になりました👍

　　こんな感じ。
![combined_thumbnails_vertical.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457238/702390b3-1728-4e68-a260-bc9aa78cbb71.jpeg)

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

　今回は、ここまで。
IPA セキュリティ関係者のためのAIハンドブック(2022年6月発行) 解説

本記事は [生成AIセキュリティ by ナレコム Advent Calendar 2024](https://qiita.com/advent-calendar/2024/genai-sec-knowcom) の21日目の記事です。

本Advent Calendarは、国内で唯一の技術領域 **責任あるAI** の [MVP受賞者](https://mvp.microsoft.com/en-US/MVP/profile/28dff07e-3dba-4772-97b9-944418868456) を中心に、生成AIを含めたAIやデータを企業が利活用するときに気をつけるセキュリティやガバナンスを中心に紹介します。

### なぜ今、「セキュリティ関係者のためのAIハンドブック」なのか？

AI技術の進化は目覚ましく、セキュリティ分野においてもAIを活用した対策が不可欠になっています。しかし、AIの仕組みやリスクを理解せずに導入・運用すると、思わぬセキュリティホールを生み出す可能性があります。
そこで、IPAが公開したこのハンドブックは、セキュリティ関係者がAIを正しく理解し、安全に活用するための知識を提供することを目的としています。

### 「セキュリティ関係者のためのAIハンドブック」とは？

このハンドブックは、AI技術の基礎から、セキュリティ対策におけるAIの活用事例、リスク管理、法規制まで、幅広いテーマを網羅しています。
セキュリティ担当者がAI技術を理解し、自社のセキュリティ戦略にどのように組み込むかを検討する上で、非常に役立つ情報が満載です。

- 公式サイト: 

https://www.ipa.go.jp/jinzai/ics/core_human_resource/final_project/2022/AI-handbook.html

- PDF: 

https://www.ipa.go.jp/jinzai/ics/core_human_resource/final_project/2022/ngi93u0000002jj0-att/000099871.pdf


### ハンドブックの構成

ハンドブックは、大きく分けて以下の構成になっています。

1. **AIの基礎知識**: AIの定義、機械学習、深層学習などの基本概念を解説。
2. **セキュリティにおけるAIの活用**: 脅威検知、脆弱性診断、インシデント対応など、セキュリティ分野でのAI活用事例を紹介。
3. **AIのリスクと対策**: AI特有のリスク（バイアス、敵対的サンプル、データプライバシーなど）とその対策について解説。
4. **AIの倫理と法規制**: AIの倫理的な問題、個人情報保護法、著作権法などの関連法規制について解説。

### 特に注目すべきポイント

ハンドブック全体を通して重要なポイントは、AIのリスクと対策に関する部分です。AIは万能ではなく、データやアルゴリズムの偏りによって、意図しない結果を生み出す可能性があります。
例えば、

* **バイアス**: 学習データに偏りがあると、AIの判断にも偏りが生じる。
* **敵対的サンプル**: AIを誤認識させるような巧妙なデータを作成し、攻撃に利用する。
* **データプライバシー**: 個人情報を含むデータをAIに学習させる場合、プライバシー保護に配慮する必要がある。

これらのリスクを理解し、適切な対策を講じることが、AIを安全に活用するための鍵となります。

### まとめ：AI時代のセキュリティ担当者に求められること

「セキュリティ関係者のためのAIハンドブック」は、AI技術の進化に対応し、セキュリティを強化するための必携の書と言えるでしょう。
AIの基礎知識からリスク対策、法規制まで、幅広い知識を習得し、自社のセキュリティ戦略にAIを効果的に組み込むことが重要です。
AIを正しく理解し、安全に活用することで、より強固なセキュリティ体制を構築していきましょう。