OmniAICreator/Qiita-1.07M huggingface dataset:
[SEカレッジ]リーダーが知るべきメンバー別コミュニケーション

SEカレッジ「リーダーが知るべきメンバー別コミュニケーション」の内容をまとめる。

## コミュニケーションの本質

#### コミュニケーションが必要な理由
① 自分の知らない事実や問題を知るため
② 相手の要望や意見を知るため
③ 自分と相手との要望や意見のギャップを知るため
④ 自分が抱えている問題の解決策を知るため

コミュニケーションを行う上で重要なことは、
**自分が持っている情報を相手に知ってもらい、相手の持っている情報を知ること。**

そのためには
**事実と解釈を分離してコミュニケーションを行う必要がある。**
※一つの事実にたいして、まったく同じ解釈をもつ人間はほぼいないため、自分と相手の解釈を合わせてから会話を行う必要がある。

また、
人のコミュニケーションで使われるメッセージの種類には「言葉」と「感情」の２つあり、
コミュニケーションはほとんど **「感情」に左右される。**


## ４つのコミュニケーション・スタイル

コミュニケーションスタイル大きく４つ
* 即断即決スタイル
* 発想展開スタイル
* 協調支援スタイル
* 分析計画スタイル

環境などによって、１２歳くらいまでにコミュニケーションスタイル(性格)が決まる
その後は対話スキルを身に着けていくため、スキルと性格が混ざってる状態になる。
※スキルが目立ってしまうため、性格はよく見ないと見えてこない。

#### 👇それぞれのスタイルの特徴

##### 「即断即決」「発想展開」スタイル
➡ 外的コミュニケーションが得意
➡ 話すスピードが速い
➡ 動くまでが早い

##### 「協調支援」「分析計画」スタイル
➡ 内的コミュニケーションが得意
➡ 無意識的に自分に確認してから言葉にする
➡ 話すスピードがややゆっくり

##### 「発想展開」「協調支援」スタイル
➡ 人間・感情を優先する

##### 「即断即決」「分析計画」スタイル
➡ 物事・仕事を優先する

##### 「即断即決」スタイル
➡ 決断が早い
➡ 言葉がストレート(指示が短い)
➡ 人に細かな指示されるのが嫌い(やり方は任せてほしい)
➡ 言葉がきつくて怖がられる傾向がある
➡ 厳しい問題や状況変化に対して、チャレンジチャンスとして受け入れる。
➡ 成果・結果を重要視する
➡ 向上心が高い
➡ 数字さえ出てればサボってもいいと思うこともある

##### 「発想展開」スタイル
➡ 人と仕事がしたい、人と絡むのが好き
➡ 楽しい・おもしろいを重要視
➡ アイディアマン・飽き性
➡ 悪気なく人の話を聞いてない(要点メモを渡してあげないと聞き漏らす可能性がある※キーワードから連想ゲームを始めてしまうタイプ)

##### 「協調支援」スタイル
➡ 人との輪を重要
➡ やさしさの塊
➡ 人に迷惑をかけるのが嫌い
➡ 事細かに指示を出してほしいタイプ
➡ 他人の感情に敏感で我慢上図
➡ 「即断即決」スタイルと相性が悪い(お互いの足りないところを補うベストパートナーになる可能性もある)
➡ クッション材の役割もチームに必須
➡ ありがとうって言われたい、感謝されたいタイプ


##### 「分析計画」タイプ
➡ 几帳面、正確さを重要視
➡ 論理的、頭がいいタイプ
➡ 正確で正しい仕事がしたい。論理的
➡ 自分のやり方を否定されたくない
➡ 感情が出にくいので何を考えているのかわからないと思われるタイプ
➡ 「発想展開」スタイルと相性が悪い(お互いの足りないところを補うベストパートナーになる可能性もある)



## スタイル別対応方法

#### 「即断即決」スタイル
質問にはストレートに答える
報連相・指導には必要なことを的確に伝える
不明点などは質問をして明確にする
早めに返事をしてあげることが必要
良くも悪くもチャレンジしてくるので気持ちよく鼻をおってあげる(フォローは必要)
先輩を馬鹿にするタイプもいるが、早めに鼻をおってあげることが重要。
ほめるとき、叱るときは結果にフォーカスする


#### 「発想展開」スタイル
遠回しな言い方をしない
ポイントポイントで確認や承認をする
メモを取り指示内容を確認する
ほめるとき、𠮟るときは結果ではなく人にフォーカスする


#### 「協調支援」スタイル
仕事のやり方や、途中のチェックを細かく求めるので受け入れてあげる
声がちいさく聞こえないことがあるため聞き漏らしに注意
感謝されることを強く求めるタイプなので「ありがとう」を必ず伝える
ほめるとき、叱るときはプロセスにフォーカスする
※みんなの前でほめるのではなく、こっそりほめるとよい


#### 「分析計画」スタイル
正確性を求める
Why明確でないと動かない
ほめるとき、叱るときは結果にフォーカスする
※技術的な内容をほめると効果的

## まとめ
観察を続けるうちに違うタイプかもしれないのでよく観察する
あくまで傾向なので本人とのコミュニケーションを重要視すること。

#### 人を叱るときの注意点
下に行くほどショックが大きくなる
↓結果を否定する
↓行動を否定する
↓存在を否定する
受容して○○してほしいと伝えるようなしかり方を意識する
※次の行動を促してあげること。

以上
NovelAIのプロンプトを管理・調整するChrome拡張を作りました

https://chrome.google.com/webstore/detail/naimagicwand/mpopocllkpjpdibiekfldhdodchadike

# 何ができるの？

ざっくり3つの機能があります。

### 1. プロンプトエディター

プロンプトを対象に以下のことができます。

・プロンプトの追加、編集、削除
・プロンプトの強調{}、弱化[]の数変更
・プロンプトの順番変更
・プロンプトの一時非表示

![タイトルなし.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312085/99ebdc65-322f-9ece-dd66-4e7ef3011252.gif)


### 2. プロンプトブックマーク

お気に入りのプロンプトを名前をつけて保存することができます。

![prompt bookmark.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312085/2625a953-1381-43be-5183-93ef6a63c269.gif)

欲しいとのコメントがありましたので、インポート・エクスポート機能も実装しました(2022/12/4)

![Screenshot from 2022-12-04 17-18-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312085/f7aaba9c-d09e-6cdd-d6c7-6ed474088f11.png)


### 3. プロンプト抽出

NovelAIで生成された画像からプロンプト、ネガティブプロンプト、その他メタデータ(ステップ数など)を抽出します。
抽出したプロンプトはエディターで編集、ブックマークに登録することができます。

![タイトルなし.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312085/f018bebf-98fb-e8a5-bb46-94429d6754d0.gif)

# 雑記
NovelAIめちゃ楽しいんですがプロンプトの細かい調整をしたい時、"あの"入力フォーム内で頑張って順番変えたり、強調の数を変えるのが辛すぎました。
そして折角いい感じになったプロンプトを毎回スプレッドシートに保存するのにもしんどさがありました。
というわけでVue3の勉強がてら、自分がとりあえず最低限欲しい機能を持ったChrome拡張を作りました。
(※自分が見つけられていないだけで、もう二番煎じだったらスミマセンmm)

実装もデザインも何もかも手抜きですが、そのうちNovelAI公式がもっといい感じのエディタとブックマーク機能を実装してくれると思いますので、それまでの繋ぎとして使おうと思っています。

もし同じお悩みの方がいましたら、使ってみてください。

https://chrome.google.com/webstore/detail/naimagicwand/mpopocllkpjpdibiekfldhdodchadike

# リポジトリ

https://github.com/hassoubeat/NAI_magic_wand

さくっと作るだけのつもりだったのでTypeScriptを入れなかったんですが、後からやっぱり入れるべきだったと後悔しています。
[salesforce] Apex Trigger 分岐方法によるパフォーマンスの違い

# Apex Trigger 分岐方法によるパフォーマンスの違い

salesforceプラットフォームでトリガを書く際、以下のような記述をよく見かけます。

```
trigger contactTrigger on Contact (before update,before insert,after update,after insert) {
    if(trigger.isBefore && trigger.isInsert){
        system.debug('before insert');
    } else if(trigger.isBefore && trigger.isUpdate){
        system.debug('before update');
    } else if(trigger.isAfter && trigger.isInsert){
        system.debug('after insert');
    } else if(trigger.isAfter && trigger.isUpdate){
        system.debug('after insert');
    }
}
```

が、トリガコンテキストには以下のようなパラメータがあるんですよね。
operationType

これを使って描くとこうなります。

```
trigger contactTrigger on Contact (before update,before insert,after update,after insert) {
    switch on trigger.operationType{
        when BEFORE_INSERT {
            system.debug('before insert');
        }
        when BEFORE_UPDATE {  
            system.debug('before update');
        }
        when AFTER_INSERT {
            system.debug('after insert');
        }
        when AFTER_UPDATE {
            system.debug('after insert');
        }
    } 
}
```

トリガは200件に1回動くので試しに400件のレコードを挿入してパフォーマンス比較してみたいと思います

結果は、
- ifで書いた方
Maximum CPU time: 240 out of 10000
- switchで書いた方
Maximum CPU time: 220 out of 10000

ifで書いた方が時間がかかっていますね。これから新規で鳥が作成する場合はswitchで書こうと思いました。
さまざまな平均

