OmniAICreator/Qiita-1.07M huggingface dataset:
迷ったらこれを読め！VPSとクラウドサービスの違いを簡単比較

## 導入

最近では、AWSやGCP、さくらインターネットなど、さまざまなインフラサービスが登場しています。

ですが、『結局どれを選べばいいの？』と悩むことはありませんか？

今回は、主要なサービスを種類別にわかりやすく分類し、その違いをサクッと整理してみました！

## インフラリソースを提供するサービスの種類

### VPS (Virtual Private Server)

- 1台 の 物理サーバ上に複数の仮想サーバを立てる
- 1ユーザ 1仮想サーバで提供 (契約も1台単位)
- マルチテナント型のサービス (1物理に複数仮想サーバであるため)
    - OSカスタマイズ等は可能。物理サーバの共有リソースを保護するため、一部の高度な設定には制限がある場合があります。
- 仮想サーバのリソース制約の範囲内で動かすので 他同居ユーザの影響を受けにくい
- リソースと貸出期間の契約で料金が発生

### Cloud

- インフラ資源(Server,Computer,Network..etc)を インターネットを介して提供 利用するサービス

**PublicCloud**

- クラウド基盤を不特定ユーザーと共有している
- 主に従量課金制でスケールアップ/スケールダウンによる柔軟なスペック変更も可能
    - 例えば、AWSやGCPでは従量課金制のため、アクセスが増加した際にリソースを追加して対応でき、コストも使った分だけ支払う仕組み
- OS等のカスタマイズは提供されている範囲のみで可能

**PrivateCloud**

- 企業が組織内でリソースを共有するためクラウド基盤を組織内のみで共有している
- 長期間契約のケースが多く 柔軟にリソース追加・削除が難しい
- 基盤も自社で持っているため 回線やOSのカスタマイズが柔軟
    - 回線やOSのカスタマイズが柔軟で、専用環境ならではのセキュリティ強化や独自の運用ポリシーを実現できる

## サクッと比較

|  | リソースの奪取 | OS カスタマイズ性 | リソース追加柔軟性 | スケールアップ | コスト柔軟性 |
| --- | --- | --- | --- | --- | --- |
| VPS | <font color="pink">◎</font> | <font color="green">△</font> | <font color="green">△</font> | <font color="green">△</font> | <font color="blue">⚪︎</font> |
| PublicCloud | <font color="pink">◎</font> | <font color="blue">⚪︎</font> | <font color="pink">◎</font> | <font color="pink">◎</font> | <font color="pink">◎</font> |
| PrivateCloud | <font color="pink">◎</font> | <font color="pink">◎</font> | <font color="green">△</font> | <font color="green">△</font> | × |

## サービスを分類する

