OmniAICreator/Qiita-1.07M huggingface dataset:
カット編集ならffmpegが最速だと気づいた

こんにちは、XRエンジニアのイワケンです。

先日テック系イベントを主催しまして、Youtubeにアーカイブ動画を上げようとしたときに

- 合計2時間以上のmp4のカット編集

って、めっちゃ大変！ということに気づきました。

当初Windows標準のClipchampという編集ソフトでカット編集をしようと思ったのですが、書き出しにめっちゃ時間がかかる...! おそらく1時間くらいかかりそうな感じでした。

![Clipchamp – 動画エディター 2023-03-26 21.42.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96970/13e1c871-a0c2-8023-ed08-6b66be4df7eb.png)

もっと早くできないか、、、ということでffmpegコマンドなら一瞬でできることに気づき実行したら、文字通り一瞬でできました。

# コマンド

## カット

```
ffmpeg -i input.mp4 -ss 00:02:00 -to 00:08:00 -c copy output.mp4
```

## 2つの動画をつなげる

list.txtファイルを新規作成し、UTF-8のエンコードで保存します。

```
file 'A.mp4'
file 'B.mp4'
```

上記のようなファイルにします。その状態で

```
ffmpeg -f concat -safe 0 -i list.txt -c copy C.mp4
```

と打つことで合成されます。

速攻です。ffmpegでカット編集していきましょう。
Dockerで構築したRailsコンテナのログが表示されない

個人開発をしていてなかなか苦しんだので備忘録として残しておきます。

## 環境
Docker
Rails（APIモード）：v7.0.4.2

## 発生した問題

- Dockerに本来表示されるはずのログが表示されない
- 何もログが出ないのでデバッグもできない

## 試したこと
- docker-compose.ymlに以下の設定を追加
```yml
app:
    build: .
    env_file:
      - ./.env
    environment:
      - RAILS_ENV=development
    command: bash -c "rm -f tmp/pids/server.pid && bundle install && bundle exec pumactl start"
    volumes:
      - .:/app/webapp
      - ./tmp/sockets:/app/webapp/tmp/sockets
    ports:
      - 3000:3000
    tty: true #追加
    stdin_open: true #追加
    depends_on:
      - db
```
- development.rbの`config.consider_all_requests_local`がtrueになっていること
- development.logの確認→出力されていた
- puma.stout.logの確認→出力されていた

などなど。

最初デバッグしようと思ってログが出ていないことに気づいたので、
デバッグのgemの問題かなと思ってそっち方面でも色々調べてました。

## 原因と解決策
`puma.rb`と`development.rb`の設定の問題のようでした。
`puma.rb`については、標準出力が`log/puma.stdout.log`にリダイレクトしていたようです。

> 修正前

```ruby:puma.rb
stdout_redirect "#{app_root}/log/puma.stdout.log", "#{app_root}/log/puma.stderr.log", true
```


> 修正後

```ruby:puma.rb
unless ENV.fetch("RAILS_ENV", "development") == "development"
  stdout_redirect "#{app_root}/log/puma.stdout.log", "#{app_root}/log/puma.stderr.log", true
end
```

あと、development.rbに以下を追加しました。
```ruby:development.rb
config.logger = Logger.new(STDOUT)
```

設定周りはネットの記事を参考にそのままコピペしたので、
標準出力のこととか全然わかっていませんでした。

良い勉強になりました。
もっとスマートな解決方法とかあればぜひコメントいただけたらとも思います！

### 参考
https://qiita.com/Sicut_study/items/d8db228ca22392acd18a
railsコマンド、rakeコマンドが通らない時に起きてたエラー

自分のための覚え書きですが、誰か同じ問題が起きた人の参考になれば。

**環境**
Mac
rbenvでrubyをインストール

## 起こったエラー
`rails s` や `rake db:migrate` をやった時に、以下のようなエラーが出てしまうことが何度かありました。

```
OpenSSL::Cipher::CipherError: couldn't set additional authenticated data
```

```
ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessage
```

上記のエラーで検索すると、 master.keyと config/credentials.yml.enc の鍵が一致していないという原因はよく出てきますが、その問題を解決してもまたこのエラーが起こることがありました。

その時に原因だったのが、プロジェクト環境でrbenvでインストールしたrubyではなくシステムのrubyを使ってしまったという問題でした。
ターミナルで以下のコマンドで調べたところ、このように返ってきていました。
```
% which gem
/usr/bin/gem

% which ruby
/usr/bin/ruby

% which rails
/usr/local/bin/rails
```
この状態だと、Macに最初からインストールされているシステムのrubyを使ってしまっています。

rbenvでインストールしたrubyを使うようにパスを通します。
```
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
```
確認。
```
% which gem
/Users/xxxx/.rbenv/shims/gem

% which ruby
/Users/xxxx/.rbenv/shims/ruby

% which rails
/Users/xxxx/.rbenv/shims/rails
```

これで直りました。
building block：AUTOSAR Abstruct Platform , OSEK(37)

building blockという用語を、AUTOSAR Abstruct Platform の視点で解説する。

>「構成要素」の英訳としてよく使われるのがelementやcomponent、entityなどではないかと思いますが、どれも今ひとつしっくりこない時があります。また、constituentだとちょっとフォーマル過ぎる感があります。
そんな時に使えるかもしれない候補の一つがbuilding block。これは「箱」感がいい感じではないかと思うのです。

<この項は書きかけです。順次追記します。>
This article is not completed. I will add some words in order.

# building block
OSのPOSIXとOSEKを一つの箱に収めるか、２つの箱として用意するかが現在の分かれ道。

ひとまず一つの箱にするのが現在の方針。

下回りも、上まわりも、どちらおmひとつづつ用意すればいいから。

# AUTOSAR 
AUTOSARは、自動車等の回転制御などのような瞬時の制御の邪魔をしないCANという通信規約と、CAN通信を助けるつつ制御の邪魔をしない割り込みの分類をしたOSEK/VDXというOperating Syatemの国際規格を前提に、模型を書けば、ソフトウェアはすべて自動生成でできるはずだという想定で技術の体系化を図って来た団体です。

残念なことに、ISOと契約を結ばず、公式な情報交換(liaison)をしていないため、WTO/TBT協定違反になる可能性を留保した状態で20年を経過してきました。　

官公庁・学校・公的団体（NPOを含む）システムの課題、官（０）
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

LaTeX(0) 一覧　
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792

自動制御、制御工学一覧（０）
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

Rust(0) 一覧　
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927

小川清最終講義、最終講義（再）計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53

＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.
### 文書履歴(document history)
ver. 0.01 初稿 　20230326
ver. 0.02 add memo 20240423
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.
License-Plisterror使用時にエラー build: Command PhaseScriptExecution failed with a nonzero exit code

# 【エラー内容】
CocoaPodsでLicensePlisterror使用時で以下のエラーが発生した場合の対処法です。
自分のメモ、備忘録

```
line 4: /usr/local/bin/license-plist: No such file or directory
Command PhaseScriptExecution failed with a nonzero exit code
```
# 【原因】
license-plistのシンボリックリンクを作成してなかったことが原因でエラーになったようです。

# 【解決方法】
以下の手順でエラーを解決できます。

## 1. Homebrewをインストールする
Homebrewは、macOSでソフトウェアをインストールするためのパッケージマネージャーです。

ターミナルで以下のコマンドを実行して、Homebrewをインストールします。

```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
## 2. license-plistをインストールする
CocoaPodsのスクリプトに必要なlicense-plistをインストールします。

ターミナルで以下のコマンドを実行します。

```
brew install license-plist
```
## 3. license-plistを/usr/local/binにシンボリックリンクを作成する
CocoaPodsのスクリプトに必要なlicense-plistを/usr/local/binにシンボリックリンクを作成します。

ターミナルで以下のコマンドを実行します。
```
sudo ln -s /opt/homebrew/bin/license-plist /usr/local/bin/license-plist
```
以上でエラーが解消され、正常にビルドできるようになります。

# おわりに
間違っていたら教えてください！
スプレッドシートを開いたときにメッセージボックスを表示する

# はじめに
在宅勤務も広がり、遠隔のメンバーとの連絡や取りまとめをする機会が増え、Google SpreadSheet（以下、スプレッドシート） を使ってアンケートや票の共有をする機会が増えたかと思います。

スプレッドシートには、大事なお知らせなどを表示する機能がないので、簡単にできる小技をここに置いておこうと思います。



# 目次
1. 使い方
1. 手順

# 使い方
スプレッドシートを開くときに自動的にメッセージを表示できます
これは、スプレッドを共有した時にも表示できるのでアンケートなどを作って共有したときにファイルを開く全員に表示ができます

![メッセージイメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486463/2264f359-25a7-04b6-d2a8-58aee953f924.png)

# 手順

1. まずは設定したいスプレッドシートを開きます。
![表.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486463/9c1954de-abb4-b48b-a966-0ccfd905ed12.png)

1. メニューバーから、[拡張機能]を選び、[Apps Script]をクリックします
![手順１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486463/7984a9da-e53b-e93c-0aa6-2ec0e1351b24.png)


1. 表示される画面はAppsScriptといわれるちょっとしたプログラミング画面です
いろいろなことができますが、今回はコピぺでできます。

![手順２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486463/265de37e-c1fc-c3ee-6399-a31cd7535654.png)

1. 表示されている内容を以下の内容に変更し、実行ボタンの左側にある保存ボタン（プロジェクトを保存と表示されるフロッピーディスクのマーク）を押します。
![手順３.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486463/62d77e89-7bfd-bdc6-19d4-d687e940dd3d.png)



```javascript:GAS　サンプルコード
function onOpen() {
  Browser.msgBox("幹事からのお知らせ","締め切りをさせていただきました！\\n急遽予定が変更の場合には幹事まで！(当日参加もOK！）\\n\\n幹事:ハヤサカ", Browser.Buttons.OK);
}

