OmniAICreator/Qiita-1.07M huggingface dataset:
Pythonにおける 安全な辞書利用スタイルガイド

## 🎯 目的

Pythonの`dict`は柔軟で便利ですが、その設計には**暗黙の落とし穴や設計的な妥協**があります。
本ガイドはそれを認識した上で、**安全かつ明示的に辞書を使うための実践的ルール**を提供します。

---

## 🧱 1. 原則：`[]` アクセスは「絶対にキーがある」と確信があるときだけ使う

```python
# OK（キーが必ず存在するなら）
config = {"mode": "debug"}
mode = config["mode"]
```

```python
# NG（キーがなければ例外）
mode = config["mode"]  # ← KeyErrorの危険
```

📝 **補足**：`[]`は「失敗＝例外」なので、失敗する可能性があるときは使わない。

---

## 🧩 2. キーが存在しない可能性があるなら `.get()` を使う

```python
# OK
mode = config.get("mode", "release")  # デフォルト付き
```

```python
# OK（存在確認付き）
if (mode := config.get("mode")) is not None:
    use_mode(mode)
else:
    handle_missing_mode()
```

---

## 🔍 3. より厳密な構造を求めるなら `TypedDict` や `dataclass` を使う

```python
from typing import TypedDict

class Config(TypedDict, total=False):
    mode: str
    debug: bool

def process(config: Config) -> None:
    if "debug" in config:
        do_debug(config["debug"])
```

✅ `mypy`などで静的型チェックが可能
✅ 「存在しないかも」なキーを明示できる（`total=False`）

---

## 🧰 4. `defaultdict` は「ないときは初期値」で済ませたいときに有効

```python
from collections import defaultdict

word_count = defaultdict(int)
word_count["apple"] += 1
```

* 👍 辞書にキーがなかった場合の初期化処理を省ける
* 👎 一見して「どのキーがもともと存在したか」が分かりづらくなる

---

## 🚨 5. `try: ... except KeyError` は最終手段

```python
try:
    value = config["setting"]
except KeyError:
    handle_missing()
```

* ✅ 例外ベースのEAFPスタイル（「やってみてダメなら後処理」）
* 👎 濫用すると**見通しが悪くなり、パフォーマンスも悪化**

---

## 🧠 6. 静的解析を活用しよう（`mypy` / `pylint` / `pyright`）

* `TypedDict` や `dict[str, str]` を明示することで、型チェックツールにキーの有無や型を検出させられる
* 例：`--strict` オプションで `"Key may be missing"` 警告を得る

---

## 📋 7. よくある誤用と代替案

| 書き方                      | 問題点                            | 推奨                                  |
| ------------------------ | ------------------------------ | ----------------------------------- |
| `value = dict[key]`      | キーがないと例外                       | `dict.get(key)` か `if key in dict:` |
| `if dict[key] == "yes"`  | `KeyError` or `NoneType`の比較になる | `if dict.get("key") == "yes"`       |
| `try: value = dict[key]` | 冗長すぎる・多用NG                     | `get()` or 明示的に存在確認                 |

---

## 📦 おまけ：独自の `safe_dict` を使う方法（シンプルなラッパー）

```python
class SafeDict(dict):
    def safe_get(self, key, default=None):
        return self[key] if key in self else default

config = SafeDict({"debug": True})
value = config.safe_get("port", 8080)
```

---

## 📖 まとめ：辞書を安全に使うための7つの心得

1. `[]` アクセスは「絶対にある」と確信ある場合だけ
2. `.get()` を使って失敗を防ぐ
3. 明示的なデータ構造（TypedDict / dataclass）を使う
4. `defaultdict` で簡易的な初期化
5. `try...except` は限定的に使う
6. 静的解析を積極的に導入
7. 誤用パターンを避け、明示性を保つ

---
Colimaとは？Docker Desktopを使わずにMacでDocker環境を構築する方法とアーキテクチャ指定の理由

## はじめに

Colimaは、Docker Desktopを使わずに軽量な仮想環境を提供してくれる便利ツール。

本記事では、「Colimaとは何か？」「なぜアーキテクチャ指定が必要なのか？」について整理する。

---

## Colimaとは？

Colimaは「Containers on Lima」の略で、macOSやLinux上に軽量なLinux仮想マシンを立て、その中でDockerエンジンを動かすためのツール。

内部的には、Limaという仮想マシンツールの上にDocker環境を構築している。

### インストールと起動例

```bash
brew install colima
colima start
```

---

## なぜアーキテクチャの指定が必要なのか？

MacでDockerを使う場合に注意が必要なのが「CPUアーキテクチャの違い」。

DockerイメージはLinux上で動作しますが、その中のバイナリがIntel（x86\_64）向けなのか、Apple Silicon（arm64）向けなのかによって、正しく動作しないケースがある。

例えば、MacがM3なのに、Intel向けのDockerイメージを使おうとするとエラーになる。

これを避けるために、Colimaを起動する際にアーキテクチャを明示的に指定することが必要。

### 起動時のアーキテクチャ指定例

```bash
# x86_64 (Intel/AMD) 向けで起動
colima start --arch x86_64

# arm64 (Apple Silicon) 向けで起動（通常はこれがデフォルト）
colima start --arch aarch64
```

## おわりに
ColimaはDocker環境を構築できる便利なツール。
Dockerイメージを使うときは、アーキテクチャの違いを把握しておくことが重要であることが一番の学び。
開発をよりシームレスに！Supabaseのテーブル情報をAIに簡単に伝える方法

Supabase を使用していてAI君にテーブル構造を伝えたいとき、皆さんどうしてますか？
私は Flutter と Supabase で開発していますが、その時によく使う方法を紹介します。


### 1. Copy table schema 機能を使う方法
Supabase のダッシュボードには、テーブル情報を簡単にコピーできる機能があります。

1. サイドバーから`Table Editor`をタップ
1. 対象のテーブルを選択
1. テーブル名の横にある「...」をクリック
1. `Copy table schema`でスキーマ情報をコピー

これでテーブル構造がコピー出来ました。
後はプロンプトに貼り付けてAI君に伝えてあげればOKです。

### 2. SQL Editor を使用する方法

Supabase には `Table Editor` の他に `SQL Editor` もあります。
よく使う`SQL`はフォルダを作ってスニペット毎に保存しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/92ed2369-317d-459b-9a17-4753906d3d46.png)

テーブル構造を知りたいだけなら下記の`SQL`を流せばOKです。
`AND table_name`にはテーブル名が入るので適宜変更してください。

1. サイドバーから`SQL Editor`をタップ
1. 「+」をタップしてスニペットを作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/1cf726f8-ac57-47c2-b136-5d8e205afed3.png)
3. 下記の`SQL`をペーストして cmd + Enter
```sql
SELECT 
    column_name, 
    data_type, 
    is_nullable, 
    column_default
FROM 
    information_schema.columns
WHERE 
    table_schema = 'public' 
    AND table_name = 'user_option_settings';
```

Results タブに`SQL`の結果が表示されますので、Export を選択し`Copy as JSON`を選択。
後はそれをプロンプトに貼り付ければOKです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/aad3604b-a189-4ac6-b6cc-9eecad58d9e2.png)


### 3. 全テーブル構造を一発でコピーする

1. サイドバーから`Database`をタップ
2. `Copy as SQL` を選択する事でそのプロジェクトに存在しているテーブル情報を全てコピー出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/303bc668-47ea-4476-a16a-e941edd0083b.png)

タイラーさんが先日ツイートしてくださって知りました！

https://x.com/dshukertjrjp/status/1928608068624912711?t=ZbcHvbGZL633dmB845BLhw&s=19


## テーブル構造以外を知りたい時はどうしたらいいか

タイトルとは少し脱線しますが、テーブル構造だけでなく、
「他の情報を確認したい時はどうしたらいいか？」
という話をついでにします。

例えば、「○○テーブルのRLSポリシーの設定内容を確認したい」となったら
```sql
SELECT *
FROM pg_policies
WHERE tablename = 'customers';
```

みたいなSQL流してます。
それをAIに食わせて、正しく設定出来ているか、AテーブルとBテーブルとで同じポリシーになっているかなど聞く方法もありですね。


その他にも「テーブルの中身を確認したい時」はこういうSQL流してます。
```sql
SELECT * FROM public.customers;
```

これでテーブルの中身が出てきます。


### 個人的な使い分け

テーブル情報をただ知りたいだけ、且つ、小規模〜中規模くらいなら「3」が楽かも。
ただ、大規模なプロジェクトでテーブルも数多くある場合、不要な情報をAIに渡してしまうリスクがあるので、「小規模〜中規模くらいなら」と思ってます。

大規模なら「2」の様に`SQLエディター`で`SQL`流して対象のテーブル情報を取得するかな。
もし`SQL`に抵抗ある方はある程度の目星をつけて「1」でもいいかも。

