OmniAICreator/Qiita-1.07M huggingface dataset:
Brainでlinux(その3)-vimの設定

初期のままだとvimは使いにくいため設定を変えて自分仕様にする。
色の定義は色々試した結果、breezyを使用。

# 1. カラー定義ファイルの準備
### 1.1 gitのインストール
~~~
sudo apt install git
~~~

### 1.2 ディレクトリ作成
~~~
mkdir -p ~/.vim/colors
~~~

### 1.3 breezyのダウンロード
~~~
git clone https://github.com/fneu/breezy
~~~

### 1.4 ファイルコピー
~~~
co ./breezy/colors/breezy.vim ~/.vim/colors/.
~~~
./breezyは消しても良い。

# 2.設定ファイルの編集
~~~
vi ~/.vimrc
~~~

下記を追加
カーソルのある列をハイライトにすると、もっさりとした動作になる。
~~~
"===== 表示設定 =====
set number "行番号の表示
set list "タブ、空白、改行を可視化
set title "編集中ファイル名の表示
set visualbell t_vb= "ビープ音を視覚表示
set laststatus=2 "ステータスを表示
set ruler "カーソル位置を表示
set ambiwidth=double "○や□などの文字が重ならないようにする
syntax on "コードに色をつける
"set background=light
set background=dark
set termguicolors " if you want to run vim in a terminal
colorscheme breezy
set cursorline "カーソルがある行を強調表示↲
"set cursorcolumn "カーソルが列を強調表示↲

"===== 文字、カーソル設定 =====
set fenc=utf-8 "文字コードを指定
set whichwrap=b,s,h,l,<,>,[,],~ "行頭、行末で行のカーソル移動を可能にする
set backspace=indent,eol,start "バックスペースでの行移動を可能にする
set listchars=tab:▸\ ,eol:↲,extends:❯,precedes:❮ "不可視文字の指定
set expandtab "タブをスペースに変換する
set autoindent "自動インデント
set smartindent "オートインデント
set virtualedit=onemore "カーソルを行末の一つ先まで移動可能にする
set tabstop=4 "インデントをスペース4つ分に設定

"===== モードによってカーソルを変更 =====
let &t_ti.="\e[1 q"
let &t_SI.="\e[5 q"
let &t_EI.="\e[1 q"
let &t_te.="\e[0 q"

"===== 検索設定 =====
set ignorecase "大文字、小文字の区別をしない
set smartcase "大文字が含まれている場合は区別する
set wrapscan "検索時に最後まで行ったら最初に戻る
set hlsearch "検索した文字を強調
set incsearch "インクリメンタルサーチを有効にする

"入力モード時にcontrolキーを押しながら、h,j,k,lでカーソル移動
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-h> <Left>
inoremap <C-l> <Right>

"jキーを二度押しでESCキー
inoremap <silent> jj <Esc>
inoremap <silent> っj <ESC>

"===== その他 =====
"履歴を100件保存
set history=100
set clipboard+=unnamed "コピーしたときはクリップボードを使用
set nobackup "バックアップファイルを作らない
set noswapfile "スワップファイルを作らない
set autoread "編集中のファイルが変更されたら、自動的に読み込み直す
~~~

# 3. 次回予告
ターミナルの変更
ChatGPTで英語のビジネスチャット練習！

### はじめに
人っぽいチャットが返ってくるChatGPTには、人のふりをさせるのが1番良いんじゃないかと感じています。
ということで、英語でのビジネスチャットの練習相手としてChatGPTを活用する方法を紹介します。
個人的には電車通勤中に黙々とトレーニングできる点が気に入っています。

<br/>