- GMOクラウド: [公式サイト](https://www.gmocloud.com/)
- ConoHa: [公式サイト](https://www.conoha.jp/)
- さくらインターネット: [公式サイト](https://www.sakura.ad.jp/)
- AWS: [公式サイト](https://aws.amazon.com/)
- GCP: [公式サイト](https://cloud.google.com/)
- Azure: [公式サイト](https://azure.microsoft.com/)

### VPS

GMOCLOUD( GMO クラウドVPS ) , ConoHa(レンタルサーバもある) , さくらインターネット(レンタルサーバもある) 

### クラウドサービス

GMOCLOUD( ALTUS ) ,  さくらインターネット(さくらのクラウド) , AWS , GCP , Azure
SRE Kaigi 2025 参加レポート


# 前書き

こんにちは、インフラエンジニアの小野島です！

1月26日開催の SRE Kaigi 2025 に参加したのでレポートを公開します

なおセッションの多くはスピーカーの方々がスライドを公開しておりますので、所感を箇条書きで書くスタイルとしております

![IMG_0037.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3938927/dd52e1f4-ad1d-0a01-a90f-78741b70730d.jpeg)

風が強くしかめっ面になってしまいました

# 目的

以下の目的を持って参加してきました

- SRE のニュアンス、語感や頻出する用語を世の中と同期する

# 意図していた参加後の変化

- 各用語をどのくらい重視しているかが分かった
- よく使われる単語がわかった

## よく使われていた単語

基準は独断です

- シフトレフト
  - セキュリティによらず、早めにやるということ
- テレメトリー
- 信頼性のピラミッド
- オブザーバビリティ
  - ピラミッドの最下層ということもあり重要視されている
- Embedded/Enabling SRE
- 文化
- ミッション
- ISUCON
- チームビルディング
- エラーバジェット

# 参加後の意図しない変化

- スタンダードにされているノウハウを知った
- 技術とは別に皆が悩んでいるポイントを知った
  - SRE の定義
  - SRE の価値を高める
- 用語がわかり、今の立ち位置が分かった
  - Embedded/Enabling SRE っぽいフェーズにいる
  - Platform Engineering は目指していない
  - 自分は Platform Engineering が結構好き

# 参加前と後で変わらなかった (強まった) こと

- SRE は実践する手法という捉え方

# 雑感

- どの組織も SRE の布教/運用に悩んでいた
- SRE で重要な観点を新たに知った
- 全体的にチーム運用やオブザーバビリティ関連の意識が強かった
- 直近のアクションがイメージしやすくなった
- モチベーションが上がった
- O’Reilly の『Site Reliability Engineering』を念頭に会話している参加者が多かった

# 謝辞

懇親会にて会話のお時間をくださった皆様大変ありがとうございました

---

以下、各セッションで印象に残ったワードを列挙します

---

# 各セッションで印象に残ったワード

### Re:Define 可用性を支えるモニタリング、パフォーマンス最適化、そしてセキュリティ

- セマンティックな監視が重要
  - クラウドの弾力性を考えるとセマンティックのほうが優先
- 時代はトレースでテレメトリ
- ノイジーアラートをなくそう
- unknown/unknown の壁
- 木こりのジレンマ 
- SRE の取り組みを組織的なものにしよう
  - SRE だけでなく開発者や管理者も責任を持つ
- SRE がコードを直せればいいやろ
  - 計算量で考える
- 暫定対応にしない

### 一人から始めたSREチーム3年間の歩み -求められるスキルの変化とチームのあり方-

- どのフェーズに自分が適しているか考えてみる
- すべてのスキルセットがある人はそうそう居ない
- どこで力を発揮できるか考えてみる

### サービスローンチを成功させろ！〜SREが教える30日間の攻略ガイド〜
 
- Launch Checklist を活用
- Launch CHecklist ≒ Production Readiness Checklist
- アンチパターン
 - 項目数が増えすぎる
 - 項目が見直されない
 - 確認するタイミングが遅くなる シフトレフト
 - チェックすること自体が負担になる 
- 定期的に繰り返す

### 信頼性を支えるテレメトリーパイプラインの構築

- インフラおじさんが SRE になるお話
- SRE と言いつつインフラおじさんという認識になっていた
- SRE の本来の仕事
  - 共通リソース (ログ、ルーティング、SCP等)
  - オブザーバビリティ

### ガバメントクラウドに向けた開発と変化するSRE組織のあり方

- デジタル貿易赤字
- チームメンバーは5~10名程度としてコミュニケーションコストを低く抑える
- 役割、ロールの明示
- Mission, Vision, Value を策定
- 一度起こした障害を起こさないようにすることが評価される文化を作りたい
- SRE がチームビルディングを支援
- 私たちは SRE なのか
- 信頼性をエンジニアリングする
  - 繰り返しの自動化
  - 測定
  - 信頼性への合意

### SREとしてスタッフエンジニアを目指す

- SREチームの特徴から、SRE をリードしていれば自動的にスタッフエンジニアになるのでは
- Staff SRE になる具体的な方法はない
  - 問題を解決する
  - 少しずつ成長する
  - 少しずつ大きな問題に挑戦する
  - 少しずつ信頼を得る
- 少しずつ増加
  - 影響力
  - 期待値
  - 技術力
- 分からないことをなくしていこう
- 自分の得意な分野を作ろう

---

ご清覧ありがとうございました！

---

# 免責事項

- この記事の内容は個人の見解であり、所属する組織の意見を代表するものではありません。
AWS認定試験あるある9選

今回は独断と偏見で、AWS認定を受けたことがある人であれば共感してくれるであろう、あるあるネタをいくつか用意してみました。100%その通りであるということはないので、あくまでネタとしてお楽しみください。

# 試験会場編
## 1. 直前に試験の予約が取れない
「よし、勉強終わり！試験予約するぞ！えっ、最短で2週間後…？」
試験会場にもよりますが、人気のところはあまり空きがなかったり。試験日を決めてから勉強を始めた方が良いかもしれません。

## 2. 試験会場で使用可能なホワイトボード、あんまり使わない
「あーこれはAが正解かなー。よし、全問解き終わり。今回もホワイトボード使わなかったな...」
人によりますが、私はほとんど使ったことがないです。ちょっと複雑なネットワーク構成の問題時に使ったり、MLS (Machine Learning Speciality) の試験の時は開始後すぐに混同行列の図を書きました。

↓こんな感じのもの
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/00f0cb0e-af89-9574-40d9-3ea81cb75545.png)

# 試験問題編
## 3. 「15分」と問題に書いてあったら選択肢のLambdaを探しがち
「処理時間は15分を超える！Lambdaの選択肢は除外！」
AWSの中でもトップクラスの認知度を誇る制限。Lambda以外も何らかの制限があるサービスは多いので抑えておきましょう。

## 4. 最短リリースが必要/運用コスト優先時、マネージドサービス正解になりがち
「そりゃコーディングしてる暇はないよね…」
実務でも、マネージドサービスで要件を満たせないか？と考えるようにしています。

## 5. SAPの問題長すぎて後半頭が回らない
「この長さの問題があと何問あるんだ…」
SAP/ANSあたりは自分との戦い。試験中に「この試験もう受けたくない…」と思いながら解いてます。

## 6. MLSの試験、機械学習知らないと壊滅
「これは何の試験？」「AWSだよ」
> ユニグラムとバイグラムの両方を使用した単語頻度 - 逆文書頻度 (tf–idf) 行列が、次の 2 つの文で構成されるテキストコーパスで構築されています。
> 1. Please call the number below.
> 2. Please do not call us.
> この tf–idf 行列の次元はどれですか。
> A) (2, 16)
> B) (2, 8)
> C) (2, 10)
> D) (8, 10)
> _[Machine Learning – Specialty (MLS-C01) 試験問題サンプル](https://d1.awsstatic.com/ja_JP/training-and-certification/docs-ml/AWS-Certified-Machine-Learning-Specialty_Sample-Questions.pdf) より_

私はまずG検定を取りました。

## 7. 日本語の記述、意味不明な時がある
「BとCの選択肢、日本語の意味同じじゃないか...？」
迷わず英語に切り替えて解きましょう。もしくは英語で試験を申し込む。あと余裕があれば試験終わりのアンケートでフィードバックも忘れずに。

## 8. あんまり使われないAWSサービスが問題に出る
「このサービス使ってる人おるんかな...？」
特定のサービスを揶揄する意図はございません。近頃新規AWSアカウントでは利用できないサービスもあるので、その辺りの問題がどうなっているか気になる。

## 9. IAM関連の問題、IAMロールが正解になりがち
「とりあえずIAMロール使ったらセキュリティ的にはええんやろ？」
権限管理はちゃんとやりましょう。ちなみにIAMユーザを作成する、が正解になりそうな問題をみたことがないです。

# まとめ
いかがだったでしょうか？これ以外にもあると思いますが、AWS認定試験関連で私が感じたものをピックアップしてみました。
Rails 7.2 へのアップデートで大量の「Defining enums with keyword arguments is deprecated and will be removed」が出た場合の対応

# はじめに

こんにちは、Gakken LEAP のバックエンドエンジニアの mizuno です。
先日、Rails 7.2 にアップデートした際、大量の「DEPRECATION WARNING」が表示されました。
その対応方法を共有します。

## 非推奨警告の内容

警告文の全文は以下の通りです。

```sh
DEPRECATION WARNING: Defining enums with keyword arguments is deprecated and will be removed
in Rails 8.0. Positional arguments should be used instead:

enum :sample_enum, {:example_one=>0, :example_two=>1}
 (called from <class:SampleClass> at /path/to/your/project/app/models/sample_class.rb:5)
```

## 非推奨となる理由と対応方法

Rails 8.0 では、`enum` の定義にキーワード引数を使う方法が廃止され、代わりに位置引数を使う方法が推奨されています。
そのため、以下のようにコードを修正する必要があります。

- 変更前の書き方

```ruby
enum sample_enum: { example_one: 0, example_two: 1 }
```

- 変更後の書き方

```ruby
enum :sample_enum, { example_one: 0, example_two: 1 }
```

また、`_prefix` や `_default` オプションについては、アンダースコアなしの `prefix` や `default` を使う形に変更が必要です。

- 例

```ruby
enum :sample_enum, { example_one: 0, example_two: 1 }, prefix: true, default: :example_one
```

## まとめ

警告が大量に出て驚きましたが、対応箇所はすべて警告文で明示されるため、順次修正すれば問題なく解消できました。
Rails 8.0 への移行を見据え、早めに対応しておくと良いでしょう。

## エンジニア募集

Gakken LEAP では教育をアップデートしていきたいエンジニアを絶賛大募集しています！！
ぜひお気軽にカジュアル面談へお越しください！！

https://gakken-leap.co.jp/recruit/
SCIMメモ

**SCIM（System for Cross-domain Identity Management）** は、**アイデンティティ情報の管理やプロビジョニングを自動化するための標準プロトコル**です。ユーザーやグループの作成、更新、削除などの操作を効率的に行うことができます。

---

### 主な特徴
1. **標準化されたプロトコル**  
   - SCIMは、REST APIをベースにしたオープンスタンダードであり、JSON形式を使用してデータを交換します。
   - プロトコルの標準化により、異なるシステム間でのユーザー情報の同期が容易です。

2. **アイデンティティ管理の効率化**  
   - システム間でユーザー情報を同期・管理でき、手動での管理作業を削減します。
   - 例えば、新しい従業員のアカウント作成や、退職者のアカウント削除を自動化可能。

3. **クロスドメイン管理**  
   - 複数のシステムやアプリケーションにまたがるアイデンティティ管理を一元化できます。

---

### SCIMが解決する課題
- **手動プロビジョニングの煩雑さ**  
  手作業によるユーザーアカウントの作成・削除・更新は時間がかかり、エラーの原因になりやすいです。SCIMを使えばこれらの操作を自動化できます。
  
- **複数システム間の同期の手間**  
  各システムで個別にユーザー情報を管理する必要がなくなり、統一されたプロファイル情報を維持できます。

- **セキュリティリスク**  
  退職者や役割が変更されたユーザーのアクセス権をすぐに削除することで、不要なアクセスを防止できます。

---

### SCIMの基本的な動作
SCIMを使用すると、アイデンティティプロバイダー（IdP）からアプリケーション（サービスプロバイダー、SP）に対して以下の操作を実行できます。

1. **ユーザー作成**: 新規ユーザーがIdPに登録されると、SPにも自動的にユーザーアカウントが作成されます。  
2. **ユーザー更新**: ユーザー情報が変更されると、SPにも変更が反映されます。  
3. **ユーザー削除**: IdPでユーザーが削除されると、SPのアカウントも削除されます。  
4. **グループ管理**: グループへのユーザーの追加・削除も自動的に同期されます。

---

### 主要なSCIM対応サービス
SCIMをサポートする多くのクラウドサービスやアプリケーションがあります。例えば：
- **AWS SSO**（現在はIAM Identity Center）  
  AWSアカウントと連携し、ユーザー・グループのプロビジョニングを自動化。
  
- **Microsoft Azure AD**  
  SCIMを使ったアプリケーションやサービスとのアイデンティティ同期をサポート。

- **Okta**  
  アプリケーションへのSCIM連携機能を提供。

- **Google Workspace**  
  ユーザーとグループのプロビジョニングをSCIMを通じてサポート。

- **SaaSアプリケーション**  
  Zoom、Slack、Box、GitHubなど多くのSaaSプロバイダーがSCIMをサポートしています。

---

### SCIMのAPI例
SCIMのAPIはRESTをベースにしており、代表的なエンドポイントは次の通りです：

1. **ユーザー管理**:
   - GET `/Users`: 全ユーザーの取得
   - POST `/Users`: ユーザーの作成
   - PUT `/Users/{id}`: ユーザー情報の更新
   - DELETE `/Users/{id}`: ユーザーの削除

2. **グループ管理**:
   - GET `/Groups`: 全グループの取得
   - POST `/Groups`: グループの作成
   - PATCH `/Groups/{id}`: グループへのユーザー追加・削除

---

### メリット
- **コスト削減**: 手動作業の削減による運用効率の向上。
- **一貫性**: 複数システム間でのデータ整合性を維持。
- **セキュリティ向上**: ユーザー管理のリアルタイム更新で不正アクセスを防止。

SCIMを導入することで、クラウド環境やオンプレミス環境でのアイデンティティ管理をより効率的に行うことができます。設定や運用について詳しく知りたい場合は、お知らせください！
Nutanix AHVへの移行について

みなさん、こんにちは！
先日のブログでは「Nutanix AHVの機能(ストレージ関連)について」を紹介しました。

https://qiita.com/ReQ_HY/items/36e48336eba584cdff33

今回はNutanix AHVへの移行パターンや方法について紹介したいと思います。

## 移行元の環境と移行方法について
移行元の環境としては、大きく以下の３パターンがあります。
ここでは、それぞれの移行方法について紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/22debc9a-96be-158b-e6b4-ebd8541f4664.png)

## Nutanix AHVへの移行ポイント
移行ポイントの注意点としては、大きく以下の3つとなります。
* **AHV側のOSサポート対応状況の確認**
OSベンダーのサポートが終了したものは、AHVでも非サポートまたは限定的なサポート
* **Nutanix VirtIOドライバー for Windowsのインストール**
WindowsのみAHV用の仮想ディスクや仮想NIC利用時に、専用ドライバが必要
※Linuxは標準で搭載されているため不要
<font color="red">※Nutanix Moveを使った移行の場合は、自動でインストール</font>
* **移行によるシステムのダウンタイム**
移行期間中は、サービスやサーバ自体の停止が伴う
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/7de35695-1d1d-ebe2-2b85-f96ac82a1d3a.png)

## Nutanix Moveでの移行の流れ(Esxi→Nutanix AHV)
Nutanix Moveは、Nutanixが提供する無償の移行ツールとなります。
ここでは、Moveでの移行の流れについて紹介します。
1. **Move-VMの展開(AHVまたはEsxi上)**
1. **WebブラウザでMoveへアクセス**
1. **移行元/移行先を登録**
1. **移行プランの作成**
1. **移行プランの作成**
1. **スナップショットの取得**
1. **スナップショットの差分転送**<font color="red">(※初回転送後は10分毎に差分同期)
1. **カットオーバー**
移行元VMのシャットダウン→最終差分同期→移行先VM起動
<font color="red">※ダウンタイムを最小限に抑えて移行することが可能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/2ee10c9d-5ad7-90e3-ae73-98ab5302570f.png)
<font color="red">※移行VMがWindowsの場合、VirtIOドライバも移行時に自動でインストールします。
また、VMwareToolsも自動でアンインストールします。

## 最後に
今回は、Nutanix AHVへの移行方法について紹介させていただきました。
どの移行方法も、基本的に以下を実施する必要があります。

* **VirtIOドライバーのインストール**
* **VMwareToolsのアンインストール**
* **データの移動**
* **ファイル形式の変換**
* **仮想マシン作成**
* **仮想マシン起動**
* **移行元のIPやMACアドレスの引き継ぎ**

Nutanix Moveでは、上記を自動化して実施するため、移行にかかる手間が極端に少なくなります。
そのため、物理環境以外であればよほどの理由がない限り、移行方法はMove一択となると思います。