# 平均

データの代表値の一種。

|平均の種類|概要|平均値$\bar{x}$の導出式|
|:---|:---|:---|
|算術平均|和の平均|$\frac{\sum_{i=1}^nx_i}{n}$|
|相乗平均(幾何平均)|伸び率の平均|$\sqrt[n]{x_1\cdots x_n}$|
|二乗平均|絶対値の平均|$\sqrt{\frac{\sum_{i=1}^nx_i^{2}}{n}}$|
|調和平均|速度の平均|$\frac{n}{\sum_{i=1}^n\frac{1}{x_i}}$|

# 算術平均

```math
\bar{x} = \frac{\sum_{i=1}^nx_i}{n}
```

通常、平均はこちらのことを言う。

# 相乗平均 

```math
\bar{x} = \sqrt[n]{x_1\:x_2\cdots\:x_n}
```

伸び率を平均する。

# 二乗平均

```math
\bar{x} = \sqrt{\frac{\sum_{i=1}^nx_i^{2}}{n}}
```

絶対値を平均する。
標準偏差は、偏差の平均なので、二乗平均で算出する。

# 調和平均

```math
\bar{x} = \frac{n}{\sum_{i=1}^n\frac{1}{x_i}}
```

速度を平均する。
AtCoderをjavascriptで解くとき、vscodeとquokka.jsを活用する。

vscode でAtCoderの解答を作成して→プラウザに張り付けてコードテスト→以下正解するまで繰り返し
の作業を少し改善できた話です。
類似の方法や、そもそもnodeを入れればいいのかもしれません。

## 注意事項（2022/10/28追記）
改行コードがwindowsの場合、\r\n linuxでは\nのため、
\nでsplitすると、windows側では\rが残ってしまう。
```
/\r\n|\n|\r/
```
でsplitするとよい。


## 環境
* vscode
* windows10
* quokka.js [リンク](https://quokkajs.com/ "quokka")

## できること
* コードテストのように、標準入力を与えて、出力を確認できる。
* コードを修正すると、即時に結果が確認できる。
* コードの修正なしに提出できる。

## フォルダー構成など
quokka.jsをvscodeにインストールした状態で、以下のようなファイル構造にしたとします。
```
atcoder
├── A.js
├── dev
│   └── stdin
```
vscodeでは、atcoderフォルダーを開いた状態にします。
stdin に標準入力を記載します。
A.jsには、提出するスクリプトを記載します。

私は、いつもこちらの記事の方法で標準入力の値を取得しています。
（毎回助かっており大変感謝しています）

https://qiita.com/cotton11aq/items/a8b93d61fca8f83ffaae

こちらのやり方を一部修正します。
具体的には、readFileSyncへ与えるpathをatcoderで提出する際と、ローカル環境で切り替える必要があります。

```javascript
let path = require("fs").existsSync("/dev/stdin") ? "/dev/stdin" : "./dev/stdin";
main(require("fs").readFileSync(path, "utf8"));
```

こうすると、atcoder環境とローカル環境で切り替えることができます。
（ローカル環境を優先で三項演算子を記載すると、かなり遅くなるので注意が必要です。）
"./dev/stdin"は固定ではないので、実際はフォルダー構成も自由です。

## 実行方法
quokka.jsのショートカットキー
Ctrl + k + q 
もしくは、表示→コマンドパレット→quokka.js:start on current file
で実行できます。

![スクリーンショット 2022-10-25 224100.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/95026/3cff9bba-a36e-5cc4-18ba-15f60012305d.png)

実行すると、ターミナルの位置の出力と、console.logの行（9行目）に結果が表示されます。

スクリプトの修正を検知して、自動的に再実行されるので便利です。

## 注意点
* stdin 側のテキストを変更して保存しても、結果に反映されない（js側のファイルを変更する必要がある？）


## まとめ
* vscodeとquokka.jsを使うと、nodeのインストールなしに、実行結果確認できます。
* いちいちコードテストに提出して確認する手間が省けます。
* 標準入力を変更しても結果に反映されないので注意が必要です。

参考になれば。
UdemyでVue.jsの基礎知識 いいなと思った事メモ inputタグ内の省略した記載方法　

### inputタグ内の省略した記載方法　

通常のhtmlの記載でinputタグを記載すると下記のようになる。
```html:htmlでの記載
<input name="" value="" placeholder="">
```

Vue.jsの場合、下記のようにdata部にオブジェクトを宣言することで各属性の値にすることが可能。
```js:dataの一部
data(){
    return{
        formInput:{
            name:'your_name',
            placeholder: 'お名前を入力してください。'
        }
    }
}
```

各属性の値にする為には、下記のように記載する。
```vuejs:vue.jsで記載
<input v-bind="{name:formInput.name,　placeholder:formInput.placeholder}">
```

属性とオブジェクト名が一致している時、下記のように記載を省略することができる。
```vuejs:vue.jsで省略して記載
<input :formInput>
```
MicroStrategyにおいて同じアトリビュートにビューフィルタを設定する方法

# はじめに
こんにちは。
本記事ではMicroStrategyにおいて同じアトリビュートにビューフィルタを設定する方法をご紹介します。

# ビューフィルタとは
MicroStrategyにはレポートフィルタとビューフィルタがあります。
本記事のご紹介のまえに2つのフィルタの違いをイメージ図にて説明いたします。
レポートフィルタはデータベースからデータを取得する箇所でフィルタをかけるのに対し、
ビューフィルタはデータベースから取得する箇所ではフィルタをかけず、あくまでレポート上のデータに対して検索をかけるためのフィルタになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/064789d3-b5f9-70d2-0b14-ada7f6e26578.png)

# ビューフィルタの設定方法
ビューフィルタが表示されない場合は「ツール」＞「ビューフィルタ」にて表示させることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/f5b2c894-c901-bb3a-2898-b87e4abb85c2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/4d9448cf-1088-49a8-3425-24de77396247.png)
以下のビューフィルタに「コードが100もしくは200から始まる」という条件のビューフィルタを追加するケースを想定します。赤枠のデータを返すイメージです。
※本記事のデータはテストデータとして作成したデータです※
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/d6a58341-ed6e-4298-6c86-67787b0a6c48.png)

まずは「100から始まる」という条件を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/26c53916-6c4d-9c6b-c603-5ed5cd494213.png)
そのあとに「200から始まる」という条件を設定すると、「100で始まる」という条件が設定されてしまっているため、2つの条件を満たすデータがなく、データが返ってこなくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/48bbe5cb-5c84-b141-70b8-ca12f2505726.png)
このような場合は「および」を押下し「OR」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/027471e1-00e3-712f-e7b9-4b2ee6195aa0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/279ce9b6-9956-15a9-7462-722cce994da9.png)
そうすると以下の通り「100もしくは200から始まる」データが返されることを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/40b6a5af-9fff-d822-c8ab-12f6bc871779.png)

# さいごに
ビューフィルタの設定方法は簡単なので、ご活用いただければ幸いです。

以上になります。最後までご覧いただきありがとうございました。
ラズベリーパイでFireTVとフォルダを同期する

Fire TVとNasのファルダと同期させたい事があります。
スマートフォンならFolderSyncやSyncThingなどのアプリで同期できますが
Fire TVでちゃんと動く同期アプリが見つからなかったので
ラズパイからadb-syncで同期することにしました。


## 準備
### FireTVのADBデバッグを有効化
1. FireTVで`設定` → `マイFire TV` → `バージョン情報`を開き
1. `Fire TV Stick`を7回クリックで開発者を有効化
1. `設定` → `マイFire TV` → `開発者オプション`を開く
1. ADBデバッグをオンにする

### FireTVのIPアドレスの確認
`設定` → `マイFire TV` → `バージョン情報`の`ネットワーク`で確認


### ツールのインストール
```bash
sudo apt install -y git android-tools-adb
git clone https://github.com/google/adb-sync
```

adbで接続
```
# IPアドレスはFireTVのIPアドレスに置き換え
adb connect 192.168.0.xxx:5555
```

`このコンピューターを常に許可`にチェックを入れてOKを選択

## 同期

```bash
# ./adb-sync/adb-sync -2 -s {FireTVのIPアドレス}:{ポート(5555)} ｛ラズパイのパス} {FireTVのパス}
./adb-sync/adb-sync -2 -s 192.168.0.xxx:5555 ./sync /sdcard
```

ラスパイのパスの最後に`/`がない場合はFireTVのパスにラスパイのフォルダが挿入される

```bash
./adb-sync/adb-sync -2 -s 192.168.0.xxx:5555 ./sync /sdcard
```

の場合は`./sync` と `/sdcard/sync`と同期される(存在しなければ作成される)
別名で同期する場合はラスパイのパスの最後に`/`をつける
```bash
./adb-sync/adb-sync -2 -s 192.168.0.xxx:5555 ./sync/ /sdcard/test
```
で`./sync`と`/sdcard/test`が同期される

## サービス化
### 実行スクリプト
```bash
nano SyncFireTV.sh
```

```bash: SyncFireTV.sh
#!/bin/bash

host=192.168.0.xxx:5555
adb connect ${host}
home/pi/adb-sync/adb-sync -2 -s ${host} /home/pi/sync /sdcard
```
```bash
sudo chmod +x SyncFireTV.sh
```

