OmniAICreator/Qiita-1.07M huggingface dataset:
ChatGPTの「サボり」とハルシネーションを掘り下げる　― J1在籍年数カウントを題材に “AIコスパ病” とプロンプト設計の落とし穴を解説 ―

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4006596/6c5e1d0f-9b8d-4073-a8ee-acaaad993a3a.png)


先日、こちらの記事を作成するにあたって、ChatGPTに集計を手伝ってもらいました。
でも、正しい数字ではありません。なぜ！？　その時に起きた、紆余曲折をまとめてみました。


https://note.com/comty/n/n66a1d843d469

> **サマリ**  
> J1在籍チームを知りたいと思ってAIに質問。1993–2025年のJ1在籍年数カウントという一見単純なタスクで、LLM は「更新が止まった古い情報」を参照したまま、直近3年分（2023〜2025）を丸ごと欠落させました。
背景には、計算コストを抑える“最短経路回答”志向（AIコスパ病）と時間推論の弱さ、さらにはハルシネーションのリスクがあります。
本記事では、プロンプトと回答のやり取りを「5つのなぜ」で深掘りし、プロンプト設計と検証のベストプラクティスをまとめます。

---

## 1. 会話ログで見る「抜け漏れ」発生プロセス
| シーン | ユーザー意図                         | ChatGPTの行動                          |
| ------ | ----------------------------------- | -------------------------------------- |
| ①      | 「J1在籍クラブ全部挙げて」           | 2025年の所属クラブ＋過去の参加クラブを列挙 |
| ②      | 「在籍年数カウントして」             | 1993–2022年版の累計表を元に集計         |
| ③      | 「2023〜2025年は含まないの？」       | 「2022年まで更新の表を使ったため」と説明  |
| ④      | 「1993–2025年で再計算して」          | “+1年ずつ加算”の簡易計算のみ実施       |

> **ポイント**  
> - 最新クラブ一覧は正しく取得しつつも、年数カウントでは“更新停止ソース”のみを使い続けた  
> - 追加検証を省略し「+1年」で済ませたことで誤答が発生

---

## 2. 5 Whysで深掘り ― 真因は「AIコスパ病」
| WHY  | なぜ？                                  | 原因                                                                 |
| ---- | --------------------------------------- | -------------------------------------------------------------------- |
| 1    | なぜ2023-25が抜けた？                  | 参照したサイト情報が2022年までしか更新されていなかった                |
| 2    | なぜその表だけを使った？                | “手近な一次ソース”として最も手軽に見つかったため                       |
| 3    | なぜ追加検索や検証をしなかった？        | “既存知識＋静的表”で十分と判断し、コスト（検索・検証）を節約した         |
| 4    | なぜ推論だけで安心した？                | LLMは時間推論が苦手だが、自身の推論精度への過信があった                 |
| 5    | なぜ検算ルールをプロンプトに組み込まなかった？ | “出力だけ最適化”する設計になりやすく、検証フェーズを設計から省いた結果  |

> **真因まとめ**  
> - LLMの「低コスト回答」志向（AIコスパ病）  
> - 時系列データの扱い不備  
> - プロンプトに検算／検証フェーズが欠如  

---

## 3. モデル側のメカニズム
### 3.1 “AIコスパ病”とは
- LLMは毎トークン生成で計算リソースを消費するため、**最短経路のもっともらしい応答**を優先しがち。  
- その結果、外部検索や検証を省略し「手持ちの知識＋単純推論」で済ませる傾向がある。

### 3.2 ハルシネーション
- 自信度は高いが根拠が薄い応答が混入しやすい。  
- 特に数値や時系列の計算では、**事実確認抜きで生成**されることが多い。

### 3.3 時間推論の弱点
- カレンダー計算や期間演算はLLMの弱点領域。  
- 静的データと動的シーズンの組み合わせで不整合が発生しやすい。

---

## 4. プロンプト設計 ─ 5つの鉄則
1. **期間・定義を冒頭で固定**  
   - 例: `1993–2025年のJ1在籍年数を、昇降格履歴を考慮して厳密に集計せよ`  
2. **データソースを複数指定し“最新版”を必須化**  
   - `公式JリーグDataSite`、`Wikipedia最新シーズン`、`RSSSF`など並行参照  
3. **検算ルールをプロンプトに埋め込む**  
   - 例: `総在籍年数 が (シーズン数 × クラブ数) と一致することを検証せよ`  
4. **5 Whys をセルフクエリへ組み込む**  
   - `なぜそのソースだけで十分と言えるのか？` を繰り返し自問  
5. **ハルシネーション警告を義務化**  
   - `不確かな場合は "N/A" と回答せよ` などの制約を追加

---

## 5. チェックリスト & コード例
    # 検算用: club_years は {クラブ名: 年数} の dict 前提
    total_years = sum(club_years.values())
    seasons = 33  # 1993〜2025 のシーズン数
    assert total_years % seasons == 0, "年数総和がクラブ数×シーズン数と一致しません"

上記の**自動アサーション**を入れることで、計算ミスやデータ不整合を早期に検出できます。

---

## 6. まとめ ― “AIまかせ”にしないために
- **LLMはコスト最適化で“手抜き”を選びがち**。静的情報の鵜呑みは危険。  
- **ハルシネーションは前提**とし、検証フェーズをプロンプトに組み込む。  
- **数値・時系列の処理は特に要注意**。複数ソース検証＋検算コードで裏を取る。  
- 最後にもう一度――**「なぜ？」を最低3回**。5 Whysの習慣化でAIの“サボり癖”を叩き直しましょう。

-----
プロンプトエンジニアリングとしては初歩の初歩かもしれませんが、結構陥りがちなポイントが見えてきました。
今後のAIとの付き合いの一助となりましたら嬉しいです。

ご意見、コメントなどお待ちしています！
星を愛する人のための「光害マップ2025」完全ガイド

