OmniAICreator/Qiita-1.07M huggingface dataset:
【AI時代のエンジニアキャリアパス】スペシャリストよりジェネラリストが最強説

エンジニアのキャリアパスといえば、**「スペシャリスト」か「ジェネラリスト」か**という議論はもはや定番かもしれません。特定の分野を極め、市場価値を高めるスペシャリスト。幅広い知識と経験を活かし、変化に強いジェネラリスト。どちらを選ぶべきか、悩ましい問題ですよね。

しかし、ちょっと待ってください。今、私たちの目の前には、これまでの常識を大きく揺るがす「AI」という存在があります。

AIの進化は凄まじく、つい昨日まで「人間の領域」と思われていた仕事が、次々とAIに取って代わられています。この変化のスピードは、もはや人間の予測を遥かに超えるものと言えるでしょう。

そんな時代に特定のスキルに特化したスペシャリストを目指すことは、果たして本当に賢明な選択なのでしょうか？

もしかすると幅広い知識とスキルを持つジェネラリストこそが、この予測不能なAI時代を生き抜く最強のキャリアパスなのではないでしょうか？

本記事ではAI時代におけるエンジニアのキャリアパスについて、スペシャリストとジェネラリストのそれぞれの強みと弱みを徹底的に比較し、あなたのキャリア戦略に新たな視点を提供します。