テーブル構造だけでなく、RLSポリシーだったりテーブルの中身だったりそれ以外の情報も知ってAI君に伝えたいとなったら「2」ですね。
ついでに`SQL`の勉強にもなります。
書籍やネットの記事を見るよりSQL流してみるのが何より勉強になります。
もしあなたが破壊系の`SQL`流しそうになったら、warningのポップアップが出て「本当に実行していいの？」って警告してくれます。
ただし、やるならぶっ壊れても問題ない環境でやりましょう！（例えば練習用のアプリ作りながらとか）
AtCoder ABC407 振り返り #C++

# はじめに
ABC407に参加したので振り返ります。
結果は0冠でした。

# A - Approximation
### 問題文
正整数$A$と正の奇数$B$が与えられます。
実数$A/B$との差が最小となる整数を出力してください。
ただし、制約のもとでそのような整数がただ一つ存在することを証明できます。

### 制約
- 1 ≦ $A$ ≦ 407
- 1 ≦ $B$ ≦ 407
- Bは奇数
- 入力はすべて整数

### 入力
入力は以下の形式で標準入力から与えられる。

```bash
A B
```

### 出力
$A/B$との差が最小となる整数を出力せよ。

### 解法
整数除算`a / b`は小数部分を切り捨てるため、商（整数部分）を直接得られる。また、剰余演算子`%`を用いることで、余りを簡単に取得できる

### 実装例
1.与えられた整数$A$と$B$を読み込む。
2.整数除算`A / B`を用いて、$A/B$の整数部分$X$を求め、これを一時的な解答候補`answer`とする。
3.剰余演算`A % B`を用いて、$A$を$B$で割った余り$Y$を求める。この余りは少数の分子に相当する。
4.あまり$Y$が$B/2$（整数除算）より大きいかどうかを判定する。

  - もし$Y ≦ B/2$であれば、小数部分$Y/B$は0.5以下であるため、`answer`が最も近い整数である。
  - もし$Y ＞ B/2$であれば、小数部分$Y/B$は0.5より大きいと判断されるため、`answer + 1`が最も近い整数となる。

5.決定された整数を出力する。

```cpp
#include <bits/stdc++.h>
using namespace std;

int main() {
    int A, B;
    cin >> A >> B;

    int answer = A / B;
    int remainder = A % B;

    if (B / 2 >= remainder) {
        cout << answer << endl;
    } else {
        cout << answer + 1 << endl;
    }
}
```

# B - P(X or Y)
### 問題文
1, 2, 3, 4, 5, 6の6種類の目が出るサイコロを2つ振ったときに、次の2つの条件の少なくとも一方を満たす確率を求めてください。

- 2つの出目の合計がX以上である。
- 2つの出目の差の絶対値がY以上である。

ここで、どちらのサイコロについても6種類のどの目が出るかは同様に確からしく、それぞれのサイコロの出目は独立であるとします。

### 制約
- 2 ≦ $X$ ≦ 13
- 0 ≦ $Y$ ≦ 6
- 入力はすべて整数

### 入力
入力は以下の形式で標準入力から与えられる。

```bash
X Y
```

### 出力
2つのサイコロの出目が2つの条件の少なくとも一方を満たす確率を出力せよ。出力された値と真の値との絶対誤差が$10^{-9}$以下のとき、正答と判定される。

### 解法
分からなかったのでGeminiに書かせました（後で頑張って理解します）。

### 実装例

```cpp
#include <bits/stdc++.h>
using namespace std;

int main() {
    int x, y;
    cin >> x >> y;

    double favorable_outcomes = 0;
    double total_outcomes = 36.0;

    for (int d1 = 1; d1 <= 6; ++d1) {
        for (int d2 = 1; d2 <= 6; ++d2) {
            if ((d1 + d2 >= x) || (std::abs(d1 - d2) >= y)) {
                favorable_outcomes++;
            }
        }
    }

    cout << std::fixed << std::setprecision(10) << favorable_outcomes / total_outcomes << endl;

    return 0;
}
```

# おわりに
先週に引き続き、型の勉強を頑張ります。
複素三角関数のグラフ化

# はじめに
三角関数は、角度の情報を単位円上の座標に変換する関数として高校では定義されている。しかし、高校数学の微分積分では、三角関数の微分と積分を定義することができるようになった。そのことにより、三角関数のテイラー展開やマクローリン展開を導出することができるようになった。そのことから、オイラーの公式が導けるようになった。

そこで、今回はオイラーの公式を用いて三角関数の定義域を実数から複素数へ拡張する。

次に、上記で定義された三角関数を以下のような三次元図（コンター図）で表す。

![fukusosuu_sin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/9402d6ef-d942-4e94-b2a3-b1c949edbf26.png)

# 小ネタ
（ポエムなので、忙しい方は飛ばしてください。）
数学検定1級の試験で、$\sin z =2$となる$z$を求めよという出たらしい。これは、実数$\theta $の場合、$-1\le \sin \theta \le 1$と単位円を描いて思考停止で覚えていた筆者にとっては衝撃的であった。常識を疑わないと解けないような本質的な問題を出してくるあたり流石、数学検定1級と言わざるを得ない。
ちなみに解き方はオイラーの公式を使用する。具体的には、三角関数を指数関数と複素数で表す。これにより、三角関数の定義域を実数から複素数まで拡張できる。

# 問題定義
複素数$z$は実数$x,y$を用いて$z=x+jy$と定義することができる。（複素数を扱う際の最強のツールである）
このとき、

```math
w=Real(\sin z)

```
はどのような挙動を示すか、3次元プロットで考える。(本当は三角関数の実部と虚部を同時に考えたいのだが、それだと4次元空間を描写しなければならず、難しい。)


# 三角関数の定義域の拡張
さて、オイラー公式を用いて、三角関数の正弦は以下のように表されることを認める。ただし$z$は複素数とする。

```math

\sin z = \frac{e^{jz}-e^{-jz}}{2j}

```

ここで、$z=x+jy$を代入する。

```math

\sin z = \frac{e^{j(x+jy)}-e^{-j(x+jy)}}{2j}=\frac{e^{-y}(\cos x+j \sin x)-e^{y}(\cos x-j \sin x)}{2j}=\frac{e^{y}+e^{-y}}{2}\sin x+j \frac{e^{y}-e^{-y}}{2}\cos x

```

したがって、

```math

w=Real(\sin z) =\frac{e^{y}+e^{-y}}{2}\sin x

```

と表すことができる。

# プログラム
上記の考えをもとにして以下のようなプログラムを作成した。
ただし、いつも筆者が使用しているライブラリに加え、今回は複素数での関数演算が可能なcmathというライブラリを用いた。






```python complex_sin.py
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math
import cmath
n=100
L=1
x=np.linspace(-math.pi, math.pi, n)
y=np.linspace(-2, 2, n)
X, Y = np.meshgrid(x, y)
W=np.zeros((n, n))
for p in range(n):
  for q in range(n):
    # 複素数の定義
    z=X[p][q]+1j*Y[p][q]
    # cmathを用いた複素数の正弦関数の計算
    W[p][q]=cmath.sin(z).real
    # 以下のコメント文は正弦関数の実部を計算(導出した関数を使用)、比較用
    #W[p][q]=(math.exp(Y[p][q])+math.exp(-Y[p][q]))/2*math.sin(X[p][q])
plt.contourf(X, Y, W, levels=100, cmap='jet')
plt.colorbar(label="正弦関数の値")
plt.title("複素数の正弦関数の実部")
plt.xlabel("実部")
plt.ylabel("虚部")
plt.savefig("複素三角関数のグラフ.png")
plt.show()
```

これを実行すると以下のようなコンター図が出力される。

![fukusosuu_sin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/9402d6ef-d942-4e94-b2a3-b1c949edbf26.png)

ここで、cmathの文をコメントとし、コメントだった文のコメントを外しても同じコンター図を得ることができる。このことから、三角関数の定義域を複素数の範囲まで拡張するという考察は正しいということが分かる。

また、コンター図を見るに、$z$の虚部を大きくすると$w$の値の振れ幅が指数関数的に大きくなることが分かる。このことから、三角関数と指数関数は、複素数の世界でも相補的であるといえる。

# まとめ
今回は、オイラーの公式を用いて、三角関数の定義域を実数から複素数に拡張するという試みを行った。また、後半では拡張された三角関数がどのような挙動を示すのかをコンター図を用いることで調査した。


# 参考文献

複素三角関数について

http://skomo.o.oo7.jp/f21/hp21_8.htm
【AWS】SAAを取得後にCLFを受けてみて

# はじめに
AWSの資格の中にSAA(ソリューションアーキテクト-アソシエイト)という資格とCLF(クラウドプラクティショナー)という資格があります。
一般的にはCLFからの取得を推奨されることが多いのですが、私はSAAから取得しました、、、
そこでこの記事では、SAAから取得した人が感じたCLFについてゆる〜く書いていきます。

# 試験内容
出題される問題はSAAと比較をすると似ている部分も多いですが、クラウド責任共有モデルなどクラウドの基本的な概念や知識の問題も範囲になってきます。
また、AWSの料金に関する問題やAWS Well-Architected フレームワークの問題も出題されました。正直この辺りはSAAの時には勉強していなかったため、試験前にしっかり勉強しました。