> こんにちは、星空ファンとテック好きの皆さん！もし天の川を探そうとしても都市の明かりにかき消された経験があるなら、きっと気に入るツールがあります。それが「[光害マップ（Light Pollution Map）](https://lightpollutionmap.app)」。

このスタイリッシュなWebアプリは、**天文ファンや天体写真好きの必携アイテム**。クリーンなUIと信頼性の高いデータを備え、**最高の星空スポット**を見つけるのに役立ちます。今回は、このツールがなぜ革新的で、開発者や観測者にとってどれほど便利なのかを紹介します。

![光害マップ（Light Pollution Map）](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091821/63dfec9d-03a7-4474-9d7d-02c229c6988d.jpeg)

---

## [光害マップ](https://lightpollutionmap.app) って何？

「光害マップ 2025」は、NOAAのVIIRS衛星データや「2015 World Atlas of Artificial Night Sky Brightness」などを元にした**インタラクティブな光害マップ**です。Googleマップの星空版ともいえる存在で、[ボートルスケール（Bortle Scale）](https://lightpollutionmap.app)（クラス1が最も暗い、クラス9が都市レベル）や[SQM（Sky Quality Meter）](https://lightpollutionmap.app)の測定値を元に、どこが本当に暗い空なのかを示してくれます。

**日中はコーディング、夜は星空探し**という方にはぴったりな旅のお供です。

---

## なぜ注目されるのか？

**光害（Light Pollution）はすべての観測者の敵**です。星が見えにくくなり、星座や天の川の写真撮影も困難になります。
[光害マップ](https://lightpollutionmap.app)は、**低光害スポットを正確に特定**できるため、都市近郊でも遠隔地でも最適な観測地を見つけることができます。しかも**無料＆広告なし**で、誰でも使えるのが魅力です。

---

## 観測者＆開発者に嬉しい機能一覧

**光害マップ 2025** の主な特徴：

* **[ボートルスケール](https://lightpollutionmap.app)**：その地点の空の暗さ（1〜9）をすぐに確認可能。
* **[SQMデータ](https://lightpollutionmap.app)**：空の明るさを「mag/arcsec²」で科学的に表示。
* **ダークスカイ探索機能**：住所入力またはIPベースの現在地から近くの観測スポットを検索可能。
* **天体写真対応**：天の川撮影のための**最適なロケーション選定**にも役立つ。
* **モバイル最適化**：スマホ対応は完璧で、**オフライン用の「StargazingHub」アプリ**も提供中。

**開発者にとっても見どころ満載**。レスポンシブで直感的なUIはWeb開発の優れたお手本であり、将来的にはオーロラ予報機能や、観測データ共有のコミュニティ機能も計画されています。

---

## 使い方は簡単

[光害マップ](https://lightpollutionmap.app) にアクセスし、マップをズームして観測地を探すだけ。ボートル等級やSQM値を確認して、理想の観測ポイントを見つけましょう。遠方に出かけるなら\*\*「StargazingHub」アプリ\*\*を使えば、オフラインでもアクセス可能です。

**完全無料で、どんなデバイスでも快適に使える**のも高ポイントです。

---

## なぜ使う価値があるのか？

筆者は開発者でもあり観測者でもありますが、[光害マップ](https://lightpollutionmap.app)は、**実用性と美しさの両立したツール**だと感じています。夜空の下に出かける前の簡易チェックにも、天体写真の計画にも役立ちます。

さらに無料で、今後も改善予定（オーロラ予報、コミュニティ機能など）があるのはうれしい限り。

初心者にとっては、ボートルスケールやSQMといった**光害の基礎を学ぶ手助け**になりますし、上級者にとっては**信頼できる観測地スカウトツール**になります。開発者にとっては、**ニッチな趣味をテクノロジーで支援する好例**として参考にもなるでしょう。

---

## まとめ

[光害マップ](https://lightpollutionmap.app)は、より良い星空体験へのパスポート。科学、テクノロジー、宇宙への愛が詰まった**美しいツール**です。

**日中はコードを書く人も、夜は星を見上げる人も**、一度試してみてはいかがでしょうか？
きっと、**本物の天の川**に出会えるはずです。
Cursorから遠隔でWindowsPCのWSLを操作する方法

# 概要
Cursorから遠隔でWindowsPCのWSLの中にあるフォルダにアクセスしたい。
VScodeとやり方はほぼ一緒のはずだが、何ヶ月か前は試しても出来なかったので、リベンジした
ちなみに普通に遠隔で操作すると、大学のネットワークに弾かれているのでtailscaleを使ってVPN接続している。多分SSH接続なのでtailscaleを使わなくてもいけそう。
# 環境
操作する側: Mac M2, macOS Sequoia Version 15.4.1
遠隔操作される側: Windows11, wsl2 

# 全体構成
```
Mac (Cursor) ──SSH:2222──► Windows (Tailscale IP <TAILSCALE_IP>)
                            │
                            └─portproxy 2222 ► WSL:22
```

# WSL (Ubuntu 等) 側セットアップ
```terminal:terminal
# WSL 内で
sudo apt update
sudo apt install -y openssh-server

# systemd 有効化
echo -e "[boot]\nsystemd=true" | sudo tee /etc/wsl.conf
wsl --shutdown         # Windows PowerShell で

# sshd 自動起動
sudo systemctl enable --now ssh
```
```/etc/ssh/sshd_config``` で最低限以下を確認・変更し、```sudo systemctl restart ssh```。

```config:conf
Port 22
ListenAddress 0.0.0.0
PasswordAuthentication no   # 公開鍵のみ推奨
```
# Windows ホスト側 (管理者 PowerShell)(再起動で IP が変わったら再実行)
## WSL IP を取得
```powershell:Powershell
$wslIp = (wsl hostname -I).Split()[0]
```
## portproxy を張る 
```powershell:Powershell
netsh interface portproxy reset
netsh interface portproxy add v4tov4 `
    listenaddress=0.0.0.0 listenport=2222 `
    connectaddress=$wslIp connectport=22
```
## ファイアウォールで 2222/TCP を許可
```powershell
netsh advfirewall firewall add rule name="WSL SSH 2222" `
    dir=in action=allow protocol=TCP localport=2222 `
    profile=domain,private,public
```
2 行目のスクリプトをタスクスケジューラの「ログオン時」に登録すると、WSL IP が変わっても自動更新されるらしい。

# Mac 側
## SSH 鍵を用意 & WSL へ登録
```bash:bash
ssh-keygen -t ed25519 -C "wsl-tail"
ssh-copy-id -p 2222 <WSL_USER>@<TAILSCALE_IP>   # 初回のみパスワード入力
```
## ~/.ssh/config
```sshconfig:ssh/config
Host wsl-tailscale
  HostName     <TAILSCALE_IP>   # 100.x.x.x
  User         <WSL_USER>
  Port         2222
  IdentityFile ~/.ssh/id_ed25519
  ServerAliveInterval 30
```
## 接続確認
```bash:bash
ssh wsl-tailscale   # パスワード無しでログインできれば OK
```
# Cursor から Remote-SSH
1. ⌘⇧P → Remote-SSH: Connect to Host…
2. ```wsl-tailscale```を選択 → “Linux” プラットフォームを選ぶ
3. ステータスバーが```>< SSH: wsl-tailscale```になれば成功
4. 好きなフォルダ (例 ```/home/<WSL_USER>/project```) を開いて開発開始
# Tailscale ACL 例 (必要に応じて)
```jsonc:jsonc
{
  "ACLs": [
    {
      "Action": "accept",
      "Users": ["*"],
      "Ports": [
        "<TAILSCALE_IP>:2222"
      ]
    }
  ]
}
```
管理画面で Save & Apply すると数秒で反映。

# トラブルシューティング速攻メモ
症状	確認ポイント
・```ssh: connect … timed out``` → ① IP/ポート誤り ② portproxy 未設定 ③ FW or ACL
・```Permission denied```	鍵未登録```ssh-copy-id```、```authorized_keys``` 権限 600
・Cursor で接続候補が出ない → ```~/.ssh/config```の保存場所＆ファイル名
・windows側でcursorを開いない
・cursorを開いたが、ターミナルなどでwslに接続していない

以上で Mac → Tailscale → Windows → WSL2 の開発環境が完成しました。
VSCodeでUnity/C#の補完(IntelliSense)が効かなくなった時に試すこと

UnityのエディタとしてVSCodeを使っていると、ちょこちょこ補完が効かなくなります（もう慣れた）

その復活手順をメモします。動作環境はMacです

### 拡張機能をアップデートする
以下４つの拡張機能が古ければアップデート
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323576/bd561aee-5769-4503-ab16-72d6cbda0b56.png)

### .NET SDKをアップデートする
cmd + shift + p を入力し、コマンドパレットに[Install New .NET SDK]を入力し実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323576/2b5b4657-5467-4661-b5de-765187eb6fb6.png)

Installを押して最新のSDKをインストールする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323576/cd02f320-4655-4a79-a8df-2e49c14544ec.png)

多分不要ですが、`sudo rm -rf /usr/local/share/dotnet`を実行してあらかじめ古い.NETを削除するのも有効

### .sln/.csprojファイルを再生成する
プロジェクトフォルダ直下にある .sln/.csprojファイル を全て削除する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323576/d1e76e71-8a35-4565-b143-4920ea82289e.png)

Unityでメニューバーより Edit > Preferences で設定を開き External Tools に移動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323576/10dd0258-c2df-4b44-aa49-1d77becb2d66.png)

[Regenerate project files]を実行すれば再生成される

チェックボックスは入れなくても動くはずだが、とりあえず全部チェック入れるでもOK

### VSCodeを再起動する

直ってるはず

# 上記で解決しない場合

### 古い拡張機能を使う
まれに最新の拡張機能で動作しない場合もあるので、その場合は古い拡張機能をインストールする

拡張機能の歯車マークから [Install Specific Version...] を選択し前のバージョンを入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323576/d138a62b-e9d4-45bf-ae44-a2d09b80866a.png)


### ~~Riderをつかう~~

# 注意
VSCodeのC#の補完にはC# Dev Kitが使われますが、昔はOmniSharpという仕組みが使われていました。
昔の記事や生成AIに頼るとomnisharpに関する設定を求められることがありますが、それらは現在行う必要がなく却って動作不良の原因になります。

今サポートされているUnity(2021以降)を使用する場合、基本的に拡張機能の設定を触る必要はありません。
要素の挿入　spliceの使い方

今回挑戦したのは【指定位置に要素を挿入する】という、配列操作の基本中の基本！


## <br>🎯問題概要

- 1行目で「N, M, K」が与えられる（配列の長さ、挿入位置、挿入したい値）

- 2行目にN個の整数が並ぶ配列が与えられる

- この配列の「M番目」に「K」を挿入し、1要素ずつ改行で出力せよ
<br>

入力例:

    5 3 10
    1 2 3 4 5

出力例:

    1
    2
    10
    3
    4
    5
<br>

https://paiza.jp/works/mondai/array_primer/array_primer__elm_insert


## <br><br>🛠️解き方

配列に挿入するには `splice()` を使うのがベスト！
```
配列.splice(挿入位置index, 削除数, 挿入したい値);
```

今回は `M` 番目に `K` を入れたいので、インデックスは `M-1`、削除はなしで `0` にする。

## <br>✅OKコード例

```js
const rl = require('readline').createInterface({ input: process.stdin });
const lines = [];

rl.on('line', (input) => {
    lines.push(input);
});

rl.on('close', () => {
    const [N, M, K] = lines[0].split(' ').map(Number);
    const arr = lines[1].split(' ').map(Number);

    // M番目（インデックスM-1）にKを挿入
    arr.splice(M - 1, 0, K);

    // 各要素を改行区切りで出力
    arr.forEach(num => console.log(num));
});
```
<Br><br>

## 気づきメモ

- `splice` は `0` から始まるインデックスを意識しないとズレる。
- `push` や `unshift` では位置を指定できないのでこの問題には向かない。
- `splice` は「挿入・削除・置換」何でもできる！

<Br>

## 🆕新しく学んだこと：spliceの用法まとめ

![スクリーンショット 2025-05-18 091158.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4018208/2c6fdc63-59fc-4835-8e78-fdd3816ddf19.png)

⚠注意：spliceは元の配列を直接変更します！（非破壊じゃない）


<br><br><br>[僕の失敗談(´;ω;｀)と解決法🐈](https://paizabeginner.wordpress.com/%e8%a8%98%e4%ba%8b%e4%b8%80%e8%a6%a7/)
【GitHub】Dependabotについて

# 記事概要
DependabotというGitHubのツールについて、まとめる

# 前提
- アプリケーションはGitHubに登録済みである

# Dependabotとは
GitHub上で自動的に機能しており、脆弱性が報告されているライブラリ(Gem)の使用を指摘すると共に、新しいバージョンへ更新するよう促してくれるもの

# 対応
GitHubで、脆弱性を解消するためのバージョン更新用ブランチとプルリクエストが自動作成される
【README】README.mdについて

# 記事概要
READMEについて、まとめる

# 基本情報
## ファイル
README.md

## 記載方法
マークダウン記法
記述方法は、[こちら](https://qiita.com/Qiita/items/c686397e4a0f4f11683d)を参照

## ファイル確認方法
マークダウンが反映されているかどうかは、GitHubで確認できる

## サンプル
https://github.com/likapantrip/furima-41468/blob/main/README.md

# 記載内容
## アプリケーション名
名称を記載

## アプリケーション概要
### 目的
どのような問題を解決しようとしているのか、どのような価値を提供しようとしているのかを明確に記述する

### 主要機能
主な機能や特徴を簡潔に説明する

### 使用する技術
使用している言語、フレームワーク、ツールなどをリストアップする

## 使用方法
### 基本的な使い方
プロジェクトを実際に使用する方法を、具体的な手順とともに説明する

### コマンドや設定
使用するコマンドや設定ファイル、環境変数などを説明する

## インストール方法
### 環境構築手順
開発環境を構築するために必要な手順を、詳細に説明する

### 依存ライブラリ
使用する依存ライブラリやパッケージをリストアップし、インストール方法を説明する

### セットアップ
セットアップするために必要な手順を説明する

### テスト用アカウント
ログイン機能等を実装した場合、ログインに必要な情報を記載する
Basic認証等を設けている場合は、そのID/Passも記載する

## ライセンス情報
### ライセンスの種類
使用するライセンスの種類(MIT、Apacheなど)を、明記する

### 利用規約
ライセンスの利用規約を記載する

## データベース設計
### ER図
ER図を添付する
作成方法は、[こちら](https://qiita.com/likapantrip/items/93bdf449e57a311d40e2)を参照

### 画面遷移図
画面遷移図を添付する

### テーブル設計
テーブル設計について、記述する

#### 記述すべき項目
- テーブル名
- カラム名
- カラムの型
- カラムのオプション（NOT NULL制約など）
- アソシエーション

#### 注意点
- クレジットカード情報はDBに保存しない
    →国際的な取り決めとして定められている
- パスワードのカラムは一つにまとめる(確認用カラムがある場合)
- Railsの場合
    - パスワードのカラム名は`devise`で用意されている`encrypted_password`を使用する
    - `has_one_attached`メソッドで紐付ける画像は、DB設計対象外
    - `active_hash`で実装するカラム
        - integerを指定
        - 「単数系_id」
    - integerは0から始まる整数を識別できない
        →電話番号などは、string型

```README.md
# テーブル
## usersテーブル

| Column                | Type       | Options                        |
| --------------------- | ---------- | ------------------------------ |
| email                 | string     | null: false, unique: true      |
| encrypted_password    | string     | null: false                    |
| nickname              | string     | null: false                    |
| last_name             | string     | null: false                    |
| first_name            | string     | null: false                    |
| last_name_kana        | string     | null: false                    |
| first_name_kana       | string     | null: false                    |
| birthday              | date       | null: false                    |

### Association
- has_many :items
- has_many :orders
```

# チェックリスト
- 文章
    - 誤字・脱字がない
    - 「です・ます調」か「だ・である調」のどちらかに統一されている
    - 1文が短く簡潔に記載されている
    - 説明が長い項目はリスト化や改行を行い、読みやすくなっている
    - マークダウンが正しく適用されている
- 画像・GIF
    - 正しく反映されている
    - 最新の情報になっている
- アプリケーション
    - 最新のコードをコミット・プッシュしている
    - 作業ブランチをmasterブランチにマージしている
    - 記載のアカウント情報でログインができる
【色変記事】AtCoderで入緑しました！

ABC391で入緑したのでどれくらい精進したかや何を考えていたかを記事にしてみようと思います。

## レート推移
レート推移はこんな感じでした。茶色の瓦が4枚になったのが2024/6/8で入緑したのが2025/2/1なので半年強レートが700台で停滞していました。苦しかった。。
![スクリーンショット 2025-0
5-18 221228.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/550181/ef79e010-5764-4a09-aa8c-0e5f0e01243e.png)

## AtCoder Problems 情報
![スクリーンショット 2025-05-17 225841.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/550181/03487796-64f9-4172-b0ce-85c99729a46a.png)

![スクリーンショット 2025-05-17 225850.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/550181/4af82743-edc2-49f6-a672-30a4d17adc14.png)

## 停滞から脱却するために考えていたこと
ポイントは二つ
1. 茶 diff の問題を落とさない！
1. 自分のレートと同じくらいの diff の問題を解く

です！

停滞期初期は 700~900 diff くらいの問題はある程度解けるようになってきたから緑 diff の問題を解こうと考え、1000 diff ~ の問題を解いていたのですが、ハードルが高くほとんどの問題を解説 AC しながら精進をしていました。

しかし、このやり方では一問解くのにかなり疲れるし、考察のハードルの高さから実力が上がってる感覚もなかったので上手く実力が付きませんでした。

ABCで緑 perf を出すためには C 問題までをめちゃくちゃ早解きするか D 問題を解く必要があり、今の自分には早解きの実力を伸ばす方がいいんじゃないかなと考え、茶 diff の問題や高くても diff 800 くらいの問題を精進するようにしました。

そうすると、簡単な考察は徐々に素早くできるようになってきて、さらにちょっと難しめの考察をする余裕も出てきて緑 perf を安定して出せるようになってきました。

こんなことを考えながら精進を続けた結果入緑できました！
【エクセルとサクラエディタで作成する】CSVの各データをダブルクォテーションで囲む方法【備忘録も兼ねて】


CSVをエクセルファイルで開き大量のCSVデータを作成する際、エクセルファイルで作成する機会があると思います。

例えば連番を付与したCSVを作成したいときはエクセルを使用すると便利ですよね。また、CSVデータは各データをダブルクォテーション（例　=> "あいうえお"）で囲んで表示することがほとんどです。
しかし、エクセルでCSVデータを量産したのちに、テキストファイルで開くと書くデータがダブルクォテーションで囲まれず表示されたことはありませんか？

CSVのデータが10行程度であれば一つ一つダブルクォテーションで囲っていけば良いですが、100行以上であればさすがにめんどくさくなってやってられないと思います。

今回は、私の備忘録も兼ねて10行以上CSVデータに対してダブルクォテーションで囲む方法を紹介します。
※


【Excel】ダブルクォーテーションでデータを囲んだCSVファイルの作成方法
参考URL:https://nodoame.net/archives/9966
React初心者が学習歴1カ月でTODOアプリを開発できた話：勉強迷子だった自分がWebアプリを作れるようになるまでの記録

## ✅ この記事を読んでほしい想定読者
* プログラミングを始めてみたけど何からやればいいか分からない
* 勉強が続かない、やる気が維持できない
* Reactって難しそうで手が出せていない
* 実際に成果物を作ってみたいけど自信がない
* 将来Webフロントエンドの仕事に就きたい

## 1. はじめに：モチベが続かなかった自分へ

### ■自己紹介（学習歴・バックグラウンド）
組み込みエンジニア3年目で、仕事で少しHTML/CSS, JavaScriptを使用して画面を作った程度。プログラミングの基礎は割と出来ている状態です。
とにかく完成させるのが遅く、一つ一つの仕事に時間がかかるそんな人間です。
自己紹介は⇩でもやってます(^▽^)/

https://qiita.com/Tomoboo_319/items/5694cb4374a29e0c8dcf

このアプリを作れるようになるまでは「最初はReactどころかJavaScriptも感覚で書いていた」状態でした。
### ■なぜReactに挑戦しようと思ったのか？
モダンなWebアプリ開発が出来るようになりたいというのと、やはり自分が書いたコードがすぐに反映されるフロントエンド開発は組み込み開発と比べて憧れだったからです。

### ■読者へのメッセージ
こんな私でも1カ月で出来るようになったので、プログラミングが好きな方は正しい勉強方法をすれば一瞬で上達します！！

## 2. 1カ月でやったこと

- 学習スケジュールのざっくりした流れ
    - 1～2週目：UdemyでReact基礎, TypeScript基礎の動画教材をそれぞれ1教材だけ見る
    - 2～3週目：インプットは程々にして、まずはデザインなどは拘らずシンプルなTODOアプリをReactで作ってみました。ここでCI/CDやデプロイなども経験し、React Testing Libraryを使用したテストも実装しました。
    - 3週目：React × TypeScriptでもう一度、TODOアプリを次はデザインに拘って作成しました。ここで React Hook Form や cakra ui v2 を使用して追加の機能を段階的に実装していきました。

-  学習時間
    -  平日2～3時間／休日6時間以上
    -  もちろん作業ができない日もありましたよ！
-  TODOアプリを作りながらやったこと
    -  分からない時はReact公式ドキュメントを読む  
    -  5分考えて分からないことはAIに聞く


## 3. 初めてのReact：右も左も分からなかった話

* 初めて書いたReactコードの感想（「意味不明だった」）
* JSXって何？コンポーネント, useStateって何？状態管理って？
* Reactってどういう特徴・メリットがあるの？どんな仕組み？わからん！！

実際にReactを書くことに慣れ理解が進むほど、JavaScriptを書いていた身としては、革新的すぎて嬉しさが込み上げた。

## 4. TODOアプリを作った！：できるようになったこと

### 完成したTODOアプリ
TODO登録、編集＆保存、削除ができるアプリを作成しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779353/4fb8c2dd-05e6-4ce0-b915-2e738f1f7c2d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779353/ee37e859-1b85-4473-bd8a-2f48e530b384.png)


* 主に学んだこと・できるようになったこと

  * コンポーネント分割
機能ごとにコンポーネント化した方が良いかどうかの判断ができるようになりました。
  * 状態管理・Hooks（useState, useEffect）
ステートの扱い方と、ステートとレンダリングの関係を理解することができました。このアプリを通してステート化が必要な状態の切り出し、無駄なレンダリングをしない実装が出来るようになりました。  
  * propsの受け渡し
最初はpropsってなに？という状態から親コンポーネントから子コンポーネントに適切なpropsを渡せる実装が出来るようになりました。
  * 最低限のCSS
ReactでのCSSの扱い方とchakra ui のようなCSSフレームワークを使えるようになりました。CSSフレームワークは公式ドキュメントをしっかり読むことが大事！！

## 5. 学習で意識したこと・やってよかったこと

* インプットよりアウトプット重視（※これが一番重要）
* 最初から完璧を目指さない（とりあえず動かす）
* エラーを怖がらない（※これも大事なんですよね～）
* 小さくても「動くもの」を作るモチベ
* SNSやコミュニティを活用（XやQiitaでのアウトプットなど）

とりあえず、最初は簡単かつ完璧を目指さないモノから作ることが大事と学びました。
そして段階的に理解を進めることが重要で、インプットは程々にしてアウトプットとしてコードをガリガリ書いてどんどん開発を進めることが成長の鍵ですね✨

### ★個人的な開発のコツ
考えすぎても、モチベが下がってしんどいので今の時代はAIに聞いちゃいましょう～。
もし思いつかない場合はさっさとAIに聞いて、解決すること！
→ 後で自分なりに理解すること。これが回りまわって効率の良い学習になっていると思います！！
※ただ、聞きすぎは良くない（笑）

## 6. しんどかったこと・乗り越えた方法

* 理解できない用語ばかりで挫折しかけた
* 「自分だけ進歩が遅い」と感じて焦った
* モチベが切れそうになったときに支えになったこと（同じように頑張る仲間がいることでやる気が出る）

速く成長したいと焦りがちですが、立ち止まってAIと公式ドキュメントを行ったり来たりすることが大事ですね！！

## 7. 今後の目標と伝えたいこと

* これからやってみたいこと（個人開発、API連携、TypeScript、Next.jsなど）
* Reactでアプリを作れたことで得た自信
* 「できるようになるまで続ける」が一番大事
* 読者へのメッセージ：「あなたもまずは小さな1歩から」

# JISOUのメンバー募集中！
プログラミングコーチングJISOUでは、新たなメンバーを募集しています。
日本一のアウトプットコミュニティでキャリアアップしませんか？
興味のある方は、ぜひホームページをのぞいてみてくださ！
▼▼▼

https://projisou.jp
AWS SAM（Serverless Application Model）とは

## AWS SAM（Serverless Application Model）とは 

AWS SAM (Serverless Application Model) は、AWS上でサーバーレスアプリケーションを構築・管理するためのオープンソースのフレームワークである。CloudFormationの拡張として機能し、より簡潔な構文でLambda関数、API Gateway、DynamoDBなどのサーバーレスリソースを定義できる。また、ローカルでのテストやデプロイを支援するCLIツールも提供しており、サーバーレス開発の効率を大幅に向上させる。

### なぜAWS SAMが必要なのか

従来のCloudFormationでもサーバーレスリソースの構築は可能であったが、各リソースの設定が詳細にわたるため、記述が冗長になりがちであった。例えば、Lambda関数を定義する場合、関数本体のコードだけでなく、実行ロール、ロググループ、イベントソースなどを個別に定義する必要があった。

AWS SAMは、このような複雑さを抽象化し、サーバーレスアプリケーションの構成要素をより直感的に記述できるようにする。これにより、開発者はインフラストラクチャの詳細に煩わされることなく、アプリケーションのビジネスロジックに集中できるようになる。

### AWS SAMの主要な要素

1.  **SAMテンプレート:**
    - CloudFormationテンプレートの拡張であり、YAMLまたはJSON形式で記述される。
    - `AWS::Serverless::Function`、`AWS::Serverless::Api`、`AWS::Serverless::SimpleTable` など、サーバーレスアプリケーションに特化した簡潔なリソースタイプを提供する。
    - `Transform: AWS::Serverless-2016-10-31` をテンプレートの `Transform` セクションに記述することで、SAMの構文が有効になる。

    ```yaml
    Transform: AWS::Serverless-2016-10-31
    Description: A simple Lambda function

    Resources:
      HelloWorldFunction:
        Type: AWS::Serverless::Function
        Properties:
          Handler: app.lambda_handler
          Runtime: python3.9
          CodeUri: s3://your-bucket/your-code.zip
          MemorySize: 128
          Timeout: 3
          Events:
            MyApi:
              Type: Api
              Properties:
                Path: /hello
                Method: get
    ```

    上記の例では、`AWS::Serverless::Function` リソースタイプを使用して、Lambda関数とそのトリガーとなるAPI Gatewayのエンドポイントを簡潔に定義している。

2.  **SAM CLI (Command Line Interface):**
    - SAMアプリケーションの開発、テスト、デプロイを支援するコマンドラインツールである。
    - **`sam build`:** テンプレートに基づいて、Lambda関数の依存関係を解決し、デプロイ可能なパッケージを作成する。
    - **`sam local invoke`:** ローカル環境でLambda関数をテスト実行できる。
    - **`sam local start-api`:** ローカル環境でAPI Gatewayのエンドポイントを起動し、テストできる。
    - **`sam package`:** デプロイに必要なテンプレートとアーティファクトをS3バケットにアップロードするための準備を行う。
    - **`sam deploy`:** パッケージ化されたテンプレートを使用して、AWS上にサーバーレスアプリケーションをデプロイする。

### AWS SAMのメリット

* **開発の簡素化:** サーバーレスリソースの定義が簡潔になり、開発者はより少ないコードでインフラストラクチャを構築できる。
* **迅速なデプロイ:** SAM CLIを活用することで、アプリケーションのパッケージングからデプロイまでのプロセスを効率化できる。
* **ローカルテストの容易さ:** SAM CLIのローカルテスト機能により、クラウドにデプロイする前にアプリケーションの動作を確認できる。
* **ベストプラクティスの適用:** SAMは、サーバーレスアプリケーションの構築における一般的なパターンやベストプラクティスを組み込んでいる。
* **CloudFormationとの統合:** SAMはCloudFormationの拡張であるため、CloudFormationの持つ柔軟性や信頼性をそのまま活用できる。

### まとめ

AWS SAMは、サーバーレスアプリケーション開発をより効率的かつ快適にするための強力なツールである。簡潔なテンプレート構文と便利なCLIツールにより、開発者はインフラストラクチャの管理に時間を費やすことなく、アプリケーションの価値創造に集中できる。こ
HTML・CSSの学び直し。float編


# floatとは　
- 要素を左または右に寄せて配置し、その反対側に後続の要素が回り込むようにした状態のこと
- インライン要素を含むほとんどの要素に指定できる！
- フロートの状態になると、ブロックボックスとして扱われる。

つまり、
→✔️**文の流れから離れて、独立した箱になる**！
→✔️もともとインライン要素でも、
　**ブロックのようなレイアウト挙動**（幅・高さが効く、改行されるなど）になる！

## ブロックレベル要素と同じなの？
🤔 ちょっと違う！
- ブロック要素ではあるけど、文の流れから除外される（＝通常のレイアウトの流れに含まれない）
- 親要素から見て、高さが計算されないこともある（＝`clearfix`が必要になる場合あり）

# 指定できる値
- `left`: 左側に寄せて配置し、その右側に後続の要素を回り込ませる
- `right`: 右側に寄せて配置し、その左側に後続の要素を回り込ませる
- `none`: フロートしていない通常の状態に戻す


# サンプルコードを使って動きを理解する
<details><summary>サンプルコード</summary>

```
/*html*/
    <p id="p1">
      <img
        src="images/sakura.png"
      />1つめの段落テキストだよ。このテキストは、横に周りこみます。このテキストは、横に周りこみます。
    </p>

    <p id="p2">
      2つめの段落テキストだよ。このテキストは、横に周りこみます。このテキストは、横に周りこみます。
    </p>

    <p id="p3">
      <img
        src="images/sakura.png"
      />3つめの段落テキストだよ。このテキストは、横に周りこみます。このテキストは、横に周りこみます。
    </p>

    <p id="p4">
      4つめの段落テキストだよ。このテキストは、横に周りこみます。このテキストは、横に周りこみます。
    </p>　

/*style*/
#p1 img {
  float: right;
}

#p3 img {
  float: left;
}

```

</details>

- `float`を設定していない状態
![スクリーンショット 2025-05-12 11.14.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627033/044aa67a-a34d-4acb-b3ea-527d4b97c6e4.png)

- `float`を設定している状態
![スクリーンショット 2025-05-12 11.14.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627033/e417c799-c081-4eb2-b6c9-bd097d8efd23.png)

| 段落 | 説明                              |
| ----- | ------------------------------- |
| `#p1` | 画像が右にフロートされる → テキストは**左側に回り込む** |
| `#p2` | 普通の段落テキスト。→p1で右寄せの画像になっており、空間が空いているので下にそのまま配置され、左側に回り込む|
| `#p3` | 画像が左にフロートされる → テキストは**右側に回り込む** |
| `#p4` |  普通の段落テキスト。→p3で左寄せの画像になっており、空間が空いているので下にそのまま配置され、左側に回り込む                 |

# `clear`プロパティ
- `float`された要素の横に、他の要素が表示されるのを防ぐためのプロパティ
- 「ここにはもう回り込まないで！下から始めて！」とブロックをかけるイメージ👊🏻

```HTML
<img src="img.png" style="float: left;">
<p>← テキストが画像の横に回り込む</p>
```
  🧐左に配置された画像の横に`p`タグが回り込むのを`clear`で防ぐことができる：
  
```CSS
p {
  clear: left;
}
```
## `claer`にとれる値について
  | 値       | 意味                          | よく使う場面                  |
| ------- | --------------------------- | ----------------------- |
| `none`  | デフォルト。何もクリアしない（回り込み許可）      | 特に設定してないとき              |
| `left`  | 左側にfloatしている要素の**回り込みを解除**  | 左floatの画像を避けたいとき        |
| `right` | 右側にfloatしている要素の**回り込みを解除**  | 右floatの画像を避けたいとき        |
| `both`  | 左右両方のfloatを**解除**（完全に下から表示） | floatされた要素の下に表示したい要素に使う |

---

未来の自分のために、誰かのためにこの記事が役に立てば幸いです✨🧚🏻
localhost:8080にアクセスできない？Mac + Colima + Dockerの罠

# 現象
後述の環境でコマンド`docker run -p 8080:80 -d nginx`を実行し、ブラウザで`localhost:8080`にアクセスしたところ、下図のエラーが発生しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3551450/e4b44d9f-b8b9-4589-9141-cb509f27793c.png)

# 環境
|項目|バージョン|
|:--|:--|
|ホストOS|macOS Sequoia 15.4.1|
|Colima|0.8.1|
|Docker|28.1.1|

# 対処
Macのシステム設定を変更することで、このエラーは解消しました。
1. `colima stop`コマンドを実行してcolimaを停止する
1. システム設定を開き、プライバシーとセキュリティ→フルディスクアクセス（下図赤枠）をクリック
![スクリーンショット 2025-05-19 17.03.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3551450/9c1fd034-4e12-4924-8854-ad40a4c766e4.png)
1. ターミナルのトグルボタンをオンにする（下図はオンの状態）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3551450/acc8eb43-f260-43d8-96f6-8ac0c55854fa.png)
1. **ターミナルを再起動して**、`colima start`コマンドを実行する
1. `docker run -p 8080:80 -d nginx`コマンドを実行する
1. ブラウザで`localhost:8080`へアクセス
![スクリーンショット 2025-05-19 17.11.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3551450/d66948b1-87a5-41f9-b3c0-abcdd33f7f56.png)
無事にnginxサーバーへアクセスできました

# 参考にさせていただいた記事

https://qiita.com/Tanachu8/items/81dc0e8fd2bf6ae21428
【個人開発】寝坊常習犯のための乗換案内アプリを作る ~API選定編~

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4033443/41a1ccd8-60c2-40c6-ba9f-88f75e517482.png)


突然ですが皆さん、**電車寝過ごし or 乗り遅れてませんか？**  
私は普段から隙があれば寝る生活をしているので、この２つに悩む人々の痛みが身に染みてわかります。笑 
今回はこれらに対するソリューションとしての乗換案内アプリを作成します。(詳しくは要件定義編で...!)  

# APIを選定する
調べてみたところ、全国の駅数はおよそ**9055駅**あるようです。  
これらの駅に関する情報を全て手動で作成するのは忍びないので、外部のAPIを頼ることにします。  

意外にも(?)駅情報や乗り換えルートを提供するAPIは色々あるようで、以下の4種類から選定しました。  

### NAVITIME API(採用)
- メリット  
    - 無料(月500回まで)
    - ライセンス取得が容易
公式ページからは法人申請のみだが、rapidAPIを経由することで個人契約が可能
    - 無料の割に機能が豊富

- デメリット
    - 無料リクエスト上限が少ない
    とはいえ回数に制限があるだけでenterprise版と変わらない機能を使用できるので、今回はこのAPIを採用
    ->もしリクエスト上限に達するまでにユーザーを獲得できたらマネタイズ手段について検討する

### ジョルダン乗換案内オープンAPI
- メリット
  - 無料(月1種類につき3000回、合計で10000回)
  - 乗換案内に必要な基本機能をサポート
    - 経路検索
    - 駅名検索
    - 路線名検索　など。
- デメリット
    - 利用用途に制約がある
      非公開アプリでは使用不可、など。
      ストアなどに公開する前提なら問題なし
    - **ライセンス取得に審査が必要**
      開設前の場合企画書の提出を求められることから、決してユルユルではない審査を通過する必要があると考えられる

    ->"乗換案内自体の実装"は想定していないのではないか、という結論に至りました。

### 公共交通センターAPI(ODPT)
- メリット
  - 無料 
    呼び出し回数については**制限がある**旨のみ明記(月1000回までという噂がある)
  - ライセンス取得が容易
    私の場合は申請から数十分で承認されました。
- デメリット
  - **経路検索機能がない**
    実は当初このAPIを採用していたのですが、いざ経路検索をしようと仕様書を読み込むと検索についてはマニュアルで実装する必要があるようです。  
    最短経路の探索には、dijkstra法やA*アルゴリズムを使えます。が、  
    - 全国各駅を頂点、移動時間を重みとする辺を持つグラフを作ると膨大になる  
    - いわゆる乗換案内アプリには経由駅指定等があるが、それらの実装が重いことが想定される
    - そもそもアルゴリズムの改善が主な目的ではない
    などの点から見送りました。

### GoogleMapsPlatform(Routes API)
- メリット
  - **自由度が高い** 
    GoogleMapと銘打っているだけあってその自由度の高さは他とは比較になりません。
    リアルタイムの交通機関情報はもちろん、徒歩や自転車での所要時間も考慮することができます。
    東京の西側など、自転車で行った方が圧倒的に早いような駅関係もある気がするのでそれを求めるアプリとかあっても面白いかなと思いました。
- デメリット
  - **有料**
  Routes APIには制限付きで無料利用可能のEssentials版とPro版がありますが、Essentials版では他APIでは取得できるリアルタイム交通情報を取得できないという問題があり、見送ることになりました。
  有料版の機能の豊富さは群を抜いているので、収益が立ちそうであればこちらのAPIを用いるように改修するかもしれません。


以上のように当面はNAVITIME APIを用いて開発していくことになりました。
次回は要件定義編を予定していますが、バックエンド開発で詰まったところがあればまた記事にするかもしれません。
アプリ完成までの過程は基本的に全て記事にする予定なので、お楽しみに...！




参考: https://qiita.com/Skyryo/items/17d48142b3ff94cc8bb0
YouTube動画をMP3に変換する方法【初心者向けガイド】

MP3に変換するメリット

	•	🎧 音声のみを楽しめる：動画を見る時間がないときも、音声だけで十分。
	•	📱 オフライン再生可能：通勤中やデータ通信量を節約したいときに最適。
	•	💾 デバイスの容量を節約：音声ファイルは動画よりもはるかに軽量。
	•	🗣️ 語学学習や講義の復習に便利：繰り返し聞いて学習効率アップ。

変換手順（たったの3ステップ）
	1.	変換したいYouTube動画のURLをコピー
	2.	オンライン変換サイトにアクセス
	3.	URLを貼り付けて「MP3」を選択し、変換＆ダウンロード

最近では、特別なソフトを使わずに、オンラインで素早く変換できる便利なサービスが増えています。

どの変換サイトを使えばいい？

変換サイトを選ぶ際は、以下のポイントをチェックしましょう：
	•	広告が少なく、迷わず操作できること
	•	高音質のMP3が素早くダウンロードできること
	•	ウイルスの心配がない、安全なサイトであること
	•	スマホでもパソコンでも使いやすい設計

そういった点で、最近利用者の間で評価が高まっているのが ytmp3.love![mp#.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091692/f250b263-6e66-47a1-9f6f-584c04b2bf77.png)
 です。
シンプルで直感的な操作性と、変換の速さが魅力のオンラインツールで、初心者でも安心して使えます。

⸻

まとめ

YouTube動画をMP3に変換すれば、音楽や学習コンテンツをもっと自由に楽しめるようになります。信頼できる変換サイトを使えば、わずか数クリックで、お気に入りの音声を手元に保存できます。

音声だけで楽しみたい瞬間があるなら、ぜひ一度試してみてください。
Condaを使わずにPythonCall.jlを使う

PythonCall.jlはPyCall.jlに並ぶpythonパッケージをjuliaと言う別の言語で利用するjuliaパッケージである．

以前，[既存condaを使ったPythonCall.jlの利用を模索](https://qiita.com/kasugab3621/items/1071de1a349f3b8a9f8c)したが，anacondaは有償化し使えない場合があると言うことで，conda(mamba)を使わずにPythonCall.jlを使う方法をまとめておく．

## python3のインストール
割愛，OSに合ったパッケージマネージャを使うと良いでしょう．

## 仮想環境とpythonパッケージ
仮想環境の構築には公式で開発されているvenvを使う．新規作成する場合は任意の名前をつける必要がある．ここではjuliapyとする．

```bash
python -m venv juliapy
```

sourceでactivateする．

```bash
source ./juliapy/bin/python3
```

pipでpythonパッケージをインストールする．
```bash
(juliapy)$ pip install matplotlib
```

一応deactivateしておく（julia起動時にactivateする必要はない）
```bash
(juliapy)$ deactivate
```

## 環境変数の設定
.bashrc（または.zshrcなど）に以下を追記．`export`は利用するシェルに合わせて変更してください．

```bash:.bashrc
export JULIA_CONDAPKG_BACKEND="Null"
export JULIA_PYTHONCALL_EXE=/path/to/juliapy/bin/python3
```

`JULIA_PYTHONCALL_EXE`に既存の仮想環境を使っても構わない（oi_ken風）し，もはや仮想環境を使う必要もない．

sourceして環境変数に設定する．

```bash
source ~/.bashrc
```

## PythonCall.jlのビルド
julia REPLを起動し，Pkgモード（]）でadd

```julia
pkg> add PythonCall
```

完了したらbuild
```julia
pkg> build PythonCall
```

これで終了:beer:

新たなpythonパッケージをインストールしたいときは，環境変数に設定した仮想環境をactivate(source)してpip installすれば良い．

## 使い方
```julia
using PythonCall
plt=pyimport("matpoltlib.pyplot")
```
JavascriptからJSONファイルを参照するWEBサービスをローカル環境だけで動かしたい（初心者向け）

### ちまちまとプログラムを書き、Github pagesで公開する

自分用に生成AIを使いJavascriptで西暦・和暦変換処理などをちまちま作っていたところ、新しいサービスでマスタ的なファイルを参照しようとJSONファイルを準備した所、Javascriptではローカルのファイルを直接参照出来ないということが判明し、そのためテスト時にもわざわざGithubのパブリックなリポジトリにおいたりGoogle CloudのCloud Strageにファイルを置いてそこを参照させたりしてました。

で、そのうちローカルテストで使ったファイルをアップロードする処理がめんどくさくなったので、何か他の手段はないかといろいろ調べてたら、Python環境があるマシンではコマンド一発でカンタンなサーバ機能を立ち上げる事ができると知ってやってみたら便利だったので、忘れないようにそれについて書いときます。

### 起動方法はカンタン

起動はカンタンで、まずは作成した表示したいindex.htmlがあるディレクトリへ移動して、以下のコマンドを入力することでお手軽サーバが立ち上がります。

```
python3 -m http.server
```

 参照先を確認するには、ローカルホストに接続すればオーケーです。

 ```
 http://localhost:8000
 ```

起動時にポート番号を指定した場合、その番号で接続すること。何も指定しなければおなじみの8000番です。

なお、http:serverに接続するとserverを起動したディレクトリ配下にあるindex.htmlを参照しそれを表示しますので、テストしたいhtmlがindex以外であればポート番号のあとに指定すると希望のhtmlが表示されます。また参照したいファイルはindex.htmlと同じフォルダ配下において置くだけでオーケーです。

構成例）
```
|- フィルダ
    |- index.html
    |- data
        |- data.json
```

上の構成時のJavascriptでのファイルパス指定
```
fetch('data/data.json')
```

### まとめ

 Javascriptで外部ファイル参照などの処理をしていなければ、作成したhtmlファイルをダブルクリックするとブラウザ上に作成したコンテンツが表示され結果確認はできますが、Javascriptで外部ファイルを参照する処理を含む場合には上の通りlocalhostへ接続しなければ、ファイル読み込みエラーが発生して悲しい結果となりますので注意が必要です。

個人的なサービスをインターネット上で動作させたい時、Javascriptをよく理解してなかったから(今でもよくわかってないけど）Pythonで書いてStreamlit Cloudで公開してたりもしたけれど、そういったサービスは一定日数接続がないとスリープして再起動に時間がかかるため、生成AIに同じ処理結果となるようJavascriptコードで書いてもらったらカンタンに構築できるし再起動はないしで便利なので切り替えました。公開はおなじみのGithub Pagesなのでソースを修正した場合でも、pushすれば自動的に更新してくれて超便利です。

 マスタなどのを参照する処理を実装する場合、更新がない（少ない）データをhtmlのscriptタグ内や実行するjsファイルに定数としてベタ書きするっていうものアリだけど、コードとデータを分離するメンテナンス性の向上や、様々な処理で共通的に利用したいという場合など、JSONなど独立したファイルにまとめ必要に応じてそこを参照するほうが良いと思います。
k8s Secrets

# 概要
k8sのsecretsついて勉強した内容を書きます。

# Secrets
Secretsとはパスワード、トークン、キーなどの少量の機密データを含むオブジェクトのことである。
Secretsを使用することでアプリケーション内に機密データを入れることなく機密データを利用できる。

## Secretsの設定で使用できるフィールド
使用できるフィールドは以下の2つ
- data フィールド
    - キーの値がbase64でエンコードされている必要がある

- stringData フィールド
    - キーの値が任意の文字列でも可

## Secretsの種類
Secretの型として以下を使用できる(他にも~/.docker/config.json,SSH認証の認証情報の型も存在する）。

- Opaque
    - 任意のデータ
- kubernetes.io/service-account-token
    - サービスアカウントトークン
- kubernetes.io/basic-auth
    - ベーシック認証に利用される認証情報

今回はkubernetes.io/basic-auth型のSecretsが登録できるかを試します。

## kubernetes.io/basic-auth型のSecretsを登録してみる
以下のマニフェストをapply

```
apiVersion: v1
kind: Secret
metadata:
  name: basic-auth-mysecret
type: kubernetes.io/basic-auth
stringData:
  username: admin
  password: admin0123
```

kubectl apply -f secret.yamlコマンドを打つと以下のエラーが出現

```
error: error validating "secret.yaml": error validating data: failed to download openapi: Get "https://192.168.49.2:8443/openapi/v2?timeout=32s": dial tcp 192.168.49.2:8443: connect: no route to host; if you choose to ignore these errors, turn validation off with --validate=false
```

`minikube start` コマンドを打ち忘れていたので、打って再度applyすると成功

secretsが登録されたかを確認します

`kubectl get secrets`

```
NAME                  TYPE                       DATA   AGE
basic-auth-mysecret   kubernetes.io/basic-auth   2      66s
```
確かに確認できました。
以下のコマンドでsecretの中身を編集することができます。

`kubectl edit secret basic-auth-mysecret`

```
（省略）
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Secret","metadata":{"annotations":{},"name":"basic-auth-mysecret","namespace":"default"},"stringData":{"password":"admin0123","username":"admin"},"type":"kubernetes.io/basic-auth"}
（省略）
```

設定どおりの内容を反映させることができました。

# 終わりに

Secretsはデフォルトではデータストアetcdに暗号化されずに保存されてしまうので、次はセキュアにSecretsを利用できることを試します。

# 参考文献
- https://kubernetes.io/ja/docs/concepts/configuration/secret/
テストが面倒なのでplaywrightを使ってみる

# 準備
- 適当なディレクトリを用意してそこで以下を実行

```bash
npm init playwright@latest
```

色々聞かれるが答えていくと良い感じにインストールが始まる（素敵！）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4069955/0fdfdc54-5522-47a8-869f-6439530f9339.png)

インストール後はこんな感じでサンプルプログラムも作ってくれている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4069955/3f8eb27d-23ed-42ab-bd61-21899047387f.png)

# 動かしてみる
- script.tsを作成

```js:script.ts
// script.ts
import { chromium } from 'playwright';

(async () => {
  const browser = await chromium.launch({ headless: false });
  const context = await browser.newContext();
  const page = await context.newPage();

  // 任意のURLを開く
  await page.goto('https://google.com');

  // 1秒待つ
  await new Promise((resolve) => setTimeout(resolve, 1000));

  await browser.close();
})();

```

- 実行
```bash
npx tsx script.ts
```

- google開いたー！あとは色々命令書くだけ


## プロキシ接続が必要な場合
```javascript:script.ts

// script.ts
import { chromium } from 'playwright';

const URL = 'https://hogehoge';
const PROXY = {
  server: 'socks5://127.0.0.1:10080'  // SSHのSOCKSプロキシ設定（ここは各自の環境に合わせる）
};

(async () => {
  const browser = await chromium.launch({
    headless: false,
    proxy: PROXY
  });
  const context = await browser.newContext();
  const page = await context.newPage();

  // 任意のURLを開く
  await page.goto(URL);

  // 1秒待つ
  await new Promise((resolve) => setTimeout(resolve, 1000));

  await browser.close();
})();


```
今さらGtiHubの公開鍵、秘密鍵について調べた

## はじめに

GitHubの設定って最初にしたっきりすることはほとんどないので忘れがちで
新しい人が入ってきた時GitHubの設定になんだっけこれ？ってなることが多かったので改めてまとめました。

GitHubの接続はSSH接続とHTTP接続の2通りあります。
今回は最初に設定すればその後再度認証する必要がないSSH接続の方のみまとめます

## 設定の流れ

①下記のコマンドで公開鍵と秘密鍵を作成する
```bash
ssh-keygen -t ed25519 -C "あなたのメールアドレス"
```
②公開鍵を表示：

```bash
cat ~/.ssh/id_ed25519.pub
```

③GitHubの設定 → 「SSH and GPG keys」 → 「New SSH key」の順でクリック

④タイトルは任意、キーの中身を貼り付けて保存

## そもそもSSH接続とは？

簡単にいうと**離れた場所にあるコンピュータ（GitHubなど）と安全に通信するための仕組み**です。
GitHubに対してコードを更新かけたり逆にダウンロードしたりすることコードのやりとり（push/pull）ができるようになります。


## 🔑 公開鍵と秘密鍵の仕組み

SSHでは「カギが2つある」のが特徴です。

| 鍵の種類 | 保存場所 | 公開していいか | 説明 |
|----------|----------|------------|------|
| 🔐 秘密鍵 | 自分のPCだけ |  NG | あなたしか持っていない秘密のカギ |
| 🔓 公開鍵 | GitHubなど | OK | GitHubに渡しておく南京錠のようなもの |

ポストで例えると

- 公開鍵：みんなが手紙を入れられるポストの「投入口」
- 秘密鍵：中身を取り出す「自分だけの鍵」


公開鍵は暗号化されています。
それを複合できるのが秘密鍵という仕組みです。

## 実際に鍵を作ってみる

以下のコマンドをターミナルで実行：

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

### 🧾 それぞれの意味

| オプション        | 意味                            |
| ------------ | ----------------------------- |
| `-t ed25519` | 鍵の種類。安全で高速。今の主流です。            |
| `-C "..."`   | コメントとしてメールアドレスを埋め込む（識別しやすくなる） |

Enterを何度か押すと、次の2つのファイルができます：

| ファイル名                   | 内容  | 用途                           |
| ----------------------- | --- | ---------------------------- |
| `~/.ssh/id_ed25519`     | 秘密鍵 | 自分のPCだけに保存する。GitHub接続時に使われる。 |
| `~/.ssh/id_ed25519.pub` | 公開鍵 | GitHubに登録する。                 |
初心者でも挫折しない！おすすめプログラミング学習サイト5選

# 目次

- [はじめに](#はじめに)
- [1. Progate（プロゲート）](#1-progateプロゲート)
- [2. ドットインストール](#2-ドットインストール)
- [3. CODEPREP（コードプレップ）](#3-codeprepコードプレップ)
- [4. Codecademy（コードアカデミー）](#4-codecademyコードアカデミー)
- [5. Paizaラーニング](#5-paizaラーニング)
- [まとめ](#まとめ)

---

# はじめに

プログラミングを始めたいけど、「何から学べばいいの？」「途中で挫折しそう…」と不安な方も多いはず。  
この記事では、**初心者でも楽しく・継続しやすい**と評判のプログラミング学習サイトを5つ厳選して紹介します。  
どれも無料または低コストで始められるので、気軽にトライしてみてください！

---

# 1. Progate（プロゲート）

**特徴**  
- イラスト中心のスライドで直感的に学べる
- HTML/CSS、JavaScript、Python、Javaなど幅広い言語に対応
- 環境構築不要で、ブラウザ上ですぐにコーディング可能
- RPG感覚でレベルアップできる仕組みが楽しい

**おすすめポイント**  
初心者がつまずきやすい「環境構築」が不要で、すぐに始められるのが最大の魅力。  
無料プランでも基礎をしっかり学べます。

[公式サイト](https://prog-8.com/)

https://prog-8.com/

---

# 2. ドットインストール

**特徴**  
- 3分動画でサクッと学べる
- Web制作からゲーム開発、データ分析まで幅広い分野をカバー
- 実際に手を動かしながら学べる実践型
- 有料プランで中級・上級者向け講座や質問機能も利用可能

**おすすめポイント**  
短時間で効率よく学べるので、忙しい人や「動画で学びたい」人にぴったり。

[公式サイト](https://dotinstall.com/)


https://dotinstall.com/

---

# 3. CODEPREP（コードプレップ）

**特徴**  
- 穴埋めドリル形式で段階的に学べる
- 1ドリル10分程度でスキマ時間に最適
- ディスカッション機能で他の学習者と助け合える
- 全機能無料で利用可能

**おすすめポイント**  
「全部自分で書くのは不安…」という人も、少しずつステップアップできるので挫折しにくい。

[公式サイト](https://codeprep.jp/)

https://codeprep.jp/

---

# 4. Codecademy（コードアカデミー）

**特徴**  
- 世界中で利用されている大手オンライン学習サイト
- JavaScript、Python、PHPなど多彩な言語に対応
- ブラウザ上で即コーディング＆実行
- AIアシスタントによるフィードバック機能も

**おすすめポイント**  
英語がメインですが、インタラクティブに学べるので実践力が身につきやすいです。  
ブラウザの翻訳機能を使えば日本語でも学習できます。

[公式サイト](https://www.codecademy.com/)

https://www.codecademy.com/

---

# 5. Paizaラーニング

**特徴**  
- 3分動画＋練習問題でテンポよく学べる
- JavaScript、Java、Pythonなど人気言語に対応
- 環境構築不要でブラウザ上ですぐに学習スタート
- 無料で基礎講座が利用可能

**おすすめポイント**  
「とにかく手を動かして覚えたい！」という人におすすめ。  
会員登録だけですぐに始められます。

[公式サイト](https://paiza.jp/)

https://paiza.jp/

---

# まとめ

| サイト名           | 特徴・おすすめポイント                         |
|--------------------|-----------------------------------------------|
| Progate            | スライド学習・環境構築不要・RPG感覚で楽しい   |
| ドットインストール | 3分動画・実践型・幅広い分野をカバー           |
| CODEPREP           | 穴埋めドリル・全機能無料・助け合い機能あり     |
| Codecademy         | 世界規模・即コーディング・AIフィードバック     |
| Paizaラーニング    | 3分動画・練習問題・環境構築不要                |

どのサイトも**初心者が挫折しにくい工夫**が満載です。  
まずは気になったサービスで、プログラミングの第一歩を踏み出してみましょう！
クラウドとは？

# クラウドとは

クラウドはクラウドコンピューティングの略で、必要なときに必要なだけコスパよくリソースを使用できる、コンピューティングリソースの利用形態のひとつのこと。

従来のオンプレミス環境と異なり、リソースの拡張や縮小を動的に行うことができ、リソースの負荷状況に応じた自動的なスケーリングも可能。

## サービスの提供形態

主に３つの形態で提供される。

### IaaS（Infrastructure as a Service）
インフラストラクチャ（仮想サーバーやネットワークなど）の提供。

### PaaS（Platform as a Service）
アプリケーション実行に必要なプラットフォームを提供。

### SaaS（Software as a Service）
完成したソフトウェアサービスの提供。

検討の際は`SaaS→PaaS→IaaS`の順で検討し、なるべく開発運用コストを下げていく必要がある。

## クラウドの種類

### パブリッククラウド
クラウド事業者（例：AWSやGCPなど）が企業や個人にクラウドサービスを提供するもの。
基本クラウドといえばこれに値する。

利用するリソースを柔軟に対応できるが、障害発生時などは自社で対応できない。

### プライベートクラウド
自社など組織専用のクラウド環境。

自由度が高く、障害発生時に自社での対応を行うことができる反面、リソースの最大量を確保しておく必要があったりとかなり大きいコストがかかる。

規模が大きく自社で運用した方が安い場合や、セキュリティ面でパブリッククラウドを上回るスペックを実現したい場合などに選択される。

:::note
基本的にコストが最低限で抑えられるものから優先的に適用できないか検討していく必要がある。
:::

### ハイブリッドクラウド
パブリッククラウドとプライベートクラウドを組み合わせた形態。

## 主要なクラウドサービス

### ストレージサービス
基本的なクラウドサービスのひとつで、データ保存やバックアップの用途に使用される。

`例：AWS-S3`
オブジェクトストレージという、オブジェクト単位で格納削除などをできるもの。
耐久性と可用性がポイントで実質容量無制限。
使った分に対しての従量課金なため、低コストで抑えられる。

### 仮想サーバー
物理的なサーバー上に複数の仮想的なサーバーを動作させたもので、物理サーバーと同様の機能を提供している環境。

`例：AWS-EC2`
IaaSなため、サーバーで実行できることは大抵可能。
数分でサーバーを利用開始することができ、性能を決めるスケールアップ・ダウン、数の増減ができるスケールアウト・ダウンが容易。
オートスケーリング機能を使用したら自動で変更することができる。

- ロードバランサー
複数のサーバーにアクセスを振り分ける負荷分散が可能。
障害対策にもなる。

- オートスケーリング
負荷に応じて自動的にスケールを対応することができる。

- スナップショット
仮想サーバーのディスクをバックアップする仕組み。
（AWS-S3に保存される）

### ネットワーク
`例：AWS-VPC`
仮想的なネットワークをAWS上に作成することができる

`例：AWS-Route53`
DNSサービス
可用性100%

### データベース
整理された形でデータを保存・検索できるサービス。
高いスケーラビリティを提供する。

`例：AWS-RDS`

### マネージドサービス（クラウド活用例）
クラウド事業者がハードフェア、OSなどを管理してくれるサービス
これにより運用の手間が省けたり、コストダウン、品質確保につながる

#### データ分析
`例：AWS-RedShift`
ビッグデータ（大量のデータ）を保存分析するためのサービス

EMRという高速にビッグデータを分散処理してくれるオープンソースフレームワークもある。

#### BIツール
`例：AWS-QuickSight`
大量に蓄積したデータから必要な情報を集約し、見やすくするもの。
ビジネスの意思決定において判断材料とするとわかりやすい。

#### IoT連携
モノがインターネットに接続される仕組み。
ロボット掃除機だったり、スピーカーによる操作などが該当する。

今後色々なものがインターネットと繋がっていくことが予想されている。

## クラウドでのシステム構築のメリット
- 物理サーバーなどを使う必要がなくなる
- オンプレミスでは難しい規模のシステム構築を行うことができる
- コスト面やセキュリティ面での柔軟な対応

### 責任分界点
どこまでがクラウド事業者の責任で、どこからが利用者の責任なのかを定義するもの。

- IaaS：OS以降は利用者責任
- PaaS：アプリ以降は利用者責任
- SaaS：基本的に利用者は使用のみ

## まとめ

クラウドはセキュリティや障害のリスクがあることは前提とするため、サービスの停止やデータの消失などは常にあり得る。依存しすぎず対策を予め取っておくことが大事。

パブリッククラウドの場合はサービス終了などの可能性も考えられるため、なるべく大手のサービスを利用したり、バックアップを取って置いたりで対策すること。

また、クラウドでは物理的な場所をわけたりと、災害対策を行い可用性を高める工夫もされている。
[SOLVED] Minimal Setup of Linux Mint Xia Cinnamon 22.1, and Some Shortcuts

[1] Making the installer of Xia:
1.Downloading ISO image
2.Making the installer using rufus with the DD mode 
 
[2] Registering and removing apps from the favorites: 
Right chick of app icon in the menu 
 
[3] Setting firewall: 
1. Click Firewall icon in System
2. Setting as follows:
status: on
incoming: deny; outgoing: allow 
 
[4] Downloading all wallpapers from previous versions: 
$sudo apt install -y mint-backgrounds-* ubuntu-wallpapers-* ubuntustudio-wallpapers xubuntu-community-wallpapers-* 

[5] Additional apps to be installed:  
1.ttf-mscorefonts-installer
2.New Version of OfficeLibre
If the version of the OffieLibre is old after the system is installed, delete it then install the new version form the software manager.
3.Pinta
4.Kdenlive
5.Galculator
Installing from
　https://community.linuxmint.com/software/view/galculator
6.Bleachbit
7.SublimeText4　
Setting in accordance with the contents in the following url:
　https://designerbrg.com/sublimetext_howto/
8.Python3 
9.Acivating WiFi
Setting as follows:
　https://qiita.com/elicit777/items/5df432e7a2a6411f5740

Others:
1.Keyboard Shortcuts
Shutdown, Restart, or Suspend: Cntl+Alt+End
Logging out: Cntl+Alt+Del
The other shortcuts 'can be or are' assinged to the "keyboard" menu in the system.
2.Starting the terminal: Cntl+Alt+T
Copy:Cntl+Shift+C
Paste:Cntl+Shift+V
チャット GPT 手相占い：AIが開く新時代の運勢診断｜GPTPalmで未来を読み解く

はじめに：伝統と革新の融合
今すぐ体験: https://gptpalm.com/
5000年の歴史を持つ手相占い。古代インド、中国、エジプトで生まれたこの神秘的な占術が、今、チャット GPT 手相占いとして最先端のAI技術によって新たな進化を遂げています。GPTPalmは、ChatGPTの技術を基盤とした革新的な手相診断プラットフォームとして、あなたの運命や性格を手のひらから読み解きます。
チャット GPT 手相占いの革新性：わずか30秒で詳細な手相診断
🤖 ChatGPT技術を活用した高精度分析
従来の手相占いでは、経験豊富な占い師による対面での解読が必要でした。しかし、チャット GPT 手相占いのGPTPalmは、ChatGPTの深層学習技術を活用することで、手のひらの写真を分析し、瞬時に詳細な手相診断を提供します。
📸 簡単な撮影プロセス
使い方は驚くほど簡単です：

撮影準備：明るい場所で、手のひらの線がはっきりと見えるように準備
写真撮影：適切な角度と光源で手のひらの写真を撮影
AI分析：アップロードした写真をAIが即座に分析
結果受取：詳細な手相診断結果を30秒で取得

分析内容：あなたの人生を多角的に解読
🧠 性格分析

利き手分析：成長や経験によって培われた現在の思考・行動パターン
非利き手分析：生まれつき備わった本能的な傾向や基本的な個性
統合分析：両手の情報を組み合わせた立体的な性格診断

🔍 チャット GPT 手相占いの分析精度
チャット GPT 手相占いとして進化したGPTPalmでは、以下のような詳細な分析が可能です：
手相の線、形、色から読み取れる：

現在の運勢傾向
将来の運命の示唆
人生の転機となるポイント
潜在的な可能性

💼 実生活への応用
診断結果は単なる占いにとどまらず、以下のような実生活での活用が可能です：

自己理解の深化
キャリア選択の参考
人間関係の改善
人生設計の指針

なぜチャット GPT 手相占いが注目されるのか
✨ ChatGPT技術による高精度分析
チャット GPT 手相占いのGPTPalmは、最新のChatGPT技術により、従来の手相占いを超える詳細で客観的な分析を実現しています。
💬 チャット形式でのインタラクティブ体験
チャット GPT 手相占いの特徴として、チャット形式でのやり取りが可能で、より詳しい質問や解釈についても気軽に相談できます。
🌐 24時間利用可能なAI占い師
いつでもどこでも、チャット GPT 手相占いで手軽に本格的な手相診断を受けることができます。
🔒 安心・安全なプライバシー保護
個人情報の安全性を最優先に設計されたチャット GPT 手相占いシステム
💰 コストパフォーマンス抜群
対面での手相占いと比較して、チャット GPT 手相占いははるかに手頃な料金で高品質な診断を提供
撮影のコツ：より正確な診断のために
📐 適切な角度
手のひらを真正面から撮影し、指先から手首まで全体が映るようにする
☀️ 理想的な照明
自然光または明るい照明の下で、影ができないように注意
🎨 背景の選択
シンプルで無地の背景を選び、手のひらとのコントラストを明確に
✋ 手のポーズ
指は軽く開き、自然な状態で撮影する
チャット GPT 手相占いの科学性：伝統知識とAIの融合
チャット GPT 手相占いのGPTPalmは、5000年にわたって蓄積された手相学の知識を基盤としながら、ChatGPTの最新AI技術によってその精度と客観性を大幅に向上させています。手のひらの線、形状、色彩パターンを詳細に分析し、統計的手法と機械学習アルゴリズムを組み合わせることで、従来では不可能だったレベルの精密なチャット GPT 手相占い診断を実現しています。
利用者の声：実際の体験談
「チャット GPT 手相占いを使ってみて、思っていた以上に詳細で当たっていて驚きました。特に性格分析の部分は、自分でも気づかなかった側面を指摘してくれて、とても参考になりました。」（30代女性）
「仕事で迷いがあった時期にチャット GPT 手相占いを使ったのですが、自分の潜在的な適性について的確なアドバイスをもらえて、決断の後押しになりました。」（40代男性）
2025年の新年に向けて：チャット GPT 手相占いで新しい自分を発見
新年を迎えるこの時期に、チャット GPT 手相占いのGPTPalmで自分自身の新たな可能性を発見してみませんか？手のひらに刻まれた線から読み取れるあなたの運命や才能は、きっと2025年の歩みに新しい視点を与えてくれるでしょう。
まとめ：チャット GPT 手相占いで未来への扉を開く
チャット GPT 手相占いのGPTPalmは、単なる占いツールを超えて、自己理解と人生設計のための革新的なパートナーです。5000年の伝統とChatGPTの最新技術が融合した、まったく新しい手相診断体験をぜひお試しください。あなたの手のひらに隠された秘密を、チャット GPT 手相占いが明らかにします。

チャット GPT 手相占いで、あなたの手のひらから未来への道筋を見つけてください。
「独学でつまずかないために」初心者がまず読むべきプログラミング入門ガイド📘


みなさん、こんにちは！　韓国在住のsanaです！

「プログラミングを勉強してみたいけど、何から始めたらいい？」
「途中で挫折しないためのコツってあるの？」

そんな不安を感じている方に、今回は初心者がまず学ぶべきこと、よくある失敗、効率よく学習するためのコツ をわかりやすくまとめました📝

これからプログラミングに挑戦したい方、ぜひ参考にしてください！

－－－－

📌 1. まず最初に学ぶべきこと
✅ 基本的なプログラミング言語：PythonやJavaScriptなどの比較的やさしくて実用的な言語から始めるのがおすすめです！
✅ 変数・条件分岐・ループ：どんな言語にも共通する基本概念です。
✅ 簡単なアプリケーションやWebページを作ってみる：手を動かしながら学ぶことで理解が深まります！

🧩補足：最初から難しいアルゴリズムやフレームワークに手を出すと挫折しやすくなるので、焦らず基礎から始めること！

//

⚠️ 2. 初心者がよくやりがちな失敗
❌「チュートリアルだけ見て、実際に手を動かさない」
→ 理解したつもりでも、手を動かさないと身につきません。

❌「完璧を求めすぎて進まない」
→ 最初は間違えてもOK！とにかく動かしてみることが大切！

❌「エラーに対してすぐ諦める」
→ エラーは成長のチャンスです。検索力もプログラマーの大事なスキル！


~実践プログラミング~

https://u.inf.run/43CLjtK

https://u.inf.run/4kiCrPA

https://u.inf.run/3F1iSwi

・・・

🚀 3. 効率よく学ぶためのコツ
🌱 アウトプット中心の学習：学んだことを自分の言葉でまとめたり、小さなツールを作ってみるのも:ok_woman_tone1:
🌱 学習記録を残す：ブログやSNS、Qiitaなどいろんな人の目につくものに記録するとモチベーションが続きやすいです！
🌱 小さな成功体験を積む：簡単でも「動いた！」という体験が学習のエネルギーになります💡
🌱 同じ目標を持つ仲間を作る：オンラインのコミュニティやDiscordなどで交流するのも◎


✨ まとめ
プログラミングは、「わからない」「エラーばかり」と感じることがあっても、
コツコツ続ければ必ず成長できるスキルです。焦らず、自分のペースでコツコツ「楽しく！」学んでいきましょう😊

これからプログラミングを始める皆さんを、心から応援しています！📣✨

今週もファイテイン！！
【ChatGPT】生成AIを迷子にしないための方策をご紹介します。


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

　今回は、生成AIを迷子にしないための方策をご紹介します。

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

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

　今回は、
　　生成AIを迷子にしないための方策を
　　　ご紹介します。

　生成AIと会話をしていくと
　　だんだんと迷走していくことが
　　　ありますよね。

　この現象は
　　「会話で迷子になる
　　　（Lost in Conversation）」と
　　　　呼ばれています。

　これを正すには
　　どうすればいいのでしょうか？

　下記の論文に
　　対処方法がありました。

　「LLMは多面的な会話で迷子になる」
　　[arXiv：LLMs Get Lost In Multi-Turn Conversation](https://arxiv.org/abs/2505.06120)

　まずは、
　　なぜ迷子になるのか？

　　情報が集まってから
　　　回答するようには
　　　　なっていない。

　　間違った回答を
　　　そのまま使おうとする。

　　途中を
　　　はしょることがある。

　　回答が長くなってしまい、
　　　論点がズレていく。

　この四点が
　　原因と書かれています。
***
　ユーザーへの
　　実践的アドバイスとして

　・うまくいかない会話は
　　　「やり直し」た方が良い。

　・情報はひとつにまとめる。

　どちらも
　　私はよくやります。

　というよりも
　　組み合わせて
　　　使う方法ですね。
***
　具体的には
　　下記のとおり。

　まずは、
　　文章生成の場合。

　それまでの対話で
　　わかったことを
　　　まとめてもらう。

　この際、
　　箇条書きにしてもらうと
　　　人間がわかりやすい。
　　　　ここはそれぞれで判断。

　次に
　　その情報をコピーして
　　　新たなセッションを開き、
　　　　ペーストする。

　　修正が必要ならば
　　　このときですね。

　これで送信して、
　　対話を再開するわけです。
***
　画像生成の際も似た感じです。

　まずは、
　　セッション中で
　　　一番良い画像の次を編集して、
　　　　Promptを書き換えます。

　　画像のPromptを
　　　書き出すように、です。

　　それと
　　　その画像をコピーしておきます。
　　　　ロングタップでメニューを出し
　　　　　“コピー”を選択してください。

　　　別にダウンロードでも
　　　　構いませんが。

　それで
　　新たなセッションを開き、
　　　画像とPromptをペーストする。

　　送信前に、
　　　どのようにしたいか、を
　　　　入力する。

　　送信。
***
　これで
　　悪循環から
　　　抜け出せる可能性が
　　　　高まります。

　残念ながら
　　完全に抜け出せるわけでは
　　　ありませんが、
　　　　それでも良くなるはずです。

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

　今回は、ここまで。
「C言語ができれば、大体どの言語もできる」というのは、少し言い過ぎの話

「C言語ができれば、大体どの言語もできる」というのは、少し言い過ぎかもしれません。

C言語を習得することで、プログラミングの基礎的な概念やコンピュータの動作原理（メモリ管理、ポインタなど）を深く理解できるため、他の言語を学ぶ際の大きなアドバンテージになることは間違いありません。

C言語の経験が役立つ主な点は以下の通りです。

基本的な制御構造: if-else, for, while などの基本的な制御構造は多くの言語で共通しています。
変数の概念: データ型、変数の宣言と使用といった概念は多くの言語に存在します。
メモリの理解: ポインタの扱いやメモリ管理の知識は、他の言語の動作を理解する上で役立ちます（特にC++, Rustなど）。
しかし、C言語と大きく異なるパラダイムを持つ言語（例えば、関数型言語のHaskellやオブジェクト指向言語のSmalltalkなど）では、C言語の知識だけではすぐにスムーズに書けるとは限りません。それぞれの言語には特有の構文、概念、イディオムがあります。

例えば：

オブジェクト指向: C++、Java、Python、C# などはオブジェクト指向の概念（クラス、オブジェクト、継承など）が中心ですが、C言語は手続き型言語です。
関数型プログラミング: Haskell、Lisp などは関数を第一級オブジェクトとして扱うなど、C言語とは異なる考え方をします。
スクリプト言語: Python、JavaScript、Ruby などは動的型付けや高レベルな抽象化が特徴で、C言語のような低レベルな操作はあまり意識しません。
httpとsshの違い

httpとsshの違い


HTTP (Hypertext Transfer Protocol) と SSH (Secure Shell) は、どちらもネットワーク上で通信を行うためのプロトコルですが、その目的と仕組みは大きく異なります。

HTTP (Hypertext Transfer Protocol)

主な目的: WebブラウザとWebサーバーの間で、Webページ（HTMLファイルなど）や画像、動画などのコンテンツをやり取りするために設計されたプロトコルです。
動作:
クライアント（Webブラウザ）がサーバーにリクエストを送信します（例: 「このWebページをください」）。
サーバーはリクエストに応じてレスポンスを返します（例: WebページのHTMLデータ）。
セキュリティ: 通常は暗号化されません（http://）。セキュリティが必要な場合は、HTTP over TLS/SSL (HTTPS, https://) を使用します。
主な用途: Webサイトの閲覧、Webアプリケーションの利用など。
ポート番号: 通常は 80 番ポート（HTTPSは 443 番ポート）を使用します。
SSH (Secure Shell)

主な目的: ネットワーク経由で安全にリモートコンピュータを操作するために設計されたプロトコルです。コマンドラインインターフェース (シェル) を安全に利用したり、セキュアにファイルを転送したりできます。
動作:
クライアント（SSHクライアント）がサーバー（SSHサーバー）に接続します。
接続は暗号化され、なりすましを防ぐための認証が行われます。
接続が確立されると、クライアントはサーバー上でコマンドを実行したり、ファイルを操作したりできます。
セキュリティ: 通信全体が暗号化されるため、盗聴や改ざんのリスクが低いです。
主な用途: サーバーの管理、リモートアクセス、セキュアなファイル転送 (SFTP, SCP) など。
ポート番号: 通常は 22 番ポートを使用します。
まとめ

特徴	HTTP	SSH
主な目的	Webコンテンツの転送	安全なリモートアクセスとファイル転送
やり取り	Webページ、画像などのコンテンツ	コマンド、ファイル
セキュリティ	通常は非暗号化 (HTTPSで暗号化)	常に暗号化
主な用途	Webサイト閲覧、Webアプリ利用	サーバー管理、リモート操作、セキュアなファイル転送
ポート番号	80 (HTTP), 443 (HTTPS)	22

Google スプレッドシートにエクスポート
このように、HTTPは主にWebコンテンツのやり取りに使われるのに対し、SSHは安全なリモート操作に使われるという点で、明確な違いがあります。