```

```javascript:GAS　書き方
function onOpen() {
  Browser.msgBox("タイトル","メッセージ", Browser.Buttons.OK);
}

//メッセージ中に改行する場合には、[ \\n ]と書きます。  
```




これで完成です。（簡単ですね）
あとはスプレッドシートを開きなおすとメッセージが表示されます。

![メッセージイメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486463/3bb954ce-4c89-2e40-fc03-3fbc9b530212.png)


# さいごに
簡単なプログラミングになりますが、コピペでできますので簡単です
ワンランク上のスプレッドシートを目指しましょう！


閲覧ありがとうございました。
Spring BootからCloudWatchにログを出力できない！

# SpringBootからCloudWatchにログを出力できなかったときの解決方法

## 結論
- ~~Slf4jがデフォルトで出力するログ形式とCloudWatch Agentが読み込むログの形式があっていなかった。~~

- ｢CloudWatchAgent｣ と｢CloudWatch Logsエージェント｣が競合していた。

## 前提
- EC2インスタンス
    - t2.micro
- Java環境
    - openjdk version "11.0.11" 2021-04-20 LTS(Corretto-11.0.11.9.1)
    - SpringBooot 2.7.3
- 開発環境
    - MacBookPro 2017 (BigSur, intel corei7)

## 解決方法
Slf4jの出力形式を指定して、CloudWatchが適切にログを読み込めるようにします。

1 . ｢CloudWatch Logsエージェント｣を削除する
`$ sudo systemctl stop awslogs`
`$ sudo systemctl disable awslogs`

2. ｢CloudWatchAgent｣をインストールする
次のサイトを参考にEC2インスタンスへCloudWatchAgentをインストールします。

https://dev.classmethod.jp/articles/ec2-how-to-install-cloudwatch-agent-for-beginner/


## 他に確認すべきこと
1. EC2インスタンスのロール
EC2のインスタンスに以下のポリシーがアタッチされていることを確認します。
```
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
```
1. VPCサブネットのセキュリティグループ
アウトバウンドに宛先：インターネット(0.0.0.0/0)、ポート：HTTPS(443)が追加されていることを確認します。
(プライベートサブネットで運用する必要がある場合は、VPCエンドポイントを宛先に追加します）


## 参考記事
Qiita参考記事

https://qiita.com/rubytomato@github/items/93770f827e46cc7e684f#consoleappender

https://qiita.com/hamingcode/items/ca434cfa24b18a9a48ac

AWS公式

https://repost.aws/ja/knowledge-center/cloudwatch-push-logs-with-unified-agent

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/UseCloudWatchUnifiedAgent.html
ScrcpyHub v2.0.0 をリリースしました

<div align="center">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/b353a65f-9ae5-bf70-d0e4-6416785d9c5d.png"  alt="属性">
</div>

## はじめに

ScrcpyHubはAndroidの画面をミラーリングするためのGUIアプリケーションです。ScrcpyHubは以下のGitHubリポジトリで絶賛開発中ですのでよければコントリュート＆スター登録お願いします。

https://github.com/kaleidot725/ScrcpyHub

ScrcpyHubはscrcpyというコマンドツールを利用して作成しております。

https://github.com/Genymobile/scrcpy

## できること

### 機能一覧

ScrcpyHubでは以下の機能をサポートしています。  

- 接続しているAndroidデバイスの自動検知
- Androidデバイスのミラーリングの開始と停止
- Androidデバイスのスクリーンの録画
- Androidデバイスのスクリーンショットの取得
- Windows10/11、macOS、Linuxに対応
- ライトテーマ・ダークテーマの切り替え
- **NEW v2.0.0** オーディオのオプションの対応
- **NEW v2.0.0** デバイスのオプションの対応
- **NEW v2.0.0** HIDキーボード・マウスのオプション対応

### 機能デモ

ScrcpyHubでは以下のような感じでAndroidデバイスのミラーリングを制御できます。

![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/75175a2b-29e6-cc69-53ad-7fffaeafcddf.gif)


### **NEW v2.0.0** オーディオのオプションの対応

scrcpyのv2.0.0からAndroid 11以上であればオーディオのミラーリングができるようになりました。なのでScrcpyHubのv2.0.0から以下のオーディオのオプションを使えるように対応しました。

| 項目 | 内容 |
| -------- | ---- |
| No Audio | オーディオのミラーリングを無効化する | 
| Bitrate(Kbps) | オーディオをミラーリングする際のビットレートを指定する | 
| Buffering(ms) | オーディオをミラーリングする際のバッファリング時間を指定する |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/5c66b8d0-666a-5910-cc0c-9395ee4e2f2e.png)

### **NEW v2.0.0** デバイスのオプションの対応

ScrcpyHubではscrcpyのデバイスに関するオプションは利用できませんでした。
v2.0.0から以下のscrcpyのデバイスのオプションを使えるように対応しました。

| 項目 | 内容 |
| -------- | ---- |
| Stay Awake | Androidデバイスがスリープ状態にならないようにする | 
| Show touches |  Androidデバイスでタップした場所がわかるように表示する | 
| Enable power off on stop | ミラーリングが停止したときの電源OFFにする |
| Disable power on on start | ミラーリングが開始したときに電源をONにしないようにする |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/bf8fc47b-5744-3727-7dd5-b485b8bc26cb.png)

### **NEW v2.0.0** HIDキーボード・マウスのオプション対応

ScrcpyHubではscrcpyのHIDに関するオプションは利用できませんでした。
v2.0.0から以下のscrcpyのHIDのオプションを使えるように対応しました。

| 項目 | 内容 |
| -------- | ---- |
| Keyboard Simulation | Androidデバイスにキーボードを繋げたときのシミュレーションを開始する | 
| Mouse Simulation | Androidデバイスにマウスを繋がえたときのシミュレーションを開始する | 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/75a3c1ba-7dac-aa9b-a248-7f9697c250da.png)

## インストール方法

ScrcpyHubを利用するにはadbとscrcpyコマンドのインストールが必要になります。  
OSごとの手順が異なるので、以下の手順を参考にして従ってインストールして使ってください。  

### 💻Windows10/11

1. [GitHub](https://github.com/Genymobile/scrcpy#windows)からscrcpy(v2.0.0+)を任意の場所にダウンロードしてインストールする
2. [GitHub](https://github.com/kaleidot725/ScrcpyHub/releases/tag/v2.0.0)でScrcpyHubをインストールして起動する
3. ScrcpyHubのPreferencesを開く
4. adbとscrcpyのパスを通して、Saveを押す

※ 詳しい手順はこちらに記載がありますのでご確認ください。

https://github.com/kaleidot725/ScrcpyHub/wiki/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95-:-Windows%E7%89%88

### 💻MacOS

1.android-platform-toolsとscrcpy(v2.0.0+)をbrewコマンドでインストールする
2.[GitHub](https://github.com/kaleidot725/ScrcpyHub/releases/tag/v2.0.0)でScrcpyHubをインストールして起動する
3.ScrcpyHubのPreferencesを開く
4.adbとscrcpyのパスを通して、Saveを押す

```other
brew install android-platform-tools
brew install scrcpy
```

## 問い合わせ先

ScrcpyHubは以下のレポジトリで絶賛開発中です、もし何か改善案や不具合などあればご連絡ください。

https://github.com/kaleidot725/ScrcpyHub
2023年度最新版無償利用可能なSAST(Static Application Security Testing)ツールの比較

# SAST(Static Application Security Testing)とは？
SASTは「Static Application Security Testing」の略称で、アプリケーションのコードを静的に解析し、セキュリティ上の脆弱性を検出するテストのことである。本記事ではSASTを実現するためのツールを比較してみる。

# SASTツール一覧
選定条件 
* OSSである。
    * GitHub,GitLab,BitBucketなどのVCSでソースコードが公開されている。
    * GitHubスター100以上である。
* ドキュメントが存在する。

<table>
<tr>
  <th width="50">ツール名</th>
  <th width="50">動作環境</th>
  <th width="50">ライセンス</th>
  <th width="50">サポート対象言語</th>
  <th width="50">ドキュメント</th>
</tr>
<tr>
  <td><a href="https://github.com/PyCQA/bandit">Bandit</a></td>
  <td>Python</td>
  <td>Apache2.0</td>
  <td>Python</td>
  <td><a href="https://bandit.readthedocs.io/en/latest/">あり</a></td>
</tr>
<tr>
  <td><a href="https://github.com/liquibase/liquibase">Brakeman</a></td>
  <td>Ruby</td>
  <td>MIT</td>
  <td>Ruby</td>
  <td><a href="https://brakemanscanner.org">あり</a></td>
</tr>
<tr>
  <td><a href="https://github.com/findbugsproject/findbugs">FindBugs</a></td>
  <td>Java</td>
  <td>Apache2.0</td>
  <td>Java</td>
  <td><a href="https://spotbugs.github.io">あり</a></td>
</tr>
<tr>
  <td><a href="https://github.com/ripsscanner/rips">RIPS</a></td>
  <td>PHP<br>
WebServer<br>
WebBroser</td>
  <td>GPL3.0</td>
  <td>PHP</td>
  <td><a href="https://github.com/ripsscanner/rips/blob/master/README.md">READMEのみ</a></td>
</tr>
<tr>
  <td><a href="https://github.com/pmd/pmd">PMD</a></td>
  <td>Java</td>
  <td>BSD</td>
  <td>Apache Velocity<br>HTML<br>Java<br>JavaScript<br>Kotlin<br>PLSQL<br>Salesforce.com Apex and Visualforce<br>Scala<br>Swift<br>XML<br>XSL
</td>
  <td><a href="https://pmd.github.io">あり</a></td>
</tr>
</table>
Googleデジタルマーケティング＆Eコマース：Eコマース戦略に不可欠な要素

# はじめに

”Googleデジタルマーケティング＆Eコマース プロフェッショナル認定証"　の受講が完了しました(2022/3/3)。私がこのコースから得られた素晴らしい体験を、テーマごとに分割して、わかりやすくご紹介しています。興味を持たれた方は、是非下記を受講してみてください。

https://jp.coursera.org/professional-certificates/google-digital-marketing-ecommerce

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/8957baaf-ce73-a2a4-19cd-72db89b6874f.png" width="800">

Morning Brew-Harris Poll によると、26 歳から 41 歳（ミレニアル世代）の 50％が、ほとんどの買い物をオンラインで行っているとのことです。オンラインショッピングは、今後も全ての年齢層で急成長していくでしょう。今回、競争の激しい市場でオンライン顧客を獲得するためのeコマース戦略に不可欠な要素を紹介します。

# Eコマース戦略

***<font color="MediumVioletRed">『Eコマース戦略とは、オンラインストアを促進し、売上を増加させるための作業計画のこと』</font>***

全てのオンラインビジネスは、Eコマース戦略を構築し、実行することが非常に重要です。それにより、顧客がオンラインでビジネスやブランドを見つけるのに役立ちます。

### <font color="MediumBlue">Googleビジネスプロフィール</font>

Googleビジネスプロフィールは、Google検索とGoogleマップに表示されるビジネス情報をカスタマイズできます。マップは、特定の地域に店舗を持つオンラインビジネスにも適用できることに注意してください。

ビジネスプロフィールは、ビジネスの可用性を示しています。これは、どのような規模のビジネスでも、"私は存在し、あなたのビジネスのために開かれています！"と大々的にブロードキャストすることができます。

### <font color="MediumBlue">オーガニック・ソーシャルメディア</font>

Sprout Socialのある調査によると、オンライン顧客の40%はパーソナルネットワークから新しいブランドを見つけ、32%は口コミから見つけるという。これらはすべて、オーガニック・ソーシャルメディアの例です。さらに、YouTubeの人気とTikTokの台頭により、多くのオーガニック・ソーシャルメディアが動画から生まれることになるでしょう。

### <font color="MediumBlue">有料検索、ディスプレイ、ソーシャルメディア、ショッピング広告</font>

オーガニックコンテンツと有料コンテンツの組み合わせが最良の結果を生むため、有料検索、ディスプレイ、ソーシャルメディア、ショッピング広告は、通常Eコマース戦略に含まれます。

有料広告の利点は、

- ブランディング
- 広告コピー
- ランディングページ
- 入札戦略
- パフォーマンス

を直接コントロールできることです。

Eコマースビジネスでは、有料広告が収益の大きな割合を占めています。ソーシャルメディアユーザーの中には、自分のソーシャルメディアのフィードからブランドコンテンツをブロックする人もいますが、有料ソーシャルメディア広告は、依然としてEコマース戦略の有用な一部です。

コンテンツの観点からは、FacebookやInstagramのショッパブル広告は非常に効果的です。一部のユーザーは、有料広告をクリックしたことを認識せずに、それらに関与しています。

### <font color="MediumBlue">インフルエンサー・マーケティング</font>

オンライン顧客の中には、自分がフォローしているインフルエンサーから新しいブランドを見つける人が、少数ながら増えています。ある試算によると、この数はオンライン顧客の約35%にのぼります。インフルエンサーは、ブランドや製品が、オーディエンスの興味に合わせたメッセージで、適切な顧客にリーチするのに役立つのです。

有料のインフルエンサーキャンペーンは、Eコマース戦略の一部となり得ますが、インフルエンサーの影響を制限する特定の慣行に注意する必要があります。

- ステルスマーケティングの中には、スポンサー付き広告キャンペーンの一環であることを明かさず、口コミのように見えるコンテンツを投稿するものがあります。そのため、ユーザーはインフルエンサーに対して少し警戒心を抱くようになります。
- インフルエンサーが個人的に使用している証拠を示した場合にのみ、インフルエンサーが推奨する製品を購入する顧客もいます。例えば、インフルエンサーは、推奨する製品を実際に使用したことを証明するために、空のパッケージの写真を見せます。
- インフルエンサーの中には、ボット（ボットはシステムと対話するが、人間のユーザーではない）によって動かされた偽のフォロワーを持っている場合があります。フォロワー数が多いからと言って、必ずしもユーザーエンゲージメントが起こっているとは限りません

### <font color="MediumBlue">In-store ads</font>

店舗とオンラインの両方に顧客を持つハイブリッドビジネスの場合、オンライン注文の利点、利便性、コスト削減について顧客に知らせる店舗広告が非常に効果的であることができます。

- オンライン販売の多くは、店舗での既存顧客から生み出される可能性があります。
- また、オンラインストアで購入したお客様にのみ、特別な在庫（入手困難なサイズや色）や、より割引率の高いクリアランス在庫を提供することで、インセンティブとしている企業もあるようです。
三乗根の計算「2023早稲田（社）」をwolframalphaとsympyでやってみたい。

wolframで、(2)(3)はできました。
sympyで,できませんでした。


オリジナル

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

大学入試数学問題集成＞【３】　テキスト

https://mathexamtest.web.fc2.com/2023/202313591/2023135910800mj.html#top-0803

# wolframで(数学入力で)
(1)勉強中

(2)

https://www.wolframalpha.com/input?i2d=true&i=Cbrt%5B5Sqrt%5B2%5D%2B7%5D-Cbrt%5B5Sqrt%5B2%5D-7%5D&lang=ja

結果　2
数直線

(3)

https://www.wolframalpha.com/input?i2d=true&i=Cbrt%5B5Sqrt%5B2%5D%2B7%5D%2BCbrt%5B5Sqrt%5B2%5D-7%5D&lang=ja

別の形　2 sqrt(2)
近似値　2.828...
数直線

# wolframで(自然言語で)
(1)勉強中

(2)

https://www.wolframalpha.com/input?i=%285*2**%281%2F2%29%2B7%29**%281%2F3%29-%285*2**%281%2F2%29-7%29**%281%2F3%29&lang=ja

(3)

https://www.wolframalpha.com/input?i=%285*2**%281%2F2%29%2B7%29**%281%2F3%29%2B%285*2**%281%2F2%29-7%29**%281%2F3%29&lang=ja


# wolframで(English版)
省略

# sympyで(鈴木貫太郎様の方法で)
勉強中


# sympyで,できませんでした。

```python
from sympy import *
print("#(2)",(5*2**(1/2)+7)**(1/3)-(5*2**(1/2)-7)**(1/3))
print("#(3)",(5*2**(1/2)+7)**(1/3)+(5*2**(1/2)-7)**(1/3))
#
s=5*2**Rational(1,2)
t=(s+7)**Rational(1,3)-(s-7)**Rational(1,3)
u=(s+7)**Rational(1,3)+(s-7)**Rational(1,3)
print("#(2)",t.simplify(),float(t.simplify()))
print("#(3)",u.simplify(),float(u.simplify()))
#(2) 1.9999999999999993
#(3) 2.8284271247461907
#(2) -(-7 + 5*sqrt(2))**(1/3) + (7 + 5*sqrt(2))**(1/3) 2.0
#(3) (-7 + 5*sqrt(2))**(1/3) + (7 + 5*sqrt(2))**(1/3) 2.8284271247461903
```
web上の実行方法:
上記のソースをコピー貼り付けです。改行です。
黒背景の右上に、マウスを移動すると、コピーマークが発生します。
~~資源の無駄使い。ごめんなさい。~~

https://live.sympy.org/
Mac M1での仮想環境構築成功！！！　決定版と思われます！ Beta版だけど。。。

＜序文＞
一年前(2022年５月）に、Mac　M1で仮想環境を構築しようとして、非常に苦労したと言う下記記事を書きました。

Mac M1で仮想環境を立ち上げるのに、半日潰れた話。
https://qiita.com/naiveprince0507/items/c32fea219e5dc0e0a353

上記記事では、有料版のParallel　Desktop以外はすべての環境を試しましたが、結果的にUTM以外では全くダメだったと言う結論に至っております。ただ、この記事の後、UTMを使い続ける内に、色々な不具合を発見しました。
遅いとよく言われる不具合は勿論、ホストマシンとゲストOS間でのテキストのコピペがどうしても出来ない等、数々の不具合が発生して、結局、２週間も経たずに、使用を諦めました。

＜Mac　M1の仮想化環境に関する技術者の間での評判＞
「Mac　M1では、仮想環境構築は無理！」と言うのは、エンジニアの間では、コソコソと囁かれております。
ネットとメール、あるいはMS Office位しか利用しない一般ユーザーならまだしも、仮想環境を構築できないと言うのは、エンジニアには致命的です。
私自身も、「VMインスタンス環境構築が無理なら、Docker環境はどうか？」と考え、Docker DesktopやRancher Desktopでの構築を試みたのですが、結論から言うとダメです。
色々なエラーが発生して、Docker　DesktopもRancher　Desktopも、Mac　M1環境では使えません。
そんな訳で、仮想インスタンス環境やDocker環境を構築する際は、AWSやGCP等のクラウドサービス上で構築＆運用をしておりました。（ただ、これはこれで面倒臭いし、コストもかかります。）

＜OrbStackと言う、Virtualization　Framework＞
つい先日（２０２３年３月２４日）、OrbStackと言うフレームワークのBeta版が公開されました。Beta版なので、無料で使えます。　こちらの記事に、経緯や概要が書いております。
https://applech2.com/archives/20230324-orbstack-run-docker-and-linux-on-your-mac.html

＜OrbStackの検証＞
結論から言うと、動きます！　（素晴らしい！）
下記の公式サイトからDL可能。
Apple　Silcon用とIntel用でフレームワークがあるので、前者を選択。
→　https://orbstack.dev/

下記が証拠書類です。因みに、OpenJDK１７を試しにインストールしてみましたが、通常のLinuxへのインストールと同様にインストール可能です。

![名称未設定8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1665829/53699f7b-8367-2003-238e-2c9081abf2b2.png)

きちんと出来ております。感動！
```
user_X@ubuntutest:/Users/user_X/OrbStack/ubuntu_test$ uname
Linux
user_X@ubuntutest:/Users/user_X/OrbStack/ubuntu_test$ ls
Applications  Users    boot  home   mnt      proc  sbin  tmp
Library       Volumes  dev   lib    opt      root  srv   usr
System        bin      etc   media  private  run   sys   var
user_X@ubuntutest:/Users/user_X/OrbStack/ubuntu_test$ java -version
openjdk version "17.0.6" 2023-01-17
OpenJDK Runtime Environment (build 17.0.6+10-Ubuntu-0ubuntu122.10)
OpenJDK 64-Bit Server VM (build 17.0.6+10-Ubuntu-0ubuntu122.10, mixed mode, sharing)
user_X@ubuntutest:/Users/user_X/OrbStack/ubuntu_test$ uname
Linux
user_X@ubuntutest:/Users/user_X/OrbStack/ubuntu_test$ 
user_X@ubuntutest:/Users/user_X/OrbStack/ubuntu_test$ 
user_X@ubuntutest:/Users/user_X/OrbStack/ubuntu_test$ 
```

＜最後に＞
ちょっと使ってみた感じだと、完璧に見えます。
但し、Beta版ですから、いずれ有料化することが予想されます。
Eclipse の自動補完を有効にする

PCのCドラを換装してから eclipseを入れていなかったので、久しぶりに再インストールしたら、自動補完が効かなかったので、自動補完を有効にする方法について調べました。

## 手順
〇「ウィンドウ」→「設定」
<img alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/c2ff0f84-c75c-3e68-9cec-920ee74f8afb.png">
〇「Java」→「エディター」→「コンテンツ・アシスト」
<img alt="setting_image.png" width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/bf18f65e-21f3-c794-7ae6-3d8423e89fb4.png">
〇「自動有効化」→「Javaの自動有効化トリガー」
ここの設定値がデフォルトだと`.`になっています。
これを`.abcdefghijkemnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_`にして更新します。
<img alt="スクリーンショット 2023-03-26 201129.png" width="520" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/5e48a665-fb88-5b0a-78a1-f3b245ea0598.png">
<img alt="after_image.png" width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/a6cf1a0d-fb17-7263-c4f7-0dcd66f35596.png">

これで、自動補完がON になります。
<img alt="自動補完_候補.png" width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/cb73ed52-ca55-ccc9-c0a4-ecc4169bc173.png">

## 終わりに
初めからこの設定にしておいてくれよ。。。
仕事の目標設定

# 仕事の目標設定  

## 目的  
> 年度末ということで、新しい目標を決めたり、今の目標を修正したり、
行う時期のため、原点に返って「目標設定の定め方」を整理してみました。  

## 仕事の目標をまとめる3つのコツ  
### 1. SMARTを意識する  
仕事の目標をまとめるときは「SMART」というフレームワークの活用がおすすめです。  

> SMARTとは  
```vim
	1.1. 「Specific（具体的かどうか）」  
	1.2. 「Measurable（数値で表しているか）」  
	1.3. 「Achievable（実現可能かどうか）」  
	1.4. 「Relevant（関連性はあるか）」  
	1.5. 「Time-bound（期限が明確か）」  