ここまでは、主にNutanix AHVの紹介をメインにお伝えしてきました。
次回以降は、実機での検証を元にした内容をお伝えしていこうと思います。
Nutanixについてご質問等ありましたら、是非お問い合わせください！
HCP Terraform Sentinel 活用ガイド

HCP Terraform で Sentinel を利用する際に役立つ情報をまとめました。

## 文法等の理解に必要なドキュメント

下記の公式ドキュメントに、文法を理解する際に必要な情報があります。

https://developer.hashicorp.com/sentinel/docs

### Map や List が使える

Sentinel では、他のプログラミング言語に似た方法でデータ構造を扱えます:

- Map: https://developer.hashicorp.com/sentinel/docs/language/maps
- List: https://developer.hashicorp.com/sentinel/docs/language/lists

### import すれば追加の標準ライブラリが使える

import で使用できる標準ライブラリについても記載があり、例えば Base64 の変換については下記に記述があります。

https://developer.hashicorp.com/sentinel/docs/imports/base64

この辺りの内容を参照していけば、実現したい検証ロジックを組み立てることができます。

また、http や json のライブラリもあるので、外部 API から得た値を処理することもできます。

https://developer.hashicorp.com/sentinel/docs/imports/http

### plan 結果だけでなく、terraform ファイルの構成や state も import できる

tfconfig や terraform ファイルの構成、tfstate は state の内容を表しているので、こちらを活用した検査も実装できます。

https://developer.hashicorp.com/sentinel/docs/features/terraform

## 具体的な記述を組み立てる際に確認する URL

下記に膨大なポリシー実装があるので、まずはこちらから必要なものが無いか確認するのが良さそうです。

https://github.com/hashicorp/terraform-sentinel-policies

上記リポジトリの README に記載がある通り、これらのポリシーは Terraform Registry に公開されているものがあるので、これを直接参照するのも良いですね。

https://registry.terraform.io/browse/policies

この中に欲しいポリシーが無ければ独自実装していくことになるのかなと思います。
個人的には下記の実装が気に入っています。

https://developer.hashicorp.com/terraform/cloud-docs/policy-enforcement/define-policies/custom-sentinel#validate-resource-attributes

検証のための関数を用意し、関数の中で問題があれば `print()` で詳細を出力し、関数の戻り値が true なら問題なし、false なら問題ありとします。
`main = rule {}` の中で対象の検証関数を呼び出すようにしておくと完成です。

```rust:実装イメージ.sentinel
validate_x = func() {
  validated = true
  ...
  if エラーの条件を満たすか？ {
    print("エラー理由")
    validated = false
  }
  ...
  return validated
}

main = rule {
    validate_x()
}
```

## テスト実装に必要なドキュメント

下記に詳細が記載されています。

https://developer.hashicorp.com/sentinel/docs/writing/testing

大まかには、テストを定義する `.hcl` ファイルを用意して、必要に応じてその中でモックを参照するような構成ですね。

モックの作成については、検証対象の環境でエラーになる構成で Plan 実行し、`Download Sentinel mocks` ボタンで得られたモックを取り込んでテストを記述する、という対応を繰り返すのが良さそうです。
モックのダウンロードについては下記に記載があります。

https://developer.hashicorp.com/terraform/cloud-docs/policy-enforcement/test-sentinel
KCNA-JP 合格しました！― Udemy講座を活用した学習体験

