OmniAICreator/Qiita-1.07M huggingface dataset:
Azure ADとAzureサブスクリプションの関係をざっくり整理

# はじめに
Azure ADとサブスクリプションは切っても切れない関係性です。
人に説明するのが難しく困ることがあるので改めて理解を深めるため、自分が利用する範囲ですが簡単に整理してみました。

# Azure ADとサブスクリプションの関連付け
Azure ADとサブスクリプションは1:Nの関係になります。
同じAzure ADに関連付けられているサブスクリプションは同一アカウントですべてのサブスクリプションにアクセスする事が可能です。
例えば開発/検証/本番と環境をサブスクリプションで分けた場合においても1つのアカウントですべてのサブスクリプションにアクセスすることが可能です。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/5e249c15-be56-517d-d409-82c8acb739d9.png" width=80%>

# ロール
ロール（権限）はAzure ADロールとAzure RBACの2種類あります。
- Azure ADロール
    - Azure ADリソースに対する権限をユーザ（グループ）に付与
- Azure RBAC
    - Azureリソースに対する権限をユーザに付与（上位スコープのリソースは配下に継承）

Azure ADのロールが付与されていないユーザにおいてもAzureリソースに対して
ユーザとロールを割当てることでAzure ADの認証後にAzureリソースの操作が可能となります。
例外としてAzure ADの全体管理者はすべてのサブスクリプションに対してアクセスする権限を自身に付与できます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/b1ed8f2e-27e9-6813-502a-09ac8f121c4b.png" width=100%>

# 複数サブスクリプションの管理
同一Azure ADテナント内の複数のサブスクリプションは管理グループを使用することでグルーピングが可能です。
管理グループにはAzure Policy、Azure RBACを適用可能です。
適用したPolicy/RBACは下位の管理グループ、およびサブスクリプションに継承されます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/fc7663e2-0e29-540c-4b6c-6cb9184552c6.png" width=90%>

# 最後に
超簡単にですが自分なりにまとめてみました。
同じように困っている方に少しでもお役に立てば幸いです。

# 参考ドキュメント
https://docs.microsoft.com/ja-jp/azure/governance/management-groups/overview

https://docs.microsoft.com/ja-jp/azure/role-based-access-control/overview

https://docs.microsoft.com/ja-jp/azure/active-directory/roles/custom-overview

Azure ABACというのもあるのですね…。

https://docs.microsoft.com/ja-jp/azure/role-based-access-control/conditions-overview
IBM Cloud Object StorageファイルをDB2へロードする(2) ~ SQL Query性能チューニングについて

## 目的
前回はICOS上のファイルをSQLQueryによりDB2テーブルにLoadを実施して処理時間を測定しましたが、DB2Nativeに実施するのに比べて性能が劣化するという結論を得ました、本文書ではPARALLELISM機能を利用してSQLQueryの性能チューニングを検証します。