### timerの作成
```bash
sudo nano /etc/systemd/system/SyncFireTV.timer
```

30分ごとに同期させる
```bash:/etc/systemd/system/SyncFireTV.timer                                                                       
[Unit]
Description=Sync Fire TV  

[Timer]
OnBootSec=10min
OnUnitActiveSec=30min

[Install]
WantedBy=multi-user.target
```

### serviceの作成
```bash
sudo nano /etc/systemd/system/SyncFireTV.service 
```

```bash/etc/systemd/system/SyncFireTV.service
[Unit]
Description=Sync Fire TV 

[Service]
ExecStart=/home/pi/SyncFireTV.sh
User=pi
Group=pi

[Install]
WantedBy=multi-user.target
```

### サービスの有効化
```
sudo systemctl enable SyncFireTV.service
sudo systemctl enable SyncFireTV.timer
sduo systemctl start SyncFireTV.service
sudo sytemctl start SyncFireTV.timer
```
【Mac】コマンドで通知を表示する方法

## 通知を表示するコマンド

Macを使用してコマンドで通知を表示するには以下のようにコマンドを実行します。

```zsh
osascript -e 'display notification "通知の内容" with title "タイトル" subtitle "サブタイトル"'
```

実際に実行すると以下のように通知が表示されます。
通知音はなりません。

```zsh
osascript -e 'display notification "テストの通知です。" with title "タイトル" subtitle "サブタイトル"'
```

![19DCE234-2E93-457F-876A-47F92FCEFFB3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342443/7172e3e2-0f9e-bf68-4de2-9efbad786f79.png)

また通知のスタイルは「スクリプトエディタ」の通知設定で変更できます。  

![32D79129-0A52-40DF-BC79-EBE9EABB1B3Cのコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342443/9025a1ef-9c17-6010-ed96-603e1e618470.png)

通知が表示されない場合は「集中モード」の設定も合わせて確認してください。
Critical section、Mutex、Semaphoreとは

並列処理のやり方について調べてたらこれらの単語が出てきたので調べてみました。

## Critical section（危険領域）とは
- OSにおいて、データの一貫性を保つために、他のプログラムに邪魔されずに（Atomicに）実行されないといけない宣言やインストラクション
- 変数の読み書き等
- Sexy zoneの弟グループではない

https://www.geeksforgeeks.org/g-fact-70/

## Mutexとは
- 語源はMutual Exclusion（相互的排他）
- OSにおいてCritical sectionを安全に実行するための仕組み
- 一つの資源（メモリ等）に対してあるタスクが書き込みや読み込みを行っている間は他のタスクがアクセスできないようにロックする
- 可愛い動物の名前ではない

## Semaphoreとは
- Mutexをより一般化したもので、OSにおいて一つの資源に対して1〜複数のあらかじめ決められた数のタスクがアクセスできるよう管理する仕組み/そのためのオブジェクト
- 基本の考え方 
    - Semaphoreオブジェクトには全てのスレッドからアクセスできる
    - Semaphoreの内部にカウンターがあり、今何個のタスクがアクセスしてるかSemaphore自身が把握している
    - 各スレッドはCritical sectionの前後でSemaphoreのAcquireオペレーションとReleaseオペレーションを行う
    - SemaphoreのAcquireオペレーションをするとアクセスできるタスクの数が一個減る
    - SemaphoreのReleaseオペレーションをするとアクセスできるタスクの数が一個増える
    - Semaphoreのカウンター上限に達するとそれ以上Acquireオペレーションができなくなる = 他のタスクがCritical Sectionに進入できなくなる
    - Critical sectionを終わったタスクがReleaseオペレーションをしてSemaphoreに空きができると他のタスクがAcquireできるようになる（これが「いってよし！」の状態みたいだからsemaphore=旗振り機と呼ばれる）
    - めでたしめでたし
- 各言語でsemaphore用のクラスがあるっぽい
- 並列処理においてはサーバーがパンクしないようにスレッド数を制御するために使われることが多いらしい
- Javaの例（引用元: https://www.baeldung.com/java-semaphore）
```java
class LoginQueueUsingSemaphore {

    private Semaphore semaphore;

    public LoginQueueUsingSemaphore(int slotLimit) {
        semaphore = new Semaphore(slotLimit); // カウンターの上限を指定しsemaphoreを作る
    }

    boolean tryLogin() {
        return semaphore.tryAcquire(); // semaphoreのカウンターが-1される
    }

    void logout() {
        semaphore.release();　// semaphoreのカウンターが+1される
    }

    int availableSlots() {
        return semaphore.availablePermits();
    }

}
```
https://www.geeksforgeeks.org/mutex-vs-semaphore/
【Circleci】`method_missing': undefined method `web_console' forみたいなエラー