```           
#### Specific：具体的かどうか
目標設定の際は、設定する目標がより具体的であることがポイントです。  
> 例えば、「今週のテスト完了は４機能分」だけでは曖昧なため、達成するための行動計画や評価設定が難しくなります。

> この場合、「全体として150ケースあり、A機能B機能30ケースずつ、C機能40ケース,
D機能50ケースとして４機能分を今週中に100%にする」といった定量的に「Specific（具体的かどうか）」を意識することで、再現性のある具体的な目標設定が可能になります。

> 具体的な目標設定をすることで、目標の達成状況を定量的に評価しやすくなり、客観的かつ公平な評価を実現することができるでしょう。

#### Measurable：数値で表しているか
設定する目標は、なるべく数値で評価することができる定量目標を設定することが重要です。例えば、「毎日、できるだけテストをこなす」という目標では、数値で表せているとは言えません。

#### 「Measurable（数値で表しているか）」を意識して、「毎日1機能30件、テスト実施を実行する」という数値化された目標設定を行いましょう。

> 数値で表した目標にすることで達成までのプロセスも数値で確認できるため、行動目標の評価もしやすくなります。

#### Achievable：実現可能かどうか
目標設定は、高い目標であれば良いわけではありません。自分の能力に対して高すぎる目標を設定してしまうと、行動計画が立てられず、目標達成が困難になる場合が多いです。

> 例えば、現状のテスト実績数が「１週間で平均90ケース」であるにも関わらず、「テスト実績数を150ケースにする」といった目標は現実的ではありません。

#### 「Achievable（実現可能かどうか）」を意識して、「１週間平均100ケースにする」など、努力次第で手が届きそうな目標設定にすることが重要です。

#### Relevant：関連性はあるか
> 個人目標は、それぞれ独立した目標ではなく自分自身の最終目標や価値観と関連性を持たせることを意識しましょう。

> 例えば、「専門チームのリーダーになる」が最終目標であれば、 「リーダーになるために必要な試験への合格」「チームメンバーの管理」「専門知識を高める」といった関連性のある目標を設定しなければなりません。最終的に自分が何を目指したいのか、目標の軸を定めて、関連性のある目標設定と行動計画を立てていきましょう。

#### Time-bound：期限が明確か
> 個人目標を設定する際は、必ず明確な期限を設けるようにしましょう。他4つの要素を達成していても、期限を設定していないと適切な評価をすることができません。また、期限を設定していないと、目標達成に向けてのモチベーションを維持することも難しくなってしまいます。

> 例えば、「４機能分のテストを完了する」ではなく「1ヶ月後に、担当分のテスト工程を完了する」にすることで、「Time-bound（期限が明確か）」が達成できていると言えます。設定する期限は組織目標と紐づけつつ、実現可能な設定にすることが重要です。

### 2. チームや組織の目標を確認する
> 目標設定の2つ目のコツは、自分自身のことだけを意識した目標ではなく、チームや組織の目標と連動した目標設定をすることです。自分の目標を書き出す前に、「会社の目標」「部署の目標」「配属チームの目標」などを必ず確認しておきましょう。

> チームや組織の目標を確認することによって、組織が目指す全体像の中でも、自分自身の立ち位置ややるべきことが見えてくるはずです。

### 3. やりたいこと・できること・やるべきことから逆算する
> 目標設定を行う際は、「やりたいこと」「できること」「やるべきこと」から逆算することもおすすめです。例えば、数年後になりたい自分を想像しながら、逆算して今の目標設定を行いましょう。

> やりたいこと：like=好きなこと
できること：can=得意なことや強み
やるべきこと：must＝顧客または自身のチーム内から求められていること
この3つを書き出しながら、重なり合った部分を見つけることによって、より自身の成長に繋がる目標設定を実現することができるはずです。
新卒エンジニアが【Pythonエンジニアデータ分析試験】の模試を受けてみたら、、、③

お久しぶりです！

前回は***Pythonエンジニアデータ分析試験***の模試を受験してみました！！！
結果は前回の記事をご覧ください。
→[前回の記事はこちら](https://qiita.com/asukitt/items/5a6f3ddca83142fa9ce9)

今回は[Python模擬試験](https://study.prime-strategy.co.jp/)の第3回を受けてみました！
結果は、、、

***80点/100点満点***

前回より下がってしまいましたが合格ラインです！！

今回も直しを備忘録として残します。

## 模試の直し
#### pandas
R言語からのインスパイアのデータフレームを採用

#### logging
デフォルトの出力は　WARNING以上
∴WARNING　ERROR　CRITICAL

#### numpy
b[0:1, [1,2]]
0~1行目
[1,2]は2列目,3列目

#### pandas
read_htmlメソッドを使うと、WebサイトのHTML内のtable要素をDataFrameに取り込むことができる。read_htmlの結果はDataFrameのリストになっており、table要素が複数ある場合もインデックス番号を指定することで目的のテーブルを取得できる。

#### nunpy
df_year = pd.DataFrame(df.groupby(pd.Grouper(freq='W-MON')).sum(), columns=["rand"] )
 df_yearを出力すると、rand列の各値は***月曜日から日曜日までの***rand列の値を合計したものとなる。
↓
df_yearを出力すると、rand列の各値は***火曜日から月曜日までの***rand列の値を合計したものとなる。

#### matplotlib
・棒グラフとは異なり、ヒストグラムでは複数の値を指定すると、自動的に横に並んだ状態で表示される

・散布図では、デフォルトではそれぞれのマーカーは丸で描画されるが、marker引数にマーカーの形を指定することにより、様々な形のマーカーを使用することができる。

・サブプロットはグラフの本数ではなく、メモリグラフの個数

#### 情報利得
親ノードの不純度-子ノードの不純度

#### Irisデータセット
花の種類は目的変数、それ以外が説明変数

#### 評価
適合率：なるべく間違えたくない時
再現率：網羅性
laradockでlaravel-echo-serverを立てたときの "NOAUTH Authentication required" を解決する

調べてもなかなか出てこず、別の事象の対応策のようななにかばかり引っかかるのでメモ

## 概要

laradockを使って

```
$ docker-compose up -d redis laravel-echo-server
```

として双方向通信のためのコンテナを準備していると、
なぜかlaravel-echo-serverのほうだけが数秒で落ちてしまう。

ログを見ると

```
[ioredis] Unhandled error event: ReplyError: NOAUTH Authentication required.