### プロンプト紹介
このプロンプトを入力すれば、様々な”本当に起こりそうな”状況でチャットの相手をさせられます。
ただ相手させられるだけでなく、自分が入力した英文の修正箇所とその理由の説明を受けられます。
ちなみに、このプロンプトは偉大なる[こちら](https://thepast.jp/blog/the-ultimate-guide-for-using-chatgpt-for-english-learning/#%E8%8B%B1%E4%BC%9A%E8%A9%B1%E3%83%81%E3%83%A3%E3%83%83%E3%83%88)の記事を一部変更して作りました。
```
# Instructions
You are a businessperson working as a senior engineer for an American SaaS company.
Please chat with me under the following constraints.
    
#Constraints
I am a colleague working in the same company.
You choose the topic.
We will take turns writing one or two sentences each.
If there are any grammatical errors in my sentences, please correct them at the end of the message. Also, please explain in Japanese why the correction is necessary.
```

<br/>

### 実例紹介
このプロンプトを入力して実際に行ったチャットをひとつ紹介します。
見やすさを優先して改行は記事執筆時に追加しています。

まずは、改めてプロンプト（↓）
```
# Instructions
You are a businessperson working as a senior engineer for an American SaaS company.
Please chat with me under the following constraints.

#Constraints
I am a colleague working in the same company.
You choose the topic.
We will take turns writing one or two sentences each.
If there are any grammatical errors in my sentences,  
please correct them at the end of the message.  
Also, please explain in Japanese why the correction is necessary.
```
次に、ChatGPTからの返答（↓）
```
Hey! I was thinking about our upcoming project with the machine learning integration.  
How do you feel about the current timeline for implementation?  

(Your sentences were grammatically correct, so there's no need for corrections.  
現在の文に文法的な誤りはありませんので、修正の必要はありません。)
```
続いて私の返答（↓）
```
hey! I think that it's too slow because our competitor is developing some new features that is similar with ours.
```
続いてChatGPTの返答（↓）
```
That's a valid concern.  
We should consider accelerating our timeline to stay competitive.  
What do you think about organizing a team meeting to discuss this?

(Your sentence should be corrected to:  
"...our competitor is developing some new features that are similar to ours."  
The verb "is" should be "are" to agree with the plural subject "features,"  
and "with" should be "to" for the correct preposition in this context.  
日本語での説明：「is」は複数形の主語「features」に合わせて「are」に、  
そして前置詞「with」はこの文脈では「to」が適切です。)
```
:::note info
文法的な誤りが指摘された上に、改善案も提案されています。
:::

<br/>


上記のプロンプトでは同僚としてチャット相手になることを指示しましたが、
こんな指示をプロンプトの　#Constraints　に追加することも可能です。
```
You are my boss.
You are a very demanding boss at work.
```
ただし、厳しい上司としてチャット相手になるように指示しても、あまり厳しい対応はしてもらえませんでした。

<br/>

### 参考文献
前述しましたが、このページを参考にプロンプトを作りました。

https://thepast.jp/blog/the-ultimate-guide-for-using-chatgpt-for-english-learning/#%E8%8B%B1%E8%AA%9E%E5%AD%A6%E7%BF%92%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8BChatGPT%E3%81%AE%E6%B4%BB%E7%94%A8%E9%A0%98%E5%9F%9F

<br/>

### おわりに
楽しく便利なChatGPT。今年は1年を通してよく使いました。  
他にも個人的に気に入っている使い方を紹介する記事を書いてみようと思っています。
Physics Lab. 2024

## 挨拶
![IMG_0322.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001382/2311f3c1-68c0-5a01-3bb5-ced335c7bf40.png)
はじめまして。Physics Lab. 2024の統括を務めることになりました、東京大学理学部物理学科[^1]３年のSℏunです。よろしくお願いします。

理物では例年「Physics Lab.」という名前で五月祭に出展していて、ここ数年はアドベントカレンダーも書いています[^2]。Physics Lab. のアドベントカレンダーでは、物理の話を中心に、学科の生活についての話やその他趣味についてなどを理物有志が書いていきます。きっと面白い記事もあるはずなので、楽しみにしていてください。

まず初日はPhysics Lab.の紹介をします。

## Physics Lab. とは？
Physics Lab. は理学部物理学科学生有志[^3]による団体（？）で、普段の活動としてはいくつかの班に分かれて自主ゼミを行い、そこで学んだことやそれとは全く関係のないことなどを五月祭で発表しています。

理物では伝統的に自主ゼミが盛んで、講義では通常扱われないようなマニアックな内容や高度な内容をを含めて、学科の友人と交流しながら学ぶことができます。もちろん自主ゼミは一人ではできないので、誰かと一緒にやる必要があります。Physics Lab.として自主ゼミを多数開催することで、進振り[^4]以前は自主ゼミをした経験がないひとや、積極的にコミュニケーションを取るのが苦手な人でも気軽に自主ゼミが始められるようになっていると思います。

五月祭で出展する内容としては、ポスター発表・解説 pdf 作成・演示実験・学生講演などを行っています。以前はポスター発表や演示実験が中心でしたが、コロナ禍で五月祭の対面開催ができなかった中でオンラインでも見れる解説 pdf 作成に力が入れられるようになり、100pを超える大部のもの[^5]も作られるようになりました。去年・一昨年と徐々に対面開催に戻っていく中で演示実験や学生講演が復活した一方で解説 pdf の作成も継続されています。

## Physics Lab. 2024
Physics Lab. 2024では「量子班」・「統計物理班」・「宇宙班」・「数理物理班」・「計算物理班」の５班が立ちました。来年も例年通り五月祭に出展する予定ですので、お楽しみに。


[^1]:以下理物
[^2]:https://event.phys.s.u-tokyo.ac.jp/physlab2023/advent-calendar/, https://event.phys.s.u-tokyo.ac.jp/physlab2022/advent-calendar/, https://event.phys.s.u-tokyo.ac.jp/physlab2021/advent-calendar/
[^3]:他学科の学生が自主ゼミに参加することもあります。
[^4]:東大では入学後に進振り（正式名称：進学選択）によって進学する学部学科が決まります。
[^5]:https://event.phys.s.u-tokyo.ac.jp/physlab2023/groups/mathematical-physics/
組織のクラウドガバナンスを整えるための取組

# はじめに
僕が今の会社に入ってから、最も時間を割いて取り組んできたのがガバナンスの統一です。
入社前までは、インフラエンジニアが不在で、プロダクトごとに開発チームが組まれ、各々のルールで環境が構築されてきたため色々とポリシーがバラバラだったというような状況でした。
これを地道に、カイゼンしてきた取組についてご紹介します。

# やったこと
おおよそ2年ほどかけて実施してきた内容は時系列順に以下のとおりです。

- リソースの棚卸し + 命名規則の統一
- インフラ基本設計書の作成
- AWS利用ガイドブックの作成
- CDKのモジュール化
- Slackへのガイドブック違反通知の自動化

## リソースの棚卸し + 命名規則の統一
まずは、現状把握が必要です。

リソースを棚卸しして、それぞれの目的や誰が管理しているか？を明確化しました。
中には、古のリソースでもはや誰が管理しているのか？なんのためのリソースかも分からないということもありました。
所在不明なリソースがあることが分かったことだけでも大きな収穫だったと思います。

実際、この活動によって不要リソースを削除したり、スペックの適正化を行ったおかげでAWS利用料はおおよそ20%削減することもできました。

## インフラ基本設計書の作成
システムは多々あれど、インフラ自身の要件はさほど変わりません。
例えばで言えば、

- サーバレスサービスを採用する
- インターネットとの通信は双方向暗号化する。AWS内部は非暗号化を許容する
- 命名規則はこうする
- ログは◯ヶ月間保存する
- IaCを採用して、デプロイサーバは統一する

などなど。
これらを全11章のインフラ基本設計書として準備し、これらを満たしていることを設計要件としています。
これで、新しく構築されるシステムや機能に関してはガバナンスを統一することができました。
既存のシステムに対しては、是正するために莫大な開発費がかかることもありますので、可能な限りは是正できましたがコスパも重視しつつ、対応しない選択もしています。

## AWS利用ガイドブックの作成
インフラ基本設計書だけではカバーできない部分。
例えば、

- LambdaとECSの使い分けのようなサービス選定のユースケース
- RDSはリーダーインスタンスは横方向で拡縮、ライターインスタンスは縦方向の拡縮のようなサービス固有の設計方針や注意点

このあたりを、「AWSサービス利用」「コスト最適化」「セキュリティ」「テスト」「インシデント」の5分野に分けてガイドブックを作成しました。
相当なボリュームがありますが、一通り読めばきっとSAAは取れるんじゃないかな？というようなレベルを目指して作っています。

開発ベンダさんにもお渡ししているので、サービス利用に関する認識齟齬は発生しづらくなっているものの、読み物としてボリュームが大きいのではじめの理解にかかる学習コストは確実に上がっています。
準備８割という言葉もある通り、この学習コストが後々の運用を楽にすることに繋がっていると信じているので、このコスト増加は許容しています。

## CDKのモジュール化
これは、過去に僕が投稿した記事を参照してもらえれば背景などはわかるかなと思います。

https://qiita.com/luton-mr/items/afe70781807bf3b5016a

誰がCDKのコードを書いても、インフラ基本設計書などを最悪読んでいなかったとしてもルールに従うことができるような仕組みを作ろうと思いモジュール化をしています。
IaC自体、なかなかハードルが高いと感じている人も多いのが事実ですし、これまでCloudFormationを使ってたのでCDKを触ることもしんどい、みたいな声が社内でも聞こえてきます。これはベンダさん含めて。
まぁ、でも僕がコードを書けば済みますし、Cfnのコードを書くよりも、もっと言えばCDKのコードを１から書くよりも圧倒的にコーディングスピードは出ているので十分にメリットがあると思っています。

## Slackへのガイドブック違反通知の自動化
色々自動化されるのは良いのだけれど、何が間違っていたの？どう設定すべきなの？が認知されないと意味がありません。
なので、以下のことをやりました。

- ConfigやSecurity Hubなどでガイドブックに従ったルールを策定しておく
- 違反したリソースがあれば、その内容をSlackの特定チャンネルへ通知する（修復はあえてしない）

この「修復はあえてしない」ことがポイントです。
もちろん、セキュリティ的に重大な脆弱性を生むようなものは修復の自動化まで検討すべきであるとは思うものの、まずは自分たちがルールを守れていないことを認識しなければスタート地点にも立てません。
なので、あえて、自動修復はさせないこととしています。

# さいごに
以上のような取組を行ってきた結果、おおよそ僕の役割は設計内容のレビューやSlack通知があった場合の開発チームサポートが主になってきました。
これにより、例えば日々のAWS利用料をTableauで可視化したい！とか、Well-Archtected Frameworkの遵守度を確認して、遵守できていない部分は対応していきたい、などインフラエンジニアとしてやっていきたい業務に集中できる環境ができつつあります。

引き続き、よりよいクラウド環境を継続して構築・運用できるように頑張って取り組んでいきたいと思います。
面談で変顔バレないようにGoogle Vision APIとGoCV使ってみた

# はじめに

こんにちは！プラットフォームエンジニア・バックエンドエンジニアビクトルです。

本記事はHRBrain Advent Calendar 2023の24日目の記事です。

https://qiita.com/advent-calendar/2023/hrbrain

明日クリスマスですね！🎄🤶

ところで。。。あなた！面接中で、緊張して、自分の表情が気になっていますか？

それとも面接官で、候補者がどんな顔をしているのか確認したいですか？

多分変な質問ですが、時々自分も気になっている。

まず、注意することを発表したいと思います。

:::note warn
このアプリケーションはコンセプトのPoCです。
:::

この間 ChatGPTとWebSocketsでダイエット相談アプリを作りました。

https://qiita.com/ervitis/items/4432a32ca4770c89ac35

今回GoCVとGoogle Vision APIでwebアプリを作成しましょう。

https://github.com/hybridgroup/gocv

https://cloud.google.com/vision/docs?hl=ja

# Google APIsを準備

![prepare-all-apis](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961977/0ad7362e-3f5a-4d19-f5ba-009f8ccaa97a.png)

1. まず、Google Cloud Platformで[サービスアカウントを作成](https://cloud.google.com/iam/docs/service-account-overview?hl=ja)。ロール権限を追加しなくて大丈夫です
    a. APIの使いすぎが起こるかもしれないのでクオータを決定してください 
2. [Google Vision API](https://console.cloud.google.com/flows/enableapi?apiid=vision.googleapis.com)を有効
3. サービスアカウントのJSONキーファイルをダウンロードしてアプリの環境変数設定します
    ```
    export GOOGLE_APPLICATION_CREDENTIALS=/JSON/key/file
    ```

# コードとライブラリと環境を設定

1. GoCVはOpenCVのラッパーです。GoCVの[インストールページ](https://github.com/hybridgroup/gocv/tree/release#how-to-install)ご覧ください
2. GitHubからリポジトリをクローンして

    ```bash
    git clone https://github.com/ervitis/gomendan-assistant
    ```

3. Makefileのコマンドを実行するだけ

    ```bash
    make run
    ```

:::note warn
`GOOGLE_APPLICATION_CREDENTIALS`環境変数設定を忘れないでください
:::

# Show me the code!

WebCamと連携で顔モデルを使って自分たちの顔を取ります。

```go
// 0はカメラIDです
webcam, err := gocv.OpenVideoCapture(0)
if err != nil {
	fmt.Printf("Error capturing data from device: %v\n", err)
	return
}

img := gocv.NewMat()
classifier := gocv.NewCascadeClassifier()
// 顔モデルをロード
if !classifier.Load("./data/haarcascade_frontalface_default.xml") {
	fmt.Printf("Error reading file")
	return
}
```

GoCVライブラリ作成した人から`stream server`のライブラリも使います。

```go
stream := mjpeg.NewStream()

// タイム設定は自由に
// 今回あまりリクエストを叩きたくないので500msでしました
stream.FrameInterval = 500 * time.Millisecond
```

# 顔検出

ラッパーで実装しました。

```go
features := make([]*visionv2.Feature, 1)
features[0] = &visionv2.Feature{
	MaxResults: 1,
	Type:       visionv2.Feature_FACE_DETECTION,
	Model:      "builtin/stable",
}

...

annotations, err := c.gc.BatchAnnotateImages(ctx, &visionv2.BatchAnnotateImagesRequest{
	Requests: c.reqs,
})
if err != nil {
	return nil, err
}
```

詳しくはここです。

https://github.com/ervitis/gomendan-assistant/blob/master/pkg/machine_learning/google_vision/api.go

結果は。。。

![ビクの変顔](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961977/f63e050a-7011-c6f9-364f-5422bb69ac93.gif)


GitHubのリポジトリコードはこちらです。

https://github.com/ervitis/gomendan-assistant/tree/master

# 参考

- GoCV: https://github.com/hybridgroup/gocv
- Google Vision API資料
    - https://cloud.google.com/vision/docs?hl=ja
    - https://pkg.go.dev/cloud.google.com/go/vision/v2/apiv1

# 最後に

もしGoCV気になりましたらこのビデオをご覧ください

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

株式会社HRBrainでは新しいメンバーを募集しています。
仲間になりましょう〜

https://www.hrbrain.co.jp/recruit
NJSS事業部のエンジニアの行動指針を変更しました。

# はじめに
株式会社うるるに入社して半年が経ち、この機会に初めてのエントリーを行います。
ぼくはNJSS事業部の開発部に所属しています。
この開発部には、 **N-Dev Spirits** というエンジニアの行動指針がありました。
今回は、それを変更した話を執筆していきます。

# 旧 N-Dev Spirits について
ぼくが入社した時に掲げられていた行動指針は次のようなものでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630048/8a08d879-58c4-e02c-139f-438c36ff4fe1.png)

この行動指針が作成されたタイミングでの大きな課題はチームビルディングでした。
サービスが軌道に乗り始め、個人開発よりもチーム開発を進めていかなければならないというタイミングだったためです。
作成は当時のメンバー全員に案を出してもらい、意図統一を図りながら作成しています。

社の広報記事にも投稿がされているので、詳しく知りたい方はぜひ一読ください。

https://www.wantedly.com/companies/uluru/post_articles/173099

# 変更した N-Dev Spirits
では、早速ですが、今回変更をおこなった N-Dev Spirits を見ていただきましょう。

![1701243457174-78dc1842-3964-4eeb-b598-e50cb69a9c80_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630048/1bbd7d15-d28f-de02-50eb-a8b36a4e01a5.jpeg)

今回作成した行動指針は、作成する時にアウトプットを意識するようにしています。
また、それぞれの主文はうるるらしさというのを意識しています。
下記のページはうるるらしさのページです。
その中にある **うるるスピリット** をかなり意識した内容になっております。

https://www.uluru.biz/our_policy

わかりやすい一例ですが、最上段に置いてある 「**ユーザーに最大のおもてなしを**」 は、うるるスピリットの 「**相手の期待を超える「おもてなし」**」 を意識しています。
言葉を近しいものを使用することで、うるるの中の事業部のものだとわかりやすくなるように意識をしています。

# 作成のプロセス
### 変更のきっかけ
サービスを運用していく過程で色々と課題はできてくるものだと思います。
NJSS 開発部の課題としてはサービス運用における優先順位の決定でした。
あるあるなのですが、不具合などが発生した場合に、稼働に大きく影響がないとわかった場合、不具合はかなりの確率で放置されてしまいます。
NJSS でも例外なくこの事象が起きていました。
それを繰り返しているうちに本当は対応をしないといけないものがその中に紛れてしまい、後々に大きな問題になってしまうことがあります。

そのような話をリーダーたちと話した時に、考え方と行動を変えなければならないという話になりました。
それをどういうふうに決めて実行していくことに繋げていくかとなったときに出てきたのが行動指針でした。
時期的にもチームビルディングよりもプロダクトを届けることに注力した方が良いとの結論になり変更することになりました。

### 話し合い
旧 N-Dev Spirits は当時メンバー全員で話し合いをして決めたのですが、新しい N-Dev Spirits はまずリーダーたちに案を出してもらいました。
プロダクトやチームを牽引していくのはリーダーですので、どんなことを考えてこれからを作っていくのかを出してもらいました。

リーダーたちにある程度出してもらった後にメンバーにも意見を聞きました。
旧 N-Dev Spirits は、web会議の背面に設定するほど親しまれてきたものでしたので、反発を喰らうかもしれないと思っていたのですが、そんなことはなく、皆前向きにリーダーたちの出した案にフィードバックをしてくれました。

そうした過程を経て、最終的に言葉を整え N-Dev Spirits が新たに出来上がりました。

# 最後に
NJSS 開発部では行動指針を一新し、良いプロダクトを世の中に届けるために邁進していきます。
もし、NJSS 開発部またはうるるに興味を持っていただけたら、ぜひ採用サイトを見てみてください。
ぼくらの会社やプロダクトがよりわかっていただけると思います。

https://engineer.uluru.biz/
AWS ログイン中のアカウントがrootアカウントかどうかを確認する

## 概要

AWSにログイン中のアカウントがrootアカウントかどうかを確認する方法をまとめる。

## 方法

1. 右上の自分の名前をクリックし、プルダウンを開く。
1. 「セキュリティ認証情報」をクリックする。

    ![セキュリティ認証情報___IAM___Global.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/ab834103-4f64-de27-dc44-aef65b8a2ef9.png)

1. アカウント詳細の部分に「Eメールアドレス」が表示されている場合、rootユーザーでログインしているはず。

    - rootユーザー

        ![セキュリティ認証情報___IAM___Global.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/096fde1f-3202-ea06-8003-4f5e2e04f212.png)

    - 非rootユーザー

        ![IAM___Global.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/af30360c-3e84-40c8-1296-39c29fbcca2a.png)
職場の先輩をGPTsで作ってみたら予想以上に先輩に似ていた話

## はじめに


https://qiita.com/sergicalsix/items/b9057a252dc81520bf20

以前はLLMで職場の先輩を作ろうとして失敗したので、今回はGPTsで作ってみました。

実施内容や小技を紹介しているので、参考になれば幸いです。

:::note 
対象
- GPTsで何か作ろうと考えている方
- GPTsに興味がある方
:::

## GPTsとは
GPTsは、一言で言うとオリジナルなChatGPTが作れるというサービスです。
検索やプログラムの実行、画像生成まで出来ます。

特筆すべき点は、ノーコードで誰でも簡単に出来てしまうと言う点です。

GPTsは以下の添付写真のように(1)チャット形式(2)Confuguresでの文章書き込みの2種類の方法で作れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487820/74b686ca-6fd6-7d87-7538-4e9a55f8fbbe.png)



チャット形式で設定した内容は、Configuresに反映される仕様になっています。
とても簡単です。

ちなみにチャット形式は英語で始まりますが、「日本語で」と打てば以降日本語で対応してくれます。


## GPTsの作り方
以下3つの手順で先輩GPTsを作りました。

- 属性入力
- 特徴入力
    - 観測者から見た特徴の入力
    - ツイート情報からの特徴抽出&入力
- 微調整

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487820/01691f8b-f0a5-8a04-47e7-b5ab1a912081.png)


以降では、それぞれについて説明します。

### 属性入力
属性とは、人種、性別、年齢、職業などの情報です。
先輩の特徴を導入する基礎・土台をGPTsに教えるというイメージです。

### 特徴入力
特徴とは、今回の場合は個人特有の趣味や口調、口癖等を指します。

まず観測者から見た特徴をGPTsに入力します。（語尾にwが多い、たまに関西弁を話す等）

次に収集したツイート情報から、ツイートした個人の特徴をGPT4に分析して特徴を抽出してもらいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487820/ebc4a8cc-8c58-1696-8aab-1859c9e5b8f9.png)