問題の内容としてはサービスについての概要が多いため、そのサービスがどのように使用されるのかをしっかり理解していれば、問題なく解けると思います。
ただ、かなり多くのサービスが出てくるのでゴチャゴチャにならないように注意が必要です。

問題の文章もSAAと比較すると短いです。そのため、実際の試験ではSAAよりはゆとりを持って解くことができました。
注意事項としては、もともとの試験時間が90分とSAAよりも短くなっているので勘違いで時間が足らなくならないように気をつけてください、、、

# 勉強時間と方法
SAAの知識を活かせる部分も多かったので、時間としては20時間弱程度でした。
普段触らないサービスに関しては、知識が抜けていた部分もあったため地味に時間がかかってしまいました。。。

勉強方法は、基本的に問題集を解きまくりました。間違えた問題は、ネット検索をしたりSAAの本やAWSサービスの全般的な本で復習しました。
個人的には、CLFの専門的な本は無しでも大丈夫そうだと感じました。

# 感想
CLFをとってみて、SAAだけでは知らなかった知識を知れたので良かったと思いました。
この2つの資格はどっちから取得するか迷うかと思いますが、個人的にはその人の用途に合わせて取得するのがいいと思いました。
実際にガンガンAWSを触っている人ならSAA
AWSを使用したいと思っている、AWSを使用したサービスに関わっているならCLF
みたいな感じで目的と用途に合わせた受験がいいかもと思ってます。

まだまだ取得していないAWSの資格がいっぱいなので、引き続き資格取得を目指しながら気ままに勉強をしていこうと思います。
Delphi12.3でJCL/JVCLをインストールする際の留意点

# はじめに
Delphi12.3で，JCLやJVCLを使う方法は，以下の2つがあります。
1. GitHubから，クローンしてインストール
GitHubにインストールの手順が書いているのでそれに従います。
1. GitItからインストール
インストール時にダイアログが表示されオプションを変更できる特徴があります。

そのどちらでも，適切な設定をしないとJCLの64bit版がインストールされず，その結果JVCLの32bitがインストールできなくなります。

# JCL/JVCL インストール手順
その際には，以下の手順で，インストールしなおすと64bitアプリケーションをコンパイルできることを確認しました。
私は，GitHubからクローンしてインストールしましたが，GetItからでもインストール時にオプションを指定するダイアログが表示されるので，同じようにインストールできると思います。

1. JVCLをアンインストール(GetItからインストールしていたらIDEを再起動する)
1. JCLをンインストール(GetItからインストールしていたらIDEを再起動する)
1. JCLをインストール
この時に，64bit版の以下の3つのオプションを無効にします。
　- Copy HPP files to configured HPP directory
　- Check HPP filles
　- Dual Packages
インストールに失敗すると，bcc32.exeが見つからないとか，デュアルパッケージはサポートされないとかと表示するダイアログが出ます。
1. JVCLをインストール
64bit版が選択されているかを確認します。
選択できない場合には，JCL64bit版のインストールに失敗していますので，JVCLのインストールを中止して，JCLのインストールをやり直します。

# おわりに
HPPファイルというのは，Delphiパッケージのビルドの際に出力されるC++ヘッダーファイルだそうです。
https://docwiki.embarcadero.com/RADStudio/Athens/ja/C%2B%2B_%E3%83%98%E3%83%83%E3%83%80%E3%83%BC_%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB

以下のサイト(ドイツ語)が役に立ちました。jaenickeさんありがとうございます。
https://www.delphipraxis.net/192564-jedi-jcl-installieren-klappt-nicht.html

間違いなどありましたらご指摘いただけるとありがたいです。
ノートPCをデュアルブート構成でUbuntuサーバにした構築記録【Ubuntu 24.04 LTS】

#  はじめに

元々Windowsで使っていたノートPCにUbuntuを導入し、Linuxによるサーバ運用がしたいと思い環境を構築しました。
今回は、**WindowsとUbuntuをデュアルブートで共存させる方法**をまとめてみました。

※参考にする際は自己責任でお願いします。
　失敗すると既存のデータが消えたりWindowsが起動しなくなったりします。


#  使用した環境

| 項目 | 内容 |
|------|------|
| PC | iiyama製ノートPC |
| 既存OS | Windows 11 |
| 追加OS | Ubuntu 24.04.2 LTS |
| ストレージ | 256GB SSD（SATA） |
| Ubuntu用割当 | 約85GB（ext4） |
| インストール方法 | パーティショニング＋GRUB構成 |

# 事前に用意、準備する事
- USBメモリ （容量10GB以上）
isoファイルが余裕をもって入るサイズを用意する
　
- Windowsのバックアップ、回復ドライブの作成
後述しますが、失敗するとWindowsのデータが消えたり、起動が出来なくなります。

#  ステップ①：UbuntuインストールUSBの作成

- 使用ツール：Rufus（Windows）
- ISO：Ubuntu公式サイトから最新版（24.04.2 LTS）を取得
- 書き込み設定：GPT＋UEFI用、FAT32フォーマット推奨


#  ステップ②：BIOSキーからブート画面の表示
準備が出来たらUSBを接続して、再起動 or シャットダウン後起動
### BIOS起動キー

- iiyamaノートの場合：`F7`でブート選択可能

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4092000/e18c09e9-c294-462f-b467-9465725720c4.png)


Boot deviceの画面が出たらフォーマットしたUSBメモリを選択　
正常にブートできれば

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4092000/86eab8cd-6432-46ac-a2e7-47c0d067796a.png)

この画面が表示されます。
　
Try or install Ubuntu（インストールせずに試す）を選択して
Ubuntuのライブ環境を立ち上げます。

#  ステップ③：Ubuntuインストール開始 
　
立ち上げた後、デスクトップ画面にある「install Ubuntu」のアイコンから
インストール開始します。

細かい設定（言語設定や日時の設定等）は自分の環境化でそれぞれ設定をお願いします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4092000/b7cb5f0f-d5e4-4f68-a980-381cc25680b8.png)

UbuntuをWindows Boot Managerと共存を選択します。
自分で細かい調整をしたい場合は手動パーティショニングを選択


**※注意
「ディスクを削除してUbuntuをインストール」を押さないこと！
ディスク一つのみの運用の場合、選択を誤ると既存のデータが消えてしまいます。**
　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4092000/62b9dfb0-e220-4338-8978-7f609fdac0fd.png)
　
選択後、インストール先と容量を選択します。
自分の好きな容量に設定しましょう！
画面では65GBですが、後に85GBに変更しました。

### 手動設定時のGRUBの構成と注意点
※SSD一つのみ搭載の場合

PCによってはこの部分少し違いがあるかもしれません。
手動で作成する際の私の環境の場合です。
- `sda1`：EFI領域（/boot/efi）
- `sda3`：Windows本体（NTFS, 約170〜200GB）
- `sda5`：Ubuntu本体（ext4, 85GB, / マウント）

**重要：GRUBは`/dev/sda`を指定すること！**
※sda1やsda3を選択した場合、Windows起動できなくなります！
　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4092000/0574db89-725a-47cf-9b96-0aff58b0feb5.png)

 　
最後に確認！
問題なければインストール開始！


# ステップ④：インストール完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4092000/faaabd22-fef5-44f9-9a76-56ba7d4220c0.png)

インストールが完了したら上の画像のような画面が出ます。
再起動しましょう！

# ステップ⑤：GRUB画面の確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4092000/39ed8ad6-4750-4e47-a61a-67dc9f2ed499.png)

画面が汚くて申し訳ないですが、PC起動時に
```
Ubuntu
Windows Boot Manager
```
この二つが表示されていればデュアルブート構成は成功！

後は起動して自分好みに設定してあげましょう！


# 今後の展開
このUbuntuは、今後以下のような用途で展開予定です：

- Zabbix導入による自宅ネットワーク監視対象

- 外部公開向けWebサーバ構築（Nginx）

- SSHによるリモート管理

- Githubと連携した自作アプリ動作環境
GitHubにSSHkeyでpushする最速メモ

https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent


## SSH キーの登録まで

名前を `id_ed25519_github` にしました。
まずは鍵を生成します。

```bash
$ cd ~/.ssh
$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/wsl/.ssh/id_ed25519): id_ed25519_github
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in id_ed25519_github
Your public key has been saved in id_ed25519_github.pub

$ cat ~/.ssh/id_ed25519_github.pub
ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxx wsl@DESKTOP-XXXXXXX
```

この `ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxx wsl@DESKTOP-XXXXXXX` をコピーします。

以下のページの `SSH Keys` に登録します。

https://github.com/settings/keys

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833190/91e55a64-7da5-4dca-9cff-2354060186c2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833190/2722aa92-9e78-4f60-98e0-eedcd5c3efb7.png)

そしたら鍵とドメインを紐づけて GitHub の時はこの鍵を使うようにします。

```config:~/.ssh/config
Host github.com
  HostName github.com
  User git
  Port 22
  IdentityFile ~/.ssh/id_ed25519_github
  TCPKeepAlive yes
  IdentitiesOnly yes
```