# 状況
CircleciにRspecを導入するために、ciricleci/configをいじっていると、Circleciから以下のようなエラーを吐かれた。
```
`method_missing': undefined method `web_console' for #<Rails::Application::Configuration
以下略
```
# 対処法
Gemfileの```group :development do```の中に置かれていたweb_console gemをテスト環境でも使えるように```group :development, :test do```へ移動。
当たり前だが、Rspecはテスト環境で実行される。
Parallels Desktopを使ってM1 MacにWindows11をインストールしてライセンス認証する

# 概要
Parallesを使ってM1 MacにWindows11をインストールして、手持ちのプロダクトキー(Windows8.1 Home x86/x64)でライセンス認証できるか確認する。

# 環境
- MacBook Pro (M1): macOS 15.3.2
- Parallels Desktop 20 for Mac Prp Edition バージョン 20.2.2 (55879)

# 事前準備
Parallels Desktopをインストールする。

# Windowsのインストールとライセンス認証
1. Windows11 Homeをインストールする。手順は[Install Windows on a Mac with Apple M-series chip](https://kb.parallels.com/en/125375 "Install Windows on a Mac with Apple M-series chip")を参照。
1. ライセンス認証を行う。手順は[Windowsのライセンス認証を行う](https://support.microsoft.com/ja-jp/windows/windows-%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E8%AA%8D%E8%A8%BC%E3%82%92%E8%A1%8C%E3%81%86-c39005d4-95ee-b91e-b399-2820fda32227 "Windowsのライセンス認証を行う")を参照。

https://kb.parallels.com/en/125375

https://support.microsoft.com/ja-jp/windows/windows-%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E8%AA%8D%E8%A8%BC%E3%82%92%E8%A1%8C%E3%81%86-c39005d4-95ee-b91e-b399-2820fda32227

# 結果
```shell
PS> (Get-WmiObject Win32_OperatingSystem).Caption
Microsoft Windows 11 Home
PS> (Get-WmiObject Win32_OperatingSystem).OSArchitecture
ARM 64 ビット プロセッサ
```
Windows11 Home ARM64がインストールできて、Windows8.1 Home(リテール版)のプロダクトキーでライセンス認証することができた。

# 追記
Windows11インストール直後の状態では、エクスプローラーからOneDriveが見えなかったので、[OneDrive ARM64 version for Windows](https://go.microsoft.com/fwlink/?linkid=2282608 "OneDrive ARM64 version for Windows")をダウンロードしてインストールした。

https://support.microsoft.com/en-us/office/choose-between-the-64-bit-32-bit-and-arm-version-of-onedrive-9d36d262-4fc2-4019-a8f6-314ef41a29d1

# 参考情報
https://learn.microsoft.com/ja-jp/windows/win32/cimwin32prov/win32-operatingsystem
インフラ環境を構築し、移行した際に出たエラーについて

# この記事について
今回初めてAWSを使い、VPCやサブネットを設定しインフラ環境を構築してみました。
その中で出たエラーについてまとめ、次回同じことで時間を取らないために書いていきたいと思います。

# エラーについて
今回環境を移行するにあたって2つエラーが出ました。
## 1つ目のエラー
AMIを使用し新しく作ったEC2へCLIを使用しアクセスした際に「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!〜」エラーが出ました。
###### エラーの内容
インフラ環境が変更されたことで、ローカルで保存されているホスト鍵の検証に失敗した様です。
###### 対応
```
$ ssh-keygen -R xxx.xxx.xxx.xxx
```
xxx.xxx.xxx.xxxに接続したいEC2インスタンスのパブリックIPアドレスを記述し実行することで、ローカル環境に存在する前回接続した際のホスト鍵の情報を削除してくれます。
これで無事EC2インスタンスに接続することが出来ました！
## 2つ目のエラー
EIPを付け替えて完璧！と思いURLを入力し接続したら、今度はブラウザ上に502BadGatewayエラーが出ました。
###### 対応
EC2上でrailsが起動していませんでした...
なのでEC2にアクセスし
```
ec2 $ rails s -e production
```
railsを起動。
無事前回と同じURLでブラウザ上に表示することが出来ました！

以上です。
[python] distutilsが非推奨でwarningが出る時の解決

pylintにsetup.pyをかけたところ，

```pylint setup.py
setup.py:12:0: W0402: Uses of a deprecated module 'distutils.core' (deprecated-module)
```

と警告が出力された．


【解決方法】
python3.10および3.11から，distutilsが非推奨となる．
(https://setuptools.pypa.io/en/latest/deprecated/distutils-legacy.html)

新たにsetuptoolsを使う必要がある．

```setupt.py
from distutils.core import setup
```

から

```setup.py
from setuptools import setup
```

に変更することで警告を解消．
Javaで何か作ってみる(2022/10/25 Day5)

## 今日やった事
- Udemyの動画教材を少し見た。（**J1-04_ソースコードの基本ルール** まで見た。）
## 参考にしたもの
- [【超絶丁寧解説】Javaプログラミングをゼロから学ぶ！絶対挫折させない「基礎入門」講座【講師評価4.3】](https://www.udemy.com/course/uz-java-kiso/)
    &rarr; Javaの勉強に使用しているUdemyの動画教材。
## 所感
- 例のお注射の副反応が昨日より酷く、勉強どころではなかった。
## 明日の予定
- 明日には副反応が落ち着いていると願うばかり。
- 引き続き、動画教材を進めていく。
kaggleでインターネットオフの時にzipをダウンロードする方法

# 背景  

　そうなんですよね。あるんですよ。kaggleって、インターネットオフの要件が課されていて、ノートブックも提出しないといけないのに、インターネットは使えないという、意味不明な意地悪なコンペ、あるんですよね。  
　そこで激怒しないのがいえろーでっていう。ということでこんなコンペでもバンバンライブラリを使ってやります。  

# 内容  

　インターネットオフの要件の時に、どのようにライブラリを使えばよいかについては、以下の記事が詳しいので、その通りにやれば大概できます。ライブラリに必要な複数のモジュールをインストールしないといけないときはめんどくさいですけどね。  
https://an-engineer-note.com/?p=241

　でもですね。あるんですよ。whl形式なら大抵この方法でインストールできるのですが、zipのままインストールしないといけないライブラリが。私の知る限りだと、自然言語処理のスペルミスを直してくれるautocorrectとか、文法誤りを訂正するgramformerというものとか。https://github.com/PrithivirajDamodaran/Gramformer  

　でね、このzipファイルになっていると、パスはどれをどう指定すればよいか分からないんですよ。「!python -m pip install --no-index --find-links=パス名 ライブラリ名」とかでやっても、何も見つからない。解凍したって見つからない...。

　結局どうすれば良いのかなーあきらめるしかないのかなーzipをwhlに変換する方法とかあるのかなーなどと色々調べていたのですが、ありました。インストールする方法が。  

　ライブラリ名のところを「～.zip」と、zipファイルの名前をそのまま指定すれば良いんです。はいそれだけです。ありがとうございました。  

# 参考

https://teratail.com/questions/165160
https://an-engineer-note.com/?p=241
Javaで何か作ってみる(2022/10/24 Day4)

## 今日やった事
- Udemyの動画教材を少し見た。（**J1-03_Javaプログラミングの手順**まで見た。）
## 参考にしたもの
- [【超絶丁寧解説】Javaプログラミングをゼロから学ぶ！絶対挫折させない「基礎入門」講座【講師評価4.3】](https://www.udemy.com/course/uz-java-kiso/)
    &rarr; Javaの勉強に使用しているUdemyの動画教材。
## 所感
- 動画を視聴するのみで、コーディングは全く出来なかった。
- 動画の内容が、基礎の基礎という感じで、自分のレベルと合っていない感じがして、  
物足りなさを感じた。
- 例のお注射の副反応で、頭痛、倦怠感が酷く、あまりやる気が起きなかった。
## 明日の予定
- 副反応がひどいと思うので、最悪何もできなくても良い。
- 引き続き、動画教材を進めていく。
ビデオカード とは

## 勉強前イメージ

グラボっぽいやつ？

## 調査

### ビデオカードとは

グラフィックボードとも言われており、コンピュータに取り付けて機能を追加する拡張カードの一種になります。
ビデオカードはビデオチップと呼ばれる演算処理やデータ伝送などの処理をCPUの代わりに行います。
特に3DCGなど高度な演算機能があるチップはGPUと呼ばれCGを用いた映像の加工などで使用されています。

元々初期のコンピュータはグラフィックスの表示が標準機能ではなかったので、
ユーザは後からビデオカードを購入して取り付けることが多かったです。
しかし現在ではマザーボードにチップのセットがつけられたり、CPUにビデオチップ相当の機能がつけられたりして
ビデオカードがなくても画像を表示することができるようになっています。
ゲームや映像、CGなどものによっては満足に動かせない場合もあり、専用のビデオカードやGPUを追加することもあります。

## 勉強後イメージ

グラボ、GPU、ビデオカードがよくわからんかったがなんとなくわかった。
AWSとかならGPUって言葉が使われることが多いけど、
PCならグラフィックボードとかのがよく聞くね。
どっちの言葉ってわけでもないけど、雰囲気理解した

## 参考

- [ビデオカード 【video card】 グラフィックボード / graphics board / グラボ](https://e-words.jp/w/%E3%83%93%E3%83%87%E3%82%AA%E3%82%AB%E3%83%BC%E3%83%89.html)
【セミナーレポ】Google＆Datadogさん共催のオブザバセミナーに参加してきました

Google Cloud Japanさん＆Datadog Japanさん共催の **「マルチクラウド環境とオブザーバビリティ」** というオフラインセミナーに参加してきました。

内容をざっくりシェアします。聴きながらの走り書きベースなので超雑ですみません！

※プライベートセミナーのため一般公開されているページ等はありませんが、私は会社経由でご案内をいただき同僚と参加。他のユーザー企業さんも複数いらっしゃいました。
レポ記事公開についてはご承諾をいただいています。（ありがとうございます！）


# セミナー内容の紹介

### アジェンダ
- Dash 2022およびGoogle Cloud Next 2022からの新機能など紹介
- SRE・オブザーバビリティ Deep Dive
- 懇親会

私の場合、実務でゴリゴリ使っているのはDatadogの方だけなのですが、GoogleさんからSREのお話が直接聞けるということで思わず申し込みました。


### Dash 2022およびGoogle Cloud Next 2022からの新機能など紹介

Datadogの主なユースケース
- クラウド移行
- 監視ツール一元化
- クラウドネイティブ監視（モダナイゼーション）

GCPでDatadogを使うメリット
- オンプレ/マルチクラウド監視一元化
- クラウドと請求一本化
- GCPクレジット活用

事例
- メモアプリ某社：GCP移行を9ヶ月想定→70日へ短縮
- アパレルEC某社：AIOps機能でアラートを日あたり10,000件→20件に削減

※DatadogでいうAIOpsのイメージとして、私はWatchdogを思い浮かべながら話を聞いていました。他にもあるかも知れません。

##### 2022年のアップデート

セキュリティ：最近一番アップデートが多い。PCIはじめコンプラ準拠とか
- 既存機能　CWS：eBPFでホスト監視など
- CSM：セキュリティ統合ダッシュボード（Sec部門とも共有していきたい思想）
- ASM：Datadog上で不審アクセスをそのままブロック可能

コラボレーション：ダッシュボード、インシデント管理など
- サービスカタログ：構成サービス一覧＆所有者を明記
- CoScreen：開発、トラシュー中の画面共有

オブザーバビリティパイプライン：色んな製品経由のテレメトリーを一元集約
- 新機能：GUIエディターが追加
- ユースケース：不要データ加工削除、移行中ルーティング、転送状況可視化

小噺として、Dashでは他社の大規模イベントと異なりCEOのキーノートを3分ほどで終わらせてしまい、さっさと各チームからの新機能紹介に時間を割くというお話があり興味深かったです。ビジョンよりも技術を重視する同社の姿勢が表れているとのこと。


### SRE・オブザーバビリティ Deep Dive

あの有名なGoogle 山口さんから直々にSREのお話を聞ける素敵なセッションでした。
ただし、今日たまたま体調が悪かったとのことでリモート講演でした。それでもありがたい。

SREとは
- システムの信頼性を維持するための方法論。全組織で取り組む必要がある
- 原則
    - いかなるシステムでも最も重要な「機能」は信頼性 （100%ではなくバランスよくユーザーのニーズに応える）
    - 信頼性を決めるのは監視システムではなく「ユーザー」である
- 運用保守コストは構築よりも長期なのでバカにならない
    - 開発＆運用チームの目的が合致していないのが問題（アジリティ vs 安全性）
    - 共通の基準を「ユーザーの信頼性」にして全部署のインセンティブを揃えるべし
    - SLOを用いる
        - SLO > SLA（SLO未達の場合の規約）
        - 100%を目指さない分、投資に回す

オブザーバビリティとは
- 原義：制御理論
    - システムで言うと：運用やビジネスに必要な判断をするための内部情報を把握できること
    - オンプレの場合
        - アプリケーション：取得に工夫が必要
        - インフラ：自ら取得・整理が必要
    - クラウドの場合
        - アプリケーション：取得に工夫が必要（変わらず）→ ここがより重要
        - インフラ：自動取得が可能
    - ただ取得するのではなく、SLI選別＆分析しやすさが必要

SREを実践するときの流れ
1. サービス価値＆CUJの確認
    - ユーザージャーニー整理
    - 過去の問い合わせ確認
    - デリバリーのリードタイム、レイテンシー
    - 優先度づけ
        - 歯磨きジャーニー（定期的に発生するイベント）
        - ヒポタルジャーニー（たまにしかないけど重要なイベント）
2. SLI＆SLO設定
    - SLI：（良いイベント/有効なイベント）x 100%
    - 候補
        - リクエスト/レスポンス
        - データ処理
        - ストレージ
    - 期間＆目標%を決めればSLOになる
        - 残りの%がエラーバジェットになる（チャレンジできる失敗）
3. 計装＆テレメトリー収集
4. アラート設定
    - エンジニアがアクション可能な内容＆頻度にする
    - エラーバジェットが「なくなりそう」な少し前に鳴らす
5. SLI＆SLO見直し → 2.に戻って以降繰り返し


# 感想

SREというキーワードとは長いこと付き合っていたつもりでしたが、山口さんから直々に「SREとは」「オブザバとは」という話を聞けたことで、改めて論点がぼやけがちな「SRE」について腹落ちするメインストリームな考え方をおさらいすることが出来ました。

また、渋谷ストリームのGoogleさんオフィスもめちゃ綺麗でした。ドロイドくんと写真撮影してきました✌️
![スクリーンショット 2022-10-25 21.47.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/4b65b2a5-c9c3-0498-17d9-98e4b5bb4dd0.png)
Amazon Elastic Inference とは

## 勉強前イメージ

elastic ○○ っていうサービス多いよね。
EC2の構築のときに項目として見たことがある

## 調査

### Amazon Elastic Inference とは

略して、Amazon EIとも言われています。
EC2と [SageMaker](https://qiita.com/miyuki_samitani/items/748863f326e8d871c4ac) 、ECSのインスタンスにGPUをアタッチさせることができる機能になります。

EC2の構築時ではこのように設定が出てきます。

![11インスタンスを起動 _ EC2 Management Console - Google Chrome.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/1d72be4a-5b6b-127b-3686-5b770d30a13d.png)

またGPUとはGraphics Processing Unitの略で3Dグラフィックの画像処理とかで使う演算処理を行う半導体チップのとこを指します。
よくオンラインゲームをする人が 「グラボ新しいのにした」 とか言ってるのはGPUがついた部品を変えて画像処理の性能を上げているようなイメージです。
その演算処理をするものをEC2やSageMakerやECSにくっつける機能をAmazon EIと言います。

元々EC2のインスタンスタイプにもGPUインスタンスがあり使用することは出来ますが
CPUインスタンスを使いながらEIをアタッチすることで低コストで推論を行うことが出来ます。

## 勉強後イメージ

正直前に続いて機械学習とかはよく知らないんだけど
処理するためのプロセッサをEC2に外付けできるってイメージなのかね。
そっちのほうが安いのね。

## 参考

- [Amazon Elastic Inferenceの概要とメリット](https://www.skyarch.net/column/amazon-elastic-inference/)
- [AWS Elastic Inferenceのススメ](https://ricky-ban.hatenablog.com/entry/2020/12/30/021812)
EdTech [X-Techの派生分野③]

# はじめに
IT×ビジネスという視点で週1本記事を投稿しています。
もし興味のある方は下のリンクから他の記事も見ていただければ幸いです。
 [@7_inai_](https://qiita.com/7_inai_)

本記事では、X-Techの派生分野③としてEdTechについてまとめます。
X-Techについては[こちらのリンク](https://qiita.com/7_inai_/items/126f512fa47823237500)からご確認ください。

# EdTechとは
EdTech(エドテック)とは`Education(教育)とTechnology(技術)を組み合わせた造語で、教育と情報技術を掛け合わせた領域`を指します。

# EdTechの事例
### ■オンライン学習
コロナウイルスの流行により一気に広まりましたが、ネットワーク環境さえ整っていれば場所や時間を問わずに授業を受けることができます。これにより教育格差の改善につながります。

### ■アダプティブラーニング
一人一人に最適化された学習内容を提供する学習方法をアダプティブラーニング(適応型学習)と言います。
アダプティブな学習を進めていくことで、苦手な箇所や得意な箇所が自身の学習データが蓄積されます。そのデータをAIで解析することで、各人にあった学習コンテンツを提供することができます。

# EdTechのビジネスモデル
### ■スタディサプリ
スタディサプリは、リクルートが運営している月額会員制のサブスクリプションモデルです。今までは法人をメインの顧客としていたリクルートですが、スタディサプリでは個人をメインの対象としています。スタディサプリでは従来の学習アプリと比較して、動画での講義をメインとしています。動画配信にしたことで、自宅でありながらも受動的に学習することができます。

### ■DMM英会話
DMM英会話は、オンラインで講師とマンツーマンで英会話のレッスンができるサービスです。オンライ英会話のサービスは随分前からありますが、ネット環境を各家庭が充備するようになったことが流行の要因の1つです。

### ■Udemy
Udemyはアメリカの企業が運営するオンライン学習プラットフォームで、ITスキルの学習をすることができます。Udemyの特徴は膨大なコンテンツの量ですが、そのコンテンツの多くは、Udemyが作成したものではなく、講師になりたい個人が作成しています。また、インターネットを介して世界中の人に届けているため、5000万人もの会員数を誇ります。

# 終わりに
今回はEdTechについてまとめました。ITについてあまり書くことがなく、サービスの内容メインになってしまいましたが、AIの発達や、整備されたネットワーク環境がEdTech業界の流行に大きく関わっています。筆者は本メインで学習をしていますが、IT技術の進歩に伴ってEdTech系のサービスも益々充実するでしょう。

最後までお付き合いくださりありがとうございました。
LINE SeedフォントをSlackで使う

LINEさんが日本語フォントをリリースしました。

- [LINE Seed (日本語)](https://seed.line.me/index_jp.html)
- [日本語版コーポレートフォント『LINE Seed JP』をリリースしました。](https://linecreative.jp/n/n67703434de5f)

フォントに関しての詳細は上記のサイトに書かれているので割愛します。2022/10/25時点では、フォントの有料販売を除けば、個人・企業ともに自由に無料で利用可能です。(詳しくはライセンス読んでください)

私の感想としては、英語・日本語混在環境において読みやすくて柔らかいフォントで、好感触を持っています。ヒラギノ丸ゴシック以上に柔らかさを感じます。

SlackをLINE Seedで表示するのって良いのでは？と思い立って、設定方法を調べたメモを記しておきます。

## 動作確認環境

いわゆる、MacOS版Slackで試しています。

- Mac OS Monterey (v12.6)
- Slack (v4.28.184)

恐らくWindowsでも同じ方法で大丈夫だと思いますが、私は試していません。

## インストール

上記サイトからダウンロードしてMacOSにインストールしましょう。

雑にまとめると、こんな流れです。

1. フォントのZIPファイルをダウンロード
2. ZIPファイルを展開
3. Desktop/OTFのフォルダに移動
4. 4種類あるフォントファイルをそれぞれダブルクリック
5. それぞれでプレビューが開くので `フォントをインストール` をクリック

[こちら]([https://support.apple.com/ja-jp/HT201749](https://support.apple.com/ja-jp/HT201749))が詳しいです。

## Slackに設定

Slack上で以下のスラッシュコマンドを使って設定します。
自分宛のDMなどで設定するのが良いでしょう。

```
/slackfont LINE Seed JP_OTF Regular
```

以上です。

リセットしたいときはフォント指定部分を空にしてスラッシュコマンドを呼び出します。

```
/slackfont
```

## ちなみに

2022/10/25現在では、Slackのカスタムフォント設定は試験的・一時的なもののようです。Slackアプリを再起動するとリセットされてしまいますので、再起動のたびに設定が必要です。
Nuxt3(Nitro)backend Server API firebase認証からserver middlewareを使って、認証ルートのみJWTトークンを検証する

## やりたいこと

Nuxt3バックエンド
APIバックエンドをNuxt3で作る
認証はfirebaseでBearer tokenがクライアント側からくる
認証が必要がルートのみ、Server側でtokenをチェックする
なるべくスマートに実装したい

## クライアント側

クライアント側は別に何でも良い。
以下はNuxt2でfirebaseを作ったtwitter認証の例

```vue.js
async signin() {
      const provider = new this.$fireModule.default.auth.TwitterAuthProvider()
      await this.$fire.auth
        .signInWithPopup(provider)
        .then(async (result) => {
          const token = await result.user.getIdToken(true)
          this.$axios.setToken(token, 'Bearer')
          this.$axios.$get('/api/authed/me')
        })
        .catch((error) => {
          // Handle Errors here.
        })
    },