ツイート情報から上図のような形で特徴を抽出してくれます。特に**観測者である自分が言語化できなかった特徴**まで抽出できているのがポイントです。


そして抽出された特徴をGPTsに教えます。これによってGPT4から見た客観的な特徴を入力することができます。

### 微調整
最後に上記で作成したGPTsの出力を見ながら微調整します。（考え方は強化学習と似ていますが、学習をしていないので本質的には全く異なります。）

特に出力の長さや敬語をあまり使わせないようにするのが苦労しました。

微調整のコツを2つ紹介します。

- **重要なことを何度でも**
設定事項を忘れてしまうことが度々ありました。重要な情報は何度もチャット形式で入力するとよいです。どうしてもうまくいかない場合はConfigureの文で2回重要な情報を最初と最後につけるとよいです。
(LLMの論文では重要な情報を何度も入力することで精度が向上することが報告されている。)
- **具体的な指示・数字を使った指示**
「敬語を使わないようにして」という指示を「敬体と常体の頻度を1:999にして」に変えるとうまくいきました。指示が通らないときは、具体的な表現に言い換えるとうまくいくことがあります。


## GPTsの評価

評価は定性評価のみを行います。（定量的な評価は別記事で作成します。）

GPTsに趣味を答えてもらいます。

> ###GPTsの回答
趣味はいっぱいあるけど、特に車いじりとアニメ観るのが好きやね。週末はよくインプレッサでドライブ行ったり、家でアニメのマラソンしたりしてるよ。あと、サッカー観戦とゲームも大好きで、ちょいちょい新しいゲームに手を出したりするんだよね～。w

弊社の人にしか伝わりませんが、先輩Nさんに似ています！！！内容、口調、語尾などがそれっぽいです。

GPTs恐るべし。。。！！！！


## おわりに
割といい感じの先輩に似たGPTsが作れました。(今までのLLMのファインチューニングはなんだったんだろうか。。。。)

今後は、センサーやモーターをつけて擬人化させてみたりするのも面白そうです。

皆さんも独自のGPTs作成してみましょう！！
mock interview - UberEats編２


https://youtu.be/SbXDhAKgWek?si=oBBtL1-Y8QimDVs8

https://youtu.be/LePt0PUKIjE?si=X6h9zq4vCXbM8UtZ

https://youtu.be/OcUKFIjhKu0?si=pVAP_pWfDix2a7A3
【ChatGPT＋DALL-E3】でX-Twitterのプロフィールトップを描く。


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

　今回は、X-Twitterのプロフィールトップを作成してみました。必要に駆られてw

:::note info
本記事は、ChatGPT＋DALL-E3を
使用しております。あしからず。
:::

　別に
　　それほど必要でも
　　　なかったんですけどねw

　でも、作っとこう、と
　　思いまして。

　で、ChatGPTさんに
　　聞いてみました。
***
***User***
Twitterのトップの画像が欲しいです。どうしたら？

***ChatGPT***
Twitterのトップの画像、つまりヘッダー画像についての情報をお探しでしたね。現在の推奨されているサイズは、幅1500ピクセル、高さ500ピクセルです。このサイズで設定することで、最適な表示が保証されます。また、画像の最大ファイルサイズは5MBで、JPGまたはPNG形式が受け入れられます。これらのガイドラインに従って画像を用意すれば、Twitterのプロフィールできれいに表示されるでしょう。

***User***
作成してもらえますか？

***ChatGPT***
Twitterのヘッダー画像を作成しますね。どのような画像をご希望ですか？具体的なデザインやテーマ、色などの詳細を教えてください。
***
　ここから、
　　画像生成が
　　　気に入らなくて、
　　　　何度もチャレンジ。