動作確認。 

```bash
$ ssh -T git@github.com
Hi xxxxxx! You've successfully authenticated, but GitHub does not provide shell access.
```

Shell にはアクセスできないが SSH とな？




## git push まで

リポジトリに GitHub を登録する。

```bash
$ git remote add origin git@github.com:<user-name>/<project-name>.git
$ git branch -M main
$ git push -u origin main

$ git push --all origin
$ git push --tags
```

もし origin が登録済みと出たら、

```bash
$ git remote rm origin
```

ん～もっと簡単になってほしい気持ち。
サードパーティ製アプリも自動更新 Windows Update Orchestration Platform (WUOP)

2025年、Windows 11に「Windows Update Orchestration Platform（WUOP）」という新機能が追加される予定らしいです

# Windows Update Orchestration Platformとは
Windows OSの更新だけでなく、Zoom、Adobe、Visual Studio などのサードパーティ製アプリのアップデートもWindows Updateで一括管理する仕組みらしい。

https://mjeld.com/2025windows-11-wuop/

https://techcommunity.microsoft.com/blog/windows-itpro-blog/introducing-a-unified-future-for-app-updates-on-windows/4416354
開発・学習記録  英単語 Web アプリ v1

# 英単語 Web アプリ v1


### 開発・学習記録


本記事は、私の学習記録になります。
他の方の参考にはならない内容となっております。

---

### 技術スタック

- React
- TypeScript
- Tailwind CSS
- shadcn/ui
- Storybook
- Vitest
- Local Storage（簡易DBとして使用）

---
###デモ
![vocabAppV1Ddemo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4053972/9c14b755-2c95-469c-b0f6-8d1f50b79113.gif)



### 作成物について

本アプリは、シンプルな Todo リストと同じ構成で作られています。

現在実装されている主な機能は以下の4つです：

- 英単語の追加
- 編集
- 削除
- フィルタリング機能

データ保存には Local Storage を使用しています。

これは以下の理由によるものです：

- データベースに関する知識がまだ浅いため
- Supabase の使用経験はあるが、今回は **React Query** や **useMutation** の理解を深めることが目的だったため、Supabase のセットアップに時間をかけたくなかった

今後は、デザインの改善やデータベース連携なども取り入れ、より実践的なアプリへと成長させていく予定です。

---

### React Query / useMutation を使用した理由と感想

これまでは、`useEffect` を使ってマウント時にデータを取得していましたが、周囲のアドバイスもあり、より適した方法として React Query を知り、導入しました。

現時点で、個人的に React Query を使ってよかったと感じた点は以下の通りです：

- データ取得時のローディング状態やエラー処理の管理がとても楽になった
    
    → 以前は `useState` を複数使って状態(ローディング、エラー)を手動で管理していましたが、その手間が大幅に減り、コード量もスッキリしました
    
- `useMutation` を使って PUT 処理などを実行した後、対象の **query key を invalidate** するだけで、自動的に最新データが取得され、画面が即座に更新される点も非常に便利だと感じました

### 意識したこと

アプリケーション内で重要な操作（データの追加、編集、削除）をあらかじめ洗い出し、それぞれの処理を分離して記述することで、テストしやすい構造を意識しました。ユーザーの操作に基づく機能がどこに集中しているかを自分なりに考え、それに応じてテスト対象の優先度を見極めるよう努めました。
パターン抽出と通信多重化の特許の実装を公開しました

## 特徴

- 定量的なパターンの抽出
- 定量的な周期性の計算
- 定量的な連続性の計算
- M系列使用時より短く、量子化1bitのみでの通信の多重化
  ただし、同期が必要で乱数性は確保されず、SN比は向上しません

## コメント
パターン抽出は、うまい応用先(一応Webのアクセス履歴から広告を発報するタイミングを抽出するなどは考えていますが)見つけるの難しそうですが、通信多重化は、IoT、衛星通信、携帯通信などで、CDMAを使用している所は、高速化(というより効率化？)できると思っています。

## 簡単な説明

