OmniAICreator/Qiita-1.07M huggingface dataset:
AIでPC操作を全自動化する実践ガイド

## はじめに

昨今のAI技術の進化は、私たちの日常業務やPC操作のあり方を大きく変えつつあります。これまで手作業で行っていたファイル整理やアプリ操作、Webブラウジングなどが、AIの力を借りることで自動化できる時代になりました。本記事では、AIを活用してPC操作を自動化するための具体的な手法や、実際のコード例、設定手順を分かりやすく解説します。

---

## AIエージェントによる自動化：デスクトップを賢く動かす

AIエージェントは、まるで人間のようにPCの画面を認識し、マウスやキーボード操作をシミュレートしてくれます。たとえば、指定したフォルダ内のファイルを種類ごとに整理したり、特定のアプリを自動で起動したりといった作業を、AIが自律的に行うことが可能です。

**Agent S2（Simular AI）**や**Braina**といったツールは、音声やテキストでの指示だけでなく、複雑な操作も自動化できるのが特徴です。たとえば「メモ帳を開いて」と話しかけるだけで、AIが実際にメモ帳を立ち上げてくれるといった具合です。また、定期的なバックアップやファイルの移動、メールの自動送信など、業務でよくあるルーティン作業も、AIエージェントに任せることができます。

---

## AIが生成するスクリプトで作業を自動化

AIに「ファイルを種類ごとに整理してほしい」と依頼すると、PowerShellやPythonなどのスクリプトを自動で生成してくれます。このスクリプトをPC上で実行すれば、手作業で行っていたファイル整理が一瞬で完了します。

たとえば、PowerShellスクリプトを使ったファイル整理の例を見てみましょう。このスクリプトは、指定したフォルダ内の画像・文書・動画ファイルを、それぞれ専用のフォルダに自動で移動してくれます。

```powershell
$sourceFolder = "C:\Path\To\Your\Files"
$images = @("*.jpg", "*.png", "*.gif")
$documents = @("*.pdf", "*.docx", "*.xlsx")
$videos = @("*.mp4", "*.mov", "*.avi")

foreach ($type in @("Images", "Documents", "Videos")) {
    $folder = Join-Path $sourceFolder $type
    if (!(Test-Path $folder)) { New-Item -ItemType Directory -Path $folder }
}

foreach ($ext in $images) {
    Get-ChildItem -Path $sourceFolder -Filter $ext | Move-Item -Destination (Join-Path $sourceFolder "Images")
}

foreach ($ext in $documents) {
    Get-ChildItem -Path $sourceFolder -Filter $ext | Move-Item -Destination (Join-Path $sourceFolder "Documents")
}

foreach ($ext in $videos) {
    Get-ChildItem -Path $sourceFolder -Filter $ext | Move-Item -Destination (Join-Path $sourceFolder "Videos")
}
```

このスクリプトを「organize_files.ps1」として保存し、Windowsのタスクスケジューラに登録すれば、毎日決まった時間に自動でファイル整理が行われます。たとえば、深夜に自動実行させておけば、翌朝にはすっきり整理されたフォルダが待っているというわけです。

---

## PythonでAI自動化アプリを作る

Pythonを使えば、AIによる自動化をさらに柔軟にカスタマイズできます。たとえば、AI自動化アプリを自作すれば、音声やテキストコマンドでファイル管理やアプリ起動、Web操作などを自由自在に自動化できます。

AI自動化アプリの基本的な使い方は、GitHubからリポジトリをクローンし、必要なライブラリをインストールして起動するだけです。

```bash
git clone https://github.com/irfan5122/AI_POWERED_TASK_AUTOMATION.git
cd AI_POWERED_TASK_AUTOMATION
pip install -r requirements.txt
python main.py
```

アプリを起動したら、「メモ帳を開いて」と話しかけるだけでメモ帳が立ち上がったり、「Projectsフォルダを作成」と入力するだけで新しいフォルダが作成されたりします。AIが自然言語を理解し、指示通りにPCを操作してくれるので、プログラミングが苦手な方でも直感的に使うことができます。

---

## ノーコードツールで誰でも自動化

プログラミングが苦手な方や、より手軽に自動化を始めたい場合には、ノーコードツールがおすすめです。

**RoboTask**や**Microsoft Power Automate Desktop**は、マウス操作だけでPCの操作手順を記録し、自動化フローを作成できます。たとえば、特定のWebサイトにアクセスしてデータを取得し、Excelに貼り付けるといった作業も、ノーコードで簡単に自動化できます。

これらのツールは、業務の効率化やルーティン作業の自動化に最適です。プログラミング知識がなくても、直感的な操作でPCの自動化を実現できます。

---

## まとめ：AI自動化で業務効率を最大化

AIによるPC操作の自動化は、もはや夢物語ではありません。AIエージェントや自動生成スクリプト、ノーコードツールを活用すれば、誰でも簡単に業務効率を大幅にアップさせることができます。

まずは、自分が手作業で行っているルーティン作業をリストアップし、どの部分を自動化できそうか考えてみましょう。AIの力を借りて、より快適で効率的なPCライフを実現してください。

---

この記事を参考に、ぜひAI自動化を実践してみてください！
[ネットワーク]LwIP for RX MCUのGCCサンプルコードを公開

# LwIP(LightWeight IP)のRXファミリMCU FITのGCCサンプルコードを作ってみた（RX65N)


# 背景

ルネサスエレクトロニクスは、RXファミリMCU向けにLwIPのドライバ（FITモジュール）を公開している。
以下２つのドライバとEthernet FIT、CMT FIT、セキュリティのFIT(TSIP FIT)をダウンロードして使える。

:::note info
**Tips**
従来RX MCU等には、ルネサス製独自のTCP IPプロトコルスタックであるT4-Tinyというドライバが提供されていたが、後継のTCP IPプロトコルスタックとして**LwIP FIT**ドライバが公開されている。
:::

下側（2つ目）のZIPパッケージにExampleが付いているが、提供されているプロジェクトはCC-RX（有償コンパイラ）用であるため、無償で使えるGCCのプロジェクトに置き換える。
※ドライバはCC-RXとGCCに対応しています。

* RX Family Lightweight IP (lwIP) Module Using Firmware Integration Technology：<br>**LwIPのOSSのコードをパッケージしたもの**
https://www.renesas.com/search?keywords=R20AN0789

* RX Family lwIP (lightweight IP) Driver Firmware Integration Technology:<br>**RX MCU用のポーティングレイアをパッケージしたもの（ZIPにExampleあり）**
https://www.renesas.com/ja/search?keywords=R20AN0788

 FITモジュールのインストール方法は以下を参照。
　     参考：[RXファミリ　Firmware Integration Technology モジュールの手動導入方法](https://www.bing.com/ck/a?!&&p=6bf0152c7ac3cdcdbac8ca17766a202dd9eb6e8a28a29cb6dd9ab311409ba5c2JmltdHM9MTc1MDU1MDQwMA&ptn=3&ver=2&hsh=4&fclid=3dcb24e3-f26c-6c8c-0db5-35fef3316d2c&u=a1aHR0cHM6Ly93d3cucmVuZXNhcy5jb20vamEvZG9jdW1lbnQvYXBuL3J4LWZhbWlseS1tYW51YWxseS1pbXBvcnRpbmctZmlybXdhcmUtaW50ZWdyYXRpb24tdGVjaG5vbG9neS1tb2R1bGVz&ntb=1)

# 結果

以下GitlabにRX65N(CKRX65N v2 Kit)をターゲットにしたGCC版のLwIPサンプルコードを公開することができた。


**GCC対応　RX MCU用LwIPサンプルコード**
　GCCでRXファミリ向けのLwIPを試してみたい方は以下をダウンロードしてください。
　動作確認方法はReadmeを参照してください。

**■ダウンロード先：https://github.com/kkktkkkt/Renesas_RX_LWIP_FIT**

:::note warn
**警告**
ドライバのバージョンが古い場合があります。最新のドライバはルネサスエレクトロニクスのWebかGithubよりダウンロードしてください。
:::

# サンプルコードの変更点について

サンプルコードは以下2点をCC-RX版から変更している。<br>
1) コンパイラをCC-RXからGCCに変更
2) LDファイルをデフォルトから修正
    - 拡張RAM領域にBSSセクションの一部を移動
    - Ethernet FIT用のRAMエリアを確保）

## ライセンスについて

**BSD-3-Clause license**です。

流用元のルネサスエレクトロニクスのライセンスがBSD-3-Clause licenseであるため、同じライセンスにて公開しています。
ITガチ初心者なので同志向けにPythonを練習する会 part2（VSCodeの使い方編）

## 前回の記事（Part1）

まだ環境構築が終わっていない人はこちらからどうぞ