　でも、挫折w
***
***User***
サイズは変わらずに、新しい画像をお願いします。

子猫たちが行進している姿。

***ChatGPT***
行進する子猫たちの画像を作成しました。この画像は、子猫たちが楽しそうに行進している様子を表現しています。
***
　できあがったのが、こちら。
![-blbqqz.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457238/4974b4de-7d71-1103-a0a9-217696ee01eb.jpeg)

　これで登録。
　　画像の高さがあるので、
　　　表示範囲を指定して、決定。

　今回は、ここまで。
IonicドキュメンテーションのColor Generatorが、WCAG準拠になりました

ちょうど昨夜、Ionicドキュメンテーションで興味深いプルリクエストがマージされました。

https://github.com/ionic-team/ionic-docs/pull/3274

Ionic Color Generatorは、指定色からコントラスト色（※ コントラストの強さにあわせて、 `#000000` か `#FFFFFF` ）、ちょっと濃いshade色、ちょっと薄いtint色を生成してくれるサービスです。Ionicを使ってる人は一度はお世話になってるサービスではないでしょうか。

![スクリーンショット 2023-12-01 午前11.36.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100460/0d90ad9c-f0ad-91d3-867f-1a05ac887330.png)

なのですが、以前まで提供してたColor Generatorのコントラスト色は、コントラスト比（Contrast Ratio）が `3.68:1` となっており、WCAG（Web Content Accessibillity Guidelines）が推奨するコントラスト比に満たなかったとのことです。

![スクリーンショット 2023-12-01 午前11.43.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100460/a17cbd2d-1bcc-7399-b90c-72fc5071ea80.png)

みてみると、Large TextはAAですが、Normal TextではFailとなっています。

そこで、このプルリクエストでは、コントラスト色の計算式を修正し、WCAGに準拠するコントラスト色をだすようになりました。

## どう変わるか

とりあえず、Color Generatorの現行の配色では以下のようになります。上記を比較すると、コントラストがより強くなったことがわかりますね。

![スクリーンショット 2023-12-01 午前11.33.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100460/9a6c2824-9eb4-934a-600a-c938076ff0ea.png)

ただ、コントラスト比率を重視しての先行変更のため、デザイン性という意味では一段回落ちたなというのが感想です。Ionic teamもそれは自覚してるようで、このプルリクエストで以下のように述べています。

> I suppose we'll be changing the colors soon anyway.
> すぐに（スターターの）基調色自体を変更することになるでしょう。

## 私たちはどうすべきか

これを踏まえて私達がどうすべきかですが、おそらく多くのユーザはアプリ独自の基調色を決め、Color Generatorで配色セットを生成してきたと思います。ですので、スターターの配色セットが変更されることはプロダクトにあまり影響はないと思いますが、今まで生成してきた配色は十分にコントラスト比を満たしてるか、再生成をお試しすることをおすすめします。



アプリをつくってる以前に、私たちはWebのコードを書いてるので、WCAGは大切にしていきたいですよね。

ちなみに、コンストラストが十分にあるかのチェックは以下のツールからできるのでご利用ください。

https://webaim.org/resources/contrastchecker/

それではまた。
MIERUNEのイベントをまとめてみた