先日、[KCNA-JP (Kubernetes and Cloud Native Associate)](https://www.cncf.io/certification/kcna/) の認定試験に無事合格しました！今回は、私が実際に受講した2つのUdemy講座を活用した学習プロセスについて共有したいと思います。

## 学習の背景

IT業界に長年携わってきたものの、Kubernetesに関する知識はほぼゼロでした。しかし、業務の中でKubernetes環境に携わるため、Kubernetesの基礎を体系的に学びたいと思い、KCNA-JP試験に挑戦することにしました。

## 活用したUdemy講座

KCNA-JP試験の準備に際して、次の2つのUdemy講座を受講しました。

### 1. [Kubernetes入門](https://www.udemy.com/course/kubernetes-basics-2021)

この講座は、Kubernetesの全体像を掴むことを目的とした初心者向けコースです。

#### 学んだ内容

- Kubernetesの基本概念（Pod、Deployment、Serviceなど）
- マニフェストファイルの作成と適用
- クラスタ環境での基本操作（kubectlコマンド）

#### 良かったポイント

- ハンズオン形式で学べるため、実際の操作感をつかむことができました。
- Kubernetesを初めて触る私でも理解しやすい解説が魅力的でした。

### 2. [これだけでOK！【KCNA-JP】認定Kubernetesクラウドネイティブアソシエイト問題集](https://www.udemy.com/course/kcna-jp_kubenetes)

KCNA-JP試験対策に特化した問題集のコースです。

#### 学んだ内容

- KCNA-JP試験の出題範囲に対応した問題演習
- 出題傾向や試験で問われやすいトピックの復習
- Kubernetesだけでなく、クラウドネイティブ技術全般（コンテナやマイクロサービス）

#### 良かったポイント

- 実際の試験問題に近い形式の練習問題が豊富でした。
- 解説が丁寧で、間違えた箇所の理解を深めることができました。

## 学習スケジュール

1. **1週間目**

   - 「Kubernetes入門」を視聴しながら基礎を学習。
   - 各章のハンズオンを実際に操作しました。

2. **2週間目**

   - 「これだけでOK！【KCNA-JP】問題集」を解き始め、理解の浅い分野を重点的に復習。
   - 試験本番を想定した模擬試験を実施。

3. **3週間目**

   - 不明点や弱点を克服するために繰り返し問題演習。
   - Kubernetes公式ドキュメントも参照しながら、内容を補強。

## 試験当日

試験はオンラインで受験しました。講座で学んだ内容がそのまま役立ち、自信を持って回答できました。特に、事前に解いた模擬試験が実際の試験と類似していたため、心の準備ができていたのが大きな助けとなりました。

## KCNA-JPに合格して感じたこと

Kubernetesとクラウドネイティブ技術の基礎を学ぶことで、これまで不明瞭だった部分がクリアになりました。また、実務での適用可能性が広がり、新しい技術を学ぶことの楽しさを再認識しました。
ゲームで学ぶマネジメント

# ゲームで学ぶマネジメント
※マネジメントを題材にしたゲームがあるという話ではありません。
※主にチームマネジメントにつきまして
※仲良しグループでやってるとマネジメントも何もないので、基本初対面に等しく、かつ大会なので成績を残そうというような、比較的意識高め系でのチームでのみの話になります。

## はじめに
「ゲームでマネジメント!?」そんなの学べるわけないだろ!と思われるかもしれません。
個人的な意見としましては、会社や部活で行うマネジメントに比べて難易度が高いです。
以下理由になります
1.チームに存在し続けないといけないという縛りがほぼない
2 各人は実質匿名に等しい
3 

## ゲームでのマネジメントの難しさ
上記の1の理由が大半を占めています。
まず、仕事と各項目を比べます。
| カテゴリ | 仕事 | ゲーム |
|:-----------|------------:|:------------:|
| チームの所属の必要有無       |    基本的に必要    | 必要なし      |
| 生計を立てるのに必要か    | 必要      | 必要なし       |
| 週の最低参加日数      | 基本週5以上      | 制限なし        |
| 契約上の制限         | あり       | なし           |
| 個人情報の提供      | あり      | アカウントのIDぐらい     |
| 仕事(ゲーム)内容   | 所属したチーム、もしくは自分のスキルで可能な業界の仕事    | 制限なし  |
プライベートの時間を使う|　基本使わない |必須

簡単に言ってしまうと、まずそもそも所属する義務がないため、例えば、チームの考えやメンバー、ルールが気に食わない場合はすぐ抜けられます。
体験したことはないですが、可能かどうかで言えば、1日や数時間で辞めることも可能です。
集合時間を守る理由なんかも薄いです。
そのため、同じメンバーでチームとして続けていくためには、メンバーの管理が重要です。

2の匿名も繋がってくる話ですが、基本的に何をやっても、実際の人の経歴等には傷がつきません。
アカウントも新しいものを作ってしまえば新しい人生みたいなものです。(声とか実力的にあの時のあいつじゃんっていうのはまあまあありますが)
何かと制限がない、何をするにしても心理的ハードルが低い、
### そんな不安定な土台上で成り立つゲームでのチームをあなたは管理できますか?

## マネジメントする上で注意すること
ここが本題です。
- 実力的に、他のメンバーに認めてもらう
ゲームの世界は弱者に人権はないがちです。(単純に娯楽としてやっている一般の人はそうではないですが、大会で優勝したいや、強くなりたいと思う人はその傾向が強いです。)
まずそもそも、自分より強いメンバーを採用できることは少ないですが、成長して強くなったメンバーに指示を出したり、意見を聞いてもらうには少なくとも何かしらの領域で実力を見せる必要があります。
※実力で従わせるのがマネジメントかと思う人はいるかもしれませんが、使えるものは使いましょう

- 他メンバーのケア特に補欠
冒頭に書きましたが、気に食わないことがあれば、抜けられる可能性があります。
各人の悩みなどを聞いてできるだけ解消、喧嘩やムードが悪そうであれば、仲裁、もしくは(あんまり良くないですが、)第3者に責任転嫁をし、怒りの方向をチーム外に向けます。

補欠であまり出られてないメンバーには、たまに出場のチャンスを与え、実力が伸びるように個人的な練習に付き合います。

- 帰属意識的なものを作る
あまりやっている所は少ないですが、チームのロゴを作成したり、チーム名をみんなで考えたり、チームで一緒に動画などを作成し、チームで居ることを意識させます。
- 予定調整をしっかり行う
やることは単純に予定調整なんですが、これが何気に大変です。
自チームのメンバーはもちろんのこと、他チームのやり取りしている人にもちゃんと確認するよう釘を差します。
また、どうしても来れなくなったメンバーの代わりとなる人を見つけておき、人が足りない場合に参加してもらうよう連絡します。

- 色んな戦略を試す
特に真剣にやっているチームは、チームとしてこういう動きをすべき、という意見がぶつかることが多くあります。
単純に口で説得しても納得してくれない場合があるので「一定の期間」その作戦でやってみてどうなのか試そうと提案します。
身を持って体験することで口頭で理解できなかった事実を理解することができ、納得しやすいです。
- よりプライベートの時間を共に過ごす
練習や試合以外で一緒に過ごしてくれないメンバーがいる場合は、練習に付き合ってくれませんか?など、チーム活動の延長線の取り組みを行う事で、過ごす時間を増やすことが出来ます。

- 努力を見せる
勝つか負けるか、強いか弱いかなので、過程のアピールをして評価してもらうのは、意味がないですが、配信で努力しているところを見せることで、他のメンバーに「 自分も頑張らなくちゃ」と自己成長を促せます。
- 何かしらの同じ思いを共有する
強い敵と戦って、悔しいなどの同じ思いを共有することで、より結束が高まります。ここで、一部諦めを感じるとずれが生じ始めます。
- 基本的に何事も率先して行う
役割分担上、やらないことでも実際にやることで、「やりたくないからやらせてるんだろう」「自分がやれないことを指示するな」という声を防げます。

## チームメンバーの採用の話
## マネジメントが学べるゲーム
※後日補足します。

## 最後に
以上ゲームで学ぶマネジメントの話でした。
実際に人との関わりで経験していくことが大事だと思います。
ただプライベートではなかなか経験しづらい部分なので、ゲームを通して学ぶのはいかがでしょうか?
採用の方も、ゲームが趣味の応募者に詳しい話を聞くと、このように意外な話を聞けるかもしれません。
AWS STSメモ

AWS STS（**Security Token Service**）は、AWSが提供するサービスで、一時的なセキュリティ認証情報（セッショントークン）を生成するために使用されます。これにより、IAMユーザーやAWSリソースが一時的に認証され、アクセス権限を得ることができます。

### 主な特徴と用途
1. **一時的な認証情報の発行**  
   - 時間制限付きのアクセスキー、シークレットアクセスキー、セッショントークンを発行します。
   - 一時的な認証情報は期限切れになると無効になるため、セキュリティが向上します。

2. **クロスアカウントアクセス**  
   - あるAWSアカウントのリソースを別のアカウントから安全にアクセスできるようにします。

3. **フェデレーションアクセス**  
   - AWS以外の認証システム（例: Active DirectoryやSAML）を使って、AWSリソースにアクセスできるようにします。

4. **IAMロールとの連携**  
   - IAMロールを使用して、特定の権限を一時的に付与します。

### 主なAPI操作
- **AssumeRole**  
  IAMロールを引き受けて一時的な認証情報を取得します。クロスアカウントアクセスや特定のタスク実行時に利用されます。
  
- **AssumeRoleWithSAML**  
  SAMLフェデレーションで認証されたユーザーに一時的な認証情報を発行します。
  
- **AssumeRoleWithWebIdentity**  
  OpenID Connect（OIDC）またはWeb IDプロバイダー（例: Cognito、Google）を使用して一時的な認証情報を取得します。

- **GetSessionToken**  
  現在のユーザーまたはロールの一時的な認証情報を発行します。

- **GetFederationToken**  
  ユーザーに一時的なセッションを発行して、AWSリソースへのアクセスを提供します。

### ユースケース例
- **セキュリティ強化**  
  長期的なアクセスキーの代わりに一時的な認証情報を使用することで、不正使用リスクを低減。
  
- **モバイルアプリ**  
  OIDCやCognitoと連携して、AWSリソースへの一時的なアクセスをモバイルアプリユーザーに提供。

- **多アカウント管理**  
  管理者が一時的に他のAWSアカウントのリソースを管理。

STSを活用すると、アクセス管理を柔軟かつ安全に運用できるようになります。どのように利用するかの具体例が必要であればお知らせください！
テキスト認識の課題と展望

この記事を開いていただきありがとうございます。
今回の記事では、テキスト認識の現状と課題、今後について書いていこうと思います。

## テキスト認識と音声化
デジタル技術やAI技術の進歩により、テキスト認識の精度は劇的に向上してきました。
現在では、文字を認識するだけでなく、カメラで認識して目の前の情報を読み上げられるようにもなってきました。

例えば、視覚障害のある方が看板に書かれた内容を読み取ったり、カフェでメニューをその場で理解したりすることが、スマートフォン一台で可能になりました。
それ以外にも資料をデジタル化したり、ネット上での情報を処理したりと、生活する上で便利に活用できるようになってきています。

## 課題
しかし、現時点では課題も残っています。
例えば、手書き文字や複雑なレイアウト、特殊なフォントに対応するにはまだ限界があります。また、リアルタイム処理を行うための計算リソースや認識結果を適切に解釈するための文脈理解能力も、AIの課題の一つです。特に、文脈や語彙の曖昧さがある場合、誤読や不自然な音声出力が発生する可能性もあります。

さらに、インフラ面でも課題があります。たとえば、デバイスがオンラインでなければ、クラウドとの通信ができず、認識精度が低下する場合があります。また、プライバシーの観点から、データをどのように処理・保護するかも議論の余地があります。

## 進歩の途中
それでも、テクノロジーの進化は留まることを知りません。現在のAIモデルは、次世代のトランスフォーマーモデルを基盤としており、より多様な言語や文脈に柔軟に対応できるようになっています。また、ハードウェアの進化により、オフラインでも高精度な文字認識と音声変換を実現できるデバイスが開発されつつあります。

将来的には、AR（拡張現実）やウェアラブルデバイスとの連携が進むことで、テキスト認識と音声化の技術がさらに日常に溶け込む可能性があります。例えば、メガネ型デバイスに搭載されたカメラが周囲の文字情報をリアルタイムで読み取り、イヤホンを通じて音声で伝える未来が想像できます。

## 実際の活用例
実際に私自身、テキスト化や音声化には大きく助けられています。
初めて行く場所はどこに何があるか分からないことが多いので、SeeingAiを使って周りにあるものを確認しています。
また、紙の書類をPDFもしくはOCR化して読めるようにしています。
以前は文字を拡大するにはルーペや拡大読書機といった補助具を持ち歩かなければいけませんでしたが、デジタル化や

## 最後に
テキスト読み上げ技術は、視覚障害を持つ方々にとって「世界を広げる」技術であるだけでなく、すべての人にとって情報へのアクセスを広げる技術でもあります。その進化は、デジタル技術の発展とともに加速しています。
まだ完璧ではない課題も多く残されていますが、テクノロジーは着実に進化しています。
今後、誰もが快適に情報にアクセスできる環境が整備されていくと思います。
私たちの生活をより豊かにする技術を積極的に活用していきたいと思います。
ここまで読んでいただきありがとうございました。
New RelicのアラートをSlackに飛ばしてみた！

Slackを使用しているユーザーにとっては、New Relicで検知した違反がアラートとしてSlackに通知されるととても便利かと思います。Slackへのアラート通知の方法をまとめてみます。

Slack連携の詳細は公式ガイドを参照ください。

https://docs.newrelic.com/docs/alerts/get-notified/notification-integrations/#slack

## :one: SlackにNew Relicアプリをインストール

まず、SlackワークスペースにNew Relicアプリをインストールします。
下記のリンクか、Slackワークスペースの管理画面からNew Relicアプリを選んでイントールしてください。
https://newrelic.slack.com/marketplace/AP92KQJS3-new-relic

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/054c4e7c-953d-8d85-802f-79f3e4691f8e.png)


# :two: New RelicのDestinationにSlackを追加

次に、New RelicのAlerts > DestinationsでSlackを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/e8746a6d-719c-b7c5-526b-745706694698.png)

Add a destinationでSlackを選択して、[Authentication in one click]をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/73758cb0-b86e-2644-bdeb-20308f911236.png)

Slackの画面が開いて連携の設定可否を聞かれるので[Allow]を選択します。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/d6d1c57a-60de-6b4a-1cab-e7d2470b3f54.png">

無事に設定ができると下記の画面がNew Relic上に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/2a1077be-71b6-9877-3ed2-7c64fe159f21.png)


# :three: New RelicでWorkflowを設定

つづいて、New RelicでWorkflowの設定を行います。

:::note warn
この記事ではアラートの通知に焦点を当てて、アラート条件の説明は割愛します。
アラート条件については、[NRU304をオンデマンド受講](https://newrelic.com/jp/events?nr_upcoming_past=past&date_op=%3C%3D&date%5Bvalue%5D=today&date%5Bmin%5D=&date%5Bmax%5D=&type=workshop&search=&sort_by=field_event__date_value&sort_order=DESC)したり、[公式ガイド](https://docs.newrelic.com/jp/docs/alerts/overview/
)を参考にしてください。
:::

Alerts > Workflowで[Add a workflow]でWorkflowを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/4b989d36-b3c3-f4e3-6336-43e1c115512c.png)

Workflowの名前とWorkflowがDestinationに対して通知する対象とするIssueをフィルターする設定をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/e7b637ec-2c8c-fdcb-7b12-cf89c4370740.png)

Notifyで通知先としてSlackを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/56f2fadd-6c18-7088-64cb-c92eb02be464.png)

詳細設定画面が表示されるので、Slack destinationとChannelを設定します。
違反の状態が変わると初回通知のスレッドに情報が更新されていくのですが、その情報をチャネルにもポストしたい場合には、[Receive notification updates on the channel as well]にチェックを入れてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/dd72d4e8-38e8-4cf4-2c08-e186bd7c4b27.png)

[Send test notification]でテスト通知をすることができます。
設定がうまく行っていれば次のようにSlackのチャネル上に通知が来るはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/253d3a65-d52f-97ca-c7e5-ddde54997e18.png)

最後に[Save message]と[Activate workflow]クリックして設定を保存しましょう。

# その他
New Relicでは、**新しい機能やその活用方法**について、QiitaやXで発信しています！
**無料でアカウント作成**も可能なのでぜひお試しください！