[>> 生成AIの進歩によって未経験からエンジニアになる難易度が急上昇！？](https://taishi-official.com/2024/04/16/2149/)

<iframe width="560" height="315" src="https://www.youtube.com/embed/pApGL8KIsMQ?si=-rUzE-LO1hPCEZn-" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

## スペシャリストとジェネラリストの定義と特徴
エンジニアのキャリアパスを考える上で、多くの人が「スペシャリスト」と「ジェネラリスト」という二つの方向性に直面します。それぞれがどのような特徴を持ち、どのようなメリット・デメリットがあるのか、詳しく見ていきましょう。



### スペシャリスト：特定分野を極める専門家
**スペシャリストとは特定の技術領域に深く特化したエンジニア**のことです。例えばPythonによるデータサイエンス、クラウドインフラ構築、UIデザイン、セキュリティなど、一つの分野において他の追随を許さない深い知識と経験を持つことが特徴です。

[>> スペシャリストのメリット・デメリットとは？](https://taishi-official.com/2025/03/18/3276/#toc2)



### ジェネラリスト：多様な知識を持つ万能選手
ジェネラリストはフロントエンド、バックエンド、インフラ、データベースなど、**開発の様々な工程や技術領域に関する幅広い知識とスキルを持ったエンジニア**です。特定の領域で極めるというより、多様な技術を組み合わせて課題解決ができることが強みです。

[>> ジェネラリストのメリット・デメリットとは？](https://taishi-official.com/2025/03/18/3276/#toc3)



## スペシャリストのエンジニアが抱えるリスク
エンジニアとしてのキャリアを築く上で、特定分野に特化したスペシャリストの道を選ぶことは、従来は安定した選択肢と考えられてきました。しかしAI技術の急速な発展により、この選択肢にも無視できないリスクが生じています。

- [特定スキルへの依存がもたらす脆弱性](https://taishi-official.com/2025/03/18/3276/#toc5)
- [スキル陳腐化の加速によるキャリアリスク](https://taishi-official.com/2025/03/18/3276/#toc7)



## ジェネラリストなエンジニアであることの強み
エンジニアとしてのキャリア構築において、広範な知識とスキルを持つジェネラリストには独自の強みがあります。特にAI時代においては、多角的な視点と複合的なスキルセットが予想以上の価値を発揮します。

- [リスク分散としての複数スキル習得](https://taishi-official.com/2025/03/18/3276/#toc9)
- [異なる知識領域を結びつける創造性](https://taishi-official.com/2025/03/18/3276/#toc10)
- [ジェネラリストとスティーブ・ジョブズの「Connecting the Dots」](https://taishi-official.com/2025/03/18/3276/#toc11)



## まとめ
本記事ではAI時代におけるエンジニアのキャリアパスについて、スペシャリストとジェネラリストのそれぞれの強みと弱みを比較し、**ジェネラリストが有利であると考える私個人の考え**を述べました。

もちろん、スペシャリストとしてのキャリアを否定するものではありません。特定の分野を極め、その分野の第一人者として活躍することは、非常に素晴らしいことです。しかしAI技術の進化が予測不可能な現代において、**特定のスキルに特化することは大きなリスク**を伴うことも事実です。

昨今エンジニアのキャリアパスにおいて、スペシャリストが美化されすぎているように感じます。まるでスペシャリストこそが、エンジニアとして唯一無二の正解であるかのように。しかし、それはあくまで一つの考え方に過ぎません。

変化の激しい現代においては、多様なスキルを身につけ、変化に柔軟に対応できるジェネラリストも安定したキャリアを築くのにアリな選択肢ではないでしょうか。

### おまけ

https://qiita.com/taishi_will_be/items/70a8ce8938944286b487

https://taishi-official.com/it-freelance/

<strong>＼Follow me／</strong>

- X（旧Twitter）：https://x.com/taishi_it_blog
- Instagram：https://www.instagram.com/taishi_will_be/
- YouTube：https://www.youtube.com/@Engineer_ILLBE
- TikTok：https://www.tiktok.com/@taishi_will_be
- note：https://note.com/taishi_wii_be/

<br>

最後にいいねお願いします:thumbsup:
DynamoDBのRCU（読み込みキャパシティーユニット）とは？



AWSのNoSQLデータベース「DynamoDB」を使うときに必ず出てくるのが **RCU（読み込みキャパシティーユニット）**。  
「なんとなくわかるけど、実際どれくらい必要なの？」「どうやって計算すればいいの？」と疑問に思ったことはありませんか？

---

## ✅ RCUとは？

**RCU（Read Capacity Unit）** は、DynamoDBでデータを**読み込むときの処理能力（スループット）**を表す単位です。

簡単に言うと、「**1秒間にどれだけ読み込めるか**」の目安になります。

---

## 📏 1RCUでできること

### 1RCUがカバーする読み込みの量は次の通り：

| 読み込みタイプ | 1 RCUで処理できる内容 |
|----------------|------------------------|
| 強い整合性（Strongly Consistent Read） | **4KBのデータを1回/秒** 読み込み可能 |
| 結果整合性（Eventually Consistent Read） | **4KBのデータを2回/秒** 読み込み可能 |
| トランザクション読み込み | **4KBのデータを0.5回/秒**（つまり2RCU必要） |

---

## 🔍 強い整合性 vs 結果整合性って？

- **強い整合性**：最新のデータが必ず返ってくる（1RCU = 1回）
- **結果整合性**：多少遅れていてもいい（1RCU = 2回）  
　→ よりRCUを節約できる！

---

## 📊 実際のRCUの計算例

例：1つのアイテムが8KBで、結果整合性の読み込みを毎秒100回したい

1回の読み込みで必要なRCU：
- 8KB ÷ 4KB = **2RCU**（1リクエストにつき）

でも結果整合性なので：
- 2RCU ÷ 2 = **1RCU**

→ 100回/秒 × 1RCU = **100RCU** 必要！

---

## ⚙️ オンデマンドとプロビジョニング

DynamoDBでは2つの料金モードがあります：

### ① オンデマンドモード（自動でスケーリング）
- リクエスト数に応じて自動でRCUが増減
- 小規模〜中規模で変動が大きいアプリにおすすめ

### ② プロビジョニングモード（手動設定）
- RCU/WCUを明示的に設定
- 安定したトラフィックがある場合にコスト削減可能

---

## 💡まとめ

- RCUは「読み込みの処理能力（スループット）」の単位
- 読み込みタイプやデータサイズで必要なRCUが変わる
- コストに関わるので、アクセスパターンに合わせて適切に設定するのが大切！
統計検定1級　2022　統計数理　問1　解説

![img20250321_10060055.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/1ed2fbfc-f151-4064-b165-a9ef0d3e1e92.jpeg)
![img20250321_10062797.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/409f324f-f638-46d1-bb8f-efe1b3c1e8a8.jpeg)
![img20250321_10070531.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576811/23e8ad4a-87e9-45a5-8962-85a7e3892ef3.jpeg)
DynamoDBのプロビジョニングモードとオンデマンドモードの違いとは？

## DynamoDBのプロビジョニングモードとオンデマンドモードの違いとは？

AWS DynamoDBを使う上で避けて通れないのが「キャパシティモード（容量モード）」の選択です。

本記事では、DynamoDBの2つのキャパシティモード「プロビジョニングモード」と「オンデマンドモード」の違いを初心者にも分かりやすく解説します。

---

### 🔧 プロビジョニングモード（Provisioned Mode）とは？

#### 特徴
- 読み込み・書き込みキャパシティユニット（RCU/WCU）を**手動で設定**
- トラフィックが安定している、または予測できる場合に最適
- **オートスケーリング機能**を使って、自動的にスケール調整可能

#### メリット
- **料金予測がしやすい**（固定コスト管理しやすい）
- **高トラフィック**に対して安定したパフォーマンス

#### デメリット
- アクセスのスパイクに**弱い**
- 使用しない時間帯にも**最低料金が発生**

---

### ⚡ オンデマンドモード（On-Demand Mode）とは？

#### 特徴
- 読み書き容量の設定が**不要**
- 必要な分だけ自動的にスケーリングされる
- 運用が非常に**シンプル**

#### メリット
- **使った分だけ課金**（従量課金制）
- **突発的なアクセス**にも自動で対応
- キャパシティ設定不要で、**管理コストが低い**

#### デメリット
- 継続的に大量トラフィックがある場合、**コストが割高**になる可能性

---

### 💰 料金の違い（ざっくり比較）

| モード             | 料金体系                   | 向いているケース              |
|------------------|--------------------------|--------------------------|
| プロビジョニング     | RCU/WCU単位の**固定料金**     | トラフィックが**予測可能**な場合   |
| オンデマンド         | リクエスト数に応じた**従量課金** | トラフィックが**不定期・変動が多い**場合 |

---

### 🧠 どっちを選べばいい？ユースケース別おすすめ

| ユースケース                           | 推奨モード         |
|------------------------------------|------------------|
| 開発・検証環境や新規サービスのリリース直後 | オンデマンド         |
| 安定して高トラフィックがある本番環境         | プロビジョニング + オートスケーリング |
| 利用頻度が少ないサービス                    | オンデマンド         |

---

### まとめ

| モード         | 管理のしやすさ | コスト予測 | スパイク対応 | 向いている用途          |
|--------------|--------------|----------|-----------|--------------------|
| プロビジョニング | △（設定必要）   | ◎        | △         | 予測可能な本番環境      |
| オンデマンド     | ◎（自動対応）   | △        | ◎         | 変動が多い／初期段階の環境 |

---

どちらのモードにもメリット・デメリットがあるため、アプリの性質やアクセスパターンに応じて選択することが重要です。

「どちらを使うべきか迷っている…」という方は、まずオンデマンドモードで運用を開始し、必要に応じてプロビジョニングに切り替えるのが安全な選択肢です。

---

### 🔍 さらに学びたい方へ
- [公式ドキュメント：DynamoDBのキャパシティモード](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html)
【準1級】統計学実践ワークブック　第7章　例5　多次元の分布収束


統計検定準1級の勉強のための解説記事となります。下記にご了承いただける方のみ、お読みください。

:::note warn
##### 注意
* 著作権の都合により問題文は掲載せず解説のみの記述となります。
* 独自の解釈により、不適切な表現がある可能性があります。
:::

以下の動画でも解説していますので、見やすいほうでご覧ください。

<iframe width="560" height="315" src="https://www.youtube.com/embed/lReXrYa6gXQ?si=fgXziiFTgHffHuGA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

# 学習のポイント

:::note


・独立な場合の同時分布収束・・・①
$X_n$ と $Y_n$ が独立であり、$X_n \xrightarrow{d} X$ かつ $Y_n \xrightarrow{d} Y$ であれば、$(X_n, Y_n) \xrightarrow{d} (X, Y)$ が成立します。
ここで、$(X_n, Y_n) \xrightarrow{d} (X, Y)$ は、2次元確率ベクトル $(X_n, Y_n)$ の同時分布が、 $(X, Y)$ の同時分布に収束することを意味します。

・連続写像定理（2変数）・・・②
2次元確率ベクトル $(X_n, Y_n)$ が $(X, Y)$ に分布収束し、かつ関数 $h(x,y)$ が連続な2変数関数であれば、$h(X_n, Y_n)$ は $h(X, Y)$ に分布収束します。

・カイ二乗分布・・・③
$Z_i \sim N(0,1)$, $i = 1,...,n$で、これらが互いに独立であるとき、$Y = Z_1^2 + ... + Z_n^2$ が従う分布を自由度$n$のカイ二乗分布といいます。

・カイ二乗分布の再生性・・・④
 $Y_1 \sim \chi^2(n_1)$, $Y_2 \sim \chi^2(n_2)$ で、$Y_1$ と $Y_2$ が独立ならば、$Y_1 + Y_2 \sim \chi^2(n_1 + n_2)$ となります。



:::


```plantuml
@startuml
title 独立な確率変数の分布収束からカイ二乗分布への収束 (フロー概要)

rectangle "Xₙ, Yₙ\n独立, 各々 N(0, 1) に分布収束" as start #lightblue
rectangle "独立な場合の同時分布収束" as step1 #lightgreen
rectangle "連続写像定理\nh(x, y) = x² + y² 連続関数" as step2 #yellow
rectangle "Xₙ² + Yₙ²はX² + Y²に\n分布収束" as step3 #lightgreen
rectangle "X²、Y²はそれぞれ\nカイ二乗分布に従う" as step4 #yellow
rectangle "カイ二乗分布の再生性\n(X² + Y² ~ χ²(2))" as step5 #yellow
rectangle "結論\nXₙ² + Yₙ²\nχ²(2) に分布収束" as step6 #lightcoral

start -down-> step1
step1 -right-> step2
step2 -down-> step3
step3 -left-> step4
step4 -le-> step5
step5 -down-> step6



skinparam ranksep 40
skinparam nodesep 50
skinparam defaultFontName Arial Unicode MS
@enduml
```

# 解答
$X_n$ と $Y_n$ は独立であり、$X_n$ と $Y_n$ はそれぞれ標準正規分布 $N(0, 1)$ に分布収束します。ここで、分布収束先の確率変数をそれぞれ$X$, $Y$とすると、$X \sim N(0, 1)$ および $Y \sim N(0, 1)$ となります。

ここで、①より、2次元確率ベクトル $(X_n, Y_n)$ は $(X, Y)$ に分布収束します。

さらに、$h(x, y) = x^2 + y^2$ という関数を考えます。この関数は $\mathbb{R}^2$ 上で連続であるため、②より、$h(X_n, Y_n) = X_n^2 + Y_n^2$ は $h(X, Y) = X^2 + Y^2$ に分布収束します。

また、$X_n$ と $Y_n$ が独立であることから、$X$ と $Y$ も独立となり、$X^2$, $Y^2$ は、③より、それぞれ自由度1のカイ二乗分布 $\chi^2(1)$ に従います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618291/4399723c-56f6-4a84-9a7d-19c07df364f5.png)


$X^2$と$Y^2$も独立であるため、④より、$X^2 + Y^2$は、自由度$2$のカイ二乗分布に従います。

以上より、$X_n^2 + Y_n^2$ の分布収束先は自由度$2$のカイ二乗分布です。
競プロ日記#25/03/22

# アルゴ式-[フラグ状態の復元 (1)](https://algo-method.com/tasks/1145k6W5)

- 「整数値をビット列に変換する」という固定概念があったがビット演算子にそのままint型の整数値を渡してもビット演算してくれる
- 今回だと以下の様に「整数NのX番目のフラグが立っているかどうか」を判定できる。
```
if (N & (1 << X)){
    cout << "Yes" << endl;
}else{
    cout << "No" << endl;
}
```
ビット演算の使い方に関しては以下の記事を参考にさせていただいた。
[ビット演算 (bit 演算) の使い方を総特集！ 〜 マスクビットから bit DP まで 〜](https://qiita.com/drken/items/7c6ff2aa4d8fce1c9361)

# アルゴ式-[フラグ状態の復元 (2)](https://algo-method.com/tasks/1706y0fU)

- __builtin_popcount(N)で整数Nをビットで表現した時何個のフラグが立っているかを求められる

# アルゴ式-[まとめてフラグを消す](https://algo-method.com/tasks/17297Xhy)

- 以下のような愚かなロジックを組んでもACするだけでビットを理解するという趣旨から外れていた
```
for (int i = 0;i < M;i++){
    if (M & (1 << i) && A & (1 << i)){
        A &= ~(1 << i);
    }
}
```
- Mの~（NOT）との論理積（&）で求められる
- そうなるのは後からは理解できるが、何でこういう発想になるのか腑に落ちなさすぎる。答えがわかってるからその筋道が見えるのであって筋道から答えを出せる意味が分からない。

# アルゴ式-[まとめてフラグを反転する](https://algo-method.com/tasks/1730gEMH)
- これも「まとめてフラグを消す」と同じ。確かに排他的論理和（XOR）を使えば与えられた命題を満たす解を求めれられることはわかるが、それを自力で導けない。言われれば理解できるが自力でそこに到達できない。
Oracle Database@Google CloudでCloud DNSの課金が発生する理由

## Oracle Database@Google Cloudの利用を止めたのに課金が止まらない？
事の発端は先月のGoogle Cloudの請求書。
既にOracle Database@Google Cloudでの検証を終えていたので、請求はないかと思っていたら、、、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/8c70a5b4-b1c0-4750-9f7a-e675cd742e68.png)
**20円課金されてる！！**
これは一大事だと思い、Google Cloudのサポートに問い合わせてみることにしました。。。

結論から言うと、こんな低課金ユーザー (無償枠+20円課金)に、Google Cloudのサポートの方は非常に丁寧に対応してくれました。ありがとうございます。

## どんな事象だったのか？
課金の詳細を見てみると、どうやら**Cloud DNS**というサービスで課金が発生しているようでした。
心当たりとしては、フルアカウントを有効にしてから、Oracle Database@Google Cloudをマーケットプレイスで有効化して、そのまま放置していたくらいでした。
実際にCloud DNSを確認してみると、「**oracle-adb-default-fzone-...**」と「**oracle-adbapps-default-fzone-...**」というゾーンが自動的に作られていました。
説明欄を見ると、「DO NOT MANUALLY DELETE or EDIT. This resource is managed and used by Oracle Database @ Google Cloud service. Manual deletion or editing may cause service disruption.」と書かれており、削除しないように記載されていました。

## サポートケースで問い合わせた結果
* **Q1. Oracle Database@Google Cloudを利用するにあたり、なぜDNSが自動的に作成されるのか？**
【回答】
Oracle Database@Google Cloud をデプロイする際に、Cloud DNSが自動的に作成される仕様とのことです。
どうやら、該当のCloud DNSのプライベートエンドポイントURLがOracle Database@Google Cloudサービスにて利用されるらしいです。

* **Q2. Cloud DNSを削除・編集してはダメとのことだが発生している課金はどうすればいいのか？**
【回答】
Oracle Database@Google Cloudを利用いない場合、コンソールのCloud DNSページにて対象DNSを削除することが可能とのことです。

## まとめ
Oracle Database@Google Cloudをデプロイする際に、自動的にCloud DNSが作成され、サービス利用のために使われるようですね。
なので、Oracle Database@Google Cloudの利用が終わったら、手動で消してしまって問題ないようなので、課金を止めたい場合は消してしまいましょう！

## 関連記事
:::note info
**Oracle Database@Googleに関して**
* [Oracle Database@Google Cloudについてまとめてみた](https://qiita.com/yunagash/items/478e9a10f80ebcc45804)
* [Oracle Database@Google CloudでADBをプロビジョニングしてみた](https://qiita.com/yunagash/items/e44bde42f1bcebacceba)
* [Oracle Database@Google CloudでADBのDatabase Actionsに接続してみた](https://qiita.com/yunagash/items/c9443e866bbaa15d4ce8)
* [Oracle Database@Google CloudのADBでコンソール上でできる操作をまとめてみた](https://qiita.com/yunagash/items/5eb02f8482c5724582dd)
* [Oracle Database@Google CloudでCloud DNSの課金が発生する理由](https://qiita.com/yunagash/items/899b05803aae4103c042)
:::

:::note info
**Oracle Database@AWSに関して**
* [Oracle Database@AWSについてまとめてみた](https://qiita.com/yunagash/items/5f6565db017e20d20a34)
:::

:::note info
**Oracle Database@Azureに関して**
* [Oracle Database@Azureについてまとめてみた](https://qiita.com/yunagash/items/e603ef227928824921a3)
* [Oracle Database@AzureをPAYGで利用する手順](https://qiita.com/yunagash/items/1073a8a69cf4f0448960)
* [Oracle Database@AzureでADBをプロビジョニングしてみた](https://qiita.com/yunagash/items/4e17c84c8af4335f8465)
* [Oracle Database@AzureでADBのDatabase Actionsに接続してみた](https://qiita.com/yunagash/items/27001de1a602a59d9225)
* [Oracle Database@AzureのADBへData Pumpで移行してみた](https://qiita.com/yunagash/items/037d00df68d8f17fc144)
* [Oracle Database@Azureでのリージョン数のService Limit引き上げ方法](https://qiita.com/yunagash/items/60036ef2f585d8ab75bf)
* [Oracle Database@AzureでExaDB-XSをプロビジョニングしてみた](https://qiita.com/yunagash/items/cd848c4a9b585be561e6)
* [Oracle Database@AzureのExaDB-XSへData Pumpで移行してみた](https://qiita.com/yunagash/items/e8886945aa33e249132d)
:::
ろうとるがPythonを扱う、、（その30：C言語の関数ポインタ配列ライク）

# PythonにてC言語の関数ポインタみたいなことをやってみる
あるプログラムをPythonで書くことがあり、関数を配列化するため、どうしてもC言語の関数ポインタのようなものを使いたくなった。その時の＋αも含めた記録。結論的には、辞書を使うのがベターであった。

## 簡略化
小生の事例は多少ややこしいので、ここでは簡略化したものを例示。コマンドの引数としてキーおよびキーへの１文字のパラメータを与え、キーが'i'の場合、パラメータを数値でインクリメント（+1）、キーが'c'の場合、パラメータの文字をHexでインクリメントするもの（例：'A'をインクリメントして'B'を出力）。ソースコードを見た方が早い。なお、ここでは、関数配列という用語を用いることとした。

### ソースコード
```python:dic_func+alpha1.py
# -*- coding: utf-8 -*-
# Cの関数ポインタ（配列）をPythonで実現するサンプル＋α
import sys

# 文字をインクリメントする関数（例：入力'A'に対する出力が'B'）
def f_char_inc(arg):
    val = ord(arg)+1
    return chr(val)

# 数値をインクリメントする関数（+1）
def f_int_inc(arg):
    val = int(arg)
    return val+1

# 辞書による関数配列
f_dic = {'c': f_char_inc, 'i': f_int_inc}
# リストによる関数配列
f_list = [['c', f_char_inc], ['i', f_int_inc]]

### メインプログラム ###
# ”コマンド キー パラメータ”が実行形式
if len(sys.argv) != 3:
    print('使用法: '+sys.argv[0]+' キー パラメータ')
    print('キー: i:パラメータが数値 c:パラメータが文字')
    print('ex: '+sys.argv[0]+' i 4')
    sys.exit()

# キーおよびパラメータ取得（引数のエラーチェックなし）
key = sys.argv[1]
arg = sys.argv[2]

# 辞書利用
if f_dic.get(key) == None:		# キーのチェック
    print('該当するキーがありません')	# キーが見つからず
    sys.exit()				# 終了
ret = f_dic[key](arg)			# キーによる呼び出し

"""
# リスト利用
found = 0
for f in f_list:			# forなどでループを回す必要あり
    if key == f[0]:
        found = 1
        ret = f[1](arg)			# リスト要素による呼び出し
        break
if found == 0:				# キーが見つからず
    print('該当するキーがありません')
    sys.exit()				# 終了
"""

# 結果表示
print('戻り型: '+str(type(ret))+'\t戻り値: '+str(ret))
```

ソースコード内にコメントが記載されているので、基本的にはそちらを参照してほしいが、あえてさらなるコメントを下記。
- 関数を辞書の値部分に配置（配列化）。
- コメント化されているリストによる関数配列を利用すると、自らのコードでループして該当関数を探す必要がある。辞書による関数配列だと不要（Python内部的には類似のことを実施しているのであろう）。
- 関数配列の戻り値の型を統一する必要がない。異なる型を返すことができる。

## 検証
### キーが整数（'i'）

```shell
python3 dic_func+alpha1.py i 6
戻り型: <class 'int'>	戻り値: 7
```

### キーが文字（'c'）
```shell
% python3 dic_func+alpha1.py c G
戻り型: <class 'str'>	戻り値: H
```

### エラー
```shell
% python3 dic_func+alpha1.py 0  
使用法: dic_func+alpha1.py キー 引数
キー: i:引数が数値 c:引数が文字
ex: dic_func+alpha1.py i 4
%
% python3 dic_func+alpha1.py 0 R
該当するキーがありません
```

EOF
YouTubeからチャンネルIDを取得する方法

YouTube Data API v3 を利用してチャンネルや動画情報を取得する場合、**チャンネルID**が必要となります。このチャンネルIDは「UC」から始まる固定の文字列であり、チャンネルのハンドル（例: "@YouTubeJapan"）とは異なります。

### チャンネルIDの入手方法

YouTubeのチャンネルページのソースコード（HTML）には、以下のような `<link>` タグが含まれており、この中にチャンネルIDが記述されています。

```html
<link rel="canonical" href="https://www.youtube.com/channel/UCrXUsMBcfTVqwAS7DKg9C0Q">
```
ここで、`UCrXUsMBcfTVqwAS7DKg9C0Q` がチャンネルIDとなります。

### Bash を使った取得例

以下のサンプルコードは、`curl` と `sed` を用いて、指定した YouTube チャンネルページのHTMLからチャンネルIDを抽出する方法です。

```bash
#!/bin/bash

# 対象のURL（例: YouTubeチャンネルのURL。ここではハンドルURLを利用）
URL="https://www.youtube.com/@YouTubeJapan"

# curlでHTMLを取得
html=$(curl -s "$URL")

# sedでチャンネルIDを抽出
channel_id=$(echo "$html" | sed -n 's/.*<link rel="canonical" href="https:\/\/www\.youtube\.com\/channel\/\([^"]*\)".*/\1/p')

echo "チャンネルID: $channel_id"
```

- **注意点:**
    - チャンネルページのHTML構造は変更される可能性があるため、スクリプトが将来的に動作しなくなることも考えられます。

このようにして、YouTube Data API v3 を利用するために必要なチャンネルIDを取得することができます。
【Teams電話】通話グループの着信通知

# はじめに

Teams 電話の通話グループは、通話グループに追加されているユーザーが通話グループからの着信を自由にオフにできることが特徴です。しかし、設定が少し分かりにくいのでまとめました。

※ 関連記事

https://qiita.com/atsmin77/items/156c5bdc038f3b688a96

# 通話グループの着信通知

通話グループの着信通知は、着信音とバナー表示の有無を設定することができます。
※ 通知バナーとは、着信があった際に表示される以下のような通知です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/ace16e24-0072-4829-979c-ce61918b3bad.png)

着信通知はユーザーが自分で Teams クライアントから変更できるほか、管理者が Teams 管理センターから変更することもできます。

::: note warn
Teams クライアントと Teams 管理センターで設定項目の名前が異なります。
:::

::: note
Teams のモバイルアプリは「バナーおよび着信音 (着信音)」に設定されている場合にだけ着信します。
:::

| Teams クライアント | Teams 管理センター | 着信音 | 通知バナー | モバイルアプリへの着信 |
|:-:|:-:|:-:|:-:|:-:|
| バナーおよび着信音 | 着信音 | 〇 | 〇 | 〇 |
| バナーのみ | バナー  | × | 〇 | × |
| 通話アプリのバナーのみ | ミュート | × | × | × |

* Teams クライアント
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/fabd7f1f-bcdd-49a7-81f5-4190c4e22af5.png)

* Teams 管理センター
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/00ad69e7-7276-48bc-97d7-3a1cf7138a0e.png)

## 着信通知のオン / オフ

Teams クライアントでは、以下の箇所からも着信通知をオフにすることができます。 この箇所で通知がオフになっていると、上記の設定の内容によらず、着信音と通知バナーがオフになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/6e73fa1b-b89b-47bd-aa0b-fb143b37a18c.png)

::: note
「オフにする」と表示されている状態が着信通知オンです。
:::

| 表示 | 着信通知 |
|:-:|:-:|
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/0b5e8527-a435-4a85-8695-59a73abfb503.png) | オン (他の設定に依存) |
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/a928eb58-6753-4c3f-8d0a-6e997b00af10.png) | オフ (常にミュート)  |

(参考：通話の共有およびグループ通話ピックアップ)
https://learn.microsoft.com/ja-jp/microsoftteams/call-sharing-and-group-call-pickup
【Teams電話】通話グループとは

# はじめに

Teams 電話で着信があった際に複数のユーザーを同時に呼び出す方法の 1 つとして、通話グループがあります。この記事では通話グループの設定方法についてまとめてみました。

※ 関連記事

https://qiita.com/atsmin77/items/b165b51e5b3d1e438b89

# 通話グループとは？

通話グループは、ユーザーに着信があった際の同時呼び出し、または転送先となるユーザーのグループです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/3f025ee2-c579-4a94-b25f-40c273ad0a0d.png)

::: note
"グループ" という名前がついていますが、Microsoft 365 グループなどのグループとは別物です。
:::

(参考：通話の共有およびグループ通話ピックアップ)
https://learn.microsoft.com/ja-jp/microsoftteams/call-sharing-and-group-call-pickup

(参考：Microsoft Teamsでの通話転送、通話グループ、および同時呼び出し)
https://support.microsoft.com/ja-jp/office/a88da9e8-1343-4d3c-9bda-4b9615e4183e

## 通話グループの設定方法

通話グループはユーザーが自分で Teams クライアントから設定するか、管理者が Teams 管理センターから設定することができます。

### 1. Teams クライアントから設定する方法

1. [設定] - [通話グループの追加] をクリック

::: note warn
設定項目が表示されない場合は、ユーザーの Teams 電話が有効になっていません。対処方法は[こちら](https://qiita.com/atsmin77/items/0912efd1ef43a5dfe9b5)です。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/661f2223-0795-461c-8ec2-339addda5c65.png)
2. 通話グループにユーザーを追加

::: note
追加できるのは組織内のユーザーのみです。外線電話番号を追加することはできません。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/ef562456-0848-4e0c-aaa1-82f5da214163.png)
3. 通話グループの同時呼び出しまたは転送を設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/bfcc7d4c-afc7-4952-8993-67797c4c2221.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/605ca84a-2d03-4050-8933-0764c0b03d63.png)

これで、着信があった際に通話グループへ追加されたユーザーが呼び出されるようになります。

::: note
通話グループへ追加できるユーザーは 25 人までです。
ユーザーが 5 人以下であれば、ユーザーを順番に呼び出すよう設定することもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/96171744-ad2a-45b9-874f-6030cc4c0a35.png)
:::

### 2. Teams 管理センターから設定する方法

1. [ユーザーを管理] から通話グループを設定したいユーザーを選択し、[音声] - [通話グループの管理] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/4d335c34-b8a5-4392-9ef1-5ad2c33b46f3.png)
2. [ユーザーを追加] ボタンから通話グループにユーザーを追加して、[保存] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/b002e87b-b9c3-46df-b25f-20e6c19e0a20.png)


# 関連記事

通話グループの着信通知の設定に関しては以下の記事にまとめています。

https://qiita.com/atsmin77/items/9ece627f968f2f9c0cfb
自分をAIでもう一人作る？？Second-Meを試してみる①

# Second Meとは？AIアイデンティティの新時代

- 論文: 

https://arxiv.org/abs/2503.08102

## はじめに(AIが書いた)

AIの急速な進化に伴い、私たちの個人情報やアイデンティティが大規模AIモデルのトレーニングに利用される一方で、個人の独自性が失われるリスクが高まっています。そんな中、Second Meは個人のアイデンティティを保護しつつ、AI時代における新たな自己表現の方法を提供するオープンソースのAIアイデンティティシステムとして登場しました。

https://www.secondme.io/



## Second Meの主な特徴(AIが書いた)

- **階層型メモリーモデル（HMM）**：短期的なインタラクションから長期的な認知メモリーまで、三層のメモリ構造を持ち、ユーザーのパターンを迅速に認識し、適応・進化します。

- **Meアライメント**：強化学習技術を基に、ユーザーのデータを深く個別化された理解に変換。市場の主要なRetrieval-Augmented Generation（RAG）やGraphRag（1.0.1）と比較して、ユーザー理解において37%の向上を示しています。

- **完全なプライバシー**：ローカル環境で動作し、個人データの完全な制御をユーザーに提供。データの共有はユーザーの明示的な許可がある場合のみ行われます。

- **Second Meプロトコル（SMP）**：独立したAIエンティティが相互に学習し進化する分散型AIフレームワークで、各「自己」は完全な独立性を保ちながら、安全に他のエンティティと通信します。

## Second Meの構築方法(AIが書いた)

1. **シードアイデンティティの作成**：ユーザーの本質を知的エンティティにアップロードし、信頼できる環境（例：個人のPC）でデプロイ。ユーザーのアイデンティティ、経験、好み、思考を反映したカスタムAIを作成します。

2. **ロールプレイフレームワーク**：人間が状況に応じて異なる自分を表現するように、Second Meも状況に応じて適応しつつ、ユーザーの本質的なアイデンティティを維持します。

3. **分散型ネットワークの形成**：各AIが個人の価値観を反映し、ピアツーピアネットワークで相互作用することで、中央集権的なシステムに依存しない新たなエコシステムを構築します。

## 試してみる(人間が書いた)

ソースコードで公開されています。

https://github.com/mindverse/Second-Me


```make setup``` するとこんな感じ。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30621/8942ed74-5016-4e34-bc51-bc155992b78e.png)

エラー出まくりなので一旦、挫折。。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30621/ea3305d5-5efe-4e61-9b60-b5995d73a51c.png)


続き

https://qiita.com/GOROman/items/012c8d10da916ae6cad0
「import std;」 をやめたい

# `import std;`

全てをimportしてくれる魔法の呪文。
競プロだと、1つ1つimportするのが面倒でこれで済ませがち。

ただ、コードの可読性の面で微妙な上に、どのパッケージで定義されているかを意識せずに使えるせいで、細かい仕様を調べるときに苦労していて良くない。
また、`std.uni.toUpper` と `std.ascii.toUpper` が衝突するという実害もある。

# あの関数はどこで定義されているのか

## `std.stdio`
競プロには欠かせない標準入出力系のライブラリ。
`readln`, `readf`, `writeln`, `writef`など。

## `std.conv`
型を変換してくれるすごい奴。
`to!`。

## `std.string`
文字列に関するいろんな処理。
標準入力を受け取った後の、`chomp`とか`split`、配列を出力する際の`join`と入出力で大活躍する。
他にも`replace`や`toLower`, `toUpper`が使える。知らんかった。
以上で挙げた関数の多くは`std.array`や`std.uni`からimportしてるものらしい。

## `std.algorithm`
読んで字の如くアルゴリズム系。毎回algorithmのスペルが不安になるけど、コイツがいなければ制限時間内に解答の提出はままならない。
`sort`(`sort!`), `map!`, `filter!`, `each!`, `reduce!`, `minElement`/`maxElement`, `sum`, `uniq`など、探せば探すほどよく使う関数が出てくる。

## `std.range`
`empty`とか`front`/`back`, `popFront`/`popBack` みたいなRangeをRangeたらしめる関数が定義されている。
特定の性質を持つRangeを生成する関数である`repeat`や`iota`もよく使う。

## `std.container`
[この間紹介したRedBlackTree](https://qiita.com/zushi_ryota/items/e7833c97c78dc666a4a8) はここ。
その他はynary heapなど、データを収める構造が定義されているから深掘りすればおもしろいかも。

# 結論

こう。
```dlang
import std.stdio, std.conv, std.string, std.algorithm, std.range;
```

# 参考
https://dlang.org/phobos/index.html
fedoraでcpanのインストール

```shell
sudo dnf install perl-App-cpanminus openssl perl-LWP-Protocol-https perl-IO-Socket-SSL
```

cpanminusだけではだめ

```
sudo cpan
```
でcpanターミナルが起動したら
```
o conf init
```

あとは普通にインストール
例)
```shell
sudo cpanm English ExtUtils::MakeMaker FindBin IPC::Cmd
```
Dockerfile for CUDA12.8.1 + CUDNN9 on Ubuntu22.04


https://qiita.com/NattoMakiMayo/items/2cf56b2a1fc8b7c7cdac

の補足、

CUDAとCUDNNのインストールは下記のDockerfileを使って

```Dockerfile:Dockerfile
FROM nvidia/cuda:12.8.1-cudnn-runtime-ubuntu22.04

RUN cd /root

RUN apt-get -y update

RUN apt-get -y install wget

RUN wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb

RUN dpkg -i cuda-keyring_1.1-1_all.deb

RUN apt-get -y update

RUN apt-get -y install cuda-toolkit-12-8

RUN apt-get -y install cudnn

RUN apt-get -y install cudnn-cuda-12
```

下記のコマンドでbuild->Runしてもインストール可能

```
sudo docker image build --tag my-cuda:12.8.1 .

sudo docker run -v ./share2host:/root/share2host -it --gpus=all --name my-cuda -p 8888:8888 my-cuda:12.8.1
```
Datadogで導入と画面録画

Datadogの無料版でどこまでできるかテスト

# 参考

https://docs.datadoghq.com/ja/real_user_monitoring/browser/

## アカウント作成

クレジットカードの登録などは不要
メールアドレスだけでユーザ作成できる
アカウント作成に5分もかからない


## 導入手順１ - Datadog Agent Manager インストールする

https://docs.datadoghq.com/ja/agent/basic_agent_usage/windows/?tab=%E6%A8%99%E6%BA%96%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

datadog-agent-7-latest.amd64.msi を使ってインストールした
設定はほとんどデフォルトのまま

そのあと、Datadog Agent Managerを起動する
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3751407/0b96fd02-897b-43fa-bade-0c2acb30da8c.png)


Logを送ったのを確認する
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3751407/5a9140e7-fd1d-46af-b331-bbf264300d3c.png)



## 導入手順２ - DatadogのTopページまでいけることを確認

以下の画面が表示されるようになることを確認

![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3751407/7a2fef00-7a02-4a82-8fd4-5aa61926f439.png)


## 導入手順３ - DatadogでRUMのプロジェクトを作成する

RUMのところでjsのプロジェクトを作成する



## 導入手順４ - Vueのプロジェクトに@datadog/browser-rum　をインストールする

https://www.npmjs.com/package/@datadog/browser-rum

https://docs.datadoghq.com/ja/real_user_monitoring/browser/setup/?tab=rum&site=ap1#npm

https://docs.datadoghq.com/ja/real_user_monitoring/session_replay/

npm で ライブラリを入れて、
Vueプロジェクトのmain.tsなどで datadogRum.init({ を呼び出す


## 導入手順 - 画面を適当に動かす

Vueをローカルで起動して、画面を適当に動かす
すると、Datadogの画面で動かした録画が見れる

![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3751407/8bf567ed-580a-4edc-9198-88c5c5b8b134.png)

動画のローカル保存はできなさそう？
AWS 全冠を達成するまで

# プロフィール
・ITコンサルティングファーム就職、新卒3年目
・文系出身、IT経験なし
・1つ目のプロジェクトにて品質管理チームに配属、2年目でプロジェクトを変更し、AWSを活用した基盤チームへ
・AWSの資格試験を本格的に勉強し始め、全冠を達成（2025/03）

# AWSの資格試験を通じて学んだこと
とにかくAWS試験はベストプラクティスを叩き込む！といった印象がありました。
特にSpeciality, Professionalについては普段からAWSに触れていないと分からない問題が多く苦戦しました。

普段のプロジェクトではEKSやTransitGatewayなど、アプリケーションとそれに絡む内容についての設計・開発を実装していますが、AWS試験を通じてAWS GlueやBedrock系のAIサービスも使ってみたい！と思えるようになりました。

# 難易度
個人的には以下の順番で難しかったです。
1. AWS Certified Solusion Architect - Professional
2. AWS Certified DevOps - Professional
3. AWS Certified Advanced Network - Speciality
4. AWS Certified Machine Learning - Speciality 
5. AWS Certified Security - Speciality
6. AWS Certified SysOps - Associate
7. AWS Certified Solusion Architect - Associate
8. AWS Certified Machine Learning - Associate
9. AWS Certified Data Engineer - Associate
10. AWS Certified Developer - Associate
11. AWS Certified AI Practitioner
12. AWS Certified Cloud Practitioner

AWSを始めたばかりの初心者については、ソリューションアーキテクト - アソシエイトが最も難しいと思います。
AWSリソースを学んだ上で、それをどう活用していくかのベストプラクティスが問われるからです。
問題も幅広く、ソリューションアーキテクト - アソシエイトが一番勉強したといっても過言ではないです。

またAI系については機械学習の知識が問われる場面が多く、私は先にG検定を受けていたので比較的容易に感じましたが、それがない状態での受験はかなり難易度が高いものと思われます。

# 勉強方法
基本的にはUdemyやCloudLicenseなどのオンラインツールを利用して学習していました。
特にUdemyは最新の傾向などを押さえていたり、分野ごとに問題を分けて記載されているものもあって非常に勉強になったと思います。
React Router v5→v6,v7での変更点#2　useHistoryとuseNavigate

Reactの動画教材の中でReact Router v5が使われていた関係で現行のReact Router v7(v6)では動かない箇所がいくつか存在しました。

前回の記事ではルーティングの際に全体を囲む記法の違いについて書きました。

https://qiita.com/nagi-0106/items/9117963c89c3fdc73a98

今回の記事は、JavaScript側でページ遷移させる方法であるv5の`<useHistory>`とv6以降の`<useNavigate>`について書いていこうと思います。

## 【v5】useHistory
React Router v5では`<Links to="(パス名)">`を用いないページ遷移の方法として**useHistory**が使われていました。

```javascript:Page1.jsx
import { Link, useHistory } from "react-router-dom";

export const Page1 = () => {
  const history = useHistory();

  const onClickDetailA = () => history.push("page1/detail/");

  return (
    <>
      <div>
        <h1>Page1</h1>
        <button onClick={onClickDetailA}>Push</button>
      </div>
    </>
  );
};
```
遷移したいリンク先を`history.push`で定義してあげることでページ遷移のリンクを設定する仕組みでした。

ですが、React v6以降ではuseHistoryは使えなくなってしまったため、代わりに`useNavigate`を使う形となります。

```javascript:Page1.jsx
import { Link, useNavigate } from "react-router-dom";

export const Page1 = () => {
const navigate = useNavigate();

 return (
      <div>
        <h2>Page1ページです</h2>
        <br />
        <button
          onClick={() => {navigate("/page1/detailA");}}> DetailA
        </button>
      </div>
  );
};
```
useNavigateでは`history.push`の代わりにイベントの処理として`{navigate("(遷移先)");}`といった記法となります。
アロー関数を使う場合は処理式の部分に`navigate`の記述を書くようにします。

個人的には`history.push`よりも直感的で使いやすいと感じました。

## 結論
React Router v6以降では`Link to`を使わないタイプの遷移を行う方法として`navigate`を使うようにしましょう
macOS使いがWindows 11でLaravel開発環境を作成してみる！！

# 初めに

どうも[uehatsu](https://www.x.com/uehatsu)です！！最近iOSの開発ばかりやっていますが、先日自分で作成したLaravelのWebアプリケーションを後任のWindows使いの方に引き継ぐ必要が出てきたので資料ついでにWindwos11でLaravelを実行する環境を作成する方法をまとめたいと思います。

# 開発環境一覧

- Windows 11
- PowerShell 7.5.0
- WSL2(ubuntu 24.04)
- Git (Git for Windows, ubuntu git)
- Docker Desktop
- PHP8.3
- Laravel 11
- PhpStorm

# 開発環境構築手順

## Windows 11

今回は新しいマシンを購入したので、クリーンインストールとなります。minisforumのAtomMan G7 Ptを購入しています。

https://store.minisforum.jp/products/atomman-g7-pt

## PowerShell 7.5.0

PowerShellを起動するたびにアップデートを促されるのでバージョンアップしておきます。以下を参照にMSIでのインストールを実行します。

https://learn.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.5#msi

その後、ターミナルの「設定」＞「スタートアップ」＞「規定のプロファイル」を「Windows PowerShell」から「PowerShell」に変更して「保存」ボタンをクリックします。これでターミナルを開いたときや新しいタブを開いたときに、PowerShell 7.5.0が起動するようになります。

## WSL2(Ubuntu = Ubuntu 24.04.2 LTS)

WSL2を以下のQiita記事を参考にインストールしました。先達に感謝！！

https://qiita.com/SAITO_Keita/items/148f794a5b358e5cb87b

## Git (Git for Windows)

以下からGit for Windowsをインストールします。

https://gitforwindows.org/

後は、Windows側、WSL側それぞれでsshとgitの設定をしました。このあたりはmacOSと変わらないので省略します。

# Docker Desktop

Docker Desktopは以下の公式ページを確認しつつインストールしました。

https://docs.docker.jp/desktop/windows/wsl.html

# PHP 8.3

WSL2にPHP 8.3をインストールします。今回引き継ぐLaravelはVer.11を使っていて、PHPも8.3で開発したので、今回も8.3をインストールしています。基本的にLaravel Sailを利用しますが、初期設定に必要のためインストールします。いつもAnyenvを利用しているため、同様に開発環境を準備しようとしましたがcomposer installが正しく実行されなかったので諦めました。普通にaptでPHP 8.3をインストールします

```bash:wsl
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.3 php8.3-{cli,bz2,curl,mbstring,intl,xml,sqlite3,gd,zip,bcmath} unzip
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo systemctl stop apache2
sudo systemctl disable apache2
```

# Laravel 11

```bash:wsl
echo "alias sail='./vendor/bin/sail'" >> ~/.profile
echo "export DOCKER_BUILDKIT=0" >> ~/.profile
echo "export COMPOSE_DOCKER_CLI_BUILD=0" >> ~/.profile
exec $SHELL -l
```

# PhpStorm

PhpStormをインストールします。私はサブスクリプションを契約しているので、JetBrains Toolboxからインストールしていますが、ほかの方法でも構いません。

https://www.jetbrains.com/ja-jp/lp/toolbox/

ここではPhpStormとしていますが、VScode, CursorなどのほかのIDEを利用する場合も同様です。ネットワークドライブ（今回はW:としました）に `\\wsl$\ubuntu` を指定します。これでWSLのディレクトリがWindows側からもシームレスに閲覧できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65508/a4671674-2ec7-4ad9-964b-614ff1e2b2bd.png)

また、Gitの所有権でエラーが出るため、Windows側でsafe.directoryにパスを設定します。パスの `/xxxx/xxxx/xxxx/` は適切な文字列に変更してください。

```powershell:Windows
git config --global --add safe.directory //wsl$/ubuntu/home/xxxx/xxxx/xxxx/*
```

# まとめ

うーん、macOSで慣れてしまっていると、設定が多い気がします。でも全くWindowsを無視することもできずですね(^^;
完全にLinuxのみで確定申告する現時点で一番簡単な方法

少し前に[Linuxで確定申告 2024年度版](https://qiita.com/nanbuwks/items/3ceb0b3f8e15a8aa3dbf)が話題になっていましたが、 私がここ数年Linuxのみ（Kubuntu + Google Chrome）で行っている、一番簡単な確定申告の方法を紹介します。

User-Agent偽装などすることなく、なんならスマホもマイナンバーカードも使うことなく、完全にLinuxのみで電子送信までする方法です。

...

https://makiuchi-d.github.io/2025/03/22/e-tax-linux.ja.html
AWS超入門

## AWS勉強したいけど何から始める....?
社会人1年目の当初、私は右も左もわからずクラウドの事業部に配属され、闇雲に参考書を買い漁っておりました。しかし、結局何を使ってもあまり身に付いた感覚にはならず、AWSの根本を理解するまでに3年ほどかかってしまったと思っております。
何がダメだったのか。。
それは、明確です。

**「土台がなかったから」**

例えるなら、算数も勉強せずにいきなり数学をやっていた感じですね。
そりゃ身につかない訳だと、今更ながら後悔しております。

私はこの経験を皆様に回避して頂きたく、正しい勉強手順を考えました...!
重複しますが、まずは基礎＝算数から始めていきましょう。

### Step1　コンピュータの仕組みを理解
は？と思うかもしれませんが、まずは「0と1の電気信号でコンピュータは動いている」ところから学習を始めましょう。個人的には基本情報の勉強よりもまずは下記の1冊を読むことから始めていただきたいです。
後々この知識が効いてきます。まさにボディブローです。

![本の写真](https://m.media-amazon.com/images/I/81pK80wyg+L._SY425_.jpg)



### Step2　なぜネットワークはつながるのか
- 当たり前のことを言いますが、クラウドなんていう空に浮かんだ幻想の場所にデータなど保管できません。実態は世の中のどこかにあります。この裏側の仕組みをネットワークを通じて理解していくことが2つ目のステップとして必要です。
- 本書では、あまりクラウドまで踏み込むことはございませんが、なぜ通信ができるのか当たり前になっていたことがイメージとして理解できるようになります。

![本の写真](https://m.media-amazon.com/images/I/81sBKxze5ML._SY425_.jpg)

### Step3　AWS入門
ここで初めて、AWSの書籍です。まずはこちらの書籍を読み込み、他の書籍は手を付けなくて大丈夫です。汎用的な知識を学び、AWSの基礎を付けましょう。
数多くのAWS参考書に手を出してきた私が申し上げているので、安心してください。。。

![本の写真](https://m.media-amazon.com/images/I/81LcQKLWQ8L._SY522_.jpg)

### Step4　AWSはAPIで動いている？
また、仕組みの話？と思うかもしれませんが、ここが一番重要かもしれません。応用は来年に回しましょう。
そもそもAWSがどのように動いているかについては、本記事を読み込むのが一番です。「AWSの裏側はAPI」読み終わった後には、このキーワードの意味が良く理解できるはずです。

https://aws.amazon.com/jp/builders-flash/202209/way-to-operate-api/

### Step5　AWSハンズオン
ここまでくれば、ある程度の基礎は固まっているはずです。となると、次は数学になりますが、まずは実践です。公式を覚えても知識を使って解かなければ身につきません。
ではまず何をやればいいのか？迷わずこちらの書籍に取り組んでください。

- 基礎からのネットワーク＆サーバー構築
![本の写真](https://m.media-amazon.com/images/I/81vRa3y5jXL._SY522_.jpg)

### Step6　パケットの気持ちになろう
最後に、AWSを学習していく上で肝となるのはネットワークだと認識しております。※個人差あります。
その前提を置いたときに、何をしていけばいいのか？となりますが、下記参考リンクに従って取り組んでください。パケットの気持ちになってネットワーク＆AWSを理解することができます。

https://aws.amazon.com/jp/builders-flash/202106/way-to-learn-network/?awsf.filter-name=*all

## まとめ
以上Step１～６を記載しましたが、最初の1,2を理解することに時間を割いてください。3以降は多少躓いてもまずは進めていくことで徐々に点と点が結ばれるはずです。
AWS学習を始めた人の一助になれば幸いです。
SweetPadを導入したら、「No Xcode scheme was found. Select the workspace that has the Xcode project to use SweetPad.」となったので対処した

# 問題
[こちらの記事](https://zenn.dev/aromarious/articles/sweetpad-extension-introduction)を参考にCursor(VSCode)でiosアプリの開発環境を整えていた。しかし、SweetPad拡張機能を入れたところ、エラーが発生。
```
No Xcode scheme was found.
Select the workspace that has the Xcode project to use SweetPad.
```
この状態でBuildしても当然ながらうまくいかない。ログを見ると、以下のエラーが出ていた。
```
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
```

# 原因
macOSにはXcodeや開発ツールを探す場所として認識するディレクトリ=「アクティブデベロッパディレクトリ」という概念がある。アクティブデベロッパディレクトリがCommand Line Tools(CLT)のみに設定されているとうまくいかない。

以下のコマンドでアクティブデベロッパディレクトリに設定パスを確認してみる。

```
xcode-select -p
```

CLTが選択されている場合は
```
/Library/Developer/CommandLineTools
```
となる。

# 解決策
アクティブデベロッパディレクトリを以下のコマンドでXcodeに切り替えれば良い。

```
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
```

パスが
```
/Applications/Xcode.app/Contents/Developer
```
のようになっていればOK。


# 参考

http://www.oversea-pub.com/information/2093.html

https://zenn.dev/toaster/articles/4ae75b4b07f96d#%E9%81%B8%E6%8A%9E(%E6%9C%89%E5%8A%B9%E5%8C%96)%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8Bxcode%E3%81%AE%E3%83%91%E3%82%B9%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B
🌐 Web APIとは？

## はじめに

Web API (Web Application Programming Interface) は、ウェブアプリケーションやサービス同士がデータや機能をやりとりするための インターフェース です。

## 目次

1. [Web APIの基本的な役割](#-web-apiの基本的な役割)
2. [Web APIの仕組み](#-web-apiの仕組み)
3. [Web APIの種類](#-web-apiの種類)
4. [Web APIのデータ形式](#-web-apiのデータ形式)
5. [Web APIの実例](#-web-apiの実例)
6. [Web APIのセキュリティ](#-web-apiのセキュリティ)
7. [まとめ](#-まとめ)
8. [参考文献](#-参考文献)

## 🧷 Web APIの基本的な役割
Web APIは、以下のような目的で使われます

### データの取得・操作
例：天気情報APIで最新の天気データを取得
### 外部サービスとの連携
例：Google Maps APIで地図を表示
### 機能の拡張
例：音声認識やカメラ制御など、ブラウザの機能にアクセス

## 🧷 Web APIの仕組み
Web APIは、基本的に クライアント(利用者側) と サーバー(提供者側) の間で通信が行われます。

### 流れのイメージ
* リクエスト：クライアントがAPIにデータを要求
⇨ 例：GET /weather?city=tokyo

* レスポンス：サーバーがデータを返す
⇨ 例：{ "city": "Tokyo", "temperature": 22, "humidity": 60 }
### 通信方法
* HTTPメソッドを使ってデータの操作を行います
    * GET ⇨ データ取得
    * POST ⇨ データ作成
    * PUT ⇨ データ更新
    * DELETE ⇨ データ削除

## 🧷 Web APIの種類
Web APIには主に以下の2種類があります

### 1. オープンAPI (パブリックAPI)
誰でも利用可能なAPI(以下、例)
* OpenWeatherMap API ⇨ 天気情報を取得
* GitHub API ⇨ リポジトリ情報を取得
* 外部サービスと連携する際に活用
### 2. プライベートAPI
特定のアプリケーションや社内で使用されるAPI(以下、例)
* 自社アプリ内でのユーザー管理用API
* 社内ツール間でのデータ共有API

💡 外部に公開されないため、セキュリティが強化されている

## 🧷 Web APIのデータ形式
Web APIは通常、以下のデータ形式でやり取りします：

* JSON (JavaScript Object Notation) → 軽量で扱いやすい
```js
{
  "name": "Alice",
  "age": 25
}
```

* XML (Extensible Markup Language) → SOAP APIでよく使用
```html
<user>
  <name>Alice</name>
  <age>25</age>
</user>
```

## 🧷 Web APIの実例
### 1. Google Maps API

地図を表示し、ルート検索や地点情報を取得できる
```js
const map = new google.maps.Map(document.getElementById("map"), {
  center: { lat: 35.6895, lng: 139.6917 },
  zoom: 10
});
```

### 2. OpenWeatherMap API

天気情報を取得するAPI
```js
fetch("https://api.openweathermap.org/data/2.5/weather?q=Tokyo&appid=YOUR_API_KEY")
  .then(response => response.json())
  .then(data => console.log(data));
```

 ### 3. Web Storage API
ローカルストレージにデータを保存できるブラウザのネイティブAPI
```js
localStorage.setItem("username", "Alice");
console.log(localStorage.getItem("username"));  // Alice
```

## 🧷 Web APIのセキュリティ
APIを安全に使うためには、以下のようなセキュリティ対策が必要です

### 認証と認可
APIキーやOAuthトークンでアクセス制限
### レート制限 (Rate Limit)
短時間で過剰なリクエストを制限
### CORS (Cross-Origin Resource Sharing)
クロスオリジンでの不正アクセスを防止

## 🎉 まとめ
### 📌 Web APIとは？
Webサービス同士でデータや機能をやりとりするためのインターフェース
### 📌 主な特徴
* HTTPメソッドとJSONなどのデータ形式で通信
* 外部サービス連携やデータ操作に広く使われる
### 📌 主な種類
* オープンAPI ⇨ 公開されているAPI (例：天気情報)
* プライベートAPI ⇨ 社内ツール向けAPI
### 📌 実用例
* Google Maps API ⇨ 地図表示
* OpenWeatherMap API ⇨ 天気情報取得
* Web Storage API ⇨ ブラウザにデータ保存

## 💫 参考文献
* [Web API](https://developer.mozilla.org/ja/docs/Web/API)
SAOのようなNPCだけの世界を作るには？

# SAOのようなNPCだけの世界を作るには？

## はじめに
SAO（ソードアート・オンライン）のように、AIによって制御されるNPCだけの仮想世界を作ることは可能なのか？
本記事では、その開発プロセスを記録しながら、必要な技術や今後の展望について紹介します。

## 目指すもの
本プロジェクトでは、
- NPCが自律的に行動し、環境に適応する
- AIによる会話システムを導入する
- 仮想空間での経済や行動パターンをシミュレートする

ことを目標とします。

## 必要なもの
### 1. 開発環境
```plaintext
- Unity / Unreal Engine：3D仮想空間の構築
- Python / C#：AIの制御
- GPT（ChatGPT API）：NPCの対話エンジン
- ML Agents（Unity ML-Agentsなど）：強化学習によるNPCの行動最適化
```

### 2. AIによるNPCの行動制御
```plaintext
- ルールベースAI（最初は単純な行動パターン）
- 強化学習（環境に適応するNPCの実装）
- 自然言語処理（NLP）（NPCとの会話システム）
```

### 3. 仮想世界のシミュレーション
```plaintext
- 物理エンジン（リアルな環境構築）
- 経済・社会システム（NPCが生活できる仕組み）
- 感情システム（NPCに個性を持たせる）
```

## 開発ステップ
### 1. 簡単なNPCの作成
```python
import random

class NPC:
    def __init__(self, name):
        self.name = name
        self.mood = "neutral"

    def act(self):
        actions = ["walk", "talk", "rest"]
        return random.choice(actions)

npc = NPC("TestNPC")
print(f"{npc.name} is {npc.act()}.")
```

### 2. AIによるNPCの自律化
```python
import openai

def chat_with_npc(prompt):
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "system", "content": "You are an NPC in a virtual world."},
                  {"role": "user", "content": prompt}]
    )
    return response["choices"][0]["message"]["content"]

print(chat_with_npc("こんにちは、調子はどう？"))
```

### 3. 仮想世界の拡張
```python
class VirtualWorld:
    def __init__(self):
        self.npcs = [NPC("Alice"), NPC("Bob")]

    def simulate(self):
        for npc in self.npcs:
            print(f"{npc.name} is {npc.act()}.")

world = VirtualWorld()
world.simulate()
```

## 今後の展望
- AIの自律性向上（汎用人工知能（AGI）の要素導入）
- VRとの連携で、よりリアルな仮想世界の実現
- オープンワールドゲームやメタバースへの応用

## まとめ
本記事では、SAOのようなNPCだけの仮想世界を作るための技術や開発ステップを紹介しました。
今後も開発過程をQiitaで記録していくので、ぜひフォローしてください！
ポケモン図鑑アプリをリリースしてみた

# はじめに
Reactの学習を兼ねて、ポケモン図鑑アプリを作成しました。今回は、デプロイまで行っています！手順を説明するものではなく、あくまで、実施したことの備忘録がわりです。

# 全体概要
はじめに、ポケモン図鑑アプリのUIは以下のようになっています。

|![sample1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693671/8edd1979-177c-4c41-b90e-9f455492edda.png)|
|:-:|

構成はシンプルで、以下の3つの要素から構成されています。
- ポケモン図鑑
- 検索
- ページ


以下が今回のシステムの概要です。
|![sample2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693671/aad7a8dc-cd9b-4d3d-a253-a20c644e24c1.png)|
|:-:|


# フォルダ構成
src以下のフォルダ構成は以下のようになっています。
```
├── App.css
├── App.jsx
├── assets
│   └── react.svg
├── components
│   ├── Page.jsx
│   ├── Poke.jsx
│   └── Search.jsx
├── index.css
├── lib
│   └── poke.jsx
└── main.jsx
```

componentsフォルダに実際のUIなどが記載されています。
また、libフォルダにはpoke_apiからデータを取得する処理が記載されています。


# renderにデプロイ
rederというサービスにデプロイするには以下の手順を踏む必要があります。

- アカウントの作成
- githubと連携
- build
- デプロイ

無料モードもあるので、ぜひ試してみてください！

[ポケモン図鑑アプリURL](https://poke-app-dqdj.onrender.com/)

以下にソースコードのgithubリンクを置いておきます。
https://github.com/loverboykosu/poke_app
【Mac】アプリで使用できるホットキーの一覧を表示する方法

KeyCluを使用するとアクティブなアプリケーションで使用できるホットキーの一覧を表示できます。

https://sergii.tatarenkov.name/keyclu/support/

## インストール

Homebrewを使用して以下のコマンドでインストールできます。

```terminal
brew install --cask keyclu
```

## 使い方

デフォルトでは`⌘`を2度押下すると押下している間以下のようにホットキーの一覧を表示できます。

![screen-shot-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342443/825c60df-9236-4081-a3ab-f708a34c8e0d.png)

また、設定を変更すると`⌘`を3度押下すると以下のようにホットキーの一覧を表示させたままにできます。

![screen-shot-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342443/cf38279d-af2b-4513-af38-98f7c9698d47.png)
[Python]  """ を使った擬似コメントによる構文エラーの原因と対策


## In a nutshell

Pythonでは `"""` はコメントではなく文字列リテラルとして扱われるため，バックスラッシュ`\`などが含まれると構文エラーになることがある．一番簡単で安全な回避策は，`r"""` を使うこと．確実にコメントとして無視させたいなら，`#` を使うべき．

## はじめに
Python で，コメントアウトが原因でエラーが発生した．普段は C++ を利用しており，コメントアウト関係でエラーが発生する事を想定していなかった為に驚いた．かなり基本的な事のようだったが，良い機会なので，調べた事を以下に纏めた．

## 発生したエラー
```Python
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 70-71: truncated \UXXXXXXXX escape
```

## 原因と対処方法

### 原因
これは，Python が `"""`（三重クォート）内の文字列を Unicode エスケープシーケンスとして解釈しようとした時に発生するエラーである．具体的には，`"""` の中に，`\` (バックスラッシュ) が含まれていた事が原因．

```Python
"""
単なる文字を含める．
"""
# これは，当然エラーとはならない．
```

```Python
"""
今回のケースでは，パス情報を，複数行のコメントアウトに含めていた．

C:user\aaa\bbb
"""
# エラー発生
```

### エラーが生じる原理

`"""` 内に記述された内容は文字列リテラルとして解釈されるため，Python では `\` は特別なエスケープシーケンスとして扱われる．したがって，`\`は Unicodeエスケープシーケンスとして解釈されようとする為に正しいフォーマットでないとエラーとなる．特に Windowsのパスなどは注意が必要．`"""` の文字列がどこにも代入されなければ実行時に無視される為に擬似コメントとして用いる事ができるが，それは仕様に依存した偶然であり安全ではない．


### 対処方法

#### `r"""` を使う

`r"""` とするとエスケープシーケンスを無効化できる．

```Python
r"""
(base) C:\Users\user>Python --version
Python 3.13.2
"""

# r"""を用いる事でエラーは発生しない
```


####  `\` を `\\` に置き換える
`\` を `\\` にすると，Python のエスケープシーケンスの誤解釈を回避する事ができる．

```Python
"""
(base) C:\\Users\\user>Python --version
Python 3.13.2
"""

# \\を用いる事でエラーは発生しない
```


#### 複数行のコメントアウトでも `#` を利用する

Python の `"""` は厳密にはコメントアウトではなく，文字列リテラルである．
正式なコメントアウトとして `#` を使う事も検討すべき．
数行程度であれば，手間では無い．


```Python
# (base) C:\Users\user>Python --version
# Python 3.13.2

# #を用いているためエラーは発生しない
```


## 補足：文字列リテラルとは
`"""` は複数行に適用できる利点があるが，文法的にはコードの一部である(文字列リテラル)．したがって，評価対象となる．対して `#` はコメントであり，以降の行末までが完全に無視される．文字列内に特殊文字があると上記に記述した通りエラーが生じる．対して `#` は文法的に無害であり，何が書いてあっても構文エラーとはならない．したがって `"""` は厳密にはコメントではない．**確実に**無視させたい場合は `#` を用いるのが安全．


## 補足：docstring との違い
`"""` は関数やクラスの説明に使われる「ドキュメンテーション文字列（docstring）」としても利用される．これは実行時に `__doc__` 属性として参照可能となる．一方，本文で説明したような `"""` による「擬似的なコメントアウト」は，構文上は単なる未使用の文字列リテラルであり，安全性が保証されないため注意が必要である．



## Summary
 - そのままの形式で記録する -> `r"""` を使う
 - Pythonの解釈に合わせる -> `\` を `\\` に置き換える
 - 数行程度の単なるメモでコードと無関係 -> `#` を使う


## 参考文献
- [Python公式ドキュメント 2.4.1. 文字列およびバイト列リテラル](https://docs.Python.org/ja/3/reference/lexical_analysis.html#string-and-bytes-literals)
How AWS Data Pipeline helps manage automotive big data?

In today’s automotive industry, data is driving innovation. From connected vehicles and autonomous driving systems to predictive maintenance and fleet management, the volume of data generated is staggering. Managing and making sense of this automotive big data is where [AWS Data Pipeline](https://excelfore.com/blog/aws-data-pipeline) steps in.


Understanding AWS Data Pipeline

AWS Data Pipeline is a web service designed to help users process and move data between different AWS services and on-premises data sources. It automates the movement and transformation of data, making it easier to process large datasets efficiently and reliably.

Tackling Automotive Big Data Challenges

The automotive industry faces unique challenges with big data:
Data Variety: Information comes from vehicle sensors, GPS, telematics, maintenance logs, and driver behavior.
Data Volume: Modern vehicles generate terabytes of data daily.
Data Velocity: Data needs to be processed in real time or near real-time for applications like predictive maintenance and traffic optimization.

AWS Data Pipeline addresses these challenges by offering:
Automated Workflows: Schedule data-driven workflows to handle data ingestion, processing, and analysis.
Scalability: Process massive datasets efficiently without requiring manual intervention.
Integration with Other Services: Seamlessly connects with services like Amazon S3 for storage, Amazon Redshift for data warehousing, and Amazon SageMaker for machine learning insights.

Real-World Applications
Predictive Maintenance: Vehicle sensor data can be ingested into the pipeline, processed, and analyzed to predict potential failures before they occur.
Fleet Management: Real-time location data and vehicle performance metrics can be funneled through AWS Data Pipeline to optimize routes and reduce downtime.
Autonomous Driving: Massive datasets from LiDAR, cameras, and radar sensors can be processed to train machine learning models, enhancing self-driving algorithms.

Benefits
Cost Efficiency: Pay-as-you-go model reduces upfront infrastructure costs.
Reliability: Built-in error handling and retries ensure data processing pipelines run smoothly.
Security: Offers end-to-end encryption and integrates with AWS Identity and Access Management (IAM) for secure access control.
Conclusion

As the automotive industry embraces data-driven solutions, AWS Data Pipeline emerges as a crucial tool to manage the complexity and scale of automotive big data. It streamlines data handling, enabling manufacturers and service providers to focus on innovation and improving vehicle performance, safety, and efficiency.

By leveraging AWS Data Pipeline, the road ahead for automotive data management looks smoother and smarter.
自分が考える理想のリーダー像について言語化しました

# はじめに
はじめまして，bearlです．
今回自分なりに理想のリーダーについて言語化してみました．
現在大学4年生になる代で，実務でのリーダーやマネージャー体験のない私の意見なので，不足事項や誤ったことがあると思います．
コメントでご教授いただけると幸いです．

# 優秀なリーダー像とは？
私が思う優秀なリーダー・マネージャーは以下の2つの点があげられると思います．

- メンバーが働きやすい環境を作り出しその環境を必要に応じて柔軟に変化させる能力
- ついていきたくなるような尊敬される人格，カリスマ性

理想的なリーダーは

**プレイヤーとしての役割を担うのではなく、むしろチームが最大限の能力を発揮できるような環境整備に注力すべき**

であるという考え方が根底にあります。

今回は考察しやすく，行動に移しやすい1のメンバーが働きやすい環境を作り出しその環境を必要に応じて柔軟に変化させる能力について考えたいと思います．

 1．メンバー理解とその人に対しての最適なタスクの割り振り
 ------
優秀なリーダーは、メンバー1人ひとりの特性を理解し、それぞれに適した仕事を割り当てることが重要です。人は自分にしかできない仕事や、自分の能力をちょうど引き出せるような難易度の課題に取り組むとき、最もモチベーションが高まります。

::: note
超難問のクイズを解けたとき，ギリギリ解けそうで解けなかった問題が解けたとき，人が悩んでいる問題について正解を導けたとき嬉しかったことはありませんか？
:::

2．タスクの細分化
---
同時に、大きな目標をただ提示するだけでなく、達成可能な小さなタスクに細分化することで、メンバーの達成感を積み重ね、継続的なモチベーションを維持することができます。
また、リーダーはチームの現状を常に把握しておく必要があります。細分化されたタスク管理により全体の進捗を明確に理解し、適切なタイミングで次のステップを指示することができます。これにより、メンバーは過度な負担を感じることなく、一歩ずつ目標に向かって進むことができるのです。

::: note
習慣が強いと言われる所以がまさにこれ，行動を始める前に考える必要があるとやる気が失せる．
大きいタスクで管理しているとタスクの達成度が理解しにくく，バックアップができません
:::

3．メンバーを信頼しないこと
---
さらに、優秀なリーダーはメンバーが常に期待通りに行動するとは限らないことを理解しています。そのため、常にバックアップ体制を整え、報告・連絡・相談を徹底させることで不測の事態に備えます。ただし、この予備計画をメンバーに明かすことなく、彼らの自己効力感を損なわないよう配慮することも重要です。

::: note
細分化する理由がこれにもある．認識の齟齬は必ず起きる！これを噛み砕いて全員が同じ方向を向いて頑張れるようにすることこそリーダーの腕の発揮しどころ！無駄な努力を避けよう！！
**プロジェクトの成功はリーダーとメンバーのおかげ，プロジェクトの失敗はリーダーただ1人のせい！**

本当にそうかと言われると違いますが，リーダーはそれくらいの心づもりで進めていくのがいいかと．
:::


# 結論
優秀なリーダーシップの本質は、以下の3つにあると思います

- 働きやすい環境づくり
    - メンバーの士気の維持
    - タスクに取り組むまでのストッパーを取り除く
        - わからないから作業が遅れたということは防ぐ
        - [15分ルール](https://tkybpp.hatenablog.com/entry/2016/08/16/173055)
- 現状の正確な把握
    - 現状ゴールから逆算しどうなっているのか？
        - 作業ペース
        - ベクトル
- メンバーへの適切なバックアップ体制の構築
    - レスポンスの速さ
    - 代替案の提示

# 参考にさせていただいた記事
https://qiita.com/seki_uk/items/4001423b3cd3db0dada7

https://qiita.com/aki_number16/items/def6a41502201c8769a8
Oracle Cloudにログインできなくなるのを防ぐために

あくまでも「転ばぬ先の杖」であって、ログインできなくなってしまってからを防ぐために。。

なお、これらの作業はセキュリティレベルを下げるものであるため、自宅の実験環境ユーザーのためのものですのでご注意を。

# アイデンティティ・ドメインを理解する

![domlist.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666068/089a6126-2271-42fe-a3a9-6d873074e31e.gif)

これですね。標準だと「Default」と「OracleIdentityCloudService」の二つが作成されています。どちらも独立した設定なので、以下で説明するコンフィグは、両ドメインに対して個別に実行しておきましょう。

なお、どちらかのドメインにログイン成功すれば、もう片方のドメイン設定に入り、そのユーザー認証を初期化して回復することが可能です。これに救われることも多いはず。。

# いろいろな方法の二段階認証を可能にする
## 二段階のレパートリーを増やす

秘密の質問や、SMS、メールでのワンタイムトークンが使えたほうが安心。

![mfaconfig.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666068/46e647aa-b5f7-4677-b920-250c4278cddd.gif)

右上の「ユーザーアイコン」をクリックし、「アイデンティティ・ドメイン」をクリック。それから右下の「MFAの構成」をクリックします。


![varies.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666068/2e89c83c-071e-4a0f-a9ee-1490b203ea92.gif)

使いたいレパートリー候補にどんどんチェックを入れて保存します。

## 各ユーザーに、レパートリーの使用を許可
![userconf.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666068/bdfc355d-b86b-4d8d-88f4-4dde0af334dd.gif)

右上の「ユーザーアイコン」をクリックし、「自分のメールアドレス」をクリック。それから上中央のの「セキュリティ」をクリックします。

![ways.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666068/cec3c33b-2a81-484f-893f-f020d580fedb.gif)

どの二段階認証が使えるかの一覧になります。デフォルトを「電子メール」にしておいたほうが楽だろうと。


# おしまい