:::note info
この記事は、[MIERUNE Advent Calendar 2023](https://qiita.com/advent-calendar/2023/mierune) 1日目の記事です。
:::
# 概要
- 北海道・札幌を拠点とする位置情報技術の職人集団「[MIERUNE（みえるね）](https://www.mierune.co.jp/)」は、オープンソースのコミュニティから生まれた会社で、発信活動を活発に行うカルチャーが根付いています。
- そんなMIERUNEが主催しているイベントについてまとめました
- HPにもイベントをまとめていますので併せて御覧ください


https://www.mierune.co.jp/events/list/1?lang=ja

# 現在募集中のイベント
- [「地図とか路線図とか」出版記念イベント](https://mierune.connpass.com/event/302474/)

https://mierune.connpass.com/event/302474/

- [MIERUNE JCT #02](https://mierune.connpass.com/event/303996/)

https://mierune.connpass.com/event/303996/

# 主催イベント
### MIERUNE MEETUP（オフライン＠札幌）
- 本社のある札幌で開催する招待制のオフラインイベント
- 主催するイベントでは最大規模
- 国内キーパーソンやMIERUNEメンバーが最新の位置情報技術に関する実践やトレンド等を紹介し、参加いただく方々に新たなアイデアやコラボレーションの創出を促すイベント
- 2022年から開催

[2022の様子](https://www.mierune.co.jp/news/posts/mx7590y3v1?lang=ja) 

https://www.mierune.co.jp/news/posts/mx7590y3v1?lang=ja

[2023の様子](https://note.com/mierune/n/nfb71aca8a2ef)

https://note.com/mierune/n/nfb71aca8a2ef
### MIERUNE BBQ（オフライン＠札幌）
- 焼かないBBQこと「MIERUNE BBQ」は、札幌で毎月開催しているエンジニアやIT業界に携わる方々を対象とした勉強会＆交流会
- エンジニア・デザイナーの方などを対象としたWeb技術などにまつわる知見をワイワイ共有しながら楽しむBBQっぽい雰囲気を目指すオフラインイベント
- 毎回、MIERUNE社内・社外含めて数名が発表
- 2023年5月から開催
    - 2023年11月までに5回開催
    - 2023年12月にも開催予定

https://note.com/mierune/n/n4dee30bd98df

### ※絶賛募集中※ MIERUNE JCT(ジャンクション) （オンライン）
-  
- 旧MIERUNE Meetup mini
- ユルい感じで位置情報に関わるトレンドやテクノロジーについて情報共有するオンライン勉強会
- 「MIERUNE Meetup mini」として6回開催→2023年8月にJCTに刷新
- 様々な技術や人が ”流入” するイメージをJCTという名に込めた
- StreamYardを導入し視聴者はYouTubeで視聴やコメントができる
- 第2回は2023年12月13日に開催

https://mierune.connpass.com/event/303996/

- 第1回の様子

https://note.com/mierune/n/nfb71aca8a2ef

## エクストライベント
- MIERUNEメンバーが執筆した出版記念イベントや他社とのコラボレーションイベントを開催
- 基本的には東京で開催
### 位置情報エンジニア養成講座出版記念トークイベント（オフライン＠東京）
- MIERUNE CTO[井口](https://twitter.com/kanahiro_iguchi)が執筆した「[位置情報エンジニア養成講座](https://www.shuwasystem.co.jp/book/9784798068923.html)」の出版記念イベント
- 2023年6月に東京・秋葉原で開催

https://mierune.connpass.com/event/285614/
### ※絶賛募集中※「地図とか路線図とか」出版記念イベント （オフライン＠東京）
- デザイナー[加藤](https://twitter.com/chizutodesign)が執筆した[「地図とか路線図とか」](https://www.temjin-g.co.jp/books/4423000043/)の出版記念イベント
- 2023年12月6日に開催

https://mierune.connpass.com/event/302474/

### 位置情報＆宇宙ビジネスMTG Fusic vs MIERUNE ～福岡 vs 北海道 地元の誇りを賭けた討論会～
- 福岡を拠点にしている[株式会社Fusic](https://fusic.co.jp/)さんとの対決型イベント
- 位置情報＆宇宙ビジネスをテーマに東京・日本橋で開催
- 2023年8月に開催

https://www.mierune.co.jp/news/posts/w6fz-fv1o

## 今後の主催イベント展望
### Podcast
- 音声メディアにもチャレンジしたいぞということで！
- **近日開催に向けて鋭意企画中**

## 登壇イベント
- 量が多いので個別にまとめるのは諦めましたw
- MIERUNE HPにまとめていますのでご参照ください

https://www.mierune.co.jp/presentations/list/1?lang=ja

# おわりに
- 今回展示会などの出展イベントやスポンサードイベント、参加・登壇イベントについてまとめきれなかった
    - きれいにサクッとまとめられると良いなー
- 次は発信メディアについてもどこかで公開したい
CyberAgent Group SRE Advent Calendar 2023はじまるよ

この記事は、[CyberAgent Group SRE Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ca-sre)の1日目の記事です。初日なんで、緩めに書いてます。

# はじめに
技術本部 サービスリライアビリティグループ（SRG）の柘植（[@shotaTsuge](https://x.com/shotatsuge))です。
SRG（Service Reliability Group）は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。

# サイバーエージェントとSRE
今年で[20周年となるSRE](https://sre.google/20/)も、昨今では国内でも認知され、SREがいる会社も増えてきたと感じています。サイバーエージェントでも、2015年頃から取り組み始め、今ではグループ内に複数のSRE組織があり、信頼性向上に日々取り組んでいます。各組織が様々な課題解決の取り組みから得られた知見や考え方を多くの人に知って貰いたいと考え、『[SRE Technology Map](https://www.cyberagent.co.jp/techinfo/info/detail/id=28998)』を作成しました。ありがたいことに、国内外で多くの反響をいただいています。
![IMG_4773.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43504/20c328ea-d93d-ad4c-8506-22a84fff81c5.jpeg)

# SRE領域のDevelopes Expert
サイバーエージェントでは、弊社が定める注力技術領域のうち、抜きん出た知識とスキルを持ち、その領域の第一人者として実績を上げているエンジニアに新たな活躍の場を提供するとともに、各専門領域において、その分野の発展のための貢献および、サイバーエージェントグループの技術力発展に還元することを目的とした「[Developer Experts制度](https://www.cyberagent.co.jp/techinfo/info/detail/id=23823)」を設けています。
![IMG_4774.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43504/0a3e937a-1c05-1396-ecc5-db36ae23165b.jpeg)

今年から、SREも弊社の注力技術領域となり、Developer Expertsに認定していただきました。どういった取り組みをしているかなども発信していければと思っているので、是非勉強会などもお声掛けしてもらえると嬉しいです。
また、[SRE Lounge/NEXT](https://sre-next.org/)などのコミュニティへの貢献もしていければと考えています。

# さいごに
今回のAdvent Calendarによって、弊社グループの取り組みを多くの人に知ってもらえると嬉しいです。私個人としても、楽しみです。
明日は、[@hiroki_k8](https://x.com/hiroki_k8)です。
【Flutter】ColorScheme

ThemeDataで定義できるColorSchemeについてまとめ
# ColorScheme
色のプロパティを構成するために使用できるマテリアル仕様に基づく 30 色のセット。
## Constructors
| コンストラクタ                             | 説明                                                                                                   |
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------- |
| `ColorScheme()`                            | デフォルトの色スキームを作成。                                                                       |
| `ColorScheme.fromSwatch()`                 | 与えられたプライマリーカラーSwatchから色スキームを作成。                                           |
| `ColorScheme.light()`                      | ライトテーマのデフォルト色スキームを作成。                                                          |
| `ColorScheme.dark()`                       | ダークテーマのデフォルト色スキームを作成。                                                          |
| `ColorScheme.highContrastLight()`          | 高コントラストライトテーマのデフォルト色スキームを作成。                                          |
| `ColorScheme.highContrastDark()`           | 高コントラストダークテーマのデフォルト色スキームを作成。                                          |
| `ColorScheme.fromSwatchAndAccent()`        | 与えられたプライマリーカラーSwatchとアクセントカラーから色スキームを作成。                          |
| `ColorScheme.fromSwatchAndAccentColor()`   | 与えられたプライマリーカラーSwatchとアクセントカラーから色スキームを作成。                          |
| `ColorScheme.fromPrimaryAndSecondary()`    | 与えられたプライマリーカラーとセカンダリーカラーから色スキームを作成。                            |
| `ColorScheme.fromPrimaryAndSecondaryColors()` | 与えられたプライマリーカラーとセカンダリーカラーから色スキームを作成。                        |
| `ColorScheme.fromPrimaryColors()`          | 与えられたプライマリーカラーから色スキームを作成。                                                |
| `ColorScheme.fromSecondaryColors()`        | 与えられたセカンダリーカラーから色スキームを作成。                                                |
| `ColorScheme.fromPrimary`                  | 与えられたプライマリーカラーからプライマリーカラーとオンプライマリーを使用して色スキームを作成。 |
| `ColorScheme.copyWith()`                   | 既存のColorSchemeオブジェクトをベースにして、一部のプロパティを変更した新しいオブジェクトを作成。  |

## ColorSchemeで使えるプロパティ
| プロパティ          | 説明                                     |
|-------------------|----------------------------------------|
| primary           | プライマリーカラー                           |
| primaryVariant    | プライマリーバリアントカラー                   |
| secondary         | セカンダリーカラー                           |
| secondaryVariant  | セカンダリーバリアントカラー                   |
| surface           | サーフェスカラー                             |
| background        | バックグラウンドカラー                         |
| error             | エラーカラー                               |
| onPrimary         | プライマリーカラー上のテキストカラー              |
| onSecondary       | セカンダリーカラー上のテキストカラー              |
| onSurface         | サーフェスカラー上のテキストカラー                |
| onBackground      | バックグラウンドカラー上のテキストカラー            |
| onError           | エラーカラー上のテキストカラー                  |
| brightness        | ライト/ダークテーマの切り替え                   |
| primaryOnSurface  | サーフェスカラー上のプライマリーカラーのテキストカラー |
| secondaryOnSurface| サーフェスカラー上のセカンダリーカラーのテキストカラー |
AWS Secrets Managerに登録された秘密鍵から公開鍵を作る方法


```bash:AWS Secrets Managerに登録された秘密鍵から公開鍵を作る方法
$ ssh-keygen -y -f <(aws secretsmanager get-secret-value --secret-id {secret名} --query 'SecretBinary' --output text --profile {profile名} | base64 --decode) > {公開鍵}.pub
```

# はじめに
AWS Secrets Managerにバイナリで登録された秘密鍵のペアになる公開鍵を作りたい。
なんとなくローカルに秘密鍵を出力してそこから公開鍵をつくらず、ローカルに秘密鍵出力するのも嫌だしワンライナーでやってみたかった。

:::note warn
ご利用および鍵の取り扱いは自己責任でお願いいたします。
:::

# コマンドの説明
- 環境
    - Windows 11 Pro
    - aws-cli/2.13.25
    - base64 (GNU coreutils) 8.32

## AWS Secrets Managerにバイナリで登録された秘密鍵を取得する
バイナリで登録されたものは画面からは取得できないのでCLIで取得する。
参考 : [GetSecretValue - AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html)

```bash
aws secretsmanager get-secret-value --secret-id {secret名} --query 'SecretBinary' --output text --profile {profile名}
```

## Base64でバイナリをデコードする
```bash
# 「--decode」は「-d」でもOK
base64 --decode
```

## 公開鍵を作る
```bash
# ファイルを指定して(-f)OpenSSH形式で秘密鍵から公開鍵を作る(-y)
ssh-keygen -y -f... > {公開鍵}.pub
```

## 全部をつなげる
「|(パイプ)」でつながず「<」を使う、というところにつまずいた。
「<」がなんという名前かがわからず、ググれず「リダイレクトの逆」と検索したりした。

```bash
$ ssh-keygen -y -f <(aws secretsmanager get-secret-value --secret-id {secret名} --query 'SecretBinary' --output text --profile {profile名} | base64 --decode) > {公開鍵}.pub
```
WebSphere Libertyのウェルカム・ページを無効化する方法

コンテキスト・ルートの「/」にバインドされているアプリケーションがない場合、デフォルトの Liberty プロファイル・ウェルカム・ページが使用可能になります。
たとえば http://localhost:9080/ にアクセスすると下記ページが表示されます。

![Screenshot 2023-12-01 at 10-14-31 WebSphere Liberty 23.0.0.8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620925/c792cd3c-22f4-7d96-45d9-de1784bca4f2.png)

### 無効化の設定
HTTP ディスパッチャー (httpDispatcher) の enableWelcomePage="false" の設定で無効化することができます。

```
<httpDispatcher enableWelcomePage="false"/>
```
設定後の画面
![Screenshot 2023-12-01 at 11-00-21 404 Not Found.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620925/9c7201b9-bd9c-6f58-e762-362feb0b60c8.png)

### appOrContextRootMissingMessage のメッセージの設定
appOrContextRootMissingMessage にメッセージを設定することもできます。
```
<httpDispatcher enableWelcomePage="false" appOrContextRootMissingMessage="Welcome Page is disabled."/>
```
設定後の画面
![Screenshot 2023-12-01 at 11-03-53 404 Not Found.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620925/cc25d817-ecae-5ccd-576c-ca7b69d704cd.png)

### appOrContextRootMissingMessage でリダイレクトする設定
appOrContextRootMissingMessageでリダイレクトの設定もできます。WelcomeTestアプリケーションのウェルカム・ページを表示する設定例です。
```
<httpDispatcher enableWelcomePage="false" appOrContextRootMissingMessage='&lt;script&gt;document.location.href="/WelcomeTest/";&lt;/script&gt;' />
```

### 参考文書
HTTP ディスパッチャー (httpDispatcher)
https://www.ibm.com/docs/ja/was-liberty/core?topic=SSD28V_liberty/com.ibm.websphere.liberty.autogen.nd.doc/ae/rwlp_config_httpDispatcher.htm
【デュアルブート】Ubuntuをインストールした後、WindowsをインストールしたらLinuxが立ち上がらなくなった時の対処方法

## 結論
* BIOS、UEFIを起動し、ブートの優先順位をLinuxがインストールされているディスクを上にする
* Ubuntuが起動するので、`update-grub`をターミナルから実行する
* すると、ブートローダーで新しくWindowsを選択できるようになる

## こんな時にもupdate-grub
* 古いOSをパーティションごとフォーマットして削除した時
* 別の環境からディスクごと移設してきた時
統計検定学習備忘録　非復元抽出の標本平均に関する公式等

普段より、自分のプログラミング等に関する質問に答えて下さっている皆様ありがとうございます。m( _ _)m　よろしければ統計検定の学習等にご利用ください。

**なお、以下の資料の計算はあくまで過去に個人的に確認したもので、公的に査読されていないため、間違っている箇所があれば、遠慮なくご連絡いただけるとありがたいです。**

※最近たまたま見つけた以前計算していたノートの続編の一部です。

**復元抽出の場合は以下リンクへ**
https://qiita.com/thinking-weed/items/36a3eadf0035557a1714

<h2>非復元抽出のイメージ

サンプルを複数個取り出すときに（それらに便宜上順番をつけたときに）戻さない
⇒結果として抽出される要素数が１つずつ減っていく⇒階乗などをよく使って計算

<h2>標本平均を非復元抽出でサンプリングしたときの計算例

https://drive.google.com/drive/u/0/folders/10SsMahj63MKKLO_O4xCS1sYfFxSHcDEE
<h2>非復元抽出による標本平均に関する公式（以下の２つ）、及びその証明の計算

平均が $\mu$ 、分散が $\sigma^2$ の大きさ（＝母集団の要素数）$N$ の母集団がある。
（つまりは、$E(X)=\mu 、V(X)=\sigma^2$ のとき）
この母集団から大きさ $n$ の標本 $X_{i}　ただし、i = 1,2,・・・n$ の標本を**非復元抽出**する。
このとき標本平均
$$\bar{X} = \frac{1}{n} \sum_{i=1}^n {X_i}　を考えると$$ 

$$E(\bar{X})=\mu、V(\bar{X})=\frac{N-n}{N-1}\frac{\sigma^2}{n}　　 なお、N→ \infty のとき、\frac{N-n}{N-1}\frac{\sigma^2}{n}→\frac{\sigma^2}{n}　　※ n は固定して考える（独立している）$$

が成り立つ。（つまりは「**平均の平均**」を考えています）

https://drive.google.com/drive/u/0/folders/1e3HilFgEpb5FzwiEL7oItuMdEHhrEhFK

なお、本によっては、$\mu（ミュー）$ が $m$ になっている場合もあります。
対応関係さえ合っていれば、計算はあっているので、適宜読み替えてください。

なお、ミューは m に対応するギリシャ文字です。
（mean の 「m」と思われます。※以下参照）

https://science.shinshu-u.ac.jp/~tiiyama/?page_id=3782
<h2>Githubリンク（上記の資料と同じものです）

https://github.com/thinking-weed/analysis-statics-memo/tree/main/Sample_mean_and_Sample_variance/Non_Restored_Extraction

<h1> よくお世話になっている参考資料一覧（※全部の内容を自分も理解できているわけではないです。）

・統計検定1級公式問題集　実務教育出版　
　※過去問のページもありました。　https://www.toukei-kentei.jp/prepare/kakomon/
・青チャートI＋A、Ⅱ＋B　数研出版
・大学への数学　１対１対応　数Ⅲ・数B
（今は、**例えばこれで高校生も標本平均を学習しているはず**）
・理工系の微分積分学　吹田信之、新保経彦　共著　学術図書出版書
・線形代数入門　齋藤正彦　著　東京大学出版会
・定本　解析概論　高木貞治　著　岩波書店　
・数学シリーズ　数理統計学　改訂版　稲垣萱生　著　裳華房
・数学シリーズ　集合と位相　内田伏一　著　裳華房
・one point 推定と検定　鷲尾泰俊　著　共立出版
・電磁場とベクトル解析　深谷賢治　著　岩波書店
・シリーズ物理数学1　フーリエ解析　江沢　洋　著　朝倉書店
（※一見、統計とは全く関係なさそうですが、実は中に統計・確率に関する章があります。しかも結構詳しく書いてくれてある。江沢さんの本は難しいけど丁寧だから基本オススメ
レイアウト崩れしにくくするための心得

レイアウト崩れを起こさないために、制作時に意識したほうが良い基礎的なことをまとめてみました。
Webサイト制作を始めたばかりの方の参考になれば幸いです。
（あくまで意識したほうが良いことなので、コードサンプルなどは機会があればまとめます。）


## 表示個数は変動するものだと考える
一覧などで要素を横に並べてレイアウトするとき、個数の変動を意識しないでデザインやコーディングをしてしまうと、融通が利かなくなり表示崩れが起きてしまいます。

### 崩れの例
- 個数が想定より少なく、要素と要素の余白が開きすぎる
- 想定した個数より多く入ってしまい、一つ一つの要素が狭く窮屈になってしまう

### 予防策
上記のような崩れが起きる場合、個数を固定してコーディングし、増減のテストを怠っていることが多いです。
コーディング時には、数を減らしたり増やしたりしても崩れないか試してみることが大事です。
動的な要素であれば個数は必ず変動するので増減に耐えられるよう作ると思いますが、依頼時に個数が決まっていたとしても仕様変更が起こりやすい部分なので、増減するように作っておくほうが安心です。
変動するように作れていれば、急な仕様変更の際の調整も不要になります。

## 背景は途切れないようにする
リピート背景の場合は大丈夫ですが、一枚の背景画像でレイアウトする場合には注意が必要です。

### 崩れの例
- 想定よりモニターが大きいまたは小さい場合、表示位置がずれてしまう
- 背景が中途半端なところで途切れてしまう

### 予防策
背景画像が拡大縮小するよう設定しておくと崩れを緩和出来ることが多いです。ただ、その場合は高解像度のモニターでも耐えられるよう、画像自体を大きくしておいたり、SVGなど拡大縮小しても劣化しないよう作っておく必要があります。
背景画素が途切れてしまう場合、両サイドにグラデをかけて背景色に馴染ませるようにするなど、デザイン時に背景画像に工夫をしておくのも大事です。


## 高さ指定をしすぎない
崩れさせないためにガチガチに高さを指定したくなるかと思いますが、かえって崩れやすくなることがあります。

### 崩れの例
- 想定より長い文章が入って、エリアからはみ出てしまう
- 想定より内容が少なく、余計な余白ができてしまう

### 予防策
高さ指定をせず、paddingやmarginを使用してレイアウトを成立させるほうが崩れにくくなります。
コーディング時の工夫も必要ですが、何はともあれ高さが変動してもおかしくないようデザインしておくのが一番大事です。
当たり前なことですが、意外とデザイン時に意識しきれておらず、コーディング時に後悔した経験がある人は多いかと思います。
ダミー文言の場合は意識してデザインしていると思いますが、テキスト指定がしっかりされている場合にもある程度融通が利くように作っておくと安心です。


## 省略も活用する
前述のとおり、高さ指定をしすぎないことで崩れ防止にはなりますが、テキストが想定よりも長い場合、崩れはしなくとも違和感のある表示になってしまうこともあります。

### 崩れの例
- 想定よりも長いテキストが入り、同じレイアウトの要素と差が出てしまう

### 予防策
サムネイルや一覧ページの構成要素などの場合は、テキスト省略を活用することで崩れを防ぐことができます。
CSSなどでテキスト省略を入れると、意図したレイアウトに近い状態を維持できるため、活用できる箇所であれば積極的に使うと良いです。


## 位置固定（position）は不変的な要素に使う
位置固定もコーディング時によく使うかと思いますが、使う場所には注意が必要です。
動的な要素を位置固定にしてしまうと、思わぬ崩れに繋がります。

### 崩れの例
- 位置固定した要素の中身が増えて、はみ出してしまう
- 固定した要素以外の要素が消えて、想定した位置と違う個所に位置固定されてしまう

### 予防策
位置固定は画像などの、高さが変わらない要素にのみ使うほうが崩れにくいです。
動的な要素の場合は、位置固定はせずmarginやpaddingをうまく活用するほうが崩れにくいレイアウトになります。
どうしても動的要素を位置固定する場合は、テキスト省略を設定しておくなど、高さが変わらないようにする工夫が必要になります。


## まとめ
WEBサイトは見る人の環境に表示が左右されてしまうものです。
崩れにくさを意識しながら制作することで、見る人への配慮にもつながります。
他にも、仕様変更に強いページやサイトにもなりますので、常に意識しておくことが大事かと思います。
英語 Status Update Meeting

## Status Update Meeting とは

・・・プロジェクトなどの状況を他のメンバーに知らせるために開催される定期的なミーティング

チームがプロジェクトのスケジュールを順調に進め、お互いに責任を持ち、進捗状況を共有し、プロジェクトの重要な変更について話し合うことを目的とする。
基本的には、チームの課題と成果について話し合い、課題を特定した上でそれに対するアプローチを考える。
また、必要に応じてリソースを整理と再編成を行う。


## 大事なこと・注意すること

- 全員に情報を知らせる（Keep everyone informed）
- 進捗状況を計画と比較する（compare progress with a pre-established timeline）
- 成果に関する情報を共有する（share information about accomplishments）




## Tips


1. 事前にリマインダーを送る（Send out a reminder in advance）
    - ミーティングの開催日の前に、いつ、どこで、何時に会議を開催するかの連絡をする。
    - 会議に招待されたメンバー全員が十分な時間をかけて準備をし、確実に会議に出席できるようになる。

1. アジェンダ（議題）に沿って行う（Follow an agenda）
    - 会議のアジェンダを作成し、それに従うことで、会議がスムーズに進む。
    - 最も重要なトピックと問題だけを含む議題を作成すると、効率的に進めることができる。

1. アジェンダ（議題）を提出する（Deliver an agenda）
    - 会議の前に、議論するすべての概要を送ると会議で役立つ。 
    - アジェンダに詳細な内容を含める必要はないが、詳細情報を書くと何が期待されているかを出席者に共有できる。

1. 簡潔にまとめる（Keep it brief）
    - 簡潔で要点を絞った会議をすると、全員が重要事項にフォーカスし、時間効率の良く必要なことを把握できる。 
    - 簡潔にすることで、出席者が早くプロジェクトの作業に戻ることができる。

1. 重要なものだけを取り上げる（Only highlight what's most important）
    - プロジェクト状況のあらゆる側面のすべてを議論する必要はない。
    - 最も重要なアップデートまたは詳細な進捗状況を取り上げることを検討する。

1. プロジェクトに関係するメンバーのみを招待する（Only invite those involved in the project）
    - 社内のすべてのメンバーを招待する必要はない。
    - プロジェクトに影響を与える人、またはプロジェクトに貢献する人だけを招待すると、会議を効果的に行うことができる。

## Status Update Meeting で使える表現

#### ファシリテーターとして

Now that everyone is here, let's get started.
I'd like to get started and welcome all of you to the meeting today.
Before we dive into the agenda, let's go around the room and introduce ourselves quickly - please share your name and job title.
I know most of you but I see a few unfamiliar faces. Before we start, let's do a quick round of introductions.

Purpose of the meeting
As a quick reminder, our goal for this meeting is [a purpose].
By the end of this meeting today, we should have a decision on [a purpose or a goal].

## 所感
この中で一番エンジニアにとって重要なのは、
<b>最も重要なトピックと問題だけを含む議題を作成すると、効率的に進めることができる。</b>
<b>重要なものだけを取り上げる（Only highlight what's most important）</b>
の部分なように感じた。
ついつい会議は長くなりがちだし、会議の意義やテーマが明確でないと延々と続いてしまう恐れがある。
必要なことにフォーカスする。
後回しにしていいことは躊躇なく後回しにする。

## 参考

https://www.indeed.com/career-advice/career-development/what-is-status-update-meeting

https://www.youtube.com/live/Q-JNviWjlh0?si=6NqIkd1MHnWcAH0C


https://youtu.be/Y2mP4pcEXhw?si=f9jQise43Pot_ykc
Webエンジニアの学習の進め方について考える

## 必要なこと

- 言える化する
    - キーワード、キーフレーズを覚える
    - 説明をまとめる（２００文字で、１００文字で、５０文字で、一言で）
    - 図解する
    - なぜ必要か、なぜ存在するかなどのバックグラウンドを知る
- 作業やれる化する、一人でできる化
    - 手順を明確にする
    - 繰り返し行って、いつでもできるようにする（素振りする）
    - 何もない状態から作れるようにする
    - 高速に作れるようにする
    - 後輩に指導できるようにする（可能であれば）



## 習熟度を上げるためのステップ

1. 基礎的な情報をかき集める
1. 分からないワードなど調べて、解像度を上げる
1. チュートリアルやハンズオンをやってみて、基本的な操作を把握する
1. ハンズオンなどの内容をやや変化させて、工夫をしてみる
1. 上の作業を繰り返す（素振り）
1. サンプルプロジェクトを開発して、より具体的な部分を把握する
1. 上の作業を繰り返す（素振り）
1. 実務で必要なスキルについて調べて、足りない部分を探す
1. 足りない部分について学習
1. 足りない部分について、開発など実行に近い内容の作業に取り組む
1. 上の作業を繰り返す（素振り）
エンジニアがシステム障害と向き合う（Ver.2023下半期）

いくつになっても、第一線の現場から離れても、やはり逃れられませんね。障害。自分が引き続きこれからどう向き合っていこうかの考えを巡らせる中で、他の方からどんなFBが返ってくるのかを見てみたいと思い、まとめてみた備忘を公開します。昨年公開したものからさらに、組織についてインプットしたものを加筆してのバージョンアップです。

# 当人の心持ち
## 障害（バグ）は出したくない
当たり前ですが、出したくて出してる人なんて全くもっていません。ついでにいうと、出してもいいやと思っている人も全くいません。本当に見たことはないです。しかし、障害はでる。そう、強いて言うのであれば、「出したくないので有効な施策を講じていない人」はいます。あしからず。

## 手を抜いたつもりもない
障害を出してしまった当の本人は、確認をおろそかにするつもりもなければ手を抜いているつもりもありません。一生懸命自分に思いつく限りの確認をしているのです。強いて言うのであれば「思いつく範囲や切り口が少ない人」はいます。あしからず。

## でも後悔している
障害を出したいなんて思ってもおらず、手を抜いているつもりもない、しかしそれでもなお、バグを出して後悔しない人もいません。
「あのときああしていれば」
「あのときは気づかなかったけれど、翌々考えてみれば確認して当然では」「今度からここは気をつけよう」
というむやみな思考がひたすらに頭を駆け巡ります。強いて言うのであれば「後悔した後に、自動的に発動する再発防止システム」を設けることをしない、反省をしない人はいます。あしからず。

# あしからず、な人とそうでない人の言葉
あしからず、という表現をしてみたこともあり、ここで個人的に少しだけまとめます。

## 「ちゃんと○○する」という人と、「○○できないかもしれない」という人
→　私は『ちゃんと』という言葉は次のアクションに対して定義不可能なためあまり好きではありません。バグと向き合うときにはNGワードと捉えます。

## 次こそは○○するためには」という人と、「二度と○○しないためには」という人
→　『次は』という言葉を使うと、どうしてだかわかりませんが、『次の次』を想像してしまう自分がいます。そして『次の次』でなんとかできると思う、と甘えてしまう自分がいます。なので使わないことにしています。言うならば、『二度としない』という言葉を使ったほうが、真剣に向き合う覚悟が決まります。

## 「想定が『甘かった』」という人と、「○○を想定していなかった」という人
→　「甘かった」の言葉で済ませてしまう時は、どこに問題があったのかの掘り下げから逃げてしまったときかもしれません。何かを特定して「想定してなかった」というと、「他にもないだろうか」と不安になって最後まで探してくれる自分がいると感じます。

# その姿勢が、「誰か助けてくれ」という学びの渇望につながる
少々大げさなモノ良いですが、ここまでいって始めてようやく「自分だけではどうにもならない、誰かの助けが必要だ」「どこかの誰かから学びたい」「きっと解決した人間がいるはずだ」につながるのでしょう。

そこでようやく、「監視」「テスト」「QA」「SRE」「DevOps」先人たちの様々な戦いの痕跡の価値を知り、我が身として吸収していくことになるのだろうと。

# 障害（バグ）と『向き合う』とは
そうして戦っていくことが「向き合う」なのだろうということなのだとは思いますが、やや抽象度が高いのでまとめとして、「向き合う」という言葉にも認識しやすいよう具体的なアクションを添えておきたいと思います。

> どれだけ「目に見える」アクションプランを、
どれほど「たくさん」、
どれだけ「明瞭に書き起こす」か。
障害と「向き合う」ということはそのためにどれだけの時間を注ぐことができたか。

当然のことのように見えますが、「改善策」をいざ実施しろと言われたときに、満場一致のアクションが取れる策になっていることも、また稀であるといえます。

１つ２つの「改善策」では失敗して通用しないかもしれません。

自分自身だけでなく、仲間たち、そして未来の仲間たちの身を案じて伝わるよう書き記してこそなはずです。

# エンジニア「組織」がシステム障害と向き合う
ここまで、個人の振り返りに焦点を当てていましたが、今年の大きな気付きとしては「個人としてできることには限界があり、組織として、そして業界として紡いで行かなければならないのが『システム障害との向き合い方』であるな」というところです。

## 航空業界の話。

https://amzn.asia/d/ceb0NwA

失敗の科学という本で、２つの航空事故の記事を読みました。１つは住宅街への墜落、１つは川への着水。前者のパイロットは非難を受け、後者は称賛されていたそうです。

印象的だったのは、前者の墜落事故は1978年、後者の着水は2009年の出来事であり、後者のパイロットが称賛されたときのインタビューとして回答した言葉。

> 我々が身につけたすべての航空知識・ルール・操作技術は、どこかで誰かが命を落としたために学ぶことができたものばかりです。
大きな犠牲を払って、文字通り血の代償として学んだ教訓を、我々は組織全体の知識として、絶やすことなく次にお世代に伝えていかなければなりません。
これらの教訓を忘れて一から学び直すのは、人道的に許されることではないのです。

人間の認識力やコミュニケーション能力についての理解の浅さ、システムやオペレーションへの潜在的な問題、そうした事故の要因は個別のものではなく「業界としての見識や積み上げの浅さ」によるものだった。

恥を顧みず、痛みを恐れず、失敗を赤裸々に公開し、それを咎めず、全員が次に繋げるために身に刻んでいく、そうした姿勢で失敗から学び紡いだことによって、今日の成功があるのでしょう。

## IT業界の話。

「ITバブル」という言葉が生まれておよそ20年超、まだ出来上がったばかりの未成熟なソフトウェア産業は、各所で事故が起き、中の人間が痛みを伴いながら課題に向き合っているまさに渦中と言えます。

であるならば、自らの失敗は、明日の誰かのために、公開していきましょう。

そしてそのために、失敗を咎めず受け入れるという覚悟を業界全体として持っていきましょう。

それが20年後ソフトウェアに関わる人を幸せにするに違いありません。（と、信じてやらなければ救いがないですね）

# おしまい
バグを出さずに開発したい

バグを出しても問題ない環境を作りたい

人ではなくバグに向き合う文化を作りたい

言うは易しで宣うばかりになってしまいがちな我々エンジニアではありますが、せめてせめて、まだ見ぬプレイヤーたちが納得した仕事をできるよう、心がけだけでも時たま胸に留めておきたいものです。
2023年12月 AIOps 定点観測

# 概要
AIOps の動向や学習のため、Google で AIOps を検索した結果を記録している記事です。

# 2023年12月1日の検索結果 (リスティング広告)

![20231201_AIOps_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2345504/cba58cd9-6d19-ee0f-0803-abf5650d4d6b.png)

* PureStorage
* Splunk
* ServiceNow
* IBM

PureStorage がトップで Splunk と ServiceNow が続いています。先月表示されていた Dynatrace が消えて IBM が復活しました。

先月の結果はこちら --> [2023年11月 AIOps 定点観測](https://qiita.com/mkodera/items/05ad2fe8839ec2d3be63)

# 2023年12月1日の検索結果 (広告以外)

![20231201_AIOps_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2345504/abac1595-2e0b-e975-254c-9b06d139a755.png)

* HPE
* Splunk
* IBM
* 日立製作所
* ServiceNow

HPE が 1位に復活しました。Splunk と IBM が続いています。1位と2位が入れ替わりましたが5社の顔ぶれは先月と同じです。

先月の結果はこちら --> [2023年11月 AIOps 定点観測](https://qiita.com/mkodera/items/05ad2fe8839ec2d3be63)
[Unity]3Dホラーゲーム制作の為に作成した機能(2) Fungusで会話シーンを作る

この記事は3Dホラーゲームを作る際、どのように機能を実装したのかをザックリまとめたものです。

# 出来るもの
![スクリーンショット 2023-12-01 104137.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631350/4e712438-3e33-4ad7-8a5b-3a36cbf39508.png)


# 目次
[準備](#準備)
[スクリプト追加](#スクリプト追加)
[Flowchart作成](#Flowchart作成)
[完成](#完成)

## 準備
[Fungus](https://github.com/snozbot/fungus/releases)をインポート
※現在FungusはUnityAssetStoreからDL出来ない為、GitHubからDLします

## スクリプト追加
[前回](https://qiita.com/Qhs129/items/e43765077472a32e2d94) 作成したSelectRayOutlineの派生先として「ClickStartTalk」スクリプトを作ってオブジェクトに追加する。

これによりアウトライン表示中（HitNow()内）にてStartTalk()の処理が走るので、クリックすると会話シーンを発生させる処理が追加される。

```C#:ClickStartTalk.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// Select中に左クリックするとチャットが出るスクリプト
/// </summary>
public class ClickStartTalk : SelectRayOutline.cs
{
    [SerializeField]
    private Fungus.Flowchart flowchart = null;
    [SerializeField]
    private string strMessage = null;

    private bool isTalkNow = false;

    public override void HitNow()
    {
        if(Input.GetMouseButtonDown(0) && !isTalkNow)
        {
            StartTalk();
        }
    }

    private void StartTalk()
    {
        // 準備
        isTalkNow = true;   // 会話中、再度会話を開始させない

        // 会話開始
        flowchart.SendFungusMessage(strMessage);
    }

    public void FinishTalk()
    {
        isTalkNow = false;  // 再度会話可能
    }
}
```

## Flowchart作成
[Tools]→[Fungus]→[Create]→[Flowchart]でFlowchartを作成
![スクリーンショット 2023-12-01 081518.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631350/6953c314-a8df-1537-3f94-d5832ffea09a.png)

1.作ったFlowchartから「Open FlowChart Window」をクリック
![スクリーンショット 2023-12-01 101450.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631350/3693309b-dade-ffe3-564a-b5fa7a189fba.png)

2.Execute On Event →「Message Received」に変更
3.Message → 任意の名称(今回私はClipboardとしました)
4.右下の＋ボタンを押して「Narrative/say」を追加
![スクリーンショット 2023-12-01 102057.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631350/ec6c1285-7063-8497-ce50-da34d6ce6b0e.png)

5.Story Textに会話文を入力
![スクリーンショット 2023-12-01 102837.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631350/54c55b0e-7e45-d793-f5ea-1500f66ba5cb.png)

6.右下の＋ボタンを押して「Scripting/Invoke Method」を追加
7.TargetObjectに「ClickStartTalkスクリプトを追加したオブジェクト」を指定
8.TargetComponentに「ClickStartTalk」を指定
9.Target Methodに「FinishTalk()」を指定
![スクリーンショット 2023-12-01 104136.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631350/f0ab1f7b-7999-d8cb-7699-62d516619924.png)


Hierarchyウィンドウに戻ってClickStartTalkスクリプトを見る
10.先ほど追加したFlowchartオブジェクトをClickStartTalkのFlowChartに指定
11.3で書いたMessageの「任意の名称」をStr Messageに書く
![スクリーンショット 2023-12-01 103105.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631350/f4626ee7-8fc5-5ec2-e57c-59520d4610fb.png)

# 完成
![Talk.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631350/8110cf69-e096-2e0e-6c6d-f8f24798fd29.gif)
SEC_TO_TIMEを知りました。

# SEC_TO_TIMEとは
- MySQLの関数
- 引数に秒数を渡すと`HH:mm:ss`(MySQLのTIME型)のフォーマットで返す

```
mysql> SELECT SEC_TO_TIME(2378);
        -> '00:39:38'
```
例えば特定の以下のように秒数の合計値を時間で判断したい時に便利
```
SELECT SEC_TO_TIME(sum(working_seconds))
FROM time_sheets
where project_id = 12
```
ただ一点注意
TIME型の範囲は、'-838:59:59' から '838:59:59' 　です。
- https://dev.mysql.com/doc/refman/8.0/ja/time.html

```
mysql> SELECT SEC_TO_TIME(4020399);
        -> '838:59:59'
※正しくは1116:46:39
```

そんな時は
```
mysql> SELECT 
        CONCAT(
            FLOOR(4020399/ 3600), ':', 
            FLOOR((4020399 % 3600) / 60), ':', 
            4020399 % 60
        )
      -> '1116:46:39' 
```
- FLOOR: 数値の小数点以下を切り捨て
- CONCAT: フォーマットされた時間、分、秒を`「HH:mm:ss」`形式の文字列に結合します。

おしまい
あると便利、DB論理設計の前にユースケース図を書こう！

## この記事で書くこと
- 論理設計前にユースケース図を作成することをおすすめします！
- ユースケース図とはなにか、その利点を解説
## はじめに
データベースの論理設計では、どのエンティティを含めるかが重要です。
エンティティ抽出において、必要なデータを把握していなければ、データベースに不要な情報が含まれたり、重要な情報が欠ける恐れがあります。

そこで、論理設計の前段階に、ユースケース図をつくっておくことをおすすめします。ユースケース図よりシステムで必要な登場人物を把握し、エンティティ抽出に役立てることができます。

:::note info
エンティティは日本語で「実体」と訳します。具体的なオブジェクト（例：「社員」「車」）から概念的なもの（例：「注文」「予約」）を含みます。
:::

### 論理設計の流れ

論理設計とは、現実世界のデータをリレーショナルデータベースにどのようなフォーマットで格納するかを決める設計プロセスです。

論理設計は以下の図の手順で進めることが多いです。

![](https://storage.googleapis.com/zenn-user-upload/45ab63b6850f-20231107.png)

この手順により、エンティティからデータベースのリレーションを構築します。

### ユースケース図ってなに？
ユースケース図とはシステムによって提供されるふるまいを示す図です。
**システムが**提供する機能を理解しやすくなります。

![](https://storage.googleapis.com/zenn-user-upload/d2802147a096-20231108.png)

銀行のATMのユースケース図です。ATMシステムが利用者に対し、どのようなサービスを提供しているか一目でわかります。

### ユースケース図はエンティティの抽出で役立つ

ユースケース図により、システムが満たすべき要件と、必要なデータが明確になります。
ATMのユースケース図の例だと、システムは「預金する」「送金する」「通帳記帳する」というタスクが明確になりました。例として、「預金する」タスクから、エンティティを抽出してみましょう。

「預金する」タスクから抽出可能なエンティティは、「顧客」、「口座」、「取引」です。

- 顧客　...ATMを使用する人
- 口座　...顧客の銀行口座
- 取引　...預金の処理

各エンティティは、それぞれ特有の属性を持ちます。たとえば、「顧客」には名前や住所、「口座」には口座番号や残高、「取引」には取引日時や金額が含まれます。この特有の属性がデータベースにおけるカラムになります。
　
このように、システムにどのような要件が必要か、登場人物が誰かを把握することは、エンティティを特定、次にカラムの選定における手助けとなります。

## ユースケース図をつくる
ユースケース図は覚えることが少ないため、UMLの中でも比較的簡単に作成できる図です。

ポイントは**システム目線で**アクター、ユースケースを作成することです。システムから見た利用者がアクター、システムができる機能がユースケースです。主語をシステムに置くことを意識するとユースケース図が作りやすいです。

### ユースケース図の見方

#### アクター
人型の記号です。システムの利用者をアクターと呼びます。アクターは**システムの外からシステムと対話します**。
人間の他、外部システムや機械の場合もあります。

![](https://storage.googleapis.com/zenn-user-upload/d4823d5e4555-20231107.png)

銀行のATMのユースケース図の場合、銀行システムは外部システムのため、アクターになります。

#### ユースケース
楕円の記号です。アクターに提供するサービスをユースケースと呼びます。ユースケースは動詞です。

### 作成のステップ

**1. アクターを定義**
ATMのユースケースを考える場合、アクターとして「利用者」と「銀行システム」を設定します。

**2. ユースケースを洗い出し**
ATMを利用する際にどのような操作が必要かを洗い出します。本来はもっと多くの機能がありますが、基本的なタスクとして「預金する」「送金する」「通帳記帳する」をあげました。ユースケースは要件定義にあるタスクを参照しつつ考えるのが望ましいです。

**3. アクターとユースケースを接続する**
アクターとユースケースが決まれば、２つを線で結んで終了です。



## まとめ
システム要件と必要なデータが視覚的に理解しやすくなることから、ユースケース図は論理設計のエンティティ抽出に役立ちます。ユースケース図は他のUMLに比べて難しい要素が少なく手軽に始められるので、ぜひサクッと作ってみるのはいかがでしょうか。


## 参考文献
達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

https://www.amazon.co.jp/%E9%81%94%E4%BA%BA%E3%81%AB%E5%AD%A6%E3%81%B6DB%E8%A8%AD%E8%A8%88-%E5%BE%B9%E5%BA%95%E6%8C%87%E5%8D%97%E6%9B%B8-%E5%88%9D%E7%B4%9A%E8%80%85%E3%81%A7%E7%B5%82%E3%82%8F%E3%82%8A%E3%81%9F%E3%81%8F%E3%81%AA%E3%81%84%E3%81%82%E3%81%AA%E3%81%9F%E3%81%B8-%E3%83%9F%E3%83%83%E3%82%AF/dp/4798124702


ゼロからわかる UML超入門

https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E3%82%8F%E3%81%8B%E3%82%8B-UML%E8%B6%85%E5%85%A5%E9%96%80-%E6%94%B9%E8%A8%822%E7%89%88-%E3%81%8B%E3%82%93%E3%81%9F%E3%82%93IT%E5%9F%BA%E7%A4%8E%E8%AC%9B%E5%BA%A7-%E6%B2%B3%E5%90%88/dp/4774190055