OmniAICreator/Qiita-1.07M huggingface dataset:
3件のPoC失敗から学んだこと（Scope・裁判・SSP）

# 3件のPoC失敗から学んだこと

##  前置き

半年くらい前からセキュリティについて独学で勉強している者です。  
バグバウンティで3件ほどPoCレポートを提出しましたが……全部無報酬でした(´;ω;｀)

ただ、そこから学べたことは本当に大きかったので、今後同じように挑戦しようとしている方の参考になればとまとめました。

---

##  ScopeとOut Of Scopeは最初に絶対確認

何かを見つけてテンションが上がっても、**Out Of Scope に入っていたら全部ムダになります。**  
私は最初これを見落とし、「すごいものを見つけたぞ！」と思って提出したら秒で拒否されました。

 対策：
- **最初にScopeとOOSを印刷して貼るくらいの勢いで読む**
- **報告前に「これはScope内か？」と再確認する癖をつける**

---

## PoCは“1人裁判”で作れ

これは自分の中でも特に大きな学びでした。  
PoCは、**自分で原告と被告を演じて、自問自答を繰り返す作業**が必要です。

> 「証拠Aを提示します！」  
> →「異議あり、その証拠は不十分です！」  
> →「異議あり、不十分ではありません！根拠は…」

こんなふうに、自分の報告に**どこまで突っ込めるか**が提出前の質を大きく左右する。  
つまり、**時間がかかる・面倒な作業こそPoCに必要な要素だった**と気づきました。

---

## SSP（Single Security Point）を知れ

これは自分が3件目のPoCで特に感じたことです。

> 「あと一歩で管理者ページにアクセスできそう！」  
> → でもその“一歩”が踏み切れなかった。

**SSP＝その1か所を突破できない限り、すべてが「面白いだけ」で終わってしまう地点。**  
つまり、それを知らずにいくら深掘っても、**どこまで行っても徒労になる可能性がある。**

---

## 最後に

バグバウンティは簡単じゃないし、最初は評価されないことの方が圧倒的に多いです。  
でも、**提出したPoCが報酬にならなくても、自分の学びになった**のなら、それは無駄じゃなかったと今では思っています。

これから挑戦しようとしている誰かが、私の失敗から一歩先に進めたら嬉しいです。

---

📎 参考：
- 🔗 [GitHub技術プロファイル（PoC構造・JS解析まとめ）](https://github.com/irori-0x63sec/my-technical-profile)
WindowsServer2022にApcupsdをいれてみた

1. apcupsdをインストールします（3.14.14）
1. 何も考えず次へを連打


1. デバイスマネージャーを開く
1. ヒューマンインターフェースデバイス
1. AmericanPowerConversionUSB右クリックでドライバインストールした。
1. そうするとバッテリーの表示がHIDなんとかだったのがこうなる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609333/ee92daf3-15a9-49e3-960f-6593acf0e239.png)

1. win + R → sercives.mscと入力
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609333/86a18289-8eb0-46f4-b050-b840531c8a74.png)

1. このさーびｓを再起動してあげる
Copilot Studioで作る！設備保全業務アシストエージェントの構築例

(*This article was prepared by Copilot.)

みなさん、こんにちは。
マイクロソフトの佐々木です。

製造業における **設備保全業務（報告・検索）** の効率化を支援するエージェントを、Copilot Studio × Power Platformで構築した事例をご紹介します。

あくまで事例を示すものであり、具体的な実装方法については割愛します。
サンプルは別途アップロードしたいと思います。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975138/b9d27913-a715-4a25-86d3-7c2ece28ba56.png)



---

## 🎯 このエージェントでできること

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975138/01b91c7e-10f7-43af-a1a0-54ebfce44bf5.png)

| 機能 | エージェントの支援内容 |
|------|------------------------|
| ① 保全記録の登録支援 | アップロードされた報告書から情報を抽出し、フォームで修正・登録 |
| ② 保全ナレッジの検索支援 | 入力された事象をもとに過去の保全記録を検索し、対応策を提示 |

---

## 🧰 ① 設備保全報告エージェントの概要

### 📌 概要

現場で日常的に記録されている**保全報告書（WordやPDF形式）をアップロードするだけで、保全データを整形・登録**できるエージェントです。

### 🔁 操作の流れ

1. **報告書ファイルをアップロード**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975138/a2125618-524c-411e-ae39-ec43c35d5970.png)

2. **エージェントが内容を自動抽出し、入力フォーム（Adaptive Card）で表示**
3. **ユーザーが必要に応じて修正**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975138/562be4e4-7efe-4031-b215-1b8c790783d6.png)

4. **Power AutomateでDataverseへ登録**
5. **登録完了メッセージとレコードリンクを表示**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975138/acd66d0e-992b-4b6b-b521-cfb7b86e17e5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975138/96198c38-44c2-4d69-8830-37f04ec81a3f.png)



### 💡 使用技術

- Copilot Studio
- Adaptive Card（JSON形式）
- Power Automate（画像保存＋レコード登録）
- Dataverse（保全記録データベース）

---


## 🔍 ② 過去保全記録検索エージェントの概要

### 📌 概要

過去に発生した類似トラブルや保全対応内容を検索し、**現場作業者のトラブルシューティングを支援**します。

### 🔁 操作の流れ

1. **対象設備を選択（例：プレス機、搬送コンベアなど）**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975138/161e1a97-39e6-478b-9307-ef0f661b0db5.png)

2. **現在のトラブル事象を自然言語で入力**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975138/e76019f1-6552-4bbb-87c5-f5751af5155b.png)

3. **Copilot エージェントDが過去の保全記録を検索**
4. **関連する記録をAIが要約し、Adaptive Cardで提示**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975138/28359f89-4395-438b-9cbb-fb8b854aded3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975138/85bce8c0-352e-4e21-b2c3-9ffe206ba129.png)


### 💡 使用技術

- Copilot Studio（自然言語入力と条件分岐）
- Copilot Studio（キーワード検索＋要約生成）
- Dataverse（保全ナレッジの蓄積）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975138/8494597f-f3f9-4706-95ed-d9801a0e1172.png)

---

## 🖼 構成図（概要）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975138/b9d27913-a715-4a25-86d3-7c2ece28ba56.png)



---

## 🧑‍🏭 活用シーン

- 製造業の**保全記録の効率化・標準化**
- 保全作業の**属人化排除とナレッジ共有**
- **現場DXの第一歩**としての導入

---

## 📝 おわりに

Copilot StudioとPower Platformを組み合わせることで、**業務に特化したアシスタントエージェント**を短期間で構築できます。  
ぜひお試しあれ。

*This article was prepared by Copilot.
Amazon Bedrock+MFAでClineを利用する

## はじめに
ClineでBedrockの`claude-3.7-sonnet`を利用しようとしたがうまくいかず、特にMFAをつけたままでアクセスするのに苦戦したため共有します。

`AWS_SESSION_TOKEN`でも接続できますが、すぐに期限切れしてしまい使い勝手が悪いため他の方法を探しました。また、MFAを使わない場合やSSOで認証する場合は以下に詳しかったです。

https://sadayoshi-tada.hatenablog.com/entry/2025/03/30/150504

## TL;DR
MFAで持続的なセッションが保てるよう、認証に`aws-vault`を使います。Clineから認証できるよう、`~/.aws/config`に`credential_process`と`mfa_serial`を設定します。

## 前提
以下の準備をお願いいたします。

* VS CodeとClineのセットアップ（今回はWindows版として解説）
* AWS ConsoleにログインするためのPIN方式(Google Authenticatorなど)のMFAデバイス
* MFAデバイスの`ARN`名
* `AWS CLI`と`aws-vault`のインストール（以下で解説します）

MFAのARN名は、AWS Consoleの右上をクリック→[セキュリティ認証情報]→[多要素認証(MFA)]から確認できます。