:::note info
New Relic株式会社の[X(旧Twitter)](https://x.com/NewRelicJapan) や [Qiita OrganizationOrganization](https://qiita.com/organizations/newrelic)では、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
:::

:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::
ventoy

# USBからの起動の選択
USBから起動させさらにそこからブート選択画面を表示させたい。
なおかつ、ISOイメージとかから直接起動したい
昔々の、BIOSの時は、UltimetBootCDのものをカスタマイズしてできた。
そこから、uEFIの時代になり起動できなくなって、私も使わなくなってしまいました。

まぁ、WindowsPEしか使わなくなったというのもあるのですが。

## ventoy
ただ、なんだかんだといろいろあって一つのUSBメディアからISOイメージの複数起動選択の需要ができてしまい調査をすることになりました。

で、引っかかったのがこの「ventoy」

https://en.wikipedia.org/wiki/Ventoy


https://www.ventoy.net/en/index.html


https://ameblo.jp/gokurakuhaze/entry-12821223988.html

とりあえず、ダウンロードを実施して適当なフォルダに解凍
「Ventoy2Disk.exe」を実行
UACが表示されるので承認


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396469/d0767502-da72-0a4e-d747-a77c553abba2.png)
認識しているUSBを確認し、[install]を選択


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396469/ab8b6571-97b9-da51-e6bb-bcf92916e797.png)
データ消去確認が出るので[はい]を選択


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396469/043749d1-cb47-af10-bc2b-1107f8e62ff8.png)
２回目

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396469/dad8f8ed-02b1-be0c-8eac-21741f8c4364.png)
installの開始

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396469/4c74858b-c265-68c5-9080-7cf957c1b4d4.png)
完了

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396469/90d974f4-caac-85ec-10f8-9278822ab029.png)
成功すると、「Ventoy In Device」にもインストールされているバージョンが表示される。

あとは、USBのフォルダにISOイメージファイルをコピー


起動できなかった・・・要調査ですｎ
【SVG】foreginObject を使って SVG でリッチなUI表現を実装する

# はじめに
SVG の foreginObject 要素を使って SVG に HTML コンテンツを埋め込む方法を記載します。
foreginObject を使うことで SVG の要素だけでは実現できないよりリッチなUI表現が実現できます。

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/foreignObject

# 開発環境
開発環境は以下の通りです。

- Windows 11
- Chrome 131
- TypeScript 5.7.3
- React 18.3.1
- Vite 5.4.14
- Node.js 22.13.1
- npm 11.0.0

# foreginObject を使わない例
比較のため、まずは foreginObject を使わない SVG のコードを実装します。
foreginObject を使わないので、SVG の要素のみでテキストや円を表現しています。

```SvgWithoutForeignObject.tsx
import { FC } from "react";

const SvgWithoutForeignObject: FC = () => {
  return (
    <svg width="400" height="200" xmlns="http://www.w3.org/2000/svg">
      {/* Background rectangle */}
      <rect x="10" y="10" width="380" height="180" fill="lightblue" />
      {/* Simple SVG text */}
      <text x="20" y="50" fontSize="16" fill="darkblue">
        This is a plain SVG text.
      </text>
      {/* Circle with text inside */}
      <circle cx="200" cy="100" r="50" fill="orange" />
      <text x="200" y="105" fontSize="14" textAnchor="middle" fill="white">
        Circle
      </text>
    </svg>
  );
};

export default SvgWithoutForeignObject;
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/5ca05f65-0c00-fcc6-049e-2a9a2b5aa414.png)


# foreginObject を使った例
foreginObject を使うことで、HTML 要素を SVG 要素内で使用することができます。HTML 要素を使用することができるので、ボタンなどインターラクティブ要素を埋め込むこともできます。

```SvgWithoutForeignObject.tsx
import { FC } from "react";

const SvgWithForeignObject: FC = () => {
  return (
    <svg width="400" height="200" xmlns="http://www.w3.org/2000/svg">
      {/* Background rectangle */}
      <rect x="10" y="10" width="380" height="180" fill="lightblue" />

      {/* foreignObject containing HTML content */}
      <foreignObject x="20" y="20" width="360" height="160">
        <div
          style={{
            fontSize: "16px",
            color: "darkblue",
            padding: "10px",
            backgroundColor: "white",
            border: "1px solid gray",
            borderRadius: "8px",
          }}
        >
          <p>This is HTML inside SVG!</p>
          <button
            style={{
              padding: "8px",
              border: "none",
              backgroundColor: "orange",
              color: "white",
              borderRadius: "4px",
              cursor: "pointer",
            }}
            onClick={() => alert("Button clicked!")}
          >
            Click Me
          </button>
        </div>
      </foreignObject>
    </svg>
  );
};

export default SvgWithForeignObject;
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318188/3e35dc72-5245-b82d-2b0b-48882a91763a.png)


# 参考
- [\<foreignObject>](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/foreignObject)
Salesforceのグローバル選択リストの使い方

本橋孝昭です
グローバル選択リストを作成すると異なるオブジェクトに選択リスト項目を作成することが可能です


グローバル選択リストの設定方法を確認しましょう


まず選択リストを作成します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/5e6c5c8a-8323-1adc-6c19-d4a89ef1e144.png)

次に選択リスト項目を作成したいオブジェクトを選択し

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/44cdca3f-0305-7265-33e9-5ee3fcd6ad5b.png)


選択リスト作成時に「グローバル選択リスト値セットを使用」を選択し先ほど作成したグローバル選択リストを選択しましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/98d98c09-08a9-cb2e-5152-29801fa306cb.png)


これでグローバル選択リストで選択した選択の値を設定することができます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/f2661aa4-98a7-68fa-9efc-7c25d4315f44.png)



一度グローバル選択リストを設定すると同じ選択リスト値で異なるオブジェクトの場合、設定が可能です
【2025年度】中堅エンジニアが情報Ⅰを解いてみた

中堅エンジニアたるもの、高校生が受ける情報試験は満点取れるよなぁ？？？
試験時間は60分、配点は100点。

https://www.dnc.ac.jp/kyotsu/shiken_jouhou/r7/

公式ではまだ公開されていなかったので、毎日新聞さんの問題解答速報を利用しました。

https://mainichi.jp/exam/kyotsu-2025

:::note 
まだ解いてない人は先に解いてほしい！！！
:::

<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>


## 所感

丁寧に回答していたら時間がギリギリだったのだが...


そんな私の結果は～～～～～

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833190/6eae6005-4cc1-8931-a0ee-4a930ad1950b.png" width="300">

可もなく不可もなくか...？いや不可ではあるんだが...。
いやぁ9割くらいは取りたかったなぁ...。

正直、ノー勉だと基本情報技術者試験と方向性が違って難しい。
やつとはまた違い、数学や統計知識も要求される感じ。
統計が指導要領に無いゆとり世代としてはとても厳しい！
概念が分かっても用語がわからん！

そのあたりの業務経験もなく...。



## 各問題の振り替えり

### 第1問

デジタル署名にIPv6、7セグに加えてUIまで、クッソ幅広い出題範囲で草。
bitの概念も抑えてるのかぁ...
チェックディジットで、前後の数字の入力し間違いの対策を示してるのはとても実践向き。

これらが、これからの学生の標準装備だと考えると、怖いと同時にうれしい気持ちだねぇ。
基礎から抑えてるエンジニアは、なんにでも応用できるはず。

ちな、間違えた問題は凡ミス...仕方ないね。 :zipper_mouth:



### 第2問

Aはスーパーのシステム設計...楽しい！！
Bは趣味レーションという名の、状態管理やね...
もうね、やってることが要件定義なのよ。

ここ満点取れるなら、そのままアルバイトかインターンで就職しよう。

B、なんか納得いかないなぁ...
私の手元だと `スセ＝10` なんだけど。
解説が出まわったらまた振り返りたい。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833190/26a00f2d-aa63-e4c2-557b-55a8205b7b1a.png" width="280">



### 第3問

親の顔より見たガントチャートだぁ～。
これプログラミングするのか、やべぇな令和の高校生。

中身は基礎本一冊やった程度のレベル感。
`サシ` がちょっとひっかけかな。数字を脳内エミュレートできるか。

満点なので特に言うことないです。 :triumph:
というのも私、学生時代暇な講義中、紙プログラミングしてたせいで虫食いコード得意なんだよねぇ。
コーディングにIDEは甘え（暴論）



### 第4問

と、と統計...！？
ゆとりの敵！！！

まず尺度って何よ...  
Qiita に書いてくれてる人いた。

https://qiita.com/Takahiro_zzz/items/b558f7633f552a620e0f

> 名義尺度 : 分類 (性別、血液型、地域)
> 順序尺度 : 大小関係 (順位、体調の良し悪し)
> 間隔尺度 : 0に意味がない群 (気温、点数)
> 比率尺度 : 0に意味がある群 (質量、距離)

はえ～
データサイエンティストだと、こういう知識も必要なんだろうなぁと。
私はSE、エンジニアで、システム化しか考えてないから...視野が狭いな、まずい。

白抜きのやつはめっちゃ考えて間違えた...。
素直でよかったのね。

もう一個！第3四分位数！言葉に出したい単語！
どうせ第1象限みたいなノリでしょ？って思ったら違った...。

> データを半分に分けて、
> 前半が第1四分位数、中央値が第2四分位数、後半が第3四分位数らしい。
> （4どこいったねん、4つに分けるわけじゃないんかい、2分割数じゃん！）

この辺は知識が無さ過ぎた。勉強しないとね。




## おわりに

フィーリングで解ける問題も多いが、令和の高校生こわい。

Qiitaに乗せるべき内容とはちょっと異なるけど、エンジニアが抑えるべき内容はこういう試験から拾えるものだと思ってる。
みんなも解いて、高校生と勝負しよう！！（なお敗北の見通し） :sob:

情報がいわゆる5教科に食い込むのは難しいだろうなぁ...。
何かの科目と交換じゃないと、この範囲分も勉強する時間作れないっしょ。
勉強できる人なら入社してからで十分追いつけるから、高校生の間は国語の読解や、基礎数学力を高めるのが良いかもね。
情報ってそれ単体だと価値が薄くて、何かと組み合わせてこそだと思うから、その何かのレパートリーを増やすのがベストでは？、という持論を置いてこの記事を終わります。
AWS実務経験なしエンジニア向けAWSCertifiedCloudPractitioner学習法と勉強時間目安


