2026/06/18

Gitリポジトリの操作

Gitでは変更の保存先が4つの場所に分かれており、コマンドによってどの場所まで変更を反映するかが決まる。
`add` → `commit` → `push` と段階を踏むのが基本で、`commit -a` や `pull` は複数の操作をひとつのコマンドにまとめた省略形にあたる。

---

## 4つの場所

| 場所 | 別名 | 物理的な位置 | 役割 |
|------|------|-------------|------|
| Workspace | 作業ディレクトリ | 自PC(.git/ の外) | 実際にファイルを編集する場所 |
| Index | ステージングエリア | 自PC(.git/ 内) | 次のコミットに含める変更を仮置きする場所 |
| Local repo | ローカルリポジトリ | 自PC(.git/ 内) | コミット履歴・ブランチの保管場所 |
| Remote repo | リモートリポジトリ | 外部サーバー | GitHub / GitLab など、チームで共有する場所 |

---

## 送信系コマンド(ローカル → リモート方向)

### `git add`:Workspace → Index

```bash
git add <ファイル>   # 指定ファイルをステージ
git add .           # 全変更をステージ
```

### `git commit`:Index → Local repo

```bash
git commit -m "メッセージ"
```

### `git commit -a`:Workspace → Local repo(add + commit を一括)

```bash
git commit -a -m "メッセージ"
```

追跡済みファイル(tracked)の `add` と `commit` を一括で実行する省略形。
新規ファイル(untracked)は自動でステージされないため、別途 `git add` が必要。

### `git push`:Local repo → Remote repo

```bash
git push origin main
git push -u origin main   # 初回。-u で upstream を設定し、以後は git push だけで OK
```

---

## 取得系コマンド(リモート → ローカル方向)

### `git fetch`:Remote repo → Local repo

```bash
git fetch origin
```

リモートの更新を Local repo に取り込むだけ。Workspace は変化しない。
取得後に `git log origin/main` で差分を確認してから merge できる。

### `git pull`:Remote repo → Workspace(fetch + merge を一括)

```bash
git pull origin main
```

`fetch` に続いて merge まで一括で行い、Workspace まで反映する。
コンフリクトが起きる可能性があるため、`fetch` → 確認 → `merge` の順が安全。

### `git checkout` / `git switch`:Local repo → Workspace

```bash
git checkout <ブランチ名>   # ブランチを切り替えてワーキングツリーを更新
git switch <ブランチ名>     # 現代的な書き方(checkout の代替)
```

### `git restore`:Local repo → Workspace または Index

```bash
git restore <ファイル>              # Workspace の変更を最終コミット時点に戻す
git restore --staged <ファイル>     # Index の変更を取り消す(Workspace は変化しない)
```

### `git clone`:Remote repo → Workspace(初回のみ)

```bash
git clone 
```

`init` + `fetch` + `checkout` を一括実行し、リポジトリ全体をローカルにコピーする。

---

## 比較系コマンド(差分確認)

| コマンド | 比較する場所 | 確認できること |
|----------|-------------|----------------|
| `git diff` | Workspace ↔ Index | `add` 前の変更(まだステージしていない差分) |
| `git diff HEAD` | Workspace ↔ Local repo | 最終コミットから現在までの全差分 |
| `git diff --staged` | Index ↔ Local repo | `add` 済みでまだ `commit` していない差分 |

---

## リポジトリの作成

### `git init`:空のローカルリポジトリを新規作成する

手元にあるフォルダをGit管理下に置く。Remote repo なしのローカル完結でも運用でき、後から `git remote add` でリモートに接続することもできる。

```bash
mkdir my-project && cd my-project
git init
git add .
git commit -m "first commit"

# ローカル完結の場合はここまで。以降は add → commit を繰り返す。

# Remote repo に接続する場合は GitHub で空リポジトリを作成してから実行
git remote add origin https://github.com/user/repo.git
git push -u origin main
```

### `git clone`:リモートリポジトリをローカルに取得する

GitHub 側でリポジトリを先に作り、手元に持ってくる場合。`init` + `fetch` + `checkout` を一括で行う。

```bash
git clone https://github.com/user/repo.git
cd repo
```

### `git remote add`:既存のローカルリポジトリをリモートに接続する

`git init` 済みのプロジェクトを後から GitHub に紐づける場合。