🔗 [Part1：Python環境構築編](https://qiita.com/Touma0216/items/47d807ebb9e0f11f40b3)

## はじめに

前回は、PythonのインストールとVSCodeの導入までをやりました。  
~~計画性がなくて拡張機能を先に紹介してしまった。~~

でも、それだけではまだプログラミングはできません。

今回は、「VSCodeってどうやって使うの？」という部分を、**初心者向けに一から説明**していきます。

## VSCodeってなに？

VSCode（Visual Studio Code）は、**プログラムを書くための便利機能つきのツール**みたいなものです。  
ここにプログラムを書いていくことによって動きます。

## フォルダーを作ろう
まずはプログラムを保管するフォルダーを作りましょう。
書いたコードはメモ帳のような感じで、言ってしまえば**ただのテキスト**です。
そのテキストを動かしやすいツール、つまりVSCodeで使うためにフォルダーを作っていきます。

### フォルダーを作る方法
まずはエクスプローラーを起動します。
そして、そこにどこか空白で右クリックをして、新規作成から新しいフォルダー作りましょう。

**PC → Windows(C:)　→ UserName → 新規フォルダー**

ファイル名は何でもいいです。
（今回は`python-practice`）


## VSCodeでフォルダー（ワークスペース）を開こう

フォルダーを作ったら、VSCodeでそのフォルダーを開きます。

### フォルダーを開く手順

1. VSCodeを起動する  
2. 左上の「ファイル（F）」→「フォルダーをワークスペースに追加」  
3. 自分で作ったフォルダーを選ぶ

これで、そのフォルダーの中でファイルを作ったり保存できるようになります。

左側のメニュー（メモが重なったみたいなアイコン）からフォルダーが追加されていることが確認できると思います。

## 新しいPythonファイルを作ってみよう

メニュー画面のフォルダーの上で右クリック → 新しいファイルで作成できます。 

ファイル名を `hello.py` にして作成してみましょう。

### なぜ `.py` が必要？

`.py` というのは、「このファイルはPythonのコードですよ」という目印です。  
`.txt` や `.md` ではPythonとして動かないので注意。

## ファイルの保存は Ctrl + S

コードを書いたら、**保存しないと実行しても反映されません**。

-  `Ctrl + S`

とにかく書いたら保存、これが癖になるとミスが減ります。

**自動保存の設定にしておくと楽です。**
**ファイル（F） →　自動保存**

## ターミナルを開いてみよう

ターミナルは、パソコンに命令を出す「黒い画面」です。

### VSCodeでターミナルを開く方法

- Windows： `Ctrl + Shift + @` または `Ctrl + @`または`Ctrl + j`

ターミナルが出ない場合は、メニューから  
「ターミナル」→「新しいターミナル」で開けます。


## Pythonファイルを実行する方法

ターミナルに次のように入力して Enter を押します：

```bash
python ファイル名.py
```

たとえば、`hello.py` というファイルを作っていたら：

```bash
python hello.py
```

これで、書いたPythonコードが実行されます！

ワンボタンで実行したい場合は、.pyファイルを開いているなら

**右上の▷**で実行できます。

私はこれがメインの実行方法です。

~~まだプログラムを書いてないので何も実行されません。~~

## おわりに

今回は、**VSCodeを使って「Pythonファイルを作って実行するまで」**を説明しました。

ここまでできたら、次回はいよいよ「Hello, World!」を表示するプログラムを書いてみます。
Google Cloud Professional Security Engineer 試験、受けてきました

## **勉強方法：やることはシンプル。でも内容はシンプルじゃない。**

### **1. Udemyで全体像をつかむ**

まずは定番のUdemy動画講座を受講。

英語圏の講座に日本語字幕がついているので、内容は理解しやすい…はずなんですが、

セキュリティ特有のカタカナ・アルファベット用語が多くて、**途中から頭が飽和**しました。

「これはオプション？機能？単体サービス？…**独立サービスじゃないんかい！**」というパターンも多め。

正直、最初は混乱します。

---

### **2. 模擬試験で“選択肢の感覚”を掴む**

模擬試験を解くと、

「これとこれ、どっちもできそうだけど、どっちが“より実務的”？」みたいな問題が多く、

**理論より“判断力”が問われる試験なんだな**と実感します。

解説を読み込んで、選択肢の良し悪しを比較していくのがポイントでした。

---

### **3. サービス対応表の作成（ここが正念場）**

IAM、Cloud Identity、Security Command Center、Cloud KMS、Cloud Armor、VPC Service Controls…

**似たようなサービス名が多すぎて、混乱します**。

「このサービス、単体だと思ってたら機能の1オプションだったわ」みたいなことが何度も起こるので、

**ユースケースごとに「どのサービスを使うか？」を整理した表**を作って、頭の中を整えました。

---

## **当日のこと：事件は会場で起きた**

### **印刷？またそれ言うの？**

PDE試験と同様、3日前くらいに届くメールに

> 「印刷して会場に持ってきてね」
> 

という文言があって、またか…と思いつつコンビニで印刷して持参。

**これ忘れると本当に受けられません。**

---

### **身分証チェックでまさかのトラブル発生**

「運転免許証＋補助書類（保険証など）」が必要なのは分かっていたのですが、

当日、受付で気づきました。

> 「あれ、免許証がない…！？」
> 

一瞬で血の気が引く中、試験センターの方が冷静に提案してくれました。

> 「40分以内に戻れるなら受験できますよ」
> 

すぐさまタクシーで帰宅、免許証を発見して再び爆速で戻ることに。

試験開始前に**謎の4000円を失いました。つらい。**

---

## **試験の実感：2択までは絞れる。そこからが、つらい。**

### **1. 「それっぽい選択肢」が最後に残る**

本当に多かったのが、

「2つまでは絞れる。でも、残りの2つどっちも現実的に実装できそう」な問題。

いわゆる「よりベストプラクティスはどちらか？」が問われていて、

**細かなユースケースの知識と経験値が求められる**印象でした。

---

### **2. OSS系のサービスまで問われるとは**

Cloud KMS や IAM の話だけでなく、

**HashiCorp Vault** のようなOSSの鍵管理ツールや、外部IdPの知識を問う問題もありました。

完全に盲点。

「このサービス知らんし…！」と思いつつ、雰囲気で解いた設問もあります。運ゲー要素強め。

---

### **3. VPCまわりは、文字だけだと想像がむずい**

「この構成にすることで、インターネット経由のアクセスを制限しながら〜」

みたいな問題文がよく出るんですが、**図がないとつらい。**

Cloud NAT、Private Google Access、Peering…

全部頭の中で構成を描こうとするんですが、**途中でフリーズ**しました。

---

## **🎁 おまけ：合格後のグッズ申請、まさかの…**

試験に合格したあと、

「せっかくだしグッズ申請してみるか」と思って公式サイトを見に行ったら…

> 「2025年3月15日をもって終了しました」
> 

との文字が。

環境負荷の軽減？サステナビリティ？いや、わかるけどさ…

**グッズ、ちょっと欲しかったかも。**

---

## **✅ 最後に：これから受ける方へ**

| 項目 | ポイント |
| --- | --- |
| 勉強期間 | 1〜2週間（事前知識あり前提） |
| 勉強方法 | Udemy + 模擬試験 + サービス一覧の整理 |
| 試験の傾向 | 実装現場のベストプラクティスを問う2択地獄 |
| 出るサービス | IAM / SCC / Cloud KMS / Cloud Armor / VPC SC など |
| 注意点 | 印刷物と身分証、絶対忘れるな。特に免許証。 |

---

## **☁️まとめ**

セキュリティ系の試験は「机上の空論になりがち」ですが、

Google CloudのPSEは**「実装に耐える構成が組めるか」をしっかり問う試験**でした。

勉強は大変でしたが、やってよかったです。

でもやっぱり、グッズ…欲しかったな…。
星型森モデル〜星型森のお散歩シリーズ




---

星型森モデルシリーズまとめ

このページでは、星型森モデルに関するシリーズ記事をまとめています。各章へのリンクと簡単な説明を掲載していますので、ご興味のある項目からお読みください。


---

目次

1. 第一話〜第五話：法体系の基盤
　星型森モデルの基本的な枠組みと法体系の基盤部分について解説しています。


2. 行政法・手続法の展開
　行政法と手続法の神樹を中心に、現代法との接続を考察します。


3. 特化型神樹群の考察
　民法、刑法、その他特化された法分野のモデルを深掘りします。


4. ツタの役割と法体系の未来
　AI関連法や技術革新を踏まえた新しい法体系の展望を描きます。


5. まとめ：俯瞰する星型森モデル
　これまでの内容を総合的に俯瞰し、今後の課題と展望を整理していきます。




---

## 📚 星型森モデル ─ 関連リンク集

| 話数 | タイトル | リンク |
|------|----------|--------|
| 第1話 |神樹の根と幹 私たちの日常に息づく民法 | [読む](https://qiita.com/chenglaia24/items/e86c1e3d0a5112c801cf) |
| 第2話 | 民法という神樹の枝葉に触れる 債権 物権 家族のかたち | [読む](https://qiita.com/chenglaia24/items/bca3a8d05a4d7b98d85f) |
| 第3話 | 民法の神樹：枝葉の広がりと他法の交錯 | [読む](https://qiita.com/chenglaia24/items/0ce0c0de30a9e03eb02d) |
| 第4話 | 憲法の神樹 | [読む](https://qiita.com/chenglaia24/items/472874c9a4c1fa52cc0a) |
| 第5話 | 境界を守る神樹〜刑法 | [読む](https://qiita.com/chenglaia24/items/d34da608bd724bd13e48) |

| 第6話 | 見えざる力の神樹〜行政法 |[後日公開予定]|


| 第7話 | 手続法 | [後日公開予定] |
| 第8話 | 各神樹の絡み合う場面 |
| 第9話 | ツタの役割 |
| 第10話 | まとめ：俯瞰 |

※第6話以降のリンクと表題については公開後適宜更新していきます。

---

🔗 [シリーズ第1話へ戻る](https://qiita.com/chenglaia24/items/e86c1e3d0a5112c801cf)



---






---





---
Oracle Master Silver SQL 2019(1Z0-071) チートシート

## 初めに
 この記事は、筆者が [Oracle Master Silver SQL 2019(1Z0-071)](https://www.oracle.com/jp/education/certification/certification-exam-list/db-sql-1z0-071-exam/) を受験し、1度落ちた経験から、合格のために押さえたほうが良いトピックをまとめたものになります。

## 試験結果：
1回目：不合格(得点率：62%)
2回目：合格(得点率：87%)
合計学習期間：1.5ヶ月(3週間ずつ)



## 列別名
二重引用符("")で囲まなくても使用できる特殊記号
・アンダースコア「 _ 」
・ドル記号「 $ 」
・ハッシュ記号「 # 」
➡ただし、先頭は必ず文字。例えば、1EMP、#EMP 等は不可

# 非等価条件
使用可能な非等価条件(等しくない)一覧

「 != 」

「 ^= 」

「 <> 」

# 評価順序
 AND と OR では<font color="Hotpink" size=4> AND が優先される</font>

# 制約
NOT NULL制約
➡これだけ必ず<font color="Hotpink" size=4>列レベル</font>で指定する必要がある


## 読取り専用モード(READ ONLY)
読み取り専用モードでも実行可能なDML操作一覧


```sql
DROP TABLE test PURGE;
```
➡表そのものの削除は可能(TRUNCATEによる全行の削除は不可)

```sql
ALTER TABLE test DROP UNUSED COLUMNS;
```
➡UNUSEDマークの付いた列の削除は可能(列をUNUSEDに変更する操作は不可)

```sql
ALTER TABLE test READ WRITE;
```
➡読み書きモードへの変更は可能

# TRUNCATE TABLEとDROP TABLE

| 項目 | TRUNCARTE TABLE | DROP TABLE |
|:-:|:-:|:-:|
| 概要 | 全行を削除する | 表を削除する |
| 復元 | 不可 | 可能(FLASHBACK) |
| 表定義、制約、索引 | 保持される | <font color="Hotpink" size=4>保持されない</font> |
| ビュー、シノニム | 保持される | 保持される |

## 一時表
一時表という名前ですが、グローバル一時表だけ少し特殊

| 項目 | グローバル一時表 | プライベート一時表 |
|:-:|:-:|:-:|
| データの参照 | 作成したセッションのみ可能 | 作成したセッションのみ可能 |
| 表定義の参照  | <font color="Hotpink" size=4>すべてのセッションで可能 | 作成したセッションのみ可能</font> |
| 表定義の永続化 | <font color="Hotpink" size=4>あり</font> | なし |
| データの永続化 | なし | なし |

なお、それ以外の特性は通常の表とほぼ同じなので、通常の表でできる操作は実行可能(例えば、ロールバック、トリガー/ビュー/索引/シノニム作成等)


## VIEW

ビューは実データを含まないので、実表や索引のように<font color="Hotpink" size=4>セグメント(データの記憶域)を持たない</font>(ただし、オブジェクトIDはある)


## DUAL表
VARCHAR2型のDUMMYという名前の列を持ち、<font color="Hotpink" size=4>データを1行だけ含む表</font>
```sql
SELECT * FROM dual;
```
| D |
|:-:|
| X |

# MARGE
WHEN MATCHED句では、<font color="Hotpink" size=4>UPDATE SET文が必ず必要</font>(その後であれば、DELETE分の記載も可)
WHEN NOT MATCHED句では、<font color="Hotpink" size=4>INSERT文が必ず必要</font>

# 日付
日付 + 日付 の操作はエラーになる

# 集合演算
ORDER BY句は<font color="Hotpink" size=4>最後にしか指定できない</font>(途中の問い合わせで指定するとエラーとなる)


# ロール
ロールは特定の<font color="Hotpink" size=4>ユーザーの持ち物(スキーマ内のオブジェクト)にならない</font>

# データディクショナリ
SYSユーザーが保有し、SYSTEM表領域に格納されている

# 索引
一意索引をDROP INDEX文で削除することはできない
➡PRIMARY KEY制約やUNIQUE制約を削除した時に自動的に削除される

# 外部表
必須項目一覧
・ORGANIZATION EXTERNAL句：外部表として作成を宣言
・DEFAULT DIRECTORY句：ディレクトリ・オブジェクトの名前を指定
・LOCATION：実際のデータ情報が格納されているファイル名をしてい

## 参考文献、学習に使用した教材
https://www.amazon.co.jp/%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E6%95%99%E7%A7%91%E6%9B%B8-Silver-SQL-Oracle-Database-ebook/dp/B09DPJD596?ref_=Oct_d_otopr_d_502788_2&pd_rd_w=6e4un&content-id=amzn1.sym.1374e2a8-edae-438c-991f-c31a30021de9&pf_rd_p=1374e2a8-edae-438c-991f-c31a30021de9&pf_rd_r=4VDYXDFNSFSNPXWEZHWN&pd_rd_wg=vUmSW&pd_rd_r=9774dc56-daf8-4fbf-88ac-2fda4ad58539&pd_rd_i=B09DPJD596

https://blogs.oracle.com/oraclemaster/post/om-silver-sql-2019-seminar-topics

https://learn.oracle.com/ols/course/oracle-master-silver-sql-2019-certification-exam-prep-seminar-oracle-master-silver-sql-jp/84763/88453/129226

https://mondai.ping-t.com/g
Google Cloud Professional Data Engineer 試験、受けてきました

## **勉強方法：王道だけど、ちゃんとやると強い**

### **1. Udemyの動画講座で基礎を固める**

基本的なサービスの説明や、試験で問われる「ユースケースベースの考え方」が整理されていて、全体像を掴むのにちょうど良かったです。

> ⚠️ 倍速再生で詰めすぎると「なんとなく聞いたことある」で終わるので注意。
> 

---

### **2. 模擬試験で「問われ方」に慣れる**

個人的にはこれが一番大事でした。

本番は “正解を選ぶ” というより “一番ダメじゃない選択肢を選ぶ” という問題が多く、**サービスの特徴だけでは解けない**問題も多いです。

解いたあとに「なぜ他の選択肢はダメなのか？」をちゃんと考えるのがコツでした。

---

### **3. サービス一覧＆対応ユースケース表を作成**

BigQuery、Pub/Sub、Dataflow、Vertex AIなど、**どのサービスがどんな状況で使われるか**を手元で一覧にしておくと、設問への対応力が上がります。

特にPub/SubとDataflowあたりは何度も出てくるので、構成パターンとその理由をセットで覚えるのがおすすめです。

---

## **当日のこと：地味に大事な準備と、予想外のこと**

### **メールの「印刷して持参」指示、地味にめんどくさい**

受験3日前くらいに届くメールに、

> 「このメールを印刷して持ってこい」と書いてあります。
> 

今どき印刷か…と思いつつ、会場でトラブルになるのも避けたかったのでコンビニで印刷して持参。結果としてこれは正解でした。

---

### **身分証、まさかの2つ必要（しかも顔写真付き＋補助書類）**

運転免許証＋健康保険証をたまたま持ってたので事なきを得ましたが、

**補助書類が要ること、事前にちゃんと読んでなかった自分を反省**しました。

これから受ける方は要チェックです。

---

## **本番の印象と気をつけたいこと**

### **1. 「これ、どっちも正解じゃない？」問題が多い**

- 「このユースケースに最適なサービスは？」と聞かれたとき、どちらも“できそう”な選択肢がある。
- でも片方はコスト面やスケーラビリティの面でよりベター、という世界観。

PDE試験では、「ベストプラクティスをわかっているか」が試されます。

---

### **2. 統計問題は難しめ。正直、捨ててもいい**

回帰分析の種類や仮説検定に関する設問もいくつか出ました。

とはいえ全体の配点比率はそれほど高くないので、**「これは無理」と思ったら潔くパスする判断もアリ**です。

---

### **3. Spark？Beam？古代遺跡かな？**

Apache Spark や Apache Beam に関する設問もちらほら出ますが、

業務で触れていないとちょっとキツいかも。

ただ、試験対策としては「Dataflowの裏側がBeamで動いてる」程度の知識があればなんとかなりました。

---

## **総まとめ：これから受ける方へ**

| 項目 | ポイント |
| --- | --- |
| 勉強期間 | 1〜2週間あればギリいける（知識ベースがあれば） |
| 勉強内容 | Udemy + 模擬試験 + サービス整理表 |
| 試験の傾向 | ユースケースベース・ベストプラクティス重視 |
| 必須サービス知識 | BigQuery / Pub/Sub / Dataflow / Looker / Vertex AI など |
| 注意点 | メールは読め。印刷忘れるな。身分証2つ持ってけ。 |

---

## **最後に**

正直、「これで受かったのか…？」という気持ちで終了ボタンを押しましたが、無事合格できました。

60点ギリ合格だったかもしれませんが、受かれば勝ちです。

これから受ける方にとって、少しでも参考になればうれしいです。

**次はMachine Learning Engineer…と思ったら、まだ日本語対応してませんでしたね。残念。**
Raspberry Pi: SPI通信

こちらと同様のことを、RaspberryPi 4 で行いました。
    
[Raspberry PiのSPI通信](https://tomosoft.jp/design/?p=5428)

## SPI を有効にする

```bash
sudo raspi-config
```

## テスト環境の構築

GPIO9 と GPIO10 を接続する

![DSCN0410.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/2295fa0f-349d-4710-a750-1c2b92c75354.jpeg)


## ライブラリーのインストール

```bash
wget  http://www.airspayce.com/mikem/bcm2835/bcm2835-1.75.tar.gz
tar xvfz bcm2835-1.75.tar.gz
cd bcm2835-1.75
./configure
make
sudo make install
```

## プログラム

```c:spi.c
#include <bcm2835.h>
#include <stdio.h>
int main(int argc, char **argv)
{
    if (!bcm2835_init())
        return 1;
    bcm2835_spi_begin();
    bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST);      // The default
    bcm2835_spi_setDataMode(BCM2835_SPI_MODE0);                   // The default
    bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_65536); // The default
    bcm2835_spi_chipSelect(BCM2835_SPI_CS0);                      // The default
    bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, LOW);      // the default
 
    uint8_t send_data = 0x23;
    uint8_t read_data = bcm2835_spi_transfer(send_data);
    printf("Sent to SPI: 0x%02X. Read back from SPI: 0x%02X.\n", send_data, read_data);
    if (send_data != read_data)
      printf("Do you have the loopback from MOSI to MISO connected?\n");
    bcm2835_spi_end();
    bcm2835_close();
    return 0;
}
'''

```text:Makefile
spi: spi.c
	gcc -o spi spi.c -l bcm2835
clean:
	rm -f spi
```

## コンパイル

```bash
make
```

## 実行

```text
$ sudo ./spi
Sent to SPI: 0x23. Read back from SPI: 0x23.
```

## 少し改造したプログラム

```c:spi.c
#include <bcm2835.h>
#include <stdio.h>
int main(int argc, char **argv)
{
    if (!bcm2835_init())
        return 1;
    bcm2835_spi_begin();
    bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST);      // The default
    bcm2835_spi_setDataMode(BCM2835_SPI_MODE0);                   // The default
    bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_65536); // The default
    bcm2835_spi_chipSelect(BCM2835_SPI_CS0);                      // The default
    bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, LOW);      // the default
 
    uint8_t send_data = 0x23;
    uint8_t read_data = bcm2835_spi_transfer(send_data);
    printf("Sent to SPI: 0x%02X. Read back from SPI: 0x%02X.\n", send_data, read_data);
    if (send_data != read_data)
      printf("Do you have the loopback from MOSI to MISO connected?\n");

    send_data = 0x51;
    read_data = bcm2835_spi_transfer(send_data);
    printf("Sent to SPI: 0x%02X. Read back from SPI: 0x%02X.\n", send_data, read_data);

    bcm2835_spi_end();
    bcm2835_close();
    return 0;
}
```

実行結果

```text
$ sudo ./spi
Sent to SPI: 0x23. Read back from SPI: 0x23.
Sent to SPI: 0x51. Read back from SPI: 0x51.
```
Conventional Commitsの簡易入力ツールが欲しかった

# コミットメッセージをいい感じに統一しよう

## はじめに

Git を使ったチーム開発で、**コミットメッセージの書き方にバラつきがある**ことに悩んだ経験はありませんか？

「`Update` って何を？」「`Fix` だけじゃ意味が分からない」そんなときに役立つのが [Conventional Commits](https://www.conventionalcommits.org/ja/v1.0.0/) という規約です。これは、**フォーマット化されたコミットメッセージの書き方**を定義し、履歴をより読みやすく、ツールで解析しやすくするための標準です。

しかし、手書きでルールを守るのは面倒…。
GUIのツールはいくつかありましたが、自前で改造やすいように作ってみました。  

![ConventionalCommitsForm.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3322199/7cd7ebd4-37f2-4bfa-9020-0d9d55b85a67.png)

## 「Conventional Commits Form」とは？

「Conventional Commits Form」は、**HTMLだけで動作するシンプルな入力フォーム**です。
ブラウザ上で必要な情報を入力するだけで、**Conventional Commits 形式のコミットメッセージを自動生成**してくれます。



## 主な機能

* `type`、`scope`、`description` など、規約に沿った項目の入力欄を用意
* 入力内容をリアルタイムでフォーマットし、下部に表示
* そのまま `git commit -m` に貼り付けられるテキストを生成
* ローカルで動作。**インストール不要・ネットワーク接続不要**


## 使い方

1. GitHub から [ConventionalCommitsForm.html](https://github.com/chaftta/ConventionalCommitsForm/blob/master/ConventionalCommitsForm.html) をダウンロード
2. ダブルクリックで開く（ブラウザが起動）
3. 入力欄に必要な情報を入力
4. 表示されたコミットメッセージをコピー
5. GIT(GUI)のコミット時のコメント欄に貼り付けて完了！


##  出力されるメッセージの例

```text
feat(login): ログイン時のバリデーションを追加

ユーザーが空のメールアドレスで送信しようとした場合に警告を表示するようにしました。

BREAKING CHANGE: バリデーションの失敗時、APIリクエストを送らなくなりました。
```


## おわりに

統一された書式は、自動化の第一歩です。
例えば、バージョンアップリリース時の変更一覧の作成時も機械的に一次処理が行えます。
無駄な作業を減らすためにも、検討してみては如何でしょうか。
Node.js出身者のためのPoetry入門 – Pythonプロジェクトの管理

# はじめに

Node.js では `npm init` を叩けば `package.json` が作られて依存管理の準備が整いますよね？

Pythonにも似たような仕組みがありますが、標準の `pip` + `venv` ではやや物足りない…

そこで今回は，**Pythonの依存管理ツール「Poetry」** を使って、Node.jsとの比較を交えながらプロジェクトセットアップの6段階を簡潔に紹介します。

# Poetryとnpmの対応関係

| 概念        | Node.js (`npm`)     | Python (`poetry`)           |
| --------- | ------------------- | --------------------------- |
| 初期化コマンド   | `npm init`          | `poetry init`               |
| 依存追加      | `npm install axios` | `poetry add requests`       |
| 依存リストファイル | `package.json`      | `pyproject.toml`            |
| ロックファイル   | `package-lock.json` | `poetry.lock`               |
| 実行環境の隔離   | `node_modules`      | 仮想環境 (`.venv`)              |
| 実行        | `node script.js`    | `poetry run python main.py` |

# Poetryのセットアップ手順

### 1. Pythonの確認

先に使用可能なPythonがあることを確認：

```bash
python --version
```

```bash
# 出力
Python 3.13.1
```

### 2. Poetry のインストール

```bash
curl -sSL https://install.python-poetry.org | python -
```

### 3. PATHに追加

Poetryは Windows では以下のパスにインストールされます：

```
C:\Users\<UserName>\AppData\Roaming\Python\Scripts
```

これを簡単に追加するPowerShellコマンド：

```powershell
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", "User") + ";C:\Users\<ユーザ名>\AppData\Roaming\Python\Scripts", "User")
```

ターミナルを閉じて再起動し、以下を実行：

```bash
poetry --version
```

### 4. 仮想環境をプロジェクト内に作る設定

> ※一度だけでOK

```bash
poetry config virtualenvs.in-project true
```

これを実行すると、今後作成するすべてのプロジェクトで `.venv` フォルダがプロジェクト直下に作られます。

* Node.js の `node_modules/` のように、**環境が見える形で管理できる**
* VSCode でも自動的に Python interpreter として認識される
* 一度設定すれば永続的に有効

# プロジェクトのセットアップ

### 1. プロジェクト初期化

```bash
mkdir my-poetry-app
cd my-poetry-app
poetry init
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760374/aa9be309-7321-4b16-b5e1-da64c9c7b3b0.png)

問答形式で設定するか，一気に指定したければ以下も可能：

```bash
poetry init --name "my-poetry-app" --dependency requests
```

### 2. 依存関係の追加

```bash
poetry add requests
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760374/28b48329-f252-400b-b2f2-a3dec09a4657.png)


### 3. スクリプト実行
```py:main.py
import requests

response = requests.get("https://httpbin.org/get")
print(response.status_code)
print(response.json())
```

```bash
# 実行
poetry run python main.py
```

### 4. 他人の環境で再現するには
```bash
git clone ...
cd your-project
poetry install
```

これだけで .venv と依存が自動構築されます。

# まとめ

Node.jsの開発体験に慣れている人にとって、Poetryはごく自然に入っていける設計になっています。

| 作業内容      | npm コマンド        | poetry コマンド             |
| --------- | --------------- | ----------------------- |
| プロジェクト初期化 | `npm init`      | `poetry init`           |
| 依存追加      | `npm install`   | `poetry add`            |
| 実行        | `node index.js` | `poetry run python ...` |
| 再現        | `npm install`   | `poetry install`        |

Pythonの世界でも、**安心してモダンな依存管理**を始めていきましょう！

✨ よりモダンで自由なnpm風パッケージ管理ツールのご紹介はこちら：

https://qiita.com/oharu121/items/d09c333bb30e90e2db64
Windows が勝手に起動する問題の解決法？

Windows 11 パソコンを買い、
Windows 10 パソコンと同じマイクロソフトアカウントで初期設定します。

私の場合、これだけで問題が解決しました。（勝手に起動しなくなりました。）

最近の Windows Update でも、更新すると Windows 10 パソコンが起動しなくなる問題が起きるとか.....

何をかいわんやですが。


ちなみに、Windows 11 のブラウザ「Edge」を起動すると、
Windows 10 の Edge の設定がそのまま移行されていました。

（そんなセッティングした記憶は無いのですが...）

たぶん、Windows は、Windows Update をインストールするたびに、あちこちの設定を勝手に書き換えているのでしょうね。
プログラミング初心者がPythonでコードを書いてみたよ～

`puts 'Qiita'`
## Pythonを使ってコードを組んでみました。
random 関数を使用した「格闘ゲーム」ユーザーが技を出して、勝ち負けを判定するゲームです。

## ゲームのルール
プログラムがランダムで「蹴る」「殴る」「飛ぶ」「避ける」「フェイント」　から1つを選びます。
ユーザーが「蹴る」「殴る」「飛ぶ」「避ける」「フェイント」のいずれかを入力します。
プログラムが勝ち負けを判定し、結果を表示します。
ユーザーが「終了」と入力するまで何度もプレイできます。



```Python
格闘ゲーム

import random
acction = ['蹴る','殴る','飛ぶ','避ける','フェイント']

#格闘ゲーム
print("格闘ゲームを始めます！「蹴る」「殴る」「飛ぶ」「避ける」「フェイント」を入力してください。終了するには「終了」と入力してください。")

while True:
    # コンピュータの手をランダムに選ぶ
    computer_choice = random.choice(action)
    user_input = input("あなたの技: ")

    if user_input == '終了':                # Tabをするのが重要　tabがされていないと構文をかいても使えない
        print('ゲームを終了します')
        break
    
    if user_input not in action:
            print("エラー: 「蹴る」「殴る」「飛ぶ」「避ける」「フェイント」のいずれかを入力してください。")
            continue
    
    print(f'コンピュータの技: {computer_choice}')
    
    if user_input == computer_choice:
        print("引き分けです！")
    elif  (user_input == "蹴る" and computer_choice == "殴る") or \
    (user_input == "飛ぶ" and computer_choice == "蹴る") or \
    (user_input == "避ける" and computer_choice == "殴る") or \
                (user_input == "フェイント" and computer_choice == "蹴る"):
        print("あなたの勝ちです！")   
    else:
         print("コンピュータの勝ちです！")
デザイナーのための 「Cursor 」Onlookで作るWebサイト

昨今、AIを活用してデザインからコード生成まで一括で行ってくれるツールが多く出ています。
有名なところだと[Vercel v0](https://v0.dev/chat)や[bolt](https://bolt.new/)、[Lovable](https://lovable.dev/)などがあります。
Lovableに関してはQiita内でもいくつか記事はありました。
今回は、デザイナーのための「Cursor」とトップページのも書かれてあるOnlookを使用してみた感想を書きたいと思います。

:::note warn
私はV0やlovableの様な他のAIを使用した経験がないので、一方的な感想になっています。
:::


## Onlookについて

> Onlookを使用すると、Reactのウェブサイトやウェブアプリを視覚的に編集し、その変更をリアルタイムでコードに反映できます

文章だけを見ると、ノーコードツールかなにかの様に感じます。
プロンプトで投げた指示がReactのアプリケーションとして出来上がるようです。

https://onlook.com/ja/?ref=dailydev

## 実際に使ってみる

デスクトップアプリをダウンロードし、立ち上げるとこの様な画面が表示されます。

![Onlookのデスクトップアプリを立ち上げた画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3443/70a20e71-3b1e-4352-8904-cf7b34a03cb2.png)


さっそくプロンプトを投げてみます。

```
ポートフォリオサイトを作りたいと思っています。
黒を基調としたシックでシンプルなサイトを望んでいます。
```

こういうサイトが完成しました。
サイトがシンプルすぎる。


![プロンプトによって生成されたサイト](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3443/f6f318d8-76d8-493a-84a9-d34095638fc2.png)

下のアイコンでオブジェクトを移動したり、テキストを新たに挿入することもできそうです。
こういったところが「デザイナー向け」なところなのでしょうか。

![デザインプレビュー画面下にあるツール](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3443/cb7ee8e6-79cb-41ef-a828-bce321c21c03.png)


生成されたサイトは`localhost:3000`で見ることができます。


![ローカルで立ち上げられたポートフォリオサイト](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3443/aba4445e-eeca-491f-ac53-201c133e74e5.gif)

生成されたサイトは左下にあるCursorエディタのアイコンをクリックすると、実際のコードを見ることができ、そこで直接編集することができます。
Tailwind CSSを使用しているようで、背景が`bg-black`になっていたところを`bg-sky-500/50`に変更してみました。

![コンテンツの背景をbg-blackからbg-sky-500/50に変更した](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3443/73bb1262-4ec1-4dba-8200-56028ac3ad50.png)

エディタで保存すると、onlookのほうでも即座に反映されます。

![背景色が反映されたデザイン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3443/194a3f6d-1876-407c-87ed-773df3caf68e.png)

## かかる費用は？
基本的には無料ですが、たくさん使いたい場合は月額20ドルとのことです。

![Onlookの価格表](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3443/7553542a-e4e6-46d0-92b2-ebcbf5bbaa41.png)


現在はデスクトップアプリですが、今後はWebアプリに移行するらしくオープンソースとしても展開されています。

https://github.com/onlook-dev/onlook

READ MEを見る限り、今後の追加機能としてFigmaファイルのインポートなどができるようになりそうですね。
Onlookに投資している日本人の方もいるらしく、それもあってか日本語対応していてありがたいです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">投資先であるデザイナー向けCursorのOnlook（<a href="https://twitter.com/onlookdev?ref_src=twsrc%5Etfw">@onlookdev</a>）が、GitHubの本日のトレンドリポジトリで1位になりました🎉<br><br>本日だけで2.4kスターを獲得し、合計で既に14.2kスターに達しています⭐<br><br>日本語にも対応しているので、デザイナーの皆さん、ぜひチェックしてみてください！ <a href="https://t.co/0T60IAGuCE">https://t.co/0T60IAGuCE</a></p>&mdash; Taro Fukuyama (@taro_f) <a href="https://twitter.com/taro_f/status/1930122842512998861?ref_src=twsrc%5Etfw">June 4, 2025</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## 最後に

今回、AIにサイトをまるっと作ってもらうという事を初めて行ったのですが、こんなに簡単にできるのかという感想でした。
他のV0やboltなどを使ってみて比較してみたいという気持ちになりました。
Onlookをすぐに使ったほうが良いのかどうかは、Web版がリリースされてからでも良くないかな？と個人的には思いました（他のサービスも使ってみたいので）
あと、「デザイナーのための」という謳い文句なら、フォントを変更できたり一部分だけ色を変えたりとプロンプトにいちいち入力するのではなく、デザインツールとしての機能もつけても良いのかな？と感じました。

## 公式YouTubeもあります

https://www.youtube.com/@OnlookDev/videos
今どきの生成AI事情、どうなってるの？

# はじめに

みなさんは最近話題の生成AIについて、どれくらいご存知でしょうか？

私は最近、ChatGPTやGeminiといった生成AIを有料プランで使い始め、徐々にその魅力にハマっていきました。使っていく中で「今、生成AIはどこまで進化しているんだろう？」と気になり、最新の情報を調べてみたので、この記事で簡単にご紹介したいと思います。

# 「Vibe Coding」って？

最近では、「Vibe Coding（バイブ・コーディング）」という新しい開発スタイルが話題です。これは、なんとなく雰囲気(Vibe)でAIとやりとりしながら、コードを書いたり、修正したりできるスタイルのこと。

生成AIがソースのプロジェクト全体を理解し、ちょっとした指示だけでフォルダやファイルの作成、ソースコードの修正まで自動でやってくれるんです。しかも、その完成度が高い！

# 注目のAIツールたち

以下のようなツールが、Vibe Codingを支えている代表的な例です。
* Cursor
* Claude Code
これらは主にコードの補完や修正をサポートしてくれるツールです。

さらに、インフラの構築まで含めたフルスタック対応が可能なAIとしては、次のようなものも注目されています。
* Devin
* Bolt.new
であれば、インフラ周りもAIが作成してくれます。

例えば、Bolt.newでは、Webアプリケーションの開発を最初から最後までAIが自動で進めてくれるという驚きの体験ができます。

# 動画紹介

### Bolt.new

↓の動画では、Bolt.newの実際の動きを紹介しています
[【完全版】初心者OK！Bolt.newで1からフルスタックWebアプリケーション開発するためのBolt.new完全ガイド入門](https://www.youtube.com/watch?v=FwDnhTSNuQA)

### Devin

↓の動画では安野貴博さんが、Devinの利用現場について紹介しています。
[【マジで触るべき】月20ドルでチームに“開発エージェント”！？　Devinをはじめるなら今！](https://www.youtube.com/watch?v=AgCmdRpFd18)

### Claude Code

↓の動画ではClaude Codeを使って、まるでエンジニアチームのようにAI同士が協力しながらWebサイトを自動で構築していく様子が紹介されています。
動画では生成AIに100ドル分のクレジットを使ってしまいましたが、人を雇うよりは低コストなので、可能性の広がりを感じました。
[【AI自律開発】Claude Codeでエンジニア組織を構築して自律的にコードを書かせてみた【Vibe Coding / バイブ・コーディング】](https://www.youtube.com/watch?v=Z6gluxYKQcs)

### その他色々

この他にも非常に多くの生成が存在するのですが、↓の動画でDeNAさんが色々紹介されています。
[【効率4倍!?】「AIにオールイン」DeNA現場社員のAI活用最前線に突撃！AI活用による効率化の実態とは？新規事業 / ドキュメンテーション / デザイン / コーディング](https://www.youtube.com/watch?v=WvdrWgVSv_8)

# まとめ

生成AIは「補助ツール」から「実働エンジニア」へと進化しつつあります。少し前までは想像もしなかったことが、今では手軽に体験できる時代になりました。

色々なAIがあって迷いますが、まずは使ってみて効果を実感したいですね。
材料力学「段付きはり」をsympyでやってみた。

・作図は未です。

# sympyで
#### ver0.1  
・段付き棒の右側が固定され、自由端に集中荷重P。Iと３Iの場合
```python
# ver0.1
from sympy import *
var('P,x,l,E,I')
M=P*x
U= integrate(1/(2*E  *I)*M**2,(x,  0,l/2)) \
  +integrate(1/(2*E*3*I)*M**2,(x,l/2,l  ))
print("#",diff(U,P)) 
# 5*P*l**3/(36*E*I)
```
・段付き棒の左側が固定され、自由端に集中荷重P。2IとIの場合
```python
# ver0.1
from sympy import *
var('P,x,l,E,I')
M=P*(x-l)
U= integrate(1/(2*E*2*I)*M**2,(x,  0,l/2)) \
  +integrate(1/(2*E  *I)*M**2,(x,l/2,l  ))
print("#",diff(U,P)) 
# 3*P*l**3/(16*E*I)
```
# sympyで作図
・未。これからです。

# いつもの? sympyの実行環境と 参考のおすすめです。
[(テンプレート)](https://qiita.com/mrrclb48z/items/00dd08b0317069be9342)

# いつもと違うおすすめです。

#### Qiita内

https://qiita.com/mrrclb48z/items/9bf3ba2792dc865f8e46

#### 文献
・

https://www.amazon.co.jp/%E6%9D%90%E6%96%99%E5%8A%9B%E5%AD%A6-JSME%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E6%97%A5%E6%9C%AC%E6%A9%9F%E6%A2%B0%E5%AD%A6%E4%BC%9A/dp/4888981582
🚀 Qiita記事投稿者必見！「Qiita記事ブーストギルド」Discordサーバーを立ち上げました！✨

皆さん、こんにちは！Qiitaに記事を投稿されている皆さん、いつもお疲れ様です！

この度、**Qiitaに記事を投稿するクリエイターの皆さんが、お互いの記事を「いいね」や「ストック」で応援し合い、Qiitaトレンド入りを目指すためのDiscordサーバー「Qiita記事ブーストギルド」を立ち上げました！** 🚀🎉

「せっかく書いた記事、もっと多くの人に見てもらいたい！」
「記事のいいね数を増やして、トレンド入りを狙いたい！」
「他のQiita投稿者と交流して、情報交換したい！」

そんな皆さんの熱い想いを形にする場所として、このギルドを設立しました。

ご参加はこちらから！
https://discord.gg/QaerUBaRMw

## ギルドのコンセプト：💪 相互扶助で記事をバズらせよう！

このサーバーの最大の目的は、**参加者全員で協力し、お互いのQiita記事の露出と評価を高めること**です。あなたが他者の記事を応援すれば、あなたの記事もきっと応援される。そんな「ギブ＆テイク」の精神で、Qiitaでの活動をより楽しく、より成果の出るものにしていきましょう！

具体的には、以下のような活動を想定しています。

  * **🔗 記事リンク共有**:
      * 自分のQiita記事をシェアし、他のメンバーに「いいね」や「ストック」をリクエスト。
  * **✅ アクション完了報告**:
      * 他のメンバーの記事に「いいね」や「ストック」をしたら報告し、貢献度を可視化。
  * **🏆 トレンド速報**:
      * サーバー内の記事がトレンド入りした際にお祝いし、喜びを共有。
  * **✍️ 記事レビュー依頼**:
      * 公開前の記事について、他のメンバーからフィードバックをもらう。
  * **🗣️ 自由な交流**:
      * Qiitaに関する相談はもちろん、普段の開発話や雑談で親睦を深める。

## サーバーアイコンとチャンネル構成をチラ見せ！👀
サーバーアイコンは、Qiita公式がQiitanのはんことして画像アップロードされてたので、今回使わせていただきました。

![サーバーアイコン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1724045/8f00b22f-25f9-4f4e-a2df-df35a87a74a4.png)

そして、サーバーの中身はこんな感じです！目的別に分かりやすくチャンネルを分けています。

![サーバーの中身.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1724045/21d50cc0-da45-452a-b241-7b0d312f2948.png)

私たちは、参加者の皆さんが活動しやすいよう、以下のチャンネルを用意しています。

### チャンネル一覧 🚀

#### 📌 **情報・アナウンスメント系**

  * **\#👋｜はじめに**:
      * 新規参加者はこちらへ！サーバーの概要とルール、自己紹介のお願いがあります。
  * **\#📢｜アナウンス**:
      * 運営からのお知らせや、重要な情報をお伝えします。
  * **\#💡｜アイデア・提案**:
      * サーバーをもっと良くするためのアイデアやフィードバックを募集しています！

#### 📈 **記事拡散・協力系（ギルドの核！）**

  * **\#🔗｜記事リンク共有**:
      * あなたのQiita記事をシェアし、応援をリクエストするメインチャンネルです。
  * **\#✅｜アクション完了報告**:
      * 他の人の記事を応援したことを報告し、貢献を積み重ねましょう。
  * **\#🏆｜トレンド速報**:
      * サーバーから生まれたトレンド記事をみんなでお祝いするチャンネルです！

#### 🤝 **交流・学習系**

  * **\#🗣️｜フリートーク**:
      * Qiita以外の雑談もOK！気軽に交流を深めましょう。
  * **\#✍️｜記事レビュー依頼**:
      * 記事公開前にフィードバックが欲しい時に活用ください。
  * **\#🤔｜記事ネタ相談**:
      * 次の執筆テーマに悩んだらここで相談！
  * **\#📚｜Qiita攻略TIPS**:
      * Qiitaでの記事作成に関するノウハウを共有し合いましょう。
  * **\#🙋‍♀️｜技術Q\&A**:
      * 技術的な疑問を気軽に質問できる場所です。

#### 🔊 **ボイスチャンネル**

  * **\#🎤｜フリートークVC**:
      * 音声で気軽に会話を楽しめます。
  * **\#📝｜もくもく執筆会VC**:
      * みんなで一緒にQiita記事を書く「もくもく会」を開催する際に使えます。
  * **\#🗣️｜交流イベントVC**:
      * 今後開催するイベントなどで使用予定です。

## 参加をお待ちしています！🌟

「Qiita記事ブーストギルド」は、あなたのQiitaライフをより豊かにし、記事がより多くの人々に届くお手伝いをします。共通の目標を持つ仲間たちと協力し、一緒にQiitaでの成功体験を積み重ねていきませんか？

ご参加はこちらから！
https://discord.gg/QaerUBaRMw

皆さんのご参加を心よりお待ちしております！🚀✨
AIでプログラミングが楽すぎる！


Robloxでバズってる「Grow a Garden」の作物価値計算ツール、たった1日で作って公開しちゃった → 🔗https://www.grow-a-garden-calculator.net

使ったAIモデルの感想：

Claude-4 → 精度高いけど高い（個人開発にはキツい）

Claude-3.5 → フロントの見た目がイマイチ…

Claude-3.7-sonnet → 今のところ最強！コスパもいいし出力もキレイ

Gemini-2.5 → なんかClaude-3.7に負けてる…

GPT-4.1 → まだ試してないけど、どんだけすごいんだろ？🤔

開発の裏話：

Cursor（AI搭載エディタ）＋Claudeでガンガン書いたらマジで1日で完成

Vercelにポイッしたら即公開（楽すぎる）

もし使ってみてくれたら感想教えてね〜！
「こんな機能ほしい！」とか「ここおかしい！」とかあればDM待ってます✨
pythonのユーザー定義関数「SymPy で `P + 9*P*b/(7*a)` を `(1 + 9*b/(7*a)) * P` の形で表示」をAI先生ヘ。

# (本日の)ChatGPT先生へ
```
# SymPy に関する質問リスト
1. SymPy で `P + 9*P*b/(7*a)` を `(1 + 9*b/(7*a)) * P` の形で表示する方法を教えてください。
2. `P*(7*a + 9*b)/(7*a)` が出力されてしまいます。`P*(1 + 9*b/(7*a))` の形で表示したいです。
3. `Rational` を使わずに `P*(1 + 9*b/(7*a))` の形で表示したいです。
4. `P*(7*a + 9*b)/(7*a)` から始めて `P*(1 + 9*b/(7*a))` の形に変形してください。
5. 手動で式を作らずに、自動的にその形へ変形してください。
6. 上記の処理を行うユーザー定義関数を作成してください。
7. この会話で出てきた全ての質問を Markdown形式で一覧にしてください。
```

#### (以下回答抜粋)
>最後だけ
>✅ ユーザー定義関数：refactor_with_common_symbol
```python
from sympy import symbols, simplify, collect

def refactor_with_common_symbol(expr, symbol):
    """
    式 expr の中から symbol を共通因子として括り出し、
    形を symbol * (残りの式) の形に整える。
    """
    simplified_expr = simplify(expr)         # 式を簡略化
    collected_expr = collect(simplified_expr, symbol)  # symbol で括る
    return collected_expr
```

# Gemini先生へ

# copilot先生へ

# いつもの? sympyの実行環境と 参考のおすすめです。
[(テンプレート)](https://qiita.com/mrrclb48z/items/00dd08b0317069be9342)

https://qiita.com/mrrclb48z/items/b6351b48e47bcf6265c0

# いつもと違うおすすめです。
#### Qiita内
Jetpack Composeでダークモード／ライトモードを切り替える基本方法

Jetpack Compose を使ったアプリで、ダークモード対応方法です。
基本の切り替え方法をシンプルにまとめました。


## システムのダークモード／ライトモード状態を取得

Jetpack Compose には、現在のシステムがダークモードかどうかを判定する関数があります。

```kotlin
val isDark = isSystemInDarkTheme()
```

## ライトテーマとダークテーマのカラースキームをMaterialThemeで切り替え

```kotlin
private val LightColorScheme = lightColorScheme(
    primary = Color(0xFF6200EE),
    background = Color.White,
    onBackground = Color.Black
)

private val DarkColorScheme = darkColorScheme(
    primary = Color(0xFFBB86FC),
    background = Color.Black,
    onBackground = Color.White
)

@Composable
fun MyAppTheme(
    useDarkTheme: Boolean = isSystemInDarkTheme(),
    content: @Composable () -> Unit
) {
    val colors = if (useDarkTheme) DarkColorScheme else LightColorScheme

    MaterialTheme(
        colorScheme = colors,
        typography = Typography,
        content = content
    )
}
```


## MainScreenのサンプルコード
```kotlin
@Composable
fun MainScreen() {
    // MaterialTheme の色を使って背景とテキスト色を取得
    val backgroundColor = MaterialTheme.colorScheme.background
    val textColor = MaterialTheme.colorScheme.onBackground

    Surface(
        modifier = Modifier
            .fillMaxSize()
            .background(backgroundColor),
        color = backgroundColor
    ) {
        Box(
            modifier = Modifier.fillMaxSize(),
            contentAlignment = Alignment.Center
        ) {
            Text(
                text = "Hello, Jetpack Compose!",
                color = textColor,
                style = MaterialTheme.typography.headlineMedium
            )
        }
    }
}
```

## 実行結果

| ライトモード | ダークモード | 
|:-----------|------------:|
| ![スクリーンショット 2025-06-22 18.53.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/8f1da917-2d32-4d65-adad-7d7dd2c5ca76.png)       | ![スクリーンショット 2025-06-22 18.52.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/b9b056d0-f42d-4c78-8cd6-de5521d33454.png)        |
s3静的ウェブサイトホスティングを.devドメインでやろうとして沼った話

こんにちは。
現在 (本名).dev と言う名のドメインを個人で買って使ってます。

#### 沼った理由

今回 html, css, jsだけで構成された静的ページをamazon s3でデプロイして、
route53で個人ドメイン(.dev)で繋ぎました。
しかし、何故かブラウザでurlを入力してもずっとtimeout errorになりページが開かれない。

route53のレコード設定は間違っていない、S3のACLもpublic access OKになってあるし bucket website endpointのurlではちゃんとページ開かれる。
terminalで `nslookup www.(個人ドメイン).dev`打つとindex.htmlの中身がresponse 200で返ってくる。

なのに何故か設定したurlでブラウザに入力すると必ず弾かれる。DNScacheを削除しても。

原因はなんと、**.devドメインがHTTPSしか許さないドメインだから**でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4043411/da3ec95e-8681-4852-8db2-37f884ae0c3d.png)


htmlとjsファイル一個だけで完結する簡単なページなのでhttpで充分なはずですが、ドメインが.devと言う理由だけでssl作ってcloudfrontまで作成してようやくデプロイできました涙。

しかし今回の件でAIもまだまだだなと改めて思いましたね。

どう考えても設定間違ってないのにエラーになる原因がわからなくて、ClaudeにAWSの設定とレコード全部見せてあげました。
**それなのにClaudeは.devを使っていることを最初から知っていたにもかかわらず、ドメインがHTTP不可であることが原因なのを最後までcatchできませんでした。**
おかげで2時間くらいterminalとcache削除ずっとやらされましたw

多分インフラそこそこやってる人間が私の設定見ればすぐhttps使えよと言ってくれたと思います。

#### 結論
簡単なサイトでもhttps設定するのがめんどくさくない人だけ.devドメイン購入してください。
AIに聞いても沼る可能性あるから、人間相手にも質問しましょう。
【備忘録】初心者でも安心！SQL*PlusとSQLで学ぶOracleユーザー＆テーブル操作入門

この記事を作成した経緯
---
Oracleデータベースを使った開発や検証を始めたいけれど、  
「ユーザーの作り方が分からない」「SQL*Plusの接続ってなに？」という壁にぶつかる方は少なくありません。

この記事では、仮想マシンに構築したOracle環境に対して、  
ユーザー作成・権限付与・SQL*Plusからの接続・テーブル作成まで、  
実際に使えるSQLコマンドとともにやさしく解説します。

Oracle初心者の方でも、この1ページで必要な基本操作をマスターできるはずです。

この記事が想定している読者
---
Oracle Database 23ai Free VirtualBox Appliance で Oracle DB 23ai環境を構築している方


ユーザー関連
---
* ユーザー作成

``` sql:
CREATE USER hoge IDENTIFIED BY hogePass
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON users;
```

* 権限の付与
①ログイン権限

``` sql:
GRANT CREATE SESSION TO hoge;
```

②開発用に便利な権限
``` sql:
GRANT CREATE TABLE, CREATE VIEW TO hoge;
```

③ロールでまとめて付与

``` sql:
GRANT CONNECT, RESOURCE TO hoge;
```

ユーザー状態の確認
---
* 登録済みユーザーと状態の確認

``` sql:
SELECT username, account_status FROM dba_users ORDER BY username;
```

* 権限を持つユーザーの確認

``` sql:
SELECT grantee 
FROM dba_sys_privs 
WHERE privilege = 'CREATE SESSION'
  AND grantee IN (SELECT username FROM dba_users);
```

* VECTORユーザーの情報確認

``` sql:
SELECT * FROM dba_users WHERE username = 'VECTOR';
SELECT * FROM dba_sys_privs WHERE grantee = 'VECTOR';
```


テーブル作成
---
``` sql:
サンプルテーブル USER_TABLE
CREATE TABLE USER_TABLE (
  UNO   NUMBER,
  UNAME VARCHAR2(24),
  AGE   NUMBER,
  BDATE DATE
);
```

接続とSQL*Plus操作
---
* SQL*Plusで直接接続する場合

``` sql:
sqlplus hoge/hogePass@localhost:1521/freepdb1
```

* 接続せずにSQL*Plusを起動（後で CONNECT）
``` sql:
sqlplus /nolog
CONNECT hoge/hogePass@localhost:1521/freepdb1
```

エラーと対処メモ
---
| エラーコード | 内容と対策例 | 
|---|---|
| SP2-0640 | 未接続状態でSQLを実行 → CONNECT で接続する | 
| ORA-01031 | 権限が不足している → GRANT で必要な権限を付与 | 
| ORA-01017 | ユーザー名またはパスワードが不正 | 
| ORA-28000 | アカウントがロック → ALTER USER ユーザー名 ACCOUNT UNLOCK; | 
| ORA-12154 / ORA-12514 | 接続識別子やサービス名が不正 → lsnrctl status で確認 | 

その他
---
TeraTermから下記コマンドでcommand not foundが出た場合、
環境変数でORACLE_HOMEを設定できていない可能性があります。
``` bash
sqlplus /nolog
```

その際は下記コマンドを実行するとうまくいく場合があります。
※freepdb1をすでに作成している場合
``` bash
export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree/
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=freepdb1
$ORACLE_HOME/bin/sqlplus sys@localhost:1521/freepdb1 as sysdba
```

またこちらの方法は毎回exportする必要があるので以下のように
Linux環境のホームディレクトリの/.bash_profileにパスを追加しておくと
毎回コマンドを打たなくて済みます。
※/.bash_profileは隠しファイルだったのでvimで編集しています。
``` bash
 vi ~/.bash_profile
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677151/40f3c802-fa38-4f0a-b9e3-f47f954a584b.png)


【参考記事】
[[SQL:01]sqlplusをどこで実行する？PATHって？ | Linux初心者のクラウドサーバあれこれ、AWSのちGCE
](https://ameblo.jp/linhogehoge/entry-11866073440.html)
[いまさら遅い？Oracle Databaseのコンテナ技術](https://www.reqtc.com/blog/oracle-pdb-cdb.html)
[初めてのvim【基本操作編】
](https://qiita.com/iyoshi/items/af3e789a86796bc151ff)
【ChatGPT】意図的に“ハルシネーション（虚構や幻想）”を誘発させて、事実よりも想像力・創造性を優先させるには。


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

　今回は、意図的に“ハルシネーション（虚構や幻想）”を誘発させて、事実よりも想像力・創造性を優先させるには、どうしたらいいか、です。

:::note alert
暑い日々が続きます。熱中症に
ご注意を。クーラーがあっても
油断しないで、体調管理をして
乗り切りましょう。
:::

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

　文化庁レポートをもとにした
　　著作権法についての動画（約20分）
　　　[かいちのAI大学　【警告】ChatGPTの画像生成は危険です...【4o Image Generation】](https://youtu.be/8VLUnG-iyo0?si=rAfjMboqmNqppDGq)
***
***
　さっそく、【本題】です。

　今回は、
　　意図的に
　　　“ハルシネーション(虚構や幻想)”を
　　　　誘発させて、事実よりも
　　　　　想像力・創造性を優先させる
　　　　　　方法です。

　創作活動において
　　想像力・創造性は
　　　とても大事です。

　また、
　　エセ科学に代表されるように
　　　本当の科学をベースにして
　　　　組み立てる場合もあります。

　そういうところに
　　頭を使うのは
　　　非常に労力がいります。

　それを
　　ChatGPTをはじめとした
　　　生成AIにサポートしてもらおうと
　　　　考えるのは、当然なことですね｡

　もちろん、
　　現在、私が書いている小説には
　　　書く段階では
　　　　生成AIを使っていません。

　　小説家になろう様に
　　　アップする前に、
　　　　誤字脱字や言いまわしを
　　　　　チェックするのには
　　　　　　使っていますが。

　　あと、検索にも使っていますね😅
***
　それはさておき、
　　意図的に
　　　“ハルシネーション(虚構や幻想)”を
　　　　誘発させて、事実よりも
　　　　　想像力・創造性を優先させる
　　　　　　方法です。

　“PIP”という手法があるそうです。

　“Purposefully Induced Psychosis”
　　和訳すると、
　　　“意図的に誘発された精神病”と
　　　　なってしまいますが、
　　　　　そこはおいといて😅

　スペキュラティブ・フィクション、
　　対話型物語、XRなどに
　　　応用する手法、だそうです。

　Herman Melvilleの
　　『モビー・ディック（白鯨）』に
　　　登場する“Pip”の“狂気”から
　　　　着想を得ており、誤りではなく
　　　　　“創造の入り口”として
　　　　　　位置づけています。

　下記の論文をもとにしています。
　　[Purposefully Induced Psychosis (PIP): Embracing Hallucination as Imagination in Large Language Models](https://arxiv.org/abs/2504.12012)

　以下のPromptは
　　上記を読んだ上で
　　　ChatGPTさんが出してくれた
　　　　サンプルです。

```Text:PIP-サンプルPrompt
【前置き】
- これから「創造モード」に入ります。
- このモードでは、事実よりも詩的想像やメタファーを重視します。
- 出力された内容はすべて“フィクション”です。

【指示】
1. 「銀河の味」を感じる都市を描写してください。
2. 比喩や詩的表現を多用し、自由連想で構成してください。
3. 次に「現実モードに戻ってください」と書いたら事実チェックに切り替えてください。
```

　このPromptは
　　【前置き】で、ユーザーは
　　　フィクションを求めて
　　　　指示していると
　　　　　ChatGPTに
　　　　　　わからせています。

　そして
　　【指示】で
　　　どんな描写を行ない、
　　　　どんな表現を用いるのか
　　　　　を指示しています。

　最後に、
　　創造モードから
　　　現実モードに戻る
　　　　方法を提示しています。

　これを
　　実行すると
　　　とても詩的で
　　　　自分では出せないものに
　　　　　なりました。

　もちろん、
　　これをそのまま使うのではなく、
　　　自分に合ったカスタマイズを
　　　　する必要があるでしょう。

　しかし、
　　手掛かりにはなります。

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

　今回は、ここまで。
会計ソフトの作成　１　５要素を示すテーブル

とある事情で簿記資格（３級）を取得した際、この３級（中小企業の会計を管理）レベルの簿記の仕組みは自分で実装できるのでは？中小どころか零細部類なんだしと気づきました。今更ですが。
市販のソフトの機能に不足はないのですが、
1. クラウドにデータを持つ関係でレスポンスが今ひとつ。データはクラウドにあるのに、アプリはデスクトップ版で、結構な頻度でアップデートが生じ、その度に管理者パスワードなんてのも必要。会計の仕組み、税法、会社法、税率が変化しないと基本変化しないのに。なにゆえのアップデートなんだろう？
2. 簿記、会計の仕組みがそうなので仕方ないことでしょうが、期をまたいだデータの取得ができない。決算期日に関わらず、ある日を起点にし、ある日を終点とした試算表等の計算ができると、なにかと便利だと思うのだが
3. 以上の理由で、会計ソフトの内製化を試みて検討中
4. 手順は、市販ソフトから汎用データを落として自社内のDB(postgresql)に保存。そのDBから、試算表もどきが出力できるまでが当面の目標
5. 内製化して外に出すものでもないので、スキーマなど、適当と考える部分は日本語で。postgresql内外で、それで困った事が無いのだし。（テーブル名や、列名等に大文字使ってしまった時の方が不具合度高かった）
最初の一歩として、５要素を示すテーブルを作成。５要素８取引は、簿記の学習で最初に来る話で、勘定科目以前の大前提だと覚えましたが、当然過ぎてか、その実装をあまり見かけないと思います。
```sql
CREATE TABLE kaikei."type_勘定要素" (                                                         
    id integer NOT NULL,
    "要素コード" text NOT NULL,
    "要素名" text NOT NULL,
    "貸借" text NOT NULL,
    "並び順" integer
);

ALTER TABLE kaikei."type_勘定要素" OWNER TO postgres;


COMMENT ON TABLE kaikei."type_勘定要素" IS '勘定５要素とその本来のポジションを持つ';
COMMENT ON COLUMN kaikei."type_勘定要素"."要素コード" IS '参照される時のプライマリーキー';
CREATE SEQUENCE kaikei."type_勘定要素_id_seq"
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER SEQUENCE kaikei."type_勘定要素_id_seq" OWNER TO postgres;
ALTER SEQUENCE kaikei."type_勘定要素_id_seq" OWNED BY kaikei."type_勘定要素".id;
ALTER TABLE ONLY kaikei."type_勘定要素" ALTER COLUMN id SET DEFAULT nextval('kaikei."type_勘定要素_id_seq"'::regclass);
INSERT INTO kaikei."type_勘定要素" VALUES (1, '1', '資産', '借方', 1);                        
INSERT INTO kaikei."type_勘定要素" VALUES (2, '2', '費用', '借方', 2);
INSERT INTO kaikei."type_勘定要素" VALUES (3, '3', '負債', '貸方', 3);
INSERT INTO kaikei."type_勘定要素" VALUES (4, '5', '収益', '貸方', 4);
INSERT INTO kaikei."type_勘定要素" VALUES (5, '4', '資本', '貸方', 5);
INSERT INTO kaikei."type_勘定要素" VALUES (6, 'X', '', '不定', 100);

SELECT pg_catalog.setval('kaikei."type_勘定要素_id_seq"', 6, true);

ALTER TABLE ONLY kaikei."type_勘定要素"
    ADD CONSTRAINT "type_勘定要素_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY kaikei."type_勘定要素"
    ADD CONSTRAINT "u_type_勘定要素コード" UNIQUE ("要素コード");
```
id列は、Laravelであれ、その他のフレームワークであれ必須であるので作りますが、要素コードという別の列を持ち、それにもUNIQUE制約をつけているのは、経験上の工夫。PostgreSQLでは、UNIQUE制約がある列は、被参照列として動作するし、id列をserialで無い実装を行うより楽。
並び順という列は、例えば貸借対照表を作成する場合、借方で資産、費用、どちらを先に帳票に乗せるか、計算上は別段意味がないのだけど、現実には決められた並びで表示されないとだめで、そのための順序。RDB使い出した頃は、RDBの各行に順序は存在しないという原則、そしてそれは正しいのだけど、それを遵守していたものだが、現実世界には並び順というのがあって、大抵それはそれなりの意味を持っている。
以上で、５要素を示すテーブル作成の終了。次は、資産、負債、資本、収益、費用、各要素に入る勘定の検討。
FY25卒 新人社会人が生成AI任せにPythonを書いたら社内向けにメールを誤送信した話

# FY25卒 新人社会人が生成AI任せにPythonを書いたら社内向けにメールを誤送信した話

こんにちは、FY25卒の新人エンジニアです。

大学ではCやfortranを少し学んだ程度で、Pythonはほぼ未経験。そんな私が、業務で **AWS Lambda + Python + 生成AI** に挑戦し、社内を混乱させる大ミスを犯しました。この失敗談を戒めも込めて共有します。

## ことの発端

ある日、先輩からこんな依頼が。

> 「AWSアカウントでMFA（多要素認証）を設定していないユーザーに、注意喚起のメールを定期送信するプログラムを作ってほしい」

セキュリティ強化の一環として、AWS Lambdaで定期実行すれば効率的だと思いました。しかし、PythonやAWSは初心者。とはいえ、「生成AIに頼めばなんとかなる！」と軽い気持ちで進めました。

## 生成AIに丸投げ

ChatGPTに依頼し、コードを生成してもらいました。

```python
import boto3
import botocore.exceptions
from botocore.config import Config

# AWSクライアントの設定
iam_client = boto3.client('iam', config=Config(region_name='us-east-1'))
ses_client = boto3.client('ses', config=Config(region_name='us-east-1'))

# 送信元メールアドレス（SESで検証済みであること）
SENDER_EMAIL = "aaa@example.com"
# 通知メッセージのテンプレート
SUBJECT = "MFA設定のお願い"
#
# 一見動きそうなコード...
#
```

コピペしてLambdaにデプロイし、実行。すると… **メールが送信された！すごい！**

一瞬、成功した気分に浸りました。

## 失敗の発覚

喜びも束の間、問題が次々と発覚。

- **本番環境で実行**してしまい、テストメールがそのまま全ユーザーに送信された
- 本番環境だったため、グループ会社にもメールが届いた
- ユーザーからは「知らない新人から謎のメールが…」と混乱の声

ユーザーからの直接問い合わせやSlackの騒ぎで事態を把握。先輩が駆けつけ、マネージャーから「一旦落ち着こう」と声をかけられました。

> 「Lambdaの実行ロール、SESの送信権限、フィルタロジック、全部確認した？」  
> → してませんでした…

## なぜ失敗したのか

冷静に振り返ると、原因は以下の4つ。

1. **AIのコードを鵜呑みにした**：ロジックを理解せずコピペ
2. **Pythonを理解していなかった**：コードの挙動を把握できず
3. **テスト環境をスキップ**：本番でいきなり実行
4. **「動く」＝「正しい」と思い込んだ**：学生気分のままプログラムを作る

生成AIは便利ですが、理解しないままコードを動かすのは爆弾を抱えるようなものだと痛感しました。

## 学びと改善

この失敗を教訓に、以下の習慣を徹底しています。

- **AI生成コードは必ず精査**：自分でロジックを理解
- **テスト環境での検証を必須**：本番実行前に動作確認
- **AWSドキュメントを熟読**：IAM権限やSDKの挙動を把握

書いてみれば当たり前のことですが、成果を出したいと先走りました

## 結論：AIは相棒、責任は自分

生成AIは強力なツールですが、**コードを運用し、責任を持つのは自分**です。  
新人だからこそ、「動くものを作る」だけでなく、「**なぜ動くのか**」「**どう動くのか**」の理解が不可欠です。  
同じくAIを使ってコーディングに挑戦する新人エンジニアの皆さん、どうかご安全に！
Pickleを使う

### 大きめのデータオブジェクトをファイルに保存したい

※自分メモ

公式の標準ライブラリpickleを使う

※pickleはピクルスの意味。そう知ると一気にイメージが変わる。アメリカの大地の風景が思い浮かぶ

```py
import pickle
```

### 保存する

- "wb"でファイルopen
- pickle.dump()で保存

```py
val_a = 'value'

with open("./file_A", "wb") as f:
   pickle.dump(val_a ,f)
```

### 取り出す

- 保存済みのファイルを"rb"でopen
- pickle.load()で変数に読み込み

```py
with open("./file_A", "rb") as f:
   val_a = pickle.load(f)
```
バイナリファイル、読出しでopen


### 複数まとめて保存する

```py
val_a = 'a value'
list_a = ['a', 'b', 'c']
dict_a = {'key1':'val1', 'key2':'val2', 'key3':'val3'}

with open("./file_A", "wb") as f:
   pickle.dump([val_a, list_a, dict_a], f)
```

### まとめて取り出す


```py

with open("./file_A", "wb") as f:
   val, list, dict = pickle.dump([val_a, list_a, dict_a], f)
```
RockyLinux9 Mysql8.0 インストール後の設定

### MySQLインストール後の設定
mysql_secure_installation コマンドを実行して初期設定をしていく。
```console
# mysql_secure_installation

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.
```
#### パスワード検証コンポーネントを設定するか？
　→　Enter: 開発環境なので設定しない
```console
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No:
```
#### パスワード設定
　→ パスワードを登録（リタイプ）
 ```console
 Please set the password for root here.

New password:

Re-enter new password:
```
#### 匿名ユーザーを削除するか？
　→ Y: 匿名ユーザーを削除する
```console
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.
```
#### リモートからのルートログインを禁止するか？
　→ Enter: 開発環境なのでリモートからのルートログインを許可する
```console
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) :

 ... skipping.
```
#### testデータベースとそれへのアクセスを削除するか？
 → Y: testテーブルとそのアクセスを削除する
```console
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.
```
#### 権限テーブルを今すぐ再読み込みするか？
　→ Y: 再読み込みする
```console
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!
```
#### ログイン確認
設定したパスワードでログインできるか確認する
```console
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.41 Source distribution

Copyright (c) 2000, 2025, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> quit
Bye
```