# 目的
今月にAWS Certified Cloud Practitionerを取得したので、その体験記を共有させていただきます。普段エンジニアとして働いているのでITの基礎知識はあるが、AWSのサービスに触れたことはないようなエンジニアがどれくらい学習すればいいのかを把握することを目的に書いていきます。合格証を載せておきます。
![aws-cert.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3458671/85e21a87-e5a6-114f-dd2b-0c1aa0530eb5.png)

# 私のバックグラウンド
 AWSの資格取得の難易度は「どの程度AWSサービスに触れたことがあるか」で大きく学習時間に差が着くかと思いますので、私のスペックを記載しておきます。
- 国立理系大学卒
- 経験年数３年目のエンジニア
- 所有資格は基本情報技術者と応用情報技術者のみ
- 普段はアプリ側の担当でフロントとバックエンド両方の設計、開発を担当しており、実務でAWSを触った経験なし
- Udemyのハンズオンや公式チュートリアルで有名なサービスは触ったことがある程度の経験


# 経緯
今年の4月に転職することになり、転職先の会社でAWSの知識が求められる場面が多そうなので、先にAWSの資格を取得しておきたいと思いました。また個人的にも、Javaを用いたアプリケーションレイヤーの設計に関しては去年ある程度学習できたので、インフラ領域の学習も行い、システム全体の設計ができるエンジニアになりたいと思い、今年はAWSの勉強を頑張ろうと思いまずは一番簡単なAWS Certified Cloud Practitionerを取得しようと思いました。


# 学習方法
## 1.公式とUdemyのハンズオンを用いて実際にサービスを触ってみる (10時間くらい)
私の学習のスタンスとして、AWSの学習目的は「AWSを用いて設計、開発をできるようになること」であり、資格取得はあくまで副産物として捉えています。そのため、一年前にハンズオンを経験していましたが、復習も兼ねて、実際にAWSのサービスを触ってみました。公式ハンズオンも数が多いので、個人的に興味のあるサービスを使って触ってみました。

https://aws.amazon.com/jp/events/aws-event-resource/hands-on/

Udemyは以下のコースで実際にWebアプリを構築することで理解を深めました。

https://www.udemy.com/course/webapplication-on-aws/?couponCode=V2JPLETSLEARN

この講座ではEC2,VPCといったAWS上にWebアプリケーションを構築するための基礎的なサービスから、CloudWatchといった実際の運用で使用するサービスについてまで解説されており、AWSサービスに対する理解を深めることができました。試験に受かることが目的であったとしても、やはりハンズオンを一度経験しておいた方がイメージが掴めるので、一度このようなハンズオンサービスをやっておくことをオススメします。

## 2.1と並行してAWS認定資格試験テキストを流し読みする　WEB問題集をとく(合計2時間くらい)
ハンズオンを受けながら、そのハンズオンで触っているサービスの単元をAWS認定資格試験テキストで確認しました。
各サービスで聞かれるポイントはある程度決まっているので、「そのサービスで何ができるか」を理解した後は、この書籍で該当範囲を確認することで「そのサービスに対してどのようなことが問われるのか」を理解することができました。
このようにハンズオンと並行することで、ただAWS認定資格試験テキストを読むよりも理解が深まりました。

https://amzn.asia/d/8zcTGU3

また並行して以下のサイトを使って問題を解きました。

https://aws-exam.net/clf/

このサイトでそれぞれのサービスに関する問題を解いて、理解を深めました。このサイトの問題は後述のUdemyの講座の模擬試験や、実際の本番レベルに比べると「そのサービスが何か」を知っていれば解ける基礎的な問題が多い気がするので次のUdemyの講座の模擬試験を解くことをお勧めします。ただ各サービスに対する基礎的な知識を整理するにはとても役立つサイトです。


## 3.問題演習(20時間くらい)
ここまでくるとある程度各サービスに対する理解度が高くなってきたので、実際に問題演習に入ります。私も有名な以下のUdemy講座を受講しました。

https://www.udemy.com/course/aws-4260/?couponCode=V2JPLETSLEARN

この講座の模擬試験を解いて、間違えた箇所をAWS認定資格試験テキストで確認、Notionにまとめる、という流れで学習を進めました。Notionにまとめている様子↓

![スクリーンショット 2025-01-27 7.05.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3458671/1124abb9-579d-c509-cd2c-0524ac97e4f4.png)


そして　模擬試験（基本レベル）は2周、模擬試験（本番レベル）は1周解きました。ちなみにそれぞれの模擬試験の正解率は以下の通りです。
|     | 1回目        | 2回目    |
| --- | --- | --- | 
|模擬試験(基本レベル①)  | 76% | 89% | 
|模擬試験(基本レベル②)  | 64% | 78% | 
|模擬試験(本番レベル①)  | 56% | 84% | 
|模擬試験(本番レベル②)  | 50% |     | 
|模擬試験(本番レベル③)  | 53% |     | 
|模擬試験(本番レベル④)  | 60% |     | 

当日の試験を受けた感覚としては模擬試験(基本レベル) < 本番 < 模擬試験(本番レベル) といった感じでした。
体感3割程度は模擬試験(本番レベル)のレベルの問題が出ていたので、模擬試験(本番レベル)までやっておくべきだと思います。


# 合計勉強時間
勉強時間は約30時間程度でした。AWS認定資格一番簡単な資格ということもあり、それほど時間をかけずに合格できました。資格取得が目的であれば、ハンズオンの時間をショートカットできるのでもう少し短くできると思います。（20時間程度）ただ、私のようにAWSを実務で触ったことがないエンジニアは問題演習だけでなくハンズオンをやっておくことで理解が深まり次の試験の役に立つと思うので、是非ハンズオンもやっておくことをオススメします。



# まとめと今後の目標
まずは一つ資格を取得することができました。今年度はAWS Certified Machine Learning Engineer - Associate以外のアソシエイトレベルの資格は全て取得したいなと思っているので、この調子で頑張ります！
この記事が私のようにAWSの実務経験がないエンジニアがAWSの資格を取得するための参考になれば幸いです。
Cloud Run FunctionsでDirect VPC Egressにつなぐ

# はじめに

Cloud FunctionsからリブランドされたCloud Run Functionsを，Terraformを用いて利用した際，少しトリッキーなことをしたので記載します．おそらく今後対応されるかと思います．
Cloud FunctionsがCloud Runに統合されたことにより，Direct VPC Egressを使用したVPC接続をすることができるようになりました．
リブランディングにより，Cloud Runの持つ以下の特徴を活用できるようになりました．

- Direct VPC Egressによるプライベートネットワーク接続
- リクエスト駆動型の自動スケーリング

個人的には，従来のCloud Run ServiceとCloud Functionsのいいとこ取りをした印象です．

# お題

今回は，内部接続のみを許可したCloud Run Serviceに，Cloud Run Functionsがアクセスするケースを想定します．このとき，Cloud Run FunctionsがDirect VPC Egress経由でアクセスする場合を考えます．構成図としては以下です．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618319/0b9616cf-3cc6-13e3-7a90-0acb21065fb4.png)


# ※コンソール上では簡単に実現可能
コンソール上で，Cloud Run Functionsで，Direct VPC Egressを有効にすることは簡単に実現できます．


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618319/cd9b7cd8-c7c3-1d61-4347-1dfda46e2eec.png)


# Terraformはまだ非対応

コンソール上で，上記の構成を実現することは容易にできました．しかし，これをTerraformに書き起こす際，少しひねりを加えなければ実現できませんでした．Direct VPC Egressに接続する設定が，まだTerraformにはリリースされておりませんでしたので，Terraform実行の内部でgcloudコマンドを実行するようにしています．


```terraform
resource "null_resource" "function-1-vpc-egress" {
  depends_on = [module.cloud_function_v2]

  triggers = {
    detached = "false"
    reapply = module.cloud_function_v2.function_uri
  }

  provisioner "local-exec" {
    command = <<-EOT
      gcloud beta run services update ${var.function_name} \
      --network=${var.network_name} \
      --subnet=${var.direct_subnet_name} \
      --network-tags=function-1 \
      --vpc-egress all-traffic  \
      --region ${var.region}
    EOT
  }
}
```


# 結果

内部接続のみを許可したCloud Runに対して，Cloud Run Functions経由でリクエストを投げることで，下記のようにレスポンスを受け取ることができました．

```bash
curl -X GET https://asia-northeast1-${project_id}.cloudfunctions.net/function-v2
```
```bash
{"response":{"backend_status":"ok"},"status":"success"}
```


# まとめ

Cloud Run FunctionsとDirect VPC Egressを組み合わせたアーキテクトを構築する際，Terraformでは少しひねりを加える必要がありました．将来的には以下のようなパラメータが対応されると予想しています．

```terraform
resource "google_cloudfunctions2_function" "v2" {
  vpc_access{
    egress = "ALL_TRAFFIC"
    network_interfaces {
      network = "default"
      subnetwork = "default"
      tags = ["tag1", "tag2", "tag3"]
    }
  }
}

```