```bash
git remote add origin https://github.com/user/repo.git
git branch -M main
git push -u origin main
```

主要AIベンダー モデルラインナップ早見表(2026年6月時点)

> 料金・スペックは変動するため、最終確認は各公式ドキュメントで行うこと。  
> 価格単位はすべて USD / 100万トークン(Input / Output)。

---

## 1. Anthropic(Claude シリーズ)

**ティア構造:** Mythos > Opus > Sonnet > Haiku(上ほど高性能・高コスト)

| モデル | API model ID | コンテキスト | 料金(入/出) | 特徴・用途 |
|---|---|---|---|---|
| **Claude Fable 5** | `claude-fable-5` | 1M tokens | $10 / $50 | 最上位Mythosクラスの一般公開版。安全分類器付き。最難タスク向け |
| **Claude Opus 4.8** | `claude-opus-4-8` | 1M tokens | $5 / $25 | Opus最新旗艦。長時間エージェント・複雑推論・Claude Codeの主力 |
| **Claude Opus 4.7** | `claude-opus-4-7` | 1M tokens | $5 / $25 | 4.8の前世代。高解像度ビジョン・自己検証機能 |
| **Claude Opus 4.6** | `claude-opus-4-6` | 1M tokens | $5 / $25 | SWE-bench 80.8%。コーディング・科学推論に強い |
| **Claude Sonnet 4.6** | `claude-sonnet-4-6` | 200K(β:1M) | $3 / $15 | コスパ最良のバランスモデル。Claude Codeデフォルト推奨 |
| **Claude Haiku 4.5** | `claude-haiku-4-5-20251001` | 200K | $1 / $5 | 最速・最安。高ボリューム処理・ルーティング・分類タスク |

**提供形態:**
- チャット:claude.ai(Free / Pro $20/月 / Max $100〜200/月 / Team / Enterprise)
- API:api.anthropic.com(従量課金)
- クラウド:Amazon Bedrock、Google Cloud Vertex AI、Microsoft Azure AI Foundry
- 開発ツール:Claude Code(CLI)、Claude Platform on AWS

**公式料金ページ:**
- モデル一覧・API料金:https://www.anthropic.com/pricing
- APIドキュメント(モデル一覧):https://docs.anthropic.com/en/docs/about-claude/models/overview

---

## 2. OpenAI(GPT-5 / o-series)

**ファミリー構造:** GPT-5.x(汎用)+ o-series(推論特化)+ GPT-4.1系(軽量・旧世代)

| モデル | コンテキスト | 料金(入/出) | 特徴・用途 |
|---|---|---|---|
| **GPT-5.5** | 1M tokens | $5 / $30 | 最上位。難易度の高いコーディング・エージェント・研究タスク |
| **GPT-5.5 Pro** | 1M tokens | $30 / $180 | 最高品質推論。最重要判断・高価値タスク限定 |
| **GPT-5.4** | 1M tokens | $2.50 / $15 | フロンティア性能をより安価に。長コンテキスト作業 |
| **GPT-5.4 mini** | — | $0.75 / $4.50 | コスト削減版。本番ルーティング・チャット |
| **GPT-5.4 nano** | — | $0.20 / $1.25 | 超軽量。ルーティング・抽出・高ボリュームバックエンド |
| **GPT-5.3 Codex** | — | $1.75 / $14 | コーディングエージェント特化API |
| **o4-mini** | — | $0.55 / $2.20 | 推論特化・低コスト。数学・コード・論理 |
| **GPT-4.1 nano** | — | $0.10 / $0.40 | 最安。GPT-3.5互換の置き換え用 |

**提供形態:**
- チャット:ChatGPT(Free / Plus $20/月 / Pro / Team / Enterprise)
- API:platform.openai.com(従量課金、Batch API 50%オフ)
- クラウド:Azure AI Foundry(Microsoft)

**公式料金ページ:**
- API料金:https://openai.com/api/pricing/
- モデル一覧:https://platform.openai.com/docs/models

---

## 3. Google(Gemini シリーズ)

**ティア構造:** Pro(最高性能)> Flash(高コスパ)> Flash-Lite(超軽量)  
**世代:** Gemini 3.5 が最新、3.1 Pro が GA、2.5系は旧世代