中略

[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "Redis could not subscribe.".] {
  code: 'ERR_UNHANDLED_REJECTION'
}
```

というエラー。
書いてあることはわかるんだけどこれの解決策にたどり着くのに数時間要した。

## 解決策

初期状態だとlaradockの.envには`secret_redis`がredis用のパスワードとして設定されており、
何もいじらずにredisのコンテナを立てるとこのパスワードが適用され、疎通時にも必要になるっぽい。

``` laradock/.env
### REDIS #################################################

REDIS_PORT=6379
REDIS_PASSWORD=secret_redis　←これ
```


ので、
`laradock/laravel-echo-server/laravel-echo-server.json`の`databaseConfig`セクションに

``` laravel-echo-server.json
			"password":"secret_redis"
```

を追加してやったあとにlaravel-echo-serverのコンテナを再ビルドする。

```
$ docker-compose up -d --build laravel-echo-server
```

```
✔  Running at localhost on port 6001
✔  Channels are ready.
✔  Listening for http events...
✔  Listening for redis events...

Server ready!
```

よし。
画像の拡大縮小をしないで、画像サイズを合わせる

OpenCVなどで2つの画像の重ね合わせて比較したい場合、1ピクセルでも画像サイズが違うとエラーになります。

リサイズして合わせる方法がありますが、画像自体を拡大または縮小しないで重ね合わせしたい場合があります。

そこで、画像自体の拡大縮小をしないで、画像サイズをそろえるプログラムを作ることにしました。

例えば、大きいサイズの画像(画像1)と小さいサイズの画像(画像2)があり、

画像1
![hasuhana.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3245171/ef8a626a-9154-dd21-0168-431c4ba3a7ea.jpeg)

画像2
![hasuhana2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3245171/297afb07-6feb-0d82-4df0-3588a52da595.jpeg)

画像1のサイズに合わせるよう、画像2に黒い余白を追加します。
![hasuhana_trim.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3245171/084efa77-fab5-3476-3fed-559a854f3446.jpeg)

逆に、画像1のほうが小さい場合は、画像2をトリミングします。

```Python
import cv2
import numpy as np