今回使用したコードは[こちら](https://github.com/rxmrsd/cloudrun-function-terraform)に公開しています．

# 参考
- [Cloud Functions is now Cloud Run functions — event-driven programming in one unified serverless platform](https://cloud.google.com/blog/products/serverless/google-cloud-functions-is-now-cloud-run-functions?hl=en)
- [hashicorp issue](https://github.com/hashicorp/terraform-provider-google/issues/16076)
読書感想文「トコトンやさしい　小売・流通の本」

# 書籍名「トコトンやさしい　小売・流通の本」
著者：鈴木邦成

# 読もうと思った動機
書籍「ITエンジニアのための業務知識がわかる本」の販売管理の項目で流通の入門書を読むことを進められていたため。

# 印象に残った部分


## p10 流通とは
流通とは、生産者などから商品を消費者へ販売するために生じるモノ、お金、情報を総合した流れ。
生産と消費と並ぶ経済の３大活動で「商流」「物流」で構成されます。

商流：売買などにより商品の所有権が移転する取引の流れ

物流：モノ（商品）の流れ

##  p12 流通の基本的な業態は？
流通の大きな役割はギャップを埋めるためにある。

### 生産と消費のギャップ
#### 所有権のギャップ
商品の所有権が生産者と消費者で異なることから発生
解決方法：小売

#### 空間のキャップ
生産地と消費地が違うことによって生じる問題
解決方法：輸送

#### 時間のキャップ
秋のときに収穫した農作物を春に食べたい
解決方法：保存・保管する


## p16 流通チャネル
流通チャネルとは、商品が生産者から消費者から流れていく道筋のこと。
直接流通と間接流通の２種類がある。



### 直接流通
生産者が消費者まで直接届けるなど、卸売業や小売業が介在しない「産地直送」などの流通形態
例：野菜の無人販売、ヤフオク、メルカリ（これもそうなのか？？）


### 間接流通
卸売業、小売業が介在し商品が消費者にわたる形態の指します。
例：スーパーマーケット、自動販売機


## p20 流通機構
「生産者から消費者に商品がわたる仕組み」
流通機関・・流通機構の構成要素
・所有権のギャップを埋める
　→メーカー、農家
・空間、時間のギャップを埋める
　→物流業

## p54 小売業の機能
小売業の主な役割は、商品の品ぞろえ、買物環境の整備、小売商品の値付け、
配達、広告、宣伝、顧客の情報管理、市場調査

## p136 物流

### 調達物流
生産地から工場までの生産拠点までの原材料までの調達に関わるモノの流れ


### 生産物流
工場などの生産現場におけるモノの流れ


# 実践できること or 感想

## 感想
・流通初心者の自分にとってもわかりやすい本でした。
・身近な例をピックアップしているのをわかりやすさにつながったと思う。
・理解度としては、知らなかった用語が多かったのでそれを大まかに把握したぐらいですね。

## 実践できること
現在の業務に活用するのは今の自分の力量的に難しいですね。
いつか使う機会があるかもしれないですので　記録には残しておきます！！！
構造体同士のコピー



x 過去ログを見ょ!!!
x M5NanoC6での予定は未定



目的
構造体と構造体をコピーする
セグメントエラー防止の為に
短い方に合わせる


いろいろ
マクロ化したほうが、たぶんスッキリする


オンラインコンパイラ paiza


```c++


#include <iostream>
#include <string.h>  //memcpy
using namespace std;
int main(void){
    // Your code here!
    
    struct {
        float x = 1.0f;
        float y = 2.0f;
    } X_Y;
    
    struct {
        float x;
        float y;
    } buff;
   
    
    
    unsigned char *p;
    p = (unsigned char *)(&X_Y);
    printf("X_Y\n");
    printf("[%x][%x][%x][%x]\n",p[0],p[1],p[2],p[3]);
    printf("[%x][%x][%x][%x]\n",p[4],p[5],p[6],p[7]);


    memcpy(&buff, &X_Y,  (  sizeof(buff) < sizeof(X_Y)  ) ? sizeof(buff) : sizeof(X_Y)  ); 
    
    
    p = (unsigned char *)(&buff);
    printf("buff\n");
    printf("[%x][%x][%x][%x]\n",p[0],p[1],p[2],p[3]);
    printf("[%x][%x][%x][%x]\n",p[4],p[5],p[6],p[7]);
    
    printf("\n");
    printf("[%f],[%f]\n", buff.x, buff.y);
    
}


```


```


X_Y
[0][0][80][3f]
[0][0][0][40]
buff
[0][0][80][3f]
[0][0][0][40]

[1.000000],[2.000000]



```
Django MVTとはなんなのかを最もプリミティブに要してみた

３歩歩けば忘れてしまうアホな自分自身のために最もプリミティブにまとめてみた。   
前提：REST APIやフロントフレームワークは使用しない。

---

## MVTとはなにか？

DjangoのMVTは、**Model-View-Template**の略で、以下のような役割分担を持つアーキテクチャです。語弊を恐れず要してみようと思います。   

> - ### **Model**  
  データベースとのやり取りを担当。データ構造やビジネスロジックを定義します。   
  また、ここで記述された内容を元にmigrationファイルを作成し、データベースのテーブルを作成します。 
  「ORM（Object-Relational Mapping: ModelとDBの連携を簡単にしてくれるすごいやつ）」により、SQLを直接書かなくてもデータベース操作を簡単に実行できます。

:::note
#### 要するに
データベースとやり取りするためのルールや構造（型）がここに書いてあるよ！   
しかもSQL知らなくても解決してくれるよ！すごい！
:::
  
> - ###  **View**  
ユーザーリクエストに応じて、必要なデータをModelから取得し、テンプレートに渡します。
  取得したデータの処理など、システムのコア部分のロジックはここに記述されます。
  
:::note
#### 要するに
リクエストを受け取った後のふるまい(データの取得・処理・渡し方)が記述されているよ！  
:::


> - ### **Template**  
  #### 
  ページ描画を担当。Viewから渡されたデータをHTMLとして整形し、クライアント（ブラウザ）に返します。   
  基本的な設計として、base.htmlというファイルを作成し、そこにベースとなるHTMLを記述します。   
  その中(HTML)に、データを表示するためのブロック(可変部分)を記述し、各ページが担う情報を提供し、バックエンドから受け取るデータを埋め込むことができます。

:::note
#### 要するに
画面に表示されるもの(HTML)がここに記述されているよ！
:::
  
「OK、完全理解」の図
    
![スクリーンショット 2025-01-27 4.42.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3862039/7ccf3d5a-43a4-2dad-ca6e-bd986fe037a7.png)



---

## データ送信と結果の出力方式

### データ送受信の流れ
1. ブラウザは**HTTPリクエスト**をサーバーに送信します（GETやPOSTなどのメソッド）。  
2. Djangoは、リクエストを`urls.py`で特定のViewにルーティング。  
3. Viewがリクエストデータを処理し、必要に応じてModelからデータを取得・処理。  
4. 最後に、Viewがテンプレートエンジンを使いHTMLを生成し、クライアントにレスポンスを返します。

:::note alert
~~最もプリミティブな図解~~
(一部誤りがあったため訂正します。下記に公式の図説を貼り付けました。）
![スクリーンショット 2025-01-27 3.56.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3862039/77211815-f81c-c71f-e842-80259b7e7e54.png)
:::
:::note 
本来はすべての基軸がviews.pyになっているようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3862039/e0ea1bb4-f97b-4bfa-88e4-3b2978cce0a0.png)
https://developer.mozilla.org/ja/docs/Learn_web_development/Extensions/Server-side/Django/Introduction
:::


この方式は**サーバーサイドテンプレートレンダリング**（もしくはDjango固有のMVTアーキテクチャ）と呼ばれ、  
広義には、**SSR（Server-Side Rendering:サーバーサイドでHTMLを生成する仕組み）** と表現することも。




---

## API通信とMVTの活用場面の比較

### **MVT**  
  ***サーバーサイドレンダリング(SSR)*** の伝統的な手法で、 ***多ページアプリケーション(MPA)*** でよく使われます。フロントエンドに複雑な処理が必要なく、サーバー側で全てのHTMLを生成して効率的に提供できる。  
  SEOが重要な静的・動的サイトと相性が良い。

### **API通信**  
  フロントエンドが進化した現在では、REST APIやGraphQLを使った***クライアントサイドレンダリング（CSR)*** が主流。  
  特に ***シングルページアプリケーション(SPA)*** やモバイルアプリとの連携を考える場合には、API通信がスタンダードとなる。この場合バックエンドからのレスポンスとしてJSONやXMLなどのデータを受け取りフロントで処理・表示する。

:::note
### まとめ
**MVT**はHTMLに組み込んでから渡す。
**API**はデータだけ渡してフロントで処理する。
|方式|レンダリング方式|主なユースケース|
|-|-|-|
|MTV|SSR<br>**サーバー**サイドレンダリング|**多**ページアプリケーション<br>**Maluti**-Page Application|
|API通信|CSR<br>**クライアント**サイドレンダリング|**シングル**ページアプリケーション<br>**Single**-Page Application|
:::

:::note warn
API通信は現在のWeb開発で広く使われており、デファクトスタンダード(事実上の標準、みんながとりあえず使うやつ)といえるが、シンプルなウェブサイトやSEOが重要なケースでは、MVTも十分に活躍できる方式。
:::

---
Proxmox 8.3 の新規インストール失敗と代替案

# はじめに
Proxmox VE 8.3-1 を新規インストールしようとしたところ、途中で失敗して完了できなかったので代替案を記します。

# 環境
CPU: Xeon E5 2666-v3

# 8.3 のインストール...に失敗
新規インストールをしようと、[公式の ISO 配布ページ](https://www.proxmox.com/en/downloads/proxmox-virtual-environment/iso)から .iso ファイルをダウンロードしました。
USB ストレージに書き込んでインストーラーを起動するものの、 GUI install, TUI install などを選択した後に黒画面のまま操作できなくなってしまいました。

厄介なことにこの問題は発生するマシンとそうでないマシンが存在するようで、手持ちのなかでも発生するしないが分かれていました。

調べてみたところ、先行事例がヒットしました。

https://forum.proxmox.com/threads/proxmox-8-installation-failed.145582/

どうやら 8 系でのみ失敗する事例と 7, 8 の両方で失敗する事例といったように様々な例があるようです。

# 代替案
7 系をダウンロードして、すぐに 8 系へアップグレードするのが一番簡単だと思います。
前セクションに示した ISO 配布ページに 7.4 の iso があるのでそれを使います。

## 7.4 をインストール
ファイルを落としてきてインストールします。

## apt の参照先を変更
バージョン変更に伴い apt の参照先を変える必要があるので関連するファイルの中身を書き換えます。
このとき同時にサブスクリプション無しのリポジトリを参照するようにします。

```diff
# /etc/apt/sources.list.d/pve-enterprise.list
- deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
+ deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
```

```diff
# /etc/apt/sources.list
- deb http://ftp.jp.debian.org/debian bullseye main contrib
- deb http://ftp.jp.debian.org/debian bullseye-updates main contrib
- deb http://security.debian.org bullseye-security main contrib
+ deb http://ftp.jp.debian.org/debian bookworm main contrib
+ deb http://ftp.jp.debian.org/debian bookworm-updates main contrib
+ deb http://security.debian.org bookworm-security main contrib
```

## アップデートの適用
`apt update`, `apt dist-upgrade` を実行し、終わり次第再起動します。

何回か既存サービスの設定を引き継ぐかを聞かれるので画面前から離れないようにしましょう。
選択肢はデフォルトのもので良いと思います。

# おわりに
7.4 も入らないパターンはなかったので対応できるかわかりません。
2025/1/27主にITとかセキュリティの記事

Reddit＆WeTransfer偽装サイト936件が稼働中、新型マルウェア「Lumma Stealer」の脅威とは(1/25)
https://innovatopia.jp/cyber-security/cyber-security-news/47133/

OracleがJava製品のセキュリティ更新プログラムをリリース(1/24)
https://news.livedoor.com/article/detail/28009277/

QNAP、「rsync」の緊急脆弱性の影響でバックアップアプリを修正(1/25)
https://news.mynavi.jp/techplus/article/20250125-3114710/

WordPressサイトから有害サイトにリダイレクト、侵害の確認を(1/25)
https://news.mynavi.jp/techplus/article/20250125-3114702/

メールアドレスの漏えいについて　北陸ガス株式会社(1/24)
https://www.hokurikugas.co.jp/information/20250124.pdf

トランプ大統領はセキュリティに関心がない？職員を解任し大統領を撤回(1/25)
https://news.mynavi.jp/techplus/article/20250125-3114672/

Oppoタイ代理店で個人情報流出発覚！ 先のプリインストールアプリとは無関係と主張するも…。(1/25)
https://x-bomberth.com/20250125oppoproblem/

テキストブラウザを使う (1)(1/25)
https://news.mynavi.jp/techplus/article/natonakucommand-83/

生徒2人の閲覧履歴…県立高校で3年生の一部生徒の成績がクラウド上で閲覧可能に 30代教諭が対応怠る(1/24)
https://www.fnn.jp/articles/-/819416

サイオステクノロジー、企業のRAG導入支援サービス「Azure OpenAI Service RAGスターターパック」提供開始(1/24)
https://www.excite.co.jp/news/article/Prtimes_2025-01-24-100567-6/

ソフトバンク、個人情報の流出を検知するセキュリティサービスを提供開始へ(1/24)
https://businessnetwork.jp/article/25527/

個人情報を守りながら生成AIに自分のことを知ってもらうには（横須賀 輝尚）(1/25)
https://agora-web.jp/archives/250124092541.html

外務省 偽情報の拡散を含む情報操作への対応 (2025.01.17)(1/25)
http://maruyama-mitsuhiko.cocolog-nifty.com/security/2025/01/post-062d60.html

欧州議会 EUデータ保護政策を理解する (2025.01.21)(1/25)
http://maruyama-mitsuhiko.cocolog-nifty.com/security/2025/01/post-f20a67.html

メールで「パスワードを別送する」意味があるのか、改めて調査してみた(1/25)
https://qiita.com/t-furusato/items/5cb9eaeec619fd6cccce

日本人になりすました北朝鮮IT技術者を日本企業が雇用、採用に注意を(1/25)
https://news.mynavi.jp/techplus/article/20250125-3114660/

充電用USB端子経由のハッキング抑止デバイス「USB DATA BLOCKER」を衝動買いして、さらに考察する(1/25)
https://ascii.jp/elem/000/004/247/4247544/?rss=
https://ascii.jp/elem/000/004/247/4247544/2/

英語がTikTokの使用を禁止する理由(1/23)
https://voi.id/ja/news/453631

WSUSドライバー同期機能が2025年4月18日廃止：34%が引き続き利用中、Microsoftが改めて代替ソリューションへの移行を促す通知(1/25)
https://nikkeimatome.com/?p=51470

【注意喚起】ふるさと納税　偽サイトにご注意ください！(1/24)
https://www.city.kiyosu.aichi.jp/kurashi_joho/zeikin/furusatonozei/sagisaito.html

パケットキャプチャとは？初心者でもわかる基本とWiresharkを使った解析方法について解説(1/25)
https://nikkeimatome.com/?p=51498

ポートミラーリング(SPAN)とは？ネットワークトラフィックの監視と分析を実現するスイッチやルーターの重要機能について解説(1/25)
https://nikkeimatome.com/?p=51507

サイバー攻撃、企業の備え進む　身代金「支払わず」半数(1/25)
https://www.nikkei.com/article/DGXZQOTG267Y80W4A221C2000000/

韓国でサイバー脅威が深刻化、対前年比48％増…目立つ「ハッキング」「情報漏洩」(1/25)
https://www.afpbb.com/articles/-/3559890?cx_part=top_category&cx_position=2

元陸上幕僚長ら「威力偵察」の可能性指摘
中ロ関与？海底ケーブル切断頻発(1/25)
https://www.nikkei.com/article/DGKKZO86303140U5A120C2EA3000/

中国共産党　「韓国不正選挙の背後に中国」との報道に沈黙(1/25)
https://www.epochtimes.jp/2025/01/278473.html

テスラのSWOT分析：AIとロボットタクシーの可能性を秘め、株価は成長態勢にある(1/25)
https://jp.investing.com/news/swot-analysis/article-93CH-989915
Application error: a server-side exception has occurred (see the server logs for more information).エラーでページが表示されない

# はじめに
next.jsをfirebaseにデプロイしようとした際に、ページが表示されず悩んだので解決策を載せておきます。

# 事象
next.jsをfirebaseにデプロイしました。
`firebase deploy`でデプロイを行い、特にエラーも表示されなかったためページを見に行ったらこのような画面が表示されていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1328154/d18a230a-cf3b-c586-19e9-a610a1244388.png)

# 原因
APIをfetchする処理をこのように入れているのですが、envで指定しているNEXT_PUBLIC_API_URLが`http://localhost:3000`となっているためでした。
実際のfirebaseでhostingしているURLは別なのでローカルのものを指定しても動きません。

```tsx
const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/qiita`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ page: 4 }),
});
```

# 解決策
NEXT_PUBLIC_API_URLを実際のURLを指定するように書き換えました。
```
NEXT_PUBLIC_API_URL="実際のURL"
```

# おわりに
ローカルでは動くのに、デプロイしたURLでページがみれないときはAPIが正しいURLとなっているか調べて見るとよさそうです。
Windows bash からカレントディレクトリをエクスプローラーで開く

bashに限らないけど。

下記ファイルを`ExplorerHere.bat`などとしてどこかに置いておく。
```
@echo off
start .
```
これを実行すればいいわけで。たとえばCドライブのルートフォルダーに置いたなら、Cygwinなら
```
alias eh='/cygdrive/c/ExplorereHere.bat'
```

MSYSなら
```
alias eh='C:/ExplorereHere.bat'
```
ですね。

`PATH`が通っているフォルダーに置いておけば
```
alias eh='ExplorereHere.bat'
```
でいい。

冒頭に書いたとおり、別にbashに限らずどんなシェルからでも起動できます。もちろん`CMD`からも。なので`PATH`が通っているパスに置いておけば便利かと思います。

ちなみに逆はエクスプローラーのコンテキストメニュー（右クリック）で「ターミナルで開く」、です。
オブジェクト指向について


## 1. オブジェクト指向の目的

オブジェクト指向とは、**モノと操作を分けて作り、組み立てるように開発していく**ことであり、オブジェクト（モノ）ごとにクラスを作成することでコードの再利用性や保守性を高める。

:::note info
「オブジェクト」とは、プロパティ（データ）とメソッド（操作、処理内容）の2つの要素を持った全ての物のこと。
:::

:::note info
「クラス」とは、プログラムを作成するための設計図。
オブジェクトを作る際に必要な要素をまとめたもの。
:::

:::note info
クラスから生成されたものをインスタンスという。（**インスタンス化**）
:::

## 2. カプセル化

カプセル化とは、データ（プロパティ）や処理（メソッド）を1つのクラスにまとめ、**外部から直接アクセスできないようにする**仕組みのこと。
データの保護と外部とのインターフェースの簡潔化を目的としている。また、外部からの不正なアクセスや変更を防げるため、安全性が高い。

## 3. 継承

継承とは、既存のクラス（親クラスまたは基底クラス）の機能や性質を引き継ぎ、新しいクラス（子クラスまたは派生クラス）を作る仕組みのこと。
同じような機能を持つ新しいクラスを作る際に再利用できるため、開発を簡略化し、仕様の変更などの際にも修正が容易。

* 抽象クラス
抽象クラスとは、他のクラスに継承されることを前提とした基底クラスのこと。
:::note info
抽象クラスはインスタンス化できず、必ず子クラスで継承して使用する。
:::

* インターフェース
インターフェースとは、クラスが実装すべきメソッドの仕様（名前と引数）を定義するための仕組みのこと。
メソッドの中身（具体的な処理）は持たず、実装クラス側で定義する。また、複数のインターフェースを実装可能（多重実装が可能）。
:::note info
異なるクラス間で共通メソッドを持たせることができる。
:::
## 4. ポリモーフィズム

ポリモーフィズムとは、**同じ操作でも異なるオブジェクトに応じて異なる動作を実行できる**仕組みのこと。
同じ操作を異なるクラスで使い回せるため、拡張性のあるコードが書ける。また、共通のインターフェースや抽象クラスを通じて、汎用的なコードを書くことが可能。

:::note info
ポリモーフィズム」という言葉は、「多くの形」という意味を持ち、同じインターフェースやメソッドを使いながら、異なる具体的な動作を実現することを指します。
:::

## 5. 単一責任の原則

単一責任の原則とは、**クラスは1つの責任だけを持つべき**という原則のこと。

:::note info
責任とは、**クラスが行うべき1つの明確な仕事や機能**のこと。
:::