OmniAICreator/Qiita-1.07M huggingface dataset:
【Terminal】ターミナルを使ってFinderを操作する

#はじめに
今回は、FinderとTerminalの関係をみていきます。

#Finderとは
Finderとは、macOS標準搭載のファイル操作に使用するGUIアプリケーションです。

#ホームディレクトリ
各ユーザーの個人ファイルを保存する場所は、Finderではホームと呼ばれ、コマンドラインではホームディレクトリと呼びます。
また、ホームディレクトリは「~」で表されます。（チルダと読む）
半角英数字入力の状態でJISキーボードの場合は[shift]+[^]、UIキーボードの場合は[shift]+ [ ` ] キーを押すとチルダは入力できます。

`ls ~`でホームディレクトリの中を見てみましょう。人によって表示される内容は変わります。

![ScreenShot 2021-07-04 16.49.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/4c350787-3b8a-1521-9533-11e9637e7b87.png)

#Terminalとの連携
Finderで表示しているファイルやフォルダをターミナルで操作してみましょう。そのために、FinderとTerminalを連携する必要があります。

まずは、cdコマンド(階層を移動するコマンド)で対象のフォルダまで移動したいとします。この時に、FinderからTerminalを操作する方法は二つあります。

一つは、移動したいフォルダをターミナルにドラッグ&ドロップする方法です。

![ScreenShot 2021-07-04 16.56.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/b6651208-ff5e-d0c8-681c-d42357c3a2fa.png)

![ScreenShot 2021-07-04 16.56.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/4c5cc9e7-f5d8-0ef3-2ee5-21091193f482.png)

![ScreenShot 2021-07-04 16.56.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/ecc84dfe-2b56-329c-6546-67af845d9f1b.png)

すると、このようにディレクトリが表示されてくれます。
returnキーを押すと、対象のフォルダに移動することができます。
「~」のところがフォルダ名の「Sample」に変わっています。これで、今のTerminalはSampleフォルダが作業ディレクトリになっています。

![ScreenShot 2021-07-04 16.56.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/ec38376a-cc14-7536-a0cc-63850f235087.png)

二つ目の方法は対象のフォルダを右クリックして一番下二つを選択することで、対象のフォルダに移動したTerminalを開くことができます。
![ScreenShot 2021-07-04 17.02.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/4d454799-b089-0811-ea5a-a7cc95a79a55.png)

#openコマンド
openコマンドを使ってファイルを開いてみましょう。

Sampleフォルダにindex.txtを作成します。
touchコマンドでファイルを作成できます。

![ScreenShot 2021-07-04 17.30.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/2e5ad2f6-1854-4cd5-b6e7-7b60d3b6e894.png)

![ScreenShot 2021-07-04 17.19.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/6ae8675d-30f4-9039-1a9c-e7452ed01c8f.png)

テストと入力して閉じます。これをTerminalから開いてみます。

![ScreenShot 2021-07-04 17.20.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/51ea54c7-f863-85d7-94f1-9b27f45df6b0.png)

すると、txtファイルを開くことができます。
![ScreenShot 2021-07-04 17.21.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954451/231d514d-12d4-9878-402f-7f95f9ef5330.png)


#おわりに 
おわりです。
【Terminal】ターミナルまとめ

#はじめに
Terminalの記事をまとめます。

#Terminal

https://qiita.com/REON/items/868d2176e013a6c442c4

https://qiita.com/REON/items/96b9f337d9668b970bad

https://qiita.com/REON/items/a417807f07836850f33f

https://qiita.com/REON/items/979d3108dc662680979f

#おわりに
随時更新予定
ポインタを使って変数の入れ替えを行う

ポインタを使って変数の入れ替えを行う処理をC++で開発しました。


```C++
#include <iostream>
using namespace std;

// swap関数の宣言
void swap(string *,string *);

int main() {
	//乃木坂46とSKE48の並びを変える
	string data1= "乃木坂46";
	string data2= "SKE48";
    //data1:乃木坂46、data2:SKE48の並びで表示する
	cout << "data1:" << data1 << ",data2:" << data2 << endl;
	//data1:SKE48、data2:乃木坂46の並びに変える関数を呼び出す
	swap(&data1,&data2);
	//data1:SKE48、data2:乃木坂46の並びで表示する
	cout << "data1:" << data1 << ",data2:" << data2 << endl;

	return 0;
}

// swap関数の定義
void swap(string *pX,string *pY)
{
	string tmp="";
	tmp = *pX;
	*pX = *pY;
	*pY = tmp;
}
```
Googleフォームで年齢をプルダウンの選択肢で作る方法

##結論

```js:スクリプトエディタ
function addPrefListItem() {
  const form = FormApp.openById(''); // フォームのIDを指定
  var item = form.addListItem();
  item.setTitle('年齢') // フォームの質問のタイトル
  let choices = [];
  for(let i = 初めの年齢（数字）; i <= 終わりの年齢（数字）; i++) {
    choices.push( item.createChoice(i) )
  }
  item.setChoices(choices);
}
```

他のことにも応用できそうなので参考にしてください。
[Python]mplfinance で平均足を表示させる

# はじめに
トレンドをわかりやすく表示できる平均足を、pandasとmplfinanceで表示させる方法を記します。

# 環境

- Windows 10 home
- Python(3.7.3)
- JupyterLab(3.0.6)
- pandas(1.2.1)
- investpy(1.0.3)
- mplfinance(0.12.7a0)

# 平均足とは

[平均足](https://www.investopedia.com/trading/heikin-ashi-better-candlestick/)とは、以下の定義を持つ足のことです。

- 平均足始値 =  (前の足の始値 + 前の足の終値) /2

- 平均足終値 =  (始値 + 高値 + 安値 + 終値) /4

- 平均足高値 = 高値

- 平均足安値 = 安値

始値と終値の定義が、ローソク足と異なります。ローソク足と比較して、陽線と陰線が混じりにくく、トレンドがわかりやすい特徴を持っています。

# データ
[investpy](https://qiita.com/matsxxx/items/f7c50b88f0b6d1c9e4d5)でとってきたドル円の日足データを使います。

# 平均足を表示させる
定義のまま、データを加工して表示するのみです。

```Python
import numpy as np
import investpy
import mplfinance as mpf
usd_jpy = investpy.get_currency_cross_historical_data(currency_cross='USD/JPY', from_date='01/02/2021', to_date='30/03/2021')
cl = usd_jpy[['Open', 'High', 'Low', 'Close']].mean(axis=1)
op = [(usd_jpy['Open'].iloc[0] + usd_jpy['Close'].iloc[0])/2] * len(usd_jpy)
for i, c in enumerate(cl[:-1]):
    op[i+1] = (op[i] + c)/2
dataset = np.vstack([op, cl, usd_jpy['High'], usd_jpy['Low']])
hi = dataset.max(axis=0)
lo = dataset.min(axis=0)
usd_jpy['Open'] = op
usd_jpy['High'] = hi
usd_jpy['Low'] = lo
usd_jpy['Close'] = cl
usd_jpy = usd_jpy.dropna()

mpf.plot(usd_jpy, type='candle', savefig='heikinashi.png', closefig=False)
```
![heikinashi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585573/af60a76f-e3df-0659-7e58-97adc6330b89.png "平均足")
未経験からCCNA取得までの道のり　ver2

OSI参照モデル・TCP/IPモデル

✳️OSI参照モデル（open systems interconnection）
ネットワークで必要とされる機能を７つの階層（レイヤ）に分類した通信の基本モデル！
でも今は、TCP/IPモデルを使うことがほとんど！

レイヤ
７　　　　　　アプリケーション層
６　　　　　プレゼンテーション層
５　　　　　　　セッション層
４　　　　　　トランスポート層
３　　　　　　　ネットワーク層
２　　　　　　　データリンク層
１　　　　　　　　　物理層

🚩物理層：
データの伝送に使用するケーブルなど、ネットワークに関する物理的な仕様を定める。
それらの仕様に従って、コンピューターとケーブルを接続し、送信されてきたデータをコンピューターが理解する「０」「１」のビット列に変換！

🚩データリンク層：
１つのネットワーク内でデータを正しく宛先のノード（機器）へ送信するための取り決め！
具体的に、データの送信先や宛先の識別方法、エラー発生時にの対処方法などを定めている。
データの宛先を示すために、物理アドレス（LANカードなどのNW機器に付与されている個別の識別番号）を使用する。

🚩ネットワーク層：
異なるネットワーク間でデータの転送を行うための取り決め！データの宛先がめっちゃ離れててもネットワーク辿っていくと宛先へデータを届けれる！
データの宛先を示すために論理アドレス（IPアドレスなど）を使用する・
ネットワーク同士を繋いでデータを転送するNW機器がルータ！
ルータは論理アドレスを見て、どこに転送するべきか決定する！これがルーティング！

🚩トランスポート層：
NW層が送り出したデータを宛先のコンピューターのアプリケーションに届ける！！
アプリケーションは番号で識別する！
通信の信頼性を確保！しっかり届いているか確認する。届いていなければ再送する。

🚩セッション層：
アプリケーションによる通信全体のこと！
なんか調べるときに、「webブラウザ起動して、URL打ち込んでENTERおしたら通信が始まってページが全部表示されたら通信が終了する」
この一連の通信がセッション！
webブラウザで同時に複数のページを開いても、それぞれ正しく表示されるのは、セッションが適切に管理しているから！！
通信を行うプログラム同士の論理的な通信路の確立から終了までを管理！

🚩プレゼンテーション層：
データの表示形式を取り決め、文字、画像、動画といったデータ形式を区別！
文字化けとかしないように制御しているのがここ！！
データの暗号化とか圧縮方式も規定している。

🚩アプリケーション層：
ユーザーとのインターフェース（接点）になる層で、アプリケーションの目的に応じたサービスの提供。
例えばメールを送るとき、相手のメールアドレスや件名、本文はメールストに決められたフィールドに入力する！メール受け取る人が違うメールソフト使ってても各フィールドに件名・本文などが表示されるのは、ここでルールを取り決めているから！！

✳️TCP/IPモデル
OSI参照モデルで定めたやつが、TCP/IPモデルでは大きく４層に分類されている。
OSI参照モデルの７・６・５層がTCP/IPモデルではアプリケーション層
トランスポート層は同じ！
OSI参照モデルのNW層はTCP/IPモデルではインターネット層となる。
OSI参照モデルの１・２層がCP/IPモデルではリンク層となる！

階層の名前は違うが、機能自体はほとんど変わらない！
dockerイメージを消したい時のバルスコマンド


# コマンド
```
DOCKER_DELETE_PREFIX=hogepiyo
docker ps -a | grep $DOCKER_DELETE_PREFIX | awk '{system("docker rm -f "$1"")}'
docker images  | grep $DOCKER_DELETE_PREFIX | awk '{system("docker rmi -f "$1"")}'
docker volume ls | grep $DOCKER_DELETE_PREFIX | awk '{system("docker volume rm "$2"")}'
docker container prune -f
docker volume prune -f
docker network prune -f
docker image prune -f
```


## 概要
頻繁に特定のdockerイメージを作り直す時に色々消し去るのによく使っているコマンドです。
便利ですがとても強力なので１行ずつ解説します。

## コマンド解説

### 🔍 DOCKER_DELETE_PREFIX=？
消したいイメージの名前のプレフィクスを入力します。この行以下の処理で使用します。
それぞれの削除処理はgrepで対象を探すため`DOCKER_DELETE_PREFIX`の文字列に引っ掛かれば削除対象になりますので注意が必要です。



例）　`hogepiyo`の名前がつくイメージを消したい場合

```
DOCKER_DELETE_PREFIX=hogepiyo
```

### 削除処理⚡️　docker rm -f
`DOCKER_DELETE_PREFIX`に該当するコンテナを削除します。

```
docker ps -a | grep $DOCKER_DELETE_PREFIX | awk '{system("docker rm -f "$1"")}'
```
https://docs.docker.jp/engine/reference/commandline/rm.html


### 削除処理⚡️　docker rmi -f
`DOCKER_DELETE_PREFIX`に該当するイメージを削除します。

```
docker images  | grep $DOCKER_DELETE_PREFIX | awk '{system("docker rmi -f "$1"")}'
```
https://docs.docker.jp/engine/reference/commandline/rmi.html


### 削除処理⚡️　docker volume rm
`DOCKER_DELETE_PREFIX`に該当するボリュームを削除します。

```
docker volume ls | grep $DOCKER_DELETE_PREFIX | awk '{system("docker volume rm "$2"")}'
```

https://docs.docker.jp/engine/reference/commandline/volume_rm.html


### お掃除コマンド　🧹

#### docker container prune
停止中のコンテナーをすべて削除します。

```
docker container prune -f
```
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/container_prune/

#### docker volume prune
未使用のローカルボリュームを削除します。

```
docker volume prune -f
```
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/volume_prune/


#### docker network prune
未使用のネットワークをすべて削除します。

```
docker network prune -f
```
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/network_prune/


#### docker image prune
未使用のイメージを削除します。

```
docker image prune -f
```
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/image_prune/









## 実行例
```
miya@hamchan Hogepiyo % DOCKER_DELETE_PREFIX=hogepiyo
docker ps -a | grep $DOCKER_DELETE_PREFIX | awk '{system("docker rm -f "$1"")}'
docker images  | grep $DOCKER_DELETE_PREFIX | awk '{system("docker rmi -f "$1"")}'
docker volume ls | grep $DOCKER_DELETE_PREFIX | awk '{system("docker volume rm "$2"")}'
docker container prune -f
docker volume prune -f
docker network prune -f
docker image prune -f

72bdf6dd85f8
88136bf31109
a57cf938dc1f
e8e1d839f2d0
7ba506147581
e034d0e79a3c
Untagged: hogepiyo_web:latest
Deleted: sha256:c1f970510cd06b30cb3b4d9c38daa08c6c88ac3c81ec165aa722fd8cfdad7962
Untagged: hogepiyo_front:latest
Deleted: sha256:66fa40937eea6cc2f9e608eabe4626e7133c9c1136a380e11e17f9b701d5b005
hogepiyo-front-sync
hogepiyo-web-sync
Total reclaimed space: 0B
Deleted Volumes:
3bafe190429b9559df56fb7fa3c1c89a54c6b38a3cd192527774d8b2ed872b07
17e7645993f53e98e308cb90c9c1f0cd6bc56377f1c1a27d2f6ec5d50f8dd4e8

Total reclaimed space: 0B
Deleted Networks:
hogepiyo_default

Total reclaimed space: 0B
```
【PHPUnit】クラスファイルはどこにあるのか

PHPUnitをcomposerでインストールした際の、PHPUnitのクラスファイルがどこにあるのか。
メモ的な意味で残しておきます。
#結論：~/.composer/vendor/phpunit/phpunit/src/Framework/
``ls ~/.composer/vendor/phpunit/phpunit/src/Framework/
``
で中身をリスト表示。確認可能です。
【Unity】Unityで夜景のビルを作る

環境メモ
⭐️Mac Book Pro（Mac OS Catalina）
⭐️Unity 2019.４.２２f1

↓完成内容
![unity_complete04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/9c3b9eac-2815-ee31-c6c2-decfe4a0e1f9.png)

まず、Blenderでビルを作る
Blenderで、Cubeから長方形のボックスを作る
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/70fab8b5-befe-1cbd-ca44-b748d2d35fd2.png)


UV展開する
![004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/6deb1394-8611-5706-8a91-957417af8690.png)


ビルの窓ガラスをUV展開したテクスチャをClipStudioPaintで描く。

【ClipStudio】夜景でふわっと光るビルの窓ガラスのテクスチャを描く
https://qiita.com/nonkapibara/items/8425e2eb39b8c0487c5a
参照

Unity用にFBX形式でエクスポートする

UnityでBlenderで作成したビル（FBX形式）を取り込み、ビルをPrefabにして、配置する
![スクリーンショット 2021-07-04 16.40.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/74dd9a28-3687-46c4-776b-d93620cf6344.png)

完成！！

Blenderはこちらの記事に記載してます。
【Blender】ビルの窓ガラスが鏡みたいに反射する床を作る
https://qiita.com/nonkapibara/items/4b2da42c222c73c83616

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">🌃BlenderとUnity🌃<br>テクスチャでどこまで夜景でふわっと✨光る✨ビル🏙️の窓ガラスが出来るのか？BlenderとUnityで🏙️夜景のビル🌃を作ってみたよぉ😍<br>両方いい感じにできた💕<br><br>Blender<a href="https://t.co/cSlU4uIJHD">https://t.co/cSlU4uIJHD</a><br><br>Unity<a href="https://t.co/nYXdlbOyuy">https://t.co/nYXdlbOyuy</a><a href="https://twitter.com/hashtag/blender?src=hash&amp;ref_src=twsrc%5Etfw">#blender</a> <a href="https://twitter.com/hashtag/Unity?src=hash&amp;ref_src=twsrc%5Etfw">#Unity</a> <a href="https://twitter.com/hashtag/CLIPSTUDIO?src=hash&amp;ref_src=twsrc%5Etfw">#CLIPSTUDIO</a> <a href="https://t.co/i0oB99gzzR">pic.twitter.com/i0oB99gzzR</a></p>&mdash; non (@nonnonkapibara) <a href="https://twitter.com/nonnonkapibara/status/1411600709070385152?ref_src=twsrc%5Etfw">July 4, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
React Import error (Attempted import error: '×××' does not contain a default export (imported as '×××').)

reactで開発をしていた際にimportについてのエラーが発生したので解決方法をメモとして記録しようと思います。

# エラー内容
App.jsとinde.jsは以下のようになっている。


```react:App.js
import React from "react";

export const App = () => (
  <p>hello world!</p>
)
```

```react:index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(
  <App />,
  document.getElementById('root')
);

```
発生したエラーが以下である。

```
Attempted import error: './App' does not contain a default export 
(imported as 'App').
```


# 試したこと

App.jsのexport部分をconstからdefaultに変更したが別のエラーが発生した。


```react:App.js
import React from "react";

//constからdefaultに変更
export default App = () => (
  <p>hello world!</p>
)
```


```
'App' is not defined  no-undef.
```

# 解決法 (export constを利用する場合)
constを利用する際は、import時に{}をつける必要がある。
importの記述を App から { App } と変更する。


```react:App.js
import React from "react";

// export constを利用
export const App = () => (
  <p>hello world!</p>
)
```

```react:index.js
import React from 'react';
import ReactDOM from 'react-dom';
// App から { App } と変更
import { App } from './App';

ReactDOM.render(
  <App />,
  document.getElementById('root')
);

```

# 解決法 (export default を利用する場合)
export default を利用する際は、reactのComponentを継承してクラスを作成する。


```react:App.js
import React, { Component } from "react";

// classを作成し、Componentを継承する
class App extends Component {
  render() {
    return (
      <p>hello world!</p>
    )
  }
}
// export defaultを利用
export default App;
```

```react:index.js
import React from 'react';
import ReactDOM from 'react-dom';
// Appのまま
import App from './App';

ReactDOM.render(
  <App />,
  document.getElementById('root')
);

```

# 参考記事
[ReactのComponentについて](https://ja.reactjs.org/docs/react-component.html)
[React入門 ReactのComponent](https://ja.reactjs.org/docs/react-component.html)
Spresense用の小型CO2センサーSCD40 Addonボード

CO2センサーは割と大きいものが多くてSpresense用のAddonボードを作るのは難しかったのですが、SensirionのSCD40(SCD41)は小さくてAddonボードを作ることが出来ました。

性能的には同じSensirionのSCD30には劣りますがICタイプのCO2センサーに比べたら実用に耐えうるのでは無いかと思っています。  

SCD30 非分散型赤外線吸収法方式(NDIR)
SCD40 光音響センシング原理とセンシリオンの特許技術、 PASens® および CMOSens®技術

##センサー仕様
| 名称  | 精度  | 指定測定範囲 |
| :------------: | :------------: | :------------: | 
| SCD40  | ±(50 ppm +読み取り値の5%)  | 400 ppm ～ 2'000 ppm  |
| SCD41  | ±(40 ppm +読み取り値の5%)  | 400 ppm ～ 5'000 ppm  |

※参考 SCD30の精度
± (30 ppm + 3% MV) (25 °C, 400 - 10'000 ppm)

##SCD4xの特徴と利点
| 特徴  | 利点  |
| :------------: | :------------: |
| 最小形状 | 最大限の設計自由度 |
| 統合された相対湿度+温度センサー | 最小限の統合および生産コスト |
| リフローはんだ付け可能（SMD） | スペース効率およびコスト効率の高い組立て |
| 広い電源電圧範囲 | 外部回路不要、エネルギー損失なし | 
| 優れた機械的堅牢性 | 組立て直後の正確な読み取り | 


[CO2センサー 「SCD4x」のページ](https://www.sensirion.com/jp/environmental-sensors/carbon-dioxide-sensors/carbon-dioxide-sensor-scd4x/)

##回路図
[![](http://next-step.asia/wp-content/uploads/2021/07/CO2_TEMP_SCD40-1024x743.png)](http://next-step.asia/wp-content/uploads/2021/07/CO2_TEMP_SCD40.png)

##試作基板(未実装)
[![](http://next-step.asia/wp-content/uploads/2021/07/CO2_TEMP_SCD40_a-1024x683.png)](http://next-step.asia/wp-content/uploads/2021/07/CO2_TEMP_SCD40_a.png)

[![](http://next-step.asia/wp-content/uploads/2021/07/CO2_TEMP_SCD40_b-1024x683.png)](http://next-step.asia/wp-content/uploads/2021/07/CO2_TEMP_SCD40_b.png)

動作確認はまだやっていませんが、近日中にテストプログラムと一緒に動作確認の記事を書きます。
【Blender】ビルの窓ガラスが鏡みたいに反射する床を作る

環境メモ
⭐️Mac OS Mojave バージョン10.14
⭐️Blender2.92

Blenderで夜景のビルを作成し、床を鏡みたいに反射する床を作ります。

↓完成内容
![rendling_complete04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/bb97846a-de43-fd1b-ee48-8703b03d3299.png)

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">🌃BlenderとUnity🌃<br>テクスチャでどこまで夜景でふわっと✨光る✨ビル🏙️の窓ガラスが出来るのか？BlenderとUnityで🏙️夜景のビル🌃を作ってみたよぉ😍<br>両方いい感じにできた💕<br><br>Blender<a href="https://t.co/cSlU4uIJHD">https://t.co/cSlU4uIJHD</a><br><br>Unity<a href="https://t.co/nYXdlbOyuy">https://t.co/nYXdlbOyuy</a><a href="https://twitter.com/hashtag/blender?src=hash&amp;ref_src=twsrc%5Etfw">#blender</a> <a href="https://twitter.com/hashtag/Unity?src=hash&amp;ref_src=twsrc%5Etfw">#Unity</a> <a href="https://twitter.com/hashtag/CLIPSTUDIO?src=hash&amp;ref_src=twsrc%5Etfw">#CLIPSTUDIO</a> <a href="https://t.co/i0oB99gzzR">pic.twitter.com/i0oB99gzzR</a></p>&mdash; non (@nonnonkapibara) <a href="https://twitter.com/nonnonkapibara/status/1411600709070385152?ref_src=twsrc%5Etfw">July 4, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
窓のテクスチャは、下記ページを参照してください
【ClipStudio】夜景でふわっと光るビルの窓ガラスのテクスチャを描く
https://qiita.com/nonkapibara/items/8425e2eb39b8c0487c5a

ビルの窓ガラスが鏡みたいに反射する床を作る
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/5701d70c-9484-7e57-d75e-db218c667860.png)

床を作成する
![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/ed06f29f-c3be-2303-1847-70c4dd6a4903.png)

マテリアル のSurfaceを「Principled  BSDF」にする。
Principled (プリンシプル) BSDF とは、複数の層（レイヤ）を 1 つのノードにまとめたシェーダのこと。
メタリック「Metallic」を「1.0」（金属質）にする。
Roughnessを「0.1」（つるつるした金属質）にする。
![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/6b597c9b-55ac-de42-5d32-ac19c9a65e1b.png)

↓プロパティを拡大した図
![プロパティ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/09a7c196-1a58-a60e-4821-74d4aa7cdc59.png)

完成！！
【Docker】docker-composeコマンド早見表

| コマンド | できること |
|:-:|:-:|
| docker-compose build | イメージを構築する |
| docker-compose up | イメージの構築・コンテナの構築・起動 |
| docker-compose start | 既存のコンテナの起動 |
| docker-compose run | イメージの構築・コンテナの構築・起動・コンテナ内でのコマンドの実行 |
| docker-compose exec | コンテナ内でのコマンドの実行 |


# イメージの構築

```
# 初回の構築
docker-compose build

# Dockerfileを更新後の構築
docker-compose build --no-cache
```
▶キャッシュ

# コンテナ起動

### 起動

```
# フォアグラウンドで起動
docker-compose up

# バックグラウンドで起動
docker-compose up -d
```

### 再起動（コンテナはそのまま、ソースコードの変更を反映）

```
# フォアグラウンドで起動していた場合
docker-compose up

# バックグラウンドで起動していた場合
docker-compose restart
```

### 再起動（コンテナの再構築、ソースコードの変更を反映）

```
# フォアグラウンドで起動
docker-compose up

# バックグラウンドで起動
docker-compose up -d
```

### 再起動（Dockerfileの変更を反映）

```
# フォアグラウンドで起動
docker-compose up --build

# バックグラウンドで起動
docker-compose up -d --build
```

# コンテナ構築後の開発開始と終了

```
# 開始
$ docker-compose start

# 終了
$ docker-compose stop
```

# 後片付け

```
# 停止と削除（コンテナ・ネットワーク）
docker-compose down

# 停止と削除（コンテナ・ネットワーク・イメージ）
docker-compose down --rmi all

# 停止と削除（コンテナ・ネットワーク・ボリューム）
docker-compose down -v

# 全てを無に返す
docker-compose down --rmi all --volumes
```

# コンテナ内での実行

```
# そのまま実行する
docker-compose run --rm bundle install

# コンテナ内のターミナルに入って実行する
docker-compose exec サービス名 sh
>bundle install
```

▼参考記事▼

https://qiita.com/beanbeenzou/items/47207bb131ec5a158774
【ClipStudio】夜景でふわっと光るビルの窓ガラスのテクスチャを描く

環境メモ
⭐️Mac Book Pro(macOS Catalina)
⭐️CLIP STUDIO PAINT PRO

ここでは、Blenderで、ビルの窓ガラスをUV展開したテクスチャをClipStudioPaintで夜景でふわっと光るビルの窓ガラスのテクスチャを描きます。


まず、窓枠を描きます。
![paint-001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/2143efe3-b109-b47f-469a-b45eecfbb115.png)


窓明かりの部分を白で塗ります
![paint-002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/797e3443-dda6-abd3-a8a5-f30836350577.png)


窓の明かりを黄色やオレンジで塗ります
![paint-003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/b075f336-5d0e-b528-6265-d30800e0c510.png)

「ぼかし」や「発光」します。
![paint-004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/f9a6cd91-bf42-78cf-ff7e-27a45364afed.png)

テクスチャ完成
![スクリーンショット 2021-07-04 16.54.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/ee127bcc-d93f-9ab4-60f3-a3fda3ade90e.png)
ピアノへのインタラクティブプロジェクションマッピングの組み込み

# 完成品
[twitter](https://twitter.com/ushigai_sub/status/1410372425062129665)にて実演動画を投稿したので見ていただければと思います。
[GitHub](https://github.com/ushigai/unity_piano_pm/tree/master)に成果物がございます。

# 設計
構築図、使用デバイス・ソフトについて説明します。

## 構築図
構築図は以下の通りです。
フローを簡単に説明すると、

**　① ピアノから音声データとMIDIデータを取得**
**　　　※音声データはMIDIインターフェースを通す**
**　② 取得したデータそれぞれ、**
**　　　音声データ：Audacityで録音**
**　　　MIDIデータ：Unityでエフェクトを生成**
**　③ プロジェクタで投影**

という感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/778697/379e3bb8-d71c-2d6d-59d7-cbfbd0285ccc.png)


## 使用デバイス・ソフト
ハードウェア

|項目|規格・型番|
|-|-|
|ピアノ|CASIO Privia PX-S1000|
|MIDIインターフェース|ベリンガー UCA222|
|ケーブル類|オーディオ赤白<br>オーディオ3.5mm抵抗あり<br>HDMI<br>USB Aオス-Bオス|


ソフトウェア

|項目|バージョン|
|-|-|
|OS|Windows10 Home|
|Unity|2019.2.0f1|
|blender|2.79b|
|Audacity|2.2.2|

# PCへのMIDIデータ取得
[keijiroさんのMIDIreceiver](https://github.com/keijiro/unity-midi-receiver)を使用させていただきました。

発案当初は、ピアノ → Python → C# → Unity というようにPythonをかませてMIDIデータをUnityに処理させようと考えていました。しかし、**PythonをかませるとUnityでの動作がめちゃくちゃ遅くなる**問題がわかったり、**C#だけでMIDIを読み込むのが結構楽**ということがわかり廃案となりました。

<!--
PythonでのMIDIデータ取得は[別の記事]()でまとめたので、参照していただければと思います。
!-->

Unity内で実行するとMIDI ReceiverのインスペクターからC#スクリプトの挙動が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/778697/aa326a9e-f1e3-fd16-cc86-00cafeb5014e.png)

# Unity内でのMIDIデータな処理

## C#スクリプトをかく
MIDIデータは例えば、

`s(144) d(60, 127) from 3016879824`

というように構成されておりそれぞれ

`s("144：on
　　128：off") 
d("音高：21~108", 
　"ベロシティ")
from "デバイス名"`

となっています。

Unity内で簡易的な鍵盤を作成し入力したMIDIデータ（21～108）までの数値それぞれに対応した座標からパーティクルが出てアニメーションが再生されるようにC#スクリプト`ParticleTrigger.cs`を書きました。パーティクル射出座標指定とアニメーション再生について、1オクターブごとに制御したほうが絶対よかったのですが、狂った私は88分岐のswitch case文を書きました。
↓ 88分岐の一部（ぜったいもっといいやり方がある気がする……）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/778697/4a1ba9f8-5d0d-4594-6b51-ee9c52cec94b.png)



## パーティクル
パーティクルは雰囲気良さげのマテリアルを選んで、射出角度や速度がランダムにばらけるようにカーブの調整を行いました。
↓ パーティクルの生存期間の速度カーブ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/778697/31fb20e5-492a-3f1c-c583-1b63008ca73c.png)


↓ 完成品
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/778697/bac265d5-cfaf-b78c-578e-196321cc803f.png)

## アニメーション
またパーティクルのほかに鍵盤を光らせるアニメーションも作成しました。
とはいっても、打鍵の瞬間にパッと明るく光ってゆっくりと消えていくような簡素なアニメーションです。

![Videotogif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/778697/6d31307f-7101-c2c7-5ca7-4132e0f35cc5.gif)
図解 Cygwin、MinGW、MSYS、WSL系列

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43992/29fc1115-a859-8f42-a75c-390164da0131.png)

メンテナで行分け。最終更新日はTAGベースなので異論は認める。
フォークの線は一応後継側のサイトに準拠した、うえで大胆に省略（Kaiに怒られるけどな！）。

## 一言コメント
詳細は本家かWikipediaへどうぞ、

### Cygwin
古参。Redhatがメインメンテナ。いまでもメンテナンスされている。
cygwin1.dllを挟んでLinux APIコールする。準拠度高く、動作が遅い。

### MinGW
Cygwinからフォーク。
GNUツールのWindowsネイティブバイナリを提供。もうメンテされてない。

### MSYS
Cygwinからフォーク。
MinGWを使いやすいようにPOSIX互換レイヤーを提供[^1]。もうメンテされてない。

### Mingw-ｗ64
停滞したMinGWからフォーク。わりと個人プロジェクトぽい始まりかた。
ReactOSとか懐かしいすね。

### MSYS2
停滞したMSYSからフォーク。Pacman大正義。
RubyInstaller2がMSYS2経由でMingW-w64に依存してたりする[^2]。

### git bash
githubがメンテナ。途中でMSYSベースからMSYS2ベースに切り替え。コミットログ追うのつらかった。

### WSL
Microsoftがメンテナ。1はWindows API拡張をコールしてたが、2はVM方式でアプローチ全然違う。
WSL1死んでないよとかの突っ込みは犬に食わせる方向で。

## 用語定義
### POSIX互換レイヤー
Windows上でUNIXライクシステムの動作を再現する技術。ぶっちゃけbashぽく動かせるか。
Cygwin系とWSL系では機構が全く違うので、一緒くたにするのはかなり乱暴。

### GNU toolchain
GNUツールを使うための技術。特にコンパイラ周り。
互換レイヤー上で動かしたりネイティブで動かしたりVMで動かしたりいろいろ。

[^1]: Autotoolsが動くようにしたかった。
[^2]: node-gypがC++コンパイラに依存するようなもの。
関数従属について

## 関数従属
- 概要...ある属性xの値が決めると他の属性yの値が一意に決まる関係のことを関数従属と呼ぶ。属性xのことを独立属性(決定項)といい、属性yを従属属性(従属項)という。関数従属に着目することで、正規化することが重要。

- 表記
    - x -> y (xならばyと読む) : xに対して単一のyが決まる場合の表記
    - x ->-> y : xに対して集合yが決まる場合の表記
- 独立属性(決定項)...ある値を決める値。属性xのこと
- 従属属性 (従属項)...独立属性によって決まる値。属性yの事
- 例) 顧客ID(決定項)が決まる時, 顧客名(従属項)が一意に決まる

## 記事の移転

この記事は以下のブログに移転しました

https://yukiotechblog.com/db-functional-dependancy/
How to install the latest openjdk/jre using apt on Ubuntu

Firstly, Check whether your environment has already installed Java or not:

```bash
[Ubuntu: ~]$apt list --installed | grep -i "jdk"

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

openjdk-8-jdk-headless/focal-updates,focal-security,now 8u292-b10-0ubuntu1~20.04 amd64 [installed,automatic]
openjdk-8-jdk/focal-updates,focal-security,now 8u292-b10-0ubuntu1~20.04 amd64 [installed]
openjdk-8-jre-headless/focal-updates,focal-security,now 8u292-b10-0ubuntu1~20.04 amd64 [installed,automatic]
openjdk-8-jre/focal-updates,focal-security,now 8u292-b10-0ubuntu1~20.04 amd64 [installed,automatic]
```

Since openjdk-8-jdk/jre is too old, uninstall the all old openjdk/jre:

```bash
[Ubuntu: ~]$sudo apt --purge remove openjdk-8-jdk
[Ubuntu: ~]$sudo apt --purge remove openjdk-8-jre
[Ubuntu: ~]$sudo apt --purge remove openjdk-8-jdk-headless
[Ubuntu: ~]$sudo apt --purge remove openjdk-8-jre-headless
...
```

Install jdk as follows:

```bash
[Ubuntu: ~]$sudo apt install default-jdk
```

Check the installed version:

```bash
[Ubuntu: ~]$java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)
```

For setting ``JAVA_HOME``, you need to make sure where the jdk/jre is installed by ``apt``.

```bash
[Ubuntu: ~]$sudo update-alternatives --list java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
```
``/usr/lib/jvm/java-11-openjdk-amd64`` is ``JAVA_HOME`` path. Because you already got the path where JDK has been installed as the above, set ``JAVA_HOME`` and ``PATH``:

```bash
[Ubuntu: ~]$echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
[Ubuntu: ~]$echo 'PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc
[Ubuntu: ~]$grep -i java ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
PATH=$PATH:$JAVA_HOME/bin
```

Apply the path:

```bash
[Ubuntu: ~]$source ~/.bashrc
[Ubuntu: ~]$env | grep -i "java"
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
...
:/usr/lib/jvm/java-11-openjdk-amd64/bin
```
AWS AmplifyでデプロイしたNext.js(SSRアプリ)が503エラーを出した時

実装もある程度できたし一度環境に乗せてみるか。。。
↓
デプロイ完了！早速公開URLを確認！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309466/7202a558-5444-d9dc-112c-067f94de90f3.png)
……。

#なんやかんや調べて


https://dev.to/marcostreng/comment/1ekd1

現時点ではAmplify側がWebpack5に対応できてないという可能性を疑う

#対応(2021/07/04時点での話)
```next.config.js
module.exports = {
  ....,
  webpack5: false,  ← 追記
}

```


next.jsにWebpack5を使用させないようにする

私はこれで解決しました。
GrafanaでPrometheusを可視化する

## 概要
GrafanaでPrometheusのメトリクスを可視化する。

## Version
- [Grafana version 7.5.9](https://grafana.com/grafana/download/7.5.9)

## 目次
- [[目次] Prometheusで監視システムを作る with Docker](https://qiita.com/Esfahan/items/7dc780501f418a71ad9d)

## 前提
以下の手順でPrometheus, Grafana環境を構築していることを前提とする。
[Prometheus + AlertManager + Grafana + Node Exporter with Docker](https://qiita.com/Esfahan/items/0feaedfd771f49ac7ee4)

## Datasourceを追加する
http://example.com:3000
GrafanaのUI画面で、以下の赤枠のDatasourceをクリックする
![Screen Shot 2021-07-04 at 14.37.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105936/e7144ef7-8d76-407f-fc82-bdb94a59d4e9.png)

PrometheusをSelect
![Screen Shot 2021-07-04 at 15.49.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105936/a3bb66c0-10f9-4a22-64d9-478bd6ff7f94.png)

赤枠の箇所にPrometheusのURLを入力する。
![Screen Shot 2021-07-04 at 15.49.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105936/5c1519f1-e081-c541-ecf8-4bad8edc9606.png)

「Save&Test」をクリックし、「Data source is working」と表示されればOK。
![Screen Shot 2021-07-04 at 14.37.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105936/d2f159ce-7a9a-85b0-1a9a-bef019516a01.png)

## Dashboardの作成
Create -> Dashboardをクリック
![Screen Shot 2021-07-04 at 14.37.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105936/432a79ca-9225-2acf-aa79-1ac88cb80303.png)

「Add an empty panel」をクリック
![Screen Shot 2021-07-04 at 17.57.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105936/7a8ebba2-bed4-466a-cbbb-2036c9c3761d.png)


Metrics browserに可視化したいPromQLを入力する。そうすると以下のようにグラフが表示される。
Panel optionsのtitleにこのpanelの名前を入力し、右上のApplyをクリックして保存する。
![Screen Shot 2021-07-04 at 15.58.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105936/c45dc578-2cad-9971-f3a6-3750634e73ba.png)

そうすると、Dashboardにグラフが追加される。ちなみに、右上の保存ボタンを押さないとsaveされないので注意。
![Screen Shot 2021-07-04 at 14.47.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105936/236af62e-a657-e1a8-4570-72e8c5983bc7.png)

あとは可視化したいPromQLをひたすら登録していくだけ。
Flask環境構築　anaconda windows10　postgreSQL

環境構築
conda create -n <環境名>

仮想環境有効化
activate <環境名>

仮想環境無効化
deactivate

pip install flask==1.1.2

作成した環境一覧
conda env list

インストールしたパッケージ一覧
conda list

環境の削除
conda remove -n <環境名> --all

conda と pip の両方で重複しているパッケージの表示
conda list | cut -d ' ' -f 1 | sort | uniq -d

ベースデータベースをローカルに作成
initdb -D my_db

ここで、postgresのサーバーモード/インスタンスを起動します。
pg_ctl -D my_db -l logfile start
Symfony4で設定ファイルを定義してみる

### Symfony4でパラメーターなどを一つの設定ファイルで定義したかったので、その内容をまとめる。

以下に設定ファイルを作成する

```yaml:config/parameter.yaml
user:
    age: 8
```
BaseContorollerを作成して、各Controllerはそこから継承するようにする

```php:src/Controller/BaseController.php
<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;

abstract class BaseController extends AbstractController
{
    // 後ほどメソッドなどを定義していく
}

```

```diff_ada:src/Controller/UserController.php
diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php
index de63605..2450323 100644
--- a/src/Controller/UserController.php
+++ b/src/Controller/UserController.php
@@ -2,16 +2,16 @@

 namespace App\Controller;

+use App\Controller\BaseController;
 use App\Entity\User;
 use App\Service\UserService;
 use App\Form\UserType;
-use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Annotation\Route;
 use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;

-class UserController extends AbstractController
+class UserController extends BaseController
 {
     /**
      * @Route("/user", name="users")
     public function index(UserService $user_service): Response
     {


```
BaseConrollerのコンストラクターで、conf情報を持つ変数を設定する（ついでにその変数を取得するメソッドも定義する）

```php:src/Controller/BaseController.php
use Symfony\Component\Yaml\Yaml;

abstract class BaseController extends AbstractController
{
    protected $yaml_info = '';

    function __construct() {
        $yaml_file = file_get_contents("../config/parameter.yaml"); // 読み込むyamlファイルを指定します。
        $this->yaml_info = Yaml::parse($yaml_file);
    }

    public function getServiceConfig() {
        return $this->yaml_info;
    }
}
```
各コントローラーで設定ファイルの内容を取得できるか確認してみる。

```diff_abap:src/Controller/UserController.php
class UserController extends BaseController
{
    /**
     * @Route("/user", name="users")
     */
    public function index(UserService $user_service): Response
    {
        $users = $user_service->getUsers();

+        $tmp = $this->getServiceConfig();
+        var_dump($tmp); // 結果を出力します。
+        exit;
    
        return $this->render('user/index.html.twig', [
            'title' => 'ユーザー一覧',
            'data' => $users,
        ]);
    }
```

⇒取得できていそうだったので、問題なし。
モデルのチューニング-ハイパーパラメータチューニング(Hyperparameter Tuning)

## ハイパーパラメータ(Hyperparameter)とは

モデルをフィッティングする前に指定しなければならないパラメータをハイパーパラメータです。
つまり、モデルのフィッティングによって明示的に学習することができないパラメータです。

例えば、

* 線形回帰：パラメータ
* リッジ/ラッソ回帰：アルファ値
* k-NN：n

などがハイパーパラメータです。

## ハイパーパラメータチューニング(Hyperparameter Tuning)

ハイパーパラメータをチューニングするには以下が必要になります。

* 多数の異なるハイパーパラメータ値を試す
* すべてのパラメータを別々にフィットさせる
* それぞれの性能を見る
* 最も性能の良いものを選ぶ
* 交差検証が不可欠

## GridSearchCV

ハイパーパラメータチューニング手法として、グリッドサーチ(Grid Search)があります。
sklearn.model_selectionモジュールのGridSearchCVクラスで処理できます。

```python
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import GridSearchCV

c_space = np.logspace(-5, 8, 15)
param_grid = {'C': c_space}

logreg = LogisticRegression()

logreg_cv = GridSearchCV(estimator=logreg, param_grid=param_grid, cv=5)

# Fit it to the data
logreg_cv.fit(X, y)

print("Best Logistic Regression Parameters: {}".format(logreg_cv.best_params_)) 
print("Best score is {}".format(logreg_cv.best_score_))
```

出力：

```text
Best Logistic Regression Parameters: {'C': 3.727593720314938}
Best score is 0.7708333333333334
```

## RandomizedSearchCV

大きなハイパーパラメータ空間の検索や、複数のハイパーパラメータを扱う場合、GridSearchCVの計算量が多くなります。
その場合RandomizedSearchCVを使用します。
指定された確率分布から、一定数のハイパーパラメータ設定をサンプリングします。

```python
from scipy.stats import randint
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import RandomizedSearchCV

param_dist = {"max_depth": [3, None],
              "max_features": randint(1, 9),
              "min_samples_leaf": randint(1, 9),
              "criterion": ["gini", "entropy"]}

tree = DecisionTreeClassifier()

tree_cv = RandomizedSearchCV(tree, param_dist, cv=5)

# Fit it to the data
tree_cv.fit(X, y)

print("Best Decision Tree Parameters: {}".format(tree_cv.best_params_))
print("Best score is {}".format(tree_cv.best_score_))
```

出力：

```python
Best Decision Tree Parameters: {'criterion': 'gini', 'max_depth': 3, 'max_features': 5, 'min_samples_leaf': 2}
Best score is 0.7395833333333334
```
未経験からCCNA取得までの道のり　ver.1

IT未経験からCCNAの取得のため、
備忘録のために投稿していきます。
認識が間違っている場合など、お気軽にご指摘いただけたらと思います！




STEP1
⭐︎一週間でCCNAの基礎が学べる本
3日で読破
一週間で２周する。

STEP２
⭐︎CCNA完全合格テキスト＆問題集（白本）
一週目は、全体把握のためにとにかく読み進める。

STEP3
⭐︎CCNA完全合格テキスト＆問題集（白本）
二週目はパケットトレーサーを使いながら、細部まで理解を深める。

STEP4
⭐︎ping-tでひたすら問題を解く
全てヒットにできたら次に、全部できたらコンボまで！

STEP５
⭐︎模擬試験をとく
STEP４ができたら模擬試験を解き始める
安定して9割以上キープできるまで


並行して、毎日Qiitaに言語化してアウトプットする！
目指せ１ヶ月合格！
Power Automate Desktop実行ログのPower BIによる可視化

## はじめに
　2021/06/28のPower Automateのブログ [Advanced Power Automate RPA run log analytics with Power BI and Dataverse | Power Automate Blog](https://flow.microsoft.com/en-us/blog/advanced-power-automate-rpa-run-log-analytics-with-power-bi-and-dataverse/)で、Power Automate Desktopの実行ログを可視化する、Power BIテンプレートが公開されました。

### 設定の説明動画
　[同ブログ](https://flow.microsoft.com/en-us/blog/advanced-power-automate-rpa-run-log-analytics-with-power-bi-and-dataverse/)の中の「setup video can be found here.」の動画説明を見ると方法がわかります。
　この動作を確認しましたので、以下概要を記します。

### テンプレートファイルのダウンロード
「Download the dashboard」から、Power BIのテンプレートファイル（**.pbit）をダウンロードし、実行します。各自の環境を設定し、可視化ができたら、::.pbixのファイル形式で保存します。


### 起動時の2つのURL指定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/e711a2a8-7577-1d3e-cc62-0d4b37720837.png)

1つめはDetaverse API URLの設定です。

Power Platform管理センター [aka.ms/PPAC](https://aka.ms/PPAC)より、PADが動く環境を選択、上部の[設定]、右下の「リソース」から「すべてのレガシ設定」を選択します。
「設定」から「カスタマイズ」/「カスタマイズ」を選択、右下の「開発者リソース」し、左上の「サービスのルートURL」にあるURLをコピーして設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/74ba7881-da07-a24d-028f-8767110e706f.png)

2つめは、Power Automateのフローの管理画面を開きます。
左メニューのマイフローを選択し、URLの「/flows」よりも左側をコピーして設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/14277cf0-3f5c-15ae-2b69-f9ff4d965dfb.png)

Webコンテンツへのアクセスでは、組織アカウントでサインインを行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/d9bdcb74-82d6-5292-9c65-97218c534566.png)

プライバシーレベルの画面では、2つのURLの入力があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/8da30b1e-1b58-40e2-f6c6-d132cb0cde0c.png)

2つめは、プルダウンから末尾が「/api/data/v9.2」となっているものを選びます。
右の選択は、どちらも「組織」です。

接続ができたら、モデリングにデータが読み込まれ、可視化したデータが読み込まれます。

### 可視化について
　同ブログによると、本テンプレートは、サンプルでありノンサポートとのことです。
一部の日本語のアクション名は文字化けしていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/d6301294-6e6b-f8ae-a54b-beb088b389b0.png)

　それでもデスクトップフローの実行ログや、実行時間、実行が成功したか否かなど、一覧で見ることができ、とても便利と思いました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/e5cf9452-35d5-8653-9ec2-6005a74d0a65.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/d5c3581c-ba9c-ca9a-3d93-674d2c33a9fc.png)


## おわりに
　このようなPower Platform内での連携できるというのは、可視化、自動化、アプリと揃いってるPower Platformならではと思います。とても便利ですね。
OBS+キャプチャボード(HSV321)で画面が映らないときの確認内容

OBS Studioとキャプチャボードを使用して、
**ゲーム画面(Switch)がWindowsPCにうまく映らない**ときの
確認内容についてまとめてみました。
(過去にはゲーム画面表示に成功したが久しぶりに試すと画面映らない、といった環境での確認内容です)

確認した項目は以下です
 1. デバイスマネージャーで認識されているか確認
 2. HDMIケーブルを確認
 3. USBケーブルを確認 
 **4. OBS Studioにて映像キャプチャデバイスの再選択←これでOKでした**
***


## 1. デバイスマネージャーで認識されているか確認
 - 画面左下のスタートボタン（窓のアイコン）上で右クリックする。
 - 「デバイス マネージャー」をクリックする。
 - 「サウンド、ビデオ、およびゲーム コントローラー」を見る。
 - 製品名が表示されていることを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1665304/12fc5ed7-cba7-418a-2321-9c58b5f62b6e.png)

## 2. HDMIケーブルを確認
 - 抜き差ししてみる
 - 予備のHDMIケーブルがあれば交換してみる
 
## 3. USBケーブルを確認
 - 抜き差ししてみる

## 4. OBS Studioにて映像キャプチャデバイスの再選択
1.～3.までの確認項目では上手くいかなかったため、
ダメもとで以下を試してみたところ上手くいきました。

 - ソース→映像キャプチャデバイスをダブルクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1665304/ba607ba4-9c56-5994-af2a-16d37dd6f74c.png)

 - デバイスをクリックし、いったん別のデバイス(OBS Virtual Cameraなど)を選択したうえで、再度本来のデバイス(MiraBox VIdeo Capture)を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1665304/1fe61072-4cc0-75a9-9b9a-301219e599e2.png)

上記でうまく表示されるようになりました。
(OBSの設定方法については色んなサイトに記載があるのでそちら参照願います)
【:is(a, b, c)】CSSセレクタで複数条件を短く指定する

# 説明

_※説明の為に単純化してるので意味はありません。`:nth-child`とかは使いません。_

```html
<ul class="parent-1">
  <li class="child-1">a</li>
  <li class="child-2">b</li>
  <li class="child-3">c</li>
</ul>

<ul class="parent-2">
  <li class="child-1">a</li>
  <li class="child-2">b</li>
  <li class="child-3">c</li>
</ul>
```

この`parent-1`以下の`child-1`, `child-2`だけ指定したいとする。
コンマで複数要素を指定できるが、↓のように書くと`parent-2`の`child-2`まで指定されてしまう。

```css
.parent-1 .child-1, .child-2 {
  color: orange;
}
```

なので、このように書かなきゃいけない。
2個だからまだいいけど増やせば増やすほど行が増える。

```css
.parent-1 .child-1,
.parent-1 .child-2 {
  color: orange;
}
```

# :is(a, b, c)

```css
.parent-1 :is(.child-1, .child-2)) {
  color: orange;
}
```

`.parent-1`以下の`.child-1`と`.child-2`だけ色が変わりましたね。
Chrome 88から使えるらしい。

(本当は`:not(:not(a))`とかいう頭おかしいことドヤ顔で書いてたんだけどコメントで`:is()`を教えていただきました。ありがとうございます。死にたい。)

[:is() (:matches(), :any()) - CSS: カスケーディングスタイルシート | MDN](https://developer.mozilla.org/ja/docs/Web/CSS/:is)
AWS認定をOnVueで受検するときの文字サイズ

「AWSセキュリティ専門知識」に続いて3つめを今日取りました。今日の収穫は「OnVue」の文字サイズを変更する方法。もうさ、老眼始まってるからさ、デフォルトの文字サイズじゃあ、きっついのさ。なんか、WEBCAMに超絶接近して目を凝らしていたら、いつものとおり試験官が注意してきたんだけど、今日の人は気が利いていて、「**Ctrl+プラス記号**で文字サイズ大きくできるよ」って英文チャットで教えてくれた。すげえ、神。マジカミ。ググっても出てこなかったんだよね。「OnVue 文字サイズ 変更」とか、必死に調べたんだけど。

調べてもなかなか出てこない情報なので、きっとほかにも困っているご老体がいると思うので、声を大にしてお伝えします。

### OnVueの文字サイズは「Ctrl+プラス記号」でおっきくできるよ！
セマンティクスの狂ったマークダウンしちゃってごめそ。すごく・・・大きいです・・・
python matplotlib 3Dグラフ 直方体の描画

matplotlib 3Dグラフに直方体を描画する

#実行サンプル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423803/8c113aba-dc94-19d9-f491-7f7674f42294.png)


#実行環境
python3.7 window10

#実行手順
windowsコマンドラインで python実行

#ソースコード
```
import numpy as np
from mpl_toolkits.mplot3d.art3d import Poly3DCollection, Line3DCollection
import matplotlib.pyplot as plt
points = np.array([[-1, -1, -1],
                  [1, -1, -1 ],
                  [1, 1, -1],
                  [-1, 1, -1],
                  [-1, -1, 1],
                  [1, -1, 1 ],
                  [1, 1, 1],
                  [-1, 1, 1]])
Z = points
Z = 10.0*Z
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
r = [-1,1]
X, Y = np.meshgrid(r, r)
ax.scatter3D(Z[:, 0], Z[:, 1], Z[:, 2])
verts = [[Z[0],Z[1],Z[2],Z[3]],
 [Z[4],Z[5],Z[6],Z[7]],
 [Z[0],Z[1],Z[5],Z[4]],
 [Z[2],Z[3],Z[7],Z[6]],
 [Z[1],Z[2],Z[6],Z[5]],
 [Z[4],Z[7],Z[3],Z[0]]]
ax.add_collection3d(Poly3DCollection(verts, facecolors='cyan', linewidths=1, edgecolors='r', alpha=.20))

plt.show()


```

#メモ　
matplotlibの以下を使用。
art3d Poly3DCollection


#参考資料
https://www.pythonpool.com/matplotlib-draw-rectangle/
PupSQLiteを使ってみた

## PupSQLiteをダウンロード
窓の杜からダウンロード
https://forest.watch.impress.co.jp/library/software/pupsqlite/

![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1726717/af02da62-386b-f5a4-c9e4-f23d7930a04b.png)


## ダウンロードフォルダを解凍
デスクトップ等に解凍
![2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1726717/74d378b2-d1e8-68d8-197f-1c9182712c6c.png)

## PupSQLiteを起動
PupSQLite.exeをダブルクリック
![3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1726717/466a6390-022b-ba6b-1e1d-03e550dd9c91.png)

## 『開く』からDBを選択
DB情報が読み込まれました
![4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1726717/acbc5e62-3cfc-4ac7-0164-9de5d1109e2b.png)

## 『SQL文入力』からSQLを実行
![5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1726717/0dc84d86-cfb1-88e7-3f00-c814a38ead0e.png)


## 感想
JupyterLabでpythonを勉強する時に、SQLiteは非常に有効です。
PupSQLiteをダウンロードしてデータ確認も簡単にできる。
AWS 「An error occurred (UnauthorizedOperation)」 の後に続くエラーメッセージをデコードする

# エンコードされたメッセージ

AWS CLI を利用してリソースの操作を行いたいとき、権限がなく以下のようなエンコードされたメッセージが表示される場合があります。

```
An error occurred (UnauthorizedOperation) when calling the StartInstances operation: You are not authorized to perform this operation. Encoded authorization failure message:AVb2wicCYlRgF_-ClFpJI0Frlc...
```

# デコードする

以下のようにデコードし、読みやすく整形できます。

```
$ aws sts decode-authorization-message --encoded-message AVb2wicCYlRgF_-ClFpJI0Frlc... \ 
| sed -e 's/"{/{/g' -e 's/}"/}/g' -e 's/\\//g' | jq .

{
  "DecodedMessage": {
    "allowed": false,
    "explicitDeny": false,
    "matchedStatements": {
      "items": []
    },
    "failures": {
      "items": []
    },
    "context": {
      "principal": {
        "id": "XXXXXXXXXXXXX:i-yyyyyyyyyyyyy",
        "arn": "arn:aws:sts::123456789012:assumed-role/MyEC2ROLE/i-yyyyyyyyyyyyy"
      },
      "action": "ec2:StartInstances",
      "resource": "arn:aws:ec2:ap-northeast-1:123456789012:instance/i-zzzzzzzzzzzzz",
      "conditions": {
        "items": [
          {
            "key": "ec2:InstanceMarketType",
            "values": {
              "items": [
                {
                  "value": "on-demand"
                }
              ]
            }
          },
          {
            "key": "aws:Resource",
            "values": {
              "items": [
                {
                  "value": "instance/i-zzzzzzzzzzzzz"
                }
              ]
            }
          },
...
...
...
```

エンコードされたメッセージをファイルに出力し、以下のように実行することも可能です。

```
aws sts decode-authorization-message --encoded-message  file://error_message.txt \ 
| sed -e 's/"{/{/g' -e 's/}"/}/g' -e 's/\\//g' | jq .
```

今回の動作検証は Linux2 インスタンスで行いました。`jq` コマンドのインストールは以下の記事を参考にさせて頂きました。

https://qiita.com/wnoguchi/items/70a808a68e60651224a4

# 参考記事

https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-not-auth-launch/

https://dev.classmethod.jp/articles/sts-decode-authorization-message/

https://qiita.com/wnoguchi/items/70a808a68e60651224a4
Install Maven into Ubuntu(WSL2)

In this article, I write down how to intall Maven into Ubuntu(WSL2). I don't explain what Maven is. If you want to know it, please read [Maven – Welcome to Apache Maven](https://maven.apache.org/) page.

At the fist, you need to update your Ubuntu repogitory to the latest using the following command:

```bush
[Ubuntu: ~]$sudo apt update
```

Then, upgrade Ubuntu:

```bush
[Ubuntu: ~]$sudo apt upgrade
```

Check that OS is upgraded/updated as follows:

```bash
[Ubuntu: ~]$cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
```

Install maven:

```bash
[Ubuntu: ~]$sudo apt install maven
Reading package lists... Done
Building dependency tree
Reading state information... Done
maven is already the newest version (3.6.3-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
```

Check maven version installed into your enviroment:

```bash
[Ubuntu: ~]$mvn --version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.11, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "5.4.72-microsoft-standard-wsl2", arch: "amd64", family: "unix"
```

That's it!
「appendChild()が分からないんですけど」に対する視覚的な教材

## 概要
 公式リファレンスなど、文章だけでは理解が難しいプログラミング初学者に向けた動的な教材。
特に、DOMの構造への理解を促進させるのが目的。

## 教材
<p class="codepen" data-height="700" data-default-tab="html,result" data-slug-hash="qBmOPNp" data-user="krkrkrrn" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/krkrkrrn/pen/qBmOPNp">
  </a> by krkrkrrn (<a href="https://codepen.io/krkrkrrn">@krkrkrrn</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

## 指導の方針
### DOMの構造
 クリックした要素の中に新しい要素が追加されることを確認し、これが、子(child)を追加(append)する、appendChild()の挙動であることを説明する。
 また、DOMの構造と見た目の構造が一致しているので、chrome開発者機能等を用いて、パソコンのフォルダなどを例示しながら、階層構造について説明してもよい。
### 関数の利用
 js初学者は、要素の取得において、

```
var elem01 = document.getElementById("id01");
var elem02 = document.getElementById("id02");
...
```
のようなやり方を採用しがちである。
 次のステップとして、関数型プログラミングを勧める際、その使用例としても利用できる。
適宜、 `console.log(event.target)` などを挿入して説明すると理解されやすい。

## 使用上の注意
 特にありません。
 Slackで共有する際は、コピペしてHTMLファイルとして保存したものをアップロードするのが楽です。

 教材として利用した際、可能であれば、利用後の感想や改善案などをコメントしていただければありがたいです。
スクラムブートキャンプを読みました

会社の推薦図書でこちらの「スクラムブートキャンプ」の本を読んだのでここに知識の定着も含めて感想を書いていきたいと思います。


https://www.amazon.co.jp/gp/product/B00DIM6BMI/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=jun69916230-22&creative=1211&linkCode=as2&creativeASIN=B00DIM6BMI&linkId=670b2db9af395da3d494ccfbbee58a7f

※Amazonのアフィリエイトリンクになってます


## アジャイル開発とは
スクラムの話をする前にアジャイル開発とはなんぞやというものを理解しておく必要がある。アジャイル開発とはざっくりと以下のような特徴をもつ開発手法のこと。

- 関係者は目的の達成のためにお互いに協力し合いながら進める。
- 利用者の反応や関係者からのフィードバックを継続的に得ながら、計画を調整する。
- 一度にまとめるのではなく、少しずつくくる。そして実際に出来上がったものが求めているものを合っているのかと頻繁に確認する。

## アジャイル開発のメリット、デメリット
アジャイル開発のメリットは、臨機応変に柔軟な対応が可能で開発スピードが早いことであり、反対にデメリットは仕様、要件ごとにスケジュールを設定するため、全体のプロジェクト像が見えづらく当初の予定とブレが生じてしまう可能性がある。 
 
# スクラムとは
スクラムとはアジャイル開発の代表的な手法の一つであり、常に進む方向を調整しながら目的を達成できるプロダクトをつくるために、全員が一丸となって行うべき、作業、会議、成果物を定めたものである。アジャイル開発手法にはスクラムの他に「エクストリーム・プログラミング(XP)」、「ユーザー機能駆動開発（FDD）」などがある。

# スプリントとは
スクラムでは最長1ヶ月までの固定の期間に区切って、繰り返し開発を行う。この固定の期間をスプリントという。開発チームはこのスプリントの中で、計画、設計、実装、テストなどのリリース判断に必要なすべてのことを行う。固定の期間を区切って開発を行うことによって、開発チームにリズムができて、集中できるようになり、プロジェクトのゴールに対する進捗が把握しやすくなったり、リスク対応しやすくなったりする。また、スプリント最終日に作業が残っていたとしても、スプリントは延長しない。これはチームのベロシティが測れなくなるからである。

# スクラムにおける成果物

## プロダクトバックログ
プロダクトへの要求を抽出し、優先順位順に並び替えたリストのこと。優先順位は、その要求が実現されたときに得られる価値や、リスク、必要性などによって決定される。プロダクトバックログは一度作ったら終わりではなく、開発期間中は常に更新され最新に保たれている必要がある。
 
## スプリントバックログ
プロダクトバックログの項目を完了させるために必要な作業の洗い出しを行う。この一つ一つの作業のことをタスクといい、そのタスクの一覧をスプリントバックログという。スプリントバックログは開発チームの作業計画のようなものである。


# スクラムにおける役割

## プロダクトオーナー
プロダクトバックログの責任者。プロダクトオーナーはプロダクトの責任者であり、プロダクトバックログの管理の他に以下のような仕事を行う。

- プロダクトのビジョンを明らかにし、周りと共有する。
- おおよそのリリース計画を定める
- 予算を管理する
- 顧客、プロダクト利用者や経営者などのステークホルダーとプロダクトバックの項目を確認したり、つくる順番や実現時期を相談する
- 既存のプロジェクトバックログの項目の内容を最新の状態に更新する
- プロダクトバックログの項目の内容を関係者が理解できるように説明する
- つくられたプロダクトが要求に合っているかどうかを検査する

## スクラムマスター
スクラムマスターはスクラムのルールや成果物を、進め方をプロダクトオーナーや開発チームに理解させ、効果的な実践を促し、スクラムがうまく機能をするように立ち回りをする。スクラムマスターは主に以下のような仕事を行う。

- わかりやすいプロダクトバックログの書き方をプロダクトオーナーや開発チームに教える
- プロダクトバックログ良い管理方法を探す
- プロダクトオーナーや開発チームにアジャイル開発やスクラムについて説明し、理解してもらう
- スプリント計画ミーティングやスプリントレトロスペクティブなどの会議の進行を必要に応じて行う
- プロダクトオーナーと開発チームの会話を促す
- プロダクトオーナーや開発チームの生産性が高くなるように変化を促す

# スクラムにおけるイベント(会議)

## スプリント計画ミーティング
プロダクトオーナー、開発チーム、スクラムマスターが参加し、そのスプリントでどのプロダクトバックログの項目を開発を行うのか検討する。基本的にプロジェクトバックログの上位の項目から開発していく。開発する量はスプリントの実績と今後の予測を参考にして決定する。この過去の実績のことをベロシティともいう。

## デイリースクラム
デイリースクラムは開発チームのためのものの会議であり、基本的に開発チームのみで約１５分程度で行う。以下３点のことを確認することによってスプリントがゴールに向かって進んでいるのか、作業の進捗はどうか、メンバー間の協力が必要ないかを確認する。

- 前回のデイリースクラムからやったこと
- 次回のデイリースクラムまでにやること
- 困っていること


## スプリントレビュー
スプリントの期間内で開発チームはリリース判断可能なプロダクトをつくるが、スプリントレビューはそのつくったプロダクトを確認する機会のこと。実際にプロダクトオーナーに操作してもらいながらプロダクトバックログの項目を確認していき、依頼通りのものであれば、完了とし、そうでなければ、プロダクトバックログに戻す。スプリントレビューでは、以下のようなことについて報告、議論を行う。

- 開発チームが完了できなかったプロダクトバックログの項目について説明する
- プロダクトオーナーがプロダクトの状況やビジネスの環境について説明する
- プロダクトバックログに追加すべき項目の有無について議論する
- プロジェクトを進めるうえで問題となる事項について関係者で議論する
- 現在の進捗をふまえて、リリース日や完了日を予測する

## スプリントレトロスペクティブ
スプリントレトロスペクティブでは、直近のスプリントでのプロダクト開発に関わる活動において問題がなかったか、もっと成果をだすためにできることをないか、検査を行い、次回のスプリント以降のアクションをプランを決定する。


<br>
基本的にスクラムはこの4つのプロセスを繰り返し行うことによりプロダクトを完成に近づけていく

<br>
この本を読んでスクラム活用したアジャイル開発についてしっかり理解を深めることができました。
TIPS2021.7


#ボタン押しっぱなし
https://dojican-lab.blogspot.com/2015/06/unity-ugui.html

#マウスポインタでオブジェクトを操作
Unity】【uGUI】Screenの座標とWorld（3D）座標の変換について
https://tsubakit1.hateblo.jp/entry/2016/03/01/020510

# ジョイスティックのアセット
https://note.com/npaka/n/neafdd3059b0c

https://assetstore.unity.com/packages/tools/input-management/joystick-pack-107631
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555658/69dea16c-8a18-4b12-7081-217c95cd47d2.png)