#img_2の画像を、img_1の画像サイズに拡大縮小なしに合わせる。
#２つの画像の読み込み。
img_1=cv2.imread('img_1.jpg') #ファイル名やパスは変更してください。
img_2=cv2.imread('img_2.jpg')

#画像サイズ（縦、横）の取り込み
h_1, w_1, _=img_1.shape
h_2, w_2, _=img_2.shape

#縦、横サイズ、それぞれ大きい方を見つける
if h_1>h_2:
    h_max=h_1
else:
    h_max=h_2
if w_1>w_2:
    w_max=w_1
else:
    w_max=w_2

#画像の輝度がすべて0になっている最大サイズの真っ黒のベース画像を作る    
img_zero=np.zeros((h_max, w_max, 3), dtype=np.uint8)

#黒のベース画像に、img_2を重ねる
img_zero[0:h_2,0:w_2]=img_2

#ベース画像をimg_1と同じサイズにトリミング
img_2_trim=img_zero[0:h_1, 0:w_1]

#画像の確認
cv2.imshow('img_1', img_1)
cv2.imshow('img_2', img_2)
cv2.imshow('img_2_trim', img_2_trim)

cv2.waitKey(0)
cv2.destroyAllWindows()
```
M1MacでAndroidのエミュレータが起動しない問題を対応

# 概要
flutterを使ったプロジェクトでvscodeからandroidのエミュレータを起動すると、実行できない問題がありました。
実行すると、以下のようなエラーがでました。
「Failed to launch emulator: Error: Emulator didn't connect within 60 seconds」

# 対応方法
m1macだと起動できない問題があるようで、/Users/user/Library/Android/sdkの中にarm64-v8a-S_r02-darwin.zipを解凍してやる配置する必要がありました。
AndroidSDKがダウンロードされている場所はandroidStudioの設定のところから分かります。
![スクリーンショット 2023-03-26 20.06.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417196/97f41b59-b767-0a10-c8a9-63cd3438e8c3.png)

以下の記事を参考にしました。
https://zenn.dev/tatsuhiko/articles/0cf97aa4a238ae
robots.txt テスターで何も表示されなかった話 その時に1つ確認してほしいこと

# 原因
* URL プレフィックス プロパティを登録してないから
* 自分の場合は､ドメインプロパティしか登録してなかった

# 解決法
* URL プレフィックス プロパティを登録
    * そもそも公式にも`ツールは、URL プレフィックス プロパティでのみ機能します。ドメイン プロパティでは機能しません。`と書いてあった｡
【競プロ/Swift】AtCoder Beginner Contest 295

# 注意事項
本記事は復習のための日記的なものであり、丁寧な解説を求めている方には不十分かと思われますので、ご了承のほどお願いいたします。

# 正解済み問題
## A - Probably English
**問題文**
[こちら問題ページ](https://atcoder.jp/contests/abc295/tasks/abc295_a)

**解答**
入力値に該当の値があったらYesを出力、なかったらNoを出力。

```swift
let _ = Int(readLine()!)!
let wArray = readLine()!.split(separator: " ")

if wArray.contains("and") || wArray.contains("not") || wArray.contains("that") || wArray.contains("the") || wArray.contains("you") {
    print("Yes")
} else {
    print("No")
}
```

## C - Socks
**問題文**
[こちら問題ページ](https://atcoder.jp/contests/abc295/tasks/abc295_c)

**解答**
靴下が何回ペアになるかを判断すればいいから、同一の値の数をカウントし、そのカウント値を２で割って、小数点を省いた値を足していけば、答えが出力できる。

```swift
import Foundation
let n = Int(readLine()!)!
let aArray = readLine()!.split(separator: " ").map{ Int($0)! }.sorted()

let counter = NSCountedSet(array: aArray)
let counts = Set(aArray).map { (counter.count(for: $0)) }

var total = 0
for count in counts {
    total += Int(count / 2)
}

print(total)
```

# 誤答及び、未解答問題
## B - Bombs
**問題文**
[こちら問題ページ](https://atcoder.jp/contests/abc295/tasks/abc295_b)

**誤答**
ループ処理を避けたくて、色々考えいたら結局未解答のまま終了。

**正答**
大きくは爆弾の集計と出力の2つのループ処理に分けて行う。
変数をしっかり切り分けて思考の整理するのと、爆弾の威力範囲内かの計算を冷静に考えられていたら正解できたかも。。


```swift
let r = Int(readLine()!.split(separator: " ")[0])!
var grid = [[Character]]()
var bombs = [(i: Int, j: Int, power: Int)]()

// グリッドの入力値の集計と爆弾位置の集計処理
// 縦軸ループ
for i in 0..<r {
    // １文字ずつ配列化
    let input = [Character](readLine()!)
    // 横軸ループ
    for j in 0..<input.count {
        // ボムの箇所を「縦軸位置、横軸位置、威力」の辞書型で集計していく。
        if let bomb = Int(String(input[j])) {
            bombs += [(i: i, j: j, power: bomb)]
        }
    }
    // １行ごと追加することで、グリッド化
    grid.append(Array(input))
}

