OmniAICreator/Qiita-1.07M huggingface dataset:
【ChatGPT】に、o3-miniモデルが登場。

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

　今回は、ChatGPTに、o3-miniモデルが登場しましたので、そのご報告です。

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

　サムがポストしました。
　　[サム・アルトマンポスト](https://x.com/sama/status/1885441031656632737?t=-3wq9Q1JEShg255dcadLEw&s=19)
>（ChatGPT翻訳）
>o3-miniが登場！
>
>スマートで高速なモデル。
>
>ChatGPTとAPIで利用可能。
>
>ウェブ検索ができ、思考の過程も表示。
>
>無料プランのユーザーも利用可能！「推論」ボタンをクリック。
>
>ChatGPT Plusでは「o3-mini-high」を選択でき、より深く考え、より良い回答を提供。
>
>多くの人がo1よりも好むモデル。それなのに、これはミニモデル。
>
>今、大型モデルの開発に取り組んでいます。

　そう、
　　ChatGPTに、
　　　o3-miniモデルが登場です。

　しかも
　　Web検索も可能に。

　OpenAIもポストしています。
　　[OpenAI公式ポスト](https://x.com/OpenAI/status/1885406586136383634?t=bLz4-tVg7h2Jtp5jvGb2jQ&s=19)

　より詳しくは、こちらをどうぞ。
　　OpenAI公式ページです。
　　　[OpenAI o3-mini](https://openai.com/index/openai-o3-mini/)

　このページの要点をまとめました。
　　もちろん、ChatGPTさんに
　　　お願いしました😅
***
### **OpenAI o3-mini の要点**  

1. **新モデル「o3-mini」の特徴**  
   - STEM（科学・数学・コーディング）分野で優れた性能を発揮。  
   - 低コスト・低遅延で、開発者向けの機能（関数呼び出し、構造化出力など）をサポート。  
   - 推論の深さを「低・中・高」から選択可能。  
   - **画像解析は非対応**（画像関連タスクにはo1モデルを推奨）。  

2. **利用可能なユーザー**  
   - **ChatGPT Plus、Team、Proユーザー**：すぐに利用可能。  
   - **Enterpriseユーザー**：2月から提供予定。  
   - **無料ユーザー**も「Reason」オプションを選択すれば試用可能。  

3. **パフォーマンス向上**  
   - o1-miniと比較し、レート制限の緩和・低遅延を実現。  
   - Plus/Teamユーザーの1日あたりのメッセージ上限が **50 → 150** に増加。  

4. **総評**  
   - 高精度・高速な推論を求める技術ユーザーに適したモデル。  
   - 無料ユーザーも試せる点が新しい試み。
***

　こちらで
　　確認したことを報告します。

　まず、
　　画像やファイルは
　　　扱えません。

　次に、持っている知識ですが、
　　以下のようになりました。

　　GPT-4o
　　　2024年6月
　　o1
　　　2023年9月
　　o3-mini
　　　2021年9月
　　o3-mini-high
　　　2021年9月
　　GPT-4o-mini
　　　2021年9月
　　GPT-4レガシー
　　　2023年12月

　　はい、
　　　o3-miniは、
　　　　2021年9月までの
　　　　　知識しかありません。

　　o1の後継なのですから
　　　知識は同じ、と思っていましたが
　　　　何かマズいことでも
　　　　　あったのでしょうか。

　　無料ユーザーに使えるのは
　　　この知識の日付から判断すると、
　　　　Web版の無料ユーザーは、
　　　　　GPT-4oとo3-miniが
　　　　　　利用可能です。

　　　　　o3-miniの選択は、
　　　　　　電球💡マークをタップ。

　　　　残念ながら、
　　　　　スマホアプリを使う
　　　　　　無料ユーザーは
　　　　　　　Auto（自動切替）しか
　　　　　　　　選択肢がありません。

　問題の思考能力については、
　　みなさんが判断してください。

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

　今回は、ここまで。
WindowsでCAN通信（CANable使用）

Walfront社の USB to CANモジュールを使って WindowsでCAN通信してみました。

## USB to CANモジュールが使えるようになるまで

感情メーター|できごと
---|---
:smile: 80|Amazonで安いUSB to CANモジュールを見つけて即購入
:worried: 40|しかし、届いたのはモジュールのみで説明書のたぐいは無し
:kissing_smiling_eyes: 60|とりあえず Windows_PCにUSBケーブルで接続すると、赤青緑のLEDが点灯して、デバイスマネージャーのCOMポートにUSBシリアルデバイスとして認識された
:persevere: 30|このCOMポートにシリアルモニタで接続して、CANデータの流れているBusにケーブル接続したが何も出力されない
:scream: 10|WalfrontのホームページをみてもAmazonに飛ばされるのみ
:kissing: 30|とほうにくれていたが、Amazon掲載の商品紹介画像にCANableというキーワードを発見
:blush: 100|検索してみると、```The CANable 2.0 is a small low-cost open source USB to CAN adapter.```とのこと。そーゆーことかー。

## 使用機器

- Walfront社の [For CANable V2.0 USB to CAN module](https://www.amazon.co.jp/%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB-Type-%E9%9B%BB%E6%BA%90%E5%A4%89%E6%8F%9B%E3%82%A2%E3%83%80%E3%83%97%E3%82%BF%E3%83%BC-%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB%E3%83%90%E3%82%B9%E3%82%A2%E3%83%8A%E3%83%A9%E3%82%A4%E3%82%B6%E3%83%BC-%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%B1%E3%83%BC%E3%82%BF%E3%83%BC%E9%AB%98%E6%80%A7%E8%83%BD/dp/B0CYQXVGFJ?ref_=ast_sto_dp)
    - CANable 2.0 というオープンな設計に基づいて作られたデバイス
    - 使用方法は[CANableのホームページ](https://canable.io/)に掲載されている

## WindowsでCAN通信の手順

### 1. USB to CANモジュールをCAN Busに接続
この例ではOBDツールと直結した
![2025-02-01_01.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269407/92fd4416-d544-3e9d-c14b-c59762e0436e.png)

### 2. USB to CANモジュールをWindows_PCにUSBケーブル（Type C）で接続
赤青緑のLEDが点灯
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269407/13d84906-2f1a-5813-ff4c-ab5df000fe08.jpeg" width=25%></img>
デバイスマネージャーのCOMポートにUSBシリアルデバイスとして認識される
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269407/88a37e39-1356-d5db-03e3-21132bf78178.png" width=50%></img>

### 3. cangarooをインストール
[CANableのホームページ](https://canable.io/)から[cangaroo](https://canable.io/getting-started.html#cangaroo)というアプリケーションをダウンロードしてインストールする

### 4. cangarooの設定
以下のサイトを参考にしてcangarooを起動＆設定する

https://zenn.dev/nonnoise/articles/373cbf3831999f

### 5. CANのモニタリングができる
OBDツールからのリクエストデータが表示される
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269407/65686c69-926e-5fd4-178b-eff406199213.jpeg" width=50%></img>

以上です。分かってしまえば簡単。
Qiitaはじめました

# 1. Qiita始めました
本日、Qiitaを始めました。
大概のエンジニアの方がされていると思うテックブログ。
これまで別のサイトなどでもやっていたのですが、心機一転今日**2025/2/1**から始めようと思います。（自分でも長続きには期待していません。）
今年の目標として取り上げました。

# 2. 2025年の目標
- hhkbを購入したので十分にマスターしたいと思います
- タイピングが遅いのでブログを記載することで早くなる
- 定期的なブログの記載を行う（週に2回）
- 毎日コードを実装するトレーニングを行う

# 3. 私について
普通のエンジニアです。　Fラン文系大学卒業2年目社会人。
SESで現在、CMでも目にする製品の会社の自社開発部で働きながら、個人事業で仕事も請け負っています。
AWSとtypescriptが好きです。
現状には満足しておらず、今年は自分にとって重要な1年だと感じています。

# 本日の知見メモ（小さいことから）
- mac 全ての入力ソースで「数字の全角入力」をオフにする
【Power Automate】トリガーの作成方法について ～インスタントクラウドフロー(手動トリガー)編～

## 概要
Power Automate は、さまざまなトリガーを使って自動化のプロセスを開始することができます。
この記事では、Power Automate におけるトリガーの作成方法の１つである
「インスタントクラウドフロー(手動トリガー)」の作成方法について説明します。
トリガーの基本的な種類に関して、簡単にではありますが以下の記事において説明をしています。
今回取り扱いする `インスタントクラウドフロー` とはどういうものなのかについても説明をしていますので、ぜひご覧ください！！

https://qiita.com/Sanwa_Paint/items/659e451d33f011a59bf5

## インスタントクラウドフロー(手動トリガー)の作成手順

#### 1\. Power Automateにサインイン
+ 　Power Automate にサインインして、フローの作成を開始します。


#### 2\. 新しいフローを作成
+ Power Automateのホーム画面で「+ 作成」をクリックします。
+ 「インスタントクラウドフロー」を選択します。
　インスタントクラウドフローは、ユーザーがボタンを押すことによって手動で実行されるフローのことです。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3719434/e712c975-25d2-6932-ba65-1d0e6b2172e4.png)

#### 3\. トリガーの選択と設定
+ フローを構築する画面でトリガーを選択します。
+ ここで使用したいイベントトリガーを選択します。
+ 「フローを手動でトリガーする」を選択し、作成ボタンを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3719434/128c81ef-0f52-bb25-76e2-363dc9a5b6b7.png)

#### 4\. アクションの設定
+ トリガーボタンを押した時に発動させたいアクションを追加します。
`トリガーのボタンを押した時に Outlook にメールが飛ぶように設定します。`

+ 「メールの送信(V2)」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3719434/79a20a4f-bf63-f12f-35c5-a09ce40fc39b.png)


+ 各項目に値を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3719434/7bb4e0ee-f003-bd8a-7761-9b4c51ea1a94.png)

#### 5\. フローを保存してテスト
+ `保存`を押してフローを保存を行い、保存ができたらフローのテストを行います。
+ テストを実行して Outlook に正常にメールが送信されていることを確認してください。

【 Outlook へのメール】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3719434/b096c60f-e90e-3345-edec-16997208773d.png)

【テスト完了】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3719434/3f866b78-1f90-c178-a0bc-7054dddfe825.png)