```

## Nuxt3 バックエンド側

ポイントだけ押さえたディレクトリ構成
・server/api/authed/** が認証が必要なAPI
・server/api/middleware/auth.tsでtokenを検証
・server/utils/auth.tsでfirebaseに接続（これはどこに置いてもよい）


```
.
├── server
│   ├── api
│   │   ├── authed
│   │   │   └──  me.get.ts
│   ├── middleware
│   │   └── auth.ts
│   └── utils
│       └── firebase.ts
```


## firebaseに接続

firebase-adminが入ってて、firebaseへの接続設定はうまくいっているものとしますよ。これはNuxt3とは関係ないので省略します。

```utils/firebase.ts
import { initializeApp, applicationDefault } from 'firebase-admin/app'
import { getAuth } from 'firebase-admin/auth'
initializeApp({
  credential: applicationDefault()
});
export default function verifyIdToken(token: string) {
  return getAuth().verifyIdToken(token)
}

```

firebaseのverifyIdToken()がどこからでも使えるようにexportしました。

## ミドルウェアを設定する

```middlware/auth.ts
import verifyIdToken from '~/server/utils/firebase'
export default eventHandler((event) => {
    if (event.req.url.startsWith('/api/authed')) {
        const token = getRequestHeader(event, 'Authorization').split('Bearer ')[1]
        return verifyIdToken(token).then((decodedToken) => {
            event.context.auth = decodedToken
        }).catch((error) => {
            throw createError({ statusCode: 403, statusMessage: "Forbbiden, Not authenticated."});
        });

    }
});
```

ここが最大のポイント。Nuxt3のserverMiddlewareで、すべてのAPIリクエストに対して実行する定義を設定します。
ただし、/api/authed以下のみ認証をチェックします。
Authorizationヘッダを取得して、utils/firebase.tsで定義したverifyIdTokenを実行。エラーになった場合は403を返します。
認証が通った場合は、以後の処理側でuserdataを参照できるように、contextへ入れておきます。

## 認証後ルート

```authed/me.ts
export default defineEventHandler((event) => {
    console.log('[Auth?] ' + event.context.auth)
    return event.context.auth
})
```

認証を通したAPIroute以下では、event.context.authに認証済みユーザーのデータが入っているので、後は煮るなり焼くなり好きにします。

## 参考

https://github.com/unjs/nitro/discussions/338#discussioncomment-3525527

なんかこの辺の実装は自分でやれって感じのスタンスなんですかね、Nuxt3。

↓こんなふうにできたらいいんですけど（現時点ではできません）


```
export default defineNuxtConfig({
    nitro: {
        routeRules: {
            '/api/authed/***': {
                middleware: AuthedRoutes
            },
        }
    }
});