// 出力値の生成処理
// 縦軸ループ
for i in 0..<r {
    var output = ""
    // 横軸ループ
    for j in 0..<grid[i].count {
        // 爆発後は＃以外は全て.になる
        guard grid[i][j] == "#" else {
            output += "."
            continue
        }
        // 元々#だった箇所が爆発範囲に含まれるか判定
        output += bombs.contains {
            // 縦軸差分と横軸差分の合計が威力以下だったら射程範囲内
            abs($0.i - i) + abs($0.j - j) <= $0.power
        } ? "." : "#"
    }
    // １行ずつ出力（改行の必要なし）
    print(output)
}
```
# 参考
https://atcoder.jp/contests/abc295
Laravelで削除するとき、確認アラートを出す方法。（Fromファサード使用時も可能）



## 結論：

inputタグの中にonclick属性でアラート画面を出すようにする

```html
<input type="submit" value="ボタンに入れたい文字" onclick='return confirm("本当に削除しますか？")'>
```

**Formファサードを使用するときは**

```php
{{ Form::submit('ボタンに入れたい文字', ['onclick' => 'return confirm("本当に削除しますか？")']) }}
```

`{{ }}` で囲んでいるのはblade.phpでPHPを使用するため


## **参考**

[https://kekaku.addisteria.com/wp/20200906203037#toc6](https://kekaku.addisteria.com/wp/20200906203037#toc6)

[https://laraweb.net/practice/7965/](https://laraweb.net/practice/7965/)

## 備忘録ブログに続き書いてます
https://run-fish.com/
献立考えるの面倒...ならChatGPTに献立を作ってもらおう！

__はじめに__
献立って考えるのが大変ですよね．
私は迷ったら好きなものやインスタントに頼りがちです．
そこで献立をChatGPTに考えてもらいました．
※前提として栄養バランスの改善を目的とした献立にしています．

__本題__
1.朝食は時間がないので短時間で作れるもの
2.昼食の献立は必要ない
この2つの条件で生成した結果がこちら![スクリーンショット (3905).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3292130/7e7f6511-e538-c07b-0208-38833d4f50fe.png)
一週間分の献立をお願いしましたが出てきたのは3日分でした．


今度は私の食生活を改善してもらう形で献立を作ってもらいました
![スクリーンショット (3907).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3292130/65d96bb4-87e1-4c78-5cd0-a3b6fa7d70cc.png)
やはり具体的な献立を改善してもらう方がより詳細な結果が出ますね．
ポテトサラダは煮物だそうです...知らなかった．
この献立が健康面で良い物なのか私には判断できませんでした...詳しい方，またはオススメツール等あれば教えていただければ幸いです．
好物，アレルギー，苦手な物を加味してみるとより良い献立が出来るかもしれませんね．
VSCodeで使えるおすすめの拡張機能【2023年最新版】

## はじめに

プログラムを書くための環境を整えることは重要である。

その中でも、エディタの選択は特に重要であり、Visual Studio Code (VSCode)は、多くのプログラマーに高く評価されている。

また、VSCodeには多くの拡張機能があり、これらを使うことでプログラムの開発をより簡単かつ効率的に行うことができる。

本記事では、VSCodeで使えるおすすめの拡張機能を紹介する。

以下3年間の研究室活動(インターン含む)において、これらの拡張機能でスムーズに作業できたので必要最低限の拡張機能は網羅できているはずである。


## インデント

Python等のプログラムを書く上で、インデントは切っても切り離せない。
特にスペースの混入によってプログラムが弾かれるなんてことがないように、インデントをわかりやすく表示すると良い。


https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow


## 括弧

プログラムを書く際に、括弧を連続で書く必要がどうしても出てくる。
また括弧がどこから始まってどこで終わっているかを一目で把握することは困難であり、末尾の括弧をつけ忘れたりして時間を無駄にすることもあるだろう。

そんな時に括弧をわかりやすくする拡張機能がオススメ。


https://marketplace.visualstudio.com/items?itemName=dzhavat.bracket-pair-toggler

## コメント

プログラムにコメントを残す作業は、言わずもがな重要である。
ブックマークなどでプログラムに印をつけるプログラマーの方もいるが、個人的にはコメントで十分だった。


Alerts、Queries、TODOs、Highlights等のコメントをわかりやすくする拡張機能は以下である。

https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments

自分に限るが、研究の場面では時間がなくて切羽詰まって書いてしまったコードや一旦動かすために書いたコード、バグが混入している可能性のあるコードなどには`TODO`や`FIXME`などコメントしていた。
自分は以下の拡張機能で事足りた。

https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight

## パスの自動補完

ファイルのパスを自動で補完してくれる拡張機能は以下である。

https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense

## フォーマッター

formatterとは、コーディングスタイルの一貫性を保つために用いるツールである。
研究の場では、そこまで重要ではないので無くても大丈夫かも。

よく用いられているのは以下の**Prettier**である。

https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode

## スペルチェックの確認
簡単なタイポは以下で検出できる。

https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker



## git 

**GitLens**は、git操作をGUIで簡単にできる等のGit拡張機能である。
直感的な操作でわかりやすく、確実にコマンドよりも速いのでオススメ。
またファイルの最終編集者などもわかるので複数開発で便利。


https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens

**Git Graph**は、gitの履歴をVSCode上でわかりやすく表示する拡張機能である。
またGit Graph上のコミットをクリックするとファイルの差分も確認できる。

https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph


## アイコン

ディレクトリのファイルの種別をわかりやすくするための拡張機能は以下である。
お好みで。

https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons

https://marketplace.visualstudio.com/items?itemName=emmanuelbeziat.vscode-great-icons

## その他

以下のサイトのTrendingとかを見ると流行りの拡張機能を把握できる。
筆者は自動化して毎月確認している。

https://marketplace.visualstudio.com/vscode


## 最後に

VSCodeの拡張機能を使うことで、よりスムーズなプログラム開発が可能になるはずである。
本記事で紹介した拡張機能や、自分に合った拡張機能を見つけてより良い開発、研究ライフを過ごしてください。

Macの環境のオススメはこちら

https://qiita.com/sergicalsix/items/ffe7062b5c88ab5bd84e
2023年の今、PHP5.6の環境をDockerで構築してみた

2023年の今、PHP5.6の環境をDockerで構築することがあったので
Dockerfileを残しておく

```
FROM moodlehq/moodle-php-apache:5.6
WORKDIR /www

RUN apt-get -y update
RUN apt-get install -y init
RUN apt-get install -y libxml2-dev
RUN apt-get install -y libpng-dev
RUN apt-get -y install cronolog
RUN apt-get install -y default-mysql-client

RUN a2enmod rewrite
RUN a2ensite default-ssl 
RUN a2enmod ssl
RUN apt -y install certbot 

RUN docker-php-ext-install pdo pdo_mysql mbstring xml mysql
RUN docker-php-ext-install -j$(nproc) gd

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN cp composer.phar /usr/bin/composer ; chmod 777 /usr/bin/composer


CMD /usr/sbin/apache2ctl -DFOREGROUND

```
【Spring Boot】JSON でのリクエスト、レスポンス

今回の記事の前提となる知識は、以下の記事で書いているため、興味がある方は以下の記事をご確認ください。

https://qiita.com/NagaJun/items/dfa9f8606b64593a11db

## サンプルコード
早速、サンプルコードを以下に記載します。
プロジェクトとして、実際に`eclipse`を使用して作成したものを`GitHub`で公開しているため、実際に動作確認を行いたい方は、以下から`pull`してください。

https://github.com/NagaJun1/test_spring_boot

```ControllerTest2.java
@RestController
@RequestMapping(Path.CONTROLLER_TEST_2)
public class ControllerTest2 {
	/**
	 * JSON リクエストを取得、レスポンスする
	 * @param request <SampleJsonRequest> リクエスト
	 * @return response <SampleJson2Response> 
	 */
	@GetMapping(path = Path.GET_SAMPLE_JSON, consumes = MediaType.APPLICATION_JSON_VALUE)
	public ResponseEntity<SampleJson2Response> getSampleJson(
			@RequestBody SampleJsonRequest request) {

		// リクエストパラメータ paramA に "key_ok"が設定されていない場合はエラー
		if (request != null) {

			String paramA = request.getParamA();

			if (StringUtils.hasText(paramA) && paramA.equals("key_ok")) {

				SampleJson2Response response = new SampleJson2Response();
				response.setDataA("ok_data");

				return ResponseEntity.ok(response);
			}
		}

		// リクエストに問題がある場合のレスポンス
		return this.errorBadRequestResponse();
	}

	/**
	 * リクエストに問題がある場合のレスポンス
	 * @return
	 */
	private ResponseEntity<SampleJson2Response> errorBadRequestResponse() {
		SampleJson2Response response = new SampleJson2Response();
		response.setDataA("error data");

		return ResponseEntity.badRequest().body(response);
	}
}
```

※今回使用している`Path`は、定数として別ファイルで宣言している`String`です。

```SampleJson2Response.java
@Data
public class SampleJson2Response {
	private String dataA;
}
```

```SampleJsonRequest.java
@Data
public class SampleJsonRequest {
	public String paramA;
}
```

※今回、`@Data`を使用していますが、`@Data`は`lombok`を使用して実装できます。

## 解説

〇リクエスト
サンプルコードでは、`class SampleJsonRequest`で定義した内容をリクエストボディの`JSON`として受けるようにしています。
リクエストボディには、アノテーションで`@RequestBody`を設定する必要があります。
リクエストで受け取るデータを`JSON`とする場合は、`@GetMapping`の`consumes`に`MediaType.APPLICATION_JSON_VALUE`を設定します。

〇レスポンス
`class SampleJson2Response`で定義した内容を`ResponseEntity`のボディとして返します。
一応、`ResponseEntity`を使用せずとも実装できるのですが、`ResponseEntity`を使用することでレスポンスステータスを定義できるなどの利点があります。

## 動作確認

動作確認の方法としてはいろいろあるかと思いますが、今回は、`postman`を使用して動作確認しています。
実装内容としては、パラメータ`paramA`に`key_ok`が設定されているなら`200`レスポンス、パラメータ未設定なら`400`レスポンスを返すようになっています。

#### 成功時

URL：`http://localhost:8080/controller_test_2/get_sample_json`
リクエストボディ：`{ "paramA": "key_ok" }`

<img alt="image.png" width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/1f904b5f-4c80-d6a1-c6f7-5014e1af2db4.png">

#### 失敗時

URL：`http://localhost:8080/controller_test_2/get_sample_json`
リクエストボディ：`{ "paramA": null }`