| モデル | コンテキスト | 料金(入/出) | 特徴・用途 |
|---|---|---|---|
| **Gemini 3.1 Pro** | 2M tokens | $2 / $12(≤200K)、$4 / $12(>200K) | 最強純粋推論。GPQA Diamond 94.3%。Deep Thinkモード |
| **Gemini 3.5 Flash** | 1M tokens | $1.50 / $9 | フロンティア並みのエージェント・コーディング性能をFlash価格で |
| **Gemini 3.1 Flash** | — | $0.50 / $3 | 本番アプリ・チャット・コンテンツ生成 |
| **Gemini 3.1 Flash-Lite** | — | 最安 | 超低レイテンシ・高ボリューム |
| **Gemini 2.5 Pro** | 1M tokens | 参照要 | 旧世代最上位。GA版で安定性あり |
| **Gemma 4**(OSS) | 256K | 無料(セルフホスト) | Apache 2.0。31B dense / 26B MoE。Google最もオープンなリリース |

**提供形態:**
- チャット:Gemini app(Free / Advanced / Business / Enterprise)
- API:Google AI Studio(開発用)、Vertex AI(エンタープライズ)
- 開発:Gemini CLI、Google Antigravity(エージェントプラットフォーム)

**公式料金ページ:**
- Gemini API(Google AI Studio):https://ai.google.dev/gemini-api/docs/pricing
- Vertex AI(エンタープライズ):https://cloud.google.com/vertex-ai/generative-ai/pricing

---

## 4. Meta(Llama 4 / Muse Spark)

**方針転換:** オープン路線を継続しつつ、初のクローズドモデル(Muse Spark)も投入

| モデル | 形態 | コンテキスト | 特徴・用途 |
|---|---|---|---|
| **Muse Spark** | クローズド(API) | — | Meta初の独自フロンティアモデル。ツール使用・マルチエージェント |
| **Llama 4 Maverick** | オープンウェイト | 1M tokens | 400B total / 17B active MoE。マルチモーダル。本番汎用 |
| **Llama 4 Scout** | オープンウェイト | 10M tokens | 109B total / 17B active。超長コンテキストRAG。H100×1台で動作 |

**ライセンス:** Llama 4 Community License(商用可、MAU 7億超は要許可)  
**提供形態:** Meta AI(チャット)、Hugging Face(ウェイト配布)、主要クラウド経由  
**備考:** Llama 4 Behemoth(~2T params)は事実上凍結。

**公式ページ:**
- Llama モデル:https://ai.meta.com/models/
- Hugging Face(ウェイト配布):https://huggingface.co/meta-llama
- ※ Llama 自体に直接API料金はなし(ホスティングはGroq / Together AI / AWS等経由)

---

## 5. DeepSeek(中国・オープン系最有力)

**特徴:** MITライセンス・低価格・コーディング・推論に強い。API はOpenAI互換

| モデル | 形態 | コンテキスト | 料金(入/出) | 特徴・用途 |
|---|---|---|---|---|
| **DeepSeek V4-Pro** | OSS(MIT) | 1M tokens | 参照要 | 1.6T total / 49B active MoE。SWE-bench 80.6%。長コンテキスト・エージェント |
| **DeepSeek V4-Flash** | OSS(MIT) | 1M tokens | 低コスト | 284B total / 13B active。コスト重視用途 |
| **DeepSeek V3.2** | OSS(MIT) | — | ~$0.27 / $1.10 | MMLU 94.2%。コーディング・汎用 |
| **DeepSeek R1** | OSS(MIT) | — | 超低コスト | 推論特化(o1同等)。RL学習。蒸留版あり |

**提供形態:** DeepSeek API(OpenAI互換)、Hugging Face(ウェイト)、各クラウド経由

**公式料金ページ:**
- API料金:https://api-docs.deepseek.com/quick_start/pricing
- モデル情報:https://api-docs.deepseek.com/

---

## 6. Mistral AI(欧州)

**特徴:** EU法規制対応・データ主権・多言語。一部モデルは真のオープンソース

