OmniAICreator/Qiita-1.07M huggingface dataset:
PowerAutomateのライトな使いどころ

この記事は[Microsoft Power Automate Advent Calendar 2022](https://qiita.com/advent-calendar/2022/powerautomate) カレンダー2の6日目です。
ここではPowerAutomateを使って社内の開発チームのワークフローを少しだけ改善した話をします。

:::note info
前提となる状態
- 社内のコミュニケーションにはMicrosoftのTeamsを採用している
- 開発チームは課題（issue）を[Backlog](https://backlog.com/ja/)で管理している
- ビジネスサイドの別チームはBacklogの扱いに慣れているチームもあれば、
慣れていないチーム（Backlogを使ったことがないチーム）もある
:::

# まずこんな状況がありまして...

![backlog-flow1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108727/a4a4c9dd-1c1e-d7d4-bc9c-eac1b0c9c57b.png)

**＜Aさん＞**
システムのこの部分うまく動いてないみたいだから開発チームに修正を依頼しなきゃ。
普段、他のチームとはTeamsでコミュニケーションとってるから、
開発チームに対する修正依頼も同じようにTeams上で投げちゃっていいよね。
え？Backlog？なにそれ？

**＜Bさん＞**
システムのこの部分うまく動いてないみたいだから開発チームに修正を依頼しなきゃ。
普段から開発チームへの依頼に関してはBacklog上で進捗を管理してもらってるので
今回もBacklog上に課題を作って進めよう。

**＜開発チーム＞**
依頼がいろんな方面からバラバラに来て困る・・・。
タスクは全部Backlogで一元管理しておきたいなぁ・・・。

# 開発チーム的には（本当は）こうしたいが...

![backlog-flow2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108727/0bf2577d-c9d9-ac34-f649-742d23a8db86.png)

**＜開発チーム＞**
Aさんに頼んで今後はBacklog上で依頼を出してもらうようにお願いしよう。
これでタスクをすべてBacklogに集めることができて管理しやすくなったぞ。

**＜Aさん＞**
なんか新しいツール増えた・・・。
Teamsですぐ連絡とれるのになんでわざわざ別のツール使わないといけないんだろう。
使い方よくわからないし、めんどくさいなぁ。

# そんな時はこうしよう

![backlog-flow3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108727/108c962a-e7aa-c4fb-fe7d-a6a85e4c8418.png)

**＜Aさん＞**
今まで通り開発チームへの依頼はTeamsで行うよ

**＜Bさん＞**
今まで通り開発チームへの依頼はBacklogで行うよ

**＜PowerAutomateくん＞**
Teamsに来た作業依頼は自動でBacklogに流すよ

**＜開発チーム＞**
課題が全部Backlogに貯まってくれるから管理が楽になったよ


# この話のポイント

この手のワークフローを考える時、**人とツールとの心理的距離を考えるのってめっちゃ大事**、と個人的には思ってます。

開発チームやBさんは普段からBacklogを常用する立場にあるためツールとの心理的距離が近い一方で、AさんにとってBacklogという新しいツールは心理的な距離が非常に遠い。AさんにBacklogを使ってもらうよう促すことは簡単ですが、この距離感の違いを考慮に入れておかないと、**大抵の場合運用がワークしません。**


元々「●●というツールを使って何かをする」という行為自体が、その人の日々の業務フロー（習慣といってもいいですが）の中に存在しない場合、それを新たにフローの中にねじ込むというのはコストが高いものです。それが毎日使うことになるツールなら慣れるのも早い（＝習慣化ができる）のでそれほど問題にはならないかもですが、月に数回しか使わないとかなら特に難しい・・・。

もちろんトップダウン的に、2番の例のようにエイヤで組織全体に統一したツールの導入を促すことが必要なこともありますが、ボトムアップ的にやるなら、**双方が慣れているツール（インターフェース）は変えずに、裏側でその間をPowerAutomateのような自動化ツールでつなぐ**という視点もWin-Winの関係を築くためには大事かなと。

このあたりの最適解は組織文化にもよると思いますが ^^;

# 実際にどうやるか

タイトルが「ライトな使いどころ」なのでライトに２ステップだけで行きます。

外部からBacklogに課題を登録する場合、APIを使う方法とメールで課題登録する方法と2通りがあります。より柔軟にできるのはAPIですが、単にTeamsで投稿された内容をBacklogにコピーするだけであれば、メールでの課題登録でも事足ります。

### ①Backlogの設定

プロジェクト設定 -> インテグレーション -> メールによる課題登録
「課題登録用メールアドレスの追加」でメールアドレスを発行します。
![automation1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108727/90510401-3daf-7378-cfda-c4e9b09e9961.png)

### ②PowerAutomateの設定

今回はあるTeams上の特定のチャネル（開発チームへの依頼用のチャネルを想定）に新しくスレッドが投稿された時に、その内容をそのままBacklogへ登録することを考えます。
フローは最低限以下の２つだけ。
- 「チャネルに新しいメッセージが追加されたとき」で対象のチャネルを選択
- 「メールの送信」で宛先に①で発行したメールアドレスを指定し、件名・本文にチャネルに投稿された内容（件名・本文）をセット
![automation2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108727/ebfd9e7a-00e1-4075-333c-7204b29f32d5.png)
もしAPIでやるなら、メールの送信の部分をHTTPの送信とかに変えてBacklogのAPIの形式に合わせてリクエストしてやればいけると思います。

# まとめ

結局やってることは単純で、双方のインターフェースを変えることなく、あるプラットフォーム上のデータを別のプラットフォームのデータにトランスフォームしてるだけです。なので、今回はTeams→Backlogの連携を例に取りましたが、どんなツールに置き換えても同じパターンが適用できると思います。
使用するツールの違いによりチーム間での運用がうまくいっていない、とか、チームごとにワークフローがサイロ化していて統一が難しい、という場合の参考になれば。
Paint で画像塗りつぶしたいときに知らなかったこと

2020 年からアドベントカレンダー期に毎日何かを投稿するという奇祭に参加する習わしがあり今年もゆるゆる参加してみようと思い書くもの。

画像ぬりつぶし したいことありますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/c9db3124-17e1-59fe-74fd-480178d5352e.png)

https://1-notes.com/windows-paint-fill/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/aa6d225b-4548-56b2-4038-03af55830b1c.png)

こことここ (マーク箇所) を触るだけでできましたね。
あと、ペイントにもちゃんとヘルプがあるのであります。

[ペイントのヘルプ - Microsoft サポート](https://support.microsoft.com/ja-jp/windows/%E3%83%9A%E3%82%A4%E3%83%B3%E3%83%88%E3%81%AE%E3%83%98%E3%83%AB%E3%83%97-d62e155a-1775-6da4-0862-62a3e9e5a511)

今日は [Microsoft Azure Techのカレンダー | Advent Calendar 2022 - Qiita](https://qiita.com/advent-calendar/2022/microsoft-azure-tech) のカレンダーにも書いた。書くだけでめっちゃ仕事した気になった。今年私が知らなかったことである～。:christmas_tree:
Elixir IEx.Helpers.open/1を使ってお気に入りのテキストエディタでソースコードを開く

[IEx.Helpers.open/1]を活用されてますでしょうか？

お気に入りのテキストエディタでElixirのソースコードを開くことができます。

https://qiita.com/torifukukaiou/items/17d55cf896c24b13350e

論よりRun

## 準備

[環境変数]`ELIXIR_EDITOR`にお気に入りのテキストエディタを指定します。

[VS Code]の場合は`code --goto`です。

```sh:環境変数
ELIXIR_EDITOR="code --goto"
```

この[環境変数]をあらかじめご自身の`.zshrc`、`.bashrc`等で`export`しておくと便利かもしれません。

## IExを開く

```sh:IExだけ起動
iex
```

または

```sh:IExの中でMixプロジェクトを起動
iex -S mix
```

## テキストエディタでソースコードを開く

まず試しに[IEx.Helpers.open/1]自体のソースコードを開いてみます。

```elixir:IEx
iex> open IEx.Helpers.open
```

![テキストエディタでソースコードを開く](https://user-images.githubusercontent.com/7563926/205773227-bb9a7277-9de8-47d5-aee9-2508f08089ef.png)

[Enum.reduce/3]関数のソースコードを見たい場合はこうします。

```elixir:IEx
iex> open Enum.reduce
```

[Kernel]モジュールのソースコードを見たい場合はこうします。

```elixir:IEx
iex> open Kernel
```

:tada:

どうでしょうか。便利じゃないですか？

[IEx.Helpers.h/1]でドキュメントだけ表示することもできますが、[IEx.Helpers.open/1]を使えばソースコードへ気軽にアクセスできるのです。

## ご参考までに

https://speakerdeck.com/elijo/elixirkomiyunitei-falsebu-kifang-guo-nei-onrainbian

https://qiita.com/piacerex/items/e0b6e46b1325bb931122

https://qiita.com/torifukukaiou/items/1edb3e961acf002478fd

https://qiita.com/piacerex/items/e5590fa287d3c89eeebf

[Dashbit]: https://dashbit.co/
[Elixir]: https://elixir-lang.org/
[Erlang]: https://www.erlang.org/
[Phoenix]: https://www.phoenixframework.org/
[Nerves]: https://hexdocs.pm/nerves
[Livebook]: https://livebook.dev/
[IEx]: https://elixirschool.com/ja/lessons/basics/basics/#%E5%AF%BE%E8%A9%B1%E3%83%A2%E3%83%BC%E3%83%89
[Node | hexdocs]: https://hexdocs.pm/elixir/Node.html
[otp_distribution | elixirschool]: https://elixirschool.com/ja/lessons/advanced/otp_distribution
[Node.ping/1]: https://hexdocs.pm/elixir/Node.html#ping/1
[Node.connect/1]: https://hexdocs.pm/elixir/Node.html#connect/1
[Node.spawn/2]: https://hexdocs.pm/elixir/Node.html#spawn/2
[Node.list/0]: https://hexdocs.pm/elixir/Node.html#list/0
[Node.set_cookie/2]: https://hexdocs.pm/elixir/Node.html#set_cookie/2
[Node.get_cookie/0]: https://hexdocs.pm/elixir/Node.html#get_cookie/0
[epmd]: https://www.erlang.org/doc/man/epmd.html
[rpc]: https://www.erlang.org/doc/man/rpc.html
[erpc]: https://www.erlang.org/doc/man/erpc.html
[phoenix_live_dashboard]: https://github.com/phoenixframework/phoenix_live_dashboard
[phoenix_pubsub]: https://github.com/phoenixframework/phoenix_pubsub
[遠隔手続き呼出し]: https://ja.wikipedia.org/wiki/%E9%81%A0%E9%9A%94%E6%89%8B%E7%B6%9A%E3%81%8D%E5%91%BC%E5%87%BA%E3%81%97
[BEAM (Erlang virtual machine)]: https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine)
[:rpc.call/4]: https://www.erlang.org/doc/man/rpc.html#call-4
[IEx.Helpers.open/1]: https://hexdocs.pm/iex/IEx.Helpers.html#open/1
[Enum.reduce/3]: https://hexdocs.pm/elixir/Enum.html#reduce/3
[IEx.Helpers.h/1]: https://hexdocs.pm/iex/IEx.Helpers.html#h/1
[VS Code]: https://code.visualstudio.com/
[環境変数]: https://ja.wikipedia.org/wiki/%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0
[Kernel]: https://hexdocs.pm/elixir/Kernel.html
Goのクロスコンパイル(MacでビルドしてRaspberry Pi Zeroで実行)

Raspberry PiでGo(gin)のプログラムをビルドしたら割と時間がかかったので、手元のMacでRaspberry Pi用にビルドすることにした時のメモ

# Goでビルド時のターゲットに指定できるプラットフォームを確認　
以下を実行するとビルドのターゲットに指定できるプラットフォームのリストが出力される。
Raspberry Pi ZeroでLinux系のOSを使用している場合はlinux/armが該当するのでクロスコンパイルが出来そう。
``` shell
% go tool dist list
aix/ppc64
android/386
android/amd64
android/arm
android/arm64
darwin/amd64
darwin/arm64
dragonfly/amd64
freebsd/386
freebsd/amd64
freebsd/arm
freebsd/arm64
illumos/amd64
ios/amd64
ios/arm64
js/wasm
linux/386
linux/amd64
linux/arm
linux/arm64
linux/loong64
linux/mips
linux/mips64
linux/mips64le
linux/mipsle
linux/ppc64
linux/ppc64le
linux/riscv64
linux/s390x
netbsd/386
netbsd/amd64
netbsd/arm
netbsd/arm64
openbsd/386
openbsd/amd64
openbsd/arm
openbsd/arm64
openbsd/mips64
plan9/386
plan9/amd64
plan9/arm
solaris/amd64
windows/386
windows/amd64
windows/arm
windows/arm64
```
# 実際にRaspberry Pi用にビルドしてみる
以下のような感じでビルド時のプラットフォームを指定する事ができる
``` shell
% GOOS='OSを記述' GOARCH='CPUなどのアーキテクチャーを記述' go build -o '出力する実行ファイル名を指定'
```
Raspberry Pi向けにビルドする際の例
``` shell
% GOOS=linux GOARCH=arm go build -o raspberry_bin
```

# まとめ
マシンリソースが貧弱なRaspberry Pi(13-14秒)では時間がかかっていたビルドがMac(0.2秒)では一瞬で終わるようになったので満足！と思ったが実行ファイルの転送などの時間を考えると微妙...
もっとビルドに時間が掛かる事があれば活用できそう
openssl コマンドで作成された鍵ペアの健全性確認

たまに、受領した証明書と、それを作成した秘密鍵の MODULUS が合致しないことがあるので、確認用のスクリプトを作ってみました。

```bash
#!/bin/bash

PRIVATE_MODULUS=""
PUBLIC_MODULUS=""

RED='\e[31m'    # Red
GREEN='\e[32m'  # Green 
ENDCOLOR='\e[0m'

function check_private_key()
{
    local private_str=""
    local private_key=""
    while [ -z "${PRIVATE_MODULUS}" ]
    do
        echo -n "Private key full path:"
        read private_key
        PRIVATE_MODULUS=$(openssl rsa -in "${private_key}" -noout -modulus)
    done
    echo "private_str:${private_key}"
    echo "PRIVATE_MODULUS:${PRIVATE_MODULUS}"
}

function check_public_key()
{
    local public_str=""
    local public_key=""
    while [ -z "${PUBLIC_MODULUS}" ]
    do
        echo -n "Public key full path:"
        read public_key
        PUBLIC_MODULUS=$(openssl x509 -in "${public_key}" -noout -modulus)
    done
    echo "public_str:${public_key}"
    echo "PUBLIC_MODULUS:${PUBLIC_MODULUS}"
}

check_private_key
check_public_key

if [ "${PRIVATE_MODULUS}" = "${PUBLIC_MODULUS}" ]; then
    echo -e "${GREEN}Modulus matches.${ENDCOLOR}"
else
    echo -e "${RED}Modulus does not match!${ENDCOLOR}"
fi

exit 0
```

これで、確認用のコマンドオプションを忘れても安心ですね。
クリックした要素にモザイクをかけるブックマークレット


![screencast-nimbus-capture-2022.11.28-14_57_16-_online-video-cutter.com_-_2_.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151137/63208c10-e20a-9c05-08ae-8cd330990a7d.gif)

# スクショ撮影時にモザイクをかけたい

本番環境の画面確認中に不具合を発見した際など、スクリーンショットを撮影してSlackやプロジェクト管理ツールに貼りたいケースがたまにあるかと思います。

しかし、弊社が運営している『[CoupLink](https://couplink.jp)』の場合は、マッチングアプリになりますので、ユーザーの顔写真や自己紹介文が至るところに表示されており、スクショ内にも映り込むことになります。

例えSlackのようなクローズドな場であっても、ユーザーの顔写真等が含まれるスクショが飛び交うことは、利用者の心理的には気持ちの良いものではないため、本番環境のスクショ添付時は必ずモザイクをかけるルールになっています。

# ブックマークレットで簡単に

このとき、スクショ撮影→画像処理ソフトでモザイク付与、とやっていると面倒なので、ワンクリックでモザイクを付与するためのブックマークレットを使っています。

:::note warn
以下はこの記事では説明しません。
- ブックマークレットとは何か
- ブックマークレットをどのように登録・使用するか
:::

## 全ての画像にモザイクをかける

```js
// 全てのimg要素にstyleを付与
javascript:
  document.querySelectorAll('img').forEach(element => {
    element.style.filter = 'blur(5px)';
  })
```

OR

```js
// imgにstyleをあてたCSSタグを1つだけ生成
javascript:
  const blurStyle = document.createElement('style');
  blurStyle.type = 'text/css';
  blurStyle.innerText = 'img { filter: blur(15px); }';
  document.body.appendChild(blurStyle);
```

## クリックした要素にモザイクをかける

```js
javascript:
  window.addEventListener('click', e => {
    e.preventDefault();
    e.target.style.filter = 'blur(5px)';
  })
```

簡単な処理ですので、各サービスに合わせてカスタマイズして使ってみてください！
sakuraのレンタルサーバを別のsakuraアカウントに移管したい場合

## 問合せフォームを使うしかない模様
(2022/12/06現在)

以下より。
https://help.sakura.ad.jp/purpose_beginner/2555/?article_anchor=js-nav-7

うーん、そんなに需要ないんだろうか。
専用フォーム化すればいいのにと思いました。
半期に一度の成長質問リスト -モブプロ開発を行っているチームでやっている取り組み-

# はじめに

本記事は[モブプロ開発を行っているチームでやっている取り組み Advent Calendar 2022](https://qiita.com/advent-calendar/2022/mob_torikumi_example)の21日目の記事です

今回は「成長質問リスト」について紹介します。
普段振り返りを多くしている私たちですが、半期に1度この成長質問リストというのに答えるようにしていて今年で2回目の質問に先日答えました
そこで半年前に比べてかなり考え方や仕事の仕方が変わったことがわかり、成長できているというのを実感できたので取り組みとして紹介します。

# 前回

https://qiita.com/Sicut_study/items/183fde6658cc6f88362a

# Chapter#20 半年前の私と比べて

アール「今年も残り1か月切りましたね」
じん「Qiitaアドベントカレンダーも始まって大忙しですよ」
アール「そうですね。今年は1人で完走すればQiitaグッズもらえるらしいのでがんばります」
じん「私もいま必死に記事ためてますよ」
アール「そういえば半年くらい前に成長質問リスト答えましたよね。そろそろやりますか？」
じん「お、そういえばそうでしたね。12月も始まってちょうど半年くらいなので書きますか」
ミュート「成長質問リストってなんだっけ」
じん「どれだけ成長できたかを質問に答えて明確にするやつですよ。ミュートさんもExcel持ってるはずです」
ミュート「あ、これか。こんなの書いた気がするなぁ」
じん「では答えていきましょう」

30分後

アール「半年ぶりに答えましたがだいぶ回答変わってますね。成長できているのが実感できます」
じん「私も技術よりのことを質問の答えとして書いていて考え方も変わった気がします」
ミュート「半年でだいぶ色々変わったな」

# 成長質問リストとは

「成長質問リスト」とは評価期間のタイミングで答えている質問表になります。
いくつかの質問に答えたのを評価期間ごとに記録しておくことで、仕事に対する考え方の変化や自身の成長を感じることができます

この「成長質問リスト」は以下の本に載っており、そこからチームで取り入れたものになります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/f2dd8a76-5424-131f-4249-a7490a13ac27.png)
[リーダーの作法 ―ささいなことをていねいに](https://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AE%E4%BD%9C%E6%B3%95-%E2%80%95%E3%81%95%E3%81%95%E3%81%84%E3%81%AA%E3%81%93%E3%81%A8%E3%82%92%E3%81%A6%E3%81%84%E3%81%AD%E3%81%84%E3%81%AB-Michael-Lopp/dp/4873119898/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=O387QMPLPJ9C&keywords=%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AE%E4%BD%9C%E6%B3%95&qid=1670285366&sprefix=%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AE%E4%BD%9C%E6%B3%95%2Caps%2C204&sr=8-1)

答える質問は以下になります

Q1. あなたの強みは何ですか？なぜそれがわかったのでしょう？
Q2. 努力すべき点は何ですか？なぜそれがわかったのでしょう？その点に対してどのように取り組んでいますか？あなたの会社は助けてくれますか？
Q3. 最後に報酬が上がったのはいつですか？
Q4. 報酬は公平に支払われていると思いますか？そうでない場合、どのようなものが公平な報酬といえるでしょうか。そのことは上司に伝えましたか？
Q5. 最後に上司から有益なフィードバックを受けたのはいつでうか？
Q6. 自分の仕事についてどんな風に褒めてもらいたいですか？
Q7. あなたの上司には学ぶところがありますか？一番最近、上司から学んだ重要なことはなんですか？
Q8. 仕事で作って、一番最近楽しいと感じたものはなんですか？
Q9. 一番最近仕事でやってしまった大失敗は何ですか？そこから何を学びましたか？その失敗の根本的な原因ははっきりしていますか？
Q10. 最近フィードバックで自分の仕事スタイルを大きく変えたものは何ですか？
Q11. あなたのメンターは誰ですか？その人と最後にあったのはいつですか？
Q12. 前回の360度評価はいつでしたか？そこでの最大の教訓は何でしたか？
Q13. 前回仕事を変えたのはいつですか？その理由は？
Q14. 前回会社を変えたのはいつですか？その理由は？
Q15. 現在の仕事のどのような点を、将来の仕事に生かしたいと思いますか？
Q16. あなたがいつかやりたい仕事は何ですか？
Q17. 勤めたい会社は？その会社のどこが良いのでしょう？
Q18. あなたが尊敬するリーダーは誰ですか？そのリーダーはどこがすごいのでしょう？

私自身が7月2日に1回目を答えて、12月5日に答えたのを比較してみました

Q1. あなたの強みは何ですか？なぜそれがわかったのでしょう？

7月 : やるべきことはすぐにやる
12月 : アジャイル周りが得意

Q2. 努力すべき点は何ですか？

7月 : チーム開発の経験が浅い
12月 : アーキテクチャ周り、オブジェクト指向、BFF

Q7. 現在の仕事のどのような点を将来に生かしたいか

7月 : Rails開発、人工知能PJ経験
12月 : アジャイル経験、新技術導入経験

7月から12月になるまでに新技術を導入したり、アジャイルに力を入れていたりしていたので、回答がより技術よりに詳しく書いていることが多くなりました
やることがはっきりしたので来年はさらに成長するためにやるべきことが見えてきた気がしました

他の方も同じような傾向が見えており、改めて半年前よりも成長ができて、次にやるべきことがみえたといっておりました

# 次回

https://qiita.com/Sicut_study/items/668e9f5fa0763cd28230

# おわりに

今回は紹介程度で具体的なお話は少なかったですが、半期に一度やっている取り組みについて紹介でした
これをやることで何かがすぐよくなるというわけではありませんが、振り返りを大事にしているチームとして半期を振り返り、次にやるべきことを明確にするのは大事だと思いました
Google UXデザイン："Placeholder text" vs "Real copy"

# はじめに

わたしが[Google UX Design Certificateで得られた素晴らしい体験][google]を、特に重要だと思われるポイントを小さく分割して、わかりやすく簡潔に紹介していきます。

興味があれば、ぜひ Google UX Design Certificateを受講してみてください。

[google]: https://qiita.com/mapami/items/7a0d0a3d4661c50f8bec

https://www.coursera.org/professional-certificates/google-ux-design

<details><summary>これまでの振り返り</summary>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/68d4d12c-48ec-dfb7-a7bb-dc793f727f2b.jpeg" width="700">


</details>

# はじめに

UXデザインの世界でも、必ずしも意見が一致しないことがあります。そのひとつが、デザインに使用されるコピー（文章）についての議論です。

「lorem ipsum」のようなプレースホルダーテキストは、デザイン上のフィラーとして使用できます。しかし、デザイナーによっては、ワイヤーフレームであっても、実際のコピーを使用してデザインすることを好む人もいます。

ここでは、モックアップでのプレースホルダーテキストと実際のコピーをどのように使い分けるかを考えてみましょう。

# Placeholder text

プレースホルダーテキストの最も一般的な種類の1つは、lorem ipsumです。ipsumは500年以上も前からプレースホルダーとして使用されてきました。

UXデザイナーとして、私たちは今日でもipsumを使用していますが、これにはいくつかの理由があります。

https://www.lipsum.com/

#### メリット①
デザインが完成する前の開発初期段階で、関係者とデザインを共有することができます。これは、製品やデザインの方向性について、詳細な開発に時間をかける前に、フィードバックを得たり、意見をまとめたりする必要がある場合に特に重要です。

#### メリット②
アイデア出しの段階や最初のワイヤーフレームを作成する際に、コピーではなくデザインのレイアウトに集中したい場合に使用すると効果的です。

#### メリット③
コピーより多く時間を確保することができます。専属のUXライターと仕事をする場合、または自分でコピーを開発する必要がある場合、デザインに含める言葉を思いつくのに時間がかかります。その点、ipsumを使えば、コピーに関する疑問点を整理しながら、デザインを進めることができます。

# Real copy

デザイナーによっては、このコミュニケーションを助けるために、デザインの初期段階から本物のコピーを使用すべきだと熱く語る人もいます。

ここでは、プレースホルダーのテキストではなく、本物のコピーを使用することがデザインに有利な理由をいくつか紹介します。

#### メリット①
後々のデザインの調整を少なくすることができます。たとえば、実際のコピーに合わせてデザイン要素のサイズを変更する必要がなくなります。

#### メリット②
コピーに関連するデザインの選択についてフィードバックを得る時間がより多く得られます。デザインとコピーが一体となって、ひとつのユーザーエクスペリエンスを形成します。デザイン要素とコピーを最初から一緒に作成することで、よりまとまりのあるものにすることができます。

しかし、次のようなデメリットも考慮する必要があります。

#### デメリット①
後でコピー編集の手間が省けない。UXデザインは、非常に反復的なプロセスであることはお分かりいただけたと思います。デザインそのものを変更するのと同じくらい、デザインに含まれるコピーも何度も変更する可能性があるのです。

#### デメリット②
人間は言葉に惹かれるものです。プロトタイプの中に本物のコピーがあると、ステークホルダーがデザインの選択についてコメントするのを邪魔してしまうことがあります。もし、低忠実度のプロトタイプを本物のコピーと一緒にチームに送ると、製品開発のその段階でより重要なプロトタイプのビジュアルデザインと機能性ではなく、あなたが選んだ言葉についてのメモを受け取る可能性があります。一般的なガイダンスとして、実際のコピーは、モックアップのような忠実度の高いデザインで使用されることが多いです。

# "Placeholder text"と"Real copy"の比較

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/f6f9fc6b-88b0-370a-17d8-c6f0ffae2567.png" width="500">

#### 左側のプレースホルダーテキストのあるデザイン
アイコンの見た目や要素間の間隔、使用されている色に注目することが多いかもしれません。このモックアップは、デザインの中でコンテンツがどのように表示されるか、ユーザーに一般的なアイデアを提供するものです。

#### 右側の本物のテキストを使ったデザイン
掲載されているレシピのタイトルを読みましたか？実際のテキストを使用する利点は、デザインに含まれる情報と、その情報がどのように構成されるかについて、よりよく理解できることです。しかし、使用するデザイン要素へのこだわりは薄れてしまうかもしれません。

# もうひとつの選択肢は？

あなたは今までに、どちらの選択肢も正しい方法であると自分自身を納得させたかもしれません。それでもいいのです。これはあなた自身が決めることなのです。

***「もうひとつの選択肢は？」***

***<font color="MediumVioletRed">プレースホルダーテキストと実際のコピーを組み合わせて使用してもいいのです</font>***

プレースホルダーのテキストや実際のコピーをデザインに使用するかどうかは、デザインする製品、ステークホルダーや顧客の好み、さらにはチームメイトからのフィードバックに左右される可能性があることに留意してください。

場合によっては、すでに作成されているコピーを使ってデザインした方が良いこともありますし、コピーを全く気にしなくても良いこともあります。
データローダ関係（Mac）

[データローダ関係に戻る](https://qiita.com/Keiji_otsubo/items/74f5ee961ee32b05d2c0)

+ [Mac Os Big Sur ではデータローダが動かないようです 2020/11/19時点](https://qiita.com/Keiji_otsubo/items/a3bbecdafca2b66bac1d)
+ [Data Loader Mac Big Sur インストールエラー（再燃かな）](https://qiita.com/Keiji_otsubo/items/3b473642a3af8aa118eb)
+ [I am getting an error "Bad CPU type in executable" on line 44 when installing CLI on my MacBook Pro M2 chip](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000JfNZV)

yi my sfdx cli version is:  sfdx-cli/7.175.0 darwin-arm64 node-v18.10.0, so it seems like it's the native Apple Silicon version.

```
I've installed it a while ago very likely by using the following command:
```

npm install --global sfdx-cli
If you have an existing non-native version installed, I'd advice to uninstall it first and then install the native one.
simple-geo-viewerでQGISで作ったデータを表示する

# 概要
simple-geo-viewerで簡単にQGISで作ったデータを表示してみたい思います。

# simple-geo-viewerとは
GeoJSONやラスタータイルなど、
一般的なWebGISで利用されるデータを手軽に表示できるビューワーです。
設定ファイルにパスを編集するだけでデータの表示がWeb上で可能です。
[simple-geo-viewer](https://github.com/aigidjp/simple-geo-viewer)

# simple-geo-viewerのインストール
```sh
git clone https://github.com/aigidjp/simple-geo-viewer
```
リポジトリをクローン

```sh
cd simple-geo-viewer
yarn install
```
モジュール等をインストール

# QGISでデータ作成
今回は多摩丘陵のフットパスの小野神社から奈良ばいへのルートを作成しました。
![スクリーンショット 2022-11-21 17.53.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2772737/93abf685-d4e5-6961-b8fe-6e04bc8a7a3c.png)
[©︎OpenStreetMap](https://www.openstreetmap.org/)

## データを変換
![スクリーンショット 2022-11-21 18.06.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2772737/4a51f493-afd9-d0c4-1cbf-1493e9d79cba.png)
レイヤを右クリックしてエクスポートします。
![スクリーンショット 2022-11-21 18.10.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2772737/8d55fdbd-eb4b-3192-e623-0389c050bf74.png)
形式をGeoJSONに設定します。

# simple-geo-viewerにファイルを配置
```sh
mkdir -p public/data
```
データ配置用のディレクトリを作成します。
```
simple-geo-viewer/public/data/<表示したいGeoJSON>
```
このパスにデータを配置します。

# config.jsonの編集
```
simple-geo-viewer/assets/config.json
```
このファイルを編集していきます。
```JSON
    {
      "id": "<任意のid>",
      "type": "geojson",
      "source": "./data/<表示したいGeoJSON>",
      "getLineColor": [0, 0, 0, 255],
      "getLineWidth": 10
    }
```
今回はラインデータのためこのような要素を追加します。

# menu.jsonの編集
```
simple-geo-viewer/assets/menu.json
```
このファイルを編集していきます。
```JSON
{
    "category": "<カテゴリ名>",
    "url": "",
    "data": [
      {
        "title": "<タイトル>",
        "type": "line",
        "lng": <ズーム先経度>,
        "lat": <ズーム先緯度>,
        "zoom": 15,
        "id": ["<任意のid>"],
        "checked": true,
        "color": "#333333"
      }
    ]
}
```
menu.jsonsで指定するidはconfig.jsonで指定したもの同一のものにしてください。
ズーム先やカテゴリ名やタイトルを決定します。

# データの表示確認
```sh
yarn dev
```
開発用サーバーを起動します。

```
event - compiled successfully
wait  - compiling...
```
上記のログが表示されたら、
http://localhost:3000/
へアクセスして動作を確認します。
![スクリーンショット 2022-11-21 18.34.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2772737/ddc9d88c-0e06-1789-46db-a29ee05dfdd7.png)

# Webサーバーで公開する場合。
```sh
yarn build
```
WebGISをビルドします。

```
simple-geo-viewer/out/
```
上記フォルダ内の全てのデータをWebサーバーに配置します。
**Web サーバーではnodeやyarnは必要ありません。**
Visual Studio Codeで文字コードを変えたら二度と読めなくなったので検証する

# はじめに

皆さんは、VisualStudi Codedで、Shift-JIS で書かれたテキストファイルを、UTF-8に変換した事はありませんか？

他にもBOMありUTF-8をBOM無しに変換したり……

実はこの機能、文字化けしたファイルを文字化けしたまま別のエンコードで保存してしまうとUndo(Ctrl+Z)が使えないことがあるんです。

という訳で具体的にどういう場合に使えないのか検証しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283899/6bf0710f-5800-d233-ebc2-5f87d3e06471.png)

# 検証

検証用にBOM無しUTF-8で書かれたファイルを用意しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283899/5dec4240-4bc7-59d4-47d8-d91a8c73d16a.png)

検証は以下の通りに行います。

## 環境
* Windows 11 Home (22H2) 22621.819
* Visual Studio Code (1.73.1) 
    * 拡張機能は無効化する(--disable-extensions オプションを使用)

## 検証方法

下記の3パターンで、Undo(Ctrl+Z)で文字化けさせ読める状態に戻せるか試します。

| 名前  |  検証開始時のエンコード  |  もともとファイルは?  |
| ----- | ---- | ---- |
| 検証1 | UTF-8 | 文字化けしていない |
| 検証2 |  Shift JIS  |  文字化けしていない  |
| 検証3 |  Shift JIS  |  文字化けしている  |




1. **検証1**  Visual Studio Codeで作成したばかりのファイル(Visual Studio Codeを閉じていない)の場合
    1. このファイルをShift JISで保存(エンコード付きで保存)
    1. UTF-8で再度開き文字化けさせる(エンコード付きで再度開く)
    1. UTF-8で保存(エンコード付きで保存)
    1. Undo(元に戻せるか試す)
1. **検証2** Shift JISで書かれたファイルを(Shift-JISで)Visual Studio Codeで開いた場合
    1. Shift JISファイルを開く(文字化けしていない状態で開かれる)
    1. UTF-8で保存(エンコード付きで保存)
    1. Undo(元に戻せるか試す)

1. **検証3** Shift JISで書かれたファイルを(UTF-8で)Visual Studio Codeで開いた場合
    1. UTF-8でファイルを開く(文字化けした状態で開かれる)
    1. UTF-8で保存(エンコード付きで保存)
    1. Undo(元に戻せるか試す)

## 検証結果

ここからは、言葉で説明が難しいので動画です！！
   
### 検証1 Visual Studio Codeで作成したばかりのファイル(Visual Studio Codeを閉じていない)の場合

普通に戻せますね

![元UTF-8no.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283899/3eb44d5b-b19c-7846-1164-5879e73f239b.gif)

### 検証2 Shift JISで書かれたファイルを(Shift-JISで)Visual Studio Codeで開いた場合

こちらも戻せました

![Sjis成功.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283899/6638805b-18d1-7d71-8383-55fdb0e05de4.gif)

### 検証3 Shift JISで書かれたファイルを(UTF-8で)Visual Studio Codeで開いた場合

こっちは最後、変化がないので**キー入力を可視化**しました

![Sjisの.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283899/1d2d2758-5adb-7bd3-196e-a3dc28806079.gif)

表にまとめると下記の通りになります。

| 名前  |  検証開始時のエンコード  |  もともとファイルは?  |文字化けさせた後、元に……|
| ----- | ---- | ---- |---- |
| 検証1 | UTF-8 | 文字化けしていない |戻せた|
| 検証2 |  Shift JIS  |  文字化けしていない  |戻せた|
| 検証3 |  Shift JIS  |  文字化けしている  |戻せない|

## まとめ

いかがだったでしょうか？

**エンコード付きで保存**と**エンコード付きで再度開く**
すごい近い位置にあるコマンドなのに間違えるとファイルに不可逆的な変更が加えられる危険な機能の話でした。
文字コードを自動判定する「Files:Auto Guess Encoding」をつける等対策をしていきたいところです。

くれぐれも私のように上司からの……

おっと、誰かが来たようです。

おわり
2022年度版 活性化関数についてまとめ

2022年度も終わりに近づきました。2022年度を振り返り、ディープラーニングでよく利用した活性化関数について自分の偏見をまとめたいと思います。

活性化関数には、ステップ関数、シグモイド関数、ReLU関数、恒等関数があります。これらの関数についてコメントしたいと思います。


# ステップ関数
ステップ関数は微分ができません。微分ができないと誤差逆伝播法で学習することができません。最近は、ほとんどディープラーニングでは使用しませんでした。

# シグモイド関数
ディープラーニングのサンプルコードでググると結構な頻度で使用されていますよね。シグモイド関数は、Xが大きくなるとYは1に近づき、Xが小さくなるとYは0に近づくのが特徴です。グラフにすればわかりますが、微分することができます。微分できるということは、誤差逆伝播法で学習することができます。
しかし、使用してわかったのですが、ニューラルネットワークの層を増やしていくと入力に近い層の学習ができなくなりました。これは勾配消失という問題です。このため、シグモイド関数もほとんどディープラーニングでは使用しませんでした。

# ReLU(レル)関数
シグモイド関数とは違い、勾配消失という問題が非常に起こりにくいのが特徴です。なぜ起こりにくいのか？
グラフを見ればわかりますが、Yの値が0より大きい時は、非常に広い範囲で値を取ることができるので勾配消失の問題が起きにくくなります。
2022年度、一番よく使用した活性化関数です。

# 恒等関数
y = x の関数です。シグモイド関数を使用すると出力は0から1の範囲になります。ReLU関数を使用するとマイナスの値が表現できません。だけど、出力層の出力を広い範囲で取りたい場合に使いました。たまに使用する活性化関数です。



以上です。
【半導体】MOSFETの全てを徹底解剖してみる（vol.1）

<h1>はじめに</h1>
　この令和の時代のトレンドにもなっている<strong>半導体</strong>について正直どんなものか知らない方が多いであろう。私の経験上認識をしていたとしても少し誤った解釈をされている方も少なからずいる。そういった背景から、今回は半導体について全く知らない方、学習はじめたての方に向けて執筆させていただいた。こちら読んだ暁には、半導体の代表的な素子であるトランジスタがどんなものなのか全体像を大まかに理解することができるようになっている。ぜひ最後までノンストップで読んでいただきたい。<br><br>

　また、こちらは現在大学で集積回路（IC）工学を中心に専攻し、研究室で半導体の設計・開発をおこなっている大学3年生の私が執筆したものである。半導体について深く学習するために様々な文献を引用し、信憑性のある内容の記事にさせていただいている。その中でも誤りや間違った解釈をしたものがあればぜひコメントの方でご教授いただきたい。

それでは順番に読み進めていこう。
<h2>ハードウェアとソフトウェア</h2>　
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059549/28668fe7-7f8d-b4db-b089-5dbc1e4036e6.png">

　半導体の理解を深める上でまずはハードウェアとソフトウェア両方の言葉の意味と実例について知っておく必要がある。ハードウェアは、パソコンやモニター、スマホ、キーボードなどのような目にみえる物理的な実体を持った機器のことであり、ソフトウェアは、OSやアプリケーションなどの物理的実体を持たない機器のことである。現代の日常生活で用いられる機器は大半がこのハードウェアとソフトウェア同士が依存する形で正常に使用することが可能となっている。今回説明する半導体はハードウェアの部類にあたる。

<h2>半導体</h2>
　半導体を正確には「電気抵抗率が極めて低い導体（電気をよく通す）と極めて高い絶縁体（電気が流れにくい）の中間的な抵抗率をもつ物質」と定義されている。<br>
　この電気抵抗率の値は電気の流れやすさを示し、半導体の優れている点として条件によって<strong>電気抵抗率を大きく変化させ、電流の流れをコントロールする性質</strong>を持っている。生活の中に実は半導体で溢れかえっている。<br>
例）スマホ、テレビ、カメラ、エアコン、洗濯機、パソコン、自動車、電車、ATM、etc....<br>
　材料としてシリコン(Si：ケイ素)が最も多く使われている。その理由としては安価であり抵抗率の制御が容易い、純度を高めることが可能で酸化膜を容易に得られやすいところが挙げられる。

<h2>トランジスタ</h2>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059549/c8825f13-cc4f-56fa-3ea9-eb5edcaf57a2.jpeg">

　MOSFETを知る前にトランジスタというものも理解しておきたい。トランジスタとは、P型半導体とN型半導体の２種類を利用して構成される最も代表的な半導体素子のことである。電気の流れを容易くコントロールできる優れ物であり、電気信号を大きくできる増幅機能と電気の流れを止めるスイッチング的な機能の２つを備えている。

　このトランジスタは主にバイポーラトランジスタと電界効果トランジスタ（FET）の2種類が存在しており、本記事で紹介するMOSFETは後者に分類されているものである。バイポーラトランジスタが最初に発明され、現在では効率的に電流を多く流すことができる電界効果トランジスタの方に需要が集まっている。


　皆さんが日常生活で使用しているであろう電化製品（スマートフォンやパソコン、テレビ、デジタルカメラなど）には当たり前に内蔵されている。ハードウェアを構築するに当たって必要不可欠な存在となっており、半導体不足がしばしニュースになっている理由もご察しいただけたのではないだろうか。
<h1>MOSFET</h1>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059549/dd2d1a18-68c1-da78-1bd2-de94a1c84aca.png">


MOSFETとは正式には<br>
<strong>金属酸化膜半導体電界効果トランジスタ<br>
（Metal Oxide Semiconductor Field Effect Transistor）</strong><br>
と呼ばれる。<br>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059549/0f4a821b-01f6-8d42-d7ec-ba42614fdf13.png">
 
　半導体のシリコンの表面を酸化させた二酸化シリコン(SiO2)の膜を生成し、金属を電極の役割としてとりつけた構造をとっていることからこの名前が付けられている。動作速度が極めて速く電子デバイス（上述した電化製品）の小型化と動作精度、速度の向上が求められている現代において欠かすことのできないトランジスタとなっている。

<h2>制作工程</h2>
以下に制作までの簡単な手順を記す。<br><br>
（１）シリコンウェーハを製造する<br>
（２）酸化膜と窒化膜を成膜する<br>
（３）フォトレジストを塗布する<br>
（４）露光/現像する<br>
（５）エッチングする<br>
（６）レジストを剥離し、洗浄する<br>
（７）絶縁膜を埋め込む<br>
（８）平坦化し、ゲート酸化膜/ゲート電極を形成する<br>
（９）パターン形成する<br>
（１０）イオン注入し、層間絶縁膜の形成/平坦化をする<br>
（１１）コンタクトホールを形成し、コンタクトを作成する<br>
（１２）トレンチ形成をし、金属膜を堆積する<br>
（１３）配線を形成する<br>
（１４）プローブ検査をする<br>
（１５）ダイシング/ダイボンディング/ワイヤーボンディングをする<br>
（１６）モールディングをする<br><br>
以上16工程を踏むことになる。一つ一つの具体的なやり方は別の記事にて紹介をしようと思う。
<h1>参考文献</h1>
[1]吉本雅彦: 集積回路工学<br><a>https://shop.ohmsha.co.jp/shopdetail/000000000482/</a><br>
[2]柴田直: 半導体デバイス入門 その原理と動作の仕組み<br><a>https://honto.jp/netstore/pd-book_26389565.html</a><br>
[3]高崎和之: 基本からわかる電子回路<br><a>https://www.natsume.co.jp/books/14783</a><br>
[4]Semi journal:半導体解説<br><a>https://semi-journal.jp</a>
 <br>
[ActiveRecord]throughアソシエーションのjoinsとthroughを使わないアソシエーションのjoinsを同時にチェーンした場合、同じものと判定してくれないので注意

ActiveRecordには同じjoinsを何度チェーンしても1回しかJOINしないという便利機能が備わっています。
例えば下記のように同じjoinsを3回書いても、実際に発行されるSQLでは1回しかJOINされていません。
この機能は複雑なSQLを作る時にすでにJOINされているかを意識せずに実装できるのでとても便利です。

```irb
irb(main):016:0> User.joins(:user_books).joins(:user_books).joins(:user_books)
  User Load (9.6ms)  SELECT `users`.* FROM `users` INNER JOIN `user_books` ON `user_books`.`user_id` = `users`.`id`
```

次に多対多のモデルをJOINする場合を考えます。
下記のモデルではUserとBookは多対多の関係です。UserモデルにBookモデルをJOINする実装を考えます。

```ruby
class User < ApplicationRecord
  has_many :user_books
end

class UserBook < ApplicationRecord
  belongs_to :user
  belongs_to :book
end

class Book < ApplicationRecord
  has_many :user_books
end
```

単純に実装すると下記の実装が考えられます。
実行するとusersからuser_booksを経由してbooksをJOINしたクエリーが発行されます。

```irb
irb(main):003:0> User.joins(user_books: :book)
  User Load (8.8ms)  SELECT `users`.* FROM `users` INNER JOIN `user_books` ON `user_books`.`user_id` = `users`.`id` INNER JOIN `books` ON `books`.`id` = `user_books`.`book_id`
```

ActiveRecordにはhas_many-throughという便利機能あります。
throughを使う場合、モデルに下記を追記します。

```diff
class User < ApplicationRecord
  has_many :user_books
+ has_many :books, through: :user_books
end
```

throughを使うと下記のように実装することができます。中間テーブルを意識しなくて良くなるので少し楽です。
throughを使わない場合と同じSQLが発行されているので問題なさそうです。

```irb
irb(main):003:0> User.joins(:books)
  User Load (9.9ms)  SELECT `users`.* FROM `users` INNER JOIN `user_books` ON `user_books`.`user_id` = `users`.`id` INNER JOIN `books` ON `books`.`id` = `user_books`.`book_id`
```

では、全く同じSQLが発行される`joins(user_books: :book)`と`joins(:books)`をチェーンした場合は同じJOINと判断されるのでしょうか？
タイトルに書いてあるのでお察しですが、この場合は同じものと判断されません。
下記のように別名をつけて2回JOINされてしまいます。

```irb
irb(main):017:0> User.joins(:books).joins(user_books: :book)
  User Load (2.3ms)  SELECT `users`.* FROM `users` INNER JOIN `user_books` ON `user_books`.`user_id` = `users`.`id` INNER JOIN `books` ON `books`.`id` = `user_books`.`book_id` INNER JOIN `user_books` `user_books_users` ON `user_books_users`.`user_id` = `users`.`id` INNER JOIN `books` `books_user_books` ON `books_user_books`.`id` = `user_books_users`.`book_id`
```

has_many-throughはとても便利なのですが、上記のようにthroughを使ったjoinsと使わないjoinsが混在してしまうと冗長なクエリーを発行しています。
大抵の場合、冗長にJOINされても正しく動くことが多く気づきにくいのですが冗長なクエリーはパフォーマンスに影響を与える可能性もあるので注意しましょう！
Outlookのアドインが勝手にきれてしまったので備忘録

# 新人社会人あわや大惨事になるミスをしでかした
あってはならないミスをしました。
読んでいただける方が同じミスをする前の回避を促したいです。

## 先日話題になったOutlookに関しての失敗談
12月2日にOutlookに障害が起きました。
https://xtech.nikkei.com/atcl/nxt/news/18/14252/

そんな、Outlook関連で私が失敗したことを書いていこうかと思います。。

## 何をミスしたのか？
それはOutlookの**アドイン機能が勝手に削除**されていたことです。

## そもそも「アドイン」とは？
**アドイン**とはOutlookの追加機能です。

例えば、
- メールの送信前に内容再確認ポップアップを表示
- 送信ボタンを押した後に指定した時間だけ送信を待つことで誤りに気づいた時に送信を取り消せる

などアドインの機能は追加するアドインによって様々です。

個人で追加したり削除したりカスタマイズできます。

## 勝手にアドインを削除されたのはなぜ？
削除されてしまったのは、外部から取り込んだアドインが少し動きが重く、
アドインが原因でOutlook起動までに時間を要したからです。

これはある日Outlookが勝手に判断し、エラー表示が出されています。
「○○アドインは起動に時間を要したため、追加アドインから外しました。」と。

アドインを（勝手に）外されエラーが出ていたので存在をいつの間にか忘れ、
あわやメールの送信先に迷惑をかけたかもしれないミスになりました。
（誤送信防止のアドインがなくなっていました）

## 防止策は？
**アドインが切れたときにエラーが出たタイミングでエラー文をクリックする**ことが一番簡単です。

その場でアドインの復帰、削除の拒否を設定できます。

## 防止策を取らずにエラー文をスルーしたら？
そんな時はオプションから手動でアドインを追加しましょう。
一部画像がないですがご了承ください。

1. リボンの[ファイル]をクリックします。
![Qiita1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2678826/026d4864-6cb3-53e6-e98c-dc10cd7f7f8f.png)
1. [オプション]をクリックします。
![Qiita2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2678826/f2a17aeb-4315-5e83-f242-bbab103b8bc5.png)
1. 「Outlookのオプション」画面が表示されるので左側メニューが一覧表示されている部分から[アドイン]をクリックします。
![Qiita3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2678826/fad54cba-460c-7e9d-db21-74e221227475.png)
1. アドインの管理画面に遷移するので画面下部[管理(A)]から[使用できないアイテム]をクリックします。そのまま[設定]をクリックします。

1. 「使用できないアイテム」のポップアップ画面が表示されますので、使用できるようにするアイテムを選択してください。（画像では対象アイテムがありませんがある場合は表示されています）選択すると[有効にする]がクリックできるようになるのでクリックします。
![Qiita5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2678826/9ccea291-06b5-835a-841c-acead406a648.png)
1. [アクティブでないアプリケーションアドイン]部分に選択したアドインが表示されていることを確認してください。

1. 再度[管理(A)]から次は[COMアドイン]を選択し[設定]をクリックします。
1. 追加したいアドインにチェックを入れて、[OK]をクリックしてアドイン追加の完了です。


このようにかなり手間がかかるのでエラー文が表示されたときに対処することをおすすめします。

アドイン追加後にエラーが出た場合はアドイン削除の拒否を選択してください。

## さいごに
Outlookのおせっかいで振り回されてしまいましたが、皆さんは設定をしっかり行ってください。
【GCP】アカウントの作り方

# この記事のゴール
GCPに触れるための最初の一歩として、アカウントの作成を完了すること。
# 先に用意しておくもの
- 個人のGoogleアカウント
- 手元にアカウント作成用のクレジットカード

# 手順
- Webページ：[GCPのトップページ](https://cloud.google.com/)を表示し、画面のなかほど「無料で使ってみる」ボタンを押下する。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3009702/1fca0190-539a-5beb-f92c-a2e58ce5f449.png)
- ログイン画面が表示されるので、個人のGoogleアカウントのメールアドレスもしくは電話番号を入力欄に入力し、「次へ」ボタンを押下する。以降Googleアカウントのログイン手続きの画面が続くので、画面の指示に従って、ログインを行う。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3009702/79728cbd-ffd9-6f19-c9a0-0e4c37a7c0de.png)

- 「Google Cloudを無料で試す」画面が表示されるので、必要事項を入力し「続行」ボタンを押下する。私は「ニーズの説明」欄については「その他」、「通知メール」については「チェック」としました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3009702/5754668f-f418-4305-ccb2-de1e4d3be154.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3009702/8463f960-5681-7323-8e7d-ebb25477e332.png)
- 「お支払い情報の確認」ページが表示されるので、「お支払いプロファイルを作成」ボタンを押下します。すでにお支払いプロファイルを持っている方は、既存のプロファイルが表示されます。既存の方を利用する方はそちらを選択してください。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3009702/a2504bda-689b-7aed-f680-1f8283e39df9.png)
- アカウントの種類を選択します。今回は個人利用のアカウントを想定していますので「個人」を選択します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3009702/801f59e4-ed7f-6088-ee22-baed122fd050.png)
- 続いて、「お支払い方法」の各欄を埋めていきます。手元に用意したクレジットカードの情報を転記してください。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3009702/8041253c-76e7-eb4e-1c14-ed73212a2d68.png)
- 引き続き、請求先の住所欄を選択すると、入力欄が表示されますので、表示された欄を記入してください。記入し終わりましたら、「無料トライアルを開始」ボタンを押下します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3009702/f8779479-49b4-ec1a-1423-1eceaa2e0a4d.png)
- アンケート画面が表示されます。「閉じる」ボタンで良いかと思います。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3009702/6dadb781-12c5-f2bc-c449-366c16bb012d.png)
- チュートリアル画面が表示されます。右下の「今回はスキップ」ボタンで良いかと思います。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3009702/498bd616-45ae-2ab7-238c-6d4bd73cbe25.png)
- コンソール画面が表示されました。これにてアカウント作成完了となります。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3009702/9cc0b265-dfea-204d-26c0-ee6c5bbd9222.png)
# 終わりに
Google Cloudのアカウントが作成できたら、こちらのページからGoogleアカウントの2段階認証を有効にしてから利用しましょう。
Webページ：[2 段階認証プロセスを有効にする](https://support.google.com/accounts/answer/185839?hl=ja&co=GENIE.Platform%3DDesktop)
# ※画像の引用について
手順を分かりやすく記載するために、以下より画面の画像を引用させて頂いています。
Google Cloud：https://cloud.google.com/
iPhoneウィジェット - ダッシュボードのクエリ値ウィジェット

みなさん、こんにちは。DatadogテクニカルエバンジェリストのTaijiです。

こちらは2022年アドベントカレンダー7日目の記事です🎄
前の記事は @ae-b さんの [Datadog の RUM を導入してみる](https://zenn.dev/ae__b/articles/20221202_datadog_rum_install) でした。
今回は、新しくアナウンスされたiPhoneウィジェットの機能紹介をしたいと思います！

外出先で必要な情報を素早く簡単に見つけるために、お気に入りのDatadogダッシュボードのクエリ値ウィジェットをiPhoneのホーム画面に追加することができます。
これにより、優先度の高いメトリクスを一目で確認することができます。ウィジェットなので、iPhoneのロックを解除した瞬間に情報が表示されるようになります。

![AC3280F5-5BE8-4B67-81B3-E87EDA1910E0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/73737662-2e9a-8f59-1f85-e72610d6b5be.png)

👉実際に使ってみました

1. iPhoneのホーム画面でウィジェット追加モードにし、Datadogを追加します
![E87A8A6E-60B0-46CE-9D57-6DCF863C6E96.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/632a0ec3-f761-b9d9-1e1c-541e287ede7e.jpeg)

2. Query Value Widgetを選択します
![D63BAC5E-B083-4B41-9F96-9F795AFA7404.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/7064e996-d47e-a39f-df81-97b43aac4d95.jpeg)

3. 追加されるとこんな感じなのでエディットしていきましょう
![4E25462F-6DB2-4793-9A28-59477D1D340B.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/c9d928aa-37f0-73ca-945c-ff3591dc1db5.jpeg)
![12C26F8F-8A2C-471E-9026-4CED18B3E8C0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/9402265e-220e-3da2-b28d-74704c07ca50.png)

4. まずダッシュボードを選びます
![E46F7397-C099-4AAC-982C-9D71AB48A2DA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/0d0afb8a-a4fe-442d-b460-ec0ecb1b269f.png)

5. 次にクエリ値を選びます
![9B592E37-E39C-419A-8EBC-946103490749.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/a24823ca-1334-b8a2-5749-775376e06ddc.png)

6. そしてピリオドを選びます
![6617DE37-23AB-4A83-A2A6-A818562DB782.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/baff6fca-de6d-dd09-e38d-ab55955eaf4b.png)

これで完了です。iPhoneのウィジェットに条件に合致したデータが表示されました。
![AAB09391-8352-4175-ADD5-1DB00FBA6848.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/2d250946-8bf3-cef7-dc89-3b0ba517697f.png)

![C6EE52A5-FE6A-460E-BF77-48811508EB28.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/d9eab84f-aee3-9375-6bcb-b78e05f70638.jpeg)

いかがでしたでしょうか？かんたんにウィジェットが追加できたのではないかと思います！

ぜひiOSのDatadogモバイルアプリをダウンロードして、ホーム画面のクエリ値ウィジェットを使ってみてくださいね 😉

ではでは 👋
sudachipyでchikkarpyを使う

# TL;DR
```bash
pip install chikkarpy sudachipy sudachidict_core
```

```python
from chikkarpy import Chikkar
from chikkarpy.dictionarylib import Dictionary as chikkardict
from sudachipy import Dictionary, SplitMode

test_txt = 'オンラインアイスクリーム'

chikkar = Chikkar()
chikkar.add_dictionary(chikkardict())
chikkar.enable_verb()

tokenizer = Dictionary().create(mode=SplitMode.C)
morphemes = tokenizer.tokenize(test_txt)

for m in morphemes:
    print(m.surface(), chikkar.find(m.normalized_form()))
>>> オンライン ['online']
>>> アイスクリーム ['ice cream', 'アイス', 'ice']
```
# chikkarpyとは
chikkarpyはchikkarのPython版です。 chikkarpy は Sudachi 同義語辞書を利用するためのライブラリです。
また、「ちっか」とは徳島では「ちくわ」のことを指します。

https://github.com/WorksApplications/chikkarpy

# プログラムの簡単な説明
```python
chikkar = Chikkar()
chikkar.add_dictionary(chikkardict())
chikkar.enable_verb()
```
まず、`chikkar.add_dictionary()`で任意の同義語辞書を読み込ませます。
ここでは`chikkardict()`に何も引数を与えていないため、chikkarpyが持っている同義語辞書を読み込んでいます。同義語辞書については [公式のGitHub](https://github.com/WorksApplications/SudachiDict/blob/develop/docs/synonyms.md) をご参照ください。
別の同義語辞書を使いたい場合は`chikkar.add_dictionary(chikkardict(user_dict_path))`のようにパスを指定して使います。たとえば、http://sudachi.s3-website-ap-northeast-1.amazonaws.com/sudachisynonym/ で新しいバージョンの同義語辞書を入手できますが、その中にある「system_synonym.dic」をパス指定することで別のバージョンの同義語辞書を使うことができます。
または、同義語辞書を自作して使うこともできます。辞書の作り方は [同義語検索ライブラリchikkarpyで独自の辞書を使う](https://zenn.dev/sorami/articles/3742e761543e08) の記事で解説されています。

`chikkar.enable_verb()`は用言の検索を許可する場合に設定します。
体言のみ検索したいのであれば不要なのでこの行を消してください。

```bash
$ echo "勉強" | chikkarpy
勉強    学習,研究,スタディー,スタディ,study
$ echo "勉強" | chikkarpy -ev
勉強    学習,研究,スタディー,スタディ,study,学ぶ
```
コマンドライン上での例になりますが、「勉強」に対してenable_verbを有効にすることで「学ぶ」が同義語に追加されています。


```python
tokenizer = Dictionary().create(mode=SplitMode.C)
morphemes = tokenizer.tokenize(test_txt)

for m in morphemes:
    print(m.surface(), chikkar.find(m.normalized_form()))
```
そして、sudachipyで解析した結果を使って`chikkar.find()`で同義語を検索します。
例では`m.normalized_form()`を渡していますが、`m.surface()`でも可です。
ただし、活用の変化などは同義語辞書で考慮されていないため、正規化していないと検索に引っかからない場合があります。

# 終わり
ということで、chikkarpyの紹介でした。
chikkarpyはWorks Applicationsが開発・公開しており、不具合や質問、要望等があればgithubにissueを立てていただくと対応できるかもしれません。
また、開発者やユーザーの方々が質問したり議論するためのSlackワークスペースを用意しています。そちらでも受け付けているためご活用ください。
https://github.com/WorksApplications/chikkarpy#contact
My Trailhead

[まとめページに戻る](https://qiita.com/Keiji_otsubo/items/60afc2a8d211b6f7d89f)
[まとめA～M](https://qiita.com/Keiji_otsubo/items/f3ddedee6793bf1576f8)


+ [My Trailhead Login error!](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000JfOv4)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/dfe74979-6c9a-c8ee-8bfb-32eda6fbdaed.png)

:::note
The "myTrailhead Branding Management" permission referenced in the error message in your screenshot is the same permission as "Manage Site Settings" (it was renamed recently).

If your user has this permission enabled, I would expect you to be able to log in. 

Try logging in with a different browser or an incognito window. If you're logged into other Salesforce services on other tabs, sometimes the Trailhead login doesn't quite keep up with the changing/updating contexts. It may also be a caching issue.
:::
TypeScriptのタプル型をユニオン型にする方法

## はじめに
私はTypeScriptを学習中なのですが、先日下記ような書き方を目にして頭の中で「？」が広がりました。

```practice.ts
type Countries = ["Japan", "America", "England", "Korea"];
type Country = Countries[number] 
//type Country = "Japan" | "America" | "England" | "Korea"
```
タプル型のCountriesに[number]を指定することでCountryをユニオン型にすることができています。なぜ[number]を指定することでユニオン型にできるのかについてまとめたいと思います。
## ユニオン型はnumberでインデックシングされている
結論から言うと、下記の型は同列と考えて良いです。
```practice.ts
type CountriesTupple = ["Japan", "America", "England", "Korea"];
interface CountriesObj {
    length:4,
    0:"Japan",
    1:"America", 
    2:"England", 
    3:"Korea"
}
```
タプル型のCountriesTuppleはnumberによってインデックシングされてCountriesObjと同じ扱いができる！
なるほど、前述したCountriesをCountryへユニオン型で入れることができたのは、このような理屈があったのですね。
## lengthは[string]で指定できない
ここで「[string]で指定することでlengthがとれるのか？」ということが疑問に挙がると思います。ただこちら結論指定できないようです。
```practice.ts
type Countries = ["Japan", "America", "England", "Korea"];
type Country = Countries[string] 
//型 'Countries' には型 'string' と一致するインデックス シグネチャがありません。
type Country = Countries["length"] 
//type Country = 4
```
上記のように怒られてしまいました。ただ["length"]で指定すると要素の数も取得できるようです。
## まとめ
TypeScriptのタプル型をユニオン型にする方法をまとめました。初見で今回紹介した書き方を見たときは驚き戸惑いましたが、調べてみて理屈を知ることで理解することができました。これからもわからないことを調べ理解し自身の引き出しを増やせていけたらなと思います。
## 最後に
### GoQSystemでは一緒に働いてくれる仲間を大募集中です！
ご興味がある方は以下リンクよりご確認ください。

https://goqsystem.recruit.site/?qiita=3dd78c2fb09a40612aae
jqueryから抜けられないわけ

今のトレンドは、reactとかVue.js とからしいですけど、
jqueryから抜けられない訳を紹介します

## 1.jqueryはgoogleのライブラリを利用するとヒットしやすい

いまだに多くのサイトがjqueryを利用しているのですが
jqueryをgoogleから読み込むにあたって
よりキャッシュヒットしやすくなるためです

## 2.jqueryのことを調べれば単刀直入に検索から帰ってくる

プログラミング言語の詳細なんて、こまごまと覚えているわけではありません。
この書式どうだったかな？とかの、シンプルな検索も結構行うのもあります

## 3.そもそもあたしは高齢

スーパーファミコンのアダルトゲームを作った、とかいう年齢ですので、
新しいことを覚えるにも脳みそが抵抗してしまうのもあります

## 4.個人的にはjqueryコンパイラがあるといいかな的な
【Linux】 vi コマンド 【基本のキの備忘録】

# はじめに

Linux だとコマンドラインによる操作が多いですよね。
そんな時、普通の画面での操作に慣れていると一番最初に引っかかるのがテキストの編集ではないでしょうか？

というわけで、今回は Linux でテキスト編集する場合にお世話になる `vi` コマンドです。

# 起動

ファイルのパスを指定してしましょう。ファイルが存在すれば、それを開きます。
存在しなかった場合は、指定した名前のファイルを新規作成してくれます。

```
$ vi README.md
```

# コマンド

`vi` はコマンドモードと編集モードの二つがあります。

起動時はコマンドモードなので、編集したい場合 `i` を入力して編集モードに入ります。
他のコマンドを使いたい場合は `Esc` でコマンドモードに戻りましょう。

|コマンド|処理|
|:--|:--|
|i|編集モード開始（Escで終了）|
|:q|終了|
|:w|保存|
|:wq|保存して終了|
|:q!|保存せずに終了|
|gg|先頭に移動|
|Shift + g|末尾に移動|
|Ctrl + f|次ページ|
|Ctrl + b|前ページ|
|/ + [検索文字] + Enter|検索|
|yy|一行コピー|
|p|ペースト|
|dd|一行削除|

# 最後に

今回は基本のキということで最低限のものにとどめておきました。

また機能拡張版である `vim` コマンドも今回紹介したものと同様です。
余談になりますが、最近は `vi` を実行すると `vim` が実行される環境もありますね。

ひさしぶりに Linux を触ったらいろいろとコマンド忘れてて作った備忘録でした。
なにかのお役に立てれば幸いです。
アジャイル[Agile]組織開発

__組織開発で考慮すべき、
ハーズバーグの二要因理論（動機付け・衛生理論）__
---
仕事をするためには、誰かに何かを頼んで、協力してもらう必要が多々ある。
しかし、頼んだ通りの結果が得られていないという事がある。これは、どうして起こりうるのでしょうか？

__◆◆例えば◆◆__
あなたが、部下を持っているとします。
部下に対して、俺のやり方は、こうだ。成果物は、このようなもののはずだ。
と思いつつ、部下に対して、何かを頼むとします。

__しかし、結果は、異なったものであったりします。__
__何故、このような事が起こりうるのでしょうか？__

__理由の一つとして、状況が変わるからという点があると思います。__
__この理由にフォーカスして、考えてみたいと思います。__

状況が変わるのに対して、自分たちのやり方も常に、変えて、
反復 (イテレーション) を繰り返す必要性があるから、Agile組織開発が注目されています。

仕事を頼まれた時の状況と、成果物を受け取る際の状況が、変わるのが当たり前だから、
まず、作ってみる。それを見てもらう、作り直す、を繰り返して精度を高めていく必要があります。

部下からすると、精度を高めていくというのは、必ずしも、頼まれた時の相手の認識に合わせて行く事ではないようです。

◆◆例えば◆◆
春の温かい日に、明日の会議では、重要なお客様との会議があるので、
冷たいジュース(成果物)を用意して下さいと部下に頼んで、翌日を迎えます。

翌日の会議では、ちょっと気温が下がり(状況が変わり)、春の寒い日となり、
冷たいジュース(成果物)を用意してもらったとします。
部下は、用意して欲しいジュース(正しい成果物)を持って来てくれているのでしょうか？

確かに、部下は、言われた通り、冷たいジュース(成果物)を持って来てくれています。
これは、頼まれた時の相手の認識と一致している点では、正解です。
しかし、状況が変わってしまうと、不要なものとなりますし、
もっと、温かい飲み物(成果物)の方が欲しいというようになりますよね？
ちょっと気温が下がり(状況が変わり)、春の寒い日となった場合、
正しい成果物は、温かいジュースである可能性があります。
__ただ、成果物を受け取るのは、上司でも、部下でもありません。__

__■■　　　　　　顧客です。　　　　　　■■__

<font color="red">春という時期は、寒暖が激しく、温かい、寒いという認識も個人によって変わります。
部下も判断に困ったのでは、ないでしょうか？

つまり、どういう事が言いたいかと言うと、部下も判断に困るような状況に陥っているだろうなという、
要因がある場合は、頼み方も修正しなくては、正しい成果物は、得られないという事です。

__成果物をもたらすのは、部下です。上司は、成果物を受け取るタイミングで、どう受け取るかが、重要です。__

・・・頼まれる部下の状況を理解して、成果物を受け取る必要があります。

つまり、判断に困っているだろうなという場合は、状況の変化を察知し、フォローを入れて、
__重要なお客様が、飲み物を飲むときに、温かいと感じているのか、寒いと感じているのかを聞いて、__
__部下に、飲み物(成果物)を用意してもらう必要があるという事です。成果物を渡す相手に品質を担保する責任があります。__


成果物を創る責任は、部下にあるとしても、
成果物を受け取る際に品質を担保するのは、上司です。



__さて、仕事を頼まれる部下としては、どのような状況で、仕事を引き受けているのか、考えてみましょう。__

仕事における満足度は、
満足度を上げる「動機付け要因」と不満足度を上げてしまう「衛生要因」があります。

仕事を頼まれる部下は、その満足度に基づいて、タスクをこなして、成果物を提出します。
単純に、タスクをこなしているわけでは、ありません。


次の二つの要因に基づいて、タスクをこなしています。
__そのため、頼んだタスクをこなしている相手の立場も考慮して、依頼する必要があります。__

◆「動機付け要因」満足度を上げる(促進要因とも呼ばれる)
<font color="red">「達成する事」「承認される事」「仕事そのもの」「責任」「昇進」「成長の機会」「評価」</font>
これらが満たされると満足感を覚えるが、満たされないからといってすぐに不満が出るものではない。

◆「衛生要因」不満足度を上げる
<font color="red">「安全」「上司との関係」「監督」「給与」「同僚との関係」「作業条件」「ステータス」</font>
これが不足すると不満が出るが、満たしたからといって、満足感につながらない。単に不満足を予防する意味しか持たない。

◆◆◆解決策の例◆◆◆
---
◆不満足を取り除く

・尊重する文化を育む。
・競争力のある給与を提供する。
・意義のある職務を通じて、仕事のステータスを向上させるように取り組む。
・雇用の安定性を提供する。
・良く思われていない方針を見直す。
・協力的な監督を行う。

◆満足するための条件を整える

・可能な限り多くの責任を与える。
・トレーニングと成長の機会を提供する。
・仕事を、それぞれの才能やスキル、能力に合わせて調整する。
・成長の機会を提供する。
・業績や貢献を評価する。

ハーズバーグの二要因理論、動機付け要因と衛生要因について、
理解して、相手の立場を理解したうえで、仕事を頼みましょう。

__適切なフォローを入れれば、きっと、頼まれた相手は、期待に応えてくれるはずです！！__

参考
https://mitsucari.com/blog/herzberg/
自動テストとは？

# はじめに
自分の中では、
「フレームワーク等で関数を自動的にテストする」＝自動テストと解釈していました。
(PHPUnitやpythonのunittestなど)

しかし、外部の方と話すと上記認識は誤りと指摘されたので再調査しました。

下記内容にご意見がありましたら、何でもご指摘ください。
（エンジニアの用語は人やコミュニティによって、いろいろな解釈があるため勉強させてください🙇‍♀️）

# 自動テストとは？
[Pythonの自動テスト](https://www.google.com/url?sa=t&source=web&rct=j&url=https://zenn.dev/panyoriokome/scraps/76e3ec17758c57&ved=2ahUKEwjvl7XR-tb7AhUCsFYBHdg2C4EQFnoECB4QAQ&usg=AOvVaw3OpWVeS9lNvXTOh1rsxZL7)
[PHPの自動テスト](https://zenn.dev/ttskch/articles/22b6d2b1209b97)

上記の方々も私と同じ認識の様子。
「フレームワーク等で関数を自動的にテストする」＝自動テストという解釈は間違いではないようです。

# 自動テストとテスト自動化
自動テストと似た用語として「テスト自動化」というものがありました。
テスト自動化とは、ツールによって自動的にテスト実施することを指すようです。
[テスト自動化とは](https://products.sint.co.jp/obpm/blog/test_automation#toc-4)


そして、UIのテストを自動化する場合、
ツールを利用するため「テスト自動化」に分類される様子。
[UIのテスト自動化](https://ranorex.techmatrix.jp/blog/2022/07/15/automated-gui-testing-what-to-expect/)

# まとめ
#### 「自動テスト」が指す内容
自動テストを正確に定義している情報がありませんでしたが、
今回の調査結果から、自動テストとは「フレームワーク等で関数を自動的にテストすること」、
テスト自動化とは「ツール等で画面などを自動的にテストすること」
と解釈するのが正しそうでした。

テストを自動的に実施することについて、
バックエンド側では自動テスト、フロント側ではテスト自動化と表現するのが適切という認識です。

そして、「自動テスト」と「テスト自動化」を同じ用語と捉える可能性もあるため、
人と話すときは認識合わせが必要と感じました。

# 余談
https://sites.google.com/site/testautomationresearch/home?authuser=0
テスト自動化エンジニアという職種の方に聞けば、正確な情報が得られるかもしれません。
fatal: ambiguous argument 'branch_name': both revision and filenameの解決方

ブランチを操作しようとしたときにでたエラー
```
fatal: ambiguous argument 'branch_name': both revision and filename
Use '--' to separate paths from revisions, like this:
```
「branch_name」という名前のブランチと、「branch_name」という名前のファイルまたはディレクトリがあることを示しています。

コマンドで「branch_name」をブランチとして扱いたい場合は、
```git log --oneline branch_name --```
「branch_name」をファイルとして扱いたい場合は、
```git log --oneline -- branch_name```

ブランチ名とファイル/ディレクトリが同じだと今後もトラブルが出そうなのでブランチ名を変更することにしました。
**ローカルのブランチ名を変更する方法**
```git branch -m <古いブランチ名> <新しいブランチ名>```
今開いているブランチをリネームする場合は、単純に新しいブランチ名を指定するだけです。
```git branch -m <新しいブランチ名>```
build.gradle.ktsでUnresolved reference: implementationエラー

# 現象
build.gradle.ktsで下記のようにimplementationがコンパイルエラー(Unresolved reference: implementation)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/c8c988d1-6b45-db74-59da-9d1dea75ef27.png)

# 解決法
IDE(IntelliJ IDEA)が古かったのが原因。IntelliJ IDEA2020をアンインストール後
IntelliJ IDEA2022をインストールで解決。
vscodeのショートカット

vscodeのショートカット

・編集

カーソルがある行の下に空行を挿入
⌘ + Enter

カーソルがある行の上に空行を挿入
⌘ + Shift + Enter

・移動

カーソル行の内容を↓に移動
option + ↓

カーソル行の内容を↑に移動
option + ↑

カーソル行の内容を↓にコピー
option + shift + ↓

カーソル行の内容を↑にコピー
option + shift + ↑

・コメント

行コメントにする
⌘ + /

行コメントを外す
⌘ + /

ブロックコメントにする
option + shift + a

ブロックコメントをはずす
option + shift + a

・表示

折り返し位置切り替え
option + z

フォントサイズ等を大きくする
⌘ + shift + ;

フォントサイズ等を小さくする
⌘ + -

・選択

カーソルの単語選択
⌘ + d

カーソルの単語4つ選択
⌘ + d、⌘ + d、⌘ + d

現在行を選択
⌘ + l

現在行から下に2行選択
⌘ + l, ⌘ + l

アクションスマートセレクトを2つ広げる
⌘ + shift + contrl + →, ⌘ + shift + contrl + →

アクションスマートセレクトを2つ縮める
⌘ + shift + contrl + ←, ⌘ + shift + contrl + ←

・選択/置換

エディタ内の検索
⌘ + f

エディタ内の置換
⌘ + option + f

フォルダ/ワークスペース全体を検索
⌘ + shift + f

フォルダ/ワークスペース全体を置換
⌘ + shift + h

・UI操作

サイドバーを開く
⌘ + b

サイドバーを閉じる
⌘ + b

エクスプローラーを開く
⌘ + shift + e

検索を開く
⌘ + shift + f

設定画面を開く
⌘ + ,

ソース管理を開く
contrl + shift + g

デバッグを開く
⌘ + shift + d

拡張機能を開く
⌘ + shift + x

パネルを開く
⌘ + j

パネルを閉じる
⌘ + j

＊パネル
https://murashun.jp/article/programming/visual-studio-code/panel.html

出力を開く
⌘ + shift + u

出力を閉じる
⌘ + shift + u

問題を開く
⌘ + shift + m

問題を閉じる
⌘ + shift + m

デバッグコンソールを開く
⌘ + shift + y

デバッグコンソールを閉じる
⌘ + shift + y

・基本操作

上書き保存
⌘ + s

名前をつけて保存
⌘ + shift + s

・エディタ

2つ目のエディタグループを作成
⌘ + 2

1つ目のエディタグループに移動
⌘ + 1

楽しく直感的にショートカット＆コマンドを練習できるサイト。

https://command-lab.com/