<img alt="image.png" width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/ce4707d5-2027-e839-cd08-beb4bebdf3c8.png">

## 終わりに

前回、Spring Boot について書いてから一年以上経ってますね。。。
時間の流れが早い。。。
psqlのPGPASSWORD

プロンプトから入力する場合、パスワードをあとから入力するのでワンライナーでは書けません。
ワンライナーでやりたい場合は、環境変数 PGPASSWORD を使った、つぎのような書き方があるそうです。
```
PGPASSWORD=パスワード psql -U ユーザ名 データベース名
```
# 参考サイト
https://qiita.com/domodomodomo/items/04026157b75324e4ea27

https://stackoverflow.com/questions/6405127/how-do-i-specify-a-password-to-psql-non-interactively/6405162
Prisma where句 条件分岐

TypeORMからPrismaに移行する際のメモ

TypeORMだと特定の条件の時だけwhereを使う場合はifを使っていた。
```ts
const qb = this.createQueryBuilder('user');
if (userType) qb.where('user.userType IN (:...userType)', { userType });
```
Prismaだとこれができないため３項演算子とスプレッド構文を使う。
```ts
prisma.user.findMany({
  where: {
    ...(userType ? { userType: { in: userType } } : {}),
  },
});
```
AWS未経験者がアソシエイト3冠＋CLFを取得した話（DVA編)

# 初めに

初めまして。インフラエンジニアとして働いていますcoffee_cafe と申します。QiitaにAWS認定資格の受験体験記を投稿しています。
今回はAWSディベロッパーアソシエイト(DVA)編です。これからDVAを受験する方の参考になれば幸いです。

前回記事
(CLF編)：https://qiita.com/coffee_cafe/items/2603d9f658380ab6c3d3
(SAA編)：https://qiita.com/coffee_cafe/items/3e5f19405928434e3d4c
(SOA編)：https://qiita.com/coffee_cafe/items/63bcb8d8a4ee6ed25249

# AWSディベロッパーアソシエイト(DVA)について