| モデル | 形態 | コンテキスト | 特徴・用途 |
|---|---|---|---|
| **Mistral Large 3** | オープンウェイト(Apache 2.0) | 256K | 675B total / 41B active MoE。多言語200言語以上 |
| **Mistral Medium 3.5** | API / 一部ウェイト | — | コスパバランス。2026年4月リリース |
| **Mistral Small 4** | オープンウェイト | — | 軽量・高速。2026年3月リリース |
| **Voxtral TTS** | API | — | 音声生成・ゼロショット音声クローン |

**提供形態:** La Plateforme API、Azure / GCP / AWS 経由

**公式料金ページ:**
- API料金:https://mistral.ai/technology/
- La Plateforme コンソール:https://console.mistral.ai/

---

## 7. Alibaba(Qwen シリーズ)

**特徴:** Apache 2.0・多言語・グローバルOSSシェア50%超。コーディング強い

| モデル | 形態 | コンテキスト | 特徴・用途 |
|---|---|---|---|
| **Qwen 3.5(397B A17B)** | OSS(Apache 2.0) | 262K(拡張1M+) | GPQA Diamond 88.4%。マルチモーダル・多言語200言語 |
| **Qwen 3.6 27B** | OSS(Apache 2.0) | — | SWE-bench 77.2%。コーディング特化。単一H100で動作 |
| **Qwen 3.7 Max** | クローズド(DashScope API) | — | Alibaba製クラウドAPIのみ提供 |

**提供形態:** Alibaba Cloud DashScope API、Hugging Face(ウェイト)

**公式料金ページ:**
- DashScope API料金:https://www.alibabacloud.com/help/en/model-studio/getting-started/models
- Hugging Face(ウェイト):https://huggingface.co/Qwen

---

## ベンダー横断まとめ:選択指針

| 優先軸 | 推奨モデル |
|---|---|
| 最高性能(コスト度外視) | Claude Fable 5 / GPT-5.5 / Gemini 3.1 Pro |
| コスパ最良の本番バランス | Claude Sonnet 4.6 / GPT-5.4 / Gemini 3.5 Flash |
| 超低コスト・大量処理 | Claude Haiku 4.5 / GPT-4.1 nano / Gemini 3.1 Flash-Lite |
| コーディング・エージェント | Claude Opus 4.8(Claude Code)/ DeepSeek V4-Pro |
| 推論・数学 | DeepSeek R1 / o4-mini / Gemini 3.1 Pro Deep Think |
| セルフホスト・データ主権 | DeepSeek V4 / Qwen 3.5 / Llama 4 Maverick / Gemma 4 |
| EU法規制・欧州データ | Mistral Large 3 |
| 超長コンテキストRAG | Llama 4 Scout(10M tokens) |

---

## 参考:ベンダー横断の料金比較サービス

| サービス | URL | 特徴 |
|---|---|---|
| AI Pricing Guru | https://www.aipricing.guru/pricing/ | 11プロバイダー・112モデルを毎日更新 |
| Price Per Token | https://pricepertoken.com/ | 300+モデルを横断比較。コスト計算機付き |
| DevTk.AI | https://devtk.ai/en/blog/ai-api-pricing-comparison-2026/ | 50+モデルの詳細な比較記事 |

2026/06/12

Docker Compose と Composer を忘れない

# Docker Compose と Composer の違い
| | Docker Compose | Composer |
|---|---|---|
| 役割 | 複数の**コンテナ**を管理するツール | PHPの**パッケージ(ライブラリ)**を管理するツール |
| 対象 | コンテナ・インフラ | PHPのコードレベルの依存関係 |
| 設定ファイル | `docker-compose.yml` | `composer.json` |
| コマンド例 | `docker compose up` | `composer install` |
| 実行場所 | ホスト側(EC2上) | コンテナ内(PHPが動く環境) |
| 用途 | 「アプリを動かす箱(コンテナ群)を準備する」 | 「アプリの中で使う部品(ライブラリ)を揃える」 |

## イメージ図
EC2(ホスト) docker compose ←─ docker-compose.yml 起動・管理 appコンテナ composer ←─ composer.json インストール vendor/(Laravelライブラリ群)
# `vendor/`ディレクトリとComposerの関係

## `vendor/`とは

**Composerでインストールした全PHPパッケージの格納場所**。Laravel固有のものではなく、Composerを使うPHPプロジェクト共通の仕組み。

