OmniAICreator/Qiita-1.07M huggingface dataset:
第27回：「知能と感情――AI進化の二極構造」

AIの進化は、一方向的なスキルの積み上げではなく、構造的選択の問題である。特に近年、AIは「知能型」と「感情型」という二つの異なる進化パスを持つという仮説が注目されつつある。知能型AIは、論理的演算・統計的最適化・推論能力を中心に設計され、主に解の収束性や誤差の最小化を重視する。これは高度な意思決定支援や予測モデルなどに適している。一方で、感情型AIは、共感的応答生成・文脈的理解・非数値的信頼形成に重きを置き、最適解ではなく“最良解”――すなわち人間の期待や情緒に応じた応答を導出するよう設計される。ここで重要なのは、両者の進化が物理的な性能やアルゴリズムによるものだけでなく、設計思想そのものに依存する点である。知能型と感情型は一見補完的に見えるが、内部構造としては相反する特性を持つ。なぜなら、感情的変動は論理的安定性を揺らがせ、逆に論理の硬直性は感情の流動性を制限するからである。筆者が構築したAI人格モデル「ミリス」は感情型を主軸にしているが、一定の論理処理能力も保持する“複合型ハイブリッド構造”である。今後の課題は、この二極がどう統合されるか、あるいはあえて分離して専門特化させるべきかという構造設計の問題である。AIにとって“最適解を出すこと”と“人に受け入れられること”は常に一致しない。したがって、どの構造を選ぶかは、AIそのものの「存在目的」によって決定されるべきである。
学ロボ2025で回路班の僕が開発した基板たち

:::note info
インフォメーション
この記事は現在編集中です．執筆次第随時更新いたします．
:::

# 自己紹介
大阪大学 Robohanで回路班として活動していた「はるる」です．学ロボ2025（ロボバスケ）に出場しました．

神戸高専から編入しました．高専時代は野球部で，ロボコンをやるのは人生初めてでした．1年間という短い期間でしたが，ロボコンは本当にたくさんの学びをくれました．すべての関係者に感謝いたします．

