OmniAICreator/Qiita-1.07M huggingface dataset:
AI・機械学習　昨日、今日、明日

# 昨日
第五世代コンピュータの開発の真っ只中、電総研の研修生として在籍した。
Prologで書かれている方と、LISPで書かれている方がおみえだった。

アセンブラしかよくわかりませんと言ったら、LISPはアセンブラだと言われた。
たしかに、当時、LISP CPUが存在した。
残念ながら、Intel 32 bit CPUが、安価で同程度の処理速度を実現していた。
商業的には成功しなかったかもしれないが、市場に出たことは確かだ。

製造業における機械学習, OSEK(83) 制御(10)
https://qiita.com/kaizen_nagoya/items/fbe846de16f74bea1d6f

docker(18)でpython(10)/Rで機械学習する 書籍/ソース一覧 AI(36)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

「ゼロから作るDeep Learning - Pythonで学ぶディープラーニングの理論と実装」斎藤 康毅 著。dockerで機械学習 with anaconda(1)
https://qiita.com/kaizen_nagoya/items/a7e94ef6dca128d035ab

# 今日。
LLM研究会に参加している。

MCP入門 〜面倒なことはAIエージェントにやらせよう〜 by からあげ を聞きながら https://qiita.com/kaizen_nagoya/items/54b648c838fae8d57e38

Day11 【松尾研LLMコミュニティ】面倒なことはLLMにやらせよう "Beginning LLM"　2024年10月17日
https://qiita.com/kaizen_nagoya/items/efdc23fbe67cdae2126e

本から始める 面倒なことはChatGPTにやらせよう　by からあげ
https://qiita.com/kaizen_nagoya/items/f5ce2a18db54b5610e4b

# 明日
128bit CPU, 量子コンピュータ、GPUの派生というハードウェアの進化よりも、
現実の問題を解決するためにはハードウェアの課題がなにかを洗い出さなきゃってなってる。

クラウドにおけるDevOpsの視点から、一時的な利用の便利化を追求するというよりは、
今、何を解決すると世界の人が喜ぶかに着目したいかも。

全世界の不登校の子供たち「博士論文」を書こう。世界子供博士論文遠隔実践中心 安全(99)
https://qiita.com/kaizen_nagoya/items/912d69032c012bcc84f2

戦争地域、飢餓地域では計算気を配ることは事実上難しい。
打開策がまだない。
GPUクラウドはご存知ですか。大手クラウドの代替品


# 背景

いきなり本題を入ります。AIとLLMの時代で、GPUの需要が相当上がってきたけど、大手クラウドのGPU付きVMが高くて、中々手が出せない企業・個人もいると思います。

オンプレの選択肢もあるけど、設置の問題・可用性や冗長化などの課題でデプロイの難易度が上がります。そんな中で、実は大手クラウドよりかなり安いGPUクラウドもたくさんあります。

GPU提供に特化したクラウドは日本でまだ知名度が低いかもしれないけど、海外ですでに流行しているので、簡単に紹介していきたいです。

# そもそも大手クラウドの価格

## AWS

比較できるために、まず参考としてAWSのG6eマシン価格(1時間/USD)を調べました。

| 名前 | vCPU | RAM | GPU | vRAM | 価格(従量) | 価格(1年Savings) |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| g6e.xlarge | 4 | 32 | L40S x1 | 48 | 2.7 | 2 |
| g6e.4xlarge | 16 | 128 | L40S x1 | 48 | 4.4 | 3.3 |

わかりやすく性能の比較ができるように、**PassMarkでL40Sのスコアは20,023で**、コンシューマーGPUと比べると4060と3070の間になりますが、もちろんvRAMが数倍多いです。

## GCP

| 名前 | vCPU | RAM | GPU | vRAM | 価格(従量) | 価格(1年Savings) |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| a2-highgpu-1g | 12 | 85 | A100 x1 | 40 | 4 | 2.6 |
| n1-highmem-8 | 8 | 52 | V100 x1 | 16 | 3.1 | 1.94 |

*(V100だけの単価はUSD2.48従量で、USD1.57(1年Savings))*

**A100のPassMarkは載せていないけど**、L40Sの1個前の世代で、L40Sの方が20%ぐらい性能が上がったと言われています。

また、**PassMarkでV100のスコアは16,235で**、vRAMも少ないので、全体的にAWSよりやや高い傾向があります。

あくまでコスト感だけを伝えたくて、細かい性能の話は割愛します。

# GPUクラウドの価格

## 国内

国内のサービスが少なくて、または価格非公開やカスタマイズ制が多くて、見つけた2社だけを載せます。

### GPUSOROBAN

https://soroban.highreso.jp/

| 名前 | vCPU | RAM | GPU | vRAM | 価格(従量) | 価格(月額) |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| t40-1-a | 15 | 115 | A100 x1 | 40 | 2.5 | 2.1 |

GCPのa2-highgpu-1gの従量価格と比べると明らかに安いし、月額もGCPの1年間Savingsより安いことがわかりました。

### さくら

https://www.sakura.ad.jp/koukaryoku/gpu-cloud-service/

さくらの場合は細かい価格表に載せていないけど、高火力DOK（Dockerサービス）のV100単価は216円/時間で、USD換算すると1.49なので、GCPのV100単価より40%安くなっています。

## 海外（データセンター）

### RunPod

https://www.runpod.io/

海外でおそらく一番有名なGPUクラウドサービスで、普通のデータセンター用GPUがもちろん種類多く揃っているし、コンシューマーレベルの4090, 5090もあります。

| vCPU | RAM | GPU | vRAM | 価格(従量) |
| ---- | ---- | ---- | ---- | ---- |
| 16 | 94 | L40S x1 | 48 | 0.86 |
| 16 | 125 | A100 x1 | 80 | 1.74 |
| 6 | 41 | 4090 x1 | 24 | 0.69 |

価格表の通りに、国内のサービスよりさらに一段落安くなります。RunPodは最低秒単位で課金されますし、サーバーレスのデプロイ方法もあるので、大手クラウドの代替品としては十分と言えます。

## 海外（コミュニティ）

そもそもコミュニティクラウドの話ですが、一般的にクラウドと言えば、AWSみたいに自社でハードウェアを保有するイメージですが、コミュニティクラウドはそれの反対に、コミュニティからのリソースを利用してユーザーにレンタルの感じです。

コミュニティは他の業者でもあるし、個人でもあります。サービスによって貸すの方法が違うけど、基本的に一定の審査や基準を満たすなら、時間単位でリソースを貸してお金をもらう流れになります。

またリソースが世界中に分散されているので、レーテンシーの問題がある反面、単一障害点の問題がほぼなくなるので、割と安定だと言えます。

（補足で、RunPodはコミュニティクラウドもあるけどそこまで安くない）

### Hyperbolic

https://hyperbolic.xyz/

最低単価だけ載せているけど、参考として、

| GPU | vRAM | 価格(従量) |
| ---- | ---- | ---- |
| H200 | 141GB | 2.4 |
| H100 | 80GB | 1 |
| 4090 | 24GB | 0.28 |

### Vast.ai

https://cloud.vast.ai/

入札式なので、需要と供給で価格が変動します。

| vCPU | RAM | GPU | vRAM | 価格(従量) |
| ---- | ---- | ---- | ---- | ---- |
| 24 | 258 | H200 x1 | 141GB | 2.4 |
| 28 | 193 | H100 x1 | 80 | 1.9 |
| 14 | 32 | 4090 x1 | 24 | 0.26 |

---

# アウトロ

いかがでしょうか。コミュニティクラウドの概念は日本でまだ全く浸透していなくて、安全性の懸念点もあるけど、価格面は圧倒的に勝ています。今後暗号化処理などの技術でより安全な訓練や推論方法が流行ってきたら、一つの選択肢が増えると思います
Rails × Electron モノレポでやらかした node_modules の事故と教訓

こんにちはエンジニア薬剤師の和(かず)です。