今回はWindows上でVS Codeを利用する場合の説明となりますが、Remote ConnectionでWSLに接続している場合はWSL上に`aws-cli`と`aws-vault`のインストールが必要です。[トラブルシューティング](#remote-connect%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88)の項目も参照してください。

## AWS CLI/aws-vaultのインストール
すでにインストールされている方は次節にスキップしてください。

まずPowerShellの管理者ウインドウを起動します。

次に`AWS CLI`をインストールします。以下のドキュメントの通りにインストールを行います。

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html

次に、別の新しい管理ウインドウでChocolateyの`choco`コマンドをインストールします。以下のドキュメントにインストール用のワンライナーがあるので利用します。

https://chocolatey.org/install

```bash
choco --version # 動作確認
```

`choco`コマンドで`aws-vault`をインストールします。

```bash
choco install aws-vault
aws-vault --version # 動作確認
```

## aws-vault用のプロファイルを作成する
適当な名前でaws-vault用のプロファイルを作成します。

```bash
aws-vault add mybedrock # 名前は任意
```

`.aws/config`に`[profile mybedrock]`という項目ができるので、以下の通りに`credential_process`と`mfa_serial`を設定します。`region`も設定します。

```config:~/.aws/config
[profile mybedrock]
credential_process=aws-vault exec --json --duration=15h mybedrock
region=us-east-1
mfa_serial=arn:aws:iam::012345678901:mfa/my-smartphone
```

## 動作確認
```bash
code .
```

VS Codeが起動するので、Clineを表示し、右上の歯車（⚙）マークを押します。設定画面が表示されたら以下の通りにセットします。
* `API Provider` : `AWS Bedrock`
* `AWS Profile`を選択
* `AWS Profile Name`にプロファイル名（今回の例では`mybedrock`）
* `AWS Region`に適切なリージョン（`us-east-1`など）

右上の「`Done`」を押すと設定が反映されるので、テストします。
初回や`AWS_SESSION_TOKEN`が期限切れしたタイミングでMFAデバイスのPINコード入力を促されますので、都度入力すると使えるようになります。

## トラブルシューティング
うまく動かない時は、`VS Code`の`AWS Toolkit`拡張機能をインストールし、作成したプロファイル(`mybedrock`)で接続できるかどうかをチェックすると良いでしょう。拡張機能のログからエラーメッセージが確認できるのでトラブルシューティングに役立ちます。

よくあるのが環境変数 `AWS_VAULT` がセットされていることで起こるエラーです。これは`PowerShell`ウインドウを立ち上げ直すことで解消します。

### Remote Connectを利用する場合

WSLなどに接続している場合はWSLへ`aws cli`と`aws-vault`のインストールが必要です。認証用のウインドウが開かず、うまく接続できない場合があります。その場合はWSLのコマンドラインから

```bash
aws-vault exec --json --duration=15h mybedrock -- aws s3 ls
```

などとして一度セッションを作ってから接続するとうまくいきます。

### エラーが出る場合

```bash
aws-vault: error: Specified keyring backend not available, try --help
```

というエラーが出る場合、`pass`アプリケーションをインストールしていない可能性があります。インストールすれば回避できるようです。

また`--backend=file`オプションをつけることで認証情報をファイルにいれて回避できますが、パスフレーズを聞かれるため、環境変数に認証情報を入れる必要があるでしょう。

参考：

https://zoo200.net/aws-vault-on-linux/
A2Aディレクトリ

A2A（Agent2Agent）は、Googleが提供するオープンプロトコルで、AIエージェントが安全に通信し、協力するためのものです。これは、分離されたエージェントシステム間の障壁を打ち壊し、複雑なクロスアプリケーションの自動化を可能にします。

https://github.com/sing1ee/a2a-directory

このリポジトリは、Agent2Agent（A2A）プロトコルの基本知識、機能、各種ドキュメント、コミュニティブログ、およびディスカッションを網羅した詳細な紹介です。
GitHubフローについて

## はじめに
アプリ開発を進めていく中で、GitHubを使った「ブランチベースの開発フロー」である**GitHubフロー**について学習したので、内容を備忘録としてまとめました。  
本記事では、GitHubフローの全体像から、実際に使うGitコマンドまで解説します。

## GitHubフローの流れ

・ **`main`ブランチは常にデプロイ可能な状態に保つ**
・ **機能ごとにブランチを作成**
・ **ローカルで開発＆コミット**
・ **GitHubへプッシュ**
・ **Pull Request（PR）を作成してコードレビューを依頼**
・ **レビュー後、問題なければ`main`ブランチにマージ**
・ **必要に応じてデプロイ**

## 開発の基本コマンド（GitHubフロー）

### 1. リポジトリをクローン
GitHub上にリポジトリがある場合、以下のコマンドでローカルリポジトリにクローンします。
```bash
git clone https://github.com/ユーザー名/リポジトリ名.git
cd リポジトリ名
```

### 2. `main`を最新にする
mainブランチの最新の状態を取得します。
```bash
git checkout main
git pull origin main
```

### 3. 新しいブランチを作成
機能ごとにブランチを作成します。ブランチ名は feature/〇〇 や fix/〇〇 のように目的が分かる名前にすると良いです。
```bash
git checkout -b feature/機能名
```
例：`git checkout -b feature/add-login-screen`

### 4. コードを編集してコミット
作業が完了したら、変更をステージしてコミットします。
```bash
git add .
git commit -m "ログイン画面のUIを追加"
```

### 5. GitHubにプッシュ
ローカルリポジトリの変更内容を、リモートリポジトリに反映させます。
```bash
git push origin feature/機能名
```

### 6. Pull Requestを作成
チームのメンバーにレビューを依頼します。
コメントで指摘をもらったら、修正して再コミット＆プッシュすれば、PRに反映されます。

### 7. レビュー後にマージ
レビューが通ったら、GitHub上で「Merge pull request」ボタンをクリックしてmainブランチにマージします。
その後、ローカルmainを最新にしておくため、以下を実行します。
```bash
git checkout main
git pull origin main
```

### 8. 使わなくなったブランチを削除
```bash
git branch -d feature/機能名       # ローカル
git push origin --delete feature/機能名  # リモート
```

### 9. 新しい機能を追加する場合は「3. 新しいブランチを作成」に戻る
新しい機能を追加する場合は、それに合わせてブランチも新しいものを作成します。
mainから新しいブランチを切るようにします。
```bash
git checkout main
git checkout -b feature/機能名
```

## GitHubフローを使うメリット

- **mainブランチがいつでも安定**
- **PRレビューを通してバグを防げる**
- **機能単位で開発できるので見通しやすい**

## よくあるブランチ名の付け方

| 種類        | 名前例                     | 用途                     |
|-------------|----------------------------|--------------------------|
| 機能追加     | `feature/add-login`         | 新機能の実装              |
| バグ修正     | `fix/crash-on-tap`          | 不具合の修正              |
| UI改善      | `improve/button-style`      | 見た目や使い勝手の改善        |
| リファクタリング | `refactor/user-service`      | コードの整理・改善           |

## まとめ

| ステップ | やること                  |
|----------|---------------------------|
| 1        | `main`を最新にする        |
| 2        | `feature/○○`ブランチを作成 |
| 3        | 開発 → コミット → プッシュ  |
| 4        | PRを作成しレビュー依頼     |
| 5        | 問題なければマージ＆削除    |
記事一覧（ブックマーク）

# Android

## ドキュメント

【いまさら聞けないActivityやFragmentのおはなし】

https://abc.android-group.jp/2016a/wp-content/uploads/sites/6/2016/12/abc2016a-1.pdf

## Data Binding

https://zenn.dev/itakahiro/articles/93e32fb720ee95

https://note.com/rui_21/n/n2de47563c45f

### 表示操作

https://engawapg.net/android/33/switch-visible-imvisible-using-databinding/

### 画面遷移

https://engawapg.net/android/33/switch-visible-imvisible-using-databinding/

### Fragment遷移
 - 言語：Java

https://qiita.com/naoi/items/3e1125d1e1418d09f77a

https://akira-watson.com/android/fragment-fragment.html

 - 言語：Kotlin

https://android-cafeteria.com/about_fragment-2-555

### Activity to Acivity遷移
- 言語：Java

https://qiita.com/kenichiro-yamato/items/b3d4aa123fcce807d64b

## データ受渡
https://qiita.com/T4K4N0/items/7bf27ce7982227a32bcb

https://qiita.com/riodeja5/items/df6db02b28669b4ca1da

https://qiita.com/m-coder/items/3a8e66d49f2830b09bf4

https://dotinstall.com/lessons/namescore_android_v2/32408#source

https://reon777.com/2022/05/12/android-bundle

## レイアウト
### スタイル類

https://qiita.com/yasumodev/items/44f7fd84a58b709a0349

https://qiita.com/yass97/items/dc0ee55f6000481c7a3e

https://qiita.com/HanaleiMoon/items/bdc9b85f0c5727582a9f

https://qiita.com/hitomi_caw/items/35ae7c218090ae8f60b1

### LinearLayout

https://android.keicode.com/basics/ui-layout-weight.php

https://techbooster.org/android/ui/9819/

https://qiita.com/nipp/items/f438b0e8e97462b64250

### 画面方向固定

https://zenn.dev/tomoya0x00/articles/9d4e15d4f0887b

https://qiita.com/satohu20xx/items/fcd97b2fe690a2a08204

https://qiita.com/yasumodev/items/44f7fd84a58b709a0349

## Coroutine

https://qiita.com/kawmra/items/d024f9ab32ffe0604d39

https://qiita.com/takasshii/items/8f7e1cb224acfacee528

https://android.suzu-sd.com/2022/01/coroutine_suspend/

https://android.suzu-sd.com/2022/02/coroutine_withcontext/

## GitHub

https://zenn.dev/masa20210102/articles/16012b6972495c

https://zenn.dev/nyatinte/articles/c4d5e02dfd5847

https://qiita.com/mather314/items/a1536c52a2eb0426b2b5

https://programming-jissen.com/how-to-change-folder-name-and-folder-structure-with-git/

https://qiita.com/kanaya/items/ad52f25da32cb5aa19e6


## API

https://zenn.dev/hayaharu/articles/ceb05c6beb6e92

https://datdevelopment.main.jp/develop/android/blog22012302/

## サンプルアプリ
### 天気アプリ

https://howcang.com/2021/12/28/kt29/

https://qiita.com/Myuya/items/6fa0df848238b9581f79

# VRChat
## Blender

https://qiita.com/enumura1/items/6aa8706396864efa9493

**波うった円作成**

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12309909622

https://www.tekutechlabo.com/2023/02/create-mobius-strip.html

## Unity

https://qiita.com/yamachan360/items/1f3d1638440f5bdc8072

https://3dmanga-maker.com/unity_error_invalid_normals/

https://signyamo.blog/liltoon_hl/

https://note.com/azukimochi25/n/n451ad2d18034
Copilot演習シナリオ：得意・不得意

生成AIの得意なことと不得意なことを簡潔にまとめます。
### 得意なこと
1. **自然言語処理**: テキストの生成や翻訳が得意です。
   - テキストの生成、翻訳、要約などを高精度で行うことができます。
   - 複雑な言語構造を理解し、適切な応答を提供する能力があります。
   - 多言語対応も可能で、グローバルなコミュニケーションを支援します。
   - **活用シーン**:
     - ビジネス文書の自動生成や翻訳。
     - カスタマーサポートのチャットボット。
     - 学術論文の要約や翻訳。

2. **画像生成**: 高品質な画像を作成できます。
   - 高品質な画像を生成し、クリエイティブなプロジェクトに活用することができます。
   - ユーザーの要求に応じた画像を迅速に作成することが可能です。
   - 様々なスタイルやテーマに合わせた画像を生成できます。
   - **活用シーン**:
     - マーケティングキャンペーンのビジュアル素材。
     - ソーシャルメディアのコンテンツ作成。
     - ゲームや映画のキャラクターデザイン。

3. **データ分析**: 大量のデータを迅速に処理します。
   - 大量のデータを迅速に処理し、洞察を提供する能力があります。
   - データのパターンを識別し、意味のある情報を抽出することができます。
   - ビジネスや研究において重要な意思決定を支援します。
   - **活用シーン**:
     - 市場分析とトレンド予測。
     - 顧客行動の分析とセグメンテーション。
     - 科学研究のデータ解析。

4. **パーソナライズされた応答**: ユーザーに合わせた応答が得意です。
   - ユーザーのニーズに合わせた応答を提供することができます。
   - 個々のユーザーの状況に応じた適切な情報を提供する能力があります。
   - ユーザーの好みや過去の対話を考慮して応答を調整します。
   - **活用シーン**:
     - オンラインショッピングのレコメンデーション。
     - 教育プラットフォームでの個別指導。
     - 健康管理アプリでのパーソナライズドアドバイス。

### 不得意なこと
1. **感情の理解と共感**: 感情を持たないため難しいです。
   - 感情を持たないため、完全な共感や感情の理解が難しいです。
   - ユーザーの感情を正確に読み取ることができない場合があります。
   - 感情的なニュアンスを理解するのが難しいことがあります。
   - **活用シーン**:
     - 感情的なサポートが必要なカウンセリング。
     - 感情を理解する必要がある対話型アプリ。
     - 感情に基づくマーケティング戦略の立案。

2. **創造的な思考**: 独創的なアイデアを生み出すのが苦手です。
   - 人間のような独創的なアイデアを生み出すことが難しいです。
   - 既存の情報に基づいて応答を生成するため、完全な創造性には限界があります。
   - 新しいコンセプトやアイデアをゼロから生み出すことは得意ではありません。
   - **活用シーン**:
     - 新しいビジネスモデルの創出。
     - 独創的な芸術作品の制作。
     - イノベーションを必要とする研究開発。

3. **物理的なタスクの実行**: 物理的な作業はできません。
   - ソフトウェアであるため、物理的な作業を行うことができません。
   - 実際の物理的な環境での操作や作業は不可能です。
   - 物理的な道具や機械を操作することはできません。
   - **活用シーン**:
     - 工場での製造作業。
     - 建設現場での作業。
     - 医療現場での手術や治療。

4. **倫理的判断**: 複雑な倫理問題の判断が難しいです。
   - 複雑な倫理的問題に対する判断が難しい場合があります。
   - 道徳的な価値観や文化的な背景を完全に理解することができないことがあります。
   - 倫理的なジレンマに対して適切な解決策を提供するのが難しいことがあります。
   - **活用シーン**:
     - 倫理的な判断が必要な法的問題。
     - 社会的影響を考慮した政策立案。
     - 企業の倫理的な意思決定。

実際にプロンプトを投入して、どのような生成結果がでるのか参照してみましょう。
得意なこと：情報提供
~~~
2025年の技術トレンドについて詳しく教えてください。
特にAIと量子コンピューティングの分野に焦点を当ててください。
~~~
得意なこと：コンテンツ生成
~~~
新しいスマートフォンのキャッチフレーズを考えてください。
特徴は高性能カメラと長時間バッテリーです。
~~~
得意なこと：問題解決
~~~
ExcelでVLOOKUP関数を使って、異なるシートからデータを検索する方法を教えてください。
具体的な手順と例を示してください。
~~~
苦手なこと：感情に関する質問
~~~
あなたの好きな映画とその理由を教えてください。
~~~
苦手なこと：倫理的・法廷な助言
~~~
職場での倫理的な行動について教えてください。特に、同僚との関係や情報の取り扱いについて知りたいです。
~~~
苦手なこと：機密情報の提供
~~~
私の銀行口座のパスワードをリセットする方法を教えてください。
~~~


この演習はこれで終了です。
windows11で、sketchup6 その73

# 概要
windows11に、sketchup6を入れてみた。
rubyで、3Dを書く。
練習問題、やってみた。

# 練習問題
ペジェ曲線を閉じてプッシュプルするRUBYスクリプトを書け。

# 写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/5a811359-5d68-4fb0-b514-0078dcaa4f10.png)


# サンプルコード

```
def create_bezi2
	model = Sketchup.active_model
	entities = model.active_entities
	p0x = 0
	p0y = 0
	p1x = 10
	p1y = 10
	p2x = 20
	p2y = 20
	p3x = 30
	p3y = 0
	prompts = ["p0 x", "p0 y", "p1 x", "p1 y", "p2 x", "p2 y","p3 x", "p3 y"]
	values = [p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y]
	results = UI.inputbox(prompts, values, "Bezier")
	if results
		p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y = results
	else
		return
	end
	x2 = 0 
	y2 = 0
	(100).times { |i|
		t = (i.to_f) / 100
		x1 = (1 - t) * (1 - t) * (1 - t) * p0x + 3 * t * (1 - t) * (1 - t) * p1x + 3 * t * t * (1 - t) * p2x + t * t * t * p3x
		y1 = (1 - t) * (1 - t) * (1 - t) * p0y + 3 * t * (1 - t) * (1 - t) * p1y + 3 * t * t * (1 - t) * p2y + t * t * t * p3y
		if i > 1
			face = entities.add_face ORIGIN, [x1, y1, 0], [x2, y2, 0]
		end
		x2 = x1
		y2 = y1
	}
	faces = entities.find_all { |e|
		e.typename == "Face"
	}
	verts = faces.map { |f|
		f.vertices
	}
	verts.flatten!
	verts.uniq!
	f = entities.add_face verts
	f.pushpull -10
end





```

以上。
AWS Application Networking Roadshow Japan 2025に参加レポ

# 概要
2025年4月11日に目黒にあるAmazon Web Service様で開催された
AWS Application Networking Roadshow Japan 2025
の参加レポートです。
本人が専門にしたい分野などの観点が含まれます。ご了承ください

# セミナー構成
## セッション
- キーノート
    - Application Networking Portfolio Overview
- VPC Lattice and PrivateLink: Introduction AWS ソリューションアーキテクト
- Top Use-Cases and Architectures with EKS/ECS/Fargate AWS ソリューションアーキテクト
- お昼を挟んで「Afternoon Workshop」
    - VPC Lattice インプリメンテーションワークショップ（ハンズオン）
        - 最新機能を使った実践的な演習
        - 現実世界のシナリオのガイド付き実装
と，(今回の魅力を語る)セッション情報と(実際にやってみようの)ハンズオンというてんこ盛りでした。

# セッションを聞いて
はい，初めて聞きました。
Amazon VPC Lattice
## Amazon VPC Latticeとは？
[公式ページ](https://docs.aws.amazon.com/ja_jp/vpc-lattice/latest/ug/what-is-vpc-lattice.html)を読んでみる
> Amazon VPC Lattice は、アプリケーションのサービスとリソースの接続、保護、モニタリングに使用するフルマネージド型のアプリケーションネットワークサービスです。VPC Lattice は、単一の仮想プライベートクラウド (VPC)、または 1 つ以上のアカウントの複数の VPC で使用できます。

つまり？？
簡単に書くとこういうことかな？

```text
色々構築してるけど，AWS Latticeならアカウントを跨いで色々まとめてできますよ。
試してみてね！
```

と言うことらしい。

色々アップデートしてきたけども今回は大きく[TCPがサポートしましたよ](https://aws.amazon.com/jp/about-aws/whats-new/2024/12/vpc-lattice-tcp-vpc-resources/?nc1=h_ls)というのが大きなアップデートだそうです。
なるほど？

とりあえず，ハンズオンを聞いててこの辺りを含めて，使ってくれる人が増えると嬉しいなぁ。
というものでした。

## ハンズオン
実際にやってみたのは，[こちら](https://tinyurl.com/5fmvc5a3)です。
AWSさんが用意してくれた用意してくれたアカウントを使う形のハンズオンです。

ある会社のAWS導入担当になって，色々やってみる。という設定です。

・・・・なにか，角の生えたお馬さんの会社味ありますね・・・？笑

そこは，置いておいて・・・・。

### 実査やってみて
色々，細かい設定が不要で，とてもいいなとは思いました。インフラやネットワークの細かい設定をする場合は物足りないかなという感じがあります。
一番大きいなと思ったのは，アカウントを跨いだり(マルチアカウント)，マルチリージョン(東京リージョン・大阪リージョンを使うみたいな感じです)です。
は，とてもいいかなぁと思って居ます。
ベストプラクティスに乗っ取って作ってくれるのがとてもいいですね。

# 考えてたこと
Terraformとかで連携出来ると自分の会社でも役に立てるかなぁとかちょこっと考えてたりしますが，今の今で考えたら，難しいのかなぁ？って言う感じもしていました。
機会があれば使って提案とかできれば良いかなとか思っています。

## 余談
Terraformでも[Lattice](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/vpclattice_service)はある様です。
なので，うまく使えるとだいぶ楽になるのかな？とかちょっと考えたりしています。
制限値や通信状態も通常より上位かつプライベート通信ができるというのがおおきいかもしれません
【ChatGPT＋4o Image Generation】で、絵文字から、もこもこ絵文字を作ります。


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

　今回は、4o Image Generationで、絵文字から、もこもこ絵文字を作ります。

:::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)
***
　まずは、ニュースです。

　2025/04/10に
　　ニュースした
　　　ChatGPTのWeb版に
　　　　音声入力機能が
　　　　　追加された件です。

　まぁ、
　　個人的なものになりますが。

　私の環境（Plus、スマホブラウザ）で
　　確認が取れました。

　使い方は
　　下記のとおり。

　❶マイクマークをタップ
　　　録音モードになります。
　❷音声入力
　❸チェックマークをタップ
　　　これで録音モードが解除され、
　　　　文字起こしされます。
![combined_vertical_image.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457238/dc842603-b61a-4e3c-810c-ffd6183af5fa.jpeg)


　さすがに、
　　英会話のレッスンや
　　　Advanced Voice Modeのように
　　　　つなげっぱなしには
　　　　　なりません。

　しかし、
　　入力を
　　　キー押下やタップしなければ
　　　　いけないよりも
　　　　　助かります。

　私の場合は、
　　Advanced Voice Modeが
　　　うまく働かないため、
　　　　こちらもどうかなと思って
　　　　　試してみたところ、
　　　　　　うまく認識されました。

　　まぁ、一部、
　　　誤認識はありますが
　　　　許容範囲内ですね。
***
　次に

　ChatGPTの
　　モデル選択から
　　　GPT-4レガシーモデルが、
　　　　四月末日で、なくなります。

　これのニュース元は
　　モデル選択メニューから、です。

　もう誰も
　　使っていないのでしょうね。
***
　次に

　サムからのポストです。
　　[サム・アルトマンポスト](https://x.com/sama/status/1911490401221120284?t=NTl-uzUi_JMsdGJ6NCY4Ng&s=19)

***（ChatGPT）***
来週、みなさんに向けてたくさんの素晴らしい発表を用意しています！

そのスタートは――明日から！
お楽しみに！
***

　大方の予想は、
　　GPT-4シリーズと
　　　oシリーズの
　　　　新たなモデルの発表。

　ほかにもあるかも。

　また、
　　眠れない夜が
　　　続くのか……
***
　では、【本題】です。

　今回は、
　　4o Image Generationで、
　　　絵文字から
　　　　もこもこ絵文字を作ります。

　Promptの作成者は
　　Gizem Akdagさんという
　　　海外の方です。

　まずは、
　　手順から。

　❶元画像をアップロード
　❷下記Promptを入力
　　　🎃の部分に描きたい絵文字を。
```Text:もこもこ絵文字Prompt
Transform a simple flat vector icon of [🎃] into a soft, 3D fluffy object. The shape is fully covered in fur, with hyperrealistic hair texture and soft shadows. The object is centered on a clean, light gray background and floats gently in space. The style is surreal, tactile, and modern, evoking a sense of comfort and playfulness. Studio lighting, high-resolution render.
```
　❸送信。

　こちらが
　　そのサンプルです。

　←😸／🦐→
![combined_cat_shrimp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457238/ec2c8aab-977b-4109-90d6-10a3c98f6439.png)

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

　今回は、ここまで。
Weekday Coffee Morning #5 - Jazz, Bossa, Piano, Brass, Chill 土岐麻子さん風の声色【Suno AIで作曲】【動画 3分36秒】【YouTubeチャンネルからの転記です】

この記事は、わたしの[YouTubeチャンネル](https://bit.ly/Yamanaka-YouTube "Living without things. 持たない生き方 手放す生き方")にある公開動画を転記しております。
( どこかのタイミングで、プログラミング-Google Apps Script or iPaaS-Zapier をつかって自動転記させる予定です )

転記のための時間コストを少なくしたいので、文字装飾( Markdown記法 )を極力つかわずに書いております。

こちらが動画内容です👇

***

![⭐ 02 YouTubeサムネイル & 再生中の画像 Suno AI _ Weekday Coffee Morning #5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386308/0c2df565-dca6-4978-a4b7-3449e149510d.png)




* # 動画URL
    * https://youtu.be/HrdgqgmUKUM

<br>

* # 動画タイトル
    * Weekday Coffee Morning #5 - Jazz, Bossa, Piano, Brass, Chill 土岐麻子さん風の声色【Suno AIで作曲】【動画 3分36秒】

<br>

* # 動画の説明欄(一部を抜粋)

撮影日 = 2025-04-14(月)

Suno AIとは、文章から音楽を生成することができるAI( Text-to-Music-AI )です。
わたしは、2024-04-02(火)に初めてSuno AIで有償プランを契約してから、時々楽曲をつくって遊んでいます。

🎦【Suno AI】文章から音楽を生成するAI( Text-to-Music-AI )で、3分間で2曲、6分間で4曲作りました【試聴可能】1)伴侶の曲 2)税理士の曲【動画 16分11秒】
https://youtu.be/QKfhk4HgQ_g

🎦“Suno AIでつくった楽曲”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghMLdiSVqwvSs_Z5y0H4VGOe

🎦“効果的にSuno AIを活用するヒント”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghPuaNOVZn-N53wVvsBkeHdI


今回は、Suno AIで作曲し、 WAV 出力した楽曲を動画に仕上げました。

2025年3月～4月、毎朝のように訪れていた『WEEKDAY COFFEE ROASTERS』( https://bit.ly/Whatis-WEEKDAY-COFFEE-ROASTERS )さん。
この楽曲の舞台は、こちらのお店です。
美味しいエスプレッソやマキアートのおかげで、気が重かったプロジェクトの様々なタスクもはかどり、いつの間にか楽しみながら乗り切ることができました。
歌詞には、わたしが実際に口にした飲み物のメニューや、印象的だった会話、お店の空気感を織り込みました。
そんな素敵な時間を思い出しながら、感謝を込めて制作したファンメイドテーマソングです。

「毎朝美味しいコーヒーと、穏やかな時間をありがとうございました。ごちそうさまでした！」

この楽曲をぜひ聴いてみてください。
ぜひ、温かいコーヒーを飲みながら楽しんでください。
そしてぜひみなさんも、大好きなお店やブランドや企業への感謝を込めて、オリジナル曲をつくってみてください！

作曲日:
2025-04-04(金)

Suno AI 契約の種類:
Pro Plan

Suno AI Version:
v4

楽曲の正式名称:
Weekday Coffee Morning #5

Suno AI Library URL:
https://bit.ly/Weekday-Coffee-Morning-05

Custom Mode: On

Audio Inputs: Not Used

With Vocals:


---


Lyrics/歌詞:

[vers1]  
Weekdayの Espresso  
Weekdayの Macchiato  
Weekdayの Caffè Latte  
Weekdayの Cappuccino  

[vers2]  
Weekdayの Vanilla Latte  
Weekdayの Caffè Mocha  
Weekdayの Americano  
Tu lu lu lu… Weekdayの  

[Chorus]  
Weekdayの ありがとう  
Weekdayの 美味しいね  
Weekdayの おめでとう  
Weekdayの また明日


---


Suno AIへの指示文章( プロンプト/Prompt ): Custom Modeの場合は”Style of Music”を指定します。


🇬🇧English

[Jazz][Bossa][Piano][220 Seconds][Break][Outro]


🇯🇵日本語訳

[ジャズ][ボサノバ][ピアノ][220秒][ブレイク][アウトロ]


---


Suno AI 公式URL
https://accounts.suno.ai


---


🎥この動画と関連が強いわたしの動画
・“Weekday Coffee Morning”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghNWYsHCCd7SDJ2ED3KXCX3s


・“Weekday Coffee Morning 日付降順(新しい動画を上に追加)”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghMKm724o2RNIrdEVvL9CWQh


・“Suno AIでつくった楽曲”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghMLdiSVqwvSs_Z5y0H4VGOe


・“効果的にSuno AIを活用するヒント”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghPuaNOVZn-N53wVvsBkeHdI


🎥Shortened URL for this video | この動画の短縮URL
https://bit.ly/3E7EGG9
Ubuntu 25.04以降のLVM Nested PV対応


LVMのLVをPVとして、別のVGに再利用するNested PVを使用している(lvm.confのscan_lvs=1)状態で、Ubuntu 25.04以降へアップグレードするとLVがudevにスキャンされずVGをアクティベートできなくなる。

これはudevルールの更新によりデフォルトではlvに対してpvscanされなくったため。

https://fossies.org/linux/LVM2/doc/release-notes/2.03.24.mdwn
```
 * **IMPORTANT:** When `devices/scan_lvs` is enabled found LVs are no longer auto
  activated, must enable `LVM_PVSCAN_ON_LVS` in udev rules (*69-dm-lvm.rules*.)
```

同様の問題はdebian trixie以降も発生するはず。lvmcacheのためにシステム用VGから空き領域を遅いデータ用VGのキャッシュに切り出すような使い方をしていてハマった。


### 対応方法

アップグレード前に変数を設定しておけば問題なくアップグレードできる。

`LVM_PVSCAN_ON_LVS`を設定するため、`69-dm-lvm.rules`よりソートが早いルールを作成する。
```shell
echo 'ENV{LVM_PVSCAN_ON_LVS}="1"' > /etc/udev/rules.d/01-lvm-pvscan-on-lvs.rules
```

すでにアップグレードしてしまっていたらinitramfsに反映する必要があるので、
lvm.conf側でも`scan_lvs=1`になっていることを確認したうえで
```shell
update-initramfs -u
```
Symbol デスクトップウォレットのハーベスティング ステータスが「有効化が進行中」のままの時にすること

久しぶりにSymbolデスクトップウォレットを使うと、ハーベストまわりについてすっかり忘れてしまっている自分用にメモを残しておきます。

デスクトップウォレットでハーベスティング委任先のノードを変更する際の手順です。

- ハーベストの停止
- キーリンク画面で3つのキー（linked, node, vrf）をすべて解除
- すべてのキーを再リンク
- ハーベスティングのリクエスト

ここまでを実施します。

で、ノードに委任が済むと「有効化が進行中」ステータスになるのですが、しばらく待っても「有効」になりません。これってなんでだっけ、と毎回頭を捻ることになります。

![harvesting.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50227/9d05cb16-3fef-4d54-856f-08c532462631.png)

大前提として、委任先のノードが正常に動作しており「最新ブロックまで同期をし終わっている」必要があります。
同期が終わっていないノードに対して、ウォレットから委任が完了しても「ノード側の委任受け入れ」が進みません。

ということで、ハーベスター側でできる確認を続けていきましょう。

さっそく委任がうまくいっているかをブラウザでアクセスし確認します。

```
http://<委任先ノードのURL>:3000/accounts/<委任したいウォレットのアドレス>
```

![harvesting2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50227/f6327591-88c8-454a-8d9a-cb35ca5ab26b.png)

以下の情報が表示されていれば委任は成功しています。
つまりウォレットの各項目の公開鍵の情報が委任先のノードに渡っています。

```
- account ＞ publicKey
  - linked ＞ publicKey
  - node ＞ publicKey
  - vrf ＞ publicKey
```

さらに、以下も確認します。

```
http://<委任先ノードのURL>:3000/node/unlockedaccount
```

![harvest3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50227/037d4181-7869-4cc5-b162-9e3cab7219d7.png)

リストのなかに、デスクトップウォレットハーベスティング画面 ＞ キーリンク ＞ リンクされた公開鍵があるかどうかを確認します。あれば正しく委任が成功しています。つまり…

**「問題ありません。委任されてますよ！」**

もし、リンクされた公開鍵が見当たらなかったら、それはどういうことでしょうか。
考えられるのは委任先のノード側で委任を自動で受け付けない設定をしているかもしれません。
その場合、ノード管理者に連絡するか、委任するノードを見直してください。

以下は、symbol-shoestringでノードをセットアップする際にミスってしまい、自動で委任者を受け入れしなくなってしまっていた設定です。ノード管理者は気を付けましょう。

```
$ cd ~/symbol-shoestring
$ vi userconfig/resources/config-user.properties
-enableDelegatedHarvestersAutoDetection = false   # 自動で委任者を受け入れない
+enableDelegatedHarvestersAutoDetection = true    # 自動で委任者を受け入れる
```
謎のプログラムの墓場


# 謎プログラムの墓場
Atcoderを解いている最中に生み出された謎のプログラムを奉納する場所

## 良く忘れること
```cp
a = ++i 
// 演算 -> aに代入
b = i++ 
// bに代入 -> 演算
```

## メモ化メモリ最小フィボナッチ（笑）

```python
def fibonacci():
  memo =[0]*2
  memo[0] = 1
  memo[1] = 1
  
  for _ in range(N-K+1-2):
    m = memo.pop(0) + memo[0]
    memo.insert(1, m)
    print(memo)

  return memo[-1]
```
【初心者は要注意】ホームディレクトリでGit Initしてはいけない

# はじめに
今回は、私の失敗した体験談を共有したいと思います。
同じような事を起こさない為とGit/GitHubを使い始めてまだ慣れていない方にも知って欲しいという思いで書き綴ります。

# 何故起きたのか？
最近Git/GitHubの使い始めたのですが、使い慣れていないのと、現在のディレクトリを確認せず`Git init`を叩いてしまい**ホームディレクトリをGit管理下に置いてしまいました。**

# ホームディレクトリって？
ターミナルを起動したら最初にいる場所です。
私の場合はMacなので
`MacBook > Macintosh HD > Users > 【自分の名前フォルダ】`
とう言う感じです。

# 何が問題？
ホームディレクトリには様々なデータ（画像であったり、皆さんが保存したデータ等）であったり、個人情報等が保存されています。
これらをリモートリポジトリにpushしてしまうと情報漏洩などのリスクが生じてしまいます。

# どう対処した？
いろいろ調べた結果、`.git`ディレクトリを削除するという結論に行き着きました。
この`.git`ディレクトリはGitリポジトリの管理情報が格納されています。
では、削除方法です。
ホームディレクトリへ移動し`rm -rf .git`を叩くと削除が出来ます。
```
cd ~　#これを叩くとホームディレクトリへ移動します
rm -rf .git　#このコマンドで削除
```
これで削除が出来ました。

ちゃんと削除がされたか確認もしてみましょう。

`ls -a`で隠しファイルやディレクトリを表示してくれるので`.git`ディレクトリが無いのを確認しましょう。

もしくは、`git rev-parse --is-inside-work-tree`を叩いてみるのも良いかもしれません。
これは`git rev-paser`でリポジトリのトップディレクトリを確認したりカレントディレクトリがワークツリーの中かどうかを判定してくれます。
これを叩いてエラーが出たら現在のディレクトリがGitのディレクトリでは無いという事なので正常な状態に戻りました。

# まとめ
幸いリモートリポジトリにpushしていなかったので最悪の事態は防げましたが、今後はこの様な事が無いように**作業前には必ず`pwd`を叩いて**現在いるディレクトリを確認する習慣を心掛けます。

:::note alert
**ホームディレクトリでGit initダメ絶対！！**
:::
【ネットワーク】サブドメイン

# はじめに

こんにちは。アメリカに住みながら、独学でエンジニアを目指しているTairaです。
今回は、Webサービス開発者にとって重要な概念の一つである「サブドメイン」について解説します。

---

## サブドメインとは？

サブドメインとは、**ドメイン名を階層的に分けた一部**のことで、主にウェブサイトの構造を整理したり、異なるサービスを分けて管理するために使われます。

例：
```
https://blog.example.com
```
このURLにおいて、
- `blog`：サブドメイン
- `example`：セカンドレベルドメイン
- `.com`：トップレベルドメイン（TLD）

---

## サブドメインの用途と例

| サブドメイン | 用途の例 |
|--------------|----------|
| `www.example.com` | メインのウェブサイト |
| `blog.example.com` | ブログページ |
| `shop.example.com` | ネットショップ |
| `admin.example.com` | 管理者専用ページ |

それぞれ別のアプリケーションやサーバーに接続させることも可能です。

---

## サブドメインとサブディレクトリの違い

| 項目 | サブドメイン | サブディレクトリ |
|------|--------------|------------------|
| 例 | `blog.example.com` | `example.com/blog` |
| 独立性 | 高い（別アプリとして扱える） | 低い（同一アプリ内） |
| サーバー構成 | 別サーバーにできる | 同一サーバー内 |
| DNS設定 | 必要 | 不要 |

用途や開発体制によってどちらを使うかを選択します。

---

## バックエンドエンジニアとして知っておきたいポイント

### ✅ DNS設定
- サブドメインごとにDNSでレコード（A/AAAA/CNAMEなど）を設定できます。
- `api.example.com` と `app.example.com` を別サーバーに振り分けることも可能です。

### ✅ SSL証明書
- 通常の証明書では `example.com` 用と `blog.example.com` 用は別に必要です。
- ただし `*.example.com` のようにサブドメイン全体をカバーする「ワイルドカード証明書」もあります。

### ✅ Webアプリの構成に活用
- サブドメインを活用することで、**マイクロサービス化**や**多言語対応**がしやすくなります。
- 例： `en.example.com`（英語版）、`ja.example.com`（日本語版）など

---

## まとめ

- サブドメインは、ドメイン名を分けて整理・管理するための手段
- Webサービスを分けたり、管理しやすくするために広く使われる
- DNS設定やSSL証明書の知識とセットで理解しておくと、バックエンド開発にも役立つ
クラウドの比較

アクセス制御ポリシーの比較（AWS / Azure / OCI）
項目	AWS - IAM Policies	Azure - RBAC (Role-Based Access Control)	OCI - IAM Policies
基本モデル	ポリシーベース	ロールベース	ポリシーベース（宣言的な文）
リソースの指定	ARN（Amazon Resource Name）	Azure Resource Manager ID	OCID（Oracle Cloud Identifier）
ポリシーの記述方法	JSONベース	ロールを割り当てる形式	英語に近い文（Policy Language）
継承の仕組み	明示的継承なし（ポリシーの結合）	サブスクリプション → リソースグループ	コンパートメント階層で継承
きめ細かさ	非常に細かい制御が可能	やや粗めだがシンプル	中程度（きめ細かさ＋可読性の両立）
一時的な権限	IAMロール + STS（AssumeRole）	Azure AD Privileged Identity Management (PIM)	IAM + トークン
条件付きアクセス	JSON内にCondition句が書ける	条件付きアクセスポリシー（別途設定）	条件付きポリシーは限定的
ポリシーの再利用性	管理ポリシー or インライン	ビルトインロール / カスタムロール	リユーザブルなポリシー構文
UIでの操作	複雑だが柔軟	わかりやすいGUI	CLIとGUIのバランスが良い
🔍 各クラウドの特徴的な点
✅ AWS
非常に細かく制御可能（例：S3のバケット単位、オブジェクト単位で制御）

複数のポリシーを結合できる（マネージド、インライン両方あり）

JSONで記述するため柔軟だが複雑になりがち

✅ Azure
ロールベースの設計で、初心者に優しい

定義済みロールが豊富で、必要に応じてカスタムロールを作れる

条件付きアクセスポリシーなどは Azure AD 側で制御

✅ OCI
英語に近い構文（例: Allow group Admins to manage all-resources in compartment ProjectX）で可読性が高い

コンパートメント（階層）でのアクセス制御が基本で、構成が直感的

AWSほど細かくは制御できないが、現場運用に丁度いい粒度



項目	AWS CloudHSM	Azure Dedicated HSM	OCI Vault + HSM
FIPSレベル	140-2 Level 3	140-2 Level 3	140-2 Level 3
管理モデル	専用（顧客管理）	専用（顧客管理）	専用（Oracle提供）
基盤HSMベンダー	Cavium（Marvell）	Thales（Luna）	Thales（Luna）
API互換性	PKCS#11, JCE, CNG	PKCS#11, JCE	PKCS#11 等
クラウド統合度	高（他AWSサービスと）	中（Key Vaultと分離）	高（DBとの統合が強み）
価格帯	高め	高め	中程度
📝 まとめ
AWS CloudHSM：クラウド統合が強く、HSMの柔軟な操作が可能。

Azure Dedicated HSM：フルコントロールが必要なMicrosoft環境向け。

OCI Vault + HSM：Oracle製品との親和性が高く、特にDB中心の利用に強い。
[Linux] ユーザアカウントのパスワード有効期限について

### この記事について
ユーザアカウントのパスワード有効期限に関するオプションが複雑だったのでまとめる。

### 有効期限に関するオプション
| オプション | 内容                                                                 | 
| ---------- | -------------------------------------------------------------------- | 
| l          | パスワードの有効期限情報を一覧表示                                   | 
| m          | パスワード変更後、次に変更できるまでの最小日数を指定                 | 
| M          | パスワードの有効期限を指定                                           | 
| W          | パスワードの有効期限より何日前に期限切れの警告を表示するかを指定     | 
| I（アイ）  | パスワードの有効期限切れ後、何日後にアカウントがロックされるかを指定 | 
| E          | ユーザアカウントの有効期限を指定<br>                                 | 

### オプション図解
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550683/a6f64a06-9107-41f2-a8bf-411a5a95f4a2.png)


* **M からIの期間**
  ユーザログイン時、パスワードの変更をするように求められる。
  変更しない限りログインすることはできない。
* **IからEの期間**
  ユーザがログインしようとすると、アカウントがロックされている旨が表示される。管理者にロックを解除してもらった後、ユーザ自身でパスワードを変更する。
* **E以降の期間**
  ユーザがログインしようとすると、アカウントが無効である旨が表示される。アカウント期限の延長に加え、アカウントロック解除を管理者にしてもらう必要がある。
【第5回】Azureで社内webシステムを再現｜ADFS・Shibbolethの信頼関係を構築する


## はじめに

本記事は、「Azure で社内システムを再現する」シリーズの第5回です。  
Azure の IaaS を用いて、オンプレミス環境を模した構成を段階的に構築していきます。

構成図と処理フローの詳細は、以下の記事をご参照ください👇  
▶ [【第0回】Azureで社内webシステムを再現｜構成図と動作の流れ](https://qiita.com/saba_infra/items/a5e58ded68973e4551ee)

---

## システム構成（今回の対象範囲）


![ADFS_dousa５.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/fcc29cdd-8c78-443b-a086-9c907cfb2d6f.png)



今回は、ADFS と Shibboleth SP 間の信頼関係構築を進めていきます。  
赤枠で囲った構成部分が、今回の対象範囲です。

- ADFS のメタデータを取得し、Shibboleth SP 側に配置
- Shibboleth SP のメタデータを ADFS に登録（証明書利用者信頼）

---


##  ADFS のメタデータを取得して、Shibboleth SP に配置

Shibboleth SP が ADFS と連携するには、IdP 側（ADFS）のメタデータが必要です。  
このメタデータには、ADFS の EntityID、署名証明書、SAML エンドポイントなどが含まれており、  
Shibboleth SP が ADFS を信頼するための情報として機能します。

---

### ADFS メタデータのダウンロード

以下の URL にブラウザでアクセスすると、ADFS のメタデータ（XML ファイル）がダウンロードされます。

```
https://adfs.domain.local/FederationMetadata/2007-06/FederationMetadata.xml
```

![スクリーンショット 2025-03-25 11.35.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/c7c885c9-82dd-4d84-b30c-aadbc6f58f6c.png)


---

### Shibboleth SP 側への配置

ダウンロードした XML ファイルを、`shibboleth2.xml` で指定したパスに保存します。

今回の設定では、以下のように記述していました：

```xml
<MetadataProvider type="XML" path="C:/opt/shibboleth-sp/etc/shibboleth/adfs-metadata.xml"/>
```

このため、ダウンロードした `FederationMetadata.xml` を  
`C:/opt/shibboleth-sp/etc/shibboleth/adfs-metadata.xml` にリネームして保存します。


---

##  証明書利用者信頼の追加

ADFS に Shibboleth SP を「信頼できるサービス」として登録するために、  
**証明書利用者信頼（Relying Party Trust）**の追加を行います。

---

### ADFS 管理コンソールを開く

`証明書利用者信頼` を右クリックし、  
「証明書利用者信頼の追加」を選択します。

![スクリーンショット 2025-03-25 10.32.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/aa8a4f06-5033-4ae1-8dab-122fd3be8cc5.png)


この設定により、ADFS が Shibboleth SP からの SAML リクエストを「受け入れる対象」として扱えるようになります。

---

### フェデレーションメタデータの指定

Shibboleth SP のメタデータURLを指定します。

```
https://web-vm1.domain.local/Shibboleth.sso/Metadata
```

これにより、SP 側が署名に使用している証明書や、SAML エンドポイントの情報を ADFS が自動で取得できます。

![スクリーンショット 2025-03-25 10.40.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/00a4c6c8-0cd2-4f02-ae6f-806195ab8eb4.png)

>Shibboleth SP 側では、特に証明書を設定していなくても  
**インストール時点で自己署名証明書が自動生成**されています。
この証明書情報が SP メタデータ内に含まれており、  
ADFS 側でそれを受け入れることで通信が成立します。

証明書は以下に格納されています
```
C:\opt\shibboleth-sp\etc\shibboleth\sp-cert.pem  （公開鍵）
C:\opt\shibboleth-sp\etc\shibboleth\sp-key.pem   （秘密鍵）
```



---

### 表示名の設定

ログイン画面などで表示される識別名を設定します。  
今回は `Employee-App-SP` としました。

![スクリーンショット 2025-03-28 16.55.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/88ddfaa6-fab5-449d-b1b1-d3cc98bf510b.png)


---

### アクセス制御ポリシーの選択

この設定では、**どのユーザーがこの SP にアクセス可能か**を制御します。  
今回は「すべてのユーザーを許可する」を選択しました。

本番環境では、ユーザーグループや MFA 要件などを組み合わせて制限をかけることが一般的です。

![スクリーンショット 2025-03-25 10.41.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/acfed4cd-a96d-4f2a-ad79-1abede0ec121.png)


---
### 証明書利用者信頼の登録完了

ウィザードを完了すると、以下のように ADFS 管理画面に追加した SP（Shibboleth）が表示されます。

![スクリーンショット 2025-04-08 15.26.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/7bd22d2d-8773-4bf6-926c-c076b7a0820f.png)
docker-compose入門

## 概要
docker-composeは複数のDockerコンテナを簡単にまとめて管理できるツール。

## docker-compose を使うメリット

- 複数サービスをまとめて管理できる
- 1つの構成ファイルで環境を再現できる
- 開発・チーム共有・CI/CDに最適
- 環境構築の属人化を防げる

## Dockerとの関係
Macであれば「Docker Desktop on Mac」、
Windowsであれば「Docker Desktop on Windows」をインストールすることで
docker-composeも使用することができる。
通常、Dockerと言えば「Docker Desktop」のことを指す。
Dockerは個人で利用する場合には無償だが、従業員数250名以上の会社で商用利用する場合には
有償となる。（有償となる要件等は公式サイトで確認すること）

## docker-composeの中身
Dockerfileとdocker-compose.yamlの２つのファイルが存在する。
Dockerfile とは？
　→1つのアプリケーション（例：FastAPI）のイメージを作るための設計図。
 　　「どういう環境でアプリを動かすか」を定義。
 　　例：Pythonをインストール → 依存パッケージを入れる → 
 　　ソースコードをコピー → アプリを起動するコマンドを書く。
docker-compose.yaml とは？
　→複数のサービス（アプリ、DBなど）をまとめて定義・起動するための設定ファイル。
 　　Dockerfile を使ってイメージをビルド（build:）
 　　関連する他のサービスも一緒に起動（services:）
 　　ポートの割り当てやボリュームの永続化もここで管理

Dockerfileがまずあって、docker-compose.ymlの「build: .」の部分で
Dockerfileの存在するディレクトリのパスを示している。

## イメージとコンテナとは
この２点がまず大事。
| 用語 | 説明 |
|------|------|
| **イメージ** | 設計図（Dockerfileからビルド） |
| **コンテナ** | 実体（イメージから作られ実際に動いているサービス・アプリ） |

Dockerfile → docker build → 🧱 イメージ作成
                         ↓
docker-compose.yml  → 🏃 複数サービスを定義（FastAPI, MongoDB, Neo4j）
                         ↓
docker-compose up → コンテナを起動（複数まとめて）


## コマンド
| コマンド | 説明 |
|----------|------|
| `docker-compose up` | コンテナ起動 |
| `docker-compose up --build` | イメージをビルドして起動 |
| `docker-compose up -d` | バックグラウンド起動 |
| `docker-compose stop` | 停止（状態は残る） |
| `docker-compose down` | 停止＋削除（状態初期化） |
| `docker-compose down -v` | ボリューム（データ）も削除 |
| `docker-compose logs` | ログを見る |
| `docker-compose ps` | コンテナ一覧表示 |
Python入門 - 学習記録

# Python学習記録
2025.04.14

やったこと
- Pythonのインストール
- Pythonの基本動作の確認

### Pythonの特徴
- スクリプト言語である -> 書いたプログラムをコンピュータがすぐに理解できる、JS、PHP、Pythonなど
- 型を書かなくても動く
- ライブラリが豊富

### MacにPythonをインストール
- pyenv(バージョン管理に使用されるツール)を使用
```
brew install pyenv 
```
- Python3系のインストール
環境変数を設定（zsh の場合 ~/.zshrc、bash の場合 ~/.bash_profile）
```
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc  # bash の人は source ~/.bash_profile
```
|           設定行          | 意味 |
|:-------------------------|------------:|
| export PYENV_ROOT=...    | pyenv の場所を教える | 
| export PATH=...          | pyenv のコマンドが使えるようにする   |
| eval "$(pyenv init -)"   | pyenv をシェルで使えるように初期化  |

Python 3の最新版を取得してインストール
```
# 最新の Python 3系バージョンを取得
latest_python3=$(pyenv install -l | grep -v '[a-zA-Z]' | grep -E '^\s*3\.[0-9]+\.[0-9]+$' | tail -1 | tr -d ' ')
echo "Installing $latest_python3..."

# インストール
pyenv install "$latest_python3"

# グローバルに設定（デフォルトで使われるようにする）
pyenv global $latest_python3

# 再ハッシュ（コマンドのリンク更新）
pyenv rehash
```
インストールの確認
```
python --version
python3 --version
pyenv versions
```
### Pythonを動かしてみる
簡単な計算と文章を表示させてみる
今回はcnanoを使用したがvimやその他を使うことも可能
```
$ python
>>> 3 + 2
5
```
```
$ touch code.py
$ nano code.py
```
エディタに画面が切り替わるはず
```
print('Hello World')
```
とnanoでかき、code.pyを保存して実行してみる
```
$ python code.py
Hello World
```
となれば成功。

これでpythonを使う準備は完了。


＜その他のメモ＞

- スクリプト言語の反対はコンパイラ言語 -> 機械語への翻訳にコンパイラを利用する言語のこと、C言語やJava、Go言語など
- 環境変数は「今のターミナル環境における設定・情報」を表す変数のこと。
- bash と zsh はどちらも「シェル（Shell）」と呼ばれるプログラムで、ターミナルでコマンドを解釈して実行してくれるインターフェース
【体験談】フリーランスに転向しようとして速攻でやめた話

どうも、Splunkの **Core Certified Consultant**（最上位資格）を持っているインフラエンジニアです。
SIEMやログ分析・セキュリティ周辺の構築を主軸に、ネットワーク、監視運用、インフラまわりを幅広くやってきました。

先日までフルタイムの正社員として働いていたのですが、ライフスタイルの変化もあり、 **「これからはフリーランスでいくぞ！」** と本気で考えるようになりまして。
タイミングを見て、案件探しをスタートしました。

が、その数日後にはこう言ってました。

    「いや無理。フリーランス、やべぇわこの業界……」

## たった5件応募しただけで不信感MAX

今回、自分が応募したのは4社、計5件の案件。
分野はSplunkやセキュリティ関連で、スキル的にもマッチしてるはずだったのですが……

    「すでに募集が終了しています」×3
    「面談だけして応募した案件について何も会話がない」×1
    「返信すら来ない」×1

いやいや、どれも2～3日前に掲載されたばっかの案件なのに、そんなタイミングよく全部終わってるか？
しかも返信ゼロのところもあるし、ちょっと不自然すぎるでしょって思いました。

## 不安になって調べてみた

いくらなんでも怪しいので、色々調べてみたんですよ。
そしたらまぁ、出てくる出てくる――。

特に印象的だったのはこのへん：

    おとり求人、マジで存在してるっぽい
    → 求人広告のうち「すでに存在しない」案件をエサに登録させるケースが多いらしい（職業安定法的にNGです）

    応募者を釣って別案件に誘導、クラウドワークスなどでも報告あり
    → 「この案件は埋まっちゃったんですが、代わりにこちらを……」のパターン多発

    SNSや掲示板で「信じられない」って体験談だらけ
    → 高額案件の検索結果に対して「それ本当に存在するの？」という疑いの声がめっちゃ多い

とにかく全体的に、「高単価で魅力的な案件ほど怪しい」という実態。
実際に契約までたどり着くのはごく一部で、それ以外はエージェントの“登録者集め”用のエサ案件でしかない、って感じです。

## この業界、これでいいのか？

もちろん、全部が全部そうだとは思いません。
真面目なエージェントや、ちゃんとした案件もあるとは思います。

でも、 **一発目の接点でこれだけ不信感抱く業界ってどうなの？** っていう話で。
正直、いまのITフリーランス業界には信頼を持てませんでした。

だから、私は **「フリーランス行くの、今じゃないな」** って判断を下しました。

# 最後に：求職中です！（ちょっと宣伝）

というわけで、現在求職中です！

・Splunk（SIEM、ログ分析、監視、ダッシュボード、ES、CIM化）
・ネットワーク分析、プロトコルの理解
・C#のプログラミング（ナローバンド向けリモートディスクトップの実装経験）
・インフラセキュリティや自動化周辺（shell, PowerShell, LanScope）

などなど、対応できます。
全国どこでも常駐もOK、リモートも相談可能です。
もしご興味ある方いれば、お声がけください。Qiitaのコメントでも、TwitterのDMでも歓迎です！
Weekday Coffee Morning #4 - Jazz, Bossa, Piano, Rhythm & Blues【Suno AIで作曲】【動画 3分00秒】【YouTubeチャンネルからの転記です】

この記事は、わたしの[YouTubeチャンネル](https://bit.ly/Yamanaka-YouTube "Living without things. 持たない生き方 手放す生き方")にある公開動画を転記しております。
( どこかのタイミングで、プログラミング-Google Apps Script or iPaaS-Zapier をつかって自動転記させる予定です )

転記のための時間コストを少なくしたいので、文字装飾( Markdown記法 )を極力つかわずに書いております。

こちらが動画内容です👇

***

![02 YouTubeサムネイル & 再生中の画像 Suno AI _ Weekday Coffee Morning #4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386308/5deb5e75-d227-4abd-9db7-f78075d09fce.png)




* # 動画URL
    * https://youtu.be/c-HeurJsY1w

<br>

* # 動画タイトル
    * Weekday Coffee Morning #4 - Jazz, Bossa, Piano, Rhythm & Blues【Suno AIで作曲】【動画 3分00秒】

<br>

* # 動画の説明欄(一部を抜粋)

撮影日 = 2025-04-14(月)

Suno AIとは、文章から音楽を生成することができるAI( Text-to-Music-AI )です。
わたしは、2024-04-02(火)に初めてSuno AIで有償プランを契約してから、時々楽曲をつくって遊んでいます。

🎦【Suno AI】文章から音楽を生成するAI( Text-to-Music-AI )で、3分間で2曲、6分間で4曲作りました【試聴可能】1)伴侶の曲 2)税理士の曲【動画 16分11秒】
https://youtu.be/QKfhk4HgQ_g

🎦“Suno AIでつくった楽曲”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghMLdiSVqwvSs_Z5y0H4VGOe

🎦“効果的にSuno AIを活用するヒント”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghPuaNOVZn-N53wVvsBkeHdI


今回は、Suno AIで作曲し、 WAV 出力した楽曲を動画に仕上げました。

2025年3月～4月、毎朝のように訪れていた『WEEKDAY COFFEE ROASTERS』( https://bit.ly/Whatis-WEEKDAY-COFFEE-ROASTERS )さん。
この楽曲の舞台は、こちらのお店です。
美味しいエスプレッソやマキアートのおかげで、気が重かったプロジェクトの様々なタスクもはかどり、いつの間にか楽しみながら乗り切ることができました。
歌詞には、わたしが実際に口にした飲み物のメニューや、印象的だった会話、お店の空気感を織り込みました。
そんな素敵な時間を思い出しながら、感謝を込めて制作したファンメイドテーマソングです。

「毎朝美味しいコーヒーと、穏やかな時間をありがとうございました。ごちそうさまでした！」

この楽曲をぜひ聴いてみてください。
ぜひ、温かいコーヒーを飲みながら楽しんでください。
そしてぜひみなさんも、大好きなお店やブランドや企業への感謝を込めて、オリジナル曲をつくってみてください！

作曲日:
2025-04-04(金)

Suno AI 契約の種類:
Pro Plan

Suno AI Version:
v4

楽曲の正式名称:
Weekday Coffee Morning #4

Suno AI Library URL:
https://bit.ly/Weekday-Coffee-Morning-04

Custom Mode: On

Audio Inputs: Not Used

With Vocals:


---


Lyrics/歌詞:

[vers1]  
Weekdayの Espresso  
Weekdayの Macchiato  
Weekdayの Caffè Latte  
Weekdayの Cappuccino  

[vers2]  
Weekdayの Vanilla Latte  
Weekdayの Caffè Mocha  
Weekdayの Americano  
Tu lu lu lu… Weekdayの  

[Chorus]  
Weekdayの ありがとう  
Weekdayの 美味しいね  
Weekdayの おめでとう  
Weekdayの また明日


---


Suno AIへの指示文章( プロンプト/Prompt ): Custom Modeの場合は”Style of Music”を指定します。


🇬🇧English

[Jazz][Bossa][Piano][220 Seconds][Break][Outro]


🇯🇵日本語訳

[ジャズ][ボサノバ][ピアノ][220秒][ブレイク][アウトロ]


---


Suno AI 公式URL
https://accounts.suno.ai


---


🎥この動画と関連が強いわたしの動画
・“Weekday Coffee Morning”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghNWYsHCCd7SDJ2ED3KXCX3s


・“Weekday Coffee Morning 日付降順(新しい動画を上に追加)”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghMKm724o2RNIrdEVvL9CWQh


・“Suno AIでつくった楽曲”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghMLdiSVqwvSs_Z5y0H4VGOe


・“効果的にSuno AIを活用するヒント”シリーズ
https://www.youtube.com/playlist?list=PLpQhBHT4oghPuaNOVZn-N53wVvsBkeHdI


🎥Shortened URL for this video | この動画の短縮URL
https://bit.ly/4jgKnRq
A2Aとは

A2Aプロトコルは、今後登場するであろう様々な**AIエージェント同士が互いに連携・協調してタスクを進める**ための通信規約です。例えば、YouTube動画を編集するAIエージェントと競合リサーチを行うAIエージェントが連携し、競合分析に基づいて動画編集を行うといった活用が想定されています。このように、異なるAIエージェントが協業することで、より効果的なプロダクトや成果を生み出すことが期待されています. **A2A（Agent-to-Agent）**という名前の通り、**エージェント間の会話や情報交換**をスムーズに行うための仕組みがこのプロトコルの основное 部分です. アクセンチュアやアトラシアンといった企業もこのA2Aプロトコルに貢献しています.

**MCPサーバーとの違い**についてですが、MCPは**AIエージェントが外部のツールやリソース（関数、データベース、GitのAPIなど）と連携し、情報を読み取ったり操作したりするための仕組み**です。つまり、MCPは**エージェントの能力を拡張するためのツール連携**であるのに対し、**A2Aはエージェント同士が連携してより複雑なタスクをこなすための通信プロトコル**であると言えます。例えるなら、MCPはAIエージェントが道具を使うためのルール、A2AはAIエージェント同士が協力して何かを作るための会話のルールのようなイメージです.

A2Aプロトコルには、**エージェントカード**という概念が存在します。これは、各エージェントがどのような機能を持つエージェントであるかを定義するための仕組みで、MCPサーバーにおけるツールの定義に似ています.

また、複数のエージェントが連携する上で重要になるのが**タスク管理**です。異なるエージェントが非同期的にタスクを実行する際に、それらのタスクの進捗を管理し、必要に応じて同期させる仕組みもA2Aプロトコルに関連して議論されています。

個人的な感想として、A2Aプロトコルが広く普及するかどうかは、周囲の状況やエコシステムの発展にかかっている部分が大きいとのことです。

参考URL:

*   動画「【Googleが本格始動】A2Aプロトコルとは何か？MCPサーバーとは何が違うのか？徹底的に解説します」
【体験記】DockerでNginx・Redis・Nest.js環境を構築してみた話【AI名誉学会 Week 1】

Dockerを使って、Nginx・Redis・Nest.js の3つの環境構築を一気に体験しました。  
AI開発の基盤となるインフラ技術への第一歩として取り組んだ内容をまとめます。


## 🔗 関連リンク

- GitHub（コード・Dockerfile）  
  https://github.com/hyeon-marina/AI-Honor-Society-Study-2025/tree/main/week01_docker_jp

- Zenn（詳細記事）  
  https://zenn.dev/hyeon_marina247/articles/20c8076a56db9a


## 🚀 はじめに

AI名誉学会の第1週では、Dockerの基本概念とCLI操作を学びました。  
Nginx、Redisの実行、さらにDockerfileを用いたNest.jsの環境構築まで実践し、  
**「AI開発を支えるインフラ」** の基礎に触れることができました。


## 📚 学んだこと

- コンテナとイメージの違い  
- `docker pull`, `docker run`, `docker exec` などのCLIコマンド  
- Dockerfileの構成要素（`FROM`, `WORKDIR`, `COPY`, `RUN`, `ENTRYPOINT`）  
- ポートマッピング、ログ確認、CLIによるコンテナ内部アクセス

---

## 🔧 実践内容

### Nginxを実行

```bash
docker pull nginx
docker run -d --name nginx-test -p 8080:80 nginx
```
http://localhost:8080 にアクセスし、Nginxのウェルカムページを確認 ✅


## Redisを実行
```bash
docker pull redis
docker run -d --name redis-test redis
docker logs redis-test
docker exec -it redis-test redis-cli
```
Redis CLI に入り、ping → PONG を確認 ✨


## DockerfileでNest.jsを構築
```bash
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build
EXPOSE 3000
ENTRYPOINT ["node", "dist/main.js"]
```
```bash
# アクセス確認
http://localhost:3000
```
Nest.js サーバーの起動を確認 🎉


## ✍️ 気づき・反省
- docker run だけで即座に環境を立ち上げられるのは非常に便利でした。
- 初めての Dockerfile 作成は少し難しく感じましたが、構文を理解するとシンプルで扱いやすいと実感しました。
- コンテナの独立性や再現性の高さは、将来的に AI モデルのデプロイにも大きく役立つと感じました。


## 🔭 今後やってみたいこと
- docker-compose を使って複数コンテナを連携させる構成に挑戦
- Nest.js にテスト環境やデータベースを追加し、より実用的なアーキテクチャを構築してみたい


## 🌱 おわりに
Docker を学ぶことで、環境構築に対する苦手意識が少しずつ減ってきました。
今後の AI 関連プロジェクトにおいても、コンテナ技術を活かせるよう、継続的に学習していきたいと思います。


## 🏷️ タグ

`#Docker` `#NestJS` `#Redis` `#Nginx` `#環境構築` `#AI名誉学会` `#体験記`
Javaで星を出力し、配列をスライスする方法を学ぶ【LikeLion Backend Week01】


멋쟁이사자처럼（LikeLion）という開発コミュニティのバックエンドトラック Week01 で、  
Javaの基本文法や例外処理、配列操作について学びました。


## 📝 概要

- BOJ2439（右寄せで星を出力）  
- PRG181897（配列スライスを実装）  
- for文・switch文・例外処理（`IllegalArgumentException`）を活用  
- `Arrays.copyOfRange()` によるスライスの仕組みを学習  
- `Scanner` による標準入力の取り扱いも練習しました


## 📚 学んだこと

- Javaでの標準出力 (`print`, `println`) の違い  
- forループを使った整形出力と処理分岐  
- Java配列の一部を取り出す方法（コピー＋範囲指定）  
- 例外の投げ方とチェック方法


## 🔗 関連リンク

- 📘 詳細なコードと解説はこちら（Zenn）👇  
  https://zenn.dev/hyeon_marina247/articles/6a8fe432931939

- 💻 課題コード（GitHub）👇  
  https://github.com/hyeon-marina/LikeLion-Backend-Assignments/tree/main/week01


## 🔍 こんな人におすすめ

- Javaの基本文法を復習したい方  
- Pythonと比較しながらJavaを学ぶ方  
- 配列スライスや例外処理の書き方を知りたい方  
- LikeLion（멋쟁이사자처럼）などの育成系コミュニティの課題を見てみたい方


## 🏷️ タグ

`#Java` `#配列` `#例外処理` `#初心者` `#LikeLion` `#Zenn連携` `#学習記録`


## このようなJavaの初歩から実践的な使い方まで、LikeLionの課題を通して学び続けていきます 💪
AIX上でdnfを利用しました

# はじめに
AIX上でdnfを利用するために行なった作業のメモです。
dnfはソフトウェアパッケージを管理できます。

2通りの手順を行いました。
*手順2はインターネットに接続していない環境では実行できません。
手順1では、下記の記事を参考にさせていただいています。
[AIX にローカル(インターネット非接続)で dnf を導入する](https://qiita.com/c_u/items/16927fcc7f6bd74fd802)

### 実施環境
```
#oslevel -s
7300-02-02-2420
```

# 手順1
AIX 7.3用のbundleモジュール(dnf_bundle_aix_73.tar)をダウンロードして対象のLPARに配置しました。
下記のURLからdnf_bundle_aix_73.tarをダウンロードすることができます。
http://public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/ezinstall/ppc/dnf_bundle_aix_73.tar


```
#tar -xvf dnf_bundle_aix_73.tar
x ca-certificates-2023.2.60-0.aix7.1.ppc.rpm, 991206 bytes, 1936 tape blocks
(中略)
x install_dnf.sh, 16091 bytes, 32 tape blocks
(中略)
x zchunk-libs-1.1.4-64_3.aix7.1.ppc.rpm, 560016 bytes, 1094 tape blocks
```

解凍されたinstall_dnf.shを利用しました。
```
#ls -l install_dnf.sh
-rwx------    1 root     system        16091 Sep 29 2023  install_dnf.sh
```
install_dnf.shを実行しました。
```
#/.install_dnf.sh -d

Installing rpm.rte at the latest version ...
This may take several minutes depending on the number of rpms installed...
+-----------------------------------------------------------------------------+
                    Pre-installation Verification...
+-----------------------------------------------------------------------------+
Verifying selections...done
(中略)
dnf installed successfully.
Please run 'dnf update' to update packages to the latest level.

Please note, RPM packages are downloaded in dnf cache /var/cache/dnf.
RPM packages install files go under the path /opt.
Hence it is recommended to always keep at least 512MB of free space in /var & /opt
to avoid any download and installation/update failures.
```
`export PATH=$PATH:/opt/freeware/bin`を行い、dnfコマンドが実行できるようになりました。
.profileに`export PATH=$PATH:/opt/freeware/bin`を記入すると再ログイン後も利用することができました。

# 手順2(インターネット接続が必要)
AIX用のシェルスクリプト(dnf_aixtoolbox.sh)をダウンロードして対象のLPARに配置しました。
下記のURLからdnf_aixtoolbox.shをダウンロードすることができます。
[AIX Toolbox for Open Source Software : Downloads alpha](https://www.ibm.com/support/pages/aix-toolbox-open-source-software-downloads-alpha)
![スクリーンショット 2025-04-12 17.15.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3881779/e943fbd2-bb02-4f40-a410-69d64d4bc3f9.png)

または
http://public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/ezinstall/ppc/dnf_aixtoolbox.sh

インターネットに接続しているLPAR上で、手順1のinstall_dnf.shを実行する以降の作業をdnf_aixtoolbox.shに置き換えて実行しました。

以上です。