```

APIをauthed/以下に分けたくない場合

https://github.com/unjs/nitro/discussions/338#discussioncomment-3527833

defineAuthenticatedEventHandlerを作ってラップする方法もあるけど、間違って認証が必要なところでdefineEventHandlerを使ってしまうと認証なしでAPIを通しそうなので怖いのでこちらは採用しませんでした。
Amazon SageMaker とは

## 勉強前イメージ

見たこともないかも

## 調査

### Amazon SageMaker とは

セージメーカと読み、機械学習モデルを構築するフルマネージドのサービスになります。
機械学習モデルとはAIの核の部分で、モデルを使って画像認識や数値の予測を決めています。
例えば猫の画像をたくさん学習させて、猫と犬の画像を出したときにどっちが猫かを決めるということをします。
機械学習のモデルを構築するのは機械学習には必須になります。
ただこの機械学習モデルの構築・運用には様々な問題があります。

### 機械学習モデル構築時の問題

- 環境の構築

機械学習モデルを作成するためには、モデルを作るための環境を用意する必要があります。
機械学習にはたくさん計算が必要になるためリソースを効率よく使ったり、そもそも作成するためにインストールなども必要になります。
その環境を作ることも大変です。

- 運用時の継続的なデプロイ

1回だけモデルを作って終わり、というわけではなく
適切なモデルが選択できていない場合は修正する必要もあり何回もデプロイできる環境を作る必要もあります。

### Amazon SageMaker の特徴

- 一貫して行うことができる

モデルを構築してトレーニングし、デプロイまで一貫して行うことが出来ます。
元々AWSが用意している仕組みを利用して短時間での実施が可能になります。

- よく使われるフレームワークに対応している

機械学習にもフレームワークは存在し、よく使われるものはSageMakerで対応しています。

- オートスケーリングするインフラ

↑でも書きましたが、機械学習では大量の計算が必要になるためリソースが必要になります。
SageMakerはフルマネージドなのでインフラはAWSが用意してくれます。
その用意してくれたインフラは必要に応じて自動的に拡張されますので大規模な機械学習モデルでも対応できます。

## 勉強後イメージ

正直あまり機械学習って知らないんだけど
大量のデータを読み込ませないといけないから自力で環境作るのとか個人では無理そうな気がする・・・・

## 参考

- [機械学習に必要な「モデル開発」～「推論」ができるAmazon SageMakerを解説](https://business.ntt-east.co.jp/content/cloudsolution/column-158.html)
- [AWS再入門ブログリレー2022 Amazon SageMaker 編](https://dev.classmethod.jp/articles/re-introduction-2022-sagemaker/)
Chain drives, ボッシュ自動車handbook 11版(54) p.730

Internal-combustion engines, Chain drives,  ボッシュ自動車handbook 11版(53)


人生で影響を受けた本100冊。
https://qiita.com/kaizen_nagoya/items/16af53acbb147a94172e

に掲載した本のうち、「新人プログラマ応援」企画で「私の推薦書３３冊」として３３冊紹介した。

新人プログラマ応援　私の推薦書３３冊
http://qiita.com/kaizen_nagoya/items/98c62f051dbdb4f8aca2
残りの６７冊から、順に過去の読書感想を引用し、新たな読書感想文を追記する。

 <この項は書きかけです。順次追記します。>


# ボッシュ自動車ハンドブック version 11, 2022

Automotive Handbook  May 2, 2022

https://www.amazon.co.jp/dp/1119911907/

ボッシュ自動車handbook(英語)11版(0)＜エンジニア夏休み企画>【読書感想文】

https://qiita.com/kaizen_nagoya/items/dfa35aa6f669e5df983e
# Contents
Motor vehicle, 28
Basic principles, 32
Mathematics and methods, 204
Materials, 258
Machine parts, 354
Joining and bonding techniques, 426
Vehicle physics, 462
Operating fluids, 538
Refrigerants for air-conditioning systems, 591
Drivetrain(駆動系), 594
Internal-combustion engines(内燃機関),642


#  Chain drives(鎖駆動)
p.730

## Overview
## Timing chains
## Sprockets
## Chain-tensioning and chain-guide elements

# Reference
[1] DIN ISO 606 
Short-pitch transmission precision roller and bush chains, attachments and associated chain sprockets (ISO 606:2004)

ISO 606:2015
Short-pitch transmission precision roller and bush chains, attachments and associated chain sprockets

https://www.iso.org/standard/61232.html

2   Normative references

ISO 286-2:2010, Geometrical product specifications (GPS) — ISO code system for tolerances on linear sizes — Part 2: Tables of standard tolerance classes and limit deviations for holes and shafts
ISO 15654, Fatigue test method for transmission precision roller chains

Bibliography

[1]-[1]	ISO 9633:2001, Cycle chains — Characteristics and test methods
[1]-[2]	ISO 10190:2008, Motorcycle chains — Characteristics and test methods
[1]-[3]	ISO 10823:2004, Guidelines for the selection of roller chain drives
[1]-[4]	ISO 6892-1:2009, Metallic materials — Tensile testing — Part 1: Method of test at room temperature
[1]-[5]	ISO 13203:2005, Chains, sprockets and accessories — List of equivalent terms

# 自己参考資料(self reference)

ボッシュ自動車ハンドブック 

https://qiita.com/kaizen_nagoya/items/8e330ce57880f04d71d9
ボッシュ自動車handbook(英語)10版　目次

https://qiita.com/kaizen_nagoya/items/57c799ff544c96efdea9

自動車工学とBosch Vehicle Handbook

https://qiita.com/kaizen_nagoya/items/d13ff6b0e4d7c8907c0d

 ＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞

# 文書履歴(document history)
ver. 0.01 初稿 　20221024


### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
####  Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.
Management for spark-ignition engines,ボッシュ自動車handbook 11版(60) p.800

Management for spark-ignition engines, Management for spark-ignition engines, ボッシュ自動車handbook 11版(60)

人生で影響を受けた本100冊。
https://qiita.com/kaizen_nagoya/items/16af53acbb147a94172e

に掲載した本のうち、「新人プログラマ応援」企画で「私の推薦書３３冊」として３３冊紹介した。

新人プログラマ応援　私の推薦書３３冊
http://qiita.com/kaizen_nagoya/items/98c62f051dbdb4f8aca2
残りの６７冊から、順に過去の読書感想を引用し、新たな読書感想文を追記する。

 <この項は書きかけです。順次追記します。>


# ボッシュ自動車ハンドブック version 11, 2022

Automotive Handbook  May 2, 2022

https://www.amazon.co.jp/dp/1119911907/

ボッシュ自動車handbook(英語)11版(0)＜エンジニア夏休み企画>【読書感想文】

https://qiita.com/kaizen_nagoya/items/dfa35aa6f669e5df983e
# Contents
Motor vehicle, 28
Basic principles, 32
Mathematics and methods, 204
Materials, 258
Machine parts, 354
Joining and bonding techniques, 426
Vehicle physics, 462
Operating fluids, 538
Refrigerants for air-conditioning systems, 591
Drivetrain(駆動系), 594
Internal-combustion engines(内燃機関),642
Management for spark-ignition engines,800

# Management for spark-ignition engines
p.800
## Description of the engine management system 
## System overview
## Motronic versions for passenger cars 
## Motronic versions for motorcycles 
# Reference
参考なし。　

# 自己参考資料(self reference)

ボッシュ自動車ハンドブック 

https://qiita.com/kaizen_nagoya/items/8e330ce57880f04d71d9
ボッシュ自動車handbook(英語)10版　目次

https://qiita.com/kaizen_nagoya/items/57c799ff544c96efdea9

自動車工学とBosch Vehicle Handbook

https://qiita.com/kaizen_nagoya/items/d13ff6b0e4d7c8907c0d

 ＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞

# 文書履歴(document history)
ver. 0.01 初稿 　20221025
上級者を目指すExcelVBA #2 『変数宣言』

VBAの場合、変数宣言は無くても変数が使用できますが、必ず変数宣言をするようにしましょう。
Option Explicitをモジュールの先頭に記載すると、強制的に変数宣言が必須になります。


## Option Explicitは必ず付ける

仮にOption Explicitをモジュールの先頭に書いていない場合、
以下のようにソースコード内で変数名を間違えてもエラーになりません。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200881/6cebf359-a468-e561-1c7d-1b7f48615ca8.png" width = "500">

変数名は非常に間違えやすく、これはバグの温床になるため、Option Explicitは必ず付けるようにします。


## オプション設定

VBAのオプションで「変数の宣言を強制する」をオンにすると、
Option Explicitがモジュールの先頭に毎回自動で挿入されるのでオンにしておきましょう。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200881/d714d4da-6371-4ed6-3ee9-be2c8b675880.png" width = "500">


Option Explicitがモジュールの先頭にあると、
下記のように変数名を間違えて記述してしまった際にすぐに分かります。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200881/0a603828-a5eb-f59a-d6c6-eba1d39da886.png" width = "450">

変数はDim、Privateなどで予め宣言した上で使用しましょう。
キーボードが突然入力できなくなる

## 事象
２、３か月前からある日突然、**キーボードを叩いてもモニターに文字が表示されず**、編集作業ができなくなりマジで困っていました。

しかし、**全部のキーが効かないわけではなく**、アルファベットキーが効かないだけで、**アルファベット以外のキーが効く**し（Spaceキー、Enterキー、Backspaceキーとか）。アルファベットキーでも、**Ctrlキーとか、Shiftキーとの組み合わせなら効く**という謎の現象。

## 環境
自家用ノートPCとして、Panasonic社のLet's note（中古）やacer社のswift（今月購入した新品）を使用しており、その外付けキーボードでLogicool社のG213を使っています。Windows10とWindows11の両方も使っています。

## 施策
1. 最初は「G HUB」のいたずらかと思い、Logicool社のサポートに連絡しましたが、特に建設的なアドバイスをいただけませんでした。

2. acer社のサポートに連絡し、Windowsの「高速スタートアップ」がいたずらしているのではないかと言われ、無効にしましたが、関係ありませんでした。

3. 最終手段として購入したばかりのswiftを工場出荷時の初期化を依頼しても、治りませんでした。

それで、Nuro光のオプションサービスとして無料で使用しているカスペルスキーセキュリティの設定を眺めてる時に、キーボード操作もされているようなので、ふとカスペルスキーセキュリティがいたずらをしているのではないかと思い、Webで漁ってみたら下記の記事で同じ事象が発生していることがわかりました。

https://try-widely.com/keyboard-error/

ちょうどいま、Nuro光でカスペルスキーセキュリティの提供が停止される動きがあり、代わりにF-Secure社の「NURO 光 safe」や、マカフィーインターネットセキュリティの提供が始まったので、早速カスペルスキーセキュリティをアンインストールしました。これでこの謎の事象が治ることを切に思っています！！！（めちゃめちゃストレスでしたから泣）

## 後続
はたして事象が治るか、改めてこのページで報告しようと思っております。

2022/12/15 追記
約２か月を経った今では一度も再発することなくキーボードが正常に動いています。ほぼカスペルスキーが確定犯だと思います。一人でも多くの方がこの不具合から解放されることを祈っております。
Exhaust-gas system, ボッシュ自動車handbook 11版(59) p.790

Internal-combustion engines,Exhaust-gas system, ボッシュ自動車handbook 11版(59)

人生で影響を受けた本100冊。
https://qiita.com/kaizen_nagoya/items/16af53acbb147a94172e

に掲載した本のうち、「新人プログラマ応援」企画で「私の推薦書３３冊」として３３冊紹介した。

新人プログラマ応援　私の推薦書３３冊
http://qiita.com/kaizen_nagoya/items/98c62f051dbdb4f8aca2
残りの６７冊から、順に過去の読書感想を引用し、新たな読書感想文を追記する。

 <この項は書きかけです。順次追記します。>


# ボッシュ自動車ハンドブック version 11, 2022

Automotive Handbook  May 2, 2022

https://www.amazon.co.jp/dp/1119911907/

ボッシュ自動車handbook(英語)11版(0)＜エンジニア夏休み企画>【読書感想文】

https://qiita.com/kaizen_nagoya/items/dfa35aa6f669e5df983e
# Contents
Motor vehicle, 28
Basic principles, 32
Mathematics and methods, 204
Materials, 258
Machine parts, 354
Joining and bonding techniques, 426
Vehicle physics, 462
Operating fluids, 538
Refrigerants for air-conditioning systems, 591
Drivetrain(駆動系), 594
Internal-combustion engines(内燃機関),642


# Exhaust-gas system
p.754

## Purpose and design 
## Exhaust manifold 
## Catalytic converter 
## Particulate filter 
## Mufflers 
## Connecting elements 
## Acoustic tuning devices 
## Commercial-vehicle exhaust-gas systems
# Reference
[1] C. Hageluken, Autoabgaskatalysatoren, Grundiagen, Herstellung, Ent wickfung, Recycling, Okologie 3rd Edition, Expert Verlag, 2016　

https://www.amazon.de/dp/3816929141
# 自己参考資料(self reference)

ボッシュ自動車ハンドブック 

https://qiita.com/kaizen_nagoya/items/8e330ce57880f04d71d9
ボッシュ自動車handbook(英語)10版　目次

https://qiita.com/kaizen_nagoya/items/57c799ff544c96efdea9

自動車工学とBosch Vehicle Handbook

https://qiita.com/kaizen_nagoya/items/d13ff6b0e4d7c8907c0d

 ＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞

# 文書履歴(document history)
ver. 0.01 初稿 　20221025
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
####  Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.
Turbochargers and superchargers, ボッシュ自動車handbook 11版(58) p.772

Internal-combustion engines, Turbochargers and superchargers,  ボッシュ自動車handbook 11版(58)

人生で影響を受けた本100冊。
https://qiita.com/kaizen_nagoya/items/16af53acbb147a94172e

に掲載した本のうち、「新人プログラマ応援」企画で「私の推薦書３３冊」として３３冊紹介した。

新人プログラマ応援　私の推薦書３３冊
http://qiita.com/kaizen_nagoya/items/98c62f051dbdb4f8aca2
残りの６７冊から、順に過去の読書感想を引用し、新たな読書感想文を追記する。

 <この項は書きかけです。順次追記します。>


# ボッシュ自動車ハンドブック version 11, 2022

Automotive Handbook  May 2, 2022

https://www.amazon.co.jp/dp/1119911907/

ボッシュ自動車handbook(英語)11版(0)＜エンジニア夏休み企画>【読書感想文】

https://qiita.com/kaizen_nagoya/items/dfa35aa6f669e5df983e
# Contents
Motor vehicle, 28
Basic principles, 32
Mathematics and methods, 204
Materials, 258
Machine parts, 354
Joining and bonding techniques, 426
Vehicle physics, 462
Operating fluids, 538
Refrigerants for air-conditioning systems, 591
Drivetrain(駆動系), 594
Internal-combustion engines(内燃機関),642

# Turbochargers and superchargers
p.772

## Superchargers (mechanically driven) 
## Exhaust-gas turbochargers 
## Complex supercharging systems 
# Reference
[1]　H. Hiereth, P. Penninger, Aufladung der Verbrennungskiaftinaschine, Springer Verlag, 2003

# 自己参考資料(self reference)

ボッシュ自動車ハンドブック 

https://qiita.com/kaizen_nagoya/items/8e330ce57880f04d71d9
ボッシュ自動車handbook(英語)10版　目次

https://qiita.com/kaizen_nagoya/items/57c799ff544c96efdea9

自動車工学とBosch Vehicle Handbook

https://qiita.com/kaizen_nagoya/items/d13ff6b0e4d7c8907c0d

 ＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞

# 文書履歴(document history)
ver. 0.01 初稿 　20221025


### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
####  Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.
静止画(OpenEXR)の連番を動画にしたい。Pythonとffmpegで。

# 自己紹介
株式会社digitalbigmoのパイプラインエンジニアの小池@plinecomです。

# これは何？
１０００個くらいのフォルダにある何万毎もの静止画OpenEXRファイルをフォルダ毎にQuickTimeムービー(.mov)にして欲しいと言われてしまった。いちいちコンポジットソフトで合成してたら面倒なことこの上ないので、ffmpegをPythonで制御して処理してしまうことにした。

# とりあえず、コード
```python:main.py
import ffmpeg
import glob


