OmniAICreator/Qiita-1.07M huggingface dataset:
【Go言語】Beegoプロジェクトの作成方法(Windows11編)

![Beegoロゴ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/9a544d5b-b1c7-6394-29ee-e59c88d0b6c0.png)


今回は、Go言語のWebフルスタックフレームワーク「Beego」のプロジェクトの作成方法をまとめておきます。

# プロジェクト作成環境
Windows11

# 手順

## プロンプト画面を起動する
`Beego`プロジェクトに必要なモジュールをサーバにインストールするためにコマンドプロンプト画面を立ち上げましょう。


![コマンドプロンプト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/2da32653-ec8f-09a2-db21-098840ce4183.png)

インストールされたモジュール群は、どこに配置されるかというとこちら↓になります。
![モジュールのインストール場所.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/da56ab42-010b-6cae-943c-cd34ad1bec36.png)

## Beegoモジュールをインストールする
さて、プロンプト画面を起動したらモジュールをインストールしましょう。

:::note info
今回は、管理者コマンド以外でインストールしてみました。
:::

最新のバージョンの`Beego`フレームワークのインストールコマンドはこちら↓になります。

```
go install github.com/beego/beego/v2@latest
```
つぎに、`bee`コマンドをインストールします。
```
go install github.com/beego/bee@latest
```
↑の2つのコマンドを実行して下記のようになればインストールは完了です🌝

![管理者コマンド以外でBeegoインストール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/9882bef7-af37-47da-4051-8b1e455b1a7c.png)

`Beeコマンド`が実行できるかを下記のコマンドで確認してみましょう。

```
bee
```
そして、下記のようにコマンド一覧が出たら完了です🌝

![Beeコマンドを入力する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/8d4b3970-7ef8-008a-bfeb-e3c8c33de9f4.png)

## デスクトップに移動してプロジェクトを作成してみる

デスクトップに`Beegoプロジェクト`を作成するためにコマンドを移動しましょう。

```
cd Desktop
```

デスクトップに移動したら、`Beegoプロジェクト`を作成してみましょう。

```
bee new <プロジェクト名>
```

下記のようにずらずら～っとアプリがダウンロードされたらOkです🌝

![デスクトップに移動してBeegoプロジェクトを作成する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/f941fe65-fd0f-17c8-0e33-663bc8626e6e.png)

## アプリを起動してみる...ん...エラー...!?

`Beegoアプリ`の立ち上げは下記のコマンドで起動できます。

```
bee run
```