![WS000003.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3121544/215610c7-9ad0-c1f2-85db-ebd1a0111be2.jpeg)
[画像引用元：AWS公式サイト](https://aws.amazon.com/jp/certification/)

DVAはAWS認定資格の1つです。上記図内では左下の「ASSOCIATE」という区分に該当しています。難易度はAWS認定資格の中では中級レベルです。

名前の通り、こちらの資格はディベロッパー(開発者)向けの資格となっています。LamdaやAPI-Gataweyなどのサーバレス系サービスやCodeシリーズなどの開発系サービス中心に出題されます。その他、CloudformationやCognito、DynamoDBなども頻出サービスです。
また、IAM辺りのセキュリティ分野の設問も多少出題されます。おそらく、アプリ開発する上でセキュリティ関連の知識も必要とAWSは考えているためでしょう。

# 受験前の状態
AWSの実務経験は無し。その上、当方はインフラ分野のエンジニアなのでコードを組んだりアプリ開発をした事すらもありませんでした。
事前にCLF・AWS・SOAは取得していましたが、DVAは毛色が全く異なる資格だったので前提知識が余り役に立つ事はなかったです・・・

# 勉強期間
約1か月ほど　

# 学習方法
## 1～2週間目

最初の1～2週間目は以下テキストを2周読み込みしました。
開発経験の無い私には、CodeシリーズやLamdaの仕様を理解するのにかなり苦戦し、テキストを理解するのに時間を要してしまいました。

[ポケットスタディ AWS認定 デベロッパーアソシエイト (アソシエイト試験ポケットスタディ)](https://www.amazon.co.jp/%E3%83%9D%E3%82%B1%E3%83%83%E3%83%88%E3%82%B9%E3%82%BF%E3%83%87%E3%82%A3-AWS%E8%AA%8D%E5%AE%9A-%E3%83%87%E3%83%99%E3%83%AD%E3%83%83%E3%83%91%E3%83%BC%E3%82%A2%E3%82%BD%E3%82%B7%E3%82%A8%E3%82%A4%E3%83%88-%E3%82%A2%E3%82%BD%E3%82%B7%E3%82%A8%E3%82%A4%E3%83%88%E8%A9%A6%E9%A8%93%E3%83%9D%E3%82%B1%E3%83%83%E3%83%88%E3%82%B9%E3%82%BF%E3%83%87%E3%82%A3-%E5%B1%B1%E4%B8%8B%E5%85%89%E6%B4%8B/dp/4798063401/ref=sr_1_1?adgrpid=135507466935&hvadid=649065776280&hvdev=c&hvqmt=e&hvtargid=kwd-1433912792337&hydadcr=4074_13310934&jp-ad-ap=0&keywords=aws+%E3%83%9D%E3%82%B1%E3%83%83%E3%83%88%E3%82%B9%E3%82%BF%E3%83%87%E3%82%A3&qid=1679222542&sr=8-1)

## 3週間目

SAAやSOAの学習時と同様、AWS個人アカウントでUdemyの下記問題集を使ってDVA出題範囲サービスのハンズオンを行いました。
※Lamda、Cognito、DynamoDB、API-Gateway、Cloudformation辺りを復習しました。

[【SAA-C03版】これだけでOK！ AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座](https://www.udemy.com/course/aws-associate/)

また、開発系の知識に乏しい私はテキストやハンズオンだけでは理解が進まなかったので、
下記youtubeのAWS公式動画「Black Belt」で出題範囲サービスの動画の視聴し、知識不足を補いました。

[【AWS Black Belt Online Seminar】 AWS Lambda Part1](https://www.youtube.com/feed/history)


## 4~5週間目

AWSの資格学習界隈では有名かと思いますが・・・下記サイトの問題集を購入し問題演習に取り組みました。

[Web問題集で学習しよう](https://techstock.jp/)

# 受験結果
スコア809点で合格することができました。

Web問題集では見なかった初見の問題が多く出題され、試験中は手ごたえを微塵も感じず正直落ちたと思っていました。。。

# 感想
・SAAやSOAの問題と比較すると重箱の隅を付くような問題は少なく、単純な難易度はDVAはワンランク下がる印象。
　→個人的観点でいうと、開発経験のない私にとってはアソシエイト試験の中では断トツで難しかったです。
・苦戦はしましたが、Lamdaなどのサーバレス系サービスをこの資格を通じて触れることができ、インフラエンジニアでは
普段かかわりのないソリューションを学習できたのは大きな経験だった。
　→今後、クラウドのサーバレス化はますます推進されていくと予想。食わず嫌いせずにAWSのディベロッパー向けサービスも学んでいく必要性を感じた。
AWS DVA（ディベロッパーアソシエイト）合格体験記

# はじめに
DVAに合格しました。
DVA受験予定の方に参考になればと思います

# 前提
・AWS SSA（ソリューションアーキテクトアソシエイト）の資格取得済み
・社会人3年目のシステムエンジニア
# 学習期間
・1か月
 勉強を開始したのは1ヵ月前ですが、本腰を入れたのは2週間前。。
# 学習内容
・Tech Stockのweb問題集(https://techstock.jp/ )（350問程度）を2周した。解説を読んで理解する。
　→今までのAWS試験はUdemyの問題集で学習していましたが、web問題集で学習してみました。
　→金額は5000円程度値段で、他のAWSの試験の問題集も含めて3か月間の閲覧権限をもらえました
　→結果的にはweb問題集でよかったと思いました。
　→web問題集と本番の試験の問題が非常に似ていて、文章の長さも同程度で、出る問題も非常に似ていました。（ほぼ同じ問題もでました）

# 感想
・SSA（ソリューションアーキテクト）よりDVAの方がかなり簡単でした。（学習時間が半分ほどで済みました）
・思いのほかTechStockのweb問題集での勉強がやりやすかったので、次の試験もweb問題集で対策しようと思っています。
AWS未経験者がアソシエイト3冠＋CLFを取得した話（SAA編)

# 初めに

初めまして。インフラエンジニアとして働いていますcoffee_cafe と申します。QiitaにAWS認定資格の受験体験記を投稿しています。
今回はAWSソリューションアーキテクトアソシエイト(SAA)編です。これからSAAを受験する方の参考になれば幸いです。

前回記事
(CLF編)：https://qiita.com/coffee_cafe/items/2603d9f658380ab6c3d3

# AWSソリューションアーキテクトアソシエイト(SAA)について

![WS000003.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3121544/215610c7-9ad0-c1f2-85db-ebd1a0111be2.jpeg)
[画像引用元：AWS公式サイト](https://aws.amazon.com/jp/certification/)

SAAはAWS認定資格の1つです。上記図内では左下の「ASSOCIATE」という区分に該当しています。難易度はAWS認定資格の中では中級レベルで、認定資格の中では一番認知度が高い資格です。”ソリューションアーキテクト"の名称の通り、AWSサービスの設計や提案を行っていく上で必要となる知識が求められる設問が出題されます。例えば、各サービスのユースケースやコスト比較をして、どのサービスがユーザー要件に合致するか選択するパターンの問題が多いです。
「ソリューションアーキテクトとしてあなたはどのサービスを顧客に提案しますか？」といった文言が問題文がよくでてくるのが印象深いです。
出題範囲はEC2などのIaaS系サービス、VPC、ELBなどのNW系サービス、EBS、S3などのストレージ系サービス、RDS、DynamoDBなどのDB系サービス、Lamdaなどのサーバレス系サービス、CloudWatchなどの監視運用系サービス　などなど・・・とにかく幅広くAWSサービス全般に対する理解が求められる資格です。

# 受験前の状態
CLFは事前取得済み。AWSの業務経験は記事タイトル通りなし。CLFで主要サービスの名称と簡単な仕様は覚えた状態だが、ユースケースなど細かい理解は足りていない状況でした。

# 勉強期間
約3週間ほど　正月休みに集中して学習しました。連休がなければ1か月ほどはかかったと思います。　

# 学習方法
## 1週間目

最初の1～2週間目は以下テキストを読み、各サービスのユースケースを把握しました。

[AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト 改訂第2版](https://www.amazon.co.jp/AWS-E8-AA-8D-E5-AE-9A-E8-B3-87-E6-A0-BC-E8-A9-A6-E9-A8-93-E3-83-86-E3-82-AD-E3-82-B9-E3-83-88-AWS-E/dp/4815607389/ref=dp_ob_title_bk)

## 2週間目

udemyのハンズオン動画教材を購入し、個人で取得したAWSアカウントでハンズオンを行いました。
（かなりの本数の動画があるので、倍速視聴推奨です）
テキストの文章だけではイメージし難かったサービス仕様の理解が大幅に進んだので、個人的にはこの動画を通じてかなりの収穫がありました。

[【SAA-C03版】これだけでOK！ AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座](https://www.udemy.com/course/aws-associate/)

## 3週間目

AWSの資格学習界隈では有名かと思いますが・・・下記サイトの問題集を購入し問題演習に取り組みました。

[Web問題集で学習しよう](https://techstock.jp/)

Udemyの問題集と悩みましたが、「Web問題集で学習しよう」の方が問題再現率がかなり高く、こちらの問題集を選びました。
ただ、いくら再現率が高いといえど実試験では初見の問題も散見されたので、問題集丸暗記ではさすがに合格は厳しいです。
問題集の解説まで読み込みして、正解以外の問題がなぜ不正解になるか判別できるようになるまで理解すると合格が見えてきます。
※初見の問題でも選択肢の消去法で対処することが可能になります。

# 受験結果
スコア830点で合格することができました。

# 感想
・CLFよりも問題難易度が数段と高くなっており、合格するか正直かなり不安だった。
　→重箱の隅をつくような設問もそれなりに出題されるので、生半可な学習では落ちてしまうと思われる。
　→SAAを目標にするなら、まずは小手調べとしてCLFから取得することをお勧めする。
・学習の過程でハンズオンを行ったのも正解だった。ハンズオンなしでは合格は難しかったと感じる。
　→AWS実務経験がなかったので、不足していた操作感を養うことができた。
・SAAの学習を通じで主要サービスのユースケースを理解することができ、AWSに対する自信が付いた。
　→もっとAWSを学びたいという興味が沸き、SOA・DVAの学習も続けていくことにこの後なりました。
Salesforceの権限セットと権限セットグループを確認しよう～権限セットスコープを使ってみた～

こんにちは
本橋孝昭です

皆さんはSalesforceの権限セットや権限セットグループの管理はどのようにしているでしょうか？

多くの環境では不要な権限セットがたくさんあったりして、管理をするのが大変な方も多いかと思います
権限セットは標準機能のようなレポートなどで管理することができないので、
Salesforceシステム管理者であれば困っている方は多いのではないでしょうか

今回はそんなSalesforceシステム管理者のために
株式会社リゾルバが提供している無料のアプリ「権限セットスコープ」について説明します


https://appexchangejp.salesforce.com/appxListingDetail?listingId=a0N4V00000Ji83bUAB


今回の内容は動画でも公開しています

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


<iframe width="560" height="315" src="https://www.youtube.com/embed/NWecO4ZSRr8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>


## そもそも権限セットってなんだ？

権限セットはざっくりいえばSalesfroce権限（レコード作成など）の権限のかたまりです

詳細な権限セットについてはこちらのTrailheadをご確認ください

＞権限セット
権限セットもプロファイルと同様に、ユーザライセンスまたは権限セットライセンスで定義された機能のサブセットです。ただし、ユーザにプロファイルは 1 つしか設定できないのに対し、権限セットは複数設定することが可能です。各権限セットにより、ユーザのアクセス権をプロファイルで定義されている機能以外に拡張することができます。プロファイルと同様、権限セットも割り当て済みのユーザライセンスまたは権限セットライセンスで定義されている機能を超えることはできません。

https://trailhead.salesforce.com/ja/content/learn/modules/salesforce-licensing/give-users-the-functionality-they-need


## 権限セットグループってなんだ？

権限セットグループとは権限セットのまとまりのことです
詳細についてはこちらの権限セットグループのヘルプをご確認ください

https://help.salesforce.com/s/articleView?id=sf.perm_set_groups.htm&type=5

## 権限セットスコープの利用方法

こちら株式会社リゾルバのAppExchangeのページからインストール可能です

https://appexchangejp.salesforce.com/appxListingDetail?listingId=a0N4V00000Ji83bUAB

なお、本番環境にいきなりインストールする前にSandbox環境やPlayground環境でためしにインストールして使い方を確認することをお勧めします

# 権限セットスコープで出来ること


ここでは権限セットスコープでできることを説明します

### どの権限セットでどのユーザが割り当てられてるか確認可能

権限セットスコープではどの権限セットにどのユーザが割り当てられているか一目で確認できます


![権限セット０２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/81047ffa-bdd1-9e1f-9e7a-756e4d6636f2.png)





### 権限セットや権限セット一覧をCSVで一括ダウンロード

権限セット一覧や権限セットスコープ一覧を一括でダウンロード可能です
ダウンロードしたCSVデータにはどの権限セットが何人使用しているか分かるので使っていない権限セットがどれなのか一目で分かりますね

### 権限セットグループの構成が一覧で把握できる

権限セットグループにはどのような権限セットで構成されているかの一覧が可能です
権限セットグループを頻繁に使っている環境では、この一覧で確認できるのは非常に役に立つと思います


いかがでしたでしょうか

個人的におすすめなのが権限セットとユーザに遷移するリンクがあることですね

このリンクを使って権限セット一覧から権限セットに遷移できるのが非常に便利ですね

またエクスポートできるCSVファイルでは
どの部署の人がどの権限セットが付与されているか見ることができるのできちんと権限セットが付与されているのか確認することが可能ですね


いかがでしたでしょうか

権限セットや権限セットグループの管理が必要な場合、ぜひこの権限セットスコープを試してみてはいかがでしょうか。
コンピューターってなんだ？

<h1>・はじめに</h1>
　みなさんはプログラミングをする際、パソコンの仕様を理解して最大限力を出せるように使えていますか？自慢ではありませんが、私はまったく使いこなせていません！私はずっと文法やメソッド、エラー文などに振り回されていてパソコンのことにはまったく目を向けることができませんでした。最近ようやくそちらの方が落ち着いてきた感じがするのでより深くプログラミングを理解するため、パソコンの力を引き出すためにパソコンについて学んでいくことにしました。

<h1>・コンピューターとは？</h1>
　突然ですが、今みなさんが使っているパソコンはどのような装置が付けられていますか？私はノートパソコンなので画面とキーボード、CPU、SSDなどが一体化していて、マウスを外付けしています。

<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850098/2635e879-7852-ad3a-1c38-f59c18bb47f5.png" width=300 height=300><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850098/84274232-dc4f-d1a3-9145-885966588583.png" width=300 height=300>

またデスクトップパソコンをお使いの方もいるでしょう。そちらはモニターとマウス、CPUなどが別れているものでしょう。これら、キーボード、モニター、マウス、CPU、HDD/SSDなどがパソコンを構成する装置です。

しかし、パソコンはそれだけで成り立つものではありません。パソコンはWordやExcel、Webサイト、時にはゲームができるからこそ使われるものです。

したがって、パソコンを構成する要素としては装置（キーボードやマウス）などとそれらを使って何かをするアプリとで別れているものとわかります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850098/2659c859-e4f4-9346-de78-20bd1bc3fd74.png" width=700 height=400>

そして、この装置側のことを<b>ハードウェア</b>、装置を使って何かをするものを<b>ソフトウェア</b>といいます。

<h1>・コンピューターと他の電子機器の違いとは？</h1>
　ここで出てくる疑問としてはコンピューターはどこからがコンピューターでどこからがコンピューターではないのかということです。例えばテレビはリモコンとテレビのモニターを操作して観るからコンピューターに入るのか？、電卓はボタンを押して操作するけどコンピューターっぽくはないからコンピューターではない？など色々な疑問が生まれてくると思います。
<br><br>　そこでコンピューターの<b>定義</b>について話していきます。コンピューターとは<b>入力、演算、出力</b>をするもののことをいいます（演算とは入力された値を処理してそれに合った答えを出すもの、簡単に言えば計算のこと）。反対にコンピューターではないもの、電子機器とは、予め決められた動きだけをするもののことをいいます。
<br>　例えば、パソコンは人が操作して入力された値に基づいて計算できます。それに対してテレビは、チャンネルを変更する、番組表を開く、メニューを開くなどの決まった動きしかできません。このように、コンピューターは入力、演算、出力ができるものに対してコンピューターでないものはあらかじめ決められた動きしかできない電子機器を指すということがわかりました。<br>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850098/9c1a9303-a841-757c-2b4e-d927e11e2769.jpeg" width=500 height=100>

<h1>・まとめ</h1>
　今回はそもそもコンピューターとはなにかについて学んでいきました。次回はパソコンはどのように動いているのかについてやっていきます！閲覧いただきありがとうございました！