if __name__ == '__main__':

    for path in glob.glob('/foo/bar/*'):
        print(path)
        fname = path.split('/')[-1]
        print(fname)
        video = ffmpeg.input(path + '/*.exr',
                             pattern_type='glob',
                             framerate=24
                             ).output('/foo/bar/' + fname + '.mov',
                                      pix_fmt='yuv420p'
                                      ).run(overwrite_output=True)
```

# 必要なPython外部モジュール
* ffmpeg-python
```terminal:terminal
pip install ffmpeg-python
```
pipを使ってPyPIからダウンロードしてくる。このモジュールにはffmpeg自体は含まれないので、brewとかパッケージ管理システムを利用して突っ込むとか、ffmpeg公式から各プラットフォーム向けにプリビルドされているffmpegとffprobeをダウンロードして、Pathが通った場所に置いてくとかしておく必要がある。
一応Dockerfileも用意してみた。
```Dockerfile:Dockerfile
FROM rockylinux:8
RUN dnf install -y which python3 epel-release
RUN dnf config-manager --set-enabled powertools
RUN dnf localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
RUN dnf install -y ffmpeg
RUN pip3 install ffmpeg-python
```
```terminal:terminal
docker pull plinecom/py_exr_ffmpeg
```

# コードの説明

今回、特にOpenEXRだから何かをするということはないので、PNGでもTIFFでもDPXでも静止画を動画にできるはず。ffmpegくんは優秀なのだ。
## EXRファイルの読み込み方法の指示
```python:
    video = ffmpeg.input(path + '/*.exr',
                         pattern_type='glob',
                         framerate=24
```
パス名にワイルドカードが入っていてglobして欲しいことと、フレームレートは今回は24pだよということを伝えている。フレームレートをOpenEXRのヘッダからタイムコード取り出して処理するのはエレガントだけれど、担当者に聞けば分かる話なら、それはそれで良いのだ。


## 動画の書き出し方法の指示
```python:
                             ).output('/foo/bar/' + fname + '.mov',
                                      pix_fmt='yuv420p'
```
書き出し先とファイル名を指示する。オマケでpix_fmtを指示している。ここでpix_fmtをyuv420pにしないとmacでプレビューできないファイルが出来上がってしまう。簡単なチェック用途では不便なので我慢して4:2:0にしておく。ちなみに、420pの超小さい大きさで書き出すということを指示しているわけではない、色の表現方法を指示している。

https://qiita.com/mriho/items/a16b3c618c378efeb58f

## 処理方法の指示
```python:
                                      ).run(overwrite_output=True)