```
vendor/
├── laravel/
│   └── framework/      ← Laravel本体もここにある(1パッケージとして)
├── symfony/             ← Laravelが内部で使うコンポーネント
├── monolog/             ← ログ出力ライブラリ
├── autoload.php         ← 自動読み込みの起点ファイル
└── composer/
```

「**Laravel = vendor/の中の1パッケージ**」という位置付け。Laravelを使わないPHPプロジェクトでもComposerを使えば`vendor/`は作られる。

---

## 各ファイル・コマンドの役割

| 要素 | 役割 |
|---|---|
| `composer.json` | 「何を使うか」のリスト(依存パッケージの定義) |
| `composer.lock` | 「実際にインストールされたバージョン」の記録 |
| `composer install` | `composer.json`/`composer.lock`に基づき`vendor/`を生成 |
| `composer require` | 新しいパッケージを追加して`composer.json`に記録+インストール |
| `vendor/` | 上記に基づいてダウンロードされた全パッケージの実体 |

---

`vendor/`は基本的に**Gitにコミットしない**(`.gitignore`対象)。サイズが大きく、`composer.json`/`composer.lock`があれば誰でも再現できるため。

2026/06/11

ALBのSSL/TLS認証:外部DNS使用時の設定シーケンス

HTTPS設定 顧客・ベンダー作業シーケンス図 ALBとEC2のHTTPS設定における顧客とベンダーの作業フローを時系列で示したシーケンス図 ベンダー 顧客(外部DNS) AWS / ACM Phase 1:証明書リクエスト ACMに証明書リクエスト作成 (対象: app.example.com, DNS検証) DNS検証用CNAMEレコードを発行 CNAMEレコードを顧客に連携 (名前・値の2項目) Phase 2:DNS検証レコードの追加(顧客作業) 外部DNSに CNAMEレコード追加 DNSレコードを確認 証明書ステータス「発行済み(Issued)」 Phase 3:ALB・EC2構築(ベンダー作業) EC2・ ターゲットグループ構築 ALB作成・HTTPSリスナー(443)に証明書アタッチ HTTP(80)→HTTPS(443) リダイレクト設定 ALBのDNS名を顧客に連携 (xxx.elb.amazonaws.com) Phase 4:本番DNSの切り替え(顧客作業) 外部DNSに CNAMEレコード追加 (app.example.com → ALB) https://app.example.com 接続確認 HTTPS接続・サイト表示確認OK 凡例 リクエスト・指示 レスポンス・通知 担当者内の作業(自己完結) ※Phase 2と4のCNAMEは別レコードです

2026/06/08

SNI(Server Name Indication)

SNIは、SSL/TLSの拡張仕様の一つ。証明書の種類ではない。

| 項目 | SNI | ワイルドカード証明書 | SAN(マルチドメイン)証明書 |
| :--- | :--- | :--- | :--- |
| 対象(レイヤー) | 通信の仕組み・機能(TLSプロトコルの拡張) | 証明書そのものの種類(特殊な名前の書き方) | 証明書そのものの種類(複数名前を書ける仕組み) |
| 実現方法 | サーバー(ALB)に、**別々の証明書を複数枚**登録し、アクセスに応じて切り替える。 | **1枚の証明書**に `*.example.com` と書き、サブドメイン全てで使い回す。 | **1枚の証明書**の「SAN欄」に、異なるドメインを複数箇条書きする。 |
| ドメインの制限 | どんなドメインの組み合わせでもOK(例:`a.com` と `b.net`) | 同一ドメインのサブドメインのみ(例:`abc.com` の配下のみ) | 異なるドメインでもOKだが、上限数(ACMなら100個など)がある。 |

2026/06/07

S3の使い分け

# モック画面提供のシーン

提供方法は以下の2パターン考えられる。

---

## ① S3静的ウェブサイト(閲覧型)

### ■ 概要
- S3にHTMLファイル一式を配置
- 静的ウェブサイトホスティングを有効化
- ブラウザから直接アクセスして閲覧

---

### ■ アクセス制御
- バケットポリシーによるIP制限を実施

 (例)
```
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowSpecificIPOnly",
          "Effect": "Allow",
          "Principal": "*",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::example-bucket/*",
          "Condition": {
            "IpAddress": {
              "aws:SourceIp": "xxx.xxx.xxx.xxx/32"
            }
          }
        }
      ]
    }
```