[IBM Cloud Object StorageファイルをDB2へロードする(1)](https://qiita.com/nori0315/items/779fc8d543658d2225a1)
IBM Cloud Object StorageファイルをDB2へロードする(2) ~ SQL Query性能チューニングについて: 本文書

なおIBM Cloud SQL Queryは2022年5月よりIBM Cloud Data Engineにサービス名称が変更になりました。

## 性能チューニングについて
SQLQueryではDB2に結果を書き出す時に限りPARALLELISM x 節を使用して、複数の並列データベース接続を開くことを指定することがサポートされます。
IBM Cloud DOCでは下記の通り処理時間が短縮される可能性がある旨記述があり検証を実施しました。

dbResultClause
https://cloud.ibm.com/docs/sql-query?topic=sql-query-sql-#dbResultClause
抜粋
PARALLELISM x 節を使用して、結果を書き出すために複数の並列データベース接続を開くことを指定します。 この指定を行うと、結果のサイズと、ターゲット・データベース・サービスのネットワーク接続状態によっては、 照会の処理時間が大幅に短縮される可能性があります。 

またSQLQueryはSpark/Queryをベースにしており、その並列処理を最大限に活かすため、事前に複数のCSV/Parquetファイルに分割(Partition化)しておき、PARALLELISMを10~20に指定して複数のDB2接続をオープンして並列Loadを実施し処理時間を測定しました。


### 1.環境
1. SQLQuery@Dallas, ICOS@Tokyo, DB2on　IBMCloud@Tokyo(2Core 8GBRAM)のインスタンスを活用
2. SQLQueryはWebコンソールを利用して、Query実行、時間を測定

### 2.検証手順
下記のようなSQL文(サンプル)を実行しています。
```
#CSVファイルから10個のParquetファイルにPartition化

SELECT *
FROM cos://jp-tok/dbload/data500.csv STORED AS CSV
into cos://jp-tok/dbload/500MPAQ     STORED AS parquet
partitioned into 10 objects

#CSVファイルから10個のcsvファイルにPartition化

SELECT *
FROM cos://jp-tok/dbload/data500.csv STORED AS CSV
into cos://jp-tok/dbload/500MCSV     STORED AS CSV
partitioned into 10 objects

#Partition化されたParquetファイルをDB2にロード,parallelismは5を指定
SELECT *
FROM cos://jp-tok/dbload/500MPAQ/* STORED AS parquet
into crn:v1:bluemix:public:dashdb-for-transactions:jp-tok:a/039dbe6794084c7cb514a276dd2345da:4299a8bc-68c6-4080-895f-cfa4e3cf78fe::/EMPLOYEE40
with parallelism 5
```
### 3.検証結果                       
![スクリーンショット 2022-06-06 12.36.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132988/08315266-e109-a66c-b626-446328447962.png)

### 4.結果考察
◼︎100MB以上のファイルで性能向上が見られる
(ファイルサイズが小さいとSQLQueryのOverHeadが大きい、開発元の推奨は100MByte以上)

◼︎10個のParquetに分割されたFileで、10~20のParallelism処理によりロード時間は1/3~1/4に短縮された(Partition化された複数ファイルのロードでParallelismの効果は大きい)

◼︎CSVに比べるとParquetの効果が大きい
(SQLQueryはリモート処理になるので圧縮効果の高いParquetの効果がより大きい)

◼︎500MB以上のファイルではDB2Deadlock/timeoutを発生させ処理が中断(別途チューニング要)

◼︎SQLQueryでParquet分割/Parallelism利用したとしてもDB2Nativeに比べると依然遅い

*現時点ではDB2 NativeではParquetファイルを直接外部表として指定することはサポートされていません。

## まとめ
SQLQueryでは馴染みのある(ANSI SQLに準拠した）SQL Select文でICOS上のファイルを簡易にデータ変換/分析を行えます。その際列ベースのParquetフォーマットに分割して処理すれば性能/コスト(ストレージ消費量)の観点から大変有利になります。また結果はICOSだけでなくDB２に保管することも可能です。その時Parallelismを併用して並列ロードすれば処理時間は大幅に短縮されます。

![スクリーンショット 2022-05-18 12.49.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132988/cfec7e2a-1315-3859-c0f7-f824ff125ede.png)

## リンク先
dbResultClause
https://cloud.ibm.com/docs/sql-query?topic=sql-query-sql-#dbResultClause

IBM Cloud Object StorageファイルをDB2へロードする(1)
https://qiita.com/nori0315/items/779fc8d543658d2225a1
HTTPieとcURLのコマンド比較


CLIでのHTTPクライアントコマンドとしては [cURL](https://curl.se/) が有名だが、  最近[HTTPie](https://httpie.io/) を知った。
`HTTPPie`は、HTTP専用なので、コマンドがわかりやすい。かつ、出力がカラーリングされるので、結果が見やすい。

コマンドの比較を記す。





### get

**httpie**
```sh
http https://www.example.com
```

`curl` と違い、レスポンスボディとともに、リクエストヘッダが表示される。レスポンスボディのみを表示したい場合は、 `--print b` をつける。



**curl**
```sh
curl https://www.example.com
```



### HTTP proxy利用

**httpie**
`--proxy PROTOCOL:PROXY_URL`
```sh
http --proxy http:http://proxy.example.com:8080 https://www.example.com
```

**curl**
`--proxy PROXY_URL`
```sh
curl --proxy http://proxy.example.com:8080 https://www.example.com
```



### Redirect

どちらもデフォルトでは、リダイレクトに従わない。

**httpie**
`--follow` or `-f`
```sh
http --follow https://www.example.com
```

**curl**
`--location` or `-l`
```sh
curl --location https://www.example.com
```


### リクエスト、レスポンスヘッダー表示

**httpie**

`--print` で指定
* `h`: レスポンスヘッダ
* `H`: リクエストヘッダ
* `b`: レスポンスボディ
* `B`: リクエストボディ
 
```sh
# レスポンスヘッダ、リクエストヘッダ、レスポンスボディを表示
http --print hHb https://www.example.com
```


**curl**
```sh
curl -v https://www.example.com
```


### レスポンスボディのみをファイルに保存

**httpie**
`--download`。
`--output <filename>` で、出力ファイルを指定。
`--print hH`を指定して、リクエストヘッダ・レスポンスヘッダを出力していたとしても、`--download` をつけることで、レスポンスボディのみが ファイルに保存される。
```sh
http --download --output output.txt https://www.example.com
```

`--print hH`を指定して、リクエストヘッダ・レスポンスヘッダを出力していたとしても、`--download` をつけることで、レスポンスボディのみが ファイルに保存される。



**curl**
`--output <filename>`
```sh
curl --output output.txt https://www.example.com
```


### SSL/TLSのverifyをスキップする

**httpie**

`--verify no`
```sh
http --verify no https://www.example.com
```


**curl**
`--insecure` or `-k`
```sh
curl --insecure https://www.example.com
```


### リクエストヘッダの追加
リクエストヘッダに、`foo:foo1`,  `bar:bar1` を追加

**httpie**
```sh
http https://www.example.com  foo:foo1 bar:bar1
```

**curl**
```sh
curl -H foo:foo1 -H bar:bar1  https://www.example.com
```


### パラメータの追加

`https://www.example.com?foo=fooValue&bar=barValue` のように送りたい

**httpie**
`==` で指定する

```sh
http https://www.example.com foo==fooValue bar==barValue

# もちろん、このようにしてもよい。 ? や & は shellとして特別な意味を持つので、""で囲む。
http "https://www.example.com?foo=fooValue&bar=barValue"
```


**curl**
```
curl -G -d foo=fooValue -d bar=barValue   https://www.example.com

# これでもよい
http "https://www.example.com?foo=fooValue&bar=barValue"
```
Power Automate Desktop で<input type="date" >を埋める

UIオートメーションでもできるとはおもうのですが、年選択なども考えると面倒くさいので、「WebページでJavaScript関数を実行します」 を選択して、以下のようなスクリプトで実行します。(Edgeで使用しました)

```html
  <input type="date" id="inputDate">
```

```js
function ExecuteScript() { 
	document.getElementById('inputDate').value = "2022-02-02";
	document.getElementById('inputDate').value = "%TheDate%";
	document.getElementById('inputDate').value = "%customObject['Date']%";
}

```

JSで設定するときは"yyyy-MM-dd"の形式で指定します。また変数に入った値を指定する場合は"(ダブルクォーテーション)で囲みます。

[MDNのドキュメント](https://developer.mozilla.org/ja/docs/Web/HTML/Element/input/date#%E5%80%A4) にある通り、どのように表示されるかはブラウザ/ロケールなどによりますが、値は"2022-02-02"のように指定します。
事業フェーズごとにiOS/Androidエンジニアに求められるスキルやアウトプット

色々な事業フェーズに関わる中で、アプリエンジニアが関係者から何を求められていて、何をアウトプットすべきなのかが見えてきたのでまとめておきます。

# 前段

事業状況は0→1、1→10、10→100などの局面によって変化していくものです。
その事業の局面ごとに、アプリエンジニアが為すべきことや求められることというのは変化していくのではないかと私は思います。
もちろん、事業の形態や人員体制などによっても求められることやアウトプットは変わるものですが、そこはサブ要因として今回は踏み込まずに思うところを記載していこうと思います。

ちなみにこの記事は
https://qiita.com/yuukiw00w/items/1191c5afde8d3c9e4440
を書く中で、本人が何を気をつけたらいいかという観点だけじゃなく、周りが何を求めて何をアウトプットすべきかという部分も記載したほうがいいかなと思ったので書きました。
こちらの文章はどちらかといえば組織的にアサインする上で気をつけるべきことや、何を期待値とするべきかという部分に関わる話なので、人員体制を決定するような人が読むと参考になるかもしれません。
一方で前の記事はどちらかといえば本人や開発チームが読むことを想定しています。

# 0→1フェーズ
0→1フェーズは仮説検証を繰り返し行い、ビジネスが成立するコアサイクルを見つけ出すフェーズです。
この局面ではアプリに必要とされる機能やUXもどんどん変化するため、そもそもネイティブアプリとして作るべきかどうかも含めて検討すべきフェーズです。
可能であれば、NoCodeによるアプリ開発で簡素な仮説検証を繰り返して一定の方向性を見つけてからアプリ開発を開始すべきでしょう。
この段階で実際にアプリを開発する場合、仕様変更が頻発するとともに0→1に興味を持つ少数のエンジニアでどんどん開発を進めていく形になると思われます。
この局面では、アプリエンジニアは以下のようなスキル・動き・アウトプットを求められます。

## 0→1で求められるスキル・動き
* 専門外の調整・選定・サポートを行うジェネラリスト的な振る舞い
* 品質を妥協してでもスピード感のある開発
* 自身の知見に固辞せず情報収集と検証を元にした技術選定

## 0→1で求められるアウトプット
* PoCを通しての技術検証（実現可能性の調査とそのレポート）
* MVPに適した技術選定（市場調査の結果と選定の理由・結果のレポート）
* 最小限での品質での最速でのプロトタイプ提供
* 仮説検証作業のバックアップ（定性・定量調査とその可視化の実施）

## 0→1で求められることのまとめ
基本的には0→1フェーズでは人手が足りないことが多いため、場合によってはマーケティングツールの選定・開発やPoC/MVPによるコアバリュー形成までの開発プロセスの整備、要求を明確化してプロトタイプに落とし込む作業など専門とする開発以外の調整・選定やサポートを行う必要が出ることも多いでしょう。
ジェネラリスト的な振る舞いをしつつも、エンジニアとしてしっかりと技術面でバックアップすることが求められるフェーズだと思います。

# 1→10フェーズ
1→10フェーズはビジネスのコアバリューが形成され、売り上げを拡大していくフェーズです。
この局面ではコアの機能しかないアプリに色々な機能追加やUX改善が求められます。
また、0→1にこだわるエンジニアが抜けたりすることで人の入れ替えが激しくなってくる時期でもあります。
この局面では、アプリエンジニアは以下のようなスキル・動き・アウトプットを求められます。

## 1→10で求められるスキル・動き
* アプリエンジニアとしての専門性の発揮

## 1→10で求められるアウトプット
* HIG、Material Design、他アプリの知見を元にしたUXやアクセシビリティ観点での提言と実装
* 技術負債の解消計画策定と実施
* 開発目線で必要なドキュメンテーションの実施

## 1→10で求められることのまとめ
基本的にこのフェーズはKPIを追いかけてアプリの品質やUXを改善していくフェーズなので、アプリに詳しい人間としてUXの提言やテスト設計をするような形で専門性の発揮が求められることになるでしょう。
継続率やCVR向上のためレビュー対応などを行ったり、AppStoreでfeatureされるためにOS機能を使った開発をすることもあり、アプリエンジニアとしての知見を活かす機会が多いと思われます。

# 10→100フェーズ
10→100フェーズは事業が安定した状態に入り、運用に重きを置くフェーズです。
この局面ではユーザ数が一定存在することもあり、細かいUI/UXの改善や不具合修正、外部（他アプリや他企業のAPIなど）との連携といった開発がメインとなってきます。
この時期には人員が十分な数配置され、技術主導の開発が進んでいる組織も存在するでしょう。
この局面では、アプリエンジニアは以下のようなスキル・動き・アウトプットを求められます。

## 10→100で求められるスキル・動き
* 事業構造や組織体制に合わせた動き
* 高品質で障害を起こさないようにするための運用や安定的な開発体制の構築

## 10→100で求められるアウトプット
* 組織体制に応じた設計ルールの制定
* 運用自動化（特に配信やテスト、QA周りでの自動化）
* 安定的な開発の実施

## 10→100で求められることのまとめ
このフェーズは組織ごとに特徴が出てきて状況がバラバラになりがちなため、組織体制が安定していない場合には視座を高くして事業オーナーや開発組織全体のことを考える必要性が出てくることも多いでしょう。
組織がしっかりと体制作られていれば、決まった体制の中で専門性を発揮するだけの場合もあると思われます。
どちらの場合でも、ユーザ数が多くなってきたプロダクトでは障害・バグに対しての反応が強くなってくることもあり、開発スピードを保ったまま品質や安定性を高めていく動きが求められると思われます。

# 雑感
実際に新しくプロダクトを作る0→1フェーズでは、組織やビジネスの都合上から高品質を求められることなどもあります。
しかしそういった場合でも、可能な限り小さいものを素早く提供する形でスケジュールを組むなど、プロダクト開発全体に関わってサポートしたり調整したりという業務が必ず必要になると思います。
フェーズと事業上の制約を見ながら、期待値を制御し、より良いアウトプットができるように調整する業務は面倒なもので、不得意な人も多いかと思います。
しかし、そこを誰もやらないと苦労するのは開発メンバーになるため、誰かがやる必要はあると組織内で認識してもらうことが重要だと思います。

# 雑なまとめ
0→1だとジェネラリストでなんでも触ってみる・首突っ込んでみるタイプの人が向いてそう
1→10だとアプリエンジニアとして専門性発揮したい人が向いてそう
10→100だと体制考えたりみたいなマネージャー向きの人と作るものも体制も決まった中で開発したい人が向いてそう
コマンドプロンプトをクリックすると処理が止まるのを止まらなくする方法

コマンドプロンプトの画面を左クリックしてしまうと処理が止まってしまう問題対応。

コマンドプロンプトのタイトルバーを右クリック -> プロパティを開き、

簡易編集モード のチェックを外すと処理が止まらなくなります。

![aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25728/7e4e83a4-78a6-13c9-5765-f6e72a02f996.png)
Ubuntu 20.04にMySQL Workbenchをaptでインストールする手順

MySQL WorkbenchをUbuntu環境にインストールする方法としてはいくつかあるようで、1つは[ダウンロードページ](https://dev.mysql.com/downloads/workbench/)から「mysql-workbench-community_8.0.29-1ubuntu20.04_amd64.deb」といったdebパッケージをダウンロードしてインストールする方法。
![Screenshot from 2022-06-07 10-28-48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/74f1f3a1-c6a9-fb45-3bb0-ac2bbed0ce90.png)

---

もう1つは、snapコマンドによるインストール。

```
$ snap search mysql-workbench
Name                       Version  Publisher   Notes  Summary
mysql-workbench-community  8.0.25   tonybolzan  -      MySQL Workbench
$ snap install mysql-workbench
```

---

今回とりあげるのは、aptコマンドによるインストール方法です。
といっても、 [dev.mysql.com](https://dev.mysql.com/) の「[A Quick Guide to Using the MySQL APT Repository](https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/)」に「[Installing Additional MySQL Products and Components](https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-install-components)」として記載されている内容をなぞるだけなので、そんなに難しいことはありません。

---

まず、「MySQL APT Repository」をセットアップするために、[ダウンロードページ](https://dev.mysql.com/downloads/repo/apt/)からdebパッケージをダウンロードします。
![Screenshot from 2022-06-07 11-16-43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/7e659ee6-a8e3-7db2-dd30-49e3b418014a.png)

もしくは、curlコマンドによるダウンロードでもOKです。

```
$ curl -OL https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
```

次にダウンロードしたファイルを使って、MySQLのリポジトリのURLをaptのソースリストに追加します。

```
$ sudo apt install ./mysql-apt-config_0.8.22-1_all.deb
```

「パッケージの設定」画面が表示されるので、「Ok」を選択して「了解」で確定します。
![Screenshot from 2022-06-07 11-25-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/90df077a-b7dc-313c-1fac-1d9a6c0a5678.png)

インストールが完了すると、「/etc/apt/sources.list.d/」配下に「mysql.list」が追加されていることが確認できます。

```
$ ls -l /etc/apt/sources.list.d/ |grep mysql
-rw-r--r-- 1 root root 495  6月  7 11:27 mysql.list
```

aptのURLの情報を更新します。

```
$ sudo apt update
```

準備が整ったので、MySQL Workbenchをインストールします。

```
$ sudo apt install mysql-workbench-community
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  libpcrecpp0v5 libproj15 libzip5 proj-data
提案パッケージ:
  proj-bin libproj-dev
以下のパッケージが新たにインストールされます:
  libpcrecpp0v5 libproj15 libzip5 mysql-workbench-community proj-data
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 2 個。
38.0 MB のアーカイブを取得する必要があります。
この操作後に追加で 196 MB のディスク容量が消費されます。
続行しますか? [Y/n] Y
```

mysql-workbenchコマンドを実行すると、MySQL Workbenchが起動します。

```
$ mysql-workbench
Found /lib/x86_64-linux-gnu/libproj.so.15
```

![Screenshot from 2022-06-07 11-34-40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/3f1fafdf-d635-6ea4-e881-5d5a504d840e.png)

---

- 参考URL
    - [How to install MySQL and Workbench on Ubuntu 20.04 ( Localhost )](https://dev.to/gsudarshan/how-to-install-mysql-and-workbench-on-ubuntu-20-04-localhost-5828)
[Flutter] Android Gradle plugin requires Java 11 to runのエラーの直し方


色々と記事があったのですが、解決できなかったです。自分なりに触ってみた結果、解決できたので共有します。

# エラー文

```terminal

Launching lib/main.dart on Android SDK built for x86 in debug mode...
Running Gradle task 'assembleDebug'...

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/ryutaroiseki/work/pokemon_card_price_app/android/app/build.gradle' line: 24

* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
     You can try some of the following options:
       - changing the IDE settings.
       - changing the JAVA_HOME environment variable.
       - changing `org.gradle.java.home` in `gradle.properties`.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s

┌─ Flutter Fix ─────────────────────────────────────────────────────────────────┐
│ [!] You need Java 11 or higher to build your app with this version of Gradle. │
│                                                                               │
│ To get Java 11, update to the latest version of Android Studio on             │
│ https://developer.android.com/studio/install.                                 │
│                                                                               │
│ To check the Java version used by Flutter, run `flutter doctor -v`.           │
└───────────────────────────────────────────────────────────────────────────────┘
Exception: Gradle task assembleDebug failed with exit code 1

```


# 解決策

`android > build.gradle `内のコードを書き換えました。

```diff
# 変更なし

dependencies {
- # classpath 'com.android.tools.build:gradle:7.1.2'
- # classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ # classpath 'com.android.tools.build:gradle:4.1.0'
+ # classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
```


preference内で設定できるっぽいですが、僕の場合は、設定すらできませんでした。。
Tailwindのtoggle switchのCSSが有効にならない@Laravel

### 1.症状
こういうのです。
このコードを貼っても、peer-focusとかのCSSクラスが当たらない状態でした。
![スクリーンショット 2022-06-07 10.31.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542326/7180da6b-6841-93a7-2302-ca6c4670f3ed.png)

### 2.解決策
focus系のCSSクラスがビルド時に取り込まれていませんでしたので、
設定ファイルに記入したら、CSSが効きました。
```tailwind.config.js
variants: {
        extend: {
            backgroundColor: ['checked', 'focus'],
        },
    },
```
UE4 Automation Testing

https://forums.unrealengine.com/t/pass-by-reference-to-latent-command-odd-behaviour-automation-testing/151055/5

```
DEFINE_LATENT_AUTOMATION_COMMAND_ONE_PARAMETER(FLatentCommandCounterCommand, int, latentCounter);

bool FLatentCommandCounterCommand::Update()
{
    ++latentCounter;
    GEngine->AddOnScreenDebugMessage(-1, 50.0f, FColor::Orange, FString::Printf(TEXT("latentCounter: %d"), latentCounter));

    if (latentCounter > 5)
    {
        GEngine->AddOnScreenDebugMessage(-1, 50.0f, FColor::Green, FString::Printf(TEXT("latentCounter reached: %d"), latentCounter));
        return true;
    }

    return false;
}

// update↑を呼び出す↓がSessionFrontendに追加される
IMPLEMENT_SIMPLE_AUTOMATION_TEST(FLatentCounterTest, "tests.LatentCounterTest", EAutomationTestFlags::ApplicationContextMask | EAutomationTestFlags::ProductFilter)

bool FLatentCounterTest::RunTest(const FString& Parameters)
{

    int latentCounter = 0;
    ADD_LATENT_AUTOMATION_COMMAND(FLatentCommandCounterCommand(latentCounter));

    return true;
}
```
Dahua VTH / VTO + Asterisk + Homebridge でセキュアなインターホン環境を構築 Vol. 3

# 方向修正
タイトルにもある通り、Homekit(Homebridge)で双方向の音声通話ができることを目標にしていました。
しかし、Homebridgeのプラグインで双方向の音声通話が可能なプラグインがありませんでした。
一点だけ「Homebridge Camera FFmpeg」のPull Request内にsipを実装した旨のスレッドがあったので、試してみましたがうまくsip通信をすることができませんでした。(sip通信をすると数秒後にHomebridgeがByeを送信してしまう）

ということで、方向を変え、ドアホンのボタンが押下されたことをHomekitで通知、ビデオ＋音声通話はAstersisk + SoftphoneによるSIP通信で実装することとしました。
Apple WatchにSoftphoneの通知が来ないことが悩みのためでしたが、本日のWWDC 2022でCallkitへの対応が発表されたので時間が解決してくれそうですね。

# 構成イメージ
![asterisk.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2445439/359c8417-11e8-445c-69a3-96c38bd7edc5.png)

# ハマった点
* 家庭内のAteriskだけだとモバイルネットワーク経由でビデオ通話ができない。
パケットキャプチャをして調査したのですが、AdteriskがNAT後(ローカルIPしかもっていない)環境に居ることと、softphoneのpush通知サーバの仕様との組み合わせでどうにも回避できなかったので、モバイルネットワーク経由の場合には外部のAsteriskと通信させることで回避しました。

* 2台のAsteriskをIAX2で接続したかった
これも試行錯誤したものの、IAX2はビデオ通話をサポートしていないようなので、SIP over TLSで対応しました。
GCP Professional Cloud Architectに1日で合格する方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/1f42b923-b4ad-922f-2c0c-c354d1ca2d7a.png)
[Professional Cloud Architect](https://cloud.google.com/certification/cloud-architect?hl=ja)に合格しました。受験体験記を共有したいと思います。

# Professional Cloud Architectとは

2022年の最も高収入につながる IT 認定資格ランキングで2位の資格です。平均年収2200万円($169,029)

https://www.pcmag.com/news/highest-paying-it-certifications#2-google-cloud-professional-cloud-architect

https://cloud.google.com/certification?hl=ja

# 合格するためにやったこと

模擬問題集で70%あれば合格できます。1セット1時間合計4時間で終わります。試験開始前に間違えた問題を再度確認しておきましょう。Udemyのセール時に購入するのがおすすめです

## 【最短攻略】Google Cloud 認定 Professional Cloud Architect 模擬問題集

https://www.udemy.com/course/google-cloud-professional-cloud-architect-i/

## Udemy自動化

[Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ja)をインストールし、下記ユーザースクリプトをインストールすることで次へボタンを自動で押せます。2倍ほど速くテストを進められるので便利です。タッチパネルでやると更によいです。

```javascript
// ==UserScript==
// @name         AutoNextUdemy
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://www.udemy.com/course/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=udemy.com
// @grant        none
// ==/UserScript==

document.body.addEventListener('click', e => {
    if (e.target.type === 'radio') {
        requestIdleCallback(() => document.querySelector('[data-purpose="go-to-next-question"]').click())
    } else if (e.target.type === 'checkbox') {
        const m = document.querySelector('#question-prompt').textContent.match(/(?<=select )\d|\d(?=を選択)|\d(?=つ選択してください)|\d(?=つ選択)/)
        if (m && e.target.closest('form').querySelectorAll('input[type=checkbox]:checked').length === parseInt(m[0], 10)) {
            requestIdleCallback(() => document.querySelector('[data-purpose="go-to-next-question"]').click())
        }
    }
})
```

# まとめ
上記の問題集だけで十分合格できると思いました。参考になれば幸いです。

# 受験料無料キャンペーン開催中

Google Cloud Skills BoostをするとGoogle Cloud 認定資格試験バウチャー 1 回分をプレゼントキャンペーンやってるようです。もしよろしければご活用ください

https://cloudonair.withgoogle.com/events/try-together-0602
Google DocumentにおいてArialフォントで、カーソルがずれる問題の解消

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83911/c5b01a89-a75f-9c22-2b89-ace1dd622f57.png)


Windows10 Windows11においてGoogle DocumentでArialフォントでカーソルがずれる事象が発生していました。Arial以外のフォントに設定すれば良いので、個人所有のドキュメントではArial以外のフォントに設定して、長い期間、放置していましたがチームドキュメントなど、フォント変更がはばかられる案件もあって調査。

Windows10時代から発生していましたが、Windows11での解決。Windows10でも解決方法は同じと思われます。

Chromeのフォント設定を見直す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83911/33d6d074-8125-e361-5e64-0a147427e480.png)

私の場合は、standard fontに、Meiryo UIを設定していたのが問題でした。Arialにして解決。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83911/133151fc-0b15-67c0-f528-321b355c0300.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83911/1784a22a-a5d9-2979-7874-96dc9640a731.png)
「鈍角三角形(三角形の成立条件を含む)」を調べてみた。

余弦定理のθのプラスマイナスがわからなくなったので、「鈍角三角形」を調べてみた。
余弦定理（よげんていり、英: law of cosines, cosine formula）

https://ja.wikipedia.org/wiki/%E4%BD%99%E5%BC%A6%E5%AE%9A%E7%90%86

# 鈍角三角形
鈍角三角形（どんかくさんかっけい、英: obtuse triangle）
obtuse(DeepL翻訳より)鈍い,のろい,鈍臭い,鈍重

https://ja.wikipedia.org/wiki/%E9%88%8D%E8%A7%92%E4%B8%89%E8%A7%92%E5%BD%A2

https://dictionary.goo.ne.jp/word/%E9%88%8D%E3%81%84_%28%E3%81%AB%E3%81%B6%E3%81%84%29/

# 参考

https://qiita.com/Esfahan/items/421619087c29cf0feed5#%E4%BE%8B%E9%A1%8C


# 過去問

鈍角三角形(整数m)　m−1/2, m, m+3/2

http://kamelink.com/blog/2020/05/02/3-2-18-setunanndai-bunkei/


解答

https://www.wolframalpha.com/input?i=%EF%BD%8D%2B3%2F2%3C%28m-1%2F2%29%2Bm+%E3%81%AE%E6%95%B4%E6%95%B0%E8%A7%A3&lang=ja

結果:m>=3

https://www.wolframalpha.com/input?i=%28%EF%BD%8D%2B3%2F2%29%5E2%3E%28m-1%2F2%29%5E2%2Bm%5E2+%E3%81%AE%E6%95%B4%E6%95%B0%E8%A7%A3&lang=ja


m == 0 || m == 1 || m == 2 || m == 3 || m == 4

https://www.wolframalpha.com/input?i=3%2B3%2F2%2C4%2B3%2F2&lang=ja

結果:{9/2, 11/2}

???　wolframnの計算結果は、解答と同じでした。

# 過去問他

https://kamelink.com/exam/index.php?%BF%F4%B3%D8I%A1%A6A%A5%C1%A5%A7%A5%C3%A5%AF%A1%F5%A5%EA%A5%D4%A1%BC%A5%C8%A1%A1%C2%E84%BE%CF%A1%A1%A1%F82%BF%DE%B7%C1%A4%D8%A4%CE%B1%FE%CD%D1%A1%A12.%BB%B0%B3%D1%B7%C1%A4%CE%C0%AE%CE%A9%BE%F2%B7%EF

必要十分条件

https://mathmathmass.exblog.jp/32194951/

上と同じです。＜2022　宮城大学　総合選抜MathJax

https://mathexamtest.web.fc2.com/2022/202211081/2022110810300mj.html#top-0303
Tailwind CSSについて

# Tailwind CSSとは
Tailwind CSSとは、CSSフレームワークの1つです。
`Utility-First`というアプローチをとっており、`utility class`を組み合わせてスタイリングを行います。

## utility class
BootstrapなどのCSSフレームワークにはボタンなど、様々なコンポーネントが用意されています。
対してTailwind CSSにはコンポーネントがありません。
`utility class`と呼ばれるclassを組み合わせて作成していきます。

このようなイメージです。

```html
<button class="bg-blue-500 text-white font-bold py-2 px-4">
  Button
</button>
```

`bg-blue-500`や`text-white`などの`utility class`を組み合わせてボタンを作成しています。

これらの`utility class`は[チートシート](https://tailwindcomponents.com/cheatsheet/)で検索できます。

`utility class`自体は意味を持たないため、どのような場所でも使うことができます。

## Utility-First
このように`utility class`を組み合わせてスタイリングを行う考え方を`Utility-First`といいます。
`Utility-First`のメリットとして以下が挙げられます。

- class名を考える必要がなくなる
- 独自のCSSを記述する必要がないので、CSSファイルが増えない
- HTMLファイルで編集するため、影響範囲が広がらない

## インラインスタイルとの違い
「HTMLタグ内でスタイルングを行う」と聞くと、インラインスタイルを思い浮かべるかもしれません。
インラインスタイルとの違いとして、例えば以下が挙げられます。

- レスポンシブデザインを実現できる
- 擬似クラスを使用できる

### レスポンシブデザイン
Tailwind CSSではデフォルトで以下のブレークポイントが設定されています。

```css
/* Small (sm) */
@media (min-width: 640px) { /* ... */ }

/* Medium (md) */
@media (min-width: 768px) { /* ... */ }

/* Large (lg) */
@media (min-width: 1024px) { /* ... */ }

/* Extra Large (xl) */
@media (min-width: 1280px) { /* ... */ }
```

これらのブレークポイントを使用することで、レスポンシブデザインを実現できます。

```html
<!-- min-width: 768pxのときに文字色を#B91C1Cにする -->
<p class="md:text-red-700">
  TailwindCSS
</p>
```

### 擬似クラス
Tailwind CSSではホバーやフォーカス時のデザインも設定できます。

```html
<!-- ホバー時にカーソルをpointerにする -->
<a class="bg-blue-500 text-white font-bold py-2 px-4 hover:cursor-pointer">
  Link
</a>
```

# まとめ
Tailwind CSSの特徴をまとめます。

- `Utility-First`というアプローチをとったCSSフレームワーク
- `utility class`を組み合わせてスタイリングを行う
- class名を考える必要がない
- 独自のCSSを記述する必要がない
- HTML内に影響範囲が限定される

数多くの`utility class`が存在するため、最初は大変そうです。
ただclass名を考える必要がないのは大きなメリットだと思います。
慣れればBootstrapなどよりもオリジナリティの高いデザインを作成できそうです。

# 参考文献
https://reffect.co.jp/html/tailwindcss-for-beginners

https://caddi.tech/archives/1695

https://qiita.com/rmlabo/items/08bd9ab2d3794a6a6f46

https://tailwindcomponents.com/cheatsheet/

https://tailwindcss.jp/docs/utility-first

https://tailwindcss.jp/docs/responsive-design
apacheをdocker runしたがhttp://localhost:port番号/でアクセスできない

## 方法
- `0.0.0.0:port番号`でアクセスできる
- docker psをして表示されたPORTSを参考にする
![Screen Shot 2022-06-07 at 9.25.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482077/0d4aa654-0c28-3e8d-943b-fa7634d37e38.png)


## 参考文献
- docker & kubernetesのきほんのきほん
【Swift】値型、参照型について

# 目次
[はじめに](#はじめに)
[値型](#値型)
[参照型](#参照型)
[メモリ管理](#メモリ管理)


# はじめに
Swiftには構造体、クラス、列挙型という３つの型の種類がありますが、これらは**値の受け渡しの方法**によって値型と参照型の2つに大別できます。今回はこの値型と参照型について説明したいと思います。

# 値型
値型は値の受け渡しをした変数や定数と**変更を共有しない**型です。
なぜなら、値型のインスタンスは値への参照ではなく、値そのものを表すからです。つまり、変数や定数への値型のインスタンスの代入は、インスタンスが表す値そのものの代入を意味するため、**複数の変数や定数で1つの値型のインスタンスを共有することはできません**。

値型の代表例として、Int型を使ってみます。(標準ライブラリで提供されている数値型、String型Bool型などは値型となっております。）

```swift
var a = 5
var b = a  // bにaの値を代入

// インスタンスは共有されないため、aの値を変更してもbの値は変わらない。
a = a * 2
print(a)  // 10
print(b)  // 5
```

したがって、一度代入したインスタンスは再代入を行わない限り不変であるため、その値が予測可能になるというメリットがありますが、変数や定数への代入時や関数への受け渡し時には毎回インスタンスのコピーが発生するため、参照型に比べ非効率なインスタンスの受け渡しをするというデメリットがあります。
Swiftでは構造体と列挙型が値型です。

```swift
struct TriangleRatio {
   var bottom: Double
   var height: Double
   var hypotenuse: Double
}

var a = TriangleRatio(bottom: 1, height: 1, hypotenuse: 1)  // aに正三角形を代入
var b = a  // bにaの値を代入
a.hypotenuse = sqrt(2) // aを二等辺三角形にする

// aは二等辺三角形になるが、bは正三角形のまま
print(a)  // TriangleRatio(bottom: 1, height: 1, hypotenuse: √2)
print(b)  // TriangleRatio(bottom: 1, height: 1, hypotenuse: 1)
```
### mutatingキーワード
値型では、mutatingキーワードをメソッドの宣言に追加することで、自身の値を変更する処理を実行できます。mutatingキーワードが指定されたメソッドを実行してインスタンスの値を変更すると、**インスタンスが格納されている変数への暗黙的な再代入が行われます**。
mutatingキーワードが指定されたメソッドの呼び出しは再代入として扱われるため、**定数に格納された値型のインスタンスに対しては実行できません**。

```swift
extension Int {
    mutating func increment() {
        self += 1
    }
}

var a = 1
a.increment()  // 2

let b = 1
b.increment(). // bは定数であるため、再代入できずコンパイルエラー
```
# 参照型
参照型は値の受け渡しをした変数や定数と**変更を共有する**型です。
なぜなら、参照型のインスタンスは値そのものではなく、値への参照を表すからです。つまり、変数や定数への参照型のインスタンスの代入は、インスタンスに対する参照の代入を意味するため、**複数の変数や定数で1つの参照型のインスタンスを共有することができます**。


したがって、一度代入したインスタンスは他の参照している変数や定数からも変更可能であるため、その値が予測し難くなるというデメリットがありますが、変数や定数への代入時や関数への受け渡し時にはインスタンスのコピーが発生しないため、値型に比べ効率的なインスタンスの受け渡しができるというメリットがあります。
Swiftではクラスが参照型です。

```swift
class TriangleRatio {
   var bottom: Double
   var height: Double
   var hypotenuse: Double

   init(bottom: Double, height: Double, hypotenuse: Double) {
        self.bottom = bottom
        self.height = height
        self.hypotenuse = hypotenuse
    }
}

var a = TriangleRatio(bottom: 1, height: 1, hypotenuse: 1)  // aに正三角形を代入
var b = a  // bにaの値を代入
a.hypotenuse = sqrt(2) // aを二等辺三角形にする

// aもbも二等辺三角形になる
print(a)  // TriangleRatio(bottom: 1, height: 1, hypotenuse: √2)
print(b)  // TriangleRatio(bottom: 1, height: 1, hypotenuse: √2)
```

# メモリ管理
### 値型のメモリ管理
値型は、インスタンスを代入した変数(定数)が使われなくなると（=スコープの範囲外に出ると）、インスタンスのメモリは自動的に解放されます。そのため値型に関してはメモリ管理を考える必要はありません。

### 参照型のメモリ管理
参照型は、上記で説明したように複数の箇所から1つのメモリを参照するので、使われなくなったかどうかを単純に判定することができません。そこでSwiftでは、ARC(Automatic Reference Counting)という方式を用いて、メモリ領域を自動的に管理してくれます。
ARCでは、使用中のインスタンスのメモリが解放されてしまうことを防ぐために、プロパティ、変数、定数からそれぞれのインスタンスへの参照がいくつあるかをカウントしています。このカウントが0になったとき、そのインスタンスはどこからも参照されていない(どこからも使われていない)とみなされ、メモリが解放されます。このカウントのことを参照カウントと呼びます。


詳しいメモリ管理に関しての説明は、別途記事を作成したいと思います。

# 参考
・Swift実践入門 (https://gihyo.jp/book/2020/978-4-297-11213-4)
Oracle Analytics Cloud：カスタムメニューを追加する

# はじめに
Oracle Analytics Cloud（**OAC**）には、セルフサービスBI機能の他に、多くのユーザによる情報共有に適したダッシュボード機能があります。
この大量アクセスにも耐えられるダッシュボードと、それを構築するための様々な機能をまとめてエンタープライズBIと呼ぶこともあります。
それぞれに独自のポータルが設けられており、セルフサービスBIのポータルからはエンタープライズBIポータルへのリンクがあります。
ところが、エンタープライズBIポータルからセルフサービスBIポータルへのリンクは用意されていません。

# やりたいこと
- カスタムリンクの機能を使用して、エンタープライズBIのメニューをカスタマイズします。
- カスタマイズしたメニューをクリックすると、セルフサービスBIのポータルに遷移するようにします。

# カスタムリンクを作る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/1ade3c68-b66d-8e24-2e2b-e6e4af28f4e9.png)
OACにログインし、左上のナビゲータアイコンをクリックします。
コンソールを開き、「システム設定」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/e92074f1-2726-1d5f-f84d-fa82a6978f3c.png)
Custom Links XMLに次のコードを入力し、「Restart」ボタンをクリックします。

```
<?xml version="1.0" encoding="utf-8"?>
<customLinks xmlns="com.siebel.analytics.web/customlinks/v1">
   <link id="11" name="セルフサービスBI" description="セルフサービスBI" src="https://<OAC Hostname>/ui/" target="_self">
      <locations>
         <location name="header" insertBefore="catalog"/>
      </locations>
   </link>
</customLinks>
```
OBI Presentation Serverのリスタートを実行し、しばらく待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b4c290b2-ab8b-2a64-1b3f-7fc21418cea5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/c99be584-f85e-e3ab-0a62-1d72488da7e0.png)

# 動作確認
https://\<OAC Hostname\>/ui/にアクセスして、OACにログインします。
ページメニューから「クラシックホームを開く」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/67943415-3f34-2a2f-021b-92ab22ccfc3a.png)
カスタマイズしたメニューが表示されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/5dd09936-151b-e281-93b9-84f55fa7284b.png)
実際にクリックしてみると、セルフサービスBIのポータルに移動できました。
100日後くらいに個人開発するぞ！day040

## 今日も条件分岐をやってみた！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/84d5244d-6678-d0a1-ddea-d7195dcd20da.png)



## 今日の学び
### 条件が成り立たない時の処理方法
* ifにelseを組み合わせると「もし〜なら・・・を行う、そうでなければ〇〇を行う」という処理ができる
* ifにelseを組み合わせた定型文
    * `if 条件式`
    * `　　　　　　　処理`
    * `else`
    * `　　　　　　　処理`
    * `end`


### 条件を追加する方法
* elsifを用いると「もし〜だったら・・・を行う、そうでなくもし〇〇であれば〜を行う、いずれでもなければ・・・を行う」という条件分岐ができる
* ifにelsufを組み合わせた定型文
    * `if 条件式1`
    * `　　　　　　　処理`
    * `elsif 条件式2`
    * `　　　　　　　処理`
    * `else`
    * `　　　　　　　処理`
    * `end`
* elsifの注意点
    * 複数の条件に合致したとしても、実行されるのは最初に合致した条件の処理のみであるため、条件の順番を間違えると、期待した分岐がなされないことがある

### 複数の条件を組み合わせる方法
* 「かつ」：`&&`で表す
    * 例：`条件1 && 条件2`
* 「または」：`||`で表す
    * 例：`条件1 || 条件2`
初めてQiitaを使ってみた。（自己紹介）

## 初めに
初めまして。プログラミング学習歴1年のヒロシといいます。
HTML CSS jQuery JavaScript WordPressあたりがメインスキルです。

日々の学習の習慣の一つとして、コーディングでつまづいたところをアウトプットできればいいなと思いQiitaを始めてみました。

このQiita、Markdown記法なるもので記事を書けるみたいなので練習してみようと思います。

## 自己紹介
### 出身地・誕生日
福島県会津若松市にて1995年3月8日に生まれました。（27歳）

### 趣味
テキサスホールデムというポーカーにハマっています。アプリで遊んだり、たまにアミューズメントカジノに行って遊んだり・・・
家でぐうたらしているときはほとんど動画サイトでアニメかVtuberの切り抜き、配信を見ています。

## 大学卒業後〜現在について

### プログラミングに出会うまで

大学卒業後、予備校講師になりたいと思っていたので、集団塾の非常勤講師として２年間働いていました。プログラミングの学習を始めたのは卒業してから1年経ったあたりです。


### プログラミングについて
小さい頃からプログラミングが好きでした。本を見ながらExcelのVBAを使ってスロットマシンを作ったりルーレットを作ったり...

そういうわけで考えながらコードを書くことが元々好きでした。余談ですが数学も好きなのでどこか繋がっているところがあるかも知れません。

### プログラミング歴
昨年から本格的にプログラミングを学ぼうと思い立ち、~~ひろゆきの動画に影響を受けて~~趣味としてHTML CSSを学習しました。
あまり覚えていませんが、初めはProgateで学習したかと思います。
数日ほどで無料部分を終えていろいろ調べていくうちにしょーごさんのロードマップを見つけました。

https://shogo-log.com/after-progate/

学ぶべきもの、読むべき本が一通り書かれていて迷わないのでおすすめです。特に、デザインカンプからのコーディングはいい練習になりましたし、ポートフォリオでも大活躍しています。

そして今年の3月に塾講師を退職。テックアカデミーさんに通いながら転職活動を開始。転職活動に用いたポートフォリオがこれです。

https://hiroshi164.sakura.ne.jp/portfolio/

...デザインは微妙です

とりあえず作品ページにデザインカンプからのコーディング3つ、javascriptで作ったゲームたくさん盛り込んでみました。

### 現在
塾講師からWeb制作会社へ転職、昨日から入社いたしました！

## これから
毎日、仕事中に少し気になったことをアウトプットしていければと思います。

というのも、自分の性格上仕事から帰ると何もやる気が起きないのでせめてPCに触るきっかけが欲しかったからです。

まずはどんなに短い記事でもいいので毎日投稿を目指します。
PHP　array_splice　配列の要素を追加・削除・置き換え

## array_splice
- 配列の一部を削除し、他の要素に置き換える
- 削除はせずに、任意の箇所に配列を追加する

## 使い方
```php:書き方
array_splice(第一引数, 第二引数, 第三引数, 第四引数);
```
`第一引数`
対象の配列
`第二引数`
要素の抽出開始位置
負の値の場合は、配列の末尾を-1として数えた位置になる
`第三引数`
取り出す要素数
`第四引数`
削除された要素が、この配列の要素で置換される

```php:例
$color = ['赤色', '青色', '黄色', '緑色', '紫色'];
var_dump(array_splice($color, 2, 3, ['白色', '黒色', 'ピンク色']));
//Array ( [0] => 黄色 [1] => 緑色 [2] => 紫色 ) 
var_dump($color);
//Array ( [0] => 赤色 [1] => 青色 [2] => 白色 [3] => 黒色 [4] => ピンク色 )
```
`第一引数`
配列の「$color」
`第二引数`
削除の開始位置は「2」
`第三引数`
取り出す要素数は「3」
`第四引数`
削除した要素を「白色, 黒色, ピンク色」に置き換える

※ 2行目のように `array_splice` は置き換えた後の配列が返ってくるのではなく、削除した配列が返ってくる

```php:削除せずに追加する
$color = ['赤色', '青色', '黄色', '緑色'];
var_dump(array_splice($color, 2,0,['白色', '黒色', 'ピンク色']));
//Array ( ) 
var_dump($color);
//Array ( [0] => 赤色 [1] => 青色 [2] => 白色 [3] => 黒色 [4] => ピンク色 [5] => 黄色 [6] => 緑色 )
```
2番目の要素から0個の要素を削除して、「白色, 黒色, ピンク色」に置き換えることになる。
なので、削除することなく任意の場所に配列を追加することができる。
I can not able to change Job Posting Site status to 'Public Read Only'.,


この質問もよく見かけます。

I managed to fix this by changing the relationships to Position and Job Posting Site from Master-Detail to Lookup. This allows you to set the permissions for the Job Posting object independently to Public Read Only which then passes the verify step. Probably not the best way to write the app, but at least you can get the badge :)

 

https://developer.salesforce.com/forums/?id=9060G0000005dD5

+ [Hello! i can not able to change Job Posting Site status to 'Public Read Only'.,](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000Hl1oJSAR)
+ [Unable to change Job Posting Site status to 'Public Read Only'.](https://trailhead.salesforce.com/en/trailblazer-community/feed/0D54S00000FSMmTSAX)
+ [Trailheadチャレンジエラー：ジョブ投稿ステータスを「読み取り/書き込み」に設定するための手順を確認してください。](https://developer.salesforce.com/forums/?id=9060G0000005dD5)
Docker(デモ)でwordpressを動かしてみる

# まとめ
:::note info
[Play with Docker]（https://labs.play-with-docker.com/) で、
仮想環境に、WordPressをインストールする
:::
:::note warn
使用するにはDocker Hub のアカウントが必要です
※[公式ドキュメント](https://matsuand.github.io/docs.docker.jp.onthefly/docker-id/)
※[Docker Hub サインアップページ](https://hub.docker.com/signup/)
:::

![processing_file (22).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2441785/ff55801e-3d09-bc1e-748c-279fe75dfec9.gif)


# サンプルコード
```
docker run -it -p 80:80 wordpress:latest
```

###### 参考資料

https://www.kagoya.jp/howto/cloud/container/vps-docker-01/
経験発表「D-Case記法を応用した変更要求仕様書の提案」を通して得られた知見

# はじめに

派生開発カンファレンス2022で、「D-Case記法を応用した変更要求仕様書の提案」というタイトルで発表をさせていただいた。
発表を通して、得られた知見を記録しておく。

## 発表資料
https://affordd.jp/libraries/affordd-conference2022-denso-create/

## 発表内容の概要
### 状況
我々のプロジェクトでは，派生開発において，仕様の漏れ・誤りによる不具合の流出を防ぐため，USDM（変更要求仕様書）を導入した．
要求と仕様を階層構造で表現したことで，レビューで変更仕様の漏れ・誤りを検出できるようになった．
しかし，レビューで変更仕様の漏れを見逃す事例を，完全になくすことはできなかった．

### 問題
変更要求仕様書には，変更要求から変更仕様を特定した根拠が明確に示されていなかったため，部分理解の状態のレビューアでは，問題を検出することは難しい．

### フォース（制約）
* 変更要求仕様書を導入済みのプロジェクトでの改善である．
* レビューアも部分理解の状態である．
* レビューアは，D-Caseのトレーニングを受講し，実開発でD-Caseを利用した経験あり．

### 解決策
D-Case記法を参考に，要求と仕様の階層構造に，「戦略」と「前提」を要素として加える．
具体的には，変更要求仕様書に分析結果欄を設け，「何をもとに，どのようにして，その変更仕様を特定したか」を示すルールとした．

# 発表へのフィードバックから得た知見
* 「どうしてそのような方法で仕様を抽出するのですか？納得できません。」というような以下の質問があった。こういった質問（＝議論）があったのは良かった。こういった議論を生み出すことが、今回の工夫の目的であるため。
  * どうして要因から仕様を考えるのですか？ 送信失敗という対象条件を検知する方が自然に思えるのですが。
  * 派生開発では対象ソフトウェアの振る舞いを理解する際に元の仕様だけでなくそれに基づくテストの結果も見る必要があると思います。
  * ソースコードが「完成していた」というご説明は理解できませんでした。必要な変更は必要箇所に施すものだと思っているためです。
* 変更要求仕様書の書き方に関する指摘
  * 例が、変更要求仕様書（変更要求、変更仕様）の記述になっていない。機能仕様書の書き方になっている。
  * 変更仕様は、仕様になっていない。
* よかったとコメントいただいたこと
  * レビューのベースが明確になるのはとても良いと思います。
  *  変更の戦略を検討するという発想はいいですね。
  * 仕様がどうやってこのような仕様になっているのかわからない場合があり、前提条件などが書かれていると良いか悪いかレビュー出来るようになってよいと思いました。作った当時よりも後から振り返って見たときにも有益な情報かなとも思いました。
* 要望をいただいたこと
  * 追加で記載することは負荷が増えると考える。定量的な費用対効果を知りたい。
  * D-Caseを知らなくても前提など不明点の記載していけば良いと思った。D-Caseを理解しているとない場合での違い(D-Caseのよさ)はあるか知りたい。
  * D-Case以外のフレームワークを変更要求仕様書に組み込むことでも効果がでないか知りたい。
* 今後に向けて示唆をいただいたこと
  * 変更の方針、戦略を変更要求にもとづいて、議論（レビュー）するプロセスを設計するのがよさそう。

# 関連記事
https://qiita.com/kazuo_reve/items/989274a57fcb9b54ab6f

https://qiita.com/kazuo_reve/items/ea7a0720c58edf610034
STM32G031とS-5851Aで温度をPA2ハードウェアシリアルに出力2(小数点)


x 動作確認済み2022/6/7 14:00

目的
精度の関係で意味は、ないけど小数部も受信する
わかりやすくて見やすいから小数点以下2ビットとする0,.25,.50,.75


![o_con527.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/1d794df5-12d6-af36-cd00-195ec91f57b1.jpeg)


![o_con529.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/a0ba407c-88b1-5b3d-cc4b-39febb776896.jpeg)



名前は、まだない


```c++

//I2C_5851_HS_031_3

#include <Arduino.h>
#include <Wire.h>
#include <HardwareSerial.h>

#define S5851A 0x48


//初期化
void setup()
{

  delay(3000); //not delete

  //シリアルの初期化
  Serial.setTx(PA2_ALT1);
  Serial.setHalfDuplex();
  Serial.begin(9600);

  //i2cの初期化
  Wire.setSDA(PA12);
  Wire.setSCL(PA11);
  Wire.begin(); //pa12 pa11

} //setup


//メインループ
void loop()
{

  //0番目のレジスター
  Wire.beginTransmission(S5851A);
  Wire.write(0);
  Wire.endTransmission();
  delay(1);

  //温度の読み込み
  int s[2] = {0,0}; //センサーの値
  int ii=0;
  Wire.requestFrom(S5851A, 2);

  //1
  while(Wire.available())  {    // 要求より短いデータが来る可能性あり
    s[ii++] = (int)Wire.read();       // 1バイトを受信
  }//while

  //2
  while(Wire.available())  {    // 要求より短いデータが来る可能性あり
    s[ii++] = (int)Wire.read();       // 1バイトを受信
  }//while

  //温度の表示
  Serial.print(s[0]);
  char  *f4[] = {".0", ".25", ".5", ".75"};
  Serial.println( f4[s[1]>>6] );

  //1秒の待ち
  delay(1000);

} //loop


```
【Android Studio】Device Managerで日本語表記にする方法--備忘録--

Android StudioのDevice Manager内で日本語を使用する方法

デフォルトの状態だと、日本語入力はできません。また、表記もすべて英語になっています。
これを解消して、日本語で表示、入力できるようにしていきます。
<img width="400" alt="0.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349192/ab6ae922-c58f-60f9-5532-d98ad71b89d8.png">

１、まずはホーム画面に行き、上方向にスワイプ
<img width="400" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349192/99327bde-8e67-bd5e-1eaa-4148599dd831.png">

２、Settings（設定）をクリック
<img width="400" alt="2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349192/efc313ef-c9f9-4567-38b9-e0da46642ced.png">

３、Systemをクリック
<img width="400" alt="3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349192/1d9e8a28-f265-837b-1ab1-1d17ce57614d.png">

４、Languages & inputをクリック
<img width="400" alt="4.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349192/a1a316a3-ed2c-0a68-3750-7070afc6f24c.png">

５、Languagesをクリック
<img width="400" alt="5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349192/ba8fce1f-1350-027a-706e-59601569faac.png">

６、Add a languageをクリック
<img width="400" alt="6.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349192/05322c99-988d-a05a-8486-5319d0f8d3e0.png">

７、一番下までスクロールすると「日本語」があるのでクリック
<img width="400" alt="7.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349192/5ab3a815-71fb-e71f-b6a6-b103a393b576.png">

８、「日本語」が追加されるが、優先度は「英語」のままなので順番を入れ替える
<img width="400" alt="8.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349192/50a8bee6-af15-0391-cbc1-376b5cfa13ec.png">

９、日本語入力が可能になる
　　その他表記も全て日本語になる
<img width="400" alt="9.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349192/039b23d4-65c9-0ab8-25b6-99c6062d002f.png">
VPN最終アクセスを表示してみた

リモートからおうちに入れるように[VPNを設定](https://qiita.com/yamori813/items/e90727c5db56f9cc9294)してあるのですが、どろぼうさんに入られたときに気がつくように最終アクセス時間をおうちモニター(oumon)で表示するようにしてみました。

まずVPNサーバーのsnmpd.confに以下を追加します。

```
extNames.1 = "lastlogin"
extCommand.1 = "last -n 1"
```

なんか設定がまずいのかtelnetのloginは残らずVPNのアクセスだけが残るのでこれでいけます。

oumonのjson生成スクリプトに以下を追加します。

```
LAST=`bsnmpwalk -s 10.0.1.3 .1.3.6.1.4.1.2021.8.1.101.1 | awk '{sub("^.{72}", "");print $0}'`

echo -n "{ \"a\": \"VPN LAST\", \"b\": { \"c\": \""${LAST}"\" } }" >> ${JSON}
```

これでMagic-Gridに放り込みます。

![last.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104066/b408e4be-3c4b-0d9b-49a7-44f7942d9777.png)

後から気がついたのですが、これだと空のときにsubにマッチせずOIDがそのまま表示されます。そのうち直します。

戸締りには注意しましょう。
QiitaでMermaidが表示されない場合があり検証した

# Mermaid

どうやら `# Mermaid` という見出しを先に書くと表示されないようです。
一度 `# Mermaid` を削除すると表示されるようになります。
そのあとで見出しを書いても適切に表示されます。

以下にMermaidでシーケンス図を書いていますが表示されません。

↓

```mermaid
sequenceDiagram
bob-->alice : message
```

(追記)
qiita-discussions に報告がありクローズされているとコメントいただきました。

https://github.com/increments/qiita-discussions/discussions/232
5.12 (難) デルタ法1

## 方針

前半の確率収束の証明は難しい．後半はデルタ法の練習なので，重要．

![知ったこと-55.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/59553971-ac0a-a924-4f5a-5f4a6444ad72.jpeg)

## 答案

![5.-20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/3b92bd39-32e0-531f-756e-0ada267b7930.jpeg)
![5.-21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/e67f3fa6-27b4-4059-faa1-c83e4b058a40.jpeg)
![5.-22.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1702786/df0ff3b7-cd4d-e129-3bc4-f441939f8406.jpeg)

## 参考文献

- 『[現代数理統計学の基礎](https://www.kyoritsu-pub.co.jp/bookdetail/9784320111660)』(久保川達也　著)
nvmのデフォルトをltsに変える 

いつも忘れてしまうのでメモ。
# For LTS(長期サポート版)
```shell:デフォルトをltsにする
nvm alias default lts/*
```
ついでによく使うコマンドを載せておきます。
```shell:ltsの最新版をインストールする
nvm install lts/*
```
```shell:最新のltsを使う
nvm use lts/*
```



# For Stable(安定版)
```shell:デフォルトをstableにする
nvm alias default stable
```
ついでに
```shell:stabeをインストールする
nvm install stable
```
```shell:stableをインストールする
nvm use stable
```
access2000の作法 その32

# 概要
access2000の作法、調べてみた。
フォームに引数を渡す方法、やってみた。

# フォームに引数を渡す手順
- menuフォームをデザインビューで開く
- ボタンを設置
- ウィザードが開く	キャンセル
- プロパティシートを開く
- イベントを開く
- クリック時、コードビルダーを開く
```
Private Sub コマンド60_Click()
    On Error Resume Next
    DoCmd.OpenForm "kanri", , , , , , "ありがとう"
    MsgBox "ok"
End Sub
```
- フォームを閉じる
- 保存する
- kanriフォームをデザインビューで開く
- プロパティシートを開く
- イベントを開く
- ロード時、コードビルダーを開く
```
Private Sub Form_Load()
    MsgBox Me.OpenArgs
End Sub
```
- フォームを閉じる
- 保存する

以上。
Excel +(Access) VBA 1つのセルにメール用の改行のある文章を入力する

# 改行をそのまま入力してもよいが。。。

```text
A
  B
   Hello World!
```

日本のメールの文化は明らかに非効率でなぜかアドレス欄に宛先があるのに本文に相手方の肩書を入れるというケースがあります。
これは非効率ですが、相手の住所を確認するためにわざと入れている場合もあります。
もちろん[セルで文字列を折り返す](https://support.microsoft.com/ja-jp/office/%E3%82%BB%E3%83%AB%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E6%8A%98%E3%82%8A%E8%BF%94%E3%81%99-2a18cff5-ccc1-4bce-95e4-f0d4f3ff4e84)に設定して

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126919/5f76b569-d6a9-9ff2-24f7-a3a15670a499.png)

としてもよいし、数が少ない場合は有効です。しかしこれはセルがやたら広がってしまい、一覧性にかけます。
また、折り返しを解除すると、改行が消えるときがあります。
そこで、VBAのように以下のように表示できないでしょうか？

```vb
"A" & chr(10) & "  B" & chr(10) & "   Hello World!"
```

:::note
この場合はセルで文字列を折り返すを解除してください。
:::

## 式として評価するには？
### Evaluateではない
[Application.Evaluate メソッド (Excel)](https://docs.microsoft.com/ja-jp/office/vba/api/excel.application.evaluate)
じつはこれではエラー2029が出て使えません。

### AccessのEval
Microsft Access Object　Model （現在はVer16）を参照設定します。
次に、エラー判定を入れます。chr(10) で式かどうかを決めます。

```vb
Sub test2()
If ActiveCell.Value Like "*chr(10)*" Then ' chr(10)の有無で判定
Debug.Print Eval(ActiveCell.Value)
Else
Debug.Print ActiveCell.Value
End If
End Sub
```

##Eval EvaluateはIsErrorを使用できない
[Application.Eval メソッド (Access)](https://docs.microsoft.com/ja-jp/office/vba/api/access.application.eval)
>引数 stringexpr は 、文字列に格納される式である必要があります。 数値式や関数名を含まない文字列だけを Eval 関数に渡すと、実行時エラーが発生します。 たとえば、 Eval("Smith") と指定すると、エラーになります。

このようなプロシージャを作ります。

```vb
Sub test3()
If ActiveCell.Value Like "*chr(10)*" Then 'エラーで止まらず、次の処理に進む
Debug.Print Evaluate(ActiveCell.Value)
Else
Debug.Print ActiveCell.Value
End If
If IsError(Evaluate(ActiveCell.Value)) Then 'イミディエイトウィンドウに エラー2015と表示される
Debug.Print Evaluate(ActiveCell.Value)
Else
Debug.Print ActiveCell.Value
End If
If IsError(Eval(ActiveCell.Value)) Then 'エラーメッセージ 2766 で止まる
Debug.Print Eval(ActiveCell.Value)
Else
Debug.Print ActiveCell.Value
End If
End Sub
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126919/660fe9cf-793d-4e9e-689b-9e50c5e67030.png)
という文字しか入っていないセルをアクティベート（単にそこのセルにフォーカス）すると
イミディエイトウィンドウに Hello World!と表示されたあとに
エラー2015が表示されあとの処理は表示されない。
エラーメッセージ2766が表示され中断する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126919/194a7feb-2ab8-6275-6a86-5992081223a6.png)
つまりIsErrorで文字列かどうかを判定するとあとの処理に進まない。

### vbCrlfのような定数は使えない

```vb
"A" & vbCrlf & "  B" & chr(10) & "   Hello World!"
```

これをセルに入れて test3を実行します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126919/597909eb-1178-b3fe-ca1d-a832c94b1fb8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126919/17448ef9-90b4-a8cb-a4eb-f9a9f56e1412.png)

エラー2029が2つ表示されます。
本来、Widndowsの文字列では改行vbCrlfとchr(10)は同じ意味ですが、Evalはエラーになります。

# まとめ
Excelでメールの一部分をセルに入れるときは、そのまま入れても良いが、文字列を折り返して行が高くなる。
VBAのような表記にすると、一行で表示できる。
しかし、それを改行がある文章に変換するには、Accessが必要である。Accessがあれば参照設定してEvalが使える。
ただし、文字列と文字列式が混在しているときは`IsError(EVAL())`で判定してもエラーでとまる。このため実際の文字列に式があるか、別の方法で判定する。
Evalは、VBの定数は式として評価できないため、vbCrLfで改行を表記するとエラーになる。このため、Windowsの改行はChr(10)で表記する。
色々とややこしいが、これでメールの文章自体を1行にしてセルに入れることができる。
なお、Accessがない場合は改行コードを文字にして、Replaceで変換する方法も考えられる。
新人さんにすすめる「もくもく会」 2022年初夏 🍧



https://qiita.com/e99h2121/items/9e5444858d107afdf7a2


平日毎朝 9:00-10:00 という時間に「もくもく会」を開催しています。

---

> いま話しかけて良いのかな... 
> ちょっとだけ質問したいな... 
> 集中力切れちゃったな... 

---

リモートワークをしているとそんな悩みがあります。

オフィスなら話しかけられる「同僚」「隣の先輩」がいない。

---

なぜなら、ここは家... :house_abandoned: 

---

## そこでもくもく会

---

**oViceで「もくもく会」をしています。** 決まった時間、位置、話す話さないも自由、ただ集う。それだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/eb9b4241-828c-e9d7-c9b8-8d325b6f6459.png)

---

「もくもく会」とは

---

[もくもく会 - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%82%E3%81%8F%E3%82%82%E3%81%8F%E4%BC%9A)
> もくもく会（もくもくかい）は、与野党の愛煙家議員が集結して発足した日本の超党派の議員連盟

---

ではなく
[もくもく会 (集会) - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%82%E3%81%8F%E3%82%82%E3%81%8F%E4%BC%9A_(%E9%9B%86%E4%BC%9A))

> もくもく会は、参加者が集い各自の勉強や作業、読書などを黙々と行う会

---

> 2000年代後半にはIT関係者の間で開かれていた。 ITにおけるハッカソンと類似しているが、もくもく会は「ゆるい」雰囲気で、各自がそれぞれの作業を行うことに主眼をおき、作業の具体的な内容や会全体の目標を制約しない点が異なる。 IT関係者の間で活発に行われるほか、企業内で行うものややシニア世代を対象にしたプログラミングに関するものなど様々な場面で実施される。

---

...です。

音がないのは味気ないので、作業に集中できる、焚き火をBGM代わりにしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/06e1f648-ee1b-8ebe-62ee-43c441733e18.png)

---

## 焚き火は「いつでも話しかけていいよ」の印

---

> いま話しかけて良いのかな... 

良いんです！

---

> ちょっとだけ質問したいな... 

質問力は開発者に必要なスキル。一緒に培いましょう。

---

> 集中力切れちゃったな... 

みんな一緒です。火にあたろう！

---

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/32590cd8-03c6-16a9-1f9b-6660fe5dee48.png)

---

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/f67c84ea-8b7f-7b27-8af1-1fc6752137cf.png)

---

～ 焚き火 ～

<iframe width="860" height="484" src="https://www.youtube.com/embed/pW4VVZ-ljbw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

---

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/2ef177ac-a0cc-bfce-142f-3206c549e6fc.png)

---

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/0003423d-db72-d66b-9290-fdc2bf002059.png)

---

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/4b364ed9-34b3-afc4-dcd4-dc041b88a24e.png)

---

## 実践

よかったら、試してみよう。

話題は

- 何時に起きた
- 何食べた
- 心配ごと
- 本、マンガ
- 今日の予定
- Wordle？: https://www.nytimes.com/games/wordle/index.html

---

- 動画: [フカシギの数え方](https://youtu.be/Q4gTV4r0zRs)

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

---

## 以上

ちょっと話せる場に。oViceで「もくもく会」をしているという紹介でした。

もくもく会はいいぞ。