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)にコメントを記載するには、ダブルクォーテーション " を置く。

2026/04/29

Marp for VS Code

# Marp for VS Code クイックチートシート

Marp for VS Code を使って Markdown からスライドを作成する際の  
**よく使う記法・調整方法をまとめたチートシート**です。

---

## Front Matter(基本設定)

Front Matter は **省略可能** ですが、  
テーマ指定やページ番号表示などを行う場合に使用します。

    ---
    marp: true          # Marpを有効化(VS Code拡張では省略可能)
    theme: default      # テーマ(default / gaia / uncover)
    paginate: true      # ページ番号を表示
    header: "タイトル"  # ヘッダー(任意)
    footer: "フッター"  # フッター(任意)
    ---

---

## 改ページと表示制御(Marp使用時)

    ---     # 通常の改ページ

    ___     # ヘッダー・フッター・ページ番号を非表示にして改ページ

---

## 文字配置・簡易レイアウト

Marp では HTML を使用できます。

**中央寄せ**

    <div style="text-align:center">
    中央揃えテキスト
    </div>

---

## 画像の扱い(Marp拡張)

**サイズ指定**

    ![width:400px](image.png)

**複数画像の横並び**

    ![](a.pngbg](image.png)

**背景画像+明るさ調整**

    ![bg brightness:0.6](image.png)

---

## スライド全体の余白を調整

スライド外周の余白を減らし、表示領域を広げます。

    <style scoped>
    section {
      padding: 30px;
    }
    </style>

---

## 表のサイズ・視認性調整

表がスライドからはみ出る場合の定番設定。

    <style scoped>
    table {
      font-size: 60%;
    }
    table th,
    table td {
      padding: 4px 8px;
    }
    </style>

---

## 個別スライド専用スタイル(Marp)

特定のスライドでのみ CSS を適用したい場合に使用します。

    <style scoped>
    h1 {
      color: #0066cc;
    }
    </style>

---

## その他のオプション例

**スライドサイズ指定(16:9)**

    ---
    size: 16:9
    ---

※ Front Matter 内に記述

---

## 参考リンク

- Marp 公式  
  https://marp.app

- Marp for VS Code  
  https://marketplace.visualstudio.com/items?itemName=marp-team.marp-vscode

2026/03/22

TrendAI Vision One™ (PAYG)

# サインイン画面
[TrendAI Vision One™ サインイン](https://signin.v1.trendmicro.com/)

# サブスクリプションの種類
- 従量課金(PAYG)
[TrendAI Vision One™ (PAYG)](https://aws.amazon.com/marketplace/pp/prodview-vs2l7sl2ogwvg)
- 12カ月契約
[TrendAI Vision One™](https://aws.amazon.com/marketplace/pp/prodview-u2in6sa3igl7c)

|ディメンション|説明|費用/単位|
|----|----|----|
|Endpoint Security - Small|EC2インスタンス(マイクロからミディアム)、ワークスペース、またはその他のクラウド(1 vCPU)あたり1時間あたり|$0.011|
|**Endpoint Security - Medium**|EC2インスタンス(大規模)、ワークスペース、またはその他のクラウド(2 vCPU)あたり1時間あたり|**$0.032**|
|Endpoint Security - Large|EC2 インスタンス (XL)、ワークスペース、またはその他のクラウド (4 vCPU) あたり 1 時間あたり|$0.047|

\$0.032 * 24 * 30 = \$23.04/月
\$23.04 * 150 = 3,456/月

# 新規導入の流れ
## 1. サブスクライブ
1. AWS Marketplaceから「TrendAI Vision One™ (PAYG)」を検索
2. TrendAI Vision One™ (PAYG) から「購入オプションを表示」
3. サブスクライブを選択

## 2. サブスクリプションをTrend Vision Oneへリンク
1. アカウントを所有していればTrend Vision Oneへサインイン、なけばサインアップ
2. TrendAI Vision One™ (PAYG)を有効化(アカウントへ通知メールが届く)
3. コンソールをプロビジョニングする地域を選択

## 3. AWSアカウントを連携
1. Cloud Security → Cloud Accounts → Add Cloud Account
2. CloudFormationよりスタックを起動

## 4. 製品インスタンスを作成
1. インスタンスタイプに「Server & Workload Protection」を選択して製品インスタンスを作成

## 5. ポリシー作成と割当
1. [Endpoint Security] → [Server & Workload Protection] → [ポリシー]より
2. 継承元ポリシーを選択
3. 既存のコンピュータの現在の設定を、このポリシーのベースにする場合はYESとしてコンピュータを選択(既存コンピュータがなければNoで可)
4. 不正プログラム対策などの試行設定を選択
5. コンピュータへ手動でポリシーを割り当てる場合は、[コンピュータ] → [処理] → [ポリシーの割り当て] を選択し、上で設定したポリシーを適用

## 6. エージェントインストールおよびポリシー割り当て(デプロイスクリプトを使用)
エージェント導入方法は2通りあり
### エージェントを手動インストールする方法
この場合、ポリシー割り当ては別途手動で適用となる
[Trend Micro Vision One Endpoint Agent (Linux版) インストール手順](https://success.trendmicro.com/ja-JP/solution/KA-0011571)

### デプロイメントスクリプトを使用する方法
[デプロイメントスクリプトを使用してエージェントをデプロイする](https://docs.trendmicro.com/ja-jp/documentation/article/trend-vision-one-using-endpoint-deployment-script)
1. [Endpoint Security] → [Endpoint Inventory] → [エージェントインストーラ]より
2. [Deployment Script]を選択
3. 保護タイプに「Server & Workload Protection」を選択し、OSやProtection Manager、エージェントポリシーを選択
4. シェルスクリプトをダウンロード
5. ダウンロードしたシェルスクリプトをEC2上で実行

### エージェントのアンインストール方法
[Linuxエージェントを手動でアンインストールする](https://docs.trendmicro.com/ja-jp/documentation/article/trend-vision-one-manually-uninstall-linux-agents#task_rpp_5zq_pgc)

# 外部ユーザへ一時的な操作権限を与える方法
1. [Administration] → [User Accounts] → [Add User]より
2. ローカルアカウントを選択、メールアドレス及び必要な権限を付与して招待メールを送信
3. 招待メールの確認リンクを24時間以内に押下し、パスワードを設定
4. 作業終了後、管理画面からそのアカウントを削除

人気の投稿