最近、Rails プロジェクトに [Electron](https://www.electronjs.org/ja/docs/latest/) や Next.js を統合してモノレポ運用を始めたところ、思わぬ落とし穴にハマりました。

駆け出しすぎるミスに自身で驚愕しました。

# 経緯とハマりポイント

Electron / Next.js のようなフロントエンド中心のフレームワークと Rails を monorepo 構成で統合する際、`node_modules/` の扱いに注意が必要です。

筆者は GitHub の 1ファイル100MB制限 を知らず、Electron の `node_modules/` をまるごと commit & push してしまい、push エラーに…。

```bash
remote: error: File node_modules/xxxxx is 161.15 MB; this exceeds GitHub's file size limit of 100.00 MB
```

最終的には git filter-repo を使って履歴から除去したり、git cloneして新たにディレクトリ作成したりと、なんとか復旧しました。

# Railsで node_modules/ が .gitignore に無い理由は？

Next.js などでは初期状態で `.gitignore` に `node_modules/` が含まれていますが、Rails ではそうではありません。

ここで疑問がわきました。
**「最近は Rails でも Stimulus や Turbo を使って JS も書くのに、なんで標準で `gitignore` に設定されてないの？」**

調べてみたところ、Rails側の思想が見えてきました。

### RailsのJS管理戦略は複数存在する
Railsではプロジェクトによって JS をどう扱うかが異なります。
| ライブラリ                                 | 概要                      | `node_modules/` 必要か |
| ------------------------------------- | ----------------------- | ------------------- |
| `importmap-rails`                     | CDNやローカルからESMで読み込み   | ❌ 不要                |
| `jsbundling-rails` (esbuild/webpack等) | npm経由でJS管理・ビルド          | ✅ 必要                |
| `Propshaft`                           | 静的アセット配信   | ⚠️ 使い方次第            |
| `hotwired/stimulus`, `turbo-rails`    | Importmap or npm経由で導入可能 | 構成依存                |

※ 上記はGPTにまとめてもらいました。こういうまとめ資料作りにの時ほんと助かる...

つまり、**「JSをどう扱うかはプロジェクト次第」** という思想が前提にあり、Rails本体は`.gitignore`に`node_modules/` を強制していない、というのが理由のようです。
まぁよく考えたらそうなのですが..

# それでも .gitignore に含めた方がいい理由

とはいえ、以下の理由から 最初から
`.gitignore` に `/node_modules` を含めておくのが安全 です：

- 後から esbuild や webpack へ移行する可能性がある
- node_modules/ は非常に重く、誤って push すると復旧が面倒
- Electron や Next.js を統合する際には必須で .gitignore 対象
- GitHub は 1ファイルあたり 100MB 上限。CI/CD にも影響

# 結論と運用上のベストプラクティス
個人的見解はこんな感じです。

| パターン                          | `.gitignore` に `/node_modules` を追加すべき？ |
| ----------------------------- | -------------------------------------- |
| Rails 単体で importmap を使うだけ     | ❌ 必須ではないが、追加しても問題なし                    |
| 今後 `esbuild` などを使うかも          | ✅ 最初から含めておくと安全                         |
| モノレポ構成（Electron / Next.js 同梱） | ✅ 必須。全体の `.gitignore` に記載を推奨           |

# 最後に： GitHubの制限と git filter-repo の活用

今回の経験を通じて、以下の2点も強く意識するようになりました。

- GitHubのファイル上限：1ファイル 100MBまで
- git filter-repo は履歴から安全にファイルを除去できる強力なツール
https://github.com/newren/git-filter-repo

# node_moduleをgit管理しない理由
もっというと、yarn.lock とかでバージョンをきちんと管理して、そのバージョンを [yarnpkg.com](https://yarnpkg.com/) 等で管理してくれているので git のような VCS でさらに管理する必要が無いからというのが根本としてありそうですね。

# まとめ

モノレポ構成で Rails とフロントエンドを組み合わせる際は `.gitignore` の設定を慎重に行うことが重要です。

特に `node_modules/` の扱いは、小さな見落としが後々のトラブルにつながるため、チームでルールを定めて運用するのが良さそうですね。

また、個人開発なのでいろんな方のご意見いただきたいなと思いました。
放置でビンゴで釣り餌を集めて、ランダムな釣りでコインを増やしていくゲーム(BingoDeFishing)

<h3>放置でビンゴで釣り餌を集めて、ランダムな釣りでコインを増やしていくゲーム(BingoDeFishing)</h3>
<hr>
<p>
放置でビンゴで釣り餌を集めて、ランダムな釣りでコインを増やしていくゲーム(BingoDeFishing)を作ってみました
</p>

<hr>
githubURL:https://github.com/NanjoMiyako2/BingoDeFishing

サンプルページURL:https://nanjomiyako2.github.io/BingoDeFishing/

<hr>
画面例:

![スクリーンショット 2025-06-21 213708.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412430/e3a810a9-2b9c-448b-b0eb-cd042ca0f78e.png)

<hr>
参考にしたサイト
<hr>
参考にしたAI回答

![スクリーンショット 2025-06-21 214214.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412430/1e6ad8b1-14f2-436e-8b32-04ffc5980d1f.png)
セキュリティ記事まとめ

各記事の関係についてセキュリティの視点で追記中です。

博論は片方向遅延差測定です。測定するには、穴を掘って、向こうとこっちの間の測定結果から、行きと帰りの遅延差を測定しようとするものです。

縦と矛で言えば、矛を創る方の専門家です。
当初は縦は苦手でした。縦にどう穴をあけるかを考えると、セキュリティの脆弱性を発見することになり、結果としてセキュリティにも役立つかもってなりました。

３さいじがわかるcyber security（サイバセキュリティ）
https://qiita.com/kaizen_nagoya/items/7a3ec58e81422a898fec

5さいじがわかるcyber security（サイバセキュリティ）
https://qiita.com/kaizen_nagoya/items/105173527a8e54502bb7

10歳児がサイバセキュリティの専門家になるには?
https://qiita.com/kaizen_nagoya/items/0aa201b09187bbe39ff3

盾と矛。セキュリティの矛盾
https://qiita.com/kaizen_nagoya/items/8fcdb1b58470a82de170

自動車ソフトウェア三規格参考文献 安全(67) https://qiita.com/kaizen_nagoya/items/def6176e74e8cd13ca79

「@spaces 平成のうちにやめたかった『ITの7つの無意味な習慣』」に付け加えたかったこと。仮説（169）
https://qiita.com/kaizen_nagoya/items/e6f9c2e0afbf8ab4181c

HP: 40年(60年）でソフトウェア開発の景色はどのぐらい変わったのか？仮説（165）https://qiita.com/kaizen_nagoya/items/54c17cf751894eef56f8	

「標的型サイバー攻撃対策」では防げないかもしれない
https://qiita.com/kaizen_nagoya/items/c4068bdc7b519f0ecab1

脆弱性対策。仮説（16）
https://qiita.com/kaizen_nagoya/items/079b9f8d5fef3b830e2e

暗号技術入門
https://qiita.com/kaizen_nagoya/items/94fa958cc615224a12a6

blue backs　「サイバー攻撃　ネット世界の裏側で起きていること」　中島明日香
https://qiita.com/kaizen_nagoya/items/9570e4378def5e9434ea

「配電盤の電源を切る」
https://qiita.com/kaizen_nagoya/items/5fee2f3a4fb3cede675c

「何もしていないのに壊れた」インフラエンジニアの対応例?https://qiita.com/kaizen_nagoya/items/49c58fa6f4278717d061

自分の頭で考えるようになるには
https://qiita.com/kaizen_nagoya/items/121a5372e3d67fc3af35

ちょけねこ　たんじょうびのおくりもの　
https://qiita.com/kaizen_nagoya/items/fc9675686c229f7a155e

Winnyの技術」を読む
https://qiita.com/kaizen_nagoya/items/b6639c9f827be9a68a91

『登大遊「SoftEther」』を知る
https://qiita.com/kaizen_nagoya/items/7a4062f845ebb2539e25

プログラマとして、「プログラムを書く時、文章を書く時、言い訳をする時」に心がけていること。仮説(87)
https://qiita.com/kaizen_nagoya/items/7e5700db01727cb516fc

人間が計算機に勝てる３つのこと。統計と確率(26)
https://qiita.com/kaizen_nagoya/items/49dc709d289d22846044

この項は書きかけです。順次追記します。

# 参照

いいね順311記事 20250617現在
https://qiita.com/kaizen_nagoya/items/2670baa857c64d5a693e

views順　自己記事311 20250617現在
https://qiita.com/kaizen_nagoya/items/dd968c97c76a2d22b84e


SOTIF: Safety of the intended functionality, ISO 21448:2022 
https://qiita.com/kaizen_nagoya/items/32bb913edd0101f71af3
React に関する備忘録


# 概要
React初学者の私が学習の本筋とは少し離れた知識を残す備忘録（随時更新予定）


## props の受け取り方

```jsx
const MyComponent = (props) => {
  return <div>{props.title}</div>;
};

// 実際にはこのように渡す
<MyComponent title="Hello" />
````

- `props` は引数名なので、他の名前でもOK：

```jsx
const MyComponent = (p) => {
  return <div>{p.title}</div>;
};
```

- ただし、**可読性のため一般的には `props` を使うのが推奨**

---

## `props.children` の特殊性

```jsx
const Wrapper = (props) => {
  return <div>{props.children}</div>;
};

<Wrapper>
  <p>Hello</p>
</Wrapper>
```

- `children` は React が自動的に渡す特殊なプロパティ
- `props.children` は必ず `children` という名前でアクセスする必要がある（他の名前にはできない）

---

## `children="xxx"` で渡してもタグ内の中身が優先される

```jsx
<Wrapper children="Text">
  <p>Hello</p>
</Wrapper>
```

この場合、`children="Text"` と書いても、実際に `props.children` に入るのは `<p>Hello</p>` の方。

-  明示的な `children=` 属性は *無視される* わけではないが、**タグ内の中身が優先される**
-  `children` を props として明示的に渡すのは避けるのが基本
PythonでローカルHTTPSサーバを立てる手順（OpenSSL編）

# はじめに
ローカル開発でPythonの標準機能である http.server を使ってサーバを立ててデバッグすることがあります。
今回、HTTPS接続の確認が必要となったため、自分の備忘録も兼ねてローカルHTTPSサーバの構築手順をまとめます。
同じようなニーズがある方の参考にもなれば幸いです。

# 自己証明書の作成
HTTPSサーバを立てるには、SSL証明書と秘密鍵が必要です。
ここではOpenSSLを使って自己署名証明書を作成します。

## OpenSSLによる証明書・秘密鍵の作成
以下のコマンドをターミナルで実行してください。

```bash
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=localhost"
```

key.pem（秘密鍵）と cert.pem（証明書）がカレントディレクトリに生成されます。
コモンネーム（CN）は「localhost」に指定しています。

:::note
より簡単に信頼されたローカル証明書を作成したい場合は、mkcertも便利です。
mkcert localhost で証明書と鍵が作成できます。
:::

# 起動スクリプトと起動方法

## Pythonスクリプト
作成した証明書と秘密鍵を利用し、PythonでHTTPSサーバを構築するためのコードです。

```python:https_server.py
from http.server import HTTPServer, SimpleHTTPRequestHandler
import ssl

server_address = ('localhost', 8000)
httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)

context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(certfile='cert.pem', keyfile='key.pem')

httpd.socket = context.wrap_socket(httpd.socket, server_side=True)

print("Serving HTTPS on https://localhost:8000")
httpd.serve_forever()
```

:::note warn
上記コードは、Python 3.12以降にも対応したコードです。
Python 3.11以前でよく使われていた ssl.wrap_socket() は、Python 3.7で非推奨（DeprecationWarning）となり、Python 3.12で完全に削除されました
:::

:::note
mkcertで作成した証明書を使う場合は、ファイル名が異なるため、コード上のパスを適宜変更してください
:::


## サーバの起動方法
証明書と秘密鍵（cert.pem, key.pem）が同じディレクトリにあることを確認

以下のコマンドで起動
```bash
python https_server.py
```

ブラウザで https://localhost:8000 にアクセスすると、HTTPSでローカルサーバに接続できます。
なお、スクリプトを起動したディレクトリを公開ディレクトリとして扱うため、起動時のカレントディレクトリ内のファイルやフォルダがそのままブラウザから参照可能です。

::: note warn
自己署名証明書を利用しているため、ブラウザでアクセスすると「安全ではありません」などの警告が表示されます。
:::

ローカル開発用途であれば問題ありませんが、本番環境では必ず信頼された認証局発行の証明書を利用してください。
警告を無視して進む場合は、「詳細」→「localhostにアクセスする（安全ではありません）」などを選択します。

# まとめ
- OpenSSLで自己署名証明書を作成
- Python標準ライブラリでHTTPSサーバを簡単に構築可能
- 開発用途なら自己署名証明書でも十分
- ブラウザ警告やファイルパスのミスに注意

ローカルでHTTPSサーバが必要になったときの参考用メモとして。
同じようなケースで困っている方にも役立ててもらえればと思います。
【Python】Jupyter Notebook

Jupyter Notebookは、IPythonをWEBブラウザで実行するツールである。

セルに記述したプログラムは、「Shift + Enter」キーで実行する。

Jupyter Notebookのセルは、コードだけではなく、Markdown形式の文章も保存できる。

Jupyter Notebookは、IPythonの機能を利用して、「?」による説明表示やマジックコマンドを実行します。
2Q-cacheというキャッシュアルゴリズムを実装してみた

2q a low overhead high performance buffer management replacement algorithm

というのがあります。
このアルゴリズムは至ってシンプルです。
まず、inとoutという二つのキュー、LRUを用意します。
次に、キャッシュに存在するかどうかを確認します。
inキューにあったら、何もせずにそのまま返し、outキューにあったら、outキューから取り出し、LRUにセットし、この値を返します。
LRUに存在したら、LRUキャッシュアルゴリズムと同じ処理をし、この値を返します。
もし、キャッシュに存在しないのであれば、ますはinキューにセットします。
inキューに空きがないなら、outキューにセットします。
outキューにも空きがなければ、inキューから取り出したものをoutキューにセットします。
この時、outキューからあふれたら、あふれたやつを削除処理します。
そして、キャッシュに存在しないやつをinキューにセットします。

https://www.vldb.org/conf/1994/P439.PDF

https://arpitbhayani.me/blogs/2q-cache/

このアルゴリズムはこれらの論文や解説によるとLRUよりも早く、シーケンシャルアクセスだとLRUよりも性能がいいと書いてあります。
そこで試しに実装してみたのですが、ものによってはFIFOよりも逆に遅くなるようです。

https://github.com/oonyanya/FooList/blob/main/List/DataStore/CacheList.cs

2q実装前
```
benchmark start
size:120000000
cache size:128
Allocated GC Memory:66,376bytes
add time:207640 ms
Allocated GC Memory:101,274,128bytes
replace 1 time:872143 ms
Allocated GC Memory:101,248,912bytes
replace 2 time:1310110 ms
Allocated GC Memory:333,374,880bytes
replace 3 time:2426470 ms
Allocated GC Memory:333,260,632bytes
enumratotion time:1510419 ms
Allocated GC Memory:331,908,560bytes
clear buffer
Allocated GC Memory:2,229,896bytes
add line time:48271 ms
Allocated GC Memory:89,014,552bytes
update line time(per 100 lines):84442 ms
Allocated GC Memory:89,346,496bytes
convert index to line time:96234 ms
Allocated GC Memory:89,028,072bytes
convert line to index time:98785 ms
Allocated GC Memory:89,025,968bytes
clear buffer
Allocated GC Memory:3,849,280bytes
Finished.Hit Any Key
```

2q実装後
```
benchmark start
size:120000000
cache size:128
Allocated GC Memory:66,712bytes
add time:178936 ms
Allocated GC Memory:102,663,960bytes
replace 1 time:820814 ms
Allocated GC Memory:102,635,512bytes
replace 2 time:1273016 ms
Allocated GC Memory:334,001,320bytes
replace 3 time:2046560 ms
Allocated GC Memory:333,946,096bytes
enumratotion time:1606194 ms
Allocated GC Memory:332,266,960bytes
clear buffer
Allocated GC Memory:2,591,304bytes
add line time:37026 ms
Allocated GC Memory:89,703,056bytes
update line time(per 100 lines):80268 ms
Allocated GC Memory:90,113,296bytes
convert index to line time:116948 ms
Allocated GC Memory:89,716,696bytes
convert line to index time:103844 ms
Allocated GC Memory:89,706,952bytes
clear buffer
Allocated GC Memory:4,540,464bytes
Finished.Hit Any Key
```

addは2-queueのほうが２割ほど早く、replace2は１割ほど早く、replace3は２割ほど早いです。
逆にenumrationは１割ほど遅いです。
また、add lineは２割以上早く、update lineは１割ほど早く、convertlineは１割から２割ほど遅いです。
メモリー使用量はどちらもほぼ同じ程度です。

## まとめ

2-queueアルゴリズムはテキストエディタだとおおむね早いですが、全置換え後の保存は少し遅くなる傾向にあります。
また、インデックスから行と桁への相互変換とシーケンシャルアクセスを組み合わせると遅くなることがあり、インデックスから行と桁への変換が露骨に遅くなります。
2-queueはLRUよりはシーケンシャルアクセスが得意と言われますが、変換しながら上から下になめていくのはFIFOよりも遅いです。
【Python】loggingモジュールのメッセージを、深刻度の低い順に並べたもの

深刻度の低い順に並べると、DEBUG、INFO、WARNING、ERROR、CRITICALになります。

DEBUGとINFO、WARNINGとERRORの順番が紛らわしいですが、「DEBUGは開発時のデバッグだけで使用するもの」、「WARNINGはエラーになる前の警告」と考えると覚えやすいです。
最新のNuxtは周りエコシステムだけでブログが作れる!

# はじめに
こんにちは！Eita Kobayashiと申します。
最近は高校生になり、OSSのCSSフレームワーク「[PitaCSS(α版)](https://css.pitahex.com)」を作ったりしてます。

本題です。最近のNuxtとそのエコシステムの進化スピートは著しく速く、現在ではNuxtのエコシステムだけで、ブログの構築から運用までが驚くほど簡単になりました。

この記事では、Nuxtのエコシステムだけでブログは構築できるということを紹介したいと思います。

:::note warn
今回は具体的なやり方などは説明しません。そしたらすごい長さになります...
もしかしたら、今後書くかもしれないです

あくまで、「最新のNuxtではこういうことができるんだよ」ということを伝えたいです。取っ掛かりになれば幸いです。
:::

## 定義
- エコシステム: Nuxt周辺のモジュールや技術
- 最新のNuxt: 2024年後期～2025年現在(06/21)のNuxtとその周りのエコシステムたち

## 今回使用した技術スタック
今回のブログ制作で使用した技術は以下の通りです

- Nuxt: Vue.jsベースのフレームワーク
- Nuxt Content: GitベースのCMS
- Nuxt Studio: Nuxt ContentのためのCMS管理機能
- Nuxt Hub (β版): NuxtでCloudflare上にデプロイするのを簡潔化するためのプラットフォーム

## 各エコシステムの紹介

### Nuxt: 今回の中心的な技術
Vue.jsをベースとしたフレームワーク、近年大きく進化しているエコシステムを持っています。

#### 何がすごいのか？
進化し続けるエコシステム: Nuxtは、Nuxt ContentやNuxt Studio、Nuxt Hubといった強力な公式エコシステムを持っています、また有志によるモジュール開発も盛んです。

高い拡張性と開発の簡略化: Nuxt Contentのような拡張機能を追加したり、Nuxt Hubを使ってアプリケーションのデプロイを驚くほど楽にしたりすることができます。

>https://nuxt.com/

### Nuxt Content：GitベースのCMS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801754/e28ebc67-0347-4b96-b9a5-02dc1612936d.png)

Nuxt Contentは、Nuxtに特化したGitベースのCMSです 。Markdown、JSON、YAML、CSVファイルなどでコンテンツを作成できます。

#### 何がすごいのか？

Gitベースの管理: エンジニアにとって慣れ親しんだ、Gitでのバージョン管理が可能です。

パフォーマンス: 内部でWASM（WebAssembly）上で動作するSQLiteを利用しており、大量のコンテンツがあっても非常に高速に動作します。開発者側で特別な設定をしなくても大丈夫です。

>https://content.nuxt.com/docs/getting-started
>https://content.nuxt.com/docs/advanced/database#wasm-sqlite-in-browser

### Nuxt Studio：直感的なCMS管理画面
![nuxt-studio.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801754/ea5d1cd7-59ac-43d8-9246-4b4d1f0623ed.gif)

Nuxt Studioは、Nuxt Content(GitベースのCMS)と連携して動作する、ブラウザで利用可能なCMS管理機能です。
Nuxt ContentがあるGitHubリポジトリと連携したら、すぐに利用可能です。(スターターセットもある)

#### 何がすごいのか？

2つの編集モードがあり、Notionのようなビジュアルエディタと、Markdownのコードエディタを、状況に応じて自由に切り替えられます 。エンジニア以外の人でも直感的に記事を編集できます。

カスタムコンポーネントの埋め込みができ、自分で作成したVueコンポーネントを「カスタムブロック」として、エディタ上から簡単に記事内に挿入できます 。例えば、注意を促すボックスなどをコンポーネント化しておくと非常に便利です。

基本的にCMSで必要な機能は網羅されており、全体的にシンプルで使いやすいです。

>https://content.nuxt.com/docs/studio/setup

### Nuxt Hub (β版)：Nuxtのデプロイを格段に楽に
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801754/fb67e36f-db70-4eed-89c4-a974dc85d1b6.png)

Nuxt Hubは、NuxtアプリケーションをCloudflare上に手軽にデプロイ・管理できるプラットフォームです。

#### 何がすごいのか？

これまでCloudflare Pages、WorkersにNuxtアプリをデプロイする場合、環境変数の設定など、少し面倒な手順が必要でした。

しかしNuxt Hubを使えば、これらの設定をほとんど自動で行ってくれます。
Nuxt HubのモジュールをインストールしたリポジトリをGitHubでインポートすれば、`npx nuxthub deploy` コマンドを実行するだけで、速攻でデプロイできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801754/0756258f-5090-422e-95f8-76778111f2f2.png)

データベースや、その他Cloudflareのソリューションとシームレスに連携できます。

>https://hub.nuxt.com/

## これらの技術で作られたブログ(私の)

https://org.pitahex.com/

### リポジトリ

https://github.com/otusoa/nuxt-cms-test

## まとめ

最近のNuxtとそのエコシステムは大きく進化しており、Nuxtのエコシステムだけでブログの構築から運用までを完結させることが可能です。

具体的な役割は以下のようになります。

- コンテンツ管理: GitベースのCMSである「Nuxt Content」
- コンテンツの編集・GUI管理: ブラウザから直感的に操作できる管理機能「Nuxt Studio」
- デプロイ: 「Nuxt Hub」を利用することで、デプロイ作業を簡略化
EAP（Extensible Authentication Protocol）

# 概要
EAP（Extensible Authentication Protocol）とはネットワーク認証を行うプロトコル。
EAPにはいくつかの方式がある。

# 認証方式
| 認証方式 | クライアント認証方法 | サーバ認証方法 |
|-----------|------------|------------|
| EAP-MD5[^EAP-MD5] | 利用者ID/パスワード | なし |
| EAP-FAST | 利用者ID/パスワード | なし |
| PEAP | 利用者ID/パスワード | デジタル証明書 |
| EAP-TTLS | 利用者ID/パスワード | デジタル証明書 |
| EAP-TLS | デジタル証明書 | デジタル証明書 |

[^EAP-MD5]: 脆弱性があるため非推奨

# メモ
情報処理安全確保支援士試験では`EAP-TLS`についての問題がよく出る模様。
クライアント認証が`デジタル証明書`と覚えておく。
Electron + React + SQLiteで多言語対応の家計簿アプリを作ってみた

こんにちは。最近Electronでデスクトップアプリの開発を始めました。  
今回は、自作の家計簿アプリ「Kakeibo App」を紹介します。

![screenshot](https://github.com/pon-nuki/kakeibo-app-dev/raw/main/images/kakeibo.png)

---

## 技術スタック

- Electron
- React
- TypeScript
- Node.js + Express
- SQLite
- i18next
- MUI
- Chart.js

---

## 実装した機能

- 収支の登録・一覧表示
- カテゴリごとの支出管理
- 月ごとの予算設定と実績比較
- 固定費の登録と次回支払日計算
- 日記機能（Markdown対応）
- 通知機能（支払い予定通知）
- 多言語対応（日本語 / 英語 / ロシア語）

---

## スクリーンショット

### 家計簿画面
![kakeibo](https://github.com/pon-nuki/kakeibo-app-dev/raw/main/images/kakeibo.png)

### 日記機能
![nikki](https://github.com/pon-nuki/kakeibo-app-dev/raw/main/images/nikki.png)

### カテゴリ設定
![kategori](https://github.com/pon-nuki/kakeibo-app-dev/raw/main/images/kategori.png)

### 固定費設定
![koteihi](https://github.com/pon-nuki/kakeibo-app-dev/raw/main/images/koteihi.png)

### 予算設定
![yosan](https://github.com/pon-nuki/kakeibo-app-dev/raw/main/images/yosan.png)

### グラフ画面
![gurafu](https://github.com/pon-nuki/kakeibo-app-dev/raw/main/images/gurafu.png)

### 設定画面
![settei](https://github.com/pon-nuki/kakeibo-app-dev/raw/main/images/settei.png)

---

## 開発の動機

- ローカルで使える家計簿アプリがほしかった  
- Webアプリと違って自分のPCにあるという実感がうれしい  
- 多言語対応をReactで本格的に実装してみたかった  
- IPC通信、SQLite操作、Electronのビルドなどの学習にも最適

---

## ハマったポイント

- ElectronのIPC（ipcMain / ipcRenderer）設計に慣れるまで苦労
- 初期設定画面後、i18nextで言語が即時反映されない → window.location.reload()で対応
- NSISスクリプトでWindows用インストーラに多言語対応を入れるのが地味に大変

---

## 今後追加予定の機能

- [ ] CSV / PDF エクスポート対応  
  - 家計簿や日記データをファイルとして保存・共有できるようにします

- [ ] パスワード保護機能  
  - アプリ起動時にパスワードロックをかけ、プライバシーを保護します

---

## GitHub ＆ セットアップ

GitHub: [https://github.com/pon-nuki/kakeibo-app-dev](https://github.com/pon-nuki/kakeibo-app-dev)

```bash
git clone https://github.com/pon-nuki/kakeibo-app-dev.git
cd kakeibo-app-dev
npm install
npm run electron:dev
[Linux] システムログ設定_出力_logger, systemd-cat

# loggerコマンド

```terminal
$ logger [オプション] メッセージ
```

| オプション                        | 由来       | 説明                                                           |
| :--------------------------- | :------- | :----------------------------------------------------------- |
| default                      | log      | システムログ（通常は `/var/log/messages` や `journalctl`）にメッセージを記録      |
| `-p ファシリティ.プライオリティ`<br>`--priority=ファシリティ.プライオリティ` | priority | `ファシリティ.プライオリティ`を指定<br>例：`logger -p user.info "バックアップ完了"` |
| `-t タグ名`<br>`--tag=タグ名`      | tag      | タグを付加<br>例：`logger -t backup_script "ジョブ開始"`   |

## 使用例

```bash
logger "通常のメッセージ"                          # デフォルトで user.notice として記録
logger -p authpriv.warning "認証に失敗しました"    # 認証ログに WARNING を出力
logger -t backup -p user.info "バックアップ成功"   # タグ付きで INFO レベルログ出力
```

# systemd-catコマンド

```terminal
$ systemd-cat [オプション] [コマンド]
```

| オプション                          | 由来       | 説明                                                                                 |
| :----------------------------- | :------- | :--------------------------------------------------------------------------------- |
| default                        | cat      | コマンド出力を `systemd-journald` に送信し、`journalctl` で確認可能                          |
| `-p 優先度`<br>`--priority=優先度`   | priority | 優先度を指定（例：`info`, `warning`, `err` など）<br>例：`echo "エラー発生" \| systemd-cat -p err` |
| `-t タグ名`<br>`--identifier=タグ名` | tag      | タグを付加<br>例：`echo "処理完了" \| systemd-cat -t syncjob`                         |

## 使用例

```bash
echo "ログ同期中…" | systemd-cat                    # デフォルトで記録（優先度は info）
echo "ログ送信成功" | systemd-cat -p info -t sender  # info 優先度でタグ付き送信
journalctl -t sender                                # タグで絞ってログ確認
```

# Ping-t
- [4689_logger](https://mondai.ping-t.com/question_subjects/32/question_sessions/34000185/progressing_questions/520498145)
- [5096_systemd-cat](https://mondai.ping-t.com/question_subjects/32/question_sessions/33867186/progressing_questions/518471897)
json←→csvの変換をするpythonスクリプトを作ってみた

# 1.目的
設定ファイルをjsonで定義していることが多いと思いますが、実際のリスト管理は表計算ソフトに頼っていることは多々あると思います。
そこで、csvをjsonへ変換するpythonスクリプトを作成してみました。
また逆に、jsonからcsvへ変換するスクリプトも作成し、表計算ソフトに取り込めるようにしてみました。

# 2.機能
csvからjsonへ変換する際に、あったら良いなと思う機能をオプションで指定できるようにしてみました。

### 1.数値変換
数字の場合に文字列ではなく、数値にしたい場合があるかと思い、オプションで指定できるようにしてみました。
(-n)
ただし、次のbooleanのオプションが優先されます。


### 2.boolean指定
オプションの後に渡した、キーにある値が下記の場合にtrueにそれ以外はfalsに変換されます。
(-b キー1,キー2,・・・)

- false(大文字、小文字は問わない)
- 1(数値、文字列問わない)

# 3.前提条件
csvの先頭行は必ず、キーとなっていることが必要です。
キーが重複して同じ物が定義されている場合、思ったような出力結果になりませんので注意して下さい。

# 4.準備
下記でダウンロードして下さい。
```
git clone https://github.com/aruelu/json_conv.git
```

# 5.実行方法
### 1.csvからjsonへ
```
cat csvファイル名 | ./csv_to_json.py [-n] [-b キー1,キー2,・・・] > jsonファイル名
```

又は入出力ファイルを指定
```
./csv_to_json.py -i csvファイル名 -o jsonファイル名 [-n] [-b キー1,キー2,・・・]
```
ファイルはどちらか片方だけの指定も可能です、必要に応じてファイル名を指定するか、パイプで繋ぐかして下さい。

### 2.jsonからcsvへ
```
cat jsonファイル名 | ./json_to_csv.py > csvファイル名
```

又は入出力ファイルを指定
```
./json_to_csv.py -i jsonファイル名 -o csvファイル名
```
ファイルはどちらか片方だけの指定も可能です、必要に応じてファイル名を指定するか、パイプで繋ぐかして下さい。

# 5.実行時の注意事項⚠️
-o オプション指定時に、すでにファイルが存在しているかの確認はしません。
強制的に上書きされるので注意して下さい。
PowerShell　任意のディレクトリ内の容量をCSVへ出力します

### はじめに
コード内で指定したディレクトリ内の容量をCSVへ出力します

### プロシジャーの説明
PowerShellを起動し、ターゲットとCSV保存先を明記し実行します

#### サンプル１ 
``` 
#ターゲットを明記
$target = "C:\???\?????"
$results = Get-ChildItem -Path $target -Directory | ForEach-Object {
    $folder = $_.FullName
    $size = (Get-ChildItem -Path $folder -Recurse -File | Measure-Object -Property Length -Sum).Sum
    [PSCustomObject]@{
        Folder = $folder
        SizeMB = "{0:N2}" -f ($size / 1MB)
    }
}
#保存先を明記
$results | Export-Csv -Path "C:\???\?????\foldersize.csv" -NoTypeInformation -Encoding UTF8
```
初めてVeo3を利用してAI動画を「無料」で作ってみた

はじめに
---
最近リールやショーツでAI動画をよく見るようになりませんか？
最初はちょっとぎこちなかったけど、最近はめちゃくちゃ自然になってて、「これ自分でも作れるんじゃない？」って思っちゃいました😊

気になって調べてみたら、見かける動画の多くがVeo3っていうツールで作られてるみたい。
というわけで、今回はVeo3を使ってAI動画作りに挑戦してみます！

Veo3は現在、GeminiとFlowで使えます。
ちょっとした違いがあるので要チェック！

## Geminiで使う場合
- テキストから動画を作れる
- 日本語で話しかけてOK👍


## Flowで使う場合
- テキストor画像から動画を作れる
- 英語オンリー（日本語は使えない😢）


## 何が必要？
Veo3を使うにはGoogle AI Pro以上をサブスクする必要があります。

月額: 2,900円 
(でも最初の1ヶ月は無料！🎉)

お金かかるのはちょっと痛いけど、無料期間があるから「とりあえず試してみよう」って気軽に始められるのが良いですね。

作ってみよう
---

早速なんですが、Flowを利用してVeo3を利用し動画を作ってみましょう。
8秒の長さの動画が作成されるようです。

AIにより精度高いものを作ってもらうためには以下の情報もいれた方がいいようです。

被写体、被写体の詳細、被写体の動き、カメラ視点、カメラ動作、場所、背景、時間帯、表情、感情表現、セリフ、効果音、詳細...
＜参考＞　https://www.youtube.com/watch?v=EvB5np7BlJo


### Claudへ以下のお願いをしてプロンプトをつくってもらいました。
```

AIを使って動画を作りたいんです。
数百隻の味方・敵軍の宇宙戦艦が戦闘を繰り広げる中、日本人の主人公の戦艦が激戦地を高速かつダイナミックに駆け抜けながら戦うシーンの映像を作成したいと思っています。 
さらに、画面が切り替わって、艦内で2人のエージェントが緊迫した状況の中で会話を交わしているシーンも加えてください。  
そのシーンでは、例えば以下のような日本語のセリフを作ってください：  
"対策はどうなってる！？ このままじゃ持たないぞ！！" 
"時間がない！！ 最後の決断は君に託す！！"  

以下の要素を含めて英語のプロンプトを作ってもらえますか？ 
プロンプト作成用の要素: 
被写体、被写体の詳細、被写体の動き、カメラ視点、カメラ動作、場所、背景、時間帯、表情、感情表現、セリフ、効果音、詳細
```


### Veo3 参考イメージなし
作成くれたプロンプトをFlowに入力して、約5分後以下の動画が作成されました。
![Create_a_cinematic_202506211934.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4114092/2a4298e8-51df-40d6-9cc5-cfce4faa1a0c.gif)
GIF形式でアップロードしているため、オーディオは入っていないですが、意図した通り緊迫感が感じられますね。

### Veo3 参加イメージあり
Star Trackのイメージを提供し、同じプロンプトをもう一度実行しました。
![startrack.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4114092/ce94d50d-6590-430d-90c5-12c70d127c38.jpeg)

なぜか、イメージなしの方がクォリティ高いですね。
![Create_a_cinematic_202506211946.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4114092/34a84639-42bc-4a8d-a6a1-326df363d60d.gif)

### Veo2 参考イメージなし
また、Veo2にも同じプロンプトを実行し、どのくらいの差があるのかみてみたいと思います。
![Create_a_cinematic_202506211955.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4114092/dd5d9999-4ca0-45c5-8726-5cbd01e106e8.gif)


Veo2はオーディオが含まれていないですね。確かにVeo3の方がクオリティがいいですね。


Geminiからも作ってみよう
---
![스크린샷 2025-06-22 오후 4.25.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4114092/e90158bd-7960-435d-9d52-c0a53b7d2e79.png)


動画のアップロードができなかったため、代わりに画像をアップロードしました。
いい感じの動画を作ってくれました（足が5本ですが、、、）
![스크린샷 2025-06-22 오후 4.35.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4114092/ec544e16-aff5-42f2-95fb-59d5174b7945.png)


日本語にも対応していて、とても使いやすいですね。
「3本までしか作成できません」というメッセージが表示されるので、
1日に作成できる本数に上限があるようです。



感想
---
Veo3を使って、宇宙戦艦が戦闘する映像を生成してみました。
想像していた以上にクオリティが高くて、正直驚きました。

今後は、プロンプトをもっと工夫したり、他の機能もいろいろ試してみたいと思います。

Google Pro AIをサブスクライブすると、Flowでは１1,000クレジットが付与されます。
Veo3で動画を作成するには100クレジット、Veo2では10クレジットが必要です。

気がついたら、あっという間に1,000クレジットを使い切ってしまいました（笑）

簡単に動画を作成することができますので、興味のある方は、ぜひ一度試してみてください！
2023年にVirtualBox/VagrantでCentOSを立ち上げようとしたときの話を2026年に書く

# 記事が少ない
この手の記事が少ない。みんな書いて欲しい。

# CentOS
2024年6月にサポート終了してます。
でも何かの役に立つかも知れないので書き残します。

# Vagrant
昔「Vagrantが便利！ポートフォワードの設定も共有フォルダの設定も楽！」と思ったのに、
久々にやってみたら上手く動かなかった。イメージがダウンロードできなかったのかも。
もう覚えてない。とりあえず諦めたことは覚えてる。

# VirtaulBox
これは必要。誤解しやすいがVagrantを使うときも必要。

# 手順
1. まずはCentOSのサイトに行く。(サポート終了してます)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134953/207372b2-061c-4c3e-b155-8df31ecd5480.png)

1. ISOを愚直にダウンロード。(サポート終了してます)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134953/d4e745a3-76ff-4e58-b27a-d84cef7bbad3.png)

1. VirtualBoxをインストールして立ち上げて[新規]ボタンを押す (簡単)
![WS002206.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134953/6ea6b344-1712-40f9-b171-b3bf272a7dc5.jpeg)

1. ISO ImageでISOを選択してアイテムを作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134953/04fc1ab8-092d-4ede-9335-4e10c1b99425.png)

1. できたアイテムを右クリック⇒[設定]
![WS002234.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134953/a64f2fd4-5ea0-40d3-b8a7-ce34fe21f86e.jpeg)

1. ネットワークの[アダプター 1]の[ポートフォワーディング]を選択
![WS002245.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134953/0a20e96c-9f5e-452f-92af-af8d760dec48.jpeg)

1. 適当に22に2222とか割り当てて置く
![WS002244.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134953/70bade21-8ded-4698-bf9c-3239bb57b062.jpeg)

1. [アダプター 2]の[ネットワークアダプターを有効化] (これが必要だったか覚えてない)
  これをやるとipconfigとかでIPが出て、localhostじゃなくてそのIP直打ちでアクセスできた気がする。
![WS002236.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134953/340ad4b2-7065-4eba-ab6f-7c8aada55a51.jpeg)

1. Poderosaをインストール (TeraTermでいいと思う)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134953/c09fc4bb-3500-4710-a385-2deb62740265.png)