そして、[http://localhost:8080/]() にアクセスしたら画面が表示される...!?

おや、画面が表示されない。

プロンプトをよく見るとエラーが...

どうやら、モジュールパッケージ`github.com/astaxie/beego`が`プロジェクト`の中に含まれていないというエラーです。

![astaxieがないエラー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/d3fa99ad-0346-a7b3-9ac8-42d489803d47.png)

なので、モジュールパッケージ`github.com/astaxie/beego`をインストールしておきましょう。

```
go get github.com/astaxie/beego
```
そうすると、`プロジェクト`にモジュールがインストールされます↓
![プロジェクト内にastaxieパッケージをインストールする.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/bb895cb6-929f-17d9-a75d-8dc4cd12b46c.png)


もういちど、アプリを起動してみましょう。

```
bee run
```

![いよいよBeegoプロジェクトを作成する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/2d8ac59e-53a7-3f62-4426-4dc5b04f4dd1.png)

[http://localhost:8080/]() にアクセス画面が表示されたら完了です。

以上です。


# 参考になったもの

https://www.youtube.com/watch?v=KGLcFgZs35o

https://www.youtube.com/watch?v=STP4f1Ue33w

https://www.youtube.com/watch?v=lNd7XlXwlho

https://hayageek.com/beego-mongodb-tutorial-in-go/
感想「オブジェクト指向UIデザイン」

本記事は『[オブジェクト指向UIデザイン](https://amzn.asia/d/dsBlG9i)』という書籍に基づいたメモです。

# オブジェクト指向UIデザインの概要

オブジェクト指向でUIを設計すると、ユーザーはマニュアルを読むことなく直感的に操作できると感じやすくなります。しかし、実際のシステム設計では、ユーザーの複雑な要求事項ややりたいことをまとめる過程で、どうしても「動詞」を中心としたタスク指向のUIになりがちです。その結果、使いにくいシステムが生み出されることが少なくありません。

# オブジェクト指向UIとタスク指向UIの違い

## オブジェクト指向UI

**例：写真アプリ**  
写真アプリでは、ユーザーはまず「写真」というオブジェクト（名詞）を選び、次に削除や編集といった行動（動詞）を自由に実行できます。  
この「名詞 → 動詞」の流れにより、ユーザーにコントロール感が与えられ、結果として使いやすいUIが実現されます。

![写真アプリのUI例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488575/3f8af300-dc69-ab96-2795-8c4a7ba6b31f.png)

## タスク指向UI

**例：自動販売機**  
従来の自動販売機は、まず「お金を入れる」という動作（動詞）から始まり、その後に「商品を選ぶ」という流れになっています。  
たとえば、一度お金を投入した後に商品を購入しない場合、返金レバーを押すという余分な操作が必要になります。  
このように、動詞から始まるタスク指向のUIは、モードが存在し操作が制限されるため、ユーザーにとって操作が煩雑になる場合があります。

![自動販売機のUI例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488575/0d79fce4-8ba9-4ecb-0142-6dc5f95dbedb.png)

**最近の自動販売機では、**  
商品を先に選択し、その後にSUICAなどで支払いを行うことで、ユーザーは商品選択後に購入するかどうかを柔軟に決定できるようになっています。返金レバーを押す必要がないため、オブジェクト指向UIの利点が活かされていると言えるでしょう。

# オブジェクト指向UI設計のプロセス

オブジェクト指向UIの設計は、以下の3つのプロセスで進めることができます。どのプロセスから始めても問題はありませんが、特に **「オブジェクトの抽出」** は非常に重要なステップです。

## 1. **オブジェクトの抽出**  
   アプリケーション設計の初期段階で、ユーザーの「〜したい」という希望（タスク）を整理します。たとえば、イベント予約システムであれば、以下のような要求が挙がることが考えられます。  
   - ユーザーがイベントを予約できるようにする  
   - 管理者がイベントを登録・編集できるようにする  
   - イベントの予約期間を設定できるようにする  
   
   これらをそのまま動詞中心に設計してしまうとタスク指向UIになってしまいます。そこで、各タスクから名詞（オブジェクト）を抽出し、それらの関係性を整理することで、ユーザーが直感的に操作できるUI設計を目指します。

## 2. **ビューとナビゲーションの検討**  
   抽出したオブジェクトを基に、どのような画面構成や操作フローにするかを検討します。ユーザーが必要な情報にすばやくアクセスできるよう、ナビゲーションの工夫が求められます

## 3. **レイアウトパターンの適用**  
最後に、既存のレイアウトパターンやデザインパターンを活用して、UI全体の整合性や視認性を向上させます。

# モードとモードレスの設計

ユーザーの操作性に大きく影響するのが、**モード（モーダル）** と **モードレス** の違いです。

## モード

**例：削除ダイアログ**  
ユーザーが削除ボタンをクリックすると、確認用のダイアログが表示され、以下の2つの選択肢が提示されます。

- 削除する  
- キャンセルする  

この状態では、選択中のアイテムに対してのみ操作が可能となり、他のアイテムの詳細を開くなどの操作が制限されます。  
このような状態を「モードがある」と表現し、ユーザーの行動が制限されることになります。

![削除ダイアログの例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488575/ff2266dd-5a5a-dfa5-5f87-f9a17e94fbd2.gif)

## モードレス

**例：モードレスな削除確認**  
一方、モードレスな設計では、ユーザーの操作が制限されずに他の操作も並行して可能です。  
たとえば、マイナスボタンをクリックすると削除ボタンが表示され、削除を実行するためにそのボタンを押すことができますが、同時に他の機能も利用可能です。  
この方法により、誤操作のリスクを減らしつつ、ユーザーの自由度を保つことができます。

![モードレス削除の例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488575/e1da85eb-5512-b57c-8ca6-b9c2f23f0fa0.gif)


# 主要なポイントのまとめ

- **オブジェクト指向UI**  
  - ユーザーはまず対象（名詞）を選び、その後に操作（動詞）を実行する流れで、直感的な操作感が得られる。  
  - 写真アプリのように、オブジェクト中心の設計はユーザーに自由度とコントロール感を与える

- **タスク指向UIの問題点**  
  - 自動販売機の例のように、動詞を先に押すことで操作が制限され、余計な手続き（例：返金レバー操作）が発生する可能性がある

- **UI設計プロセス**  
  - 「オブジェクトの抽出」、「ビューとナビゲーションの検討」、「レイアウトパターンの適用」の3つのステップを踏むことで、ユーザーにとって使いやすいUIが構築できる
  - 特にオブジェクトの抽出は、タスク指向UIに陥らないための重要なプロセスである

- **モード vs モードレス**  
  - モーダルなUIはユーザーの操作を一時的に制限するが、明確な選択肢を提示するメリットがある
  - モードレスなUIは、ユーザーの自由度を保ちながら誤操作を防ぐ仕組みとして有効である
Salesforceで数式を作成しよう～テキスト型から通貨型に値を変更する方法

こんにちは　本橋孝昭です。
今回は事例に基づいてSalesforceの数式関数の使い方をご紹介します。


## やりたいこと1 テキスト型の項目の値を数値型や通貨型に変更したい

項目には「項目型」がございます。
テキスト型の項目値を数値型に変更するにはどうすればいいでしょうか


この場合、VALUE関数を使用して以下のように実装します

VALUE( テキスト項目のAPI参照名 )
このテキスト型の項目に
「3000」や
「100000」というふうに数値のみがあれば数値に変更可能です
しかし、この数式では
「3,000」や
「100,000」というふうに「,」など数字ではない値があればエラーになってしまいます。

ではこの場合どのような数式にしましょうか


## やりたいこと2 テキスト型の項目の値を数値型や通貨型に変更したい しかしテキスト型項目には「,」が入っている場合

「3,000」や
「100,000」
の場合、VALUE関数とSUBSTITUTEを使用します

VALUE( SUBSTITUTE(テキスト項目のAPI参照名,",",""))
RUNTEQに決定

## RUNTEQに2月6日入学に決めました。
勉強のサポートはもちろん、ポートフォリオ作成やキャリア形成等のことを考えると、やはり大きなr投資ではあるがスクールに入学すべきでは？と考え、RUNTEQに入学を決意しました！

UdemyでHTML,CSSまでは学習＋そもそも業界未経験でもあるので、基本情報技術者試験の参考書(キタミ式)をまずは読破し、基本を勉強。

明後日からの本格的な勉強スタート。

### やるぞ！！！
Sys IDからレコードを取得する方法

※この記事はServiceNow初心者が学習用のために記載した記事です。内容について誤っている場合がございます。不足点などございましたらコメントいただけますと幸いです。

# 前提知識
### SysIDとは
Sys ID（シスアイディー） は、ServiceNow の すべてのレコードを一意に識別する 32 文字の文字列（UUID）である
### Customer Updates（sys_update_xml）テーブルとは
- sys_update_xmlテーブルは、ServiceNow 内の更新セット (Update Set) に関連する変更を管理するテーブル
- フォームやスクリプト、ビジネスルールなどのカスタマイズが加えられると、その変更がこのテーブルに記録される

# Sys IDからレコードを取得する方法
- Filter navigatorでsys_update_xml.listと検索する
- Payloadフィールドで、「*sys_id」とフィルタをかける
    - sys_idは各自変換してください
- ヒットしたレコードを押下
- Ctrl ＋ F でもう一度「sys_id」を検索
- sys_idがヒットするので、その前後のタグを確認
- それがフィールドである

# 使用用途
- ポータル画面のURL
- GlideRecordのaddQueryメソッドの第2引数でsys_idが利用されている場合
【AI初心者が1週間で合格！】AWS AIFに1000点満点取った勉強方法

## はじめに
こんばんは、uiroleです！
この度、AWS AIFに無事一発合格できました！
なんと、初めての1000点満点！！(嬉しいけど、自分でもびっくり、、)
![IMG_3981.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871776/60d988f0-37a7-b37e-68f2-724e0445af54.jpeg)

今回はAIに触れたことがないSEが、AIF合格に至るまでを書いていこうと思います。

### 【この記事の対象者】
- AWS AIFを受験する人・受験を検討している人
- AWS認定資格に興味がある人

### 【この記事を読んで得られること】
- AWS AIFの効率的な勉強法(当社比)
- AWS AIFで実際に出題された問題の傾向

### 【本章の前に軽く自己紹介】
◆学部卒(非情報系)
◆新卒でSIerに入社3年目で、AWS案件歴は半年。
◆取得資格
| 資格名 | 取得日 |
|:-----------|:-----------|
| 基本情報技術者 | 2021年11月  |
| AWS クラウドプラクティショナー | 2023年2月 |
| AWS ソリューションアーキテクトアソシエイト | 2023年7月 |
| AWS ソリューションアーキテクトプロフェッショナル | 2024年3月 |
| AWS デベロッパーアソシエイト | 2024年3月 |
| AWS sysOps Administrator アソシエイト | 2024年4月 |
| AWS Security Speciality | 2024年10月 |
| AWS AIプラクティショナー 　☆NEW!!☆ | 2025年1月 |


## AWS AI プラクティショナーとは？
人工知能 (AI)、機械学習 (ML)、生成 AI の概念とユースケースに関する需要の高い知識を実証する試験。

- 試験時間：90 分
- 問題数：65問
- 料金：100 USD

https://aws.amazon.com/jp/certification/certified-ai-practitioner/


## 勉強方法と勉強期間
https://kws-cloud-tech.com/

使用した問題集は他のAWS試験のとき同様CloudTechのみで、この問題集に124問問題があるので、正答率が90%以上になるまで勉強しました。
今回勉強期間は1週間で、大体1日2h~3hくらいの合計20時間でした。

:::note info
AIは初心者すぎて、わからないワードばかりでしたが、とりあえず**問題を解いてみて、分からない言葉や仕組み個別で調べていく**スタイルを毎回AWS試験の勉強で取り入れていて、これが今回も良かったのではと思っています。
:::



## 受験スケジュールと結果発表
試験時間は90分ですが、50分ほどで退出しました。
毎度気になる結果通知の時間ですが、今回は20時半ににメールが来て、スコアレポートも確認できました。(いつもより遅くて落ちたかと焦った、、)

|| 時間|
|:-----------|:-----------|
| 試験開始| 10:00 |
| 試験終了| 10:50 |
| 結果通知| 20:30 |


## 実際試験を受けてみて
今回受けたAIFでは、Cloudtechで解いた問題に似ている問題が半分ちょっと、似てるけどちょっと違う問題が2割、みた事ない問題が2割という感じでした。

### 試験で役に立った、調べておいて良かったもの
- AWS SageMaker
- RAG
- Amazon Bedrock
- F1スコア
- BERTScore

## 終わりに
この記事が少しでも役に立てば嬉しいです！
少しでもこの記事がいいなと思っていただけたら、ぜひいいねボタンをお願いします！
【ぼくのJavaScript備忘録】querySelector の使い方徹底解説

## 1. `querySelector` とは？

`querySelector` は、JavaScript の **DOM 要素を取得** するためのメソッドです。  
CSS セレクターを使って、ページ内の **最初に一致する要素を取得** できます。

> **documentとは？**  
> `document` は、ブラウザが読み込んだ **HTMLドキュメント全体** を指すオブジェクトです。  
> ただし、`document` に直接イベントを設定するのではなく、**特定の要素を変数に格納して扱うことも可能** です。

> **ポイント**：`getElementById` などと異なり、`querySelector` は **CSS セレクター** を使用できるため、クラスや属性を柔軟に指定可能。

---

## 2. `querySelector` の基本的な使い方

```javascript
const element = document.querySelector(セレクター);
```

- `セレクター`：取得したい要素を指定する **CSS セレクター**
- `element`：取得した要素（該当するものがない場合は `null`）

### ☑️ 例1：クラス名を指定して取得
```javascript
const box = document.querySelector(".box");
console.log(box);
```
> **クラス `.box` を持つ最初の要素を取得**

### ☑️ 例2：ID を指定して取得
```javascript
const header = document.querySelector("#header");
console.log(header);
```
> **ID `header` の要素を取得（`getElementById` とほぼ同じ）**

### ☑️ 例3：特定の子要素を取得
```javascript
const firstItem = document.querySelector("ul li");
console.log(firstItem);
```
> **`ul` 内の最初の `li` 要素を取得**

---

## 3. `querySelectorAll` との違い

`querySelector` は **最初に一致した要素のみ取得** するのに対し、
`querySelectorAll` は **すべての一致する要素を取得し、NodeList（配列のようなもの）として返す** ことができます。

### ☑️ 例4：`querySelectorAll` で複数の要素を取得
```javascript
const items = document.querySelectorAll(".item");
console.log(items);
```
> **クラス `.item` を持つすべての要素を取得**

### 🔍 `querySelector` vs `querySelectorAll`

| メソッド               | 概要 |
|----------------------|------------------------------|
| `querySelector(".class")` | **最初の 1 つだけ** 取得 |
| `querySelectorAll(".class")` | **すべての要素** を取得（NodeList） |

### ☑️ 例5：`querySelectorAll` でループ処理（`forEach` を使用）
```javascript
const items = document.querySelectorAll(".item");
items.forEach(item => {
    console.log(item.textContent);
});
```
> **すべての `.item` 要素のテキストを出力**

`querySelectorAll` で取得した `NodeList` は `forEach` を使ってループ処理が可能です。  
これを活用すると、複数の要素に対して一括で処理を適用することができます。

---

## 4. `querySelector` と `getElementById` の違い

`getElementById` は **ID を直接検索** するため、高速でシンプルですが、
`querySelector("#id")` なら **CSS セレクターを統一的に利用** できます。

### 🔍 `getElementById` vs `querySelector`

| メソッド                     | 概要 |
|----------------------------|------------------------------|
| `document.getElementById("id")` | **ID で要素を検索**（高速） |
| `document.querySelector("#id")` | **CSS セレクターで統一的に検索** |

> **パフォーマンス重視なら `getElementById`、柔軟性が欲しいなら `querySelector`**

---

## 5. `querySelector` を特定の要素から実行

`querySelector` は `document` だけでなく、**特定の要素を起点に検索** することも可能です。

### ☑️ 例6：特定の親要素内を検索
```javascript
const parent = document.getElementById("parent");
const child = parent.querySelector(".child");
console.log(child);
```
> **`#parent` の中の `.child` 要素を取得**

---

## 6. まとめ

☑️ `querySelector("セレクター")` で **最初に一致する要素を取得**  
☑️ `querySelectorAll("セレクター")` で **すべての一致する要素を取得（NodeList）**  
☑️ `getElementById` よりも **柔軟な検索が可能**（ただしパフォーマンスは若干低下）  
☑️ **特定の要素を起点に `querySelector` を実行できる**  
☑️ `querySelectorAll` で取得した要素は **`forEach` を使ってループ処理が可能**  

`querySelector` を活用して、**柔軟な DOM 操作を実現しよう！**
【rails】ALB のヘルスチェックが失敗する “Health checks failed with these codes:301” 

## はじめに
AWSのALBでヘルスチェックが通らない問題に直面しました。

エラー画面は下記の通り。

![スクリーンショット 2025-01-21 11.20.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792654/be304907-a381-41b0-f4e8-3da87eb9108a.png)

ヘルスチェックの対象となるエンドポイントが HTTP 301 リダイレクト を返していることを示しています。


## 詰まっていた原因
HTTP接続でヘルスチェックを行おうとしているのにrails側ですべてのリクエストを HTTPS に強制的にリダイレクトさせる設定になっていたことが原因でしした。

そのため、HTTP でのリクエストが送られてきた場合、自動的に HTTPS にリダイレクトする機能をOFFにしました。
具体的には下記の通り。

```config/environments/production.rb
config.force_ssl = false
```

## 他にやったこと

### VPC 設定で DNS 解決 と DNS ホスト名 が有効になっていること
まず、VPCを作成すると、デフォルトではDNS 解決のみ『有効』になっており、DNS ホスト名は『無効』になっています。
ですので、DNS ホスト名を有効にする必要があります。

ちなみに、DNS ホスト名を有効にすることでEC2 インスタンスにホスト名 (DNS 名（例: ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com）)が割り当てられます。
名前解決を行ってくれるので、名前（DNS名）でインターネットからアクセス可能になったりSSH接続やHTTPリクエストに便利になります。

### エンドポイントの設定
```config/routes.rb
Rails.application.routes.draw do
  get "up" => "rails/health#show", as: :rails_health_check
  #以下ルーティング省略
end
```
rails が用意しているhealthを使いました。

自分で、パス "/up" へHTTPでアクセスした時に、常にステータスコード 200 が返却されるようにエンドポイントを作成してもいいと思います。

また、下記のようにヘルスチェックのパスのルーティングを/upに設定します。

![スクリーンショット 2025-01-21 11.19.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792654/3b96ceae-dd43-0a81-2046-1fa69f5def65.png)


## 終わりに
ALB のヘルスチェックが通らない原因の一つとして、HTTP から HTTPS へのリダイレクトが挙げられます。しかし、config.force_ssl = false を設定すると、HTTPS へのリダイレクトが無効になるため、セキュリティの観点から、本番環境では ALB 側で HTTPS を処理するように設定し、アプリケーション側では適切なリダイレクトポリシーを設定することを推奨します。

プログラミング学習中の初学者です。
内容の誤りや他に良い方法があれば、コメント等で教えていただけると幸いです。


## 参考記事
[ALB のヘルスチェックが “Health checks failed with these codes:[XXX]” で失敗する原因と対処法を教えてください](https://dev.classmethod.jp/articles/tsnote-alb-healthcheck-failed-01/)
[VPC 「DNSホスト名」の有効化とは](https://qiita.com/satofujino/items/a8f3106dbd5557097ad6)
WhatsApp グループの連絡先を Excel ファイル形式でエクスポートするにはどうすればよいですか?

<p>WhatsApp グループの連絡先をエクスポートしてメンバーを Excel ファイルに送信しますか?この記事はあなたのためのものです。ここでは、連絡先を保存する利点と、グループ連絡先の Excel 転送テクニックの多くについて説明します。</p>
<p>&nbsp;</p>
<p>インターネットでは、さまざまなメッセージ システムが使用されています。その 1 つが WhatsApp です。これは、インスタント メッセージ、電話やビデオでの会話、メディア共有、グループ チャットが利用できる無料のメッセージングおよび通話ツールです。グループ チャット ツールを使用すると、友人、同僚、コミュニティ メンバーと簡単に集まることができます。</p>
<p>&nbsp;</p>
<p>WhatsApp は、ブランドプロモーションに役立つ多くのツールを企業に提供しています。ユーザーは顧客とやり取りするために会社グループを作成できます。これらのグループには、保存すべき貴重な連絡先が含まれています。 Excel はデータの保存、管理、分析に優れています。ここでは、WhatsApp グループのメンバーから連絡先を抽出するための手順を説明します。しかし、Excel の連絡先を取得して利益を得る前に、</p>
<p>&nbsp;</p>
<p><a target="_blank" rel="noopener noreferrer" href="https://www.wholeclear.com/downloads/wc.exe"><strong>今すぐダウンロード</strong></a></p>
<h2>WhatsApp グループのメンバーが Excel にエクスポートする必要があるのはなぜですか?</h2>
<p><br>WhatsApp の連絡先を Excel ファイルにエクスポートする必要がある理由をいくつか示します。</p>
<p>グループ メンバーの Excel シート データ ストレージにより、名前、役割、またはその他のフィールドのデータの管理、整理、または並べ替えが容易になります。<br>Excel ファイルは他のメンバーや他のデバイスに簡単に配布できます。<br>Excel ファイルの連絡先を使用すると、データを調べて開発戦略に関する意思決定を導くことができます。<br>重要な情報もバックアップしておく必要があります。<br>WhatsApp グループの連絡先を Excel に転送すると、いくつかの利点が得られます。ここで、連絡先を保存するためのテクニックについて説明します。</p>
<h2>ExcelでWhatsAppグループの連絡先ファイルを開く方法 -</h2>
<p>&nbsp;</p>
<p>Excel は CSV ファイルをサポートしているので、vCard ファイルがあればサポートされます。まず、VCF ファイルを CSV 形式に変換した後、Excel で開きます。これには、<strong>WholeClear </strong><a target="_blank" rel="noopener noreferrer" href="https://www.wholeclear.com/converter/vcf-to-csv/"><strong>VCF から CSV へのコンバーター</strong></a> を使用します。このプログラムを使用すると、他のアプリケーションから vCard ファイルにアクセスできます。</p>
<h3><br>WhatsAppグループメンバーをExcelファイルにエクスポートする手順</h3>
<p>&nbsp;</p>
<p>• VCF から CSV へのコンバーターをダウンロードします。<br>• vCard ファイルを選択し、「ファイルまたはフォルダーの参照」をクリックします。<br>• ここでファイルの場所を確認し、メールをプレビューします。<br>• 最初に「エクスポート」をクリックし、次に「CSV スタイル」をクリックします。<br>• 場所を閲覧した後で保存するには、[今すぐ変換] タブをクリックします。</p>
<h4>ついに -</h4>
<p>&nbsp;</p>
<p>この記事では、WhatsApp グループのメンバーを <a target="_blank" rel="noopener noreferrer" href="https://www.wholeclear.com/converter/excel-to-vcf/">Excel</a> ファイルにエクスポートする方法を説明します。ここでは、WhatsApp グループの連絡先を Excel ファイルに保存する必要がある理由を説明します。次に、ファイルをダウンロードするために適用できる 3 つのテクニックを紹介します。重要な連絡先を保存するために、2 つの手動オプションと 1 つの熟練したオプションが用意されています。</p>
ペットボトルは本体を回した方が開けやすい？

## はじめに

ペットボトルのキャップが開けにくいときに、キャップを回すよりも本体を回した方が開けやすいという意見がある。これは本当だろうか。

## 条件設定

ペットボトルを、半径が $ r_m $の円柱と半径が$r_c$の円柱を図のように結合したものだと考える。半径が$r_m$の方が本体、半径が$r_c$の方がキャップをモデル化したものである。
![image-20250204195714158.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2081212/34e44e21-8104-b663-3745-f11e6e55ea35.png)

キャップを開けようとするとき、キャップと本体を片手ずつでにぎり、回すことだけを考える。机に置いたり、器具を使わないものとする。

## 力のモーメントで考える

ペットボトルを開栓しようとするとき、角速度の時間変化は0と近似できるぐらいゆっくり開栓すると仮定する。この仮定より、物体にかかる力のモーメントの和が常に0だといえる。手がキャップに及ぼす力の合力のうち、キャップの接線方向の力を$F_c$とし、もう一方の手が本体に及ぼす力の合力のうち、本体の接線方向の力を$F_m$とする。

![image-20250204202222263.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2081212/a0ce80e9-3010-acfd-32be-a57354745224.png)

したがって、
$$
F_c r_c - F_m r_m = 0 
$$
が成り立ち、ペットボトルを開栓するときにはキャップにかける力のモーメントの大きさと、本体にかける力のモーメントの大きさが等しいことがわかる。これは、キャップを回そうとしたときも、本体を回そうとしたときも成り立つ。つまり、キャップを回そうとしているときにも、本体にはもう一方の手で同じだけの力のモーメントを及ぼさないといけない。逆に、本体を回そうとするときにも、キャップには同じだけの力のモーメントを及ぼさないといけない。

　キャップを回したときにキャップにかかる合力のうち接線方向の成分を$F_c$ 、キャップを回したときに本体にかかる合力のうち接線方向の成分を$F_m$ 、本体を回したときにキャップにかかる合力のうち接線方向の成分を$F'_c$ 、本体を回したときに本体にかかる合力のうち接線方向の成分を$F'_m$ とすると、
$$
F_c r_c = F_m r_m \\
F'_c r_c = F'_m r_m
$$
となる。
![image-20250204205022862.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2081212/d9b583d7-aa64-e519-bcba-45f9545c235f.png)


ペットボトルを開栓するのに必要な力のモーメントは、どちらを回すのかにはよらないので、
$$
F_c r_c = F_m r_m =F'_c r_c = F'_m r_m
$$
となる。キャップにかかる力のモーメントに注目すると、
$$
F_c r_c = F'_c r_c\\
F_c = F'_c
$$
となり、どちらを回してもキャップに及ぼす力の合力の接線成分の大きさは同じである。

## 結論

前節でキャップと本体どちらを回してもキャップには同じ大きさの力を及ぼさないといけないことが分かった。よって、ペットボトルを器具などを使わずに手だけで開栓する場合、本体を止めてキャップを回しても、キャップを止めて本体を回しても開けやすさは変わらないといえる。

## 感想

キャップを回すことも、本体を回すことも物理的に見れば等価じゃん。ノートに張り付いたシールをはがすときに、ノートからシールをはがすのに必要な力と、シールからノートはがすのに必要な力は、大きさとかによらず同じでしょう。
PMBOK原理・原則：ステークホルダーの関与

プロジェクトマネジメントについて、「ステークホルダーを巻き込む」の具体的な方法をまとめてみました。

4つのポイント：
✓ 関与レベルの分類をしっかり
✓ 相手に合わせた伝え方を選ぶ
✓ 早めのフィードバックを心がける
✓ 承認プロセスを明確に
ソフトウェア開発とインフラ構築の事例も含めています。
少しでも皆さんのプロジェクト運営のヒントになれば幸いです🔑

![マインドマップ (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/42011d58-43d8-d608-93b1-3e03f4515431.png)


## はじめに
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/9ee195ca-4ab2-83ec-29c9-3b5df5a5eab7.png)

プロジェクトマネジメントの現場で「ステークホルダーを巻き込むのが大事」とよく聞きますが、
実際にどのように関与させるのか、しっかり考えていますか？

本記事では、PMBOKの「ステークホルダーの関与」について、
その重要性と具体的な手法を分かりやすく解説します。

---

## ステークホルダーの関与とは？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/a673d8f7-c42a-3ac5-577d-4903c3e4a18b.png)

- **ステークホルダー**：プロジェクトに影響を受けたり与えたりする人・組織。
  - 例）顧客、上層部、開発チーム、運用チーム、取引先など。
- **関与（エンゲージメント）**：プロジェクトの進行状況を共有し、全員で合意形成を進めること。

PMBOKでは「ステークホルダーの関与がプロジェクト成功の鍵」と言われています。
理由は簡単で、**「後からの混乱を防ぐために、事前に認識を合わせておく」** ということです。

---

## ステークホルダー関与のメリット

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/6a11a4b6-41ce-9ae0-f6da-04068d99896b.png)

1. **期待値のズレを防ぐ**  
   - 「そんな話聞いてない！」を防ぐ。
2. **リスクを早期発見できる**  
   - 多様な視点でリスクを洗い出せる。
3. **柔軟な変更にも対応しやすい**  
   - 仕様変更があってもスムーズに調整できる。
4. **コミュニケーションロスが減る**  
   - 迅速な対応ができ、手戻りが少なくなる。

---

## ステークホルダーを巻き込む方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/f22362fc-eaf7-63bc-78cb-04acfe752c52.png)

### 1. ステークホルダーの洗い出し＆分析
- **影響度マトリクス**  
  「この人はガッツリ関与」「あの人は情報提供のみ」など、関与レベルを分類。

### 2. コミュニケーション計画
- ステークホルダーごとに最適な伝え方を決める。
  - 例）上層部にはスライド、開発チームにはチャットツール  

### 3. エンゲージメント戦略
- **ワークショップ・定例会**  
  ただの報告会ではなく、双方向のやり取りを増やす。
- **フィードバックループを素早く回す**  
  レビュー会を定期的に実施し、改善を重ねる。

### 4. 成果物のレビュー＆承認プロセス
- **「誰がどこでGOサインを出すか」** を明確にする。

---

## 具体例①：ソフトウェア開発プロジェクト

![software-development-example.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/4442f0ea-b169-52ec-117e-20c25ddaed67.png)

**背景**
- Webアプリ開発で「もっと使いやすく！」という要望があった。
- ステークホルダー：顧客、営業、UI/UXデザイナー、開発チームなど。

**取り組み**
- 要件定義ワークショップでユーザーの要望を明確化。
- スプリントごとにデモ＆フィードバックを実施。

**結果**
- 仕様変更がスムーズに対応でき、クレームが減少。

---

## 具体例②：インフラ構築プロジェクト

![infrastructure-example.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/5aeb6336-c80e-1acb-7b38-353f14e084cd.png)

**背景**
- データセンターのリニューアル。
- ステークホルダー：IT運用、設備管理、ベンダー、建設業者など。

**取り組み**
- リスク評価会議で課題を洗い出し、解決策を事前検討。
- 週次ミーティングで進捗・変更点を共有。

**結果**
- 事前準備のおかげでトラブルが最小限に抑えられた。

---

## まとめ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/52307e24-8c80-a3e0-23ff-3837e60cc428.png)

- ステークホルダー関与の目的は**「後の面倒を減らし、スムーズにプロジェクトを進めること」**。
- 具体的な方法として：
  - **関与レベルを分類する**
  - **適切なコミュニケーション方法を選ぶ**
  - **フィードバックを早めに取り入れる**
  - **承認プロセスを明確にする**

---

## 最後に
PMBOKで言われている「ステークホルダーの関与」は、プロジェクト成功の鍵。
みなさんの現場でも、ぜひ「巻き込む仕組み」を取り入れていけるといいですね。
【イベントレポート】広報・人事・エンジニア大集合！OST初心者のための交流会＆勉強会 #XRelationsの会

いつも記事を読んでいただきありがとうございます！
モブエンジニア（[@mob-engineer](https://qiita.com/mob_engineer))です！

今回は2025.02.04（火）に開催した**広報・人事・エンジニア大集合！OST初心者のための交流会＆勉強会**へ参加しましたので、アウトプットとしてイベントレポートを執筆しました。

初学者でもサクッと読めるように平易な表現で執筆しておりますので、お気軽に読んでいただければ幸いです。

:::note info
誤字脱字、分かりづらい表現に関しては極力なくすように心がけていますが、リアルタイムで執筆しているため、誤字脱字があるかもしれません
:::

#### イベントレポート

https://xrelations.connpass.com/event/341235/

# 目次
- 開始前
- OSTとは？
- まとめ

## 開始前

https://x.com/mob_engineer/status/1886716981392421013

https://x.com/mob_engineer/status/1886722181360730244

BitKeyさんの説明

https://x.com/mob_engineer/status/1886726478148337832

ビットキー凄すぎるのネタ

https://x.com/mob_engineer/status/1886726712995766678

## OSTとは

#### 説明資料

https://speakerdeck.com/takaking22/open-space-technology-introduction

- 進め方として1回目はお題、2回目・3回目は参加者から出していく
- OSTとは
    - 4つの原則に基づいて実践していく
    - 貢献できていなかったら自由に移っていい
- 役割
    - ホスト：セッションを提案した主催者
    - 参加者：話し合いに参加する人
    - ハチ：ハチのように媒介する人（いろんな話題を行き来する人）
    - 蝶：蝶のように転々と聞いていく人
    - キリンさんはNG
- いい感じで進めていこう
- パウリさん
    - ファシリテーション屋さん
- ファシリテーションとは
    - 人々の活動が容易にできるように支援し、うまくことが運ぶよう舵取りすること
    - 場のデザイン、対人関係、構造化、合意形成のスキルが必要
    - OSTでは場のデザイン・対人関係が達成できればいい
- 場のデザイン
    - 安心を作る意識
        - 4つの不安を排除して安心した意見交換を
        - 無知・無能・邪魔・否定的を無くしていく
        - 安心のレ牛ーレーションで話すハードルを下げる
        - チェックイン前に話すハードルを下げる
            - （個人的考察）凄く重要な考えですね
    - 目標共有
        - その会議に集まる人の目標を定める
        - 目標を実現するために以下を実現
            - このテーマに対してどのような期待を持っているのか
    - B○条件を用いたコミュニケーション
        - 相手の条件が達成できる場合を否定してコミュニケーションする
            - 採用は人数・コストをかければうまくいく
- まとめ
    - 応答の意義を知り、意見を出しやすい環境作り
    - 思いやりを感じる意見交換が出来る状態を作る

## まとめ

OSTについて初めて行ったのですが、すごく楽しかったです。感想についてはハッシュタグでまとめておりますので、そちらをご確認ください！！
最後まで読んで頂きありがとうございました！！
指定した値を返却するだけのモックプログラム

## 指定した値を返却するだけのモック
一応、Windows/Linux両方対応。

```bash:mock.c
#include <stdio.h>
#include <string.h>
#include <unistd.h>

#define SIZE 255

int main(int argc, char** argv){
    // init.
    int i;
    FILE *file;
    char configFilePath[ SIZE ];
    memset(configFilePath, 0, sizeof(configFilePath));

    // get String of Config-file path.
    char* dir_end=NULL;
    // linux case.
    dir_end = strrchr(argv[0], '/');
    if (dir_end == NULL){
        // windows case.
        dir_end = strrchr(argv[0], '\\');
        if (dir_end == NULL){
            return 1;
        }
    }
    strncpy(configFilePath, argv[0], (dir_end - argv[0])+1);
    strcat(configFilePath, "val.config");

    // file read.
    file = fopen(configFilePath, "r");
    fscanf(file, "%d", &i);
    fclose(file);
    sleep(1);
    printf("%d\n", i);
    return i;
}
```
【読書感想】学びを結果に変えるアウトプット大全

ランニングしながらAudibleで聴いた本の感想です。
本のまとめというより、自分が心に残ったことを3つだけ書いてます。
とりあえず思ったことをメモするのが大切と思い、なるべく30分以内で書き上げているので、内容は薄いです。

:::note warn
内容は個人の感想です。
この本に対する**評価が高い方は、以下の内容を読まないほうが良い**です。
:::

# 聞いた本

学びを結果に変えるアウトプット大全 (サンクチュアリ出版)
樺沢紫苑 (著)

# 心に残ったこと

## インプット:アウトプット＝3:7

この本では「アウトプットすること」の大切さが説かれていました。私も「試験対策は結局過去問をたくさんやることが大切」「ただ聞いているだけだと頭に入らないのでメモを取ることが大切」などは、ぼんやり認識していました。

そんな中、この本では**インプットとアウトプットの比率を3:7と明確に定義**していました。
具体的な数値について、私は過去にあまり聞いたことがなかったので、参考になりました。

## 合わない人がいる、ということ

この本を聞く時間のうち、80％以上の時間は以下のようなモヤモヤがありました。

- 随所に筆者のマウントがある。しかも尊敬に値しないようなマウントの取り方である。
- 主張・考えに論理性が乏しい。

聞いていればわかるのですが、筆者は随所で**マウント**を取ってきます。マウント自体は別にいいのですが、主張が**表面的で空虚**なものが多いです。

さらに、**主張・考えに論理性が乏しい箇所が多い**と、私は感じます。
例えば、「6時間睡眠が2週間続くと、1晩徹夜したあとと同じレベルに脳のパフォーマンスが低下する」という研究結果を引用し「6時間睡眠を続けた人は、**毎晩徹夜**していることと同じ」と述べている場面があります。
おそらく、6割くらいあっていれば「あっています」と断言してしまうタイプなのでしょう。すべての内容を丁寧に受け取る読者、考えながら読む人を想定していない、とも言えます。

このような人は、論理的な・ウィットに富んだような会話ができず、私は苦手です。ただ、この人を支持する人もいるのは事実です。
このようなモヤモヤを抱えるうちに、**自分は善い人たちに囲まれた、幸せな環境にいるんだな**という気付きがありました。

## やたら数字を主張する本は怪しい

一般的なビジネスの場面では、相手の時間を価値のあるものと考えます。その結果、なるべく短い内容で、簡潔に内容伝えることが常に求められます。私は、主張を分かりやすくするため、何かを並列に「○個あります」と紹介する場面では、なるべく**3個以下**にしています。
それは、10個くらい考えられるもののうち、内容をMECEに階層的にして、1つ1つの占める割合を考えて多数を部分を占める3つを絞り出すという作業を経て、3個以下になっています。

一方、この本では、「成長を加速させる80の方法」を紹介しています。また、随所で、「○○のコツ」として7つの内容などが挙げられています。

「〇〇のコツ100個」や「〇〇が9割」のような本は、数字による説得力を付けようとして、根拠のない数字をたいとるにまで持ち出しており、結果的に怪しい本の割合が高いのかなと思いました。

---

全体的には、パリッとした実用書というより、エッセイの要素が大半を占めていたなと感じた本でした。（個人的満足度１．５／３、一般的なおすすめ度２／３）
JOI 2024/2025 本選参加記

こんにちは、nouka28です。
2025年1月25日、2月2日に行われた JOI 2024/2025 本選に参加しました。
結果は 100-100-100-46-3 の 349 点で総合 11~15 位程度（多分）でした。

# Day1

- 講演会はすごい面白かったです
- もうJOI本選は3回目で、慣れたこともあり、プラクティスはスムーズに行うことができました
- チューター企画は、競プロの問題を絵で表し、相手がその絵と制約、サンプルケースを見て問題を解くみたいな感じでした。とても難しかった...僕たちのチームは3位（16チーム中）でした
- チューター企画が終わった後すぐに ARC191 (Div.2) に参加しました。久しぶりに橙perfを取れてうれしかったです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3512071/f0d580a0-9796-5906-17ca-cc4e23968bda.png)

# Day2

競技当日です。

競技が始まりました。(13:00:00)

Aを見ます。すぐにわからなくて困りますが、よく見ると $A,B$ を昇順に並べて後ろから取っていけばよいことに気づきます。(A AC 100点 13:09:47)

Bを見ます。$B$ の累積和 $S_i=B[0,i)\ の総和$ とすると地点 $i$ に体力 $x$ でいる場合、$x+S_j-S_i\geq A_j$ から $x-S_i\geq A_j-S_j$ を満たす必要があり、あとは $A_j-S_j$ のmaxを取ればよく、セグ木で解けることがわかります。書きますが、サンプルが合いません。よく見ると $j-1,j-2,\dots,1$ で倒すのかと誤読していましたが、そうではなく、$1,2,\dots,j-1$ で倒すと書いてありました、円環なので配列を2倍にすればよいです。(B AC 100点 13:23:23)

Cを見ます。しばらく見ると、条件を1を除くすべての頂点の入次数が正に言い換えられることに気づきます。$T[c]=(c\leq C_j\leq r$ の辺を使ったときすべての頂点の入次数が正となるような最小の $r)$ として、 $T[c]$ は尺取り法みたいなのりで優先キュー、セグ木を使って求まることがわかります。
ここまでの考察があってるか確かめるためにここの部分を実装して提出すると0点が返ってきます (C 0点　13:54:32) が、よく見るとデバッグ時の変数を出力してしまっていることに気づきます。直して提出すると無事30点が返ってきます。(C 30点 13:59:18)

$T$ が求まった後の $\min_i(\max(l-i,0)+\max(T[i]-r,0))$ を求めるパートは $T$ の単調性からセグ木を3本生やせばよいです。デバッグ時の変数を出力して1ペナしますが、無事ACします。(C AC 100点 14:26:07)

Cが去年よりは簡単だと感じ、ボーダーは300を超えると見積もりながらDを見ます。
しばらく考えると最適解においてネクタイの長さが等しいような人は存在しないので $N\leq 500,A_i\leq 15$ のbitdpがわかります。実装すると46点が返ってきます。(D 46点 14:58:58)

ここら辺から多分本選通ったかなあの安心感が出てきて集中力が切れ始めます。Dを1時間程度考察しますが、何もわからなかったため、Eを見て自明の3点を回収します。(E 3点 15:58:47)

Eを見て小課題2の貪欲っぽいものが思いつきますが、細かいところを詰められず実装できず、Dで嘘考察を生やしていたら競技が終了しました。

# 競技終了

結果は、100-100-100-46-3 の 349点でした。
最初の2時間で346点取った後、残りの2時間で3点しか取っていないのですが...
終了後みんなの点数をみて多分本選通ったかなと思いました。
解説終了後 AHC に出ましたが、集中できずすぐに撤退してしまいました。

# 今後

去年はCで誤読して233点で落ちたので、今年は行けそうでよかったです。
あと2か月JOIの精進を引き続き頑張っていきたいです。
DjangoにTailwindを導入しようとしてつまづいた

# はじめに
DjangoにTailwindを入れたくて下記のパッケージを導入しようとしたところ、途中でエラーが出たので、解決方法を残しておきます。

https://github.com/timonweb/django-tailwind

# 環境
![Static Badge](https://img.shields.io/badge/Window11-blue?style=flat)
![Static Badge](https://img.shields.io/badge/Python-3.10.5-blue?style=flat)
![Static Badge](https://img.shields.io/badge/Django-5.0.4-blue?style=flat)
![Static Badge](https://img.shields.io/badge/django--tailwind-3.8.0-blue?style=flat)

# 遭遇したエラー
## インストール手順
インストール手順

https://django-tailwind.readthedocs.io/en/latest/installation.html

上記のインストール手順の手順7実行時にエラーが出ました

## エラー内容

``` :コマンド
python manage.py tailwind install
```

```log:エラー内容
CommandError: 
It looks like node.js and/or npm is not installed or cannot be found.

Visit https://nodejs.org to download and install node.js for your system.

If you have npm installed and still getting this error message, set NPM_BIN_PATH variable in settings.py to match path of NPM executable in your system.

Example:
NPM_BIN_PATH = "/usr/local/bin/npm"
```

## 解決策
settings.pyに以下の1文を追加するだけでいいみたいです。
``` diff_python: settings.py
+ NPM_BIN_PATH = 'npm.cmd'
```

そもそも公式ページに、Windowsの場合はnpmのコマンドが`npm.cmd`を指している場合がある、と書いてありました...。

:point_down:このあたりに書いてありました。

https://django-tailwind.readthedocs.io/en/latest/installation.html#configuration-of-the-path-to-the-npm-executable

<details><summary>公式ページまで飛ぶのが面倒くさい人向け</summary>

:point_down:抜粋
>On Windows, you may have npm on $PATH but it’s npm.cmd rather than npm. (You can call it from the terminal because $PATHEXT contains .cmd.) If so, please override the default NPM_BIN_PATH = 'npm':

:point_down:翻訳
> Windowsでは、npm が $PATH に登録されていても、実際には npm.cmd である場合があります（これは $PATHEXT に .cmd が含まれているため、ターミナルから呼び出せます）。その場合は、デフォルトの NPM_BIN_PATH = 'npm' を上書きしてください。
</details>

# 参考にしたページ
- Githubのisse

https://github.com/timonweb/django-tailwind/issues/92
一人でやると身につかないからORACLE MASTER Silver DBA 2019の勉強ログをつける　1日目

## どうにも勉強が苦手すぎるのでログをつけてみる

ノートの代わりにログをつけることにしてみました。解釈とか間違ってたら教えてもらえると助かります。

### きほんのき
oracleはDBMS(Database Management System)の一つ。
DBMS→データベースの作成や利用するためのソフトウェアの総称。
DBMSの中でも、oracleのように表形式でデータを管理する方式をとるものをリレーショナルデータベース管理システム(RDBMS)と呼ぶ。
データの呼び出しにはSQLを使用する。

#### SQLの種類
**DML**→データ操作言語（INSERT,UPDATE,DELETE)
**DDL**→データ定義言語(CREATE,DROP,ALTER,TRUNCATE,GRANT,REVOKE)
データ検索(SELECT)
トランザクション制御(COMMIT,ROLLBACK)

書いていて意味が自分の中で結びつかなかったもの
ALTER→オブジェクトの定義変更
GRANT→権限の付与
REVOKE→権限の剥奪

**トランザクション**→Oracleで行うデータの変更の総称
トランザクションの開始はDMLの入力によって開始され、「COMMIT」の入力で終了する。

**セッション**→ユーザがOracleに接続している「論理的接続」のこと。
ユーザープロセス（クライアントプロセス？）からリスナーを経由させてサーバープロセスに接続要求を出し、サーバープロセスとユーザープロセスが接続される。その後ユーザープロセスから「ユーザ名」「パスワード」をサーバープロセスに送信。正しければログインが成功する。ログイン成功時点から「**セッションが確立された**」という状態になる。終了するときはEXIT。
物理接続は何かというと、「ユーザープロセス」と「サーバープロセス」の間の「通信経路」のこと。

Oracleへの接続方法
・ローカル接続：Oracleデータベースにネットワークを使用せず接続する方法。接続先はインスタンスSID
環境変数「ORACLE_SID」にインスタンスSIDを設定しておく必要がある。
DB名をローカル指定しているので＠を使用しての接続先指定はしない。
```sql
sqlplus username/password
```

・リモート接続：Oracleデータベースにネットワークを使用して接続する方法。接続先はDBサービス名
クライアントアプリケーション：SQL*Plus
接続先DB名：tnsnames.oraから取得する
```sql
sqlplus username/password@servicename
```

#### ORACLE_HOMEとOracleデータベースの関係
・いちORACLE_HOME：いちVersion
・いちデータベース：多ORACLE_HOME
・いちインスタンス：いちデータベースファイル（シングルインスタンス構成）
・多インスタンス：いちデータベース（RAC構成)
・いちインスタンス：CDB(マルチテナントコンテナDB)inPDB(プラガブルDB)(マルチテナントアーキテクチャ)

アーキテクチャってなんだ
→構造？みたいな感じらしい

今日はこの辺まで。
前から思ってたけど「基本の仕組み」からぶら下がる知識量がえぐい。でかい木みたいだ。
【資格試験】第二級陸上特殊無線技士を受験してみた

無線の資格である「第二級陸上特殊無線技士」に合格したので、体験記を書いておきます。

これから受ける人に少しでも参考になれば幸いです。

![第二級陸上特殊無線技士合格.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1299471/5181220d-d168-755b-458f-0ed57a7cb662.png)


# 「第二級陸上特殊無線技士」とは

　無線局の無線設備を操作するには無線従事者の資格が必要です。全部の無線施設が扱える無線免許もありますが、基本的には<b>陸上</b>、<b>海上</b>、<b>航空</b>の3系統に分かれて資格をとっていきます。
　無線機の操作には無線機を調整する「<b>技術操作</b>」と通信を行う「<b>通信操作</b>」の2つがあります。無線機の機能が高度になってきたので「通信操作」だけを行える資格を作ろう！としてできたのが”特殊”がついた無線資格です。
　今回自分は「<b>陸上</b>」の「<b>特殊</b>（通信操作だけ）」の「<b>二級</b>」の無線資格を受験しました。
　第二級陸上特殊無線技士は<u>講習会を受講</u>するか、<u>試験を受ける</u>かで取得することができます。自分は試験を受けてきました。ちなみに試験内容は以下のような感じです。

 - 試験形式：無線工学12問、法規12問（1問5点）　マークシート四択
 - 試験時間：1時間
 - 合格ライン：無線工学40点以上　法規40点以上
 - 受験料：5,600円

https://www.nichimu.or.jp/kshiken/index.html

# 受けようと思った動機

　会社で空撮用ドローンを飛ばしたりしてるんですが、もしかしたら業務用ドローンを飛ばすことがあるかもしれない…と思い受験することにしました。（業務用ドローンは陸上特殊無線技士の資格が必要）
　また、第二級陸上特殊無線技士の申込み方法がCBT方式になっていつでも受験できるようになったので勢いで申し込んでしまったというのもあります。

# 勉強方法
　勉強に使った本は「[やさしく学ぶ 第二級陸上特殊無線技士試験(改訂2版)](https://www.amazon.co.jp/dp/4274224570/)」と「[特殊無線技士問題・解答集 2024年版](https://www.amazon.co.jp/dp/4416623917)」の2冊を使いました。
 
<b>1. インプット</b>
　「[やさしく学ぶ 第二級陸上特殊無線技士試験(改訂2版)](https://www.amazon.co.jp/dp/4274224570/)」を2周読みました。（約9時間)

<b>2. アウトプット</b>
 「[特殊無線技士問題・解答集 2024年版](https://www.amazon.co.jp/dp/4416623917)」の第二級陸上特殊無線技士の部分だけ2周解きました。2周目に間違えた問題は付箋を付けて見直せるようにします。(約3時間)
　
<b>3. 総仕上げ</b>
 　1. 「[やさしく学ぶ 第二級陸上特殊無線技士試験(改訂2版)](https://www.amazon.co.jp/dp/4274224570/)」をざっと読み返す(2時間半)
 　2. 「[特殊無線技士問題・解答集 2024年版](https://www.amazon.co.jp/dp/4416623917)」の間違えた問題を中心に3周目を解く。(1時間弱)

<b>総勉強時間：約15時間半</b>

# 受けた感想
　合格率70～75％らしいので、ちゃんと勉強していれば落ちることはないと思います。自分が受けた試験も過去問とほぼ同じ問題ばかりでしたので、10分で解いて5分で見直しして、5分でもう一回見直しをして早期退出できました。
　勉強時間は15時間半かけてますが、頭の回転早い人だと勉強時間はもっと短くて合格できそうです。

# 最後に
　満点(120点)を取れたでしょ！！と思っていたら結果が110点だったため、合格したのになんかもにょってしまいました…。どこを間違えたのか切実に知りたい…(間違えた箇所は知らされない)。
　同じような難易度のアマチュア無線3級も受けたいと思っているので次はそちらに挑戦したいと思っています。両方のテキストを買ってざっと見ましたが、こちらのテキストを先に見てからアマチュア無線3級をしたほうが良さそうだなと個人的には思っています。
Simejiはどの程度入力文字を取得しているのか

:::note info
サーバー側で情報をどのように扱っているかは以下の公式記事に書いてあります。
https://simeji.me/blog/simeji_safety
:::

iPhoneの通信を解析すると、文字を入力するごとにURLエンコードされた文字データを送信していることがわかる。
少し調査しただけでも以下のことがわかった。

# 2文字以上入力された段階で送っている

1文字入力では送らない

例えば「いい」という文字列を入力した場合
GETリクエストのpyという変数にURLエンコードされた「いい」が格納されている。
![スクリーンショット 2025-02-04 19.55.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1790537/2feb757e-9c22-9721-ceca-90c39d6edbad.png)

「いいう」と連続で入力すると下記のようなリクエストが追って飛ぶ
実際、「いいう」になっている。
![スクリーンショット 2025-02-04 19.56.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1790537/5886f235-344b-3891-a695-23c7d1f3eecf.png)

ちなみに個人的に興味深いと思ったのだが、「ああ」「うう」と入力してもデータは送信されないが「いい」「ええ」「おお」ではデータが送信される。入力内容でどのようなバリデーションを行っているかはデコンパイルすればわかりそう。

# 英語（ローマ字）は送っていない

「It's a pen」
「I am fine」
「www」
などと入力したときの通信はなかった。

# 数字も送っていない
一般の数字や電話番号も送っていないことが確認できた。先の記事に「パスワード、クレジットカード番号その他の秘匿性の高い情報については、自動判別機能を用い、原則として取得しない扱いとしています。」とあるが実際に正しそう。

# 漢字も取得していない

例えば「いぬ」「ねこ」といったワードを入力すると、先のようにURLエンコードされたひらがなが送られているが、漢字に変換するタイミングでは送られていない。
Windows11 での VS Code + Git クイックセットアップマニュアル

## 1. 一括インストール（所要時間：約5-10分）

1. PowerShellを管理者として実行
   - Windowsキー + X を押して「Windows PowerShell (管理者)」を選択
   - または、スタートメニューで「PowerShell」を右クリックして「管理者として実行」

2. 以下のコマンドをコピーしてPowerShellに貼り付け、実行
```powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')); choco install vscode git -y
```

3. インストール完了まで待機
   - 複数のダウンロードとインストールが自動的に実行されます
   - 完了メッセージが表示されるまでお待ちください

## 2. GitHubアカウントの認証設定（所要時間：約2-3分）

1. VS Codeを起動

2. GitHubアカウントとの連携
   - 左下のアカウントアイコンをクリック
   - 「Backup and Sync Settings...」を選択
   - 「Sign in & Turn on」をクリック
   - ブラウザが自動的に開きます
   - GitHubの会社アカウントでログイン
   - 必要な権限を承認

## 3. プライベートリポジトリのクローン（所要時間：約2-3分）

1. VS Codeでリポジトリをクローン
   - `Ctrl + Shift + P` でコマンドパレットを開く
   - 「Git: Clone」と入力して選択
   - 「Clone from GitHub」を選択
   - リポジトリの一覧が表示されるので、目的のリポジトリを選択
   - 保存先フォルダを選択

2. クローン完了後
   - 「Open」をクリックして、クローンしたリポジトリを開く
   - 必要に応じて「信頼する」を選択

## トラブルシューティング

### インストール関連
- PowerShellでスクリプト実行エラーが出る場合
  → 管理者として実行しているか確認
- インストールが途中で止まる場合
  → PowerShellを再起動して再度実行

### GitHub認証関連
- ブラウザが開かない場合
  → VS Codeを再起動
- 認証が通らない場合
  → 会社アカウントの認証情報を確認

### クローン関連
- リポジトリが表示されない場合
  → Organization権限の確認が必要
- クローンに失敗する場合
  → ネットワーク接続を確認

## 補足事項
- インストールしたソフトウェアのバージョン更新は以下のコマンドで可能：
```powershell
choco upgrade all -y
```
- VS Codeの設定同期が有効になっているため、他のPCでも同じ設定が利用可能です
- プロキシ環境下では、社内のネットワーク設定が必要な場合があります
M5NanoC6、構造体のポインターで遊ぶ。


x 過去ログを見ょ!!!
x M5NanoC6での予定は、未定
x データ構造だからアルゴリズム

いろいろ　イラスト

てきとうに呼んでいる?

![o_coq791.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/5f05918e-f105-aaa6-1982-ce0efc5a4f77.jpeg)


トロン系の人が使う　主にアイコンの事


![o_coq792.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/6ebb560e-8592-cdf7-822c-209ea3ee76b4.jpeg)


いろいろ
ちょつとだけ、むずかしい。
難しそうだと、アクセスカウンターが回らない為に解説

目的
構造体のポインターの例題


プログラム
----

オンラインコンパイラ paiza

```c++


#include <iostream>
using namespace std;
int main(void){
    // Your code here!
    
    printf("START\n");
    
    struct {
        int HH; //時
        int MM; //分
    } TIMEs , *p;
    
    TIMEs.HH = 12;
    TIMEs.MM = 34;
    
    //構造体のポインターに実体のアドレスをわたす。
    p = &TIMEs; 
    
    printf("%d:%d\n",p->HH,p->MM);
    
}



```

```

START
12:34

```
【Swift】defer構文による実行の遅延

# この記事は何
[Swift Dcumentation](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/controlflow/#Deferred-Actions)より、`defer`ステートメントを解説する。

> Swiftを基礎から学ぶには
自著、工学社より発売中の「[まるごと分かるSwiftプログラミング](https://amzn.asia/d/7YPWJwl)」をお勧めします。変数、関数、フロー制御構文、データ構造はもちろん、構造体からクロージャ、エクステンション、プロトコル、クロージャまでを基礎からわかりやすく解説しています。
> また、Swiftプログラミングを基礎から動画で学びたい方には、Udemyコース「[今日からはじめるプログラミング](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwii1qTuj_2BAxV4hlYBHbj5BqEQFnoECBYQAQ&url=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fstart-programming-today%2F&usg=AOvVaw2vs4Sccq-bpfA4ZD2rCyNm&opi=89978449)」をお勧めします。

## 遅延ブロックを作成する

コードが実行されるかどうかを制御する`if`や実行の回数を制御する`while`などのフロー制御構文とは異なり、`defer`ステートメントはコードの実行を遅延します。
作成した遅延ブロックのコードは、プログラムが現在のスコープを終了したときに実行されます。

```swift: defer構文は実行を遅延する
var score = 1

if score < 10 {
    defer { print(score) }  // スコープ終了の直前に実行される
    score += 5
}
// Prints "6"
```

この例では、`if`ステートメントのボディを終了する直前に、`defer`ブロックのコードが実行されます。
まず、`if`ステートメントのコードが実行されて、スコアに`5`を加算します。
そして、`if`ステートメントのスコープを終了する直前に遅延ブロックが実行されて、スコアを出力します。

## 遅延ブロックの利点

プログラムがそのスコープをどのように終了（例えば、関数からの早期終了、`break`による`for`ループからの脱出、エラーのスローなど）しても、`defer`ブロックは実行されます。
この仕組みは、`defer`は開始と終了のペア・アクション（例えば、手動でのメモリ割り当てと解放、低レベルなファイル記述子による開閉、データベース・トランザクションの開始と終了など）が発生することを保証する必要がある操作で役立ちます。
開始と終了の両アクションを並べてコーディングできるからです。
次のコードは、コードのチャンク内で`100`を加算および減算することで、スコアに一時的なボーナスを与えます。

```swift: 加算と減算のペア・アクション
var score = 3

// スコアが100未満なら、一時的なボーナスを加算
if score < 100 {
    score += 100            // ボーナスを加算したら...
    defer { score -= 100 }  // 直後で、忘れずに減算を遅延しておく

    /* 以降の行では、ボーナスが加算されている */ 
    print(score)
}
/* ボーナスは解除されている */ 
print("Out of bonus; \(score)")

// Prints "103"
// Prints "Out of bonus; 3"
```

## 遅延ブロックの実行される順番

同じスコープに複数の遅延ブロックがある場合、先のブロックの方が後に実行されます。

```swift:遅延ブロックが複数あるコード
var score = 1

if score < 10 {
    defer { print(score) }            // 最初のdeferブロックは最後に実行される
    defer { print("The score is:") }  // 先に実行されるdeferブロック
    score += 5
}
// Prints "The score is:"
// Prints "6"
```

ランタイムエラーやクラッシュなどによってプログラムが停止した場合、遅延コードは実行されません。
ただし、遅延コードはエラーがスローされると実行されます。
エラー処理で遅延を使用する方法については、「[クリーンアップアクションの指定](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/errorhandling#Specifying-Cleanup-Actions)」を参照してください。
【ぼくのJavaScript備忘録】Attribute の使い方徹底解説

## 1. Attribute とは？

`Attribute`（属性）とは、HTML 要素に設定される情報のことで、例えば `id` や `class`、`src`、`alt` などが含まれます。JavaScript を使えば、要素の属性を取得・変更・削除することができます。

> **ポイント**：`setAttribute`、`getAttribute`、`removeAttribute` を使うと、属性を操作できる！

---

## 2. `getAttribute` で属性を取得

`getAttribute` を使うと、要素の指定した属性の値を取得できます。

### ☑️ 例1：画像の `src` を取得
```javascript
const img = document.getElementById("myImage");
console.log(img.getAttribute("src"));
```
> **ID `myImage` の `src` を取得**

### ☑️ 例2：カスタム属性（`data-*`）を取得※
```html
<button id="myButton" data-info="Taro">Click me</button>
```
```javascript
const button = document.getElementById("myButton");
console.log(button.getAttribute("data-info")); // "Taro"
```
> **ボタンの `data-info` 属性の値を取得**
※ただし、同じ操作をする場合、以下の方法の方が良いみたいです！
コメントでご指摘いただきました！ありがとうございます！

### 🔍 `dataset` を使ったカスタム属性の取得

カスタム属性（`data-*`）を取得する場合、`getAttribute` の代わりに `dataset` プロパティを使用することができます！


```javascript
const button = document.getElementById("myButton");
console.log(button.dataset.info); // "Taro"
```

> **dataset を使うと、カスタム属性の値を簡単に取得でき、getAttribute よりも直感的に扱える！**

>**メリット**
・シンプルで直感的な記述
・可読性が向上し、コードの意図が明確になる
・メンテナンスしやすく、データの追加・変更が簡単

### 🔗 参考リンク
より詳しい情報は、MDN Web Docs の公式ページをご覧ください。  
[MDN Web Docs - `dataset` の解説](https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/dataset)

---

## 3. `setAttribute` で属性を変更

`setAttribute` を使うと、要素の属性を変更または追加できます。

### ☑️ 例3：リンクの `href` を変更
```javascript
const link = document.getElementById("myLink");
link.setAttribute("href", "https://example.com");
```
> **ID `myLink` の `href` を `https://example.com` に変更**

### ☑️ 例4：画像の `alt` を追加
```javascript
const img = document.getElementById("myImage");
img.setAttribute("alt", "新しい説明文");
```
> **画像の `alt` 属性を追加・変更**

---

## 4. `removeAttribute` で属性を削除

`removeAttribute` を使うと、要素の属性を削除できます。

### ☑️ 例5：ボタンの `disabled` を削除
```javascript
const button = document.getElementById("submitBtn");
button.removeAttribute("disabled");
```
> **ボタンの `disabled` 属性を削除し、クリックできるようにする**

### ☑️ 例6：`class` を削除
```javascript
const div = document.getElementById("content");
div.removeAttribute("class");
```
> **`class` を削除してスタイルをリセット**

---

## 5. `hasAttribute` で属性の有無を確認

`hasAttribute` を使うと、特定の属性があるかどうかを確認できます。

### ☑️ 例7：要素に `hidden` 属性があるかチェック
```javascript
const section = document.getElementById("mySection");
if (section.hasAttribute("hidden")) {
    console.log("hidden 属性があります");
} else {
    console.log("hidden 属性がありません");
}
```
> **要素に `hidden` があるかどうかを判定**

---

## 6. まとめ

☑️ `getAttribute("属性名")` で属性の値を取得できる  
☑️ `setAttribute("属性名", "値")` で属性を変更または追加できる  
☑️ `removeAttribute("属性名")` で属性を削除できる  
☑️ `hasAttribute("属性名")` で属性の有無をチェックできる  

`Attribute` を活用して、HTML 要素を自在に操作しよう！
ParserScript使うな、UCCScriptを使え

:::note warn
現在、ParserScriptは非推奨です。UCCScriptを使ってください。
:::
ParserScript　GitHub：[ParserScript-3.0](https://github.com/MueLangDeveloper/ParserScript-Ver.3.0)
UCCScript（未実装機能あり）　GitHub：[UCCScript-UnderDevelopment](https://github.com/MueLangDeveloper/UCCScript-UnderDevelopment)
UCCScrip　GitHub：[UCCScript](https://github.com/MueLangDeveloper/UCCScript)

# ParserScriptの概要
　自作言語の構文解析を楽に作りたいという思いで作られ、作者（私）自身に見放されてしまった言語。
## メリット
　今までよりも簡単に書ける。まあまあ速い。
## デメリット
　計算ができない。保守性が悪すぎる。コードがめちゃくちゃ長くなる。動作が不安定。マッチングと結果を返すのがごちゃごちゃしていてよくつまづく。
# UCCScriptの概要
　ParserScriptをもっと良くしようと思いで作られた言語。ParserScriptは構文解析器を作るためだったが、UCCScriptはコンパイラを作る目的で作られた。
## メリット
　ParserScriptと比にならないくらい書きやすい。演算ができる。一般的な言語の制御構文がある。マッチングはBNF風に書ける。マッチングの部分と結果を返す部分が独立している。プロトタイプ（後、破棄）の結果を返す部分の`[]`内を、再帰を使って計算していたが、それを使わない方法に変えたため、ParserScriptに並ぶほど速い。比較的動作は安定している。
　
--追記
・非公開の最新のものはUCCScriptのプログラムとしてはそれぞれ独立していますが、二つの間を行き来できる（~~今は一方通行~~）機能の実装により、インタープリタ内は独立していません。
## デメリット
　ParserScriptで使えたC#の正規表現によるマッチングなどが行えない。文字列や真偽値をもつ変数を作れない。ParserScriptで使えた配列の変数が使えない。
# 終わりに
　UCCScriptを推奨していますが、ParserScriptしかできないことはないと思います（正規表現はコードで再現でき、（文字列の）変数は今後の実装次第で擬似的に再現できそう）。**絶対にUCCScriptを使ってください。**
Wordpress環境を進化させたい（構築編）

## はじめに
実際にALBをオリジンとするCloudFrontを作成してWordpressを配信する環境を構築しました。オリジン設定やRoute53のレコードで結構ハマってしまいました。



### システム構成
使用するAWSサービス
- CloudFront: ALBをオリジンとし、コンテンツのキャッシュと最適化
- ALB: EC2の負荷分散
- EC2 (WordPress Webサーバー): マルチAZ構成で配置
- RDS: マルチAZで配置
- Route 53: DNS管理、CloudFrontとの統合

### 構成図
![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812406/a2b0a509-fd5a-ed02-c5f1-c3307b07947a.png)


#### 前提
- WordPress環境の構築は完了していること
-  独自ドメインをRoute53に登録済みであること
-   ACMでCloudFront、ALBのそれぞれでSSL証明書を発行していること
- Route53のホストゾーンが作成済みで、ALBのAレコードが設定されているこ

### 手順
#### ALB の設定確認
- ALB が HTTPS (443) をリスニング しているか(セキュリティグループのインバウンドも確認)
- 証明書 (ACM) が適用 されているか
- ターゲットグループが EC2 (WordPress) と関連付けられているか
- ヘルスチェックが成功しているか
![スクリーンショット 2025-02-04 185156.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812406/ba83b074-a7f7-615c-1544-afaf5f37ccb0.png)
![スクリーンショット 2025-02-04 185246.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812406/e2e2d4ac-c0e4-5d89-9ba6-3b7acc7c3149.png)

#### Route53のDNS設定
##### 独自ドメインで設定したホストゾーンにて以下のレコードを作成
- Aレコード（エイリアス）を作成
- レコード名 → 独自ドメイン
- エイリアスターゲット → ALBのドメイン名を選択

#### CloudFront ディストリビューション作成
- オリジンドメイン → 独自ドメイン名(Route53でALBと紐付けているため)
- プロトコル → HTTPSのみ
![スクリーンショット 2025-02-04 190330.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812406/b21e6c3c-9088-2f53-417a-52acaae31fef.png)

--------------------
- ビヘイビア
- ビューワープロトコルポリシー→Redirect HTTP to HTTPS
- 許可された HTTP メソッド→GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
- キャッシュポリシー→CatchingDisabled
- オリジンリクエストポリシー→AllViewerExceptHostHeader
 ![スクリーンショット 2025-02-04 190307.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812406/402a86f0-b98f-1629-f745-818ca44ac6b9.png)
 ![スクリーンショット 2025-02-04 190404.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812406/1fa71413-fb49-185a-1a71-0ff3fb203554.png)
---------
- 代替ドメイン名→独自ドメイン名
- 証明書→us-east-1で発行した証明書
![スクリーンショット 2025-02-04 190439.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812406/752ea7ea-ce90-5cea-9438-e7fa073f8913.png)

### 確認
![スクリーンショット 2025-02-04 192353.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812406/fbb251aa-4839-a170-8b7a-df236455ed28.png)
curlの結果
X-Cache: Miss from cloudfront（キャッシュではなくオリジンの応答）
Via: 1.1 xxxxxxxxxxxxxxxxxx.cloudfront.net (CloudFront)

### 最後に
オリジンドメインの設定やRoute53のレコード、またホストゾーン作成時に自動で生成されるネームサーバーがドメイン登録されているネームサーバーと一致していなかったりなどが注意点として挙げられると思います。それを踏まえて次回は作成の際の注意点をまとめます。
量子誤り訂正ってなんですか？


## 量子誤り訂正とは

量子ビットの状態を保護し、計算の信頼性を確保するためのメカニズムです。
量子コンピューティングにおける重要な技術でです。

### 基本的な理解
* 量子ビットは非常に壊れやすく、環境との相互作用で簡単に状態が変化する
* 古典的なビットと異なり、単純なコピーができない（no-cloning定理）


### 量子誤り訂正とは
- 量子コンピュータを構成する量子ビット（qubits）には間違いが起こりやすく、修正しなければ計算が無駄になる可能性がある
- 対応策として、誤りを犯しやすい複数の量子ビットを「論理量子ビット」と呼ばれる改良された1つの量子ビットに統合し、計算に使用する
    - 論理量子ビットの量子ビットの数を増やせば、エラーを起こしにくくすることができる

**物理キュービットと論理キュービット**
- **物理キュービット**：実際のハードウェアとして存在する量子ビット。外部環境からのノイズや誤りの影響を受けやすく、不安定。

- **論理キュービット**：複数の物理キュービットを組み合わせて作られる、エラー訂正された理想的な量子ビット。一般的に1つの論理キュービットを作るには1,000個以上の物理キュービットが必要


### 代表的な誤り訂正コード
* **サーフェスコード**：2次元格子状に配置された量子ビットを使用
* **ステアンコード**：7つの量子ビットを使って1つの論理量子ビットを構成
* **ベーコン・ショアコード**：9つの量子ビットを使用する方式


### 現状の課題
* 多数の物理量子ビットが必要（オーバーヘッドが大きい）
* エラー訂正自体の操作による新たな誤りの導入
* エラー訂正の実装コスト
 * 1024ビット数の因数分解には
   * 2000論理キュービットが必要
   * Googleのアプローチでは300万物理キュービットが必要
   * 10^-6のエラー率でも1000回のエラーが予想される
* 物理量子ビットのエラー率を下げる必要性

## 近年の量子エラー訂正技術の前進

近年、量子コンピュータの量子エラー訂正技術の分野で大きな前進があった

2024年のMicrosoftとQuantinuumの論文。量子ビットの仮想化と呼ばれる技術を使ってエラーレートを低減する大きな進歩を遂げたと発表。論理量子ビットのエラーを物理量子ビットのエラーの800分の1にしたとした。

https://arxiv.org/html/2408.13687v1

## 2025年には何が起こりそう？？

* 新世代の超伝導量子ビット技術
* 量子誤り耐性を本質的に持つ新設計
* [Alice & Bob社](https://www.qcrjp.com/post/alice-bob-raise-e27-million)が2025年に実用デバイス発表を予定
* 光子の量子状態を直接利用
    * [Quantum Circuits Inc.](https://quantumcircuits.com/)が2025年に実証機公開予定
* NISQデバイスからの転換
     * ハイブリッドアルゴリズムの限界が明確化

# 用語まとめ

| カテゴリ | 用語 | 説明 |
|---------|------|------|
| アーキテクチャ | フォンノイマンアーキテクチャ | 記憶、演算、制御、入出力の機能を分離した計算機の基本設計 |
| アルゴリズム | ハイブリッドアルゴリズム | 古典コンピュータと量子コンピュータを組み合わせた計算手法 |
| エラー訂正 | キャットキュービット | 量子誤り耐性を本質的に持つように設計された量子ビット |
| エラー訂正 | クリフォードゲート | 量子エラー訂正で保護可能な基本的な量子ゲートのセット |
| エラー訂正 | サーフェスコード | 2次元格子構造を利用した量子エラー訂正手法 |
| エラー訂正 | トーラスコード | Kitaevが考案した、トーラス（ドーナツ）形状の位相的量子エラー訂正コード |
| エラー訂正 | ボゾニックコード | 光子の量子状態を直接利用したエラー訂正手法 |
| エラー訂正 | 魔法状態 | ノイズのある物理状態から生成される高品質な論理量子状態 |
| ゲート操作 | Toffoliゲート | 3量子ビットの制御NOTゲート。ユニバーサル量子計算に必要 |
| ゲート操作 | トランスバーサルゲート | エラーの伝播を最小限に抑える特殊な量子ゲート操作 |
| ゲート操作 | パリティチェック | 量子状態の偶奇性を確認するエラー検出手法 |
| ゲート操作 | z回転 | 量子状態のz軸周りの回転操作 |
| 性能指標 | NISQ | Noisy Intermediate-Scale Quantum（ノイズのある中規模量子コンピュータ） |
| 装置 | AlphaQubitデコーダー | DeepMindが開発した量子状態を解析するAIシステム |
| 装置 | デュアルレールキュービット | 二重の量子状態経路を持つ新型の量子ビット設計 |
| 物理現象 | 位相反転 | 量子状態の波動関数の符号が反転するエラー |
| 物理現象 | ビット反転 | 0と1の状態が入れ替わるエラー |
【ぼくのJavaScript備忘録】アロー関数 の使い方徹底解説

## 1. アロー関数とは？

アロー関数（Arrow Function）は、JavaScript ES6 で導入された関数の記法で、 従来の `function` キーワードを使った記述より **短く、直感的** に書けるのが特徴です。

```javascript
// 従来の関数記法
function add(a, b) {
    return a + b;
}

// アロー関数記法
const add = (a, b) => a + b;
```

> **ポイント**：`=>`（アロー）を使って関数を定義する。

---

## 2. アロー関数の基本構文

```javascript
const 関数名 = (引数1, 引数2, ...) => 式;
```

### ☑️ 例1：通常のアロー関数

```javascript
const greet = (name) => `こんにちは、${name}！`;
console.log(greet("太郎")); // 出力: こんにちは、太郎！
```

---

## 3. 引数の扱い

### ☑️ 例2：引数が1つの場合、`()` を省略できる

```javascript
const square = x => x * x;
console.log(square(4)); // 出力: 16
```

### ☑️ 例3：引数が複数ある場合、`()` が必要

```javascript
const multiply = (a, b) => a * b;
console.log(multiply(3, 5)); // 出力: 15
```

---

## 4. ブロック構文と `{}` の省略ルール

### ☑️ 例4：複数の文を処理する場合、 `{}` を使用し、`return` を明示的に記述する必要がある。

```javascript
const addAndLog = (a, b) => {
    const sum = a + b;
    console.log(`合計: ${sum}`);
    return sum;
};
console.log(addAndLog(3, 7));
```

### ☑️ 例5：単一の式では `{}` と `return` を省略可能

```javascript
const add = (a, b) => a + b;
console.log(add(3, 7));
```

> **`{}` を省略できる条件**：関数の処理が **1行かどうかではなく、単一の式であること**。
> **`{}`** を使うと **ブロック文** になるため、**`return`** を明示的に書く必要がある。

### ☑️ 例6：オブジェクトを返す場合の注意

```javascript
const getUser = () => {
   return { name: "太郎", age: 25 };
};
console.log(getUser());
```

> **オブジェクトを返す場合、`{}` を使うとブロック扱いになるため `return` が必要だが、 `()` で囲めば `return` を省略できる。**

```javascript
const getUser = () => ({ name: "太郎", age: 25 });
console.log(getUser());
```

---

## 5. `this` の挙動

アロー関数の最大の特徴のひとつは、`this` のバインドが変わらないことです。

### ☑️ 例7：`this` の挙動（通常の関数）

```javascript
function Person(name) {
    this.name = name;
    this.sayHello = function() {
        setTimeout(function() {
            console.log(`こんにちは、${this.name}！`);
        }, 1000);
    };
}

const person = new Person("太郎");
person.sayHello(); // `this.name` が `undefined` になる
```

> **理由**：`setTimeout` 内の `function` は **新しい `this` を持つため**。

### ☑️ 例8：アロー関数を使った場合

```javascript
function Person(name) {
    this.name = name;
    this.sayHello = function() {
        setTimeout(() => {
            console.log(`こんにちは、${this.name}！`);
        }, 1000);
    };
}

const person = new Person("太郎");
person.sayHello(); // 正しく「こんにちは、太郎！」と表示される
```

> **ポイント**：アロー関数は **外側の `this` を継承** するため、意図した動作になる。

---

## 6. まとめ

☑️ アロー関数は `=>` を使って定義できる  
☑️ `()` の省略が可能（引数1つのとき）  
☑️ `{}` を使うと複数行の処理が可能  
☑️ `this` の挙動が通常の関数と異なり、外側の `this` を引き継ぐ  
☑️ オブジェクトを返す場合、`()` で括ると `return` を省略できる 

アロー関数を使いこなして、シンプルで可読性の高いコードを書こう！