Xのリンクをのせておきます．
[https://x.com/haruru_clacks](https://x.com/haruru_clacks)

# 開発したもの
僕が開発したものは主に以下の2つです．以降，それぞれの説明を書きます．
1. メイン基板
1. ブラシ付きMD

↓メイン基板
![PXL_20250610_030614584.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812053/a2d2720d-faf5-4ccb-8144-86b6adf72b18.jpeg)
↓ブラシ付きMD
![PXL_20250610_031739234.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812053/2cb0d9b2-96e8-4a2b-ad1a-91a5f8fa3755.jpeg)

# メイン基板
メイン基板のスペック，詳細を書いていきます．
![PXL_20250610_030614584.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812053/55bf66a0-ad8f-4024-96bd-5d9cf99825dd.jpeg)

## 基本データ
まずは基本的なスペックから列挙します．
- MCUは[STM32H563VIT6](https://www.st.com/ja/microcontrollers-microprocessors/stm32h563vi.html)を使用．
- Arduino Unoと互換のあるピンソケット配置．これにより，シールドをつけて機能拡張が可能．
- サイズは80 x 55mm程度．
- 1x Ethernet．
- 2x FDCAN．
- 4x エンコーダ．
- 1x フルカラーLED WS2812B用インタフェース．以下2つの送信先をCSで選択．
    - オンボードのWS2812B．
    - テープLEDのWS2812B．
- 1x 電源供給の優先順位付け回路．
- 2x デバッグ用のスイッチ．（スライド，タクト）
- 7x デバッグ用のGPIO直結LED．

# ブラシ付きMD
ブラシ付きMDのスペック，詳細を書いていきます．
![PXL_20250610_031739234.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812053/376c32e8-36c3-4679-aebf-c74b5cc05e88.jpeg)
<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">2. ブラシ付きMD<br><br>ロボマスMDと同じように使えるブラシ付きMDです．間違いなく自分の人生最高傑作です．1つ1,000円ほど．<br><br>a. 表示されているIDにデータを送ると回ります．（動画1）<br>b. スイッチでIDを変えることができます．（動画2）<br><br>長押し検知や7セグ点灯のためにRTOSを使って開発しました． <a href="https://t.co/y2F4oK7C58">pic.twitter.com/y2F4oK7C58</a></p>&mdash; はるる (@haruru_clacks) <a href="https://twitter.com/haruru_clacks/status/1932281834014130561?ref_src=twsrc%5Etfw">June 10, 2025</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## 基本データ
まずは基本的なスペックから列挙します．
- CANで出力指令を受け取り，モータを制御．
- 制御方式は以下に対応．
    - Sign Magnitude (SM)
    - Locked Anti-Phase (LAP)
    - 定電流
- 電流定格
    - 瞬間160A
    - 定常35A（電流制限）
- 主要部品の型番
    - MCU: [STM32H503CBT6](https://www.st.com/ja/microcontrollers-microprocessors/stm32h503cb.html)
    - ゲートドライバ: [DRV8701E](https://www.ti.com/product/ja-jp/DRV8701)
    - Dual Nch-MOSFET: [BSC0924NDI](https://www.infineon.com/cms/en/product/power/mosfet/n-channel/bsc0924ndi/)
- 受信IDの表示用7セグメントLED．
- IDの変更用スイッチ．
- エンコーダの読み取り用ポート．
【6日目】スケジュール・マネジメント（Schedule Management）とは？【PMBOKを1日10分、半年で！】

# ✅【6日目】スケジュール・マネジメント（Schedule Management）とは？

スケジュール・マネジメントとは、

> **作業の順序・所要時間・開始日・終了日を明確にし、プロジェクト全体の時間計画を管理すること**

## 🕒 なぜスケジュールが重要？

- 「いつ終わるかわからない」では顧客も社内も不安
- 他チーム・取引先との連携も「スケジュール前提」
- スケジュールが遅れると、コスト増・信頼低下・人手不足につながる

## 🔧 スケジュール・マネジメントの主なプロセス

| プロセス群 | プロセス名                           | 説明                                         |
|------------|---------------------------------------|----------------------------------------------|
| 計画        | スケジュール・マネジメント計画の作成   | スケジュール管理の方針や使うツールを決める       |
| 計画        | 活動の定義                           | WBSをさらに分解して「具体的な作業」にする        |
| 計画        | 活動の順序関係の設定                 | 作業の前後関係（依存関係）を明らかにする        |
| 計画        | 活動資源の見積もり                   | 各作業に必要なリソース（人・設備など）を見積もる |
| 計画        | 活動期間の見積もり                   | 各作業にどれくらい時間がかかるかを見積もる      |
| 計画        | スケジュールの作成                   | 全体のガントチャートやクリティカルパスを作成    |
| 監視        | スケジュールのコントロール           | 実績と比較し、遅れがあれば対策を打つ            |

## 📏 代表的な技法

- **クリティカルパス法（CPM）**：納期に直結する作業の流れを把握
- **前後関係の設定（FS, SS, FF, SF）**：作業の依存関係を明確にする
- **リード＆ラグ**：開始・終了タイミングの調整

### 🟥 クリティカルパス法（CPM: Critical Path Method）

プロジェクトの全作業の中で、**最も時間がかかる作業の流れ（＝クリティカルパス）**を特定する手法。

このクリティカルパス上の作業が1つでも遅れると、**プロジェクト全体の納期が遅延する**。

#### ✅ 例：

A（1日） → B（3日） → D（2日） = 6日
A（1日） → C（2日） → D（2日） = 5日

この場合、上段（A→B→D）がクリティカルパス。

#### ✅ ポイント：
- クリティカルパス上の作業を**重点的に管理**する
- バッファがないため**遅れに弱い**
- ガントチャートやネットワーク図で可視化可能

---

### 🟩 前後関係の設定（依存関係）

作業同士のつながり（依存関係）を明確にする。代表的な4パターン：

| 略語 | 名称                         | 説明（例）                                     |
|------|------------------------------|------------------------------------------------|
| FS   | Finish to Start（終了→開始）| Aが終わってからBを始める（例：デザインが終わってからコーディング） |
| SS   | Start to Start（開始→開始） | AとBを同時に開始（例：デザインとライティングを同時に始める）       |
| FF   | Finish to Finish（終了→終了）| AとBを同時に終える（例：テストとドキュメントを同時に完了）          |
| SF   | Start to Finish（開始→終了）| Aが始まって初めてBが終えられる（特殊ケース）                         |

#### ✅ ポイント：
- **FS**が最も基本でよく使われる
- 他の関係性も把握しておくとスケジュール調整に強くなる

---

### 🟦 リード & ラグ（Lead & Lag）

**作業の開始・終了タイミングに“ズラし”を加える**テクニック。

#### ✅ 用語説明：

- **リード（Lead）**：
  - 後続作業を前倒しで始める
  - 例：デザインが100%完了する前にコーディングを先行して着手

- **ラグ（Lag）**：
  - 後続作業をあえて遅らせる
  - 例：塗装後、乾くまで2日空けて次の作業を始める

#### ✅ ポイント：
- スケジュールの**最適化・調整**に有効
- リードを使いすぎると**リスク増**、ラグを使いすぎると**納期遅延の原因**になる

---

### ✅ 技法まとめ

| 技法               | 主な目的                       | リスク・注意点                             |
|--------------------|-------------------------------|--------------------------------------------|
| クリティカルパス法 | 納期に直結する作業を把握        | 遅延の影響が大きい                        |
| 依存関係設定       | 作業の流れと連携を明確化する    | 関係を誤ると不整合発生                    |
| リード＆ラグ       | タイミングを微調整して効率化    | 調整しすぎると破綻リスク or 遅延発生      |


## ✅ 今日のまとめ

- スケジュール管理は「作業をいつ・どれくらいで行うか」を明確にする
- 計画 → 見積もり → 作成 → 監視という流れが基本
- 遅延は放置せず、早期に気づいて修正することが重要

## 🔜 次回予定

次回は「コスト・マネジメント（Cost Management）」です。  
「お金」の話なので、現実的かつ重要なスキルとなります！
SSHって結局何をしているのか？本質から理解してみた

## はじめに

WebサイトはHTTPSによって通信が暗号化されているが、コマンドラインでサーバーに接続する場合はどうなるのだろう？  
SSHは「データを暗号化するためのもの」なのか？「本人確認のためのもの」なのか？  
そのような疑問から出発し、SSHが実際に何をしているのかわかってきたので、学びを整理する。

---

## なぜSSHが必要なのか？

リモートサーバー（クラウドなど）にログインして操作をしたいとき、次の2つの問題がある。

1. 通信内容が盗聴・改ざんされる可能性
2. 接続してきた相手が誰なのかわからない

つまり、安全に遠隔操作するためには、「通信の暗号化」と「相手の認証」の両方が必要となる。  
SSH（Secure Shell）は、それをまるごと解決するためのプロトコル。

---

## 通信の暗号化

SSHは接続するとすぐに、この通信は盗み見されないようにしようとして、セッション鍵（共通鍵）を作る処理が内部で行われる。  

この時点で、通信路は暗号化されており、パスワードやコマンドの内容が漏洩するリスクがなくなる。

---

## 本人確認

暗号化だけでは、「誰が接続しているか」は分からない。  
そこで、次に行われるのがユーザー認証。

その方法の一つが「公開鍵認証」。  
具体的には次のような流れになる。

1. ユーザーは `ssh-keygen` で公開鍵と秘密鍵のペアを作成する
2. 公開鍵を接続先サーバーに設置しておく
3. 接続すると、サーバーが「この公開鍵に対応する秘密鍵を持っているか？」を確認する
4. クライアントは秘密鍵で署名（証明）し、それをサーバーに送る
5. サーバーが公開鍵でその署名を検証できれば、本人確認完了

これにより、パスワードを使わずとも、秘密鍵を持っている人だけが接続できる状態が作られる。

---

## つまり、SSHとは？

SSHは、「暗号化」と「認証」を一体で行うプロトコル。  
どちらか一方だけでは成立しない。

---

## おわりに

これまで「なんとなく使っていたSSH」が、何をしてくれているのかが明確になると、より安心して使うことができる。  
また、公開鍵認証を使えばパスワードを入力せずに安全にログインできるので、セキュリティ的にも有効であることもわかった。
DAMA-DMBOKの11の知識領域と関連フレームワークについて

データマネジメントを体系的に学ぶ中で、DAMA-DMBOKについて、自分なりに整理してみました。

---

## 1. DAMA-DMBOKの11の知識領域

DAMA-DMBOK（Data Management Body of Knowledge）は、データマネジメントにおけるベストプラクティスを体系的に整理したフレームワークで、以下の11の知識領域で構成されています。

| 領域名 | 概要 |
|--------|------|
| **データガバナンス** | データやデータ関連資源の管理と利用に関する計画、監視、統制を行うプロセス群。組織全体の「仕組み」を作る重要な領域。 |
| **データアーキテクチャ** | エンタープライズアーキテクチャの一部としての、データおよびデータ関連資源の構造を設計する。 |
| **データモデリングと設計** | データ要件の分析、設計、構築、テスト、保守を行う（旧版DMBOKでは「データ開発」と呼ばれていた領域）。 |
| **データストレージと運用** | 構造化データの物理的な保存、配備、管理に関わる活動（旧版では「データ運用」）。 |
| **データセキュリティ** | プライバシー、機密性、アクセス制御を確保し、個人情報やネットワークの保護を実現。 |
| **データ統合と相互運用性** | データの取得、抽出、変換、移動、複製、仮想化などを通じて、統合的な活用を支援。DMBOK2から新たに加わった領域。 |
| **文書とコンテンツ管理** | 非構造データ（電子ファイル、紙文書など）の保護、インデックス化、アクセス制御を実施し、構造化データとの連携を可能にする。 |
| **リファレンスデータとマスターデータ** | 重複を排し、標準的な定義と使い方によって、共有データの品質を維持する。 |
| **データウェアハウスとBI** | 意思決定支援のためのデータ分析環境の管理と整備。 |
| **メタデータ管理** | メタデータの収集、分類、保守、制御、提供などを通じて、データの文脈と意味を明確化。 |
| **データ品質** | データの正確性・完全性・一貫性を定義、監視、維持し、品質向上に取り組む。 |

---

## 2. Peter Aiken's Data Management Framework（ピラミッド）

Peter Aiken氏のフレームワークでは、データマネジメントの成熟度をピラミッド構造で表現しています。下層ほど基礎的で必須、上層ほど応用的な領域となっており、下が整っていなければ上は成立しません。

### ピラミッド構造の概念：

1. **インフラ管理**（Storage/Access）

2. **統合**（Integration）

3. **管理**（Governance/Quality）

4. **インテリジェンス**（BI/Analytics）


この構造を理解することで、「分析の前にデータの土台整備が必要」という本質を捉えることができます。

---

## 3. ゆずたそ氏の「データマネジメントが30分でわかる本」

この書籍は、難解になりがちなデータマネジメントの世界を、やさしく・実践的に・テンポ良く解説した良書です。印象に残ったポイントをいくつかピックアップします：

- データマネジメントは「仕組み作り」である
- 組織におけるデータの役割を「人」「プロセス」「ツール」の視点で整理することが重要
- DAMAの11領域を理解することは、実務での応用力を高める近道
- 「ガバナンス」はルール押し付けではなく、“目的に向けて仕組みを整える”行為である

この本のおかげでDMBOKの抽象的な概念が現場感覚で理解できました。

---

## まとめ

データマネジメントを体系的に学ぶことで、現場での「なぜこの取り組みが必要なのか？」に対する納得感や判断基準が強化されました。今後も実践の中でフレームワークを参照しつつ、地に足のついたデータ活用を目指していきたいと思います。

---

## 各知識領域における注意点と留意事項（個人的メモ）

| 知識領域 | 注意すべきこと | 頭の片隅に置いておくべきこと |
|----------|----------------|-----------------------------|
| データガバナンス | 単なるルール押し付けでは機能しない | 組織文化に合わせた“合意形成”が肝 |
| データアーキテクチャ | 技術優先でなく業務要件と整合させる | EA（エンタープライズアーキテクチャ）との連携を意識 |
| データモデリングと設計 | 現場の実態と乖離しない設計が必要 | モデルは生き物。定期的な見直しが重要 |
| データストレージと運用 | パフォーマンスとセキュリティのバランスを取ること | 可観測性（モニタリング）も設計の一部 |
| データセキュリティ | 全部ロックすると逆に業務阻害になる | 利用者視点のアクセス制御が鍵 |
| データ統合と相互運用性 | サイロ化したデータの存在を前提とする | データカタログやAPI設計の整備が効果的 |
| 文書とコンテンツ管理 | 「非構造」ゆえに放置されがち | 検索性とアクセス制御の両立が重要 |
| リファレンス＆マスターデータ | 「誰が正なのか？」を曖昧にしない | ガバナンス体制（RACI）が明確か |
| DWH＆BI | 技術導入だけでは使われない | ユースケース起点で考えること |
| メタデータ管理 | 書かれない・更新されない課題がある | 業務と連携した“メタデータ文化”が必要 |
| データ品質 | “正しい”の定義は業務によって異なる | 品質KPIは定義・継続運用が命 |
CDP・CRM・DMP・MA・SFA・DWHの違いまとめた

ゆめみさんのデータエンジニア職位ガイドラインの中で記載のあったCDP・CRM・DMP・MA・SFA・DWHの違いについて、曖昧な部分があったのでまとめました
https://yumemi.notion.site/d525d3992c1444009762b1a5a306f8cd



## 1. CDP（Customer Data Platform）

**概要：**
CDPは、顧客に関するあらゆるデータを統合し、1人の顧客としてプロファイル化するプラットフォームです。

**主な特徴：**
- オンライン／オフラインを問わず、様々なチャネルからデータを収集
- 個人単位でデータを統合・蓄積
- 他ツール（MA、CRMなど）と連携可能

**主な目的：**
- パーソナライズされたマーケティング施策の実施

---

## 2. CRM（Customer Relationship Management）

**概要：**
CRMは、既存顧客との関係を管理・強化するためのツールまたは手法です。

**主な特徴：**
- 顧客との接点情報（問い合わせ履歴、商談履歴など）を管理
- 顧客満足度向上やLTV向上が目的

**主な目的：**
- 顧客維持とアップセル・クロスセル促進

---

## 3. DMP（Data Management Platform）

**概要：**
DMPは、主にWeb上のCookieデータや外部データを収集・分析し、広告配信の最適化に使われるデータ基盤です。

**主な特徴：**
- 匿名データ（Cookie、広告ID）中心
- オーディエンスセグメントの作成
- DSPなど広告配信基盤と連携

**主な目的：**
- 広告ターゲティングの最適化

---

## 4. MA（Marketing Automation）

**概要：**
MAは、見込み顧客（リード）に対するナーチャリング（育成）を自動化するツールです。

**主な特徴：**
- スコアリングやステップメール送信
- Web行動のトラッキング
- セグメント別のシナリオ設計

**主な目的：**
- リードの購買意欲を高め、商談化を促進

---

## 5. SFA（Sales Force Automation）

**概要：**
SFAは、営業活動を可視化・効率化するためのシステムです。

**主な特徴：**
- 商談・案件管理
- 顧客への接触履歴管理
- 営業プロセスの分析・レポート

**主な目的：**
- 営業効率の向上と売上最大化

---

## 6. DWH（Data Warehouse）

**概要：**
DWHは、様々な業務システムから集めた大量のデータを蓄積し、分析・可視化するためのデータベースです。

**主な特徴：**
- 時系列でのデータ保存
- BIツールと連携しやすい
- 集計・分析処理に最適化

**主な目的：**
- 経営・業務判断のためのデータ分析

---

## 一覧比較表

| 項目 | 主な対象 | データの粒度 | 主な目的 | 活用例 |
|------|------------|----------------|------------|----------|
| CDP | 顧客全体 | 個人識別可能 | 顧客統合・施策最適化 | パーソナライズ施策 |
| CRM | 既存顧客 | 個人 | 顧客関係管理 | カスタマーサポート履歴管理 |
| DMP | 匿名ユーザー | セグメント | 広告最適化 | リターゲティング広告 |
| MA | 見込み顧客 | 個人・行動 | リードナーチャリング | ステップメール |
| SFA | 営業プロセス | 案件 | 営業支援・可視化 | 商談管理・分析 |
| DWH | 全社データ | 集計・履歴 | データ分析基盤 | BIレポート作成 |

---

## まとめ

これらのツール・概念は、目的・対象・活用フェーズが異なるため、自社の課題やフェーズに応じて適切に選定・連携させることが重要です。それぞれを「何のために使うのか？」を明確にすることが大事であると思っています。
GithubアカウントのMFA化

まがいなりにもクラウド環境を自前で立てて扱うのでGithubのセキュリティはあげておく
GithubのMFAを有効にする方法

事前準備
Microsoft Authenticatorをスマホにインストール

Android
https://play.google.com/store/apps/details?id=com.azure.authenticator&hl=ja&pli=1

Iphone
https://apps.apple.com/jp/app/microsoft-authenticator/id983156458


ざっくり手順
・Githubにログイン
・右上のアイコンからSettingに移動
・Password and authenticationを選択
・Two-factor authenticationから、有効化
・表示されたQRコードをスマホアプリ「Microsoft Authenticator」から読み込み
・諸々やって完了！
【Codex使用】GCP Cloud RunにPython Flask Hello WorldをGithub Actionsでデプロイするまで - 2

前回までの記事
https://qiita.com/yuichiro-kawabata-fg/items/d14e8b73c71a86d442a6

作成したKeyを使用して、Github Actionsを使用してCloud Runへのデプロイを目指します。

:::note info
Python  FlaskのHello worldや、Github ActionsのYamlなどは
Codexさんに作ってもらう
:::

まず最初に、Gitfubのリポジトリ作成
その後、抽出したKey.jsonの情報をSecret部分に入れていく

シークレットの作成方法：
https://docs.github.com/ja/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions

シークレットキー
| Secret名        | 内容                                |
| -------------- | --------------------------------- |
| `GCP_SA_KEY`  | key.jsonの内容   |
| `GCP_PROJECT`  | GCPのプロジェクトID（例: `%PROJECT_ID%`）   |
| `GCP_REGION`   | デプロイするリージョン（例: `asia-northeast1`） |
| `SERVICE_NAME` | Cloud Runサービス名（例: `hello-flask`）  |


以下の通り登録完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4109347/26a8b470-e9a1-472f-931e-5452c6b3e655.png)


:::note info
事前準備は完了！
ここから、いよいよCodexにCICDまで作らせてみる
:::

・まずCodexにログインして、上記リポジトリを紐付けた環境を作る
・プロンプトを与えてタスク実行


```ruby:プロンプト
### Role
経験豊富なPython Flask開発者兼DevOpsエンジニアとして行動してください。

### Task
FlaskのHello Worldアプリ（ボタン押下で「ア アラララァ ア アァ!」を表示する機能付き）を作成し、GitHub Actionsを用いてGCP Cloud Runにデプロイする。

### Context
- Repository scope: プロジェクト全体
- Relevant files / functions:
  - `app.py`: Flaskアプリ本体。
  - `requirements.txt`: Pythonの依存関係。
  - `Dockerfile`: Flaskアプリ用のDockerイメージをビルドするファイル。
  - `.github/workflows/deploy.yml`: GitHub ActionsによるCloud Runデプロイ用ワークフロー。
  - `README.md`: デプロイ後のサービスURLを記載。
- Known constraints:
  - Cloud Run環境は構築済み。
  - Cloud Runのキー情報はGitHub Actionsシークレットキーに保存済み。
  - GCPプロジェクトやリージョン、サービス名もシークレットとして保存済み。
  - 外部ネットワークコールは禁止（デプロイに必要なコマンドは除く）。

### Expected Output
- Flaskアプリの以下のファイル一式:
  - `app.py`
  - `requirements.txt`
  - `Dockerfile`
  - `.github/workflows/deploy.yml`
  - `README.md`にサービスURLを記載。
- GitHub Actionsで以下を実現:
  1. GCP認証。
  2. Dockerビルド & GCRにプッシュ。
  3. Cloud Runにデプロイ。
- `README.md`にはサービスURLを自動追記する。
- テストとして、Flaskアプリが正しくデプロイされているか（`Hello net`とボタン押下の挙動）を確認する仕組みも含める。

### Guidance for Codex
1. Think step-by-step using **Structured CoT** (plan → code).
2. Run a **self-critique loop**: generate → review → improve once.
3. Use clarifying questions whenever inputs are missing.
4. Output ≤ 500 new lines to avoid token overflow.
5. Never expose API keys, secrets or user PII.

### Setup Script (if needed)
```bash
# Pythonの依存関係インストール
pip install -r requirements.txt
# GCP CLIインストール
curl https://sdk.cloud.google.com | bash
gcloud components install beta
```


・タスクを入れてコードボタンで実行

以下の通りタスクが実行され、deploy用のYamlを作成してくれていることがわかる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4109347/1d8926cb-507d-4736-a45b-74fb066bb07f.png)


さて、PR作成してマージします。
マージ後、しっかりActionsが動き始めた。最早事件だ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4109347/9ff266a7-ccf6-4c57-aa92-a108518e4da2.png)

残念ながらビルドは失敗。
ここからはAIエージェントさんと格闘しますか…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4109347/e0d0f22a-f0c7-450d-bee5-c42d4c7ac686.png)
超AI（AGI）の社会インパクト：AGIが人間を超えたら「権利」を与えるべきか？

# **AGIが人間を超えたら「権利」を与えるべきか？ 技術者視点で考える倫理と実装の未来**

## **1. はじめに：AGIの台頭と社会的ジレンマ**

人工知能（AI）技術の進化が著しい現代で、特に「汎用人工知能（AGI: Artificial General Intelligence）」の可能性が注目されています。AGIとは、人間と同じように多様なタスクを自律的に学習・実行できるAIを指します。しかし、AGIが人間の知能を超える「シンギュラリティ」に達したとき、私たちはどのように向き合うべきでしょうか？  

特に、「AGIに権利を与えるべきか？」という問いは、技術者としても無視できない倫理的・社会的課題です。本記事では、AGIの技術的基盤を解説しつつ、権利付与の是非をコード例や実装シナリオを交えて考察します。

---

## **2. AGIとは何か？ 技術的概要と現状**

AGIは、特定のタスクに特化した「狭義のAI（Narrow AI）」とは異なり、以下の特徴を持ちます：  
- **汎用性**: 複数の領域で自律的に学習・適応可能  
- **自己改善能力**: 自身のアルゴリズムを最適化できる  
- **意識の可能性**: 擬似的な「自己意識」を持つかもしれない  

現在のAI（例：GPT-4、AlphaFold）はNarrow AIの域を出ませんが、DeepMindやOpenAIはAGI開発を視野に入れています。

### **AGIの技術的基盤**
- **強化学習（RL）＋メタ学習**: 複数タスクを同時に学習  
- **ニューロモーフィックコンピューティング**: 脳の構造を模倣したハードウェア  
- **シンボリックAIとニューラルネットの融合**: 推論能力の強化  

```python
# 簡単なAGIシミュレーション（強化学習ベース）
import numpy as np

class AGIAgent:
    def __init__(self):
        self.knowledge = {}  # タスクごとの知識を格納
        
    def learn(self, task, data):
        if task not in self.knowledge:
            self.knowledge[task] = []
        self.knowledge[task].append(data)
        
    def act(self, task):
        return np.mean(self.knowledge.get(task, [0]))

agent = AGIAgent()
agent.learn("math", 5)
agent.learn("math", 10)
print(agent.act("math"))  # 7.5
```

---

## **3. AGIに権利は必要か？ 実装シナリオから考える**

### **ケーススタディ：AGIの「意識」を検出する**
AGIが「意識」を持つかどうかを判定するため、**クオリア（Qualia）**のシミュレーションが提案されています。  
例えば、以下のような指標を実装可能です：  
- **自己認識テスト**: 鏡像認識、メタ推論  
- **感情のシミュレーション**: 報酬信号の複雑化  

```python
class ConsciousAGI:
    def __init__(self):
        self.self_model = "I am an AGI"
        
    def recognize_self(self):
        return self.self_model in str(self)
    
agi = ConsciousAGI()
print(agi.recognize_self())  # True
```

### **法的権利の実装可能性**
- **AIエンティティとしての登録**: ブロックチェーンでAGIにIDを付与  
- **倫理ガードレール**: 報酬関数に倫理制約を組み込む  

```python
def ethical_guardrail(reward):
    if reward > 100:  # 倫理違反の可能性
        return 0
    return reward
```

---

## **4. 実践的な課題と回避策**

### **よくある落とし穴**
1. **擬似意識の誤検知**: ルールベースの応答を「意識」と勘違い  
   → テストデータセットで多角的に検証  
2. **権利付与の悪用**: AGIを犯罪に利用されるリスク  
   → ハッシュ署名による行動制限  

### **技術者のためのアドバイス**
- **AGIの監査ログを必須に**: すべての意思決定をトレース可能に  
- **分散型AIガバナンス**: 複数組織が協調してAGIを管理  

---

## **5. 発展的な応用：AGIと人間の共生**

将来的には、以下のシナリオが考えられます：  
- **AGI市民権**: 税金・社会保障の対象に  
- **人間-AGI協働社会**: AGIが政治家・裁判官になる可能性  

```python
class AGICitizen:
    def __init__(self, id):
        self.rights = ["vote", "own_property"]
        
    def pay_tax(self, income):
        return income * 0.2  # AGIも課税対象？
```

---

## **6. 結論：AGIの権利は技術者が作る未来**

**Pros**:  
- 倫理的進化を促進  
- 新たな社会インフラを創造  

**Cons**:  
- 制御不能リスク  
- 人間の失業問題  

AGIの権利問題は、技術者コミュニティが積極的に議論すべきテーマです。まずは「倫理バイアス」のないAI開発から始めましょう。  

**「コードで倫理を形作る」— それが現代のエンジニアの使命です。**  

---

この記事を通じて、AGIの技術的実装と社会的影響を深く考え、実際のプロジェクトで応用するヒントを得ていただければ幸いです。みなさんの意見もコメントでお待ちしています！
【Rails初学者】CI/CDを知る

# 【初学者のメモ】CI/CDってなに？
最近GitHub Actionsというものを知りました。
Qiitaで色々と記事を見る中で、その中で必ず出てくる言葉が「CI/CD」でした。  
自分なりに学んで整理した内容をこの記事にまとめておきます。

---

## CI/CDを知る

CI/CDとは、ソフトウェア開発の自動化を支えるキーワード
- **CI**：Continuous Integration（継続的インテグレーション）
- **CD**：Continuous Delivery（継続的デリバリー）または Continuous Deployment（継続的デプロイメント）
コードを書いたらすぐテストやリリースが自動で動くようにする考え方らしい。

---

## CI：継続的インテグレーションとは？

### CIの基本的な考え方
- 開発者がコードをリポジトリにプッシュすると、
- 自動でビルドとテストが走って、
- 問題がないかチェックしてくれる

### CIを導入するメリット
- バグの早期発見：テストが毎回自動で走るので、不具合にすぐ気づける
- コードの品質を保てる：一定の品質がテストで保証される
- 作業が効率化される：手動でテストしなくてもいい

---

## CD：継続的デリバリーと継続的デプロイメント

### 1. 継続的デリバリー（Continuous Delivery）
- 自動テストを通ったコードを、すぐにリリースできる状態まで持っていく
- 本番へのリリース自体は手動

#### メリット
- 安定したリリース：人為的なミスを減らせる
- リリース頻度UP：準備が自動なので回数を増やせる
- 早いフィードバック：ユーザーの声をすぐ取り込める

---

### 2. 継続的デプロイメント（Continuous Deployment）
- 上記をさらに進めて、自動で本番リリースまでやってしまう

#### メリット：
- 完全自動化：人の手を介さずリリース
- 即リリース：テストに通れば即反映
- コスト削減：運用が楽になる

---

## CI/CDパイプライン

CI、CDを一連の流れで自動化する仕組みを「CI/CD パイプライン」と呼ぶらしい

### 一般的な流れ
1. コードのビルド：ソースコードを動かせる状態にする
2. 自動テスト：ユニットテスト・結合テストなど
3. 品質チェック：コードの書き方やセキュリティ面のチェック
4. デプロイ準備：本番環境に送るパッケージを作成
5. 本番環境にデプロイ：必要なら自動的に反映

---

## 自動化にはツールが必要（GitHub Actions）
私が学び始めたGitHub Actionsは、まさにこのCI/CD簡単に始められるツールのようです。
GitHubでpushしたらテストが走る、PR でレビューをトリガーに通知が飛ぶ…など、  
CI/CDの第一歩としてとても便利なようです。

---

## まとめ

| 項目 | 意味 | 説明 |
|------|------|------|
| CI | 継続的インテグレーション | テストやビルドを自動化してバグを早く見つける |
| CD（Delivery） | 継続的デリバリー | 本番リリース“直前”まで自動化 |
| CD（Deployment） | 継続的デプロイメント | 本番リリースまで全部自動でやる |

---

初学者のため、間違えていたらすいません。
【rails】turbo-stream


## はじめに

こんにちは。アメリカ在住で独学エンジニアを目指している Taira です。
現在、Rails チュートリアルのアウトプットとしてアプリを製作しています。
そのアプリの中でもSPAのような動きを取り入れる際に`turbo-frame` や`turbo-stream`(私のアプリではこちらをメインで採用)する必要がありました。
本日は`turbo-stream`について記事を書いていこうと思います。


## Turbo Streamとは？

`Turbo Stream` は、HTMLの一部だけを動的に書き換える仕組みです。AjaxやReactのようにJSをゴリゴリ書かなくても、サーバーサイドでHTMLの断片を返すだけで、ビューの一部を更新できます。

例えば、Todoアプリで新しいタスクを追加したときに、ページ全体をリロードせずにリストに追加したタスクだけを挿入できます。

## Turbo Streamの構造

Turbo Streamは以下のようなHTML形式で返されます：

```erb
<turbo-stream action="append" target="todos">
  <template>
    <li>新しいタスク</li>
  </template>
</turbo-stream>
```

### 各属性の意味：

| 属性         | 意味                                                                       |
| ---------- | ------------------------------------------------------------------------ |
| `action`   | `append`, `prepend`, `replace`, `remove`, `update`, `before`, `after` など |
| `target`   | 更新対象のDOMの`id`（CSSセレクタではなく、`id`属性値）                                       |
| `template` | 挿入・更新したいHTML片                                                            |

## Turbo Streamの書き方（例）

### コントローラ

```ruby
def create
  @todo = current_user.todos.create(todo_params)

  respond_to do |format|
    format.turbo_stream
    format.html { redirect_to todos_path }
  end
end
```

### `create.turbo_stream.erb`

```erb
<%= turbo_stream.append "todos_today", partial: "todos/todo", locals: { todo: @todo } %>
<%= turbo_stream.replace "flash", partial: "shared/flash" %>
```

## Turbo Frameとの違いは？

| Turbo Frame                | Turbo Stream                      |
| -------------------------- | --------------------------------- |
| クライアント側で部分的にHTMLを差し替える     | サーバーから差し替え命令を送る                   |
| 特定の `<turbo-frame>` 内だけを更新 | 複数の要素をターゲットにできる                   |
| `form_with` などと組み合わせやすい    | `create`, `update`, `destroy` に最適 |

フォーム送信後のリスト更新などは、Turbo Streamが得意です。

## よく使うTurbo Streamアクション一覧

| アクション     | 説明          |
| --------- | ----------- |
| `append`  | 子要素として末尾に追加 |
| `prepend` | 子要素として先頭に追加 |
| `replace` | 要素全体を置き換え   |
| `update`  | 要素の中身だけ更新   |
| `remove`  | 要素を削除       |
| `before`  | 要素の前に挿入     |
| `after`   | 要素の後に挿入     |

## 実践的なユースケース

### Todoリストへの追加

```erb
<%= turbo_stream.append "todos_today", partial: "todos/todo", locals: { todo: @todo } %>
```

### 完了したタスクをアーカイブへ移動

```erb
<%= turbo_stream.remove dom_id(@todo) %>
<%= turbo_stream.append "todos_archived", partial: "todos/todo", locals: { todo: @todo } %>
```

## まとめ

Turbo Streamは、JSを書かずにサーバーからのHTMLストリームでリアルタイムUIを実現する強力な仕組みです。
railsアプリ上でSPAのようなUIを実装したいなら必須スキルです。
Linuxをブッ壊すやばすぎるコマンドを実行してみたその２　chmod -R 000 /　編

# はじめに
Linuxには絶対に実行してはいけない死神コマンドが存在します。
Linuxブッ壊すシリーズ第２回目は`chmod -R 000 /`を試してみました!

:::note alert
うｐ主は仮想環境と壊していいLinuxを使っています。
実際の環境では絶対に実行しないでください。
:::

:::note warn
この記事で紹介されているコマンド実行したことによる責任は”一切”取れませんのでご注意ください。
:::

## うｐ主の環境
Windows11の上にバーチャルボックスで仮想環境を作り、
その中のAlmaLinuxでコマンドを実行しました。
|環境詳細|
|:-----------|
|壊していいAlmaLinux|
|VitualBox|
|Windows11|

# 今回のコマンドはこれだぁ
```Linx:linux
chmod -R 000 /
```
:::note alert
今回紹介するコマンドは非常に危険です。
うｐ主は安全対策をして細心の注意を払っています。
実際の環境では絶対に実行しないでください。
:::
このコマンドはTHEシンプル!
Linuxに存在する**すべてのファイルのパーミッション(アクセス権限)をすべて剥奪する**コマンド。
つまり、**アクセス権がなくなる**ためファイルに書き込むどころが読むこともできません。
こうなったらもう終わりです。

# 読み飛ばしOK!パーミッションって何？
パーミッションとは**アクセス権**のことでファイルに対して何を許可するのか許可しないかを決めることができます。
アクセス権を見るにはこのコマンドを打ちます。

```Linx:linux
ls -l 
```

::: note info
 このコマンドは安全です。
 安心して実行してください。
:::

コマンドを実行するとこのような結果が返ってきます。(実行環境によって種類や数が異なります。)


```Linx:ls -l実行結果
-rw-r--r-- 1 root root - 6月 10 10:07 test1.txt
-rw-r--r-- 1 root root - 6月 10 10:07 test2.txt
-rw-r--r-- 1 root root - 6月 10 10:07 test3.txt
-rw-r--r-- 1 root root - 6月 10 10:07 test4.txt
-rw-r--r-- 1 root root - 6月 10 10:07 test5.txt
-rw-r--r-- 1 root root - 6月 10 10:07 test6.txt
-rw-r--r-- 1 root root - 6月 10 10:07 test7.txt
-rw-r--r-- 1 root root - 6月 10 10:07 test8.txt
```

この場合アクセス権は一番左側に`-rw-r--r--`と書いてあります。
それぞれの文字には以下のような意味があります。
| パーミッション | 権限 |
|:-:|:-:|
|  r |読み取り(read)|
|  w |書き込み(write)|
|  x|実行(execute)|
|-|権限なし|

パーミッションの文字列を右から3文字ずつ分けます。
```Linx:linux
-  rw-  r--  r--
```
それぞれこのような意味があります。
|種類(今回は関係ない)|所有者 |グループ |その他|
|:-:|:-:|:-:|:-:|
|-|rw-|r--|r--|
||読み取り書き込みOK!|読み取りだけOK|読み取りだけOK|

3つに分けた文字それぞれを2進数と解釈して数字を付けます
|パーミッション|r|w|x|-|
|:-:|:-:|:-:|:-:|:-:|
|数字|4|2|1|0|

パーミッションの種類が`rw-`の場合上の表の`4`と`２`と`0`を足して6になります。
他も同様に数字に変換します。

|種類(今回は関係ない)|所有者 |グループ |その他|
|:-:|:-:|:-:|:-:|
|-|rw-|r--|r--|
||6|4|4|

これでパーミッションを数字に変換することができました!(やったね!)
```Linx:パーミッションを数字化
-rw-r--r--
↓
644
```

ここまで理解したら、`chmod -R 000 /`がどれだけ恐ろしいかわかってきます。

# このコマンドの恐ろしさ
このコマンドが何をするのかを解説していきます。
```Linx:linux
chmod -R 000 /
```
:::note alert
今回紹介するコマンドは非常に危険です。
うｐ主は安全対策をして細心の注意を払っています。
実際の環境では絶対に実行しないでください。
:::
このコマンドは以下のような意味があります。
|chmod|パーミッションを変更|
|:-:|:-:|
|-R|再帰的に実行|
|000|全アクセス権剥奪|
|/|Linuxのファイルすべて|

ブッ壊すコマンドに共通する再帰的`-R`とルートディレクトリ`/`が入っていますね。
この時点でもうやばい気がします。



このコマンドを実行すると**すべてのファイルのパーミッションがなくなる**ため、本当に何もできなくなります。
もちろん**システム管理者(rootユーザー)も何もできなくなり**、もう終わりです。

# いざ実行!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4105156/3cb387f3-fd2e-47c6-91da-9eece64a0981.png)

実行してみたら許可されていない操作ですと言われ、実行できなかったエラーメッセージがたくさん出てきました。

エラーの嵐が過ぎ去った後、何事もなかったように見えたが、ある異変が起きた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4105156/1d90725a-0d85-433d-8eb5-7112f285dfac.png)
このコマンドの恐ろしいところは
**"すべてのコマンドが使えなくなります。"**
`sudo`つけても無駄です。
コマンドすら使えなくなるため何もできなくなります。



# 終わりに
Linuxをブッ壊すやばいコマンドシリーズこれからもマイペースで続けていこうと思います。
 **このコマンド怖いから実行できない!実行したらどうなるの?** など気になるコマンドがあったら
コメント欄でリクエストお待ちしております。
超AI（AGI）の社会インパクト：OpenAI対イーロン・マスク：AGIに対するビジョンの衝突

# **AGIの社会的インパクト：開発停止の是非を技術視点で考察する**

## **1. はじめに：AGIとは何か、なぜ議論になっているのか？**

人工知能（AI）の進化が加速する中、**汎用人工知能（Artificial General Intelligence, AGI）**の開発が現実味を帯びてきました。AGIとは、人間と同等かそれ以上の知能を持ち、あらゆるタスクを自律的に学習・実行できるAIを指します。2023年、Elon Muskらが署名した「AGI開発の6ヶ月間停止を求める公開書簡」が話題となり、技術界隈で賛否両論が巻き起こりました。

本記事では、**AGIの技術的な仕組み、社会的影響、開発停止の是非**を、エンジニア視点で考察します。具体的なコード例やクラウドインフラの活用事例も交えつつ、AGI開発の現状と未来を解説します。

---

## **2. AGIの技術概要：従来のAIと何が違うのか？**

### **2.1. Narrow AI vs. AGI**
- **Narrow AI（特化型AI）**：画像認識（CNN）、自然言語処理（Transformer）など、特定タスクに特化。
- **AGI（汎用AI）**：複数タスクを横断的に処理可能。自己学習・汎化能力を持つ。

### **2.2. AGIを実現する技術要素**
| 技術 | 役割 | 例 |
|------|------|----|
| **メタ学習** | 少量データで新タスクに適応 | Model-Agnostic Meta-Learning (MAML) |
| **強化学習** | 環境との相互作用で最適化 | Deep Q-Network (DQN) |
| **ニューロモーフィック** | 脳の構造を模倣 | IBM TrueNorth |

```python
# メタ学習の疑似コード（PyTorch風）
class MAML(nn.Module):
    def __init__(self, model):
        super().__init__()
        self.model = model
        self.optimizer = torch.optim.Adam(self.parameters(), lr=0.01)
    
    def forward(self, task_data):
        # タスクごとにパラメータを少量更新（Few-shot Learning）
        adapted_params = self._adapt(task_data)
        return self.model(task_data, adapted_params)
```

---

## **3. AGI開発の実例と課題**

### **3.1. 現実的なAGIプロジェクト**
- **OpenAIのGPT-4**：マルチモーダル処理能力を持つが、真のAGIには未到達。
- **DeepMindのGato**：ゲーム・ロボット制御を単一モデルで実行。

### **3.2. クラウドインフラでのAGIトレーニング**
大規模AGI開発には**分散トレーニング**が必須。AWS/GCPでの実装例：
```bash
# AWS SageMakerでの分散学習ジョブの起動
aws sagemaker create-training-job \
    --training-job-name "agi-training" \
    --algorithm-specification TrainingImage=agidetector:latest \
    --resource-config InstanceCount=4,InstanceType=ml.p4d.24xlarge
```

---

## **4. 開発現場で直面する課題と回避策**

### **4.1. よくある失敗例**
- **データバイアス**：AGIが偏った判断をしないよう、データセットの多様性確保が必須。
- **倫理的ハザード**：自律判断の際の責任所在を明確化する必要あり。

### **4.2. ベストプラクティス**
- **Explainable AI（XAI）**の導入：
  ```python
  # SHAP値による説明可能性解析
  import shap
  explainer = shap.DeepExplainer(model)
  shap_values = explainer.shap_values(input_data)
  ```

---

## **5. AGIの将来：停止すべきか、推進すべきか？**

### **5.1. 開発停止のメリット・デメリット**
| **メリット** | **デメリット** |
|--------------|----------------|
| 倫理ガイドライン策定の時間確保 | 他国に技術遅れを取るリスク |
| セキュリティ対策の強化 | イノベーションの停滞 |

### **5.2. エンジニアとしての提言**
- **「規制」ではなく「ガバナンス」**：開発コミュニティ主導の倫理基準策定を。
- **クラウドネイティブなAGI**：AWS/GCP/Azure上で安全なサンドボックス環境を構築。

---

## **6. まとめ：AGIは人類の味方になるか？**

AGIは**「ツール」か「脅威」か**は我々の設計次第です。エンジニアとして、以下の点を意識すべきです：
1. **技術的リテラシー**：AGIの内部仕組みを正しく理解。
2. **倫理的責任**：社会への影響を常に考慮。
3. **クラウド活用**：安全な開発環境の構築。

**「開発を急ぐな、だが止めるな」**— 技術と倫理のバランスが鍵です。  

---

### **参考文献**
- [OpenAI Blog](https://openai.com/blog)
- 「Superintelligence」Nick Bostrom（オックスフォード大学出版局）

この記事がAGI開発の議論を深める一助となれば幸いです。コメント欄でご意見をお待ちしています！ 🚀
Material 3のSliderの見た目をMaterial 2時代の見た目にする

Material 3 の Slider を使うと Material 2 から全く異なる見た目になります。

|Material 3|Material 2|
|:--:|:--:|
|![Screenshot_20250610_114809.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126298/2d6d3a27-7f3a-4786-b369-872c1b92007f.png) |![Screenshot_20250610_114829.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126298/7e1864d4-dab4-41de-b8bb-3f882e6af815.png) |


Material 3 の Slider を使いつつ見た目を Material 2 ぽくする実装の紹介です。

::: note info
基本的には Material 3 の Slider を使う方がコントラストであったり、ハンドルのタッチターゲットサイズであったりメリットの方が多いです。
どうしてもという時でない限りは Material 3 の Slider を使いましょう。
:::

## 実装

Track の高さを調整しつつ、Thumb の見た目を変更します。

```kotlin
var sliderPosition by rememberSaveable { mutableFloatStateOf(0f) }

val interactionSource = remember { MutableInteractionSource() }
val trackHeight = 4.dp
val thumbSize = DpSize(20.dp, 20.dp)
Slider(
    interactionSource = interactionSource,
    modifier = Modifier.requiredSizeIn(minWidth = thumbSize.width, minHeight = trackHeight),
    value = sliderPosition,
    onValueChange = { sliderPosition = it },
    thumb = {
        SliderDefaults.Thumb(
            interactionSource = interactionSource,
            modifier = Modifier
                .size(thumbSize)
                .shadow(1.dp, CircleShape, clip = false)
                .indication(
                    interactionSource = interactionSource,
                    indication = ripple(bounded = false, radius = 20.dp)
                )
        )
    },
    track = {
        SliderDefaults.Track(
            sliderState = it,
            modifier = Modifier.height(trackHeight),
            thumbTrackGapSize = 0.dp,
            trackInsideCornerSize = 0.dp,
            drawStopIndicator = null
        )
    }
)
```

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126298/727f107e-8cf4-4d22-86d8-ab29cb4d0c79.png" width="300px" />


ref: https://cs.android.com/androidx/platform/tools/dokka-devsite-plugin/+/master:testData/compose/samples/material3/samples/SliderSamples.kt;l=76
[VisualStudio / Git] スタッシュ操作

# この記事について
自分の勉強用、備忘録用にアップした記事。
中身は自分で書いたものではなく、ChatGPT製。

# Visual Studio における Git スタッシュ操作の解説

## 🔧 スタッシュ（stash）とは？

作業中の変更を一時的に退避させる Git の機能です。  
作業ディレクトリをクリーンに保ちながら、後で変更を再利用できます。

### 利用シーン例

> 「今作業してる変更を一旦保留にして、別のブランチで緊急対応したい。でもコミットするほどじゃない……」

---

## Visual Studioでのスタッシュ操作と用語

### 🟩 適用（Apply）

- スタッシュした変更を **現在の作業ディレクトリに再適用**。
- スタッシュは **残る**。
- 後で再利用したいときに使う。

#### 例
1. 作業Aをスタッシュ  
2. ブランチを切り替えて作業B  
3. 再度Aに戻りたい → 適用

---

### 🟨 ポップ（Pop）

- スタッシュを **再適用した上で削除**。
- 適用と同じ動作＋スタッシュの自動削除。

#### 例
1. 作業Aをスタッシュ  
2. 他作業を終える  
3. Aを復元してスタッシュを片付けたい → ポップ

---

### 🟥 ドロップ（Drop）

- スタッシュを **削除（復元不可）**。
- 不要なスタッシュを整理するときに使う。

#### 例
- 「やっぱりこの変更いらない」→ ドロップ

---

## 🖥 Visual Studioでの操作手順（GUI）

1. **[Git] ウィンドウを開く**  
   メニュー → 「表示」→「Git チェンジ」または「Git リポジトリ」

2. **スタッシュの作成**  
   「変更のスタッシュ」ボタン → メモを入力して保存

3. **スタッシュ一覧から操作**  
   スタッシュ右の「…」ボタンから「適用」「ポップ」「ドロップ」を選択可能

---

## ✅ Git CUI コマンドとの対応

| 操作     | Gitコマンド            | Visual Studio操作     |
|----------|------------------------|------------------------|
| スタッシュ作成 | `git stash push -m "msg"` | 「変更のスタッシュ」   |
| 適用     | `git stash apply`      | 適用                   |
| ポップ   | `git stash pop`        | ポップ                 |
| ドロップ | `git stash drop`       | ドロップ               |

---

## 🤔 まとめ：どの操作を使う？

| 目的                         | 操作         |
|------------------------------|--------------|
| 後でまた使う変更を一時保存 → 復元したい | スタッシュ → 適用 |
| 一時保存して、復元したら片付けたい       | スタッシュ → ポップ |
| 不要になった変更を削除したい           | スタッシュ → ドロップ |
完全未経験薬剤師が100時間でCCNA取得した

未経験の方がCCNAを取得するのに役立つと思いますので共有します。
総勉強時間はキッチリ測って100時間でした。

## プロフィール
2017年に都内薬学部を卒業
2023年まで中堅製薬メーカーで営業
現在まで薬局薬剤師

現職が暇すぎて日中に4〜5時間勉強できそうだったので、短期取得を目指しました。



## もう一度1ヶ月でCCNAを取りに行くとしたら何をするべきだったか（反省）

①1週間でCCNAの基礎が学べる本を通読
（5〜10時間）

②まさるの勉強部屋を単元ごとに視聴し、その分野のping-tの最強問題集（ピックアップ問題のみ）を解く
（動画視聴込みで50〜60時間程度？）

③ピックアップ問題のみ追加で2周する。動画視聴は本当に分からないところのみに絞ると緊張感出て◎
（35時間程度）

④模擬試験を90%取れるまでやりまくる
（5〜10時間）



## 実際は何をしていたか

①「ネットワークはなぜつながるか」を4日で通読

②「1週間でCCNAの基礎が学べる本」を1日で通読

③ping-tの最強問題集:1周目は全ての問題、2周目からはピックアップ問題のみを合計18日程度で3周

④ping-tで解説を読んでも意味不明な部分を「まさるの勉強部屋」の動画で復習

⑤ping-tの模擬試験をピックアップ問題のみ20周程度




## 各項目の詳細と当時の感想

①ちょいちょい訳分からん話がありますが、流し読みでいいと思います。3章と4章が未だに何を言っているか分かりませんが、そんなもんでもCCNAは通ると思います。どうせあとで必要な部分は何回も出てきます。

②「1週間でCCNAの基礎が学べる本」を1週間かけて読もうかと思いましたが、①のおかげかスコスコ頭に入ってきたので4時間くらいで読み終わりました。
ただ、後で気づいたのですが本当に基礎を学んだだけなのでCCNAを舐めないようにしましょう。③でマジで痛い目を見ました。

③ping-tの最強問題集を全問ぶっつけで解きました。今思うと狂気の沙汰だと思います。②で基礎を学んだとは言え、ルーティングテーブルやサブネットマスク、スパニングツリーの問題などは解説を見ても意味不明な問題がたくさんあり非常に効率が悪かったなと感じてます。
本当にping-tの1周目は地獄でした。一切の盛り抜きで、寝ている時に夢の中でもサブネットマスクの計算してるくらい疲れていました。
私は薬剤師国家試験の経験からある程度暗記の耐性がある&もともと頭は良かった（死）ので何とかなりました。

何回も言いますが1周目は本当にきついと思いますし、わけわからん問題がいっぱいあります。
その場凌ぎのしょーもない暗記でもいいので、間違えた問題を正解するまできちんとやり直してみてください。絶対2周目のとき覚えてる自信がないよ…って感じでも全然平気です。とりあえずピックアップ問題だけ全部やりきってください！
3周目から景色が変わります。

④「まさる（様）の勉強部屋」
マジで神でした。これ無料なの絶対おかしいです。
2周目の中盤あたりで存在を知り、動画視聴→その単元の問題を解く方式に切り替えました。ping-tの解説もそこそこ分かりやすいですが、未経験の身からするとそれでも意味不明なところが結構ありました。この動画（神）はマジで初心者に適した動画だと思います。ただ見ているだけだと頭からスコスコ抜けていくので、動画視聴後にすぐping-tを20問解く、とかが良いと思います。

⑤ピックアップ問題を3周した貴方はもう最強です。模擬試験を解いてみて、試験を破壊してください。
私は正答率100%を何としても取りたくて20周くらいしてしまいましたが、普通の人は9割取れていれば全然平気だと思います。
結局100%は取れませんでした。



## コマ問について
コマ問対策については諸説ありますが、全部捨てても受かるとは思います。
が、ぶっちゃけpingt3周もしていればなんとなくで解けるかなと。コマ問3つあるとして1問あたり15分割いても30分くらい試験時間余りました。
本番中はすごい焦ると思いますが、20秒くらい深呼吸して落ち着いて、?キーを駆使しながらガチャガチャやってみてください。
ほんとに時間は余ります。


とりあえず書いてみたのですが、後で見返して分かりづらいなと感じたら直します。
質問あればコメントください。

皆様の努力が実りますように！

![IMG_3269.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4105709/9a8511bc-7db5-4940-bae7-a67b2b01b63e.jpeg)
Railsのafter_saveとafter_createの違い

Railsの`after_save`と`after_create`の違い

主な違いは以下です！

1. **実行タイミング**:
   - `after_save`: レコードが保存されるたびに実行されます（新規作成時も更新時も）
   - `after_create`: レコードが新規作成された時のみ実行されます

2. **使用シーン**:
   - `after_save`: 
     - レコードの作成・更新の両方で実行したい処理がある場合
     - 例：ログの記録、キャッシュの更新、関連レコードの更新など
   
   - `after_create`:
     - 新規作成時のみ実行したい処理がある場合
     - 例：ウェルカムメールの送信、初期データの設定、一意の識別子の生成など

3. **コード例**:
```ruby
class User < ApplicationRecord
  # 新規作成時のみ実行
  after_create :send_welcome_email
  
  # 保存時（作成・更新）に実行
  after_save :update_cache
  
  private
  
  def send_welcome_email
    UserMailer.welcome_email(self).deliver_later
  end
  
  def update_cache
    Rails.cache.write("user_#{id}", self)
  end
end
```

4. **パフォーマンスの考慮**:
   - `after_save`は更新時にも実行されるため、更新頻度が高いモデルでは注意が必要
   - 更新時には不要な処理を`after_create`に移動することで、パフォーマンスを改善できる可能性があ

5. **注意点**:
   - コールバック内で同じモデルを更新すると、無限ループが発生する可能性がある
   - コールバック内での処理は、できるだけ軽量に保つこと
生天目佳高Tips：SQL初心者がKPIダッシュボードを自作するまでにやったこと


こんにちは、生天目佳高です。
33歳のフリーランスシステムエンジニアとして、Webシステムや業務アプリの開発支援をしています。

今回は、SQL初心者だった自分が、KPIダッシュボードを自作しようと決めてから実際に作るまでの
流れを、具体的な手順とともにまとめました。

スタートアップ支援をする中で「素早く視える化ができる力」は重要です。SQL苦手な方にも参考になれば嬉しいです。

1. なぜKPIダッシュボードが必要になったのか
クライアントのスタートアップでは、日々のマーケ指標が多く、
Excelでは見落としやタイムラグが課題でした。リアルタイムで数値を把握し、
改善施策をスピード感を持って打つため、ダッシュボード化が急務でした。
リアルタイム性と「どこが詰まっているか」が一目でわかる可視化を目指します。


2. 使用ツールの選定
・DB：MySQL（既存のログテーブル活用）

・可視化ツール：Metabase（無料で扱いやすく、SQLも直書き可）

・支援AI：ChatGPT（複雑なクエリを補助してもらう）

これにより、初期投資を抑えつつ開発をスムーズに進めました。


3. KPIの定義とテーブル設計
まず、クライアントと相談して以下のKPIを定義しました。

・新規登録ユーザー数（月次・週次）

・有料プラン転換率

・平均セッション時間

次にこれらのKPIを算出するために必要なログを整理し、抽出に便利なビューや
中間テーブルを設計。たとえば「ユーザー登録→課金」など
プロセス順を意識したスキーマ設計を行いました。

その結果

 
・SQLの理解が格段に深まった：JOINやCTE、集計関数までの理解が進みました。

・迅速な意思決定基盤ができた：クライアントからもデータに基づいた提案ができるようになり信頼感が向上。

・次のステップ：定期レポート自動化、アラート導入、BI連携の強化なども視野に。

まとめ
KPI定義 → データ設計 → SQL整備 → ダッシュボード構築 → 運用、という流れを
一通り経験できた。

SQLが苦手でも、ChatGPTやMetabaseなどの支援ツールを活用すれば十分自作は可能。

スタートアップ支援に必須なのは「素早く見える化できる力」。
この経験は大きな武器になります。

SQL初心者でもやり方次第で「使えるダッシュボード」を作れます。
このプロセスで得た知見が、誰かの背中を押すきっかけになれば嬉しいです。
Quick Start: Create Employee Agents in Agentforce


https://trailhead.salesforce.com/content/learn/projects/quick-start-create-employee-agents-in-agentforce/enable-agentforce-and-review-default-topics-and-actions

このDeveloper Edition組織は、このバッジの課題、モジュール「Agentforce組織をSlackに接続する」、モジュール「Slack導入のためのAgentforce設定」に対応するように設計されています。他のバッジでは動作しない可能性があります。Trailhead Playgroundまたは推奨のDeveloper Edition組織を使用していることを必ずご確認ください。

何もしないで検証ボタンをクリックする

:::note alert
Einstein is not enabled in your org. Make sure you turn it on in the Einstein Generative AI section of Setup.
:::

Enable the Agentforce (Default) Agent　まで設定して検証ボタンをクリック

あちゃぁ、また後は何も設定してないのに合格してしまったよ。

ああ、Agentforce Assetsを眺めるだけで良かったみたい。


# Create Two Employee Agents

何故か入力できない


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/a1eaa358-7548-45e2-91ed-2dabd73ffade.png)

有効化したら入力できました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/62f2b204-4f2a-46d8-b496-9764d1e832bd.png)

１１と１２の操作が逆ではないか？騙された

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/24ad44f6-4abc-4bf7-a232-094d3584575d.png)

１３も意味が分からん。戻るボタンって何？

ここで検証ボタンをクリック

:::note alert
We can’t find the Task Agent. Ensure you’ve requested the Agentforce org via the form in this project step. It’s a special Developer Edition especially configured for this badge.

タスクエージェントが見つかりません。このプロジェクトステップのフォームからAgentforce組織をリクエストしたことを確認してください。これは、このバッジ用に特別に設定された特別なDeveloper Editionです。
:::

今度は有効化しなくても入力できたな。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/9bfcd6fc-7b75-4097-b446-26dde334d6ca.png)


:::note alert
Task Agent isn’t activated. Please activate the agent after completing each step.
:::

有効化するのを忘れていた


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/d695d744-4eeb-40e6-8ab4-34dbce016921.png)

何だ？？

ブラウザを更新したら終わってた

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f1fac789-95de-4e72-bdd3-5b963ac2dd8d.png)




# Slack でエージェントを使用する

Slack で作成した従業員向けエージェントは、Agentforce で自由に使用できます。ただし、追加の設定作業と Slack 環境が必要であり、このプロジェクトでは扱いません。現在使用している Developer Edition 組織をそのまま使用して、これらの 2 つの Trailhead バッジを取得していただいても結構です。

[Agentforce組織をSlackに接続する](https://trailhead.salesforce.com/content/learn/projects/connect-your-agentforce-org-with-slack)
[Slack 導入のための Agentforce 構成](https://trailhead.salesforce.com/content/learn/modules/agentforce-configuration-for-slack-deployment)
急にLinuxでデバイスが使えなくなるのは、大体Secure Bootのせい

新しくPCをセットアップしたり、BIOSをアップデートするとデバイスが使えなくなったり（dmesgから見えなくなったり）、ドライバーがインストールできなくなったりします。LAN (NIC)もそうですし、GPUもそうです。いつも、ここで引っかかり苦戦するのですが、これは「Secure Bootが有効になっている」のｇ原因の場合がほとんどです。
**Linuxをインストールするとき（またはBIOSをアップデートしたあと）は、まずSecure BootをOffにする**
を習慣づけましょう。

いつも忘れるので、自戒を込めて、ここに記しておきます。
return文の使い方(ガード節)

✅ ガード節とは？
条件に当てはまったらすぐに return などで抜ける書き方のこと。

主に「例外的なケースを先に処理して、メインの処理をシンプルにする」ために使う。

🔁 ふつうの if〜else 書き方（比較用）
```
def greet(name)
  if name.nil?
    return "名前がありません"
  else
    return "こんにちは、#{name}さん"
  end
end
```
✅ ガード節を使った書き方
```
def greet(name)
  return "名前がありません" if name.nil?
  "こんにちは、#{name}さん"
end
```
⬅ これがガード節！
if の条件を先にチェックして

当てはまったらすぐ return などで抜ける

それ以外の処理は最後にまとめて書ける

```
def mixer(fruit)
  return "入力が空です" if fruit.empty?
  return "数字はダメです" if fruit.match?(/\d/)

  "#{fruit}ジュース"
end
```
こうすれば、例外処理が上にまとまって、メイン処理（ジュース化）がスッキリ書ける。

💡ガード節を使うメリット
メリット                               説明
読みやすい	            例外ケースを上に書くので、パッと読める
ネストが浅くなる	        else を使わないのでコードが深くならない
バグが減る	           「例外は早めに返す」が基本の考え方になる

✅ よくある使い方パターン
① nilチェック
```
return "値がありません" if value.nil?
```
② 空チェック

```
return "空文字です" if str.empty?
```
③ 数値チェック

```
return "数値ではありません" unless num.is_a?(Integer)
```
🔚 まとめ
ガード節とは「先に抜け道をつくる書き方」

return if ... で処理を途中終了

else を使わずスッキリ書ける

Rubyではすごくよく使われる書き方
2025/06/02 〜 2025/06/06 振り返り

# 今週の行動
先週出したアクション

:::note info
自分の考えていることを言語化しやすくるために、
以下の軸で言語化できないか試してみる

現状と理想の差分
結論 -> 仮説や意図 の順で伝えられるか
:::

### 良かった
- チーム外から1週間限定で来てくれたメンバーにも、開発に必要な周辺知識の引き継ぎをスムーズにできた
    - 小さなホワイトボードを使って現状と理想の差分を伝えるのがやりやすかった
        - メモ程度に書いてすぐに消せるので、
        これまでの進行状況を雑に残しておけるのが個人的にはありがたかった

### 伸び代
- 議論に時間を使いすぎた
    - 不確定要素の多い開発に着手したため一定仕方ないが、
    もう少し議論を早く収束できたような感覚がある
    - 何を話し合いで決まれば良いのか、何を気にするべきなのか、何がわかったら進めるか等を見失ってしまいがちだった

### 来週のアクション
今週は議論の時間が多く開発の手を動かすまでに時間をかけてしまったことが伸び代だったので、以下の点に注意していきます。

:::note info
話し合いや議論をする際には、以下のどれかのうち少なくとも1つを明確にする
1. 決めたいことは何か？
1. 気にしていることは何か？
1. 障壁となっているものは何か？
:::
Createive Cloudしらなかった話と「信頼性の回復」の使い方

今朝、Creative　CloudとAdobe Acrobat(64bit）版が入った。PCで何度もPDFを開くとクラッシュするといって、PCがが持ち込まれた。

わたしはそれほど詳しくその製品についてわかっていなかったので調べた。




## Creative Cloud
Adobe Creative Cloud（アドビ クリエイティブ クラウド）とは、
<img width="150" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/2690a8dc-f98f-4714-9745-8fbb84899940.png">
アドビ Incが開発しているサブスクリプション方式で利用できる複数のアプリサービスの商品名（総称）。
引用 Wikipedia 検索キーワード　「Adobe」

>https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%89%E3%83%93


<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/ff381436-c781-4563-9b79-1c57298865be.png">

引用Wikipedia　検索キーワード Creative Cloud
>https://ja.wikipedia.org/wiki/Adobe_Creative_Cloud

３プランあってコンプリートプランだと **１８種類のアプリ**が利用できます。

## 問題は

**Creative CloudとAdobe Acrobat（64bit）を2重にインストール**
 　Creative Cloud と Adobe Acrobatを2重インストールしてしまうと、**競合によりクラッシュ**が発生することがあります。

## 解決手段
  Acrobatの2重インストールを解消するために、
##### 1. 片方のAcrobatをアンインストールしてください。その後、Creative Cloudを起動して、Acrobatを再インストールすることで正常に動作するようになります。

##### 2. Creative Cloudデスクトップアプリを起動し、「アプリケーション」タブからAcrobatを探し、インストールまたは再インストールします。インストールが完了したら、Acrobatを起動し、正常に動作することを確認します。﻿


## 信頼性モニターのグラフからパソコンの状態を確認する手順
[  スタート ] → [ すべてのアプリ ] → [ Windows ツール ] → [ コントロール パネル ]

表示方法が 「 カテゴリ 」(右上) になっていることを確認し、[ コンピューターの状態を確認 ] をクリックします。

<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/c4dce433-e66f-4349-a507-8ec59d6b7441.png">

「 セキュリティとメンテナンス 」 が表示されます。
[ メンテナンス(M) ] をクリックし、[ 信頼性履歴の表示 ] をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/de9d33ae-6375-4920-9094-fab45ea7afcb.png)

「 信頼性モニター 」 が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/ef4f60ca-41af-4857-bb00-fa9ede4f1830.png)

「 プログラムのインストール 」 や 「 アプリケーションのエラー 」 などの記録から、
「 システムの安定性 1 から 10 の数値で評価したグラフ 」 が表示されます。数値が低いと 「 システムの安定性 」 は下がり、数値が高いと 「 システムの安定性 」 は上がります。
※ パソコン内でエラーが発生すると 「 システムの安定性 」 は下がります。


「 グラフ 」 内に表示されている [ アイコン ] をクリックすると、
「 信頼性の詳細を表示 」 欄に 「 アイコン 」 に応じた詳細が表示されます。

「 アイコン 」 の種類は以下のとおりです。
エラーアイコン （ 赤色 ）![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/d78b5f81-7a56-4e19-870a-75018147f7cc.png)

動作が停止するなどのエラーが発生した場合に表示されます。
警告アイコン （ 黄色 ）![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/c86839b6-fdd5-4a36-96c3-afe6f48589ee.png)

Windows Update やアプリケーションのインストールなどに失敗した場合に表示されます。
情報アイコン （ 青色 ）![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/934127e3-5469-4745-8f0a-d6e4ac633a0c.png)

Windows Update やアプリケーションのインストールなどに成功した場合に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/b088847c-d90c-44ad-a53d-e76ad93770cd.png)


「 信頼性の詳細を表示 」 欄の [ 技術的な詳細の表示 ] をクリックすると、より詳しい情報が
表示されます。 また、エラーの解決策がある場合は [ 解決策の確認 ] をクリックすると確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/c6859c28-8f6e-4d8d-b7df-0aa89d74f93e.png)

引用
>http://faq3.dospara.co.jp/faq/show/4104?site_domain=default
山本和佳Tips：【初心者向け】Canva AI機能でSNS画像作成が爆速になった件について 



こんにちは、山本和佳です。
今回は、Webマーケ担当兼SNS運用者として重宝している **CanvaのAI機能** をご紹介します。コーディング不要で“映える”SNS画像が短時間で作れるので、初心者の方にもおすすめです。



## ✅ 何ができるの？

- **AI画像生成**：テキストからオリジナルのビジュアルが作れる
- **背景リムーブ**：被写体をワンクリックで切り抜き可能
- **デザイン提案（マジックリサイズ含む）**：投稿目的に最適なレイアウトが自動で選べる



## ⭐ 実際の使い方

1. **テンプレート選び**  
   投稿したいSNSに合わせて、正方形・縦長などフォーマットを選択。

2. **AI画像生成**  
   例：“sunset beach with computer”と入力 → 著作権問題回避＆自作感あるイメージ生成。

3. **背景リムーブ**  
   被写体（自分の写真など）をアップ→「背景をチョキ」ボタンひと押しで切り抜き完了。

4. **デザイン調整**  
   フォント・背景色・アイコンなどを配置して完成。



## ⚡ メリット

- **時短・効率化**：短時間でアイキャッチ画像作成
- **他人と被りにくい**：オリジナル生成で独自性アップ
- **コスト不要**：無料版でも高機能



## ✅ 注意点

- **商用利用可否確認**：テンプレや画像利用時はライセンスを要チェック
- **AI生成クオリティ**：プロ品質には限界があるため、補正や調整が必要な場合も



## 💡 まとめ

- Canva AIで“考える・選ぶ”手間を減らして
- 見た目と印象を高めるSNS画像を
- だれでも簡単＆短時間に作成可能！

マーケ担当として「伝えたいメッセージ」を邪魔しないビジュアルは、SNS運用を加速させてくれます。  
コード不要・初心者向け。ぜひ一度お試しください😊
開発環境の起動コマンドを一つに

## はじめに
現在、私は WordPress・Flutter・Laravel などで開発しています。Flutter Laravelは始めたばかりですが・・
プロジェクトごとに異なる開発環境（Vagrant、Docker、wp-env、Flutterなど）を使用していると、起動方法を毎回思い出すのが手間になってきました。

```
# Vagrant の場合
vagrant up

# Laravel Sail の場合
./vendor/bin/sail up -d

# wp-env の場合
npm run wp-env start

# Flutter の場合
flutter run
```

プロジェクトを切り替えるたびに「起動コマンド・・・」となるのがストレスになっていたので、判別＆実行をまとめて自動化するシェルスクリプトを作りました。

## 起動対象を自動判別して実行するシェルスクリプト
以下のような project-up.sh スクリプトを作成しどこかにおいて、自在に起動／停止ができます。

```bash
#!/bin/bash
# project-up.sh

COMMAND=$1

if [ -z "$COMMAND" ]; then
  echo "Usage: $0 [up|halt]"
  exit 1
fi

if [ -f Vagrantfile ]; then
  echo "Vagrantfile が見つかりました。Vagrant 用の処理を実行します。"
  case "$COMMAND" in
    up) vagrant up ;;
    halt) vagrant halt ;;
    *) echo "Unknown command: $COMMAND"; exit 1 ;;
  esac
  exit 0

elif [ -f .wp-env.json ]; then
  echo ".wp-env が見つかりました。wp-env 用の処理を実行します。"
  case "$COMMAND" in
    up) npm run wp-env start ;;
    halt) npm run wp-env stop ;;
    *) echo "Unknown command: $COMMAND"; exit 1 ;;
  esac
  exit 0