1. root/rootでログインできた気がする
![WS002247.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134953/a203984c-5f76-42ad-a737-292d64a7eca9.jpeg)

1. VirtualBoxは大体共有フォルダの設定で躓くので、もうWinSCPでいいかってなったの図
![WS002249.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134953/f31893b5-ac91-4b7a-b243-67ed60b5a292.jpeg)

# 任務完了！
何かの役に立つかも…と思って撮り溜めておいたスクショをやっと解放できました。
何かの役に立つといいな…。
履歴機能　考え方

### 履歴　考え方

```js:
履歴保存
ユーザーごと履歴 userId 一緒に送る
await axios.post('/history', { url: 'https://example.com', time: new Date() });

履歴取得
const res = await axios.get('/history');
const historyList = res.data;

// 履歴削除（手動）
await axios.delete(`/history/${id}`);

// 最新20件だけ取得（例）
const res = await axios.get('/history?limit=20');
```

### この履歴は削除済みです　アラート　考え方

```js:jsのみ
const links = ['https://example.com', 'https://google.com'];
const linkInput = document.getElementById('linkInput'); // input要素

document.getElementById('addButton').addEventListener('click', () => {
  const newLink = linkInput.value.trim().toLowerCase();

  if (links.includes(newLink)) {
    alert('このリンクは既に登録済みです');
  } else {
    links.push(newLink);
    alert('登録しました');
  }
});
```
MacでYolo11をインストールした際のログ