:::note warn
注意点
+ Outlook へ接続する際 Microsoft アカウントに正しくサインインしていることを確認してください。
:::

### まとめ
とても簡易的な一例ではありますが、以上が「インスタントクラウドフロー(手動トリガー)」の作成方法になります！
この他にも随時、他の種類のフローやトリガーについて記事を作成していく予定です！
各トリガー記事の詳細な設定方法や応用についても記事を作成していければと思っています！
ぜひ、ご活用ください！

https://qiita.com/Sanwa_Paint/items/c318c9babd8c8f111f9d
M2MacOSでgoコマンド導入手順

## 目標
macOSで`go`コマンドを使用できるようにする
自分用です

## インストーラのダウンロード
下記のリンクからDownloadボタンを押下

https://go.dev/doc/install

今回はstable版(1.23.5)をインストールしたいので下記の条件のものを入れる
- kind:Installer
- OS:macOS
- ARC:ARM64(M2なので）

選択するとインストーラがダウンロードされる

## インストーラの起動
### はじめに
![スクリーンショット 2025-02-01 11.32.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/844247/4b5c4b56-644d-9bf3-3450-2038dc4e212a.png)
続けるを押下

### インストール先
![スクリーンショット 2025-02-01 11.35.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/844247/f5f37ed5-d29a-fc77-cd68-81b0cb94a787.png)
続けるを押下

### インストールの種類
インストールを押下でtachIdまたはOSのパスコードを入力

![スクリーンショット 2025-02-01 11.36.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/844247/5b9a7493-dd9f-c770-f96d-9d2e403df8d1.png)

### インストール

![スクリーンショット 2025-02-01 11.37.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/844247/61b1ba8d-d1c3-8613-126a-e0a9f43d852f.png)
続けるを押下
### 概要
![スクリーンショット 2025-02-01 11.39.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/844247/b88d6f3f-8177-d49e-bb2c-0bf8921861ca.png)
閉じる

## installできたか確認

```shell
go version
```
```console
% go version go1.23.5 darwin/arm64
```

めちゃくちゃ簡単だった！
macOS搭載フォントの太さを調べてみた

## 続編です
[Windows搭載フォントの太さを調べてみた](https://qiita.com/harycurl/items/2bf86f60fa54cae3bc60) に続いて、macOS 搭載書体についても太さを調べた。
なお、手持ちの mac が古いため、 Monterey 搭載のフォントで検証している。

## 結果
一(いち)の細い順に並べている。
| フォント名 | 一(いち) | ー(長音) |
|:-:|:-:|:-:|
| ヒラギノ角ゴシック W0  | 2.0 | 2.3 |
| ヒラギノ角ゴシック W1  | 4.5 | 4.6 |
| ヒラギノ角ゴシック W2 | 5.6 | 5.8 |
| 筑紫A丸ゴシック レギュラー  | 5.8 | 5.6 |
| 游ゴシック体 メディアム  | 6.4 | 7.1 |
| 凸版文久ゴシック レギュラー  | 6.6 | 7.2 |
| ヒラギノ角ゴシック W3  | 6.9 | 7.2 |
| ヒラギノ角ゴシック W4  | 8.5 | 8.8 |
| 凸版文久ゴシック デミボールド  | 9.2 | 9.8 |
| ヒラギノ角ゴシック W5  | 10.2 | 10.5 |
| 筑紫A丸ゴシック ボールド  | 10.8 | 9.9 |
| 游ゴシック体 ボールド  | 11.3 | 11.8 |
| ヒラギノ角ゴシック W6 | 11.8 | 12.7 |
| ヒラギノ角ゴシック W7  | 13.7 | 15.2 |
| 凸版文久見出しゴシック | 14.8 | 15.1 |
| ヒラギノ角ゴシック W8 | 15.8 | 17.8 |
| ヒラギノ角ゴシック W9 | 18.2 | 21.0 |

（参考）
- ヒラギノ角ゴProN/StdNの太さはヒラギノ角ゴシックと同じ
- 筑紫B丸ゴシックの「一(いち)」の太さは筑紫A丸ゴシックと同じ
- 明朝体の「一(いち)」のウロコを除いた部分の太さは以下の通り
ヒラギノ明朝ProN W6：2.1
凸版文久見出し明朝：2.2
ヒラギノ明朝ProN W3、游明朝体デミボールド：2.3
游明朝体ミディアム：2.5
游明朝体エクストラボールド：2.7
凸版文久明朝：3.4

## ヒラギノ角ゴシックのウェイト差
| ウェイト | 一(いち) | ー(長音) |
|:-:|:-:|:-:|
| W0→W1 | 2.5 | 2.3 |
| W1→W2 | 1.1 | 1.2 |
| W2→W3 | 1.3 | 1.4 |
| W3→W4 | 1.6 | 1.6 |
| W4→W5 | 1.7 | 1.7 |
| W5→W6 | 1.6 | 2.2 |
| W6→W7 | 1.9 | 2.5 |
| W7→W8 | 2.1 | 2.6 |
| W8→W9 | 2.4 | 3.2 |
[Linux][command] シェル変数と環境変数_echo, unset, export

# シェル変数
有効範囲：定義したシェル・プロセスのみ
環境変数への変更方法：exportコマンドを使用する

# 環境変数
有効範囲：定義したシェル・プロセス・子プロセス

# unsetコマンド
~~~terminal
$ unset 変数名
~~~

| オプション | 由来 | 説明 |
|:--|:--|:--|
| default | unset | - 指定したシェル変数や関数を削除（環境変数も含む） |


# exportコマンド 
~~~terminal
$ export 変数名
~~~

## シェル変数から環境変数
~~~terminal:BashA
$ EV=world
$ SV=local
$ export EV
$ bash ←新しいシェルを起動
~~~

~~~terminal:BashB（子プロセス）
$ echo $EV
// 出力結果
// world ←引き継がれる（環境変数化）

$ echo $SV
// 出力結果
// 　　　←引き継がれない
~~~

## 環境変数PATHに値の追加
~~~terminal
$ export PATH=$PATH:値(追加するディレクトリ名)
~~~

# 代表的な環境変数
| 環境変数 | 由来 | 説明 |
|:--|:--|:--|
| `HOME` | home directory | 現在のユーザーのホームディレクトリのパス<br>例: `/home/user` |
| `USER` | user name | 現在のログインユーザー名 |
| `PATH` | executable path | 実行ファイルを検索するディレクトリのリスト<br>コロン `:` で区切る |
| `PWD` | present working directory | 現在の作業ディレクトリ（カレントディレクトリ） |
| `LANG` | language | システムのロケール（言語や文字コードの設定）<br>例: `ja_JP.UTF-8` |
| `HOSTNAME` | host name | マシンのホスト名 |
| `EDITOR` | editor | デフォルトで起動するエディタ |
| `LD_LIBRARY_PATH` | loader dynamic library path | 共有ライブラリのパス |
| `HISTFILE` | history file | コマンド履歴を保存するファイルのパス `~/.bash_history` |
| `HISTSIZE` | history size (memory) | `現在のシェル` に保存されるコマンド履歴の最大保存数<br>シェル終了後に<INS>**削除** |
| `HISTFILESIZE` | history file size | `~/.bash_history` に保存されるコマンド履歴の最大保存数<br>シェル終了後に<INS>**維持** |


# Ping-t
変数値設定
- [3442](https://mondai.ping-t.com/question_subjects/31/question_sessions/32246633/progressing_questions/494045381)

環境変数
- [3080_PATH](https://mondai.ping-t.com/question_subjects/31/question_sessions/32193725/progressing_questions/493221755)
- [3367_EDITOR](https://mondai.ping-t.com/question_subjects/31/question_sessions/32368296/progressing_questions/495929821)
- [3329_有効範囲、変更方法](https://mondai.ping-t.com/question_subjects/31/question_sessions/30197501/progressing_questions/462632166)
- [3622_HISTFILE](https://mondai.ping-t.com/question_subjects/31/question_sessions/31913990/progressing_questions/489024889)
- [3623_HISTFILESIZE](https://mondai.ping-t.com/question_subjects/31/question_sessions/30521989/progressing_questions/467602306)
- [3561_HOSTNAME](https://mondai.ping-t.com/question_subjects/31/question_sessions/32400273/progressing_questions/496436005)
- [3562_HOME](https://mondai.ping-t.com/question_subjects/31/question_sessions/31916304/progressing_questions/489057813)
- [3563_LANG](https://mondai.ping-t.com/question_subjects/31/question_sessions/30521989/progressing_questions/467602307)
- [3565_PWD](https://mondai.ping-t.com/question_subjects/31/question_sessions/31941533/progressing_questions/489430953)

unset
- [3441_unset](https://mondai.ping-t.com/question_subjects/31/question_sessions/32018863/progressing_questions/490569324)

export
- [3645_export](https://mondai.ping-t.com/question_subjects/31/question_sessions/31870469/progressing_questions/488372715)
- [3664_export PATH=$PATH:](https://mondai.ping-t.com/question_subjects/31/question_sessions/32076138/progressing_questions/491415222)
WindowsのSystem32、UAC、管理者の用語の整理

# Windowsにおける管理者ユーザーと標準ユーザーとは
Windowsのユーザーは管理者ユーザーと標準ユーザーの2つに分類出来る。
管理者アカウントはWindowsPC全体を管理できるアカウント。レジストリの変更等は管理者。設定のユーザ情報に「管理者」と表示される。
標準アカウントはほとんどの一般操作のほか、PCのセキュリティに影響しない設定を変更できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528926/2c573e53-7c28-e624-8dae-e3ad371829f1.png)


# System32とは
カレントディレクトリともいう。Windows の動作に必要なシステムファイルや管理ツールが格納されている重要なフォルダ。
管理者権限で実行する場合、システムの重要な操作を行うことが前提となるため、あらかじめシステム関連のファイルが置かれている場所（System32）を初期ディレクトリとして設定している。

### System32という名前はなぜか
System32という名前の理由は以下。

>System32とSys Wow64はなぜ、このネーミングなのでしょうか？
厳密には名前が異なるのでそもそも違う意味を示しているのかしれませんが、普通の感性なら
32bitシステムをSystem32
64bitシステムをSystem64 と名付けるような気がします。

>ぶっちゃけていうと原因はSystem32なんていうフォルダを作っちゃった時代にさかのぼるんでしょう。んで互換性やら何やらの問題で今さら変えられないと。だから64bit版では32というのは名前の一部であってbit数と何ら関係ありませんってことになってます。
おそらくMS製品の系譜をたどっていけばWindowsNTの発祥にまで行き着くでしょう。3.1からあったかな？NT3.51は使ってましたがSystem32というディレクトリがあったと思います。あの当時は16bitと区別するために32と名付けることに意味があったんでしょう。最初は全くの新規OSだったから、過去の互換性とか気にしないで名前をつけることができたはずですから。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13184686018

### SysWOW64とは
64bitのWindowsを使っているとシステムドライブに「SysWOW64」というフォルダがある。パスは「C:¥Windows¥SysWOW64」。このSysWOW64フォルダには32bit用のファイルがインストールされるフォルダとなっている。各種プログラムを動作させるのに必要な32bitの「～.dll」ファイルが、SysWOW64フォルダに格納されるようになっている。

### SysWOW64フォルダとSystem32フォルダとの違い
System32フォルダにはWindows64bit用のファイルがインストールされる。SysWOW64にはWindows32bit用のファイルがインストールされる。
何で「32」と名称が付いているのに64bitのファイルがこっちにインストールされるのか？
「SysWOW64」とは「Windows on Win64」…つまり、64bitのOSで32bitのWindowsを動かすためのサブシステムとなっているので、SysWOW64フォルダに32bitファイルがインストールされる。System32は64bitのWindowsではメインシステムとなるので、64bitのファイルがこちらにインストールされるようになっている。

https://aprico-media.com/posts/3735

# UAC(User Account Control)とは
Microsoftのセキュリティツール。悪意のあるソフトウェアの侵入を防止する。UACでユーザーに管理者権限を要求する。要求が許可されると、管理者権限に昇格する。昇格されたプロセスは、システムの標準的な動作環境として C:\Windows\System32 を使用するように設計されている。



# 特権アカウントとは
Windowsにおける管理者のこと。WindowsのAdministratorユーザーに該当する。
Pythonの__call__って何？

下記プログラムを実行して挙動を確認した
```python
class test:
    def __init__(self, x, y):
        print("run __init__")
        self.x = x
        self.y = y
        self.print()
    
    def __call__(self, c):
        print("run __call__")
        self.x = self.x * c
        self.y = self.y * c
        self.print()
    
    def update(self, c):
        print("run update()")
        self.x = self.x * c
        self.y = self.y * c
        self.print()
    
    def print(self):
        print(f"x = {self.x}")
        print(f"y = {self.y}")

x = 2
y = 3
c1 = 3
c2 = 4
t = test(x, y)
t(c1)
t.update(c2)
t.update(c1)
t(c2)
```

下記はプログラムの実行結果。

```
run __init__
x = 2
y = 3
run __call__
x = 6
y = 9
run update()
x = 24
y = 36
run update()
x = 72
y = 108
run __call__
x = 288
y = 432
```

上記実験から、分かったこと。
* __call__は、作成済みのインスタンスを呼び出したときに実行される。
* __init__は、インスタンスの作成時に実行される。

感想
* __call__は、作成済みのインスタンス名に()を付けると実行できるが、直観的でないと感じた
   * 用途にもよるだろうが、実現したい処理があるなら、分かりやすいメソッド名を付けたメソッドを作成して、そっちを使ったほうが可読性が上がりそう。__call__ではないと困るケースがあれば、詳しい方、教えてください。
出口温度に応じて流入温度を決定する（OpenFOAM）

# はじめに
OpenFOAMの境界条件の`exprFixedValue`を使用して、流出境界の平均温度から流入温度を決定します。
流出境界の平均温度は、OpenFOAMのexpressions syntaxの機能を使って計算しています。

# サンプルモデル

出口温度が20℃になるように調整しながら、流入温度を変更しています。

![Temperature.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3948655/146ad6c0-f397-dc42-23f2-3818f65b8330.gif)

出口温度（outlet）と流入温度（inlet）の履歴のグラフです。複雑な制御[^control]はしていないので、一度出口温度がオーバーシュートしていますが、最終的には20℃に近づいています。
![graph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3948655/dd5d3e70-9f17-a9af-2e83-2e0574aa33b6.png)

[^control]: この例はP制御に相当します。

[こちらのsample_averagedOutlet](https://github.com/jmu-26/OF_inletTempExpression)にOpenFOAM v2212で動作確認をしたサンプルモデルが置いてあります[^PID]。

[^PID]: 同じレポジトリにある「サンプル２：sample_probe_PID」は、PID制御のサンプルです。
[こちら](https://qiita.com/jmu26/items/8f3b6de21e48d599f51d)に説明の記事があります。


# inletパッチの温度の境界条件
流入境界である`inlet`パッチでの温度の境界条件は、以下のように、`exprFixedValue` [^type] を使用しています。

[^type]: `uniformFixedValue`の境界条件を使って、`expression`のタイプを指定しても同様の設定をすることができます。
```c++:T（inletパッチの境界条件の部分）
    inlet
    {
        type            exprFixedValue;

        variables
        (
            "relax = 0.005"
            "currentT = weightAverage(T)"
            "outletT{outlet} = weightAverage(T)"
            "nextT = currentT + relax*(293.15 - outletT)"
        );

        valueExpr       "nextT";

        value           uniform 293.15;
    }
```

 これ以降では、この`exprFixedValue`の各設定項目について説明します。

## 各変数の定義と計算（variables）
`variables`の部分で各変数（パラメータ）の定義と計算を行っています。


```c++
            "relax = 0.005"
```
後で使用する`relax`という変数に値を代入しています。これは、流入温度変化の緩和係数に相当していて、P制御のゲインと考えることもできます。

```c++
            "currentT = weightAverage(T)"
```
この境界条件を設定している境界パッチ`inlet`での平均温度を計算して、`currentT`という変数に代入しています。
`weightAverage(...)`は、expressions syntaxの関数です。カッコの中の引数には、定義されているフィールドの名前を記述します。
このような関数には、その他にも面積で重み付けをした合計（面積積分）を表す`weightSum`などもあります。

```c++
            "outletT{outlet} = weightAverage(T)"
```
先ほどと同じように、今度は流出境界のパッチ`outlet`の平均温度を計算して、`outletT`という変数に代入しています。
左辺側の変数に`{パッチ名}`を加えることで、指定したパッチでの値を計算することができます。
個体熱連成計算の場合で、個体など他の領域の温度を参照する場合には、`{パッチ名/領域名}`という書式を使います。

```c++
            "nextT = currentT + relax*(293.15 - outletT)"
```
設定する温度の値を計算して`nextT`という変数に代入しています。
流出境界の目標の温度20℃（293.15K）と計算した流出境界の現在の平均温度`outletT`との偏差を計算して、それに緩和係数（ゲイン）を乗じることで現在の温度からの変化量を求めています。

## 境界条件値の設定（valueExpr）

`valueExpr`で境界条件値を設定します。ここでは、`variables`で計算した`nextT`の値を設定しています。

```c++
        valueExpr       "nextT";
```

# おわりに
このようにOpenFOAMでもexpressions syntaxの機能を使用すれば、OpenFOAMのソースコードを書かなくても境界条件の設定だけで、他の境界条件の値を取得して、それに応じた値を設定できます。
expressions syntaxについは、公式にも[ここ](https://www.openfoam.com/documentation/guides/latest/doc/openfoam-guide-expression-syntax.html)で説明されていますが、ここに書かれている以外にも説明されていない機能が実装されています。ただし、まだバグや思いもよらない制限などがありそうなので、使う場合にはよく検証を行ってから使ったほうがよいです。
[Linux][command] ファイル圧縮・解凍・標準出力_gzip, bzip2, xz, gunzip, bunzip, zcat, bzcat, xzcat

# 圧縮効率と処理時間
~~~
圧縮率
低 <-----------------> 高
処理時間
短 <-----------------> 長
gzip       bzip2       xz
~~~

# 圧縮
## gzip, bzip2, xzコマンド
~~~terminal:
$ gzip [オプション] [ファイル名]
$ bzip2 [オプション] [ファイル名]
$ xz [オプション] [ファイル名]
~~~

|オプション|由来|説明|
|:--|:--|:--|
|default||- ファイルを `.gz`, `.bz2`, `.xz`形式で圧縮する|
|-d|decompress (解凍)|- ファイルを解凍する|
|-k|keep (保持)|- 圧縮・解凍時に元のファイルを保持する|
|-c|copy to stdout (標準出力)|- 圧縮結果を標準出力に書き出す<br>- 圧縮後も元のファイルを保持する|
|-l|list (一覧表示)|- ファイル内の元のファイル情報（サイズや圧縮率）を表示する|
|-f|force (強制)|- 既存のファイルがあっても強制的に処理を実行する|

# 解凍
## gunzip, bunzip, unxzコマンド
~~~terminal:
$ gunzip [ファイル名]
~~~

|オプション|由来|説明|
|:--|:--|:--|
|default|GNU unzip|- ファイルを解凍する<br>- `.gz` 拡張子のついたファイルを元の状態に戻す|
|`-c`|stdout (標準出力)|- 解凍結果を標準出力に表示する（ファイルには書き込まない）|
|`-f`|force (強制)|- 既存のファイルがあっても強制的に解凍する|
|`-l`|list (一覧表示)|- `.gz` ファイル内の元のファイル情報（サイズや圧縮率）を表示する|
|`-t`|test (テスト)|- `.gz` ファイルが正常に解凍できるかをチェックする|
|`-v`|verbose (詳細表示)|- 解凍時に詳細な情報を表示する|
|`-h` または `--help`|help (ヘルプ)|- コマンドの使い方を表示する|

# 標準出力
## zcat, bzcat, xzcatコマンド
~~~terminal:
$ zcat [圧縮ファイル名]
~~~

|オプション|由来|説明|
|:--|:--|:--|
|default|zip + concatenate| - `.gz` 形式で圧縮されたファイルを解凍せずに中身を標準出力に表示する<br> - `cat` コマンドのように使えるが、圧縮ファイルに対応 |



# Ping-t
gzip
- [3172_gzip, bzip](https://mondai.ping-t.com/question_subjects/31/question_sessions/31069115/progressing_questions/476102913)
- [3173_gzip](https://mondai.ping-t.com/question_subjects/31/question_sessions/30890995/progressing_questions/473266338)
- [3281_gzip -c ファイル >1 ファイル](https://mondai.ping-t.com/question_subjects/31/question_sessions/32209448/progressing_questions/493463148)
- [3282_gzip -r](https://mondai.ping-t.com/question_subjects/31/question_sessions/30521989/progressing_questions/467602311)
- [3378_gzip](https://mondai.ping-t.com/question_subjects/31/question_sessions/31913990/progressing_questions/489024892)




bzip
- [3176_bzip2 -d, bunzip2](https://mondai.ping-t.com/question_subjects/31/question_sessions/31223415/progressing_questions/478442915)
- [3283_bzip2 -c](https://mondai.ping-t.com/question_subjects/31/question_sessions/32244301/progressing_questions/494010602/edit?no_selection=false)
- [3317_bzip2](https://mondai.ping-t.com/question_subjects/31/question_sessions/30521989/progressing_questions/467602310)


xz
- [3320_xz -d](https://mondai.ping-t.com/question_subjects/31/question_sessions/32246633/progressing_questions/494045392)
- [3321_xz -l](https://mondai.ping-t.com/question_subjects/31/question_sessions/31375489/progressing_questions/480744518)
- [3609_xz -l](https://mondai.ping-t.com/question_subjects/31/question_sessions/31069115/progressing_questions/476102906)

zcat
- [3355_zcat](https://mondai.ping-t.com/question_subjects/31/question_sessions/31913990/progressing_questions/489024893)

xzcat
- [3354_xzcat](https://mondai.ping-t.com/question_subjects/31/question_sessions/31916304/progressing_questions/489057826)
React × Typescript× Viteでimport文を絶対パスで記述したい

## 経緯
これまで`import`文を相対パスで記述していました。
```typescript
import { Modal } from '../../Components/Modal';
```

フォルダ階層が浅い時にはまだいいのですが、階層が深くなるにつれてどこを見に行っているのかわからなくなり、ぱっと見の見通しがかなり悪くなっていました。

ということで`import`文を絶対パスで記述するように設定しました。

## 環境
- React
- Typescript
- Vite

## 設定内容
`tsconfig.json`、`tsconfig.app.json`、`vite.config.ts`に設定追加していきます。

`tsconfig.json`に`baseurl`と`paths`を追加します。
`baseurl`はTypescriptのモジュール解決の基準になるディレクトリを設定します。
`pathsも`一緒に記述します。
今回は"@"起点で絶対パスを記述できるようにしたかったので以下のような設定にしています。
```typescript
 "compilerOptions": {
    "baseUrl": ".",         // ←追加
    "paths": {              // ←追加
      "@/*": ["./src/*"]    // ←追加
    }
  }

// tsconfig.app.jsonにも同じ設定をする

```

`tsconfig.app.json`にも同じように設定を追加しないとエラーになってしまったので、こちらにも同様の
設定を追加しておきます。

次に`vite.config.ts`にも設定を追記します。
`resolve.alias`を追加します。
こちらにも設定を追記しないとビルド時にエラーが出ます。

```typescript
export default defineConfig({
  root: './',
  resolve: {        // ←追加
    alias: {        // ←追加
      "@": "/src",  // ←追加
    }
  }
  })
```


設定終わったら各ファイルの`import`文を直しましょう。
```typescript
import { Modal } from '@/components/Modal/Modal';
```

以上です。
PC基礎用語　メモリ（Memory）とは


## 1. メモリとは？
メモリ（Memory）は、データを一時的に記憶するコンピューターの部品です。英語の「memory（記憶）」が由来であり、主に作業中のデータやプログラムを保存する役割を担います。

メモリは机の広さに例えられ、広いほど多くの作業が同時にスムーズに行えるという特徴があります。コンピューターの処理速度に直接影響を与えるため、メモリの容量は非常に重要です。

---

## 2. メモリの種類
メモリには大きく分けて以下の2種類があります。

### ① RAM（ランダムアクセスメモリ）
- 読み書き可能なメモリ。
- **主記憶装置（メインメモリ）**として使用され、電源を切るとデータが消える（揮発性メモリ）。
- パソコンやスマートフォンで「メモリ」と言うと、通常このRAMを指す。

#### RAMの役割
コンピューターの電源が入ると、OS（Windows、MacOSなど）やアプリケーションのデータがハードディスク（HDD）やSSDからRAMへ読み込まれます。CPUはRAM内のデータを処理し、その結果をRAM上に保持します。例えば、Excelで「名前を付けて保存」を押すと、RAMにあるデータがHDDやSSDへ書き込まれます。

#### RAMの特徴

| 項目 | 説明 |
|------|------|
| データの一時保存 | 作業中のデータを保持 |
| 揮発性 | 電源を切るとデータが消える |
| 高速動作 | HDDやSSDよりも圧倒的に高速 |
| 容量の影響 | 容量が大きいほどスムーズに動作 |

---

### ② ROM（リードオンリーメモリ）
- 読み出し専用のメモリ。
- 電源を切ってもデータが消えない（不揮発性メモリ）。
- BIOSやファームウェアなど、コンピューターの基本的な動作に必要なプログラムを保存するために使用される。
- USBメモリやCD-ROMもROMの一種。

---

## 3. メモリの形状（フォームファクタ）
メモリにはデスクトップPC用とノートPC用で形状が異なります。

| メモリの種類 | 特徴 |
|-------------|------|
| DIMM（ディム） | デスクトップPC用の標準的なメモリモジュール |
| SO-DIMM（ソーディム） | ノートPCや小型PC用のメモリ（DIMMより小型） |

---

## 4. メモリの規格
メモリの規格は、半導体標準化団体 **JEDEC** によって定められています。新しい規格ほど転送速度が速く、容量も大きくなる傾向があります。

### 📌 主要なメモリ規格（新しい順）

| メモリ規格 | 転送速度（例） | 特徴 |
|------------|--------------|------|
| DDR5 | 4800MHz（PC5-38400） | 最新規格、高速、省電力化 |
| DDR4 | 3200MHz（PC4-25600） | 現在の主流、DDR3より高速 |
| DDR3 | 1600MHz（PC3-12800） | 旧世代、Windows 7や8のPCで採用 |
| DDR2 | 800MHz（PC2-6400） | さらに古い |
| DDR | 400MHz（PC3200） | 初期のDDRメモリ |

### ✅ DDR（ダブルデータレート）とは？
- 1クロックあたり2回のデータ転送を行う方式。
- DDR2, DDR3, DDR4, DDR5と進化するにつれ、高速化＆省電力化が進んでいる。

### メモリ規格の詳細

| チップ規格 | モジュール規格 | 速度 |
|------------|--------------|------|
| DDR4-3200 | PC4-25600 | 3200MT/s |
| DDR3-1600 | PC3-12800 | 1600MT/s |
| DDR2-800  | PC2-6400  | 800MT/s  |

**計算方法：** チップ規格 × 8 = モジュール規格

---

## 5. メモリの容量と動作
- 容量が多いほど、同時に処理できるデータ量が増える。
- 昔のPC（Windows 98）では、32MBや64MBのメモリが主流だったが、現在は**4GB、8GB、16GB、32GB**などが一般的。
- **1024MB = 1GB**（2進数の倍数で増加）。

### 📌 メモリの目安

| メモリ容量 | 用途 |
|------------|------|
| 4GB  | 軽作業（ネット、メール） |
| 8GB  | 一般的な作業（オフィスソフト、動画視聴） |
| 16GB | ゲーム、動画編集、プログラミング |
| 32GB以上 | 3Dモデリング、プロ向け作業 |

---

## 6. メモリの増設とデュアルチャネル

### 増設時のポイント
- PCのマザーボードの対応規格を確認（DDR4/DDR5など）。
- 同じ規格・速度のメモリを選ぶとトラブルを防げる。

### ✅ デュアルチャネル（Dual Channel）とは？
- **同じ規格・容量**のメモリを2枚組で使用すると、転送速度が向上する技術。
- 例：
  - **4GB×1枚より 2GB×2枚の方が速い**。
  - **8GB×1枚より 4GB×2枚の方が効率的**。

### トリプルチャネル（Triple Channel）
- 一部のハイエンドPCで採用。

---

## 7. VRAM（ビデオメモリ）
- グラフィック処理専用のメモリ。
- メインメモリとは別に確保される。
- グラフィックボード（GPU）に搭載されることが多い。

### 📌 VRAMの影響

| VRAM容量 | 用途 |
|----------|------|
| 2GB  | 軽いゲーム |
| 4GB  | フルHDゲーム |
| 8GB  | 4Kゲーム、動画編集 |
| 16GB以上 | 3Dレンダリング |

---

## 8. 仮想メモリ
- HDDやSSDの一部をメモリとして使用する技術。
- メモリ不足時に仮想メモリへデータを退避させるが、実際のRAMより遅いため多用するとパフォーマンスが低下する。

---

## 9. まとめ
✅ **メモリはコンピューターの「作業台」**  
✅ **規格はDDR5 > DDR4 > DDR3の順に高速**  
✅ **容量が多いとPCが快適に動作**  
✅ **デュアルチャネルで転送速度UP**  
✅ **VRAMはグラフィック処理専用**  

メモリ選びや増設の際は、**対応規格と用途をしっかり確認**することが重要です。

> 引用 https://www.pc-master.jp/words/memory.html
OpenCVスクリプト起動時にQt platform plugin "xcb"エラー

OpenCVをimportしたpythonスクリプトを実行すると
```
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/ubuntu/.pyenv/versions/taichofu_env/lib/python3.6/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
```
というエラーが出て、いろいろ対策を試みると
```
ImportError: /home/???????/miniconda3/envs/ros/lib/python3.10/site-packages/PyQt5/QtWidgets.abi3.so: undefined symbol: _ZdlPvm, version Qt_5
```
というエラーに落ち着いたりする。
検索すると多くのサイトがヒットします。私の場合それらの方法では解決しませんでした。参考にしたのは次のサイト
[Problem with PyQT5 in Ubuntu 22.04 not fount _ZdaPvm](https://stackoverflow.com/questions/74997556/problem-with-pyqt5-in-ubuntu-22-04-not-fount-zdapvm)
condaの仮想環境のQt5パッケージを/usr/libのもので置き換えてしまう方法です。
参照しているサイトの環境依存の場所を自分の環境に読み替えて
```
(base) ~/miniconda3/envs/ros/lib/python3.10/site-packages$ mv PyQt5 __PyQt5
$ mv PyQt5 __PyQt5
(base) ~/miniconda3/envs/ros/lib/python3.10/site-packages$ ln -s /usr/lib/python3/dist-packages/PyQt5 .

```
で解決しました。
おそらくconda環境のPyQt5のバージョン
```
(ros) $ pip list | grep Qt
PyQt5                                5.15.6
PyQt5-Qt5                            5.15.16
PyQt5_sip                            12.16.1
```
とホストにインストールしたPyQt5の関連ライブラリのバージョン
```
$ dpkg -l | grep pyqt5
ii  pyqt5-dev                                         5.15.6+dfsg-1ubuntu3                    all          Development files for PyQt5
ii  pyqt5-dev-tools                                   5.15.6+dfsg-1ubuntu3                    amd64        Development tools for PyQt5
ii  python3-pyqt5                                     5.15.6+dfsg-1ubuntu3                    amd64        Python 3 bindings for Qt5
　　　・・・・・・
```
の違いが原因の一つと推測しますが、動いてしまったのでここまでです。
conda環境を使っていて、同様のトラブルでお悩みの方は試してみてください。リンクを修正する前にオリジナル(.../site-packages/PyQt5)のバックアップをわすれずに
PowerShell 1行でフォルダ内のすべてのファイル名の先頭に更新日時を入れる

写真など、たくさんのファイルをファイル名の重複なく、かつ日付でソートしやすいようにファイル名の先頭に日付の固定長文字列をまとめて追加できる1行スクリプトを作成しました。日常使いのメモとして残します。

ファイルが入っているフォルダをカレントフォルダーにしてPowerShellターミナルを開き、以下の一行をコピペして`Enter`キーを押します。

```PowerShell:rename.ps1
(Get-ChildItem -File .) | Rename-Item -NewName {$_ -replace "^", $_.LastWriteTime.ToString("yyyyMMdd")}
```

# 実行イメージ 
実行のイメージはこちら。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197689/4174672c-ae6a-4b1e-6336-1d0bded70cd8.png)

これで、カレントフォルダーのすべてのファイルのファイル名の先頭に、各ファイルの最終更新日時を表す8文字の数字が追加されます。 

```:実行前
file01.png
file02.png
file03.png
file04.png
file05.png
file06.png
file07.png
file08.png
```

```:実行後
20250201file01.png
20250201file02.png
20250201file03.png
20250201file04.png
20250201file05.png
20250201file06.png
20250201file07.png
20250201file08.png
```
Raspberry Pi 5 2GBで自動車的ななにかを作る

題名のままですが、内容を**詳細**に書きます。
結構前に作ってネタがないのでこれを書きます。
これをもとに作っても責任は取りません←へーってぐらいで読んでってください
# 仕様
・Raspberry Pi 5 2GB ←重いものを動かすことでもないので

https://akizukidenshi.com/catalog/g/g129606/

・Maker drive ←これでモーターを制御できます。

https://akizukidenshi.com/catalog/g/g116281/

・HC-SR04 ←最悪なくていいです。(理由は後述します)

https://akizukidenshi.com/catalog/g/g111009/

・カメラ ←一番安いのを選択

https://akizukidenshi.com/catalog/g/g117368/

・タイヤ系は家に落ちていたのを使用したのですがこういうのを使用すればいいです。

![DCモーター.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3994157/5140a092-2423-85e9-1b4a-924962edf692.png)

・オスメスやオスオスのジャンパー(普通のものでいいです)
・LED　ライトなどに
・ディスプレイ←今のところ使ってません
# 図
**配置**
![無題のプレゼンテーション.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3994157/e0ff9933-3527-cc50-e867-9cbfdab5db59.jpeg)
**線**
![無題のプレゼンテーション (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3994157/0dc3ff90-ca53-ecc1-34c7-a330b6a629a2.jpeg)

# 仕組み　(ARマーカー)
カメラが画像を取得
↓
その画像を解析
↓
写っているARマーカーから行動を判断する
↓
それを実際にモーターで駆動

あとでプログラムなども載せます
# プログラム qiita

https://github.com/saradaabura/ar_car/tree/main
意味のある説明の作り方





コンピュータは、人間が考えるための道具です。
数値計算でも、機械学習でも、自動生成でも一緒です。
考えるための道具として使えば最強です。
コンピュータに使われる人は最低かもしれません。

Inspirationというソフトがありました。
https://www.inspiration-at.com/
今でもあるんですね。
Idea processorと呼ばれていました。
考えるための道具そのものです。

箇条書きに考えをまとめれば、
紙芝居(slide)に変換してくれるソフトです。

Microsoftから発売されたPowerPointも類似の機能があります。

箇条書きに書いて、紙芝居にするのが基本機能です。

各頁に書いたものは、全体で一括して表示でき、順番を入れ替えたり、上下関係、集合関係を変えることができます。
この機能を使わずに、PowerPointを使うのは無意味なだけでなく、無駄な作業を強いることになります。



Marpでスライドを左右に分割する方法
https://qiita.com/ShibuKazu/items/8c35f8b6ebe24af03cdc


[UE4]UE4でアコーディオンメニューを作る
https://qiita.com/LinPA/items/420abd464bec092f3aa2

# 色
《UI/UX》2018年のトレンドカラーでグラデーション作りました。
https://qiita.com/uto-usui/items/b2983593c16a5b1b5a22

プログラマが知っているとよい色(1)使い(JIS安全色)
https://qiita.com/kaizen_nagoya/items/cb7eb3199b0b98904a35

勘違い
思い込み
誤打(type miss)
やっとAWS全冠(12冠）したので勉強方法など（2025年1月）

## はじめに
~~仕事がつまらない~~ なにかアピールできる形でスキルアップしたいなと思ったので、会社が推奨しているAWS資格を取ってみるかと取り組み、なんとなく全冠（12冠、2025年度）したのでその記録です。

## 取得順、スコアなど
２年ちょっとかかりました。最初はスロースタートでした。

|No.|資格名|取得日|スコア|
|---|---|---|---|
|1|AWS Certified Cloud Practitioner(CLF)|2022/11/26|920|
|2|AWS Certified Solutions Architect - Associate(SAA)|2023/1/14|777|
|3|AWS Certified Developer - Associate(DVA)|2023/4/8|835|
|4|AWS Certified SysOps Administrator - Associate(SOA)|2023/5/27|788|
|5|AWS Certified Solutions Architect - Professional(SAP)|2023/10/7|822|
|6|AWS Certified DevOps Engineer - Professional(DOP)|2024/1/20|939|
|7|AWS Certified Advanced Networking - Specialty(ANS)|2024/5/25|885|
|8|AWS Certified Machine Learning - Specialty(MLS)|2024/9/14|879|
|9|AWS Certified Security - Specialty(SCS)|2024/11/9|913|
|10|AWS Certified Data Engineer - Associate(DEA)|2024/12/4|930|
|11|AWS Certified Machine Learning Engineer - Associate(MLA)|2025/1/11|793|
|12|AWS Certified AI Practitioner(AIF)|2025/1/25|863|

## 勉強法、教材、学習スケジュール
主に問題集を解き、わからないところはググったりChagGPTに聞いたりしました。
平日は電車通勤中にスマホで問題集を解く程度。休日は５～１０時間勉強してました（お辛い）

- [CloudLicense](https://cloud-license.com/) 主に使用した問題集。３周は解くようにしました。
- [Whizlabs](https://www.whizlabs.com/) SOAの試験ラボ（実際にWebサイトを扱う試験）対策にこちらのハンズオンを利用しました。（不具合？が解消されないそうで試験ラボは実施されませんでしたが...）
また2024年秋から始まったAIFやMLAなどの新しめの試験対策に、問題集として利用しました。
- [Udemy](https://www.udemy.com/) DEA対策に[こちらの問題集](https://www.udemy.com/share/10bEjF3@ETZuIAuer0AVEBMraStJCARD3wTAjmNn3mre_2cnnaOl4O72ixzr-mww3pbjoCko/)を解きましたが、実際の試験よりも難しくちょっと的外れだった感がしました。
- BlackbeltやAWS公式ドキュメントはたまに目を通す程度。

## 難易度
長文が辛いSAP=ANS>その他
他の受験者の方も言われているように、SAPとANSは問題が長文で読解力が問われている気がします。また試験時間も3時間と長くトイレが心配でした。（途中退席しても大丈夫です）

AIF、MLA、MLS、DEAあたりの、機械学習やデータサイエンスは知らないことばかりでした。ChatGPT先生に「中学生にもわかるように説明して！」とお願いして理解を深めました。ChatGPTがなければ乗り越えられなかったと思います。

## 課題
試験に受かると受験料を会社に支給してもらえますが、落ちると自腹。
また試験会場のある隣県まで高速バスや新幹線で移動する交通費も自腹なので、とにかく受かることを最優先にするため問題集中心の勉強にせざるをえませんでした。
（おかげで全部ストレートに受かりました）
本当はハンズオンをもっとやって手を動かせるようになりたかったです。今後していきます。

またいつも合格の自信はなかったのに受かっていたので、資格を持っているからと言って過信はできないと思います。ちゃんと知識を知恵に変えて、使えるようになりましょう。

## やってよかったこと
筋トレ。リングフィットなどですが、筋トレは体力・集中力を高められるのでよいです。３時間の試験や休日１０時間の勉強に耐えられるようになります！

## 今後の予定
機械学習の知識を得られたのでG検定を受ける予定。
あとはIaC(CloudFormationとCDK）と各種ハンズオンをやりたいです。

以上です。ありがとうございました。
マルチエージェントAI特集② (1/N) Theory of Mind for Multi-Agent Collaboration via LLM

この記事ではLLMがマルチエージェントシステムでどのように応用されうるかを提案した論文を紹介します。

# 心の理論（Theory of Minds）
人間はチームワークをするとき、チームメートがどのような状況でどんな行動をどのような意図で行うかを推測します。例えば、サッカー選手は見方がどのような意図で走ったり、ドリブルをしているかを察知しているはずです。味方の意図に合わせて自分の行動（スペースに走ったり、ボールを要求したり）を決めます。逆にパスがつながらなかったときは互いの意図を推測するのに失敗したということです。「他者が何を考えているか」を研究するのは発達心理学などでも研究されてきたことであり（例：「[サリーとアン課題](https://ja.wikipedia.org/wiki/%E3%82%B5%E3%83%AA%E3%83%BC%E3%81%A8%E3%82%A2%E3%83%B3%E8%AA%B2%E9%A1%8C)」）、AIエージェントも人間のように他者の思考をうまく推測できるかは非常に面白いトピックであり、応用は多岐にわたります。  
今回は、他者の心の状態、目的、意図、知識、信念、志向、疑念、推測などを推測する直観による心の機能である「心の理論」をLLMエージェントが獲得できるかについて研究した以下の論文を紹介します。

https://aclanthology.org/2023.emnlp-main.13/

### 信念状態
心の理論では、あるエージェントが考えていることを「信念状態」といいます。たとえば、サッカーの例だと、「このスペースに向かってドリブルすればチャンスになる」とか「バックパスをした方が相手が前がかりになってスペースがうまれやすい」などです。サッカーに限らず人間は何をやるにしても何かしらの意図や予測をして行動を決定しています((部分観測マルコフ決定過程では、「信念状態は実際の(真の)状態に今どのくらいいるかを表す確率」のことです。))。  
言うまでもなく、チームワークをするときは相手の信念状態をうまく予測しなければいけません。
さて、LLMエージェントにチームワークをさせるにはどうすればよいでしょうか。本論文では以下の3点に着目しています。

- **0次ToM** (Theory of Mind) 
推論LLMエージェントが自身の信念状態を明確に表現できる能力があるか
- **1次ToM**
  エージェントが他者の信念状態を推定できるかどうか
- **2次ToM**
  他者が自身の信念状態について何を考えているかを推論できるかどうか


# 実験設定
本論文で扱っている問題設定を少し説明します。読み飛ばして大丈夫です。雰囲気としては、エージェントが3人いて、それらが爆弾処理をします。エージェントどうしは爆弾があとどれくらいで爆発しそうであるかや、その爆弾のワイヤーを切るかなど何かしらの行動をします。

### 細かい問題設定
3人のエージェント（Alpha、Bravo、Charlie）が未知の環境に分散しています。色つきの爆弾の位置を特定し、安全に解除することを目的としたチームです。各爆弾は3色のいずれかで、それぞれの色は爆弾のフェーズを表します。解除には正しい順序のワイヤーカッターが必要です。
チームメンバーはそれぞれ異なる色のカッターを持ってゲームを始めます。
環境は連結グラフとして概念化され、5個のノードは廊下（エッジ）でつながった5個の部屋を表します。各ラウンドにおいて、エージェントは以下の3つの行動から一個選択します。
- 5個の部屋のうちの1つに移動する
- 現在の部屋にある爆弾のフェーズを検査する
- 3個のワイヤーカッターのうちの1つを使用する

エージェントの観測は、現在の部屋の中身とエージェントのステータスに限定されます。チームのスコア、現在の部屋の中身、チームメイトの位置、利用可能なツールについては、定期的に更新されます。$x$段階の爆弾が解除されると、チームには$10x$ポイントが与えられます。

<img width="数値" alt="問題設定の概要（論文の図を引用しています。）" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3999549/a6a217d3-654d-0a8e-b4aa-2441e31f03c7.png">


# LLM エージェント
本論文では、チームワークを行うにあたって**エージェントが信念状態を明示的に保持するのが望ましい**といっています。図１の例では、AlphaがCommunication MessageとしてBravoから受け取ったメッセージをもとに自分の信念を更新しています。ここで信念とは環境についての情報と言っていいかもしれません。
ゲームの得点はLLMエージェントが信念（Belief）状態を明示的に保持している場合の方が高いです。
ちなみにMAPPOはマルチエージェント深層強化学習の有名な手法です。

# 創発現象および0, 1, 2次ToM
チームワークが必要な今回の爆弾処理タスクですが、**創発現象**ともとれる現象が確認されています。具体的には、ある一人のエージェントがリーダーとなり、他の二人に指示を送ります。下の図上部では、AlphaがBravoとCharlieに指示を送り, 二人が指示通りに行動しているのが分かります。
また下の図下部を見ると、LLMエージェント(+信念状態)は0, 1, 2次ToMを保持しているといえそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3999549/2900ffde-a448-869d-13d5-7aae6fe8bc5d.png)


# 次回予告  
次回はオープンソースのLlama3.2 3B-Instractを用いて協調行動ができるかを検証してみます。

このブログは株式会社EfficiNet Xのテックブログです。

https://efficinetx.co.jp/
Windows11 に Docker Desktop をインストール時にハマったこと

# はじめに
新しいWindows11のノートPCを購入し、Docker Desktop をインストールしたらエラーに遭遇。

四苦八苦しながら解決して改めて検証したら、私の再インストールの方法に問題があったと思うお話だったので残します。

```
deploying WSL2 distributions
ensuring main distro is deployed: deploying "docker-desktop": importing WSL distro "必要な機能がインストールされていないため、操作を開始できませんでした。 \r\nエラー コード: Wsl/Service/RegisterDistro/CreateVm/HCS/HCS_E_SERVICE_NOT_AVAILABLE\r\n" output="docker-desktop": exit code: 4294967295: running WSL command wsl.exe C:\Windows\System32\wsl.exe --import docker-desktop <HOME>\AppData\Local\Docker\wsl\main C:\Program Files\Docker\Docker\resources\wsl\wsl-bootstrap.tar --version 2: 必要な機能がインストールされていないため、操作を開始できませんでした。 
エラー コード: Wsl/Service/RegisterDistro/CreateVm/HCS/HCS_E_SERVICE_NOT_AVAILABLE
: exit status 0xffffffff
checking if isocache exists: CreateFile \\wsl$\docker-desktop-data\isocache\: The network name cannot be found.
```

# バージョン
Windows 11
Docker Desktop 4.37.1

# 当時ハマったこと
Dockerのメッセージには、DockerとWSLを再インストールしてみてください。と。
メッセージに従って、再インストールしても解消されず。

なんでだー！ってハマる。

# 原因（推測）
再インストール時にやたら時間がかかっていたので、何度か強制停止、再起動を繰り返していたため。

# 当時の解決方法
## ポイント
再インストール時に Virtual Machine Platform を"単独"でインストール。
※ Linux 用 Windows サブシステム と"一緒ではなく"。

## 詳細
1.Docker Desktop をアンインストール
2.Virtual Machine Platform, Linux用 Windows サブシステム をアンインストール
チェックボックスを外して、PC再起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206526/f3ca2f1c-6826-4ac9-d29c-1fb5e4a196d7.png)

3.wsl のステータスを確認
```
PS C:\Users\XXXXX> wsl --status
既定のバージョン: 2
WSL1 は、現在のマシン構成ではサポートされていません。
WSL1 を使用するには、"Linux 用 Windows サブシステム" オプション コンポーネントを有効にしてください。
WSL2 は、現在のマシン構成ではサポートされていません。
"仮想マシン プラットフォーム" オプション コンポーネントを有効にし、さらに、BIOS で仮想化を有効にしてください。
"仮想マシン プラットフォーム" を有効にするには、次のコマンドを実行します: wsl.exe --install --no-distribution
詳細については、https://aka.ms/enablevirtualization をご覧ください
PS C:\Users\XXXXX>
```
4.Virtual Machine Platform ＝ 仮想マシン プラットフォーム のみ にチェックを入れ、PC再起動
※ 当時、Virtual Machine Platform, Linux用 Windows サブシステム  を"一緒"にインストールしても、"WSL2 は、現在のマシン構成ではサポートされていません。" が表示される。

5.wslのステータスを確認
意図したとおり、WSL2のエラーは消えている。
```
PS C:\Users\XXXXX> wsl --status
既定のバージョン: 2
WSL1 は、現在のマシン構成ではサポートされていません。
WSL1 を使用するには、"Linux 用 Windows サブシステム" オプション コンポーネントを有効にしてください。
PS C:\Users\XXXXX>
```

6.Docker Desktop をインストールし、PC再起動

# 改めて検証
・Virtual Machine Platform, Linux用 Windows サブシステム  を"一緒"にインストールしても、問題なし
・Docker Desktopのインストールだけでも大丈夫（Docker Desktopインストール時にVirtual Machine Platform, Linux用 Windows サブシステムもインストールされた）


# ふりかえり
最初に書いた通り、当時、Virtual Machine Platform, Linux用 Windows サブシステム を"一緒"にインストールして、時間がかかっていたので待ちきれず途中でPCを落としたり。Docker Desktopをインストール時に待ちきれず途中でPCを落としたり。

そのせいで、Virtual Machine Platform, Linux用 Windows サブシステム のインストールが中途半端になっていたと推測します。（でも、チェックボックスはONになっていた。）

万が一、同じエラーに遭遇された方がいたら、ダメ元で一つずつチェックを入れて再インストールしてみるのはありかもしれません
MacでGit接続時のURL注意点パート２

# はじめに
前回MacからSSHでGitHubに接続できないことの対応を行なった。
[MacでGit接続時のURL注意点](https://qiita.com/yokitongo/items/4744c3a990ace8313bf8)
そこではURLの指定方法を省略形式と完全形式の２つを紹介した。
しかしURLが間違っていないにも関わらずSourceTreeで`Permission Denied`が出てしまう事象がある。
それを今回はとりあえず接続できる状態にする。

:::note
sshの設定は完了しており、１度はSourceTreeで接続できたものの
いつのまにか接続できなくなった事象に対応
:::


## とりあえず接続できるようにする方法
1. ターミナルを開く
1. sshの接続テストを行う

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

以下のメッセージが返って来ればOK。
SourceTreeでも接続できるようになっているはず。
```
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
```

なお、`~/.ssh/config`に以下のようにhostを定義していた場合

```~/.ssh/config
Host github.com.abc
        HostName github.com
        〜
```

Hostに記載したホストと同じ形式で記述する。
```bash
ssh -T git@github.com.abc
```

### .zshrcまたは.bashrcに記載する方法
以下の内容を`~/.zshrc`または`~/.bashrc`に記載することでも対応できるそうであるが、こちらは未検証。

```
if [ -z "$SSH_AUTH_SOCK" ]; then
  eval "$(ssh-agent -s)"
  ssh-add --apple-use-keychain ~/.ssh/id_ed25519
fi
```
※`id_ed25519`はsshの秘密鍵のファイル名
WindowsからiPhoneにデータ転送する方法<備忘録>

# 📤 iCloud Drive を使ったファイル共有手順（Windows ⇨ iPhone）

## 📝 手順

### 1. iCloud にアクセス  
[**iCloud.com**](https://www.icloud.com/) にアクセス。

### 2. サインイン  
1. Apple ID でサインイン  
2. **iPhone側で信頼**し、6桁のワンタイムパスワードを受信  
3. Windows側でパスワードを入力して認証完了 ✅  

---

### 3. **iCloud Drive を開く**  
🔹 iCloud のホーム画面で **「Drive」** をクリック  
![iCloud Drive](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553242/63f3d061-1348-b07c-2836-9f731e5c802c.png)

---

### 4. **ファイルをアップロード**  
1. **「アップロード」ボタン** をクリック  
2. **エクスプローラーが開く**ので、送りたいファイルを選択  
3. **「開く」ボタン** を押してアップロード完了 🎉  

📌 **アップロードボタンの位置**：  
![アップロードボタン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553242/f39d0c19-3a5e-248a-370a-2d927e8458cf.png)

---

### 5. **iPhone でファイルを確認**  
✅ iPhone の **「ファイル」アプリ** を開く  
✅ **iCloud Drive にアップロードしたファイルがあるか確認**
Pythonの抽象クラスについて

Pythonの抽象クラスについて解説

## **抽象クラスとは？**

- **直接インスタンス化できない** クラス
- **抽象メソッド** を定義できる（派生クラスで実装が強制される）
- 共通のインターフェースを提供するために使われる

## 抽象クラスの宣言方法

Pythonでは抽象クラスをABCモジュールを使用して宣言可能

```python
from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass
      
# 抽象クラスを継承
class Circle(Shape):
    def __init__(self, radius):
        self.__radius = radius

    def area(self):
        return 3.14 * self.__radius * self.__radius

circle = Circle(5)
print(circle.area())
```

## 動作確認
### サブクラスが抽象メソッドを実装しなければ
TypeError が発生する。
インターフェースとしての役割を果たし、バグを防ぐために便利。

```python
from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass
      
# 抽象クラスを継承
class Circle(Shape):
    def __init__(self, radius):
        self.__radius = radius
```

```
TypeError: Can't instantiate abstract class Circle with abstract method area
```

### 抽象クラスがABCを継承しなければ
通ってしまう

```python
from abc import ABC, abstractmethod

class Shape():
    @abstractmethod
    def area(self):
        pass

class Circle(Shape):
    def __init__(self, radius):
        self.__radius = radius
```
        
### abstractmethodを定義しなければ
通ってしまう

```python
from abc import ABC, abstractmethod

class Shape(ABC):
    def area(self):
        pass

class Circle(Shape):
    def __init__(self, radius):
        self.__radius = radius
```
統計検定1級　2024　統計応用(理工学)　問2

［2-2］は、ギブアップです。
![P-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/271c9836-cdeb-a2cc-7711-165a46727ade.jpeg)
![P-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/f367c702-3dd2-a73b-96c3-d0eab0994e83.jpeg)
71歳の挑戦... 激安カーオーディオ(?)と300円スピーカーでマイクロコンポ完成。驚いた事が

　３年前にアマゾンで購入した「MUSIC SPEAKERS」（カーオーディオなどと検索すると同様なものは今でもあるようです）。百均の手ごろなケースに収めたこいつを活用できないか、ずっと考えていました。安いのに音が良いと話題のダイソー300円スピーカーを組合わせて「マイクロコンポ」が遂に完成しました。懐かしい「カセットデッキ」の再来です。今風でもっと高性能（？）ですよ。

![Compo1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3189926/f80e4878-57a9-c645-3579-51bb3f0c677f.jpeg)
　この「MUSIC SPEAKERS」なるものは様々な入力に対応しており、前面ボタンとリモコンで切替可能です。

:::note info
１．ブルートゥース受信再生
２．FMラジオ(残念ながら日本の周波数帯ではない。聴きません）
３．USBメモリー
４．microSDカード
５．外部入力（前面にジャック。内部端子から後面にステレオジャックを増設）
:::
もう CD や レコード を処分した私には必要十分なソースです。ただ、出力は当然ながら弱いので、

:::note info
ダイソー　USBアクティブスピーカー 300円（現在店頭から消滅？）
ユーチューバーが様々に改造工夫した楽しい動画を上げてます
:::
を付けてみました。
　ここで驚くことが起きました。ねじを外しスピーカー本体を取り出したところ音が激変しました。それまで、音は確かに良いものの何か薄モヤのかかったような感じだったのが、ペラペラのガワを外した途端、とても
 
:::note
「晴れやかに抜けた輪郭のくっきりした音」
:::
になったのです。手持ちの丁度良い大きさのOSB合板厚さ10mmに穴をあけ、それを取り付けました。更にそれを重さと硬さのある厚さ18mm集成材に固定。付属アンプ部も取出し、そのまま右スピーカーの横に付けました。この結果、指向性の強いスピーカーであることが解りました。真正面方向から少しずれるだけで音質がかなり変わります。
　これで終わりではありません。さらに、前回の投稿で改良したインターネットラジオ

https://qiita.com/Mobu_Kyoto/items/4ba7003c8a447d2bb540

を組付けます。このための前回の作成物でした。

![Compo2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3189926/83c349de-76eb-1d5f-b9ee-2e28c61f04b7.jpeg)
これで、外部入力としてインターネットラジオも聞くことが出来ます。インターネット10局がプログラムしてあります。この選局はリモコンではできないので、その代わりにタクトスイッチを造作しておきました。今のところ、私の理想のオーディオシステムの完成です（笑）。
　CD及びCDプレーヤ、レコード及びレコードプレーヤ、ブックシェルフスピーカー、アンプなど６畳一間の我が自室には贅沢なモノは処分しました。でも、代わりに必要十分な音楽環境が作れたと思います。これでしばらく楽しめます。
　最後までご覧いただきありがとうございました。
paizaラーニングレベルアップ問題集の「入力された2つの文字列を出力」をやってみた。

paizaラーニングレベルアップ問題集の[入力された2つの文字列を出力](https://paiza.jp/works/mondai/d_rank_level_up_problems/d_rank_level_up_problems__accompanied_by_stdin_1)をやってみました。
- - -
###### 問題
https://paiza.jp/works/mondai/d_rank_level_up_problems/d_rank_level_up_problems__accompanied_by_stdin_1
- - -
###### C
```c
#include <stdio.h>

int main() {
	char s[11];
	scanf("%s", s);
	puts(s);
	char t[11];
	scanf("%s", t);
	puts(t);
	return 0;
}
```
- - -
###### C++
```cpp
#include <iostream>
using namespace std;

int main() {
	string s;
	cin >> s;
	cout << s << endl;
	string t;
	cin >> t;
	cout << t << endl;
	return 0;
}
```
- - -
###### C#
```cs
using System;

class Program
{
	public static void Main()
	{
		Console.WriteLine(Console.ReadLine());
		Console.WriteLine(Console.ReadLine());
	}
}
```
- - -
###### Go
```go
package main
import "fmt"

func main() {
	var s string
	fmt.Scan(&s)
	fmt.Println(s)
	var t string
	fmt.Scan(&t)
	fmt.Println(t)
}
```
- - -
###### Java
```java
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println(sc.nextLine());
		System.out.println(sc.nextLine());
		sc.close();
	}
}
```
- - -
###### JavaScript
```js
const [s, t] = require("fs").readFileSync("/dev/stdin", "utf8").trim().split('\n');
console.log(s);
console.log(t);
```
- - -
###### Kotlin
```kotlin
fun main() {
	println(readLine())
	println(readLine())
}
```
- - -
###### PHP
```php
<?php
	echo trim(fgets(STDIN)), PHP_EOL;
	echo trim(fgets(STDIN)), PHP_EOL;
?>
```
- - -
###### Perl
```pl
chomp(my $s = <STDIN>);
print "$s$/";
chomp(my $t = <STDIN>);
print "$t$/";
```
- - -
###### Python3
```py
print(input())
print(input())
```
- - -
###### Ruby
```rb
puts gets
puts gets
```
- - -
###### Scala
```scala
import scala.io.StdIn._

object Main extends App{
	println(readLine())
	println(readLine())
}
```
- - -
###### Swift
```swift
print(readLine()!)
print(readLine()!)
```
VisualStudioでフォルダ内に直接他のファイルをコピーして「プロジェクトに含める」

## はじめに
VisualStudioのソリューションに、フォルダ内に直接他のファイルをコピーしたとき、ソリューションエクスプローラーにそのファイルが表示されません。このときの「プロジェクトに含める」手順と「何がおこるのか」を簡単に調べたのでまとめておきます。

:::note warn
今回調べたことは、ちょっと古い？環境であてはまることみたいです。
環境によっては直接コピーしてもファイルが表示されるらしい
:::


## フォルダ内に直接他のファイルをコピーして「プロジェクトに含める」手順
以下の手順で「フォルダ内に直接他のファイルをコピー」して「プロジェクトに含める」ことができます。
1. フォルダに直接コピーする
2. ソリューションエクスプローラー上部の「すべてのファイルを表示」アイコンをクリック
3. プロジェクトに含まれていないファイル(破線アイコンで表現されている)を右クリックし、「プロジェクトに含める」をクリックする

## 「プロジェクトに含める」でなにがおこるのか
**プロジェクトファイル（.csprojなど）に記載が追加**されます。これによって、ファイルのパスや種類などがプロジェクト設定ファイルに記載され、Visual Studioがそのファイルをプロジェクトの一部として認識します。
.csprojファイルはVisualStudio上のソリューションエクスプローラーには表示されていません。直接フォルダを見た場合に確認することができます。あまり詳しくないなら**直接さわることはやめたほうがいい**みたいです。ぶっこわれるらしい。


## おわりに
フォルダに直接コピーするのって結構危険ですよね。全部わかっている人ならうまくやれるのかもしれないですが。namespaceの変更とかも難しいです。
この記事を書くにあたって調べたときに知ったのですが、VisualStudio上で、「追加」→「既存の項目」とすることで、「プロジェクトに含める」とか勝手にやってくれるんですね。
結局、勝手にフォルダを操作したりせずに、VisualStudio上で全部やるのが安心安全かも。
AI-102 学習メモ

# この投稿について
この投稿は AI-102: Microsoft Azure AI エンジニア の取得のため、以下の Udemy の動画で学習した内容のメモです。
これから AI-102 の学習を始める方の参考になれば幸いです。

https://www.udemy.com/course/ai102-azure/?ranMID=39197&ranEAID=hL6ObH*7r3M&ranSiteID=hL6ObH.7r3M-a2MrlmyGvpG3eKvHOrLWtg&LSNPUBID=hL6ObH*7r3M&utm_source=aff-campaign&utm_medium=udemyads

※ あくまで自身の復習用の内容のため、記載が不十分なところもあります、ご了承ください。また、動画の内容をすべて網羅できている訳ではありません。

|番号|記事名とリンク|公開日|
|:-:|:-:|:-:|
| 1 | [適切な Azure AI サービスの選択](https://qiita.com/atsmin77/items/566ea4dccdc1a6472e3e) | 2025/2/3 |
| 2 | [Azure AI サービスを計画、作成、デプロイする](https://qiita.com/atsmin77/items/ed4c37f04aa5a31bbd4f)  | 2025/2/3|
| 3 | [Azure AI サービスの管理、監視、セキュリティ保護を行う](https://qiita.com/atsmin77/items/f358f79ca5bac4485887)  | 2025/2/3 |
| 4 | [コンテンツ モデレーション ソリューションを実装する](https://qiita.com/atsmin77/items/f94b62ed44a5643da0ea) | 2025/2/3 |
| 5 | [コンピューター ビジョン ソリューションを実装する](https://qiita.com/atsmin77/items/a6132af2d7507ff74c5b)  | 2025/2/12 |
| 6 | [自然言語処理のソリューションを実装する](https://qiita.com/atsmin77/items/018a7fe76c753f71455f)  | 2025/2/12 |
| 7 | [Azure AI 音声を使用して音声を処理する](https://qiita.com/atsmin77/items/4998abe771d2d3d445f2) | 2025/2/12 |
| 8 | [言語を翻訳する](https://qiita.com/atsmin77/items/47afd9e2893a6f59ec8f) | 2025/2/12 |
| 9 | [Azure AI 言語を使用して、言語理解モデルを実装して管理する](https://qiita.com/atsmin77/items/5ccf7ba6f07174eb6a1c) | 2025/2/17 |
| 10 | [Azure AI Language を使用して、カスタムの質問応答ソリューションを作成する](https://qiita.com/atsmin77/items/93b5dcc799ab13b3bac2) | 2025/2/17 |
| 11 | [ナレッジ マイニングソリューションを実装する](https://qiita.com/atsmin77/items/e70a11afbd107d249193)  | 2025/2/17 |
| 12 | [Azure AI Document Intelligence ソリューションを実装する](https://qiita.com/atsmin77/items/9987fa9bc1b5c917abbc) | 2025/2/17 |
| 13 | [生成 AI ソリューションを実装する](https://qiita.com/atsmin77/items/14c5ef67ef5d9d5d8109) | 2025/2/17 |

# あとがき
先日無事に AI-102 の試験に合格することができました。色々なサービスがたくさんあって最初は難しく感じましたが、公開されている練習問題や Udemy で販売されている以下の問題集も繰り返し解くことでより理解が深まりました。

AI-102 は Azure に用意されている AI 関連のサービスに関する知識を広く学ぶことができ、勉強して良かったと思います。拙い投稿ですが参考になりましたら幸いです。

https://learn.microsoft.com/ja-jp/credentials/certifications/azure-ai-engineer/?practice-assessment-type=certification

https://www.udemy.com/course/ai-102-microsoft-azure-ai-engineer-associate-exam/