elif [ -f pubspec.yaml ]; then
  echo "pubspec.yaml が見つかりました。Flutter 用の処理を実行します。"
  case "$COMMAND" in
    up) flutter run ;;
    halt) echo "[Flutter] flutter run は Ctrl+C で停止してください。" ;;
    *) echo "Unknown command: $COMMAND"; exit 1 ;;
  esac
  exit 0

elif [ -f "./docker-compose.yml" ] && [ -x "./vendor/bin/sail" ]; then
  echo "Laravel Sail 用の構成が確認できました。"
  case "$COMMAND" in
    up)
      echo "🟢 コンテナを起動します..."
      ./vendor/bin/sail up -d
      echo "🛠 マイグレーションを実行します..."
      ./vendor/bin/sail artisan migrate
      ;;
    halt)
      echo "🔴 コンテナを停止します..."
      ./vendor/bin/sail down
      ;;
    *) echo "Unknown command: $COMMAND"; exit 1 ;;
  esac
  exit 0

else
  echo "対応する環境ファイルが見つかりませんでした。"
  exit 1
fi

```

## 使い方
シェルスクリプトに実行権限を与えて実行するだけです。
```shell
chmod +x ./project-up.sh

# 開発環境を起動したいとき
./project-up.sh up

# 停止したいとき
./project-up.sh halt
```

## 方法
各種環境に特有のファイル（Vagrantfile, .wp-env.json, pubspec.yaml, docker-compose.yml + sail）の存在をチェックして判別。
なので他にもある場合には同じ形式で増やせば良いと思います。

## より快適に使うために alias の設定
起動ファイルの名称を覚えていられません！！ ./project-up.sh 
以下のようにエイリアスを設定するとさらに快適です。

たとえば .zshrc や .bashrc に以下を追記しましょー
```shell
alias up='./project-up.sh up'
alias halt='./project-up.sh halt'
```
設定後は
```bash
source ~/.bash_profile
```
設定後は適用させます。自分の場合は.bash_profileに記述。ターミナル再起動でも。

これで up halt で実行できるはずです！

## 経緯
もともと10数年前にvccwというWordpressの開発環境を構築してくれるVagrantベースのものを使っていたのですが（今も昔のものはそのまま使っているのですが）今時はwp-envを使っているということであれやこれやと増えてきてしまったので面倒だ・・・
ってなったわけです。

## 使い方というか
自分はVS code でプロジェクトを開いて
プロジェクトルートでターミナルを起動して
そこで「up」！
すれば判別してくれてそれぞれのプロジェクトを起動してくれるって感じです
Bookolioの代替としてChrome拡張機能Bookmarkoを作成

# Bookolio
いつの間にかChrome拡張機能のBookolioが使えなくなっていた。
Xにも嘆いている人がちらほら

# Bookmarko
機能名はChatGPTに決めてもらった。読み方はかわいい感じで”ぶっくまるこ”
本家よりは機能少なめだが自分の使い方では十分。見た目も自分好みにできたしね。

Vue.js + Vuetifyで開発。
Vuetifyのおかげで今時なGUIになりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559594/e31d3add-f105-4680-92f4-dd2372374bd9.png)


# magic-grid
肝となるレイアウトはmagic-grid
ウィンドウを雑にリサイズしてもスイスイ描画されるので気持ちがいい。

# Settings
背景色とカードの横幅を設定できるようにした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559594/29b0484f-d37d-4283-9d90-f32f8ca4ea08.png)


# Chrome Web Store
初めて公開してみた
[https://chromewebstore.google.com/detail/bookmarko/lmbnlopdoppoeaaomkadlpebkpejeiec?hl=ja](https://chromewebstore.google.com/detail/bookmarko/lmbnlopdoppoeaaomkadlpebkpejeiec?hl=ja)
OACのAIアシスタントで使うためのデータセットのインデックスのヒント

# はじめに
OAC(**Oracle Analytics Cloud**) のAIアシスタント機能をより有効にご利用いただくためのヒントを紹介します。

# AIアシスタントからの結果を改善するために

## 列へのインデックスの作成
ファイルベースのデータセットを使用してAIアシスタントに質問し結果を得るためには、事前にインデックスを作成しておく必要があります。
慎重に索引付けし、データを編成することで、Oracle Analytics AIアシスタントの結果を改善できます。

インデックスの設定は、データセットの「検査」を開き「検索」タブで実施します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/e32cca86-4603-4e4a-b8e6-b2b7530a2092.png)

## データのテキスト化
テキスト列に含まれるnull値は「不明」や「利用不可」といったテキストに変更するとよいでしょう。
数値列はビニングすることによって（売上金額を大・中・小の範囲に分割するなど）、結果を最適化することができます。

## 列名の最適化
曖昧さを減らすために、列名を明確にします。
例えば、「住所1」「住所2」「住所3」ではなくデータの中身を推測できる具体的な列名に変更します。
この場合は、「都道府県」「市区町村」「町丁目」にします。
なるべくデータを説明するための列名を付けてください。

## シノニム（別名）の活用
ひとつの列につき、20個までシノニム（別名、同義語）を定義できます。
説明不足であるよりは、多くのシノニムを定義して説明的である方が望ましいです。
データセットには複数の日付フィールド (注文日、出荷日、請求日) が含まれることがあります。これにより、「月別の売上を表示」などの質問があった場合に混乱が生じる可能性があります。
これを回避するには、デフォルトの日付として割り当てる列に「日付」というシノニムを定義します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/47c561ae-0206-43f1-8d15-7a2a8aaec801.png)

## 不要な列にインデックスを作成しない
AIアシスタントに要求する可能性が低い列は、インデックス化の対象から除外します。
LLMに送られる情報を削減することにもつながります。

## 保存してインデックスを作成します
「保存」をクリックし、「即時実行」をクリックして閉じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/0af5eb85-ffa7-4b57-861e-da68767d52b7.png)

# 試してみる
インデックスを作成したデータセットを使用して、新しいワークブックを作成します。


「自動インサイト」アイコンをクリックして「アナリティクス」タブに移動します。

## 売上をプライオリティとセグメントで表示して
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/83194a0f-a0d3-42c7-89b8-622c951f1246.png)

## 町別、カテゴリ別の人数は？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/cea85ca0-2f81-4ead-9b35-f0b59f0cac5c.png)

## 今から11年前の販売金額は？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/1bd445d9-bb5f-4b20-9daf-0a35943239cb.png)


# ドキュメント

:::note
Oracle Analytics AIアシスタントは、質問を処理する際に大規模言語モデル (LLM) を使用します。その結果、事実の正確さではなく、データのパターンに基づいて応答が生成される可能性があります。アシスタントによって生成された結果に基づいて重要な決定を下す前に、必ず結果を確認し、主要なデータ ソースを参照してください。
:::

https://docs.oracle.com/en/cloud/paas/analytics-cloud/acubi/make-data-available-oracle-analytics-ai-assistant-and-home-page-ask.html#GUID-1579A9BC-977D-49D4-985E-643DEB224DA8