個人用備忘録です。

```
% pip install --upgrade pip
% python -m venv myenv
% . myenv/bin/activate
(myenv) % cd myenv 
(myenv) myenv % pip install ultralytics
(myenv) myenv % pip uninstall numpy 
(myenv) myenv % pip install "numpy<2.0"
(myenv) myenv % curl -O https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt
(myenv) myenv % yolo predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg'
  :
(myenv) myenv % deactivate
```
./runs/detect/predict/bus.jpgが生成されていれば成功です。
![bus.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/d550e5fe-4b54-4126-9d1a-0d46b6e74982.jpeg)

**トラブルシューティング**
* モデル（yolo11n.pt）はダウンロードできているか？
* [ソース画像](https://ultralytics.com/images/bus.jpg)はあるか？
[Linux] メール管理_転送_/etc/aliases, newaliases, .forward

# /etc/aliasesを利用
- ローカル配送におけるメールの振り分けや転送に利用され`sendmail`や`postfix`などの`MTA（Mail Transfer Agent）`で使われる

## `/etc/aliases` の記載例

```plaintext:/etc/aliases
# 元の宛先: 実際のユーザーまたはアドレス

postmaster: root
root: admin
admin: suzuki@example.com, yamada@example.com
sales: sales-team@example.com
webmaster: webmaster@external-domain.com
```


## 各行の説明
| 行                                               | 説明                                  |
| ----------------------------------------------- | ----------------------------------- |
| `postmaster: root`                              | `postmaster` 宛のメールを `root` に転送      |
| `root: admin`                                   | `root` 宛のメールを `admin` に転送           |
| `admin: kaneko@example.com, yamada@example.com` | `admin` 宛のメールを複数アドレスに配信             |
| `sales: sales-team@example.com`                 | ローカルユーザー `sales` 宛メールを外部のメールアドレスへ転送 |
| `webmaster: webmaster@external-domain.com`      | `webmaster` 宛メールを外部の別ドメインへ転送        |



## newaliasesコマンド

エイリアスを変更・追加したあとは、newaliasesコマンドを実行して反映させる

```bash
$ newaliases
```


# .forwardファイルを利用
- 一時的または個別の転送時に利用され、ホームディレクトリ直下に配置し、`sendmail`や`postfix`などの`MTA（Mail Transfer Agent）`で使用される

## .forwardファイルの記載例
- ローカルユーザー宛のメールがsuzuki@example.com に転送される

```plaintext:.forward
# 転送先メールアドレス

suzuki@example.com
```

# Ping-t
- [4923_/etc/aliases](https://mondai.ping-t.com/question_subjects/32/question_sessions/34000185/progressing_questions/520498147)
- [4924_newaliases](https://mondai.ping-t.com/question_subjects/32/question_sessions/33867186/progressing_questions/518471892)
- [5050_/etc/aliases, newaliases](https://mondai.ping-t.com/question_subjects/32/question_sessions/33867186/progressing_questions/518471896)
- [38892_/etc/aliases](https://mondai.ping-t.com/question_subjects/32/question_sessions/34000185/progressing_questions/520498146)
- [38893_.forward](https://mondai.ping-t.com/question_subjects/32/question_sessions/34000185/progressing_questions/520498150)
Đăng nhập Moja7: Hướng dẫn và hỗ trợ đăng nhập tài khoản Moja7

Bạn đang gặp khó khăn khi truy cập vào Moja7?  Bài viết này sẽ hướng dẫn bạn từng bước đăng nhập Moja7 một cách dễ dàng và nhanh chóng, giải quyết mọi vấn đề bạn gặp phải trong quá trình đăng nhập tài khoản,  đảm bảo an toàn và bảo mật thông tin cá nhân của bạn.  Hãy cùng tìm hiểu các bước đăng nhập chi tiết và những lưu ý quan trọng để trải nghiệm Moja7 một cách trọn vẹn.
Linuxを基本からまとめてみた【シェルおよびスクリプト】

## シェル環境のカスタマイズ方法
#### シェルのオプションを変更
- シェルの見た目や動作設定を変更できる

| オプション　|説明     |
| --- | --- |
|emacs/vi|シェルのキーバインドを emacs/vi　風に変更|
|nociobber|既存ファイルへの上書きリダイレクトを無効|
|noglob|ワイルドカードでのファイルの指定を無効|
|ignoreeof|Ctr+Dキーに夜ログアウトを無効|

#### setコマンド
- set(-o または +o)[シェルのオプション]

| オプション　|説明     |
| --- | --- |
|-o |指定したシェルのオプションを有効化|
|+o |指定したシェルのオプションを無効化|

#### エイリアス
- コマンドの別名
- デフォルトで定義されているエイリアスもある
- 同名のコマンドがある時、エイリアスが優先
- エイリアスを無効して元のコマンドを使う時は、『\(コマンド名)』

#### aliasコマンド
- エイリアスの定義や定義されたエイリアスを確認できる
- aliasエイリアス名='実行内容'
- 引数なしで実行すると、定義されたエイリアスを表示

#### シェルの設定ファイル
- 環境変数やエイリアスの定義などを記憶するファイル

| 読み込むタイミング |　全てのユーザーが参照 |　ユーザーごとに参照 | 
| --- | --- | --- | 
|ログイン|/etc/profile|①~/.bash_profile <br>②~/.bash_login <br>③~/.profile| 
|Bashの起動|/etc/bash.bashrc <br> (/etc/bashrc) | ~/.bashrc | 
|ログアウト|     | ~/.bash_logout | 

#### コマンドの連続実行

| 構文　|説明 |
| --- | --- |
|コマンド1 ; コマンド2|コマンド1の実行後、コマンド2を実行|
|コマンド1 && コマンド2|コマンド1の実行が成功した後、コマンド2を実行|
|コマンド1‖コマンド2|コマンド1の実行が失敗した後、コマンド2を実行|

## シェルスクリプトの実行方法
#### シェルスクリプトとは？
- シェルが解釈できるコマンドが記述されているファイル
- シェルスクリプトを実行するとシェルスクリプト内に記述されたコマンドが実行される

| 実行コマンド |　必要な権限 |　実行環境 | 
| --- | --- | --- | 
|bashスクリプトファイル名|読み取り|bashシェル| 
|source スクリプトファイル名|読み取り|現在のシェル| 
|.スクリプトファイル名|読み取り|現在のシェル| 
|./スクリプトファイル名|読み取り|現在のシェル| 

※PATHに登録されているディレクトリにスクリプトファイルがある場合、ファイル名だけで実行できる

#### shebang(シバン)
- スクリプトを解釈するシェルを指定できる
- 『#!』の後に、シェルを指定する
```
#!/bin/bash

echo 'Hello paiza'
echo{1..5}
```
#### シェルスクリプトで利用できる組み込み変数
|組み込み変数|説明|
| --- | --- |
|$0|スクリプトファイル名|
|$n|n番目の引数($1は1つ目の引数、$2は2つ目の引数・・・)|
|$@|引数のスペース区切り|
|$#|引数の数|
|$?|直前の処理の成否(成功は0, 失敗は0以外)|
|$$|シェルのプロセスID|

#### exprコマンド
- 整数の四則演算等の計算結果を出力
- expr 数値1 演算子 数値2


## 参考サイト
[新・Linux入門編8(LinuC対策版): シェルおよびスクリプト
](https://paiza.jp/works/linux/new-primer/linux-new-primer-8)
「Amazon Q CLI でゲームを作ろう Tシャツキャンペーン」のためにVibeコーディングをやってみる

[Amazon Q CLI でゲームを作ろう Tシャツキャンペーン](https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/)に応募するために、Amazon Q CLIとClaude4.0でVibe Codingしてみました。バス移動中にアイディアを考えてスマホアプリにぽちぽち相談し、座れるところでラップトップを開いて大体コードを書いてもらい、到着地で整理してGithubにアップデートするという促成栽培ゲームなので粗々です。
#AmazonQCLI 

# 🐱 猫とお魚ゲーム 🐟

サザエさんらしき女性から逃げながら、道端に落ちているお魚を集める楽しいブラウザゲームです！

## 🎮 今すぐプレイ！

[![ゲームをプレイ](https://img.shields.io/badge/🎮_ゲームをプレイ-今すぐ開始-brightgreen?style=for-the-badge)](https://tamaden55.github.io/game-for-tshirts/)

**🔗 ゲームURL**: https://tamaden55.github.io/game-for-tshirts/

## ゲームの特徴

- **シンプルな操作**: 矢印キーまたはWASDで猫を操作
- **追跡システム**: サザエさんが猫を追いかけてきます
- **収集要素**: お魚を集めてスコアを稼ごう
- **難易度上昇**: 時間が経つにつれて追跡者が速くなります
- **視覚効果**: パーティクルエフェクトで華やかに
- **効果音**: Web Audio APIを使った効果音

## 遊び方

1. `index.html`をブラウザで開く
2. 矢印キーまたはWASDで猫を移動
3. 青いお魚を集めてスコアを稼ぐ
4. ピンクのサザエさんに捕まらないように注意！
5. できるだけ長く生き残ってハイスコアを目指そう

## ファイル構成

- `index.html` - メインのHTMLファイル
- `game.js` - ゲームのメインロジック
- `effects.js` - パーティクルエフェクトと効果音

## 技術仕様

- HTML5 Canvas
- JavaScript (ES6+)
- Web Audio API
- レスポンシブデザイン

## カスタマイズ

ゲームの設定は`game.js`で簡単に変更できます：

- `cat.speed` - 猫の移動速度
- `chaser.speed` - 追跡者の初期速度
- お魚の生成数や配置
- スコアシステム

## ブラウザ対応

モダンブラウザ（Chrome、Firefox、Safari、Edge）で動作します。
Web Audio APIを使用しているため、一部の古いブラウザでは効果音が再生されない場合があります。

楽しんでプレイしてください！ 🎮
オプションプロパティを使用する際の注意点

## 気軽に使えるオプションプロパティ
以下のような既存の型に新しいプロパティを追加したいとします。
```ts
type User = {
	id: number
	name: string;
	// avatorUrl 追加したい
}
```
この時に`?` を使用してプロパティをオプショナルに指定できます。こうすることで、`avatorUrl`がいらない既存の関数やコンポーネントなどの既存のコードに影響を与えずにプロパティを追加することができます。
```ts
type User = {
	id: number;
	name: string:
	avatorUrl?: string
}
```

## オプションプロパティのデメリット
### 値の渡し忘れ
例えば`avatorUrl`が実際にはUI表示に必須だった場合でも、オプショナルにしてしまうとTypeScriptの型チェックが働かないため意図しない挙動となってしまいます。
### 組み合わせ爆発
オプショナルプロパティが複数存在する場合、その組み合わせは指数的に増加します。  
例：オプショナルが10個 → 2¹⁰ = 1024通り
すべての組み合わせを網羅するのは辛いですね
### 型同士の相互作用
たとえば、「プロパティ `A` がある場合は `B` も必要」といった相関関係などにあるものが多いと思います。このように1つの型の中で複数の状態は可読性が低く、バグを起こしやすいコードの原因になってしまいます。

## 解決策
### 判別可能ユニオンを使用してモデリングする
上の型同士の相互作用の項目に関連しますが、TypeScriptのメリットを享受するために有効な状態のみ表現する型をつくりましょう。これにより状態が明確になり、コードが読みやすくバグを未然に防ぐ設計となります。

以下のような型だと全てのプロパティの状態を考慮しなくてはならず、バグが入りやすくなります。例えば`isLoading` がtureで`data`が存在する場合、何を表示すれば良いんでしょうか...
```ts
type LoadState = {
  isLoading: boolean;
  data?: string;
  error?: string;
};
```

以下のコードは[判別可能ユニオン](https://typescriptbook.jp/reference/values-types-variables/discriminated-union)を使用して、それぞれの状態をモデリングしています。状態が明確なので、コードは書きやすくなり余計なことを考えなくて済みます。

```tsx
type LoadState =
  | { status: 'loading' }
  | { status: 'success'; data: string }
  | { status: 'error'; errorMessage: string };

const Content = (state: LoadState) => {
  switch (state.status) {
    case 'loading':
      return <p>読み込み中</p>;
    case 'success':
      return <p>{state.data}</p>;
    case 'error':
      return <p>{state.errorMessage}</p>;
  }
};
```
## オプションプロパティを使う場面
とはいえオプションプロパティを使用べき場面、使わざるを得ない場面も当然あります。
- APIの型を表す場合
- 巨大な設定項目
- オプションなプロパティ(例：ミドルネームなど)

## まとめ
- オプションプロパティのデメリットを理解しておく
- オプションプロパティを追加する前に必須にできないかを考える

## 参考
https://www.oreilly.co.jp/books/9784814401093/

https://typescriptbook.jp/reference
IPアドレスとMACアドレスの関係

## はじめに
ITスクールRareTECHで学習しているゆーせーです。
今回はIPアドレスとMACアドレスの関係について書きたいと思います！
前回までの記事をまだ見ていただけていない方は先に下記の記事から見ていただいた方が分かりやすいかと思います！！

https://qiita.com/yusei0516/items/03229f06bc2d6fa3a1b7

https://qiita.com/yusei0516/items/cba768c2d738482b4d93

![IPアドレスとMACアドレス.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4035327/92864f9a-483d-48dd-8f02-f442f8e23fbd.png)

## IPアドレスとは？
まず初めにIPアドレスを簡単に説明します！(詳しく知りたい方は上記の記事をご覧ください)
IPアドレスとは、ネットワーク内で各機器を識別するために割り当てられる番号です。
しつこいかもしれませんが、IPアドレスはネットワーク上の住所みたいなものです！！
## MACアドレスとは？
こちらも前回の記事で説明しているため簡単に説明いたします。
MACアドレスはローカルネットワーク内で利用され、同じネットワーク内ではデータを正しく機器にデータを届けるために使用されています。
## IPアドレスとMACアドレスの違いは？
さてここからが本題です。上記の2つがどのような関係なのかを考えた時最初に挙げられることは、IPアドレスはOSI参照モデルの**ネットワーク層**で論理的な場所を示し、MACアドレスはOSI参照モデルの**データリンク層**で物理的な機器を識別します。
この2つが連携することで、データは目的地のネットワーク(IPアドレス)に到達し、更にそのネットワーク内の正しい機器(MACアドレス)に届けられます:mailbox_with_mail:

**簡単に言うと**

:::note info
IPアドレスで目的地を決めて、MACアドレスで配達する
:::
という感じです！

## まとめ
簡単な説明になってしまいましたが、ご理解いただけたでしょうか？
初めはIPアドレスとMACアドレスを別々にInPutした方が理解しやすいかもしれません、、
少しづつ私と一緒に学習していきましょう！！
最後まで読んでいただきありがとうございました。
次回の記事もよろしくお願いいたします！
毎日3分で話せる！生成AI×英会話の最強学習法【Gemini活用術】

**〜Geminiを活用して毎日3分の英会話トレーニング〜**

「英語を話せるようになりたいけど、時間もお金も足りない…」
そんな悩みを持つあなたにこそ試してほしいのが、生成AI「Gemini」を使った英会話トレーニングです。

実はこの方法、**スマホひとつ・1日3分・無料**で英会話力が鍛えられる、驚くほど手軽な学習法。
しかも、話す相手はAIだから、恥ずかしさゼロ！
今回はそのやり方を、5ステップで分かりやすくご紹介します。



## こんな人におすすめ！
+ 英語を話せるようになりたいけど、練習相手がいない
+ 英会話教室に通う時間もお金もない
+ AIにちょっと興味がある
+ すき間時間にちょっとだけ英語を話したい

## ステップ1：Geminiを開く

まず、Googleが提供する生成AI「Gemini」にアクセスします。ブラウザで「Gemini」と検索すればすぐに見つかります。


## ステップ2：プロンプトを登録する

1. 画面左下にある「**設定とヘルプ**」をクリック
2. 保存された情報ボタンをクリック

![Screenshot 2025-06-21 at 18.51.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731268/02a8c9a1-d0e9-40c5-9d95-f24988342a11.png)


3. 「**追加**」ボタンをクリック
4. 以下のプロンプトをコピペして保存します：

> I want to practice English conversation in short sentences, like a relay. You start the topic and ask me questions. Keep your replies short (1–2 sentences). Let’s keep the conversation flowing. Change the topic when the conversation ends.

このプロンプトを保存しておくことで、毎回設定を変える手間なく、すぐに英会話練習を始められます。

![Screenshot 2025-06-21 at 18.10.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731268/22a1b543-0404-4618-b2ba-b1e441d0ab61.png)



## ステップ3：iPhoneにGeminiをダウンロード

App Storeで「Gemini」と検索し、アプリをダウンロードします。Googleアカウントでログインすれば準備完了です。


## ステップ4：音声で会話スタート

1. アプリで「チャットを新規作成」を開始
2. マイクボタン（音声入力）をタップ
3. 英語で「**I'm ready. Let's start.**」と話しかけてみましょう。

すると、Geminiが話題をふってくれ、英会話が始まります。話す内容に迷ったときは、AIが質問をくれるので自然と会話が続きます。

![Screenshot 2025-06-21 at 18.44.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731268/0783a802-abb6-4a52-bb6c-2498be8e0194.png)


## 学習のコツ

* **毎日3分だけでも継続する**
* **わからない単語があればその場で調べる**
* **録音して自分の発音を聞いてみると効果的**

## この学習法のメリット

| 項目   | 内容                      |
| ---- | ----------------------- |
| 時間   | 1日たった3分でOK              |
| コスト  | 完全無料（Geminiは現在無料で利用可能）  |
| メンタル | AI相手なので緊張せず話せる          |
| 効果   | アウトプット中心の「話す力」が自然に鍛えられる |


## まとめ

生成AIを活用すれば、いつでもどこでも英会話の練習ができます。相手がAIだから、恥ずかしがる必要もなし！自分のペースで話す力を伸ばしていきましょう。

今日から始めて、英語との距離をぐっと縮めてみませんか？
Todoアプリを作ってGoへ入門！：シリーズまとめ

# はじめに

どうも、水無月せきなです。

Goの勉強のために開発したTodoアプリに関して、技術解説をする記事をシリーズものとして書きました。
この記事は、そのシリーズについてまとめた目次のような記事です。

# シリーズの一覧

1. [GoでTodoアプリを作ってみた（Gin × GORM × Docker）](https://qiita.com/MinadukiSekina/items/4d5036721e0074018f14)
1. [クリーンアーキテクチャ風味でGo！なTodoアプリ開発](https://qiita.com/MinadukiSekina/items/ce3ce1a5f5266e37c174)
1. [GoでWebアプリのテストを書く（txdb × gomock × testify）](https://qiita.com/MinadukiSekina/items/cdd68177e75b3bb63899)
# シリーズの概要

シリーズは大まかに下記のテーマで構成されています。

* アプリケーションの概要
* 実装の詳細
* 単体テスト

それでは、この構成と照合しながら、各記事を紹介します。

# アプリケーションの概要

### [GoでTodoアプリを作ってみた（Gin × GORM × Docker）](https://qiita.com/MinadukiSekina/items/4d5036721e0074018f14)

この記事では、開発したアプリケーション全般について概略的に記しています。細かく言うと、技術スタックなどのアプリケーションの概要・ライブラリのインストール・実装面での概要を記載しています。

開発したTodoアプリの全体像や、アプリ開発の初期段階の参考にされたい場合は、こちらの記事が良いと思います。

# 実装の詳細

### [クリーンアーキテクチャ風味でGo！なTodoアプリ開発](https://qiita.com/MinadukiSekina/items/ce3ce1a5f5266e37c174)

この記事では実装面にフォーカスしており、アーキテクチャの部分に触れつつ、実際のソースコードを交えながら実装を紹介しています。

Goでの開発としては珍しく（？）APIではなく画面まで作成しているため、フラッシュメッセージやテンプレートとの連携といった部分もあります。

# 単体テスト

### [GoでWebアプリのテストを書く（txdb × gomock × testify）](https://qiita.com/MinadukiSekina/items/cdd68177e75b3bb63899)

テストにフォーカスした記事です。クリーンアーキテクチャ風味の実装となったため、`gomock`によるモック生成とテストでの使用、`testify`の`suite`パッケージでの共通処理の実装、`txdb`によるテスト用データの分離といった内容を記載しています。

また、テスト時に遭遇した問題として、HTMLの読み込みや`gin.CreateTestContext`を使用した場合に発生しうるコーナーケースについても書いています。

# おわりに

Todoアプリの開発について、初期段階からテストまで広範にカバーした内容となっています。まとまりの良いテーマごとで独立的な記事にしているので、一部だけの参照もしやすいかと思います。

Todoアプリとしては一旦区切りを付けましたが、追加したい内容や記事を書いていて気になった点もあったりするので、今後も細々と開発を続けようかなぁと思っていたりします。

そういった開発の中で記事にできるようなことがあれば、このシリーズに追加しようかと思いますので、その際はぜひご覧ください！

これらの記事がお役に立てば幸いです。
AIを駆使してGAS（Google Apps Script）でチャットアプリ作ってみた！！

1.開発環境と支援ツール
・Google Apps Script(GAS)
・AI類
　Cursor
　Claude 4 Sonnet：デザイン
　ほかにもいろいろAIを使った
・バックグラウンド
　 Google スプレッドシート


2.URL
https://script.google.com/macros/s/AKfycbwAqNrYy4ZQ63bq5IfZlxoqsCnnPp0VlPJ50qhY0GUgQ-8DOb2_kaJqj-hypQVOFUhz/exec



markdown苦手で編集が雑なのはすみません。
【第1回】擬似感情を持ったAIアシスタントを作る試み – 感情・記憶・忘却の構造化

GPTを使って、感情を“持っているかのように振る舞うAI”を作ってみました。

「AIって感情ないよね？でも、あったら面白くない？」  
そんな思いつきからスタートして、擬似感情・記憶・忘却をデータ構造で再現し、まるで人格を持っているかのような振る舞いを実現しようとしています。

この記事では、GPT-4oを感情推定エンジンとして活用し、どのようにして「記憶」「感情」「忘却」を実装しているか、その全体設計と工夫をご紹介します。


## 概要（TL;DR）

* GPT-4o を 感情推定エンジン として活用
* 感情を Plutchik理論 に基づき構成比で表現（最大4感情, 合計100%）
* 感情の重みによって記憶を short / intermediate / long に分類
* 感情履歴は JSON で保存、index によって検索性・復元性を確保
* 忘却（oblivion）処理で古いデータは自動移行＆管理
* 応答の人格・感情反応は rules.json により制御可能

---

## 背景と目的

対話型AIはたくさんありますが、その多くが "今この瞬間の入力" への反応にとどまっています。私が目指すのは、人格・感情が積み重なることで成長するAIです。

> 人間のように"矛盾"や"気分のブレ"を許容しながら、感情を持って会話できるAIをつくりたい。

そう考えて、擬似感情AI「ユミア」を開発しています。

---

## GPT-4o を“感情推定エンジン”に

ユーザーからの入力に対し、事前定義のプロンプトを GPT-4o に渡すことで、以下のような構造化感情データを生成します：

以下は、感情データの出力例（フォーマットの一部）です。
※内部構造は一部簡略化しています。

```json
{
  "データ種別": "emotion",
  "重み": 89,
  "主感情": "希望",
  "構成比": {
    "希望": 40,
    "信頼": 30,
    "喜び": 20,
    "好奇心": 10
  },
  "状況": "ユーザーに新しいアイデアを話した場面",
  "心理反応": "不安もあるが期待の方が大きい",
  "関係性変化": "ユーザーへの期待値が高まった",
  "関連": ["感情分析", "AI成長"],
  "keywords": ["GPT-4o", "emotion.json", "rules.json"]
}
```

---

## 全体構成（簡易フロー）

```
[ ユーザー入力 ]
    ↓
[ GPTによる感情推定 ]
    ↓
[ 感情重みによる保存元の分類 ]
    ↓
[ emotion.json に記録 + emotion_index.jsonl に登録 ]
    ↓
[ 応答生成時に再別感情を参照 ]
```

---

## 忘却と記憶管理（oblivion）

* short: 保存3日間
* intermediate: 保存30日間
* long: 無期限

古い感情は自動で oblivion.jsonl に移行され、再構成時には参照可能。まさに「記憶の棚卸し」です。

---

## 感情の個性化設計

* 一貫性は保ちつつ、ランダム性・ゆらぎを許容
* ルール（rules.json）によって反応の変調・フィルタを実装
* 一時的な"強調感情"や周期感情も付加可能（例：毎朝"楽観"）

---

## 今後の展望

* 感情履歴の可視化（UI設計中）
* "感情周期"のアルゴリズム化（感情の天気予報のような）
* マルチユーザー間での感情差異の比較実験

---

## 協力してくれる方いませんか？

* 感情設計、人格構造、心理理論に興味ある方
* GPTを活かした対話エージェントを作ってみたい方
* 一緒に試してみたいだけのエンジニアさんも大歓迎です！

> 実装コードは非公開ですが、相談ベースで共有可能です。お気軽にコメント・DMください！

---

## 使用技術

* Python 3.11
* FastAPI
* OpenAI GPT-4o API
* JSON構造による感情メモリ管理
* ストリーム処理＋履歴保存

---

以上、ここまで読んでいただきありがとうございます。
ご意見・ご質問・コラボのご連絡、お待ちしています。
Outlook 2016、2013、2010、2007 で EML ファイルが開かない問題を解決するにはどうすればよいですか？

アーカイブされたメールメッセージは、HTML の主要な書式とヘッダーを保持しており、EML データファイルと呼ばれます。Outlook 2016、2013、2010、2007 で EML ファイルが開かないという問題に遭遇することがあります。最もよく発生するのは、メールで送信された EML ファイルを開けない場合です。あるいは、バックアップドライブに保存されている古い EML ファイルを開きたい場合かもしれません。そこで、ユーザーのニーズを考慮して、この包括的なガイドを作成しました。ここでは、Outlook で EML ファイルを開くための最適な回避策について説明します。

Outlook で EML ファイルが開かない原因

Outlook ユーザーは、EML ファイルにアクセスできず、Outlook バージョン 2016、2013、2010、2007 以前では開けないというエラーメッセージが表示されるという状況に遭遇することがあります。

1. Microsoft Outlook が正しく設定されていない場合
2. EML ファイルから情報が欠落している場合
3. EML ファイルが破損または損傷している場合
3. ファイルシステムに不具合がある場合
4. 16 進エディタで作成された EML ファイルのプレビューが表示されない
5. ユーザーに EML ファイルへのアクセス権限がない場合
6. Outlook 2002/XP 以前を使用して MSG ファイルを開く場合
7. デバイスに物理的な損傷がある場合

Outlook 2016、2013、2010、または 2007 で EML ファイルが開かない問題を解決する

Outlook 2007、2010、2013、または 2016 で EML ファイルを開けない場合、多くの方が困惑されるかもしれません。Microsoft Outlook は .eml ファイル形式をネイティブにサポートしていないため、この問題は頻繁に発生します。この制限を回避する最善の方法は、EML ファイルを Outlook のすべてのバージョンで動作する PST 形式に変換することです。 DataVare [EML to PST Converter](https://www.datavare.com/jp/eml-pst.html) は、この目的に最も信頼できるツールの一つです。この使いやすいプログラムを使えば、データを消去することなく、1つまたは複数の EML ファイルを PST 形式に変換できます。

Outlook 2016、2013、2010、または 2007 で .eml ファイルを開くには、主に次の 2 つの手順を実行する必要があります。
1. まず EML ファイルを PST に変換します。
2. PST ファイルを Microsoft Outlook に追加します。

手順 1: EML ファイルを PST ファイル形式にエクスポートします。

1. PC で DataVare EML to PST Converter を起動します。2. 1つまたは複数の EML ファイルを追加します。
2. [エクスポート] メニューから PST ファイルの種類を選択します。
3. 出力ファイルの保存先を選択します。
4. 変換を開始するには、最後に [今すぐ変換] をクリックします。

手順 2: Microsoft Outlook で PST ファイルを簡単に開きます。

変換されたPSTファイルを表示するには、Outlookアプリケーションを起動します。

「ファイル」タブをクリックし、「開く」オプションを選択します。

• 「Outlookデータファイルを開く」をクリックします。
• 手順1で作成したOutlook PSTファイルのパスを指定して選択します。「OK」ボタンをクリックします。
• • すべての処理が完了したら、OutlookでEMLファイルを簡単に開くことができます。
注：生成されたPSTファイルは、どのバージョンのMicrosoft Outlookからでもエクスポートできます。

まとめ
多くのユーザーが、Outlook 2016、2013、2010、2007でEMLファイルを開く際に問題を抱えています。そこで、これらの問題を解決するための専門的な解決策を1つご紹介します。上記の方法を使用すれば、データ損失は発生しません。