[パターン抽出の説明のリンク](https://qiita.com/YASUHARA-Wataru/items/3643d1ce0d714ea2bc85)

[通信多重化の説明のリンク](https://qiita.com/YASUHARA-Wataru/items/02772c5d00b3d3ab5094)

## GitHubの実装
[https://github.com/YASUHARA-Wataru/bedcmm](https://github.com/YASUHARA-Wataru/bedcmm)

## 特許情報

このアルゴリズムは、以下の日本国特許に基づいています：

- 特許番号：特許第7537807号
- 発明の名称：パターン抽出及び通信多重化方法
- 登録日：2024年8月13日
- 内容：パターン抽出方法、周期性の計算方法、連続性の計算方法、通信の多重化方法

## ライセンスについて
- 本実装は研究・検証・評価用途での利用を目的としています
- 商用利用・再配布にはライセンスの取得が必要です
fatal: Cannot determine the organization name for this ‘dev.azure.com’ remote URL.の解決方法

Azure環境下で「git push origin ~」をした際に、下記のエラーが出てしまったためメモ。

# 環境
Windows11
Azure

# エラー内容

```
fatal: Cannot determine the organization name for this ‘dev.azure.com’ remote URL. 
Ensure the ‘credential.useHttpPath’ configuration value is set, 
or set the organization name ase the user in the remote URL ‘{org}@dev.azure.com’.
```

# 解決方法
## credential.useHttpPathをtrueに設定
下記を打ち込めば解決
```
git config --global credential.useHttpPath true
```
Java Silver SE17 を再受験した結果・・・

今回は[前回](https://qiita.com/Take-17apple/items/d360125eca19c345b020)の試験のリベンジで約2週間、もう一度復習を行いました。個人的に紫本が出題形式に近いと感じたので、そこを重点的に勉強しました。今回は試験前のトイレと服装もしっかりとして試験に挑んできました。
他の方が紹介していた、問題文を読んだ後、選択肢を確認してから問題に取り組むようにしました。前回受けていたので雰囲気や出題形式も慣れていたので前回と違ってかなりいいペースで進めることができました。少しでもつまる問題があったらチェックを入れて後で解くようにしました。
残り２０分くらいで９割近く終わったので、チェックを入れた問題をしっかりと解くことができました。感覚としては８割は硬いかなと思いました。

最終時間ギリギリまで問題に取り組んだ結果・・・７３％で合格でした！（なんとも微妙な・・・）

合格は合格で取れたので嬉しかったですが、事前学習ではかなり余裕だと思っていてこの結果だったのであまりスッキリはしませんでした。これからは新しい職場で働くことになるので今みたいに毎日勉強するのがきついかもしれませんが、プログラミングの勉強を始める前に少し進めていた、基本情報技術者試験の勉強を始めてみようと思います。
【Rails初学者】Rails8(Importmap)に jQuery を入れる

# 【自分メモ】Rails 8（Importmap）に jQuery を入れてみた話

こんにちは。
現役看護師でrails初学者のものです。
この記事は、**ImportmapベースのRails8環境でjQueryを使いたいときの手順**を、  
**自分用のメモ**として残しておくものです。

---

## 環境

- Rails 8.0.x（Importmap使用）
- Mac（Apple Silicon）
- jQueryをCDNではなくImportmap経由で使う
- `app/javascript/application.js` から `$` を使いたい

## jQueryをImportmapに追加する

1.まずは、Importmap に jQuery を追加（pin）します

```bash
./bin/importmap pin jquery
```

これで、以下のような1行が`config/importmap.rb`に追加される
```ruby
pin "jquery", to: "https://ga.jspm.io/npm:jquery@3.6.3/dist/jquery.js"
```

## jQueryをグローバルに使えるようにする
`application.js`にjQueryを読み込む記述を追加
```js
// app/javascript/application.js

import jquery from "jquery"
window.$ = jquery
```

この`window.$ = jquery`によって、`$()記法`が使えるようになりました
```js
$(function () {
  console.log("jQuery is ready!");
});
```
ブラウザを開いたときにアラートが出れば成功

## 補足メモ
- importmapの良いところは、npmやyarnを使わずに必要なJSをすぐ使えること
- jQueryの使用範囲はあくまで限定的
- 既存のjQueryプラグインを組み込みたいときには便利らしい
- ページごとにJavaScriptを分けたい場合は、data-controllerを使ったStimulusを併用するのがベターらしい

------
初学者のため、間違えていたらすいません
Linuxディレクトリ構成の標準（FHS）について

## Filesystem Hierarchy Standard (FHS) 

- Unix系オペレーティングシステム（Linuxなど）におけるディレクトリ構造とその標準的な役割を定めた規格。
- システム管理やソフトウェア開発の際に、ファイルやディレクトリの配置場所が統一され、可搬性や保守性の向上が期待できる。 
→例えば、システム管理者とソフトウェア開発者はディレクトリ構成を共有しやすくなり、共通理解の促進・連携の強化・問題解決の迅速化などのメリットが得られる。

### 主なディレクトリとその役割

| ディレクトリ      | 役割・内容                                                                 |
|-------------------|---------------------------------------------------------------------------|
| `/`               | ルートディレクトリ。すべてのディレクトリやファイルの最上位。                |
| `/bin`            | 基本的なコマンド（ユーザー・システム管理用バイナリ）を格納。                |
| `/boot`           | ブートローダやカーネルなど、起動に必要なファイルを格納。                    |
| `/dev`            | デバイスファイル（ハードウェアや仮想デバイスへのインターフェース）を格納。  |
| `/etc`            | システム全体の設定ファイルを格納。                                          |
| `/home`           | 各ユーザーのホームディレクトリを格納。                                      |
| `/lib`            | 基本的な共有ライブラリやカーネルモジュールを格納。                          |
| `/media`          | リムーバブルメディア（CD-ROM、USBなど）のマウントポイント。                 |
| `/mnt`            | 一時的なマウントポイント。                                                 |
| `/opt`            | 追加アプリケーション用のパッケージを格納。                                  |
| `/proc`           | カーネルやプロセス情報への仮想ファイルシステム。                            |
| `/root`           | rootユーザーのホームディレクトリ。                                          |
| `/run`            | システム起動後の一時的なファイル（PIDファイルなど）を格納。                 |
| `/sbin`           | システム管理用のコマンド（バイナリ）を格納。                               |
| `/srv`            | サービス提供用のデータ（Web、FTPなど）を格納。                              |
| `/sys`            | カーネルやデバイス情報への仮想ファイルシステム。                            |
| `/tmp`            | 一時ファイルを格納。システム再起動で消去されることが多い。                  |
| `/usr`            | 追加のユーザー向けプログラムやライブラリ、ドキュメントなどを格納。           |
| `/var`            | 可変データ（ログ、メール、スプールなど）を格納。                            |

### 補足

- FHSはディストリビューションや用途によって多少の違いがある。
- UbuntuでFHSのディレクトリ説明を見るコマンド
```cmd
man hier
```
## 参考文献
https://www.udemy.com/share/104leu3@jbD4BPI_MFmun0x8hP-7-WwN9XhnzGtzGiTWYvilwnAg1aytqob7t_SQKjJKaiP21g==/
AWS STSはなぜリージョナルエンドポイントが推奨に？背景・影響・対応手順を解説

## はじめに

AWS STS（Security Token Service）は、一時的な認証情報（トークン）を発行するための重要なサービスです。
これまで `sts.amazonaws.com` という **グローバルエンドポイント** が広く使われてきましたが、現在は **リージョナルエンドポイント** の利用が推奨されています。

本記事では、この方針変更の背景、利点、実際の対応方法について解説します。

---

## 1. グローバル vs リージョナル エンドポイントの違い

| 項目       | グローバルエンドポイント                | リージョナルエンドポイント                                |
| -------- | --------------------------- | -------------------------------------------- |
| エンドポイント  | `https://sts.amazonaws.com` | 例：`https://sts.ap-northeast-1.amazonaws.com` |
| レイテンシ    | 高くなる場合がある                   | 地理的に最適化される                                   |
| 可用性      | us-east-1に依存（単一点）               | 各リージョンに分散                                    |
| 障害時の影響範囲 | 広域（全リージョンに波及）               | リージョン内で局所化                                   |
| AWS推奨    | ❌ 非推奨へ移行中                   | ✅ 推奨（今後のデフォルト）                               |

---

## 2. なぜリージョナルが推奨になったのか

以下のような理由から、AWSはリージョナルエンドポイントの使用を強く推奨しています。

* **レイテンシの低減**
  リージョン内でSTSトークンを取得することで、より高速に認証が行えるようになります。

* **可用性と耐障害性の向上**
  グローバルエンドポイントがダウンするとすべてのリージョンに影響するため、リスク分散の観点でもregionalが優位。

* **一部サービスでregional前提に移行**
  例：S3クロスリージョンレプリケーション、IAM Roles Anywhere など。

* **将来的なデフォルト移行への布石**
  `AWS_STS_REGIONAL_ENDPOINTS=regional` がデフォルトになる流れに備える必要あり。

[2025年4月18日のブログ投稿](https://aws.amazon.com/jp/about-aws/whats-new/2025/04/aws-sts-global-endpoint-requests-locally-regions-default/)でグローバルエンドポイントを指定してもローカルに処理される機能拡張が行われたとされていますが、引き続きリージョナルエンドポイントを推奨するのは変わらないそうです。

---

## 3. リージョナルエンドポイントの設定方法

### 3.1 AWS CLIでの設定

`~/.aws/config` に以下の設定を追加します。

```ini
[default]
region = ap-northeast-1
sts_regional_endpoints = regional
```

または環境変数で設定：

```bash
export AWS_STS_REGIONAL_ENDPOINTS=regional
```

---

### 3.2 SDK（boto3）での対応

Python（boto3）でリージョナルエンドポイントを利用する例：

```python
import boto3

sts = boto3.client('sts', region_name='ap-northeast-1', endpoint_url='https://sts.ap-northeast-1.amazonaws.com')
print(sts.meta.endpoint_url)
```

Lambda Functionの場合はパラメータでendpoint_urlを指定せず、以下のように環境変数で指定してあげた方が確実です。
![スクリーンショット 2025-05-31 20.18.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237951/d5fd8d81-adfa-4909-aa44-9bccb01c18d7.png)


---

## 4. 注意点・落とし穴

* 古いAWS SDK/CLIでは regional 設定が未対応の場合があるため、**常に最新バージョンを使用することが推奨されます**。
* 一部マネージドサービスで、STSエンドポイントの切り替えが自動的に反映されない可能性があります。
* CloudTrailログやアクセス監査の設計にも注意し、**どのエンドポイント経由で認証されたか**を追跡可能にすることが望ましいです。

---

## 5 グローバルエンドポイントを使っているかどうか確認する方法
CloudTrailのログをCloudWatch Logsに転送する設定をしている場合は、[こちらのブログ](https://aws.amazon.com/jp/blogs/news/how-to-use-regional-aws-sts-endpoints/)を参考にCloudWatch Logs Insightsを活用して確認するのが良いです。

S3に出力している場合は、[こちらの記事](https://dev.classmethod.jp/articles/aws-sts-endpoint-usage-one-day-cloudtrail/)を参考にログをAthenaを利用して確認するのが良さそうです。
※こちらの記事だとap-northeast-1を指定して問題ないことを確認しているようですが、us-east-1を指定しないとグローバルエンドポイントを利用しているかどうかは確認できないと思うので、そこだけ注意してください。

このように出力されるはずです。
![スクリーンショット 2025-05-31 19.28.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237951/934d4e7f-23c7-4087-b321-968333bf48da.png)

---

## 6. まとめ

AWS STSのリージョナルエンドポイントへの移行は、以下の観点で非常に有効です：

* レイテンシの最適化
* 耐障害性・可用性の向上
* AWSの今後のデフォルト方針に準拠

将来のトラブル防止や運用効率の向上のためにも、**早めの移行を強く推奨**します。

---
Gemini-Powered ServiceNow Incident Reporter: A Chrome Extension

### 1\. Overview

This Chrome extension, the "Gemini Page Reporter," is a tool designed to help you quickly understand and summarize ServiceNow tickets, particularly Incidents. It works by extracting the text content from an active ServiceNow form page, sending it to Google's Gemini API, which processes the information based on a specialized prompt to generate a concise, structured report in Markdown format. Finally, the extension renders this Markdown as HTML and displays it in a new browser window or tab, offering an easy-to-read explanation of the ticket.

**No ServiceNow configuration changes are required, so implementation is extremely easy.**

-----

### 2\. See it in Action

https://x.com/00oichan/status/1928651197088674124


-----

### 3\. How to Use: Step-by-Step

1.  **Download and Unzip the Extension**
    1)  Download the `gemini-now-incident-report-extension.zip` file.
        [https://drive.google.com/file/d/1rlkH7mg7i0u5qouXCkA-yLgIOI2PHCKt/view?usp=sharing](https://drive.google.com/file/d/1rlkH7mg7i0u5qouXCkA-yLgIOI2PHCKt/view?usp=sharing)
    2)  Extract the ZIP file to any folder on your computer.
2.  **Load the Extension into Chrome**
    1)  Open `chrome://extensions/` in Chrome.
    2)  Enable "Developer mode" at the top right.
    3)  Click "Load unpacked" and select the extracted folder.
3.  **Set Your Gemini API Key**
    1)  Right-click the extension icon and select "Options."
    2)  Enter your API key and click "Save Key."
4.  **Generate a Report in ServiceNow**
    1.  Open the ServiceNow incident page.
    2.  Click the extension icon in the toolbar and press "Generate Report."
    3.  The generated report will automatically appear in a new window or tab.

-----

### 4\. Conclusion and Thoughts

While ServiceNow itself provides AI features, starting with such an extension allows users and customers to easily experience the usefulness and convenience of generative AI.

By automatically receiving ticket summaries and analyses, people will become more familiar and comfortable with AI technologies, paving the way for smoother adoption of more advanced AI solutions.

What do you think about this strategy? If you found this article or the extension interesting or helpful, please click the "Heart mark (❤)".

As a disclaimer, please be aware of billing and security management when using the Gemini API. Always handle your API key securely and never make it public. You are responsible for any troubles, costs, or security incidents that may occur when using or modifying this extension.
ハッシュテーブル

備忘録

意味
キーと値を連携させたデータ構造

単純な実装方法
1.ハッシュ関数を用いてキーのハッシュ値を計算する。
2.ハッシュ値を配列のインデックスに対応させる。
3.このインデックスの指す場所にキーと値を保存する

注意点
異なる２つのキーが同じハッシュ値になる可能性があるため、連結リストを用いないといけない。
パターン抽出(と周期性解析)の特許について

## はじめに
パターン抽出、通信の多重化の特許を取得したので、その実装をGitHubに上げました。
Qiitaも始めてみようと思い立ったので、特許の内容について簡単に説明したいと思います。
パターン抽出と周期性解析、連続性解析の特許についての説明です。

## bedcmmの基礎理論
基底を設定し、0以外の値を基底の値で割算し、その最小値を相関値とするのが、
bedcmm(基底抽出割算相関最小法)の基礎理論です。

![bedcmm_core.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4102399/551b3f51-b58a-425b-b857-15fd423c6cb4.png)

## bedcmmのパターン抽出
任意のデータに対し、基礎理論の処理をそのまま行うのがパターン抽出です。

検出したいデータの部分をコピーし特徴的な点以外の値を0としたものを、基底とするとパターン抽出しやすくなると考えています。

また、隠れたパターンも抽出してしまうため、常にデータの大きいデータは、意図にそぐわない検出を行う事が、多いかと思います。
その時は、大きいデータの基底を作成し、除外する作業をしましょう。

## bedcmmの周期性解析
パターン抽出を応用し、フーリエ変換のような変換を目指して、周期性で変換を行ったものです。
周期性解析では、基底を間隔を開けた二つの1として、間を0で埋めたの基底を作成し、その相関値の平均を取得しています。

周期性が完璧にある時は、周期性毎の値が同じになると考え、その値からズレた時は、ズレた分だけ損失を与える処理になっています。データ数と周期が割り切れる場合は、完璧に周期性があると、平均値とbedcmm周期性の計算値が一致します。

![bedcmm_period.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4102399/164c805c-3868-465e-9bf9-322337aff332.png)

## bedcmmの連続性解析

周期性解析では、基底を間隔を開けた基底にして平均を取得していましたが、この基底を連続した基底に変えたものです。

## GitHubのリンク
[https://github.com/YASUHARA-Wataru/bedcmm](https://github.com/YASUHARA-Wataru/bedcmm)

## 他リンク
[全体の記事](https://qiita.com/YASUHARA-Wataru/items/2c7f8d9ad25f6d656844)
[通信多重化の記事](https://qiita.com/YASUHARA-Wataru/items/02772c5d00b3d3ab5094)
通信多重化の特許について

## はじめに
パターン抽出、通信の多重化の特許を取得したので、その実装をGitHubに上げました。
Qiitaも始めてみようと思い立ったので、特許の内容について簡単に説明したいと思います。
通信多重化についての記事です。

## bedcmmの基礎理論
基底を設定し、0以外の値を基底の値で割算し、その最小値を相関値とするのが、
bedcmm(基底抽出割算相関最小法)の基礎理論です。

![bedcmm_core.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4102399/84638dce-9e11-490e-a27d-65e75530079b.png)

## bedcmmの通信多重の理論
バイナリの信号に対し、信号を復調する際に、bedcmmを使用するのがbedcmmを使った通信多重化です。
### 変調
変調(拡散)する時は、バイナリの基底長分だけ長くして、1の時は基底を、0の時は基底長の0を入れます。

![bedcmm_modulation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4102399/36530845-d125-4cb3-9610-24bee938299e.png)


### 復調
復調する時は、図のようにbedcmmにより相関値を取得し、この後に適切な遅延フィルタをかけ、元のビット数の間隔でデータを取得すれば、データが取得可能となります。

- 復調(概要)

![bedcmm_demodulation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4102399/01904d62-992f-44ef-a90b-fa7fa7eff46c.png)


bedcmmで相関を取得するので、基底の1の部分のみの信号の中で最小を取得します。
つまり、1の部分のみで0が無ければ1,0があれば0となります。なので、図のような処理が可能となります。

- 復調(コア処理)

![bedcmm_comm_demod.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4102399/56e58007-94e1-4feb-b267-e70fecf182bf.png)



## 理論値による系列比較表（例）
(chatGPTを元に作成したので間違いがある可能性もあります。)
※間違いなどあったら指摘ありがたいです。

| 項目                           | bedcmm               | Gold系列（n=5）            | Walsh符号（長さ16）        | ZC系列（例：長さ13）      |
|--------------------------------|-----------------------------|----------------------------|-----------------------------|----------------------------|
| **量子化ビット数**             | **1bit**（前提）            | 6〜8bit（通常前提）        | 4〜8bit（直交前提）         | 4〜8bit（複素位相依存）    |
| **系列長**                    | **12**(試験的計算範囲が12まで)                      | 31                         | 16（2⁴）                    | 13（素数）                 |
| **最大理論多重数**             | **5**（計算済み）           | 33（理論値）               | 16（完全直交）              | 1（主に自己相関用）        |
| **自己相関特性**               | 良好（1bit設計に適応）      | 優秀（2値）                | 完全直交                    | 優秀（ゼロ以外小）         |
| **相互相関特性**               | 0               | -1, 0, 1（3値）            | 0（完全直交）               | 離れれば小                 |
| **復調計算コスト**             | **低い(論理演算のみ)** | 中（相関）                 | 中（直交演算）              | 高（FFT/複素内積）         |
| **1bitとの親和性**            | **高**    | 低（ADC依存）              | 低（振幅直交依存）          | 低（複素直交）             |
| **主な応用分野**               | IoT、低消費電力通信(これから)         | CDMA、GPS                  | 無線LAN、制御通信           | 5G、レーダ、音響処理       |

## bedcmmによる多重化の最大理論多重数

| 信号長      | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
|-------------|---|---|---|---|----|----|----|----|----|
| 理論多重化数 | 2 | 2 | 3 | 3 | 4  | 4  | 5  |(5) |(6) |

※()は、一部のみ確認なので最低数

## GitHubリンク
[https://github.com/YASUHARA-Wataru/bedcmm](https://github.com/YASUHARA-Wataru/bedcmm)

## その他リンク
[全体の記事](https://qiita.com/YASUHARA-Wataru/items/2c7f8d9ad25f6d656844)
[パターン抽出の記事](https://qiita.com/YASUHARA-Wataru/items/3643d1ce0d714ea2bc85)
【Mac】DifyとOllamaでローカルで動く業務用LLM-AIツールを作成する



https://zenn.dev/michy/articles/1dfddbcf88c80e


## ollamaのインストール
以下のURLよりollamaをインストールします。インストール後に起動するとステータスバーにllamaのアイコンが現れます。
https://ollama.com/download

インストール後、以下のようにllama3.2モデルのインストールを促されたため、サンプルとして実行。
```
ollama run llama3.2
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323946/41aa58fc-2ba8-4d34-ab78-88cc11bb2b75.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323946/8a2f4b87-172e-4383-b449-dc27296ec85c.png)
プラグインのインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323946/a0949a67-2ad2-4a4b-8d1e-fc9e70c72776.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323946/e29d225c-3ae7-4061-8bdf-b70d51d2bc55.png)

以下の通り設定する
http://host.docker.internal:11434
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323946/dd16a4ea-4988-49d9-a24b-e1511f7f922f.png)

一旦推論モデルに追加したllama3.2を設定しておく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323946/8dc9ec50-0f9d-4323-8ee7-692cdab5c9d4.png)


業務用AIフローの作成
この章からは実際にollamaを用いてAIの実行フローを作っていきます。

空白のフローの作成
スタジオ > アプリを作成する(最初から作成) > ワークフロー　を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323946/279bcc13-82b9-421b-8f33-ddcf36741df7.png)


作成後は以下の空白のフローが構築されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323946/eddc85a4-ad00-4b81-8b9a-80eb2b6578fd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323946/77083242-9d6f-4451-be66-c5317f9b31f9.png)
これで、Promptという変数にユーザの入力値を格納し、LLMに引き渡すことができるようになりました。

LLMブロックの作成
開始ブロックの+アイコンをクリックし、LLMブロックを追加します。

追加したLLMブロックの値を以下の通りに入力します。
この値やパラメータは目的に合わせてチューニングしても構いません。

設定値の補足
SYSTEM
LLMへの事前指示を入力します。
今回はインプットを「動物」「食べ物」「人名」に分類する分類器を作成するので、以下のテキストを入れてください。

あなたは優秀な分類器です。次のインプットを「動物」「食べ物」「人名」のいずれかに区分してください。
当てはまるものがない場合でも、最も近いものを選んでください。応答は区分名のみとしてください。

USER
LLMへのインプット部分です。
開始ブロックで作成したPrompt変数の値をLLMにいれるため、Promptを入力にしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323946/266a8769-88e4-4007-b78f-795cad5e337a.png)


終了ブロックの追加
LLMブロックの先に終了ブロックを追加します。

LLMの処理結果を受け取るため、出力変数を設定しLLMの出力(LLM/text)を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323946/fe4bc202-c2d8-4410-958c-8517d0a557a4.png)

ツールの公開と起動
ツールを公開します。といっても、ローカル環境なのでPCの外部から見える状態にはなりません。
右上の”公開する”ボタンをクリックし、"アプリを実行"をクリックします。

起動後、以下の画面が出れば実装完了です！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323946/7c26518d-3ca8-4463-9374-9af2fdfc10cf.png)


この状態でもChatBotのように使うことができますが、RunBatchでcsvファイルをインプットとしてまとめて処理することもできるようになっています。
インプットファイルのフォーマットはDownload the template hereボタンで入手でき、手厚い仕様になっています。
本番環境のSupabase+Google認証でlocalhostにリダイレクトされてしまう

SupabaseでGoogle認証を可能にしましたが、リダイレクトがうまくいかないという問題が発生しました。本番環境でGoogle認証をしようとするもlocalhostにリダイレクトされてしまうという問題です。


# 解決方法
以下のように「Redirect URLs」を以下のように設定することで開発環境ではlocalhostに本番環境では本番環境のURLにリダイレクトできるようになりました。
![スクリーンショット 2025-05-31 191107.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3439167/724bcb30-dded-4a5f-83a9-8fac22b8e3f7.png)
PLAUDはいいぞ with zapier & kintone（３回ポチるだけで会議録音～議事録生成～皆に共有）

# はじめに📝
こんにちわ、最近は色んな生成AIツールに課金しまくってる、ノベルワークスのまとっち（[@matoi_thai](https://x.com/matoi_thai)）です。

PLAUDがあまりに優秀なので、kintone議事録アプリへの連携を自動化しました。

## こんな人に見てほしい👀
- 打合せの議事録を作るのに時間を掛けてる人
- 打合せの内容を他メンバーに共有できてない人

## PLAUDとは🎙️
対面打合せやWeb会議の音声を録音して、文字起こし・要約できるツールです。
文字起こしや要約の精度が高いのでかなりおすすめです。

https://jp.plaud.ai/

# 今回やったこと⚙️
３回ポチるだけで打合せの議事録を社内メンバーに共有します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3713212/22ad4694-bea9-461b-8a0c-8b31d10c1ee1.png)

:::note info
<b>今回録音した音声</b>
NotebookLMにPLAUD NotePinのユーザーガイドを読み込ませて生成した音声概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3713212/ac99cc4f-d673-4740-badd-09b87685ff89.png)
:::

## ① 打合せを録音（２ポチ）
まずは下記どちらかで録音する。録音の開始と終了で<b>２回ポチる。</b>
- 対面打合せ：PLAUDのボイスレコーダー
- Web会議：PCにインストールしたPLAUDアプリ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3713212/bef4cbec-f0c5-4338-9779-759cd9f57e6f.png)

## ② 音声を文字起こし・要約（１ポチ）
音声データがPLAUD Webに転送されているので、文字起こしと要約の生成で<b>１回ポチる。</b>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3713212/82342a35-fe67-4f44-b1f3-2424413e8d93.png)

:::note info
PLAUDの文字起こしや要約の精度については、下記の比較記事が分かりやすかったです👇僕はPLAUDとNottaどちらも使ってみた結果、現在はPLAUDだけを使ってます。
:::

https://miralab.co.jp/media/plaud-note_plaud-notepin_notta_vs/

## ③ kintone議事録アプリに登録（自動）
zapierを使って、PLAUDの文字起こしと要約をkintoneにレコードとして自動登録する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3713212/df6a3417-1c2f-4e22-962d-d6cd8d5b38b4.png)

kintoneにレコードが登録されたら、メンバーに通知を飛ばして、打合せの内容を共有する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3713212/c2362f66-5aac-44dc-badd-ce9a489fcedd.png)

:::note info
zapierによるPLAUD↔kintone連携は簡単なので設定詳細は割愛します。今回のフローは1タスクしか消費されないので、zapierのフリープランでも月100回処理できます。
:::

:::note warn
【補足】自動連携はできませんが、この要約と文字起こしをGensparkのAIスライドに入れたら、すごく分かりやすいスライドを作ってくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3713212/2ac9b9df-49a1-4e03-85b3-d038ac7d526c.png)
:::

# 感想💬
すっごいラクになりました・・・
このレベルの議事録が３ポチでみんなに共有できるのはありがたいです。
Tailwind CSSで !important を使いたいときは !someClassName で指定する

CSSにおける `!important` は、**特定のスタイルを強制的に適用する**ための強力な手段ですが、一般的には「避けるべきもの」とされています。
 理由は明快で、通常の**スタイルの優先順位（Specificity）や定義順のルールを無視してしまう**ため、後からの保守やスタイルの上書きが困難になるからです。

しかし、開発現場では「理屈ではそうでも、どうしても優先させたいスタイルがある」「外部コンポーネントや条件付きレンダリングと絡んで順序が制御できない」といった状況が少なからず存在します。

そんな「どうしても使わざるを得ない場面」において、**Tailwind CSSでは非常にシンプルな記法で `!important` を付けることができます。**


## Tailwindにおける `!important` の指定方法

Tailwindでは、ユーティリティクラス名の前に **`!` を付けるだけ**で `!important` を効かせることができます。

### 例

```html
<div class="pb-12 !pb-0">...</div>
```

このように記述すると、`padding-bottom: 0px !important` が適用され、前に書かれた `pb-12` を無視して `pb-0` が必ず効くようになります。


## 実際に生成されるCSS

Tailwindは `!` をプレフィックスとして認識し、以下のようなCSSを出力します：

```css
css
.pb-12 {
  padding-bottom: 3rem;
}

.\!pb-0 {
  padding-bottom: 0px !important;
}
```



## 注意点

- `!important` を多用すると、スタイルのデバッグや保守が極めて困難になります。
- クラスの順序やコンテキストを整理すれば済む問題に対して、安易に `!` を使うのは避けるべきです。
- あくまで**「最後の手段」としてのみ使用する**ことを前提にしてください。


## まとめ

Tailwind CSSでは、`!important` を使いたいときに `!クラス名` で指定するだけで簡潔にスタイルの優先度を上げることができます。
 通常は避けるべき `!important` ですが、クラス順制御が不可能な状況や外部依存のあるスタイル調整では、**最も安全かつ明示的な対処法**になり得ます。

最小限に、そして計画的に活用しましょう。
cdk importでresource-mappingするときのjsonの作り方

cdk importは`-m`オプションでresource-mappingをファイル読み込みで行えます
こうすると対話不要。

https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/ref-cli-cmd-import.html

が、このファイルは全然説明がありません

1. manifest.jsonからlogical idを引っ張ってくる(synth済み前提)
2. jsonを作る
3. `cdk import -m aaa.json`

## e.g. s3のバケットimport
keyはlogical id

```json
{
  "YourBucketRANDOMID": { "BucketName": "your-bucket-name" }
}
```



https://github.com/aws/aws-cdk/issues/30318#issuecomment-2473869065
「AI APIの理解：アプリケーションへの人工知能統合を簡素化する方法」

投稿日 2023年08月17日

Qiitaでは、Qiita CLIを使うことで、Qiitaの記事をGitHubリポジトリで管理できます。
また、Qiita CLIを使うと普段お使いのエディタで記事を執筆できます！

Qiita CLIの詳細はQiita CLIのREADMEをご確認ください。

<p><a href="https://online.visual-paradigm.com/community/bookshelf/cellufend-user-guide-step-by-step-info-how-to-use--26hxwd4tnj">https://online.visual-paradigm.com/community/bookshelf/cellufend-user-guide-step-by-step-info-how-to-use--26hxwd4tnj</a></p>
「Issueにリンクを貼るだけ」で自動開発！Github Copilot Coding Agent × Notion MCP活用例

今回は、話題の Github Copilot Coding Agent と Notion MCP を組み合わせて、まさに「ノーコード開発」と呼べる体験を試してみたので、その流れと感想をまとめます。

「Issueをアサインするだけ」で開発が進み、「PRにコメントするだけ」で修正が入る。そんな未来が現実になってきています！

# :pushpin: やりたいこと
- Github Copilot Coding Agent を使って自動で開発+PR作成を行いたい
- Coding Agent に Notion MCP を設定し、 Notionページに開発内容を書く → リンクだけをIssueに貼るというスタイルを試したい
- 実際にどこまで使えるのか、 既存のToDoアプリに対して小さなエンハンスを行って検証したい

# :tools: 準備・設定
1. Notion MCP の準備
    - Notionで開発内容のページを用意
    - Notion MCP を設定して対象ページにインテグレーションを追加
        - [Notion MCPの始め方](https://notion.notion.site/Notion-MCP-1d0efdeead058054a339ffe6b38649e1)
2. Coding Agent のセットアップ
    - Github Copilot Coding Agent を有効化
    - MCPサーバーの設定画面から Notion MCP を設定
        - [Extending Copilot coding agent with the Model Context Protocol (MCP)](https://docs.github.com/ja/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp#example-notion)

# :rocket: 実際にやってみた
ケース：ToDoアプリに期限日付機能を追加
① Notionページに内容を書く
```
# タスクに期限を追加したい

### 必須対応内容

- タスクモデルに **`due_date` カラム** を追加
    - 型：日付（DATE型）
    - SQLite用にマイグレーションまたは初期化SQLを更新
- タスク追加フォーム（`/` の画面）に **期限入力欄** を追加
    - HTML `<input type="date">` 形式
- タスク一覧画面に期限を表示
    - 各タスクの横に「期限：YYYY-MM-DD」と表示
    - 期限未設定のものは「期限：未設定」と表示

### UI例
[タスクのタイトルを入力してください](<-input) [YYYY/MM/DD](<-date picker) [追加](<-button)

### 補足

- 期限未設定のものは`due_date = NULL`
- 並び順やフィルタ機能は今回不要、まずは「期限の追加と表示」のみ対応
- DBはSQLiteのまま
- 既存のDockerfileやrequirements.txtに追加は不要な見込み

### 確認手順

1. タスク追加フォームで`タイトル`と`期限`を入力して追加
2. 一覧画面に期限が表示されていることを確認
3. 期限未設定のタスクも問題なく表示されること
```

② Issue にリンクだけ貼る
（今回は実験で、Issueのタイトルから内容を推測されないように「追加機能」としています。実際は開発内容に即したタイトルを付けた方が良いと思います。）
![スクリーンショット 2025-05-31 170819.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532049/d408e94c-cdbb-45ea-942c-5f238e7e7aaa.png)

③ Issueを Coding Agent にアサイン
:point_right: 自動で開発＋PR作成！ :tada:

# :mag: 結果
生成されたPR内容
- ToDo画面に 期限日付の入力欄 が追加されていた
- 一覧画面にも期限が表示
- 期限未設定のものは「期限：未設定」と表示

さらに：PRコメントで修正指示
![スクリーンショット 2025-05-31 174455.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532049/8d78fb18-e14e-460b-b6d5-54ed6509d499.png)
:point_right: 自動で修正されたPRに更新！

# :iphone: 実際のアプリ画面
変更前
![スクリーンショット 2025-05-31 163604.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532049/94db1ab7-1fe9-405e-85a9-0010ced493bd.png)
変更後
![スクリーンショット 2025-05-31 174223.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532049/a688c23d-93be-47eb-b27b-400e19ecb235.png)

# :sparkles: 感想・まとめ
- Notion MCPとの組み合わせが非常に便利！
:point_right: Issueに細かい説明を書かなくてもOK
:point_right: Notionのドキュメントがそのまま仕様書になる
- PRコメントの修正まで自動で対応できるのは感動
- ノーコード感覚で開発が進む → プロダクトマネージャーなど非エンジニアでも指示を出せる未来が見えてきた

# 今後やってみたいこと
- より複雑な開発指示での挙動確認
- デザイナーとの連携（Figma MCP との組み合わせなど）
- 他のMCP（Google Docsなど）との比較

# さいごに
Copilot Coding Agent + Notion MCP の組み合わせ、かなり未来感あります！
もし試してみた方がいたら、ぜひフィードバックや工夫例を教えてください :open_hands:

今回実験に使ったリポジトリ

https://github.com/jumpei-usui/agent-demo
Proxmox VE 8.2 環境構築のためのリポジトリ修正

## リポジトリの修正
インストール初期段階では、APTリポジトリがenterpriseになっていてアップデートできないので、これに以下のようにリポジトリを変更する。


``` diff js:/etc/apt/sources.list
deb http://ftp.debian.org/debian bookworm main contrib

deb http://ftp.debian.org/debian bookworm-updates main contrib

# security updates
# deb http://security.debian.org bookworm-security main contrib
deb http://security.debian.org/debian-security bookworm-security main contrib

deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
```

``` diff js:/etc/apt/sources.list.d/ceph.list
# deb https://enterprise.proxmox.com/debian/ceph-quincy bookworm enterprise
deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription
```

``` diff js:/etc/apt/sources.list.d/pve-enterprise.list
# deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise
```

## 引用
https://pve.proxmox.com/wiki/Package_Repositories#_older_ceph_repositories
材料力学「平行弦ワンレントラス 三角形2個」sympyのTrussで作図。5部材Truss

・タイトル。変更予定です。
・sympyのTrussで作図しました。縦横比が1:1でありません。

# Truss
#### ver0.1
```python
# 平行弦ワンレントラス
# ver0.1
from sympy.physics.continuum_mechanics.truss import Truss
import math
from sympy import *
var('S1 S2 S3 S4 S5')
P=1   # var('P')
L=1   # var('L')
t = Truss()
t.add_node     ((2,Rational(1,2)*L,Rational(1,2)*L*sqrt(3)), \
                (4,Rational(3,2)*L,Rational(1,2)*L*sqrt(3)))                       
t.add_node     ((1,0,0) ,(3,L,0)) 
t.add_member   ((S1,1,2),(S2,1,3),(S3,2,3))   
t.add_member   ((S4,2,4),(S5,3,4))   
t.apply_support((1,"pinned"), (3,"roller"))
t.apply_load   ((4,P,270))
p = t.draw()
p.show()
# 
t.solve()
print("#",t.internal_forces)
print("#",t.reaction_loads )           
# {S1: sqrt(3)/3, S2: -sqrt(3)/6, S3: -sqrt(3)/3, S4: sqrt(3)/3, S5: -2*sqrt(3)/3}
# {'R_1_x': 0, 'R_1_y': -1/2, 'R_3_y': 3/2}
```

![111.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/230abe6c-73f9-446b-b12b-64e74c017c0c.png)

#### ver1.0
・Trussの [「property member_lengths」](https://docs.sympy.org/latest/modules/physics/continuum_mechanics/truss.html#sympy.physics.continuum_mechanics.truss.Truss.member_lengths)がありました。
　作成中です。


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

#### wikipedia 

https://qiita.com/mrrclb48z/items/53640cff620d13d4b50c#%E3%81%84%E3%81%A4%E3%82%82%E3%81%A8%E9%81%95%E3%81%86%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%A7%E3%81%99

#### Qiita

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

#### sympyのDoc　

https://docs.sympy.org/latest/modules/physics/continuum_mechanics/truss.html
Qoo10メガ割で関数電卓を安く買う

## 一部ストアは関数電卓のメガ割も実施
今日17時から6月12日までの日程でQoo10メガ割が実施されている。

Qoo10はファッション系だけでなく、家電ストアも多く出店がされており、関数電卓も一部ストアではメガ割対象となっている。

例えば、fx-5800Pの場合、9店舗中3店舗がメガ割対象としている。
![qoo10mega1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/8cf25850-2c01-44a2-b5bd-ab65230e61ac.png)
ただしメガ割だからといって他店より安くなるとは限らない。元々の販売価格にも注意が必要である。

見てもらえばわかる通り、ヤマダ電機Qoo10店がメガ割対象としており、群を抜いて安くなっている。お買い得だ。
（なお、3月のメガ割時は販売価格が7400円台とさらに安かったため、5900円台で購入できた）

ヤマダ電機Qoo10店に絞って関数電卓を見てみると、
![qoo10mega2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/2340d592-6c96-4b08-ae1a-3a3ebe79827e.png)
- キヤノン F-605G 919円
- キヤノン F-715SA 1280円
- カシオ fx-290A 1345円
- キヤノン F-715SG 1417円
- カシオ fx-375ESA 1730円
- カシオ fx-JP500CW 2409円
- カシオ fx-72F 3723円
- カシオ fx-JP900CW 4289円
- カシオ fx-5800P 6082円

がメガ割対象となっている（価格は記事公開時点、変動の可能性あり）。

ヤマダ電機Qoo10店の場合、一部機種は対象となっておらず、また1回の購入金額が3300円未満の場合送料が別途必要になる。
とはいえ、メガ割対象機種はアマゾンと比べても格安になるため、この機会にお目当ての関数電卓を買ってみてはいかがだろうか。
（私もメガ割の度にfx-5800Pを購入しようか迷っていたが、今回ついにポチった→直後に完売…）

追記：Qoo10メガ割に合わせてアマゾンも値下げやクーポン値引きをすることがある。
fx-5800P、fx-JP900CW、fx-JP700CW、fx-JP500CWに対しては2025/5/31現在5%引きクーポンが配られており、これを適用するとfx-5800Pは7004円で購入することができる。
![qoo10mega3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/b035e1dc-e9c8-4b16-aca5-51546aa3462c.png)
![qoo10mega5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/30fabde7-8881-49a7-9fcc-7ed281a3c6b3.png)
![qoo10mega6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/19e41613-43a0-423c-8f9e-e3984571d485.png)



![qoo10mega4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/20857336-262a-42e2-aa15-80e9226fcdf6.png)