---

### ■ 特徴

- S3のみで構成可能(最小構成)  
- HTML間リンクがそのまま動作する  
- ユーザーが画面遷移しながら確認できる  
- 開発ベンダーは通常のファイルアップロードで運用可能  

---

### ■ 向いている用途

- モックを「画面として操作・閲覧」させたい場合  

---

### ■ 注意点

- アクセス元IPが固定されている必要がある  
- ID/パスワードによる認証は行わない  

---

## ② S3 + 署名付きURL(ZIP配布型)

### ■ 概要

- モック一式をZIPファイルにまとめる  
- S3にアップロードする  
- 署名付きURLを発行し顧客へ共有する  

---

### ■ 特徴

- S3のみで構成可能(最小構成)  
- URLに有効期限を設定可能  
- 限定的なアクセス制御が容易  
- URL共有のみで利用可能  

---

### ■ 向いている用途

- モックを成果物として配布・ダウンロードさせる場合  

---

### ■ 注意点

- ダウンロードおよびローカル展開が必要  
- Web上での操作性はない  
- 更新時は再ZIP化および再配布が必要  

---

## ■ 比較

| 観点 | ① S3静的サイト | ② ZIP + 署名URL |
|------|----------------|----------------|
| 利用形態 | Web閲覧 | ダウンロード |
| 構成 | S3のみ | S3のみ |
| アクセス制御 | IP制限 | 有効期限付きURL |
| ユーザー体験 | 良い | やや制限あり |
| 更新容易性 | 高い | 低い |

---

## ■ 使い分け方針

- 日常的なレビュー用途  
  → ① S3静的ウェブサイト  

- 成果物としての提供・保管用途  
  → ② ZIP + 署名付きURL  

2026/05/08

Windows上でVIエディターを使用する(gvim)

# インストール
[https://www.vim.org/download.php](https://www.vim.org/download.php)

# カスタマイズ

1. Vimの設定ファイル(_vimrc)を作成
**ファイルパス**: C:\Users\(ユーザー名)\\_vimrc
```
set nobackup
set nowritebackup
set noswapfile
set noundofile
set clipboard=unnamed
```

* set nobackup
  ファイルを上書き保存したときに、古い内容を保存する「バックアップファイル(末尾に~が付くもの)」を作成しない。
* set nowritebackup
  保存処理の最中だけ一時的に作成されるバックアップファイルも作成しない(保存失敗時のリスクヘッジ用ファイルを無効化する)。
* set noswapfile
  編集中にクラッシュした際の復旧用ファイル(.swp)を作成しません。これにより、他のアプリで開いている警告などが出にくくなる。
* set noundofile
  GVimを一度閉じた後も「元に戻す(Undo)」ができるように履歴を残すファイル(.un~)を作成しない。
* set clipboard=unnamed
  Vim内のヤンク(y)や削除(d)を、Windows標準のクリップボードと常に連動させる。
  
```
set guicursor=n-v-c:block-blinkon0,i-ci:ver25-blinkon0
set cursorline
set hlsearch
```

* set guicursor=n-v-c:block-blinkon0,i-ci:ver25-blinkon0
  挿入モード(文字入力中)は縦棒、ノーマルモードはブロック型で、どちらも点滅させない。
  a: すべてのモード(ノーマル、挿入、コマンドラインなど)を対象にする。
  blinkon0: 点滅をオフ(常に点灯)にする。
* set cursorline
  現在の行に下線(またはハイライト)を表示する。
* set hlsearch
  検索結果をハイライト(色付け)する。

```
set guifont=MS_Gothic:h10
set background=dark
colorscheme desert
highlight Normal guifg=#f5f5f5
```
* set guifont=MS_Gothic:h10
  フォント名:hサイズ の形式でフォントの種類とサイズを指定する。
* set background=dark
  背景が「light」か「dark」かを伝えて文字色のトーンを自動調整する。
* colorscheme desert
  デザインパック(desert/ron/slate/industryなど)を適用する。
* highlight Normal guifg=#f5f5f5
  特定の要素(コメント、行番号、背景など)の色や装飾を個別に指定する。

```
" set guicursor=a:blinkon0
```
Vimの設定ファイル(_vimrc)にコメントを記載するには、ダブルクォーテーション " を置く。

人気の投稿