```
実行にあたって、すでに同じ名前の動画ファイルがあった場合、停止してしまって困ったので、強制上書きを指示している。そういうのが特になければrun()だけで良い。

# 宣伝
株式会社digitalbigmoでは美肌プラグインの販売や映像VFXの制作業務を行なっています。ご興味のある方は、webページを見にきてください。一緒にお仕事しましょう。

https://digitalbigmo.com

# 参考文献
[ffmpeg本家（英語）](https://ffmpeg.org/)

https://kkroening.github.io/ffmpeg-python/
Ruby - no implicit conversion of Symbol into Integer 

# TypeError: no implicit conversion of Symbol into Integer

配列に対してシンボルでハッシュを呼ぼうとするとエラー

```rb
[][:a]
# TypeError: no implicit conversion of Symbol into Integer
```

# TypeError: no implicit conversion of String into Integer

配列に対して文字列でハッシュを呼ぼうとするとエラー

```rb
[]["a"]
# TypeError: no implicit conversion of String into Integer
```


# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ


# Twitter

https://twitter.com/YumaInaura
Figmaの使い方【初心者必見!!】

# 要約
①ヒロコードの動画見る
②デザインの理想をざっくり決める
③Figmaで実際に作ってみる
④わからなくなったら、ヒロコードの動画見る

③、④をループ

# 前提
私も初心者です。
そして1日もあれば下記のようなものが作れる実力が付くので、是非最後まで読んでください。
![date-box.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1007371/65e2b47c-3982-552d-5fd7-c59edffbb077.png)




# まず1番伝えたいこと
ステップを踏んで学ぶことが大事です。基礎が固まるまではステップを踏むことがとにかく大事です。

1.基礎を固める
↓
2.作りたいイメージを決める
↓
3.基礎を1つずつ思い出しながら自分で考えて作る。そして身につける。
ここでつまずきやすいです。ここも、さらにステップを踏んでやるとつまずかなくなります。後で解説します。


# [ステップ1基礎を固める] HIROCODE.の動画を見よ
50分くらいで見終わります↓この2つを見てください。
##### [【30分マスター講座】Figmaの基本と便利な使い方！ | WEBデザインツール](https://youtu.be/xIuDIygGPVs)
##### [Figmaのプラグイン10選 2022【拡張機能】](https://youtu.be/loP9yAc-EY0)

これで基礎は完了です。

ですがおそらく身についてないと思います。

# [ステップ2作りたいイメージを決める]参考になるサイトを見よ
例えば私はこのサイトを見ていました
https://www.ikesai.com/color/red/

それから、[Canva](https://www.canva.com/)
こちらでアイテムをたくさん見ていました。

これでなんとなく、こんな感じの雰囲気のサイトを作ろう、と決めてください。
(作りたいアプリは決まっている前提です。デザインのイメージをここで決めてください。)

# [ステップ3 基礎を思い出しながら自分で考えて作る]
ここから私はつまずいたので、丁寧に解説します。
なので、ここからさらにステップを細かく具体的にして説明します。


### 1.とりあえずフレームワークを引いてください。
Figmaでデザインを描いていく画面を開いてください。
Fを押してください。#←このマークがフレームワークです。
思い出すために、ヒロコードさんの動画の7:17を見返してください。[7:17](https://www.youtube.com/watch?v=xIuDIygGPVs&t=437s)
Webアプリならデスクトップ用のフレームワークの型があります。
モバイルアプリならスマホアプリ用のフレームワークの型があります。

### 2.ナビゲーションバー(上位のホームとかログインとかのバー)を作りましょう。
この調子で自分の理想のデザインを参考にしながら、オリジナルのデザインを作っていきましょう。
やっていくうちに、こんなことが出来たらいいなと思うことがたくさんあると思います。そしてFigmaは結構そういうことができちゃいます。↓出来るとサクサクできるようになることをまとめました。

# [Tips]

### 画像を丸くする
https://wentz-design.com/post/figma-how-to-crop-and-mask/

### 画像を小さくする
##### shift 押しながらマウス動かす
画像を小さくする時に、マウスでそのまま小さくしようとすると、正方形が長方形になるような、形が変形しますよね？
縦と横の比率を変えずに画像を小さくするには、shiftを押しながら画像を小さくしてください。


### 有名なSNSアイコンの色
https://ferret-plus.com/7909

### 他の人のFigmaのデザインを参考にできるコミュニティ
https://www.figma.com/community


他にも色々あるのですが、ヒロコードさんの動画をてきとうに色々見ていると便利なことをたくさん学べるのでおすすめです。
https://www.youtube.com/c/hirocode

### フリー素材サイト
[Unslash](https://unsplash.com/ja)　→こちらはFigmaにプラグインで入ってるのでそれを使うのがおすすめです。使い方はヒロコードの動画を見てください。
https://find47.jp/
https://www.pexels.com/ja-jp/
https://www.pakutaso.com/
MicroStrategyにおける移動とコピーのACLの違い

 # はじめに
こんにちは。
本記事ではMicroStrategyにおけるコピーと移動の違いについてご紹介します。

# 移動・コピーとは
以下のようにレポートを右クリックすると「移動」もしくは「コピー」を選択することができます。「移動」を選択するとレポートを移動することができ、「コピー」を選択するとレポートをコピーすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/cd0fdd74-30d2-38f2-24ef-033ce950a7c4.png)

# 移動とコピーのACLの違い
MicroStrategyにおいて「移動」と「コピー」にはACLに違いがあります。
「移動」は移動元の権限を保持し、「コピー」は移動先の権限を引き継ぎます。
たとえば以下のように部署ごとに共有できるフォルダが運用されていたとします。
「Z部署用」フォルダには「Z部署」のユーザに変更権限を与えています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/bae652e7-35f3-ee50-27da-1b458b20ff4a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/b5ce8581-84c7-d242-006e-cf867d4e3954.png)

Z部署に所属するUserAは作成したマイレポートを同じ部署のUserBに共有するために、レポートを「Z部署用」フォルダに配置しようとしているケースを想定してください。
まずは「移動」をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/60cf68a5-8e10-0a7f-17c3-ccaf381e61c5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/d5cb0c41-5f13-3285-43f3-2a8ffb9ad23d.png)
UserAは「Z部署用」フォルダに配置されたことを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/168797f1-f47d-be84-6e6f-d9d54e6fc055.png)
しかし以下の通りUserBはレポートを確認できません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/a8ad94bf-770c-a22a-8753-680c3ceb8c78.png)
移動されたレポートは移動元の権限を保持するため以下のようにUserAのACLのみ付与されており、「Z部署用」フォルダに移動してもUserAしか参照できない状態になっていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/4e83b131-bca1-aebc-d513-7b25720814c2.png)

次に「コピー」をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/3636ae32-202d-e4dc-fb30-39689f470b07.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/8f2c649e-7951-287f-2940-1766c71567ab.png)
UserAは「Z部署用」フォルダに配置されたことを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/11a69ac4-a651-4203-f708-88f4c3258ab4.png)
UserBも以下の通りレポートを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/51b60959-d124-8328-ad56-3dd826ebeeae.png)
コピーされたレポートは以下のように「Z部署用」フォルダの権限を引き継いでおり「Z部署」の変更権限が付与されていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737479/50b3b10a-e290-a773-ee1f-5800df5f3a1e.png)

# まとめ
上記ケースのように「移動」と「コピー」は似ている操作ですがACLに違いがあります。
部署共有フォルダを運用する等、「移動」と「コピー」を活用する場合は、参考にしていただけますと幸いです。

以上になります。最後までご覧いただきありがとうございました。