OmniAICreator/Qiita-1.07M huggingface dataset:
斜めデザインの作り方

過去にCSSで斜めのデザインを実装したがありましたので、そのやり方を4つほど紹介します。

~~~ html
<div class="content">
  <div class="content-inner">
      <div class="text">テキストテキストテキスト</div>
  </div>
</div>
~~~
~~~ css
.content {
  overflow: hidden;
}
.content-inner {
  padding: 100px 50px;
  transform: skew(0deg, -10deg);
  color: #111;
}
.text {
  transform: skew(0deg, 10deg);
}

~~~
親要素を `transform`で斜めにして、子要素を`transform`で傾けた分だけ戻してます。考え方も実装も簡単ですが、後に`transform`でアニメーションさせようと思った時、使いづらいです。
~~~ html
<section class="contents">
    <div class="contents_inner">
    </div>
</section>
~~~
~~~ css
.contents {
  position: relative;
  overflow: hidden;
  margin: 10% 0;
  padding: 80px 0;
}
.contents:before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 120%;
  height: 80%;
  margin: 3% -10% 0;
  background: #111;
  transform-origin: left center;
  transform: rotate(3deg);
  z-index: -1;
}
.contents_inner {
  box-sizing: boder-box;
  width: 100%;
  max-width: 640px;
  height: 100%;
  margin: 0 auto;
  padding: 100px 10px 120px;
  color: #fff;
}
~~~

疑似要素でセクション全体を斜めにしています。疑似要素なので、中身は傾斜してないのがいいですね。


~~~ html
<div class="Block1">
  <p>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
  </p>
</div>

~~~

~~~ css
.Block1 {
  clip-path: polygon(0 0, 100% 25%, 100% 100%, 0 100%);
  padding: 60px 0 10px 0;
}
~~~
こちらは型抜きのような感じで実装しています。要素を三角に切り抜いて斜めにしている。切り抜くのでその分だけ余白が必要です。
`clip-path`はIEには対応してないけれど、IEは2023年2月のパッチで完全無効化されるようなので問題ないですね。（IEよ、安らかに眠れ…）
~~~ html
<div class="Block1">
  <p>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  </p>
</div>

~~~

~~~ css
.Block1::before{
  content:"";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 40px 0 0 100vw ;
  border-color: transparent  transparent  transparent #191970;
}
~~~
これを一番使ってます。borderで三角形を作り、擬似要素（before,after）で配置する方法です。
斜めの範囲を親要素に合わせたければ、`border-width`を100%にしよう。

### 参考記事
https://www.softel.co.jp/blogs/tech/archives/5419

https://theorthodoxworks.com/web-design/slanting-background-css/

https://fastcoding.jp/blog/all/webdesign/css-diagonal-layout/#no4
【１日目】GitHubを使ってみる

# 初めに
この記事は[【個人チャレンジ】初心者が25日で強くなる Advent Calendar 2022](https://qiita.com/advent-calendar/2022/aruhitoganbaru)
１日目です。
おそらく備忘録になると思います。
### 作るアプリ１つ目
家計簿アプリを作ります。シンプルな奴です。
が、作り方は省略します。代わりに、問題解決に３時間以上かかった工程を書いていきます。

# 本日の内容

 unityのプロジェクトをGitHubに入れる

大体の人にとって基本のことなんだと思います。
これを見ている人はきっと「こんなことに時間を費やすのか」と考えるかもしれません。しかし、初心者はここで躓いてしまったので、入れ方とか使い方を忘れないように書いておきます。
ちなみに、最近のunityはGitHubにすんなり入らないっぽいです。(なんか引っ掛かります。)
どうしてもわからない人は、この記事”も”参考にしてください。（この記事はあくまでエラー解決用です。）
### GitHubとは何か
自分の作ったっプロジェクトを置いておける便利なツールっぽいです。バックアップみたいな感じでしょう。共同制作するときにも使えるようです。便利ですね。
## リポジトリとは何か
リポジトリとは、自分の作るプロジェクトを入れておく箱みたいなものです。
![画像Ⅱ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/956d4cf5-e89e-c347-a67a-dbdff64a123d.png)

リポジトリは２種類あって、サイト上にあるリモートリポジトリと、自分のパソコンにあるローカルリポジトリがあります。
![画像３.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/b315daf6-0c5f-8d12-de1e-b49ff4f53717.png)
リモートリポジトリの内容をローカルリポジトリにコピーすることをpull(プル)といいます。
逆に、ローカルリポジトリの内容をリモートリポジトリにコピーすることをpush(プッシュ)といいます。
![画像４.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/add3d220-de5e-6374-efc4-5a4826eaacd0.png)


ちなみに、ローカルリポジトリの内容にコメントをつけてリモートリポジトリに何を変更したか書いておくことをcommit(コミット)といいます。
![画像５.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/e75ccbe9-5f6f-c994-739f-57f91aa504ea.png)

基本はローカルリポジトリで作業して変更内容をcommitし、それをリモートリポジトリにpushするみたいです。
GitHub Desktopをダウンロードして、早速やってみました。

追記(2022.12.1)
ミスってイラストの「コミット」の字が（）から出てしまいましたが気にしないでください。
## トラブル発生
困ったことが起きました。GitHubは使ったことがなかったのでこんなことが起きるなんて思ってもいませんでした。GiHubは100MBを超えると受け付けてくれないとか初めて知りました。
![スクリーンショット 2022-11-29 220209.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961125/c57ac190-a96a-d5a4-1ea9-6fc326a5f10d.png)

unityのプロジェクトがあげられません。
自分はここで２日間ほど時間を取られました（パニックになってました）。
「指定されたファイルを取り除いて」とか書いてあるけど、そんなことしていいのかすごく不安でした。
## その後
消して大丈夫でした。怖い人は、引っかかったものを消さないでほかの場所（例えばgoogle driveとか）に移動しておけば安心でしょう。~~※ただし、unityプロジェクト自体を移動させると、作っていた内容が消えるっぽいです。自分は１回消えちゃいました。）~~ 
追記(2022.11.30)
これを書いている途中になぜか消えたはずのデータがもどってきました。2日目からの内容を変更するかもしれないです。
SQLにおけるSUBSTRING関数の用法と使用例

# SUBSTRING関数とは
SQLにおける、文字列を切り抜くことができる関数です。
## 使用方法
    SUBSTRING(文字列,抽出開始位置,切り取る文字数)
## 使用例
```UPDATE 回答者
   SET 国名 = CASE SUBSTRING(TRIM(メールアドレス),
              LENGTH(TRIM(メールアドレス))-1, 2)
             WHEN 'jp' THEN '日本'
             WHEN 'uk' THEN 'イギリス'
             WHEN 'cn' THEN '中国'
             WHEN 'fr' THEN 'フランス'
             WHEN 'vn' THEN 'ベトナム' END;
```
参照もとのテーブルは端折っていますが、こんなふうに使います。
構造は下記の通りです
・　指定する文字列　→ TRIM(メールアドレス）
・　抽出開始位置　　→ LENGTH(TRIM(メールアドレス))-1
・　切り取る文字数　→ 2

ネストが複雑ですが、メールアドレスの列を指定し、余白を切り取った文字列の長さの数値に-1したもの（つまり、文字列の末尾から一文字手前の位置）を指定し、そこから二文字抽出する、ということをしています。

## まとめ
・　列指定でのTRIMは必要ではないので、ないほうが良いですね。
・　関数を設定する際に算術できる点が、少しわかりづらかったです。
　　→ なので、2ではなく、1+1でも同じ意味となり、正常に動作してくれます。
　　　記述の自由度が高いことが分かりますね。

## 参考文献
2022,3『スッキリわかるSQL入門 第3版』
初心者向け「技術記事の書き方」

## イントロ

:sob: 技術記事を書いてみたいけど書き方がよくわからない
:joy: 少し書いてみたけど途中で挫折した

そんな方向けに短時間で効率的に記事を書くコツをまとめます！

## 時間を決めて書く
時間をかけて文書を書けば、よい記事になるわけではありません。
ある記事を１時間かけて書くのと、２時間かけて書くのではクオリティが２０％アップするかもしれませんが２倍にはならないのです。

**「１記事30分で書く」など制限時間を決める**ことで集中して記事を書くことができ、時間とクオリティの両方をアップすることができます。

## 構成を決めてから書く

記事を書く際「考えながら書く」人がいますが、一文書いてから次何を書こうかと考えるのは手間です。
文章を書き始める前に構成を決めてから書き始めれば、完成イメージが固まっているので入力を止めずに進めることができます。

### おすすめ記事構成
#### 1.問題解決形式
自分が解決した課題とその解決方法を書く流れ。同じ問題を抱えている人が読むので、社会貢献感が強いです。書く内容をイメージしやすいのでこの形式を最初に書くのがオススメです。
例）
- コンソールに「Unchecked runtime.lastError」が出た時の対処法
- 【SQL】EXISTS句を使って速度改善する

[問題解決形式]
課題や問題発起
↓
解決方法

#### 2.コンテンツ形式
深掘りしたいワードが存在し、ワードについてコンテンツが複数ある形式。「はじめに」で記事の方向を示し、詳細コンテンツを複数用意して、最後に「まとめ」を入れる流れ。
この構成は書き手はコンテンツの順番をあまり考える必要がなく、読者は読みたいコンテンツだけを飛ばして読むことができます。
例）
- React v18のおすすめ新機能
- 効果的にDDDを取り入れるためのポイント

[コンテンツ形式]
はじめに
↓
コンテンツ１
↓
コンテンツ２
↓
...
↓
まとめ

## ３０点の完成品を目指す
１００点を目指して素晴らしい記事を書こうとすると、完成する前に挫折したり、書き切ったとしても燃え尽きてブラッシュアップの作業が疎かになりがちです。
そのため、

**３０点を目指して、最後まで書き切る** 

という意気込みで書く方が、精神が安定し、ブラッシュアップに時間が取れるので結果的に質の良い記事が書けるとされています。


## 記事を書くことを公言する
記事を書きたい気持ちがあっても、なかなか行動に移せないのが人間というもの。
そんなときは、誰かに公言してしまいましょう。
聞いてくれた人が記事を読んでくれるかもしれないし、宣言した手前、書かざるをえない状況となり、自然と筆が進むはずです。

ちなみに毎年恒例Qiitaのアドベントカレンダーでは参加宣言ができます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1650886/2210a3c2-570a-984e-bee3-764ce8470679.png" />



## まとめ
文字数が少なくてもOK！
文章が拙くてもOK！
まずは１記事書いてみましょう。
**現実世界を変えられるのはアウトプット「行動」だけです。**


### どうでもいい所感
偉そうなこと言ってますが私も指で数えるほどしか記事を書いたことがなく、備忘録も込めてこの記事を書きました！
これからたくさん記事を書いてつよつよエンジニアを目指します✨
### 参考

https://www.amazon.co.jp/%E5%AD%A6%E3%81%B3%E3%82%92%E7%B5%90%E6%9E%9C%E3%81%AB%E5%A4%89%E3%81%88%E3%82%8B%E3%82%A2%E3%82%A6%E3%83%88%E3%83%97%E3%83%83%E3%83%88%E5%A4%A7%E5%85%A8-Sanctuary-books-%E6%A8%BA%E6%B2%A2%E7%B4%AB%E8%8B%91/dp/4801400558
Sublime Text 設定の引き継ぎ

# 前提
- Mac OS X 10.15.7
- Sublime Text Build 4143

# サマリー
- 基本的には、`Packages/User/*.sublime-settings` を移行する
    - [参考記事](https://at.sachi-web.com/blog-entry-1335.html)に沿って作業する

# 手順
* 移行元の設定ファイルを確認する
    * Finder から該当ディレクトリに移動する
        * `command+shift+g` で `~/Library/Application Support/Sublime Text 3/Packages/User/` を指定する
    * 設定ファイルを確認する
        * `Package Control.sublime-settings`
            * パッケージのインストール設定
        * `Preferences.sublime-settings`
            * 基本設定
        * `[その他].sublime-settings`
            * パッケージ毎の設定
* 移行先で `Package Control` をインストールする
    * これだけは別途対応する必要がある
    * `Ctrl + Shift + P` > `install`
* 上記ファイルを移行先にコピーする
    * 一度 Sublime を終了する
    * `Package Control.sublime-settings` をコピー後、起動する（と自動でインストールが行われる）
        * パッケージをインストールしたタイミングで設定が行われるケースがある
        * 意図せず設定が上書かれないよう、その他設定内容の移行前に済ませておく
    * 一度 Sublime を終了する
    * その他の `*.sublime-settings` をコピー後、起動する

# 設定内容
2022/11/29 時点の設定をメモしておく（良かったら参考にどうぞ）

```json:Package Control.sublime-settings
{
	"bootstrapped": true,
	"in_process_packages":
	[
	],
	"installed_packages":
	[
		"10% Too Dull for My Tastes Color Scheme",
		"AlignTab",
		"All Autocomplete",
		"Babel",
		"BracketHighlighter",
		"Case Conversion",
		"ConvertToUTF8",
		"DataConverter",
		"DocBlockr",
		"ExpandRegion",
		"Git",
		"GitGutter",
		"Markdown Extended",
		"OmniMarkupPreviewer",
		"Package Control",
		"Pretty JSON",
		"RailsGoToSpec",
		"ReactJS",
		"rspec-snippets",
		"Ruby on Rails snippets",
		"SFTP",
		"SideBarEnhancements",
		"SublimeCodeIntel",
		"SublimeLinter",
		"SublimeLinter-rubocop",
		"SublimeLinter-ruby",
		"SyncedSideBar",
		"Terminal",
		"Terraform",
		"Theme - Spacegray",
		"Vintageous"
	],
}
```

```json:Preferences.sublime-settings
{
	"always_show_minimap_viewport": true,
	"color_scheme": "Packages/Theme - Spacegray/base16-eighties.dark.tmTheme",
	"default_encoding": "UTF-8",
	"detect_indentation": false,
	"draw_minimap_border": true,
	"draw_white_space": "all",
	"fallback_encoding": "UTF-8",
	"folder_exclude_patterns":
	[
		".svn",
		".git",
		".hg",
		"CVS",
		".bundle",
		".*",
		"log",
		"node_modules"
	],
	"font_face": "Consolas",
	"font_size": 17,
	"highlight_line": true,
	"ignored_packages":
	[
		"ConvertToUTF8",
		"Vintage",
		"Vintageous",
	],
	"line_padding_top": 5,
	"save_on_focus_lost": true,
	"show_encoding": true,
	"show_line_endings": true,
	"spacegray_fileicons": true,
	"spacegray_sidebar_font_xlarge": true,
	"spacegray_sidebar_tree_xlarge": true,
	"spacegray_tabs_auto_width": true,
	"spacegray_tabs_font_xlarge": true,
	"spacegray_tabs_xlarge": true,
	"spell_check": false,
	"tab_size": 2,
	"theme": "Spacegray Eighties.sublime-theme",
	"translate_tabs_to_spaces": true,
	"trim_trailing_white_space_on_save": true,
	"word_wrap": true,
}
```
MacのターミナルからGoogle Chromeをめちゃ簡単に起動する方法

# はじめに
筆者の環境がM1なのでzshを使用しています。
bashの場合は読み替えてください。

## バージョン
macOS Monterey
バージョン 12.5.1

# 方法

ターミナルからChromeを起動する場合は、```open```コマンドを使います。
openコマンドはFinderでのダブルクリック操作といったら分かりやすいでしょうか。
ディレクトリやファイル、URLを開くことができるコマンドです。

やり方としてはいくつかあって、以下のようにURLを直接指定する方法や、
```zsh
$ open https://www.google.com/
```

アプリケーションで実行して開くこともできます。
```zsh
$ open -a 'Google Chrome'
```

とはいえ毎回、上記のコマンドを打つのも面倒くさいので、
openコマンドをchromeとしてエイリアスに設定しておくのが良いと思います。

```zsh
$ sudo vim .zshrc
```

```zsh:.zshrc
alias chrome="open -a 'Google Chrome'"
```

設定を反映させます。

```zsh
$ source .zshrc
```


あとはchromeと打つだけで、Google Chromeが起動します。
```zsh
$ chrome
```

以上で完了です。
めちゃ簡単でしたね。

# 余談

ささっとHTMLファイルを開きたいなーという時にも大変便利です。
(本当は今回これを紹介したかった)

```zsh
$ chrome index.html
```
Leetcode 633. Sum of Square Numbers

# 633. Sum of Square Numbers

https://leetcode.com/problems/sum-of-square-numbers/

## アプローチ
### Two Pointer

```java
class Solution {
    public boolean judgeSquareSum(int c) {
        if (c == 1) {
            return true;
        }
        long low = 0;
        long high = (long) Math.sqrt(c);

        while (low <= high) {
            long sum = low * low + high * high;
            if (sum == c) {
                return true;
            }
            if (sum < c) {
                low++;
            } else {
                high--;
            }
        }
        return false;
    }
}
```
VSCode で保存時に自動でコードフォーマットする

# まえがき

VSCode を使っていてコーディングしているとき、ファイル保存時に自動でコードフォーマットしてほしいと思いました。
ググってみたのですが、意外と欲しい情報がすぐに手に入らなかったのでメモがてら記載します。

なお、本記事では TypeScript のコードフォーマットをする場合を書いていますが、他の言語でも参考になるかと思います。

# やりたいこと

* VSCode でファイルを保存するときに自動でフォーマットしてほしい
* 余計なプラグインやライブラリはインストールしたくない

VSCode にはデフォルトで TypeScript のフォーマッターが入っています。なので余計なものを入れなくても設定さえすれば実現できます。
ググるとよく「プラグインを入れます」「ライブラリをインストールします」みたいな記事が出てきますが、凝ったことをしないのであればデフォルトのもので十分です。

### フォーマッターが入っていない言語の場合

VSCodeの公式によると JavaScript, TypeScript, JSON, HTML はデフォルトのフォーマッターが入っています。
https://code.visualstudio.com/docs/editor/codebasics#_formatting

その他の言語をフォーマットしたい場合は、マーケットプレイスから使えそうなプラグインを探してインストールするのが良いでしょう。
ただ、上記のリストにない言語でもデフォルトでフォーマッターが入っている場合がありました。まずは一旦下記の手順でフォーマットを試してみて、ダメならプラグインを入れるという流れが良いでしょう。

# 1. 設定ファイルを直接いじる方法

設定ファイルのjsonを直接書き換えるのが最速です。

まずは「表示」>「コマンドパレット」を押してコマンドパレットを開きます。
そこに「setting.json」と入力すると、以下のように3つくらい設定ファイルが表示されます。
一番上の「基本設定: ユーザー設定を開く」を選択します。

![スクリーンショット 2022-11-29 22.27.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27159/4e3f4782-cbff-1e34-e6e4-1cec9c6c3539.png)

そこに以下の記述を追加します。

```json
{
    "editor.formatOnSave": true
}
```

これだけでおしまいです。

# 2. GUI から設定する方法

GUIから設定する方法です。

「Code」>「基本設定」>「設定」を選択します。
すると設定画面が開きますので、さらに「テキスト エディター」>「書式設定」と進みます。
すると以下のように「Format On Save」という設定があるのでこれをチェックします。
これで保存時に自動でフォーマットしてくれます。

![スクリーンショット 2022-11-29 22.34.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27159/7072f17c-f104-0452-9f37-3c5f9663e752.png)

# 設定したのに保存時にフォーマットしてくれない場合

上記の設定をしたのに、これだけでは保存時にフォーマットしてくれないときがあります。

* フォーマッターが入っていない場合
* フォーマッターが複数入っているがデフォルトのフォーマッターを指定していない場合

適当なファイルを開いて、コードフォーマットのショートカットキー `Shift` + `option` + `F` を押してください。
すると、場合によって以下のように表示されます。

### 複数のフォーマッターがある場合

複数のフォーマッターがある場合は以下のように表示されます。

![スクリーンショット 2022-11-29 22.42.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27159/5079f721-8d89-898d-115b-8520d4ab7f75.png)

そうしたら「構成」を押してデフォルトのフォーマッターを指定してください。これで終わりです。
なお、前述の設定ファイルで指定する場合は以下のようになります。

```json
{
    "editor.formatOnSave": true,
    "[typescript]": {
        "editor.defaultFormatter": "vscode.typescript-language-features"
    }
}
```

### フォーマッターが入っていない場合

フォーマッターが入っていない場合は以下のように表示されます。

![スクリーンショット 2022-12-02 9.31.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27159/ce1330d8-a9e6-6267-b2dc-92ab025c1187.png)

「フォーマッタをインストール」を押してマーケットプレイスからフォーマッターのプラグインをインストールします。

# 余談： TypeScript で ESLint に怒られない設定をいれる

参考までに、TypeScript で ESLint に怒られないフォーマットの設定方法も書いておきます。
`{}` のスペースの設定、インデント幅をスペース2つにする設定を入れておきます。

```json
{
    "editor.formatOnSave": true,
    "files.insertFinalNewline": true,
    "redhat.telemetry.enabled": true,
    "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": false,
    "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": false,
    "editor.detectIndentation": false,
    "[typescript]": {
        "editor.tabSize": 2,
        "editor.insertSpaces": true
    }
}

```

# 最後に

これくらいの情報はVSCodeの公式ドキュメントにわかりやすく書いておいてくれよという気持ちでした。
球状黒鉛鋳鉄品の黒鉛球状化率と丸み係数について

# はじめに
JISのG5502 球状黒鉛鋳鉄品やG5505 CV黒鉛鋳鉄品において、組織画像から画像処理により黒鉛球状化率を測定する場合、黒鉛の形状を丸み係数というパラメータで評価します。ここで、丸み係数は次式で定義されています。

```math
丸み係数 = \frac{黒鉛の面積}{黒鉛の最大軸長を直径とする円の面積}　　　(1)
```
式(1)を画像処理のライブラリOpenCVを使って求める場合、{黒鉛の最大軸長｝を直接求める関数はありませんが、これに近い「黒鉛の最小外接円の直径」を求められる関数があります。このため、上式の分母を

```math
丸み係数の近似値 = \frac{黒鉛の面積}{黒鉛の最小外接円を直径とする面の面積}　　　(2)
```
と置き換え、「丸み係数の近似値」が「丸み係数」とほぼ同じであることを確認できれば、実用上は式(2)から丸み係数を求めればよいことになり、計算が容易にできます。そこで今回は、種々の形状の黒鉛に対して、式(1)と(2)の値を求めて比較しました。

# 検証1
JIS G5502のISO法ではISO 945-1の黒鉛形状図をもとにして黒鉛形状を分類するため、ここではISO945-1のFig.1のⅠ～Ⅵの黒鉛形状図について、個々の黒鉛に対して式(1)の丸み係数と式(2)の丸み係数の近似値を求めました。結果を下図に示します。図において縦軸は丸み係数で、横軸は丸み係数の近似値です。また、図の斜めの直線は
```math
丸み係数＝丸み係数の近似値
```
を表します。図より、丸み係数の近似値は丸み係数とほぼ一致していますが、ところどころに、直線から外れた点が見られます。これらは「丸み係数の近似値」＜「丸み係数」となっている点です。

![pic.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1729073/f2b34107-1f66-4278-9d61-eead06a5329d.jpeg)
図　ISO945-1のFig.1の黒鉛形状図の個々の黒鉛の丸み係数と丸み係数の近似値の関係

# 検証2
実際の組織画像に対して、丸み係数と丸み係数の近似値を使って黒鉛球状化率を求めたときに違いが見られるか調べました。組織画像には次のURLのsample1～3を用いました。

https://github.com/repositoryfiles/Nodularity

結果を下表に示します。下表において、二列目と三列目はJIS G5502-2022のJIS法とISO法で求めた球状化率です。四列目と五列目は式(2)の丸み係数の近似値を使って得られたJIS法とISO法による近似値です。
JIS法の近似値はJIS法に比べて、ISO法の近似値はISO法に比べて、各ファイルとも1％程度低い値になっていることが分かります。
先日
https://qiita.com/_Moony/items/ec5beeaa1def4549b09a
で書いたように、JIS G5502-2022は従来の規格に比べて球状化率が低めの値になりやすいですが、式(2)の丸み係数の近似値を使うとさらに低い値になります（わずかですが）。式(2)の丸み係数を使って球状化率を求める場合、この点を理解した上でお使いになることをお勧めします。

表　JIS G5502のJIS法・ISO法による黒鉛球状化率(%)
|ファイル名  |JIS法|ISO法|JIS法の近似値<br>（式(2)を使用）|ISO法の近似値<br>（式(2)を使用）|
|---|---|---|---|---|
|Sample1  |83.5  |86.2  |82.7  |85.9  |
|Sample2  |82.8  |89.5  |81.9  |88.8  |
|Sample3  |82.4  |87.7  |81.3  |86.2  |
Java 基本の基本から

# はじめに
自身でprogataやスクールでJavaを勉強中。学んだことをアウトプットして、より定着させるために記事にまとめていきます。継続は力なり！

# １，基本構成
- ブロック
｛　から　｝まで囲まれている部分。
- クラス
コンピュータに対して行わせようとしていることの設計図。メソッドや変数といって部品で構成されている。

- メソッド
コンピュータに対しての指示や命令の本体。いくつかの処理の組み合わせによって構成されている。
```java
pubulic class HelloWorld {
********************内側がメソッド***外側がクラス***************
    public static void main (String[] args) {
        System.out.println("Hello World!"); //処理の最後には";"をつける。
********************内側がメソッド***外側がクラス***************
} 

```
メソッドの中にある処理が上から順に実行されていく。

# 文字出力
```java
//改行あり
System.out.println("私の名前はタロウです。");

//改行なし
System.out.print("私の名前はタロウです。");

//書式を指定
System.out.printf("私の名前は%sです。","タロウ");
```
※書式指定子は他にもたくさん・・・
%s:文字列データ
%f:少数データ
%d:整数データ
%+:符号を表示
%0:データの前に０を表示
%5:小数点を含めて最小5文字表示
%5.2:整数部を5桁（空白含む）かつ少数部2桁を表示

# コメント
```
// ←処理に関係ないけど、コードを人間がわかりやすくするもの。
//　先頭に//を書くだけ！
// 私はコードを試しに実行して見たいときに、無視してほしい処理の前に書いて使うこともあります。

/*複数行のコメント*/
/*---------------------
 複数行のコメント
　-----------------------*/
```

# 変数と定数
### 変数
数値や文字列などのデータを格納する場所。箱のイメージ。
- 使用方法
①変数を宣言
②変数への代入
```java
String name; //（データ型）+（変数名）で宣言
name = "山田"; //nameに"山田"を格納

String name = "山田"; //同時にできる
```

- ルール
大文字と小文字、全角と半角などは完全に区別されるので要注意。Nameとnameなど紛らわしいので混在させないようにするのが基本。
一つのブロックの中で同じ変数名は使えない。ブロックが違えば使えるが、紛らわしいので基本は変える。
中に格納されているものがわかりやすくする。
例）
番号→num
合計値→sum
年齢→age
Stringやpubulicなど、すでに使われている単語（予約語）は使用できない。

### 定数
格納された値を更新できないようにした変数
- 使用方法
　データ型の前に"final"をつける。あとは変数と同じ。
- ルール
　定数名はすべて大文字にするのが一般的。あとは変数と同じ。
```java
final String NAME = "山田";
```

# エスケープシーケンス
特殊文字
¥t:　水平タブ
¥n:　改行
¥r:　キャリッジリターン
¥f:　改ページ
¥¥:　￥マーク
¥':　シングルクォーテーション
¥":　ダブルクォーテーション
Salesforce基礎知識

# これは何？
この記事は「[24日後に立派なSalesforceエンジニアになるWEBエンジニア Advent Calendar 2022](https://qiita.com/advent-calendar/2022/kakakaori)」の1日目の記事です。
24日後に立派なSalesforceエンジニアになるために今日はSalesforceの基礎知識（主にデータ周り）を学びます。

# オブジェクトとは
- データベースでいうテーブルのこと。
- オブジェクトには項目が存在する。
    - 項目はデータベースでいうカラムのこと。
- オブジェクトには種類がある。
    - 標準オブジェクト
    - カスタムオブジェクト
    - BigObjects
    - 外部オブジェクト

# 標準オブジェクト
Salesforceが最初から用意してくれているオブジェクトのこと。
取引先とか商談とか商品とか、一般的なビジネスにおいて使われるものが用意されている。
よく使われるものだと例えば以下のようなものがある。
|オブジェクト名|用途|
|:--|:--|
|リード|見込み顧客（問い合わせをしてきた顧客や、キャンペーンに参加した顧客）|
|取引先|ビジネスの相手となる会社|
|取引先責任者|取引先の担当者|
|商談|商談の内容（誰にいつ何をいくらで提案していて、確度どれくらいでいつ契約が決まりそうかなどの情報）|
|キャンペーン|イベントや展示会などのマーケティング活動|
|ケース|お客様からの問い合わせ内容とその対応情報|
|活動|行動（会議などの予定）とToDo（期日のあるタスク）の総称|

それぞれどんなデータが格納できるのか、どういうリレーションが張られているのか詳しくは明日以降で。

# カスタムオブジェクト
標準で用意されているオブジェクト以外で自分たちのビジネスに合わせて作るオブジェクト。カスタムオブジェクトを作るとオブジェクト名の最後に「__c」がつく。MyCustomObject__c みたいな感じ。

# BigObject
大量（１０億件以上でも安定したパフォーマンスが出るらしい）のデータを保存して管理するためのオブジェクト。BigObjectにも標準とカスタムがある。使い道としては
- 顧客に関する全てのデータの参照用
- 監査を目的とした利用状況の追跡
- アーカイブ情報の管理
などが考えられる。

## BigObjectの制限・制約
- １組織あたり作成できる外部オブジェクトは1００個まで
    - 項目の制限は組織のライセンス種類による
- インデックスを使用できる項目は5つまで
- 作成後にインデックスの編集や削除はできない
    - インデックスを変更するには新たなBigObjectを作成するしかない
- トリガーやフロー、プロセスビルダーなどの自動化プロセスは作成できない
- LightningコンポーネントとVisualforceコンポーネントのみサポートされており、詳細ページやリストビュー、レポートといった標準UIは使用できない
- ストレージの制限はバイト数ではなくレコード件数でカウント

# 外部オブジェクト
カスタムオブジェクトと同じように動作するが、外部オブジェクトは外部システムをSalesforceで持っているデータソースの定義に関連づけるための機能。この機能を使って外部データの検索と操作ができるようになる。外部オブジェクトは、Salesforce ConnectとFiles Connectで利用することができる。

## 外部オブジェクトの制限・制約
- １組織あたり作成できる外部オブジェクトは２００個まで
- １時間につき最大１０万件のデータを取得または作成することができる
- 外部のデータソースを反映するためには再同期が必要

# リレーション
オブジェクト同士を関連づけるもの。
よく出てくるものに「参照関係」と「主従関係」があり、簡単にいうと参照関係の方が繋がりがゆるくて、主従関係の方が密接。

||参照関係|主従関係|
|:--|:--|:--|
|値の入力|任意|必須（＝親なしでは子だけの存在はできない）|
|参照レコードの削除|親が削除されると子だけ残る|親が削除されると子も消える|
|積み上げ集計項目|使えない|使える|
|共有設定|親に連動しない|親に連動（＝親レコードにアクセス権がないと子にもアクセスできない）|

# レコードタイプ
各オブジェクトには「レコードタイプ」を定義することができる。レコードタイプはそのオブジェクトのデータを分類するためのもので、例えば商品というオブジェクトに「サービスAの商品」「サービスBの商品」といったレコードタイプを作ることができる。そんなの「対象サービス」みたいなカスタム項目作ればいいんじゃないの？と思ったけど、レコードタイプを分けることで以下のようなことができるようになる。

- レコードタイプごとにページレイアウトを割り当てることができる
    - サービスAの商品とサービスBの商品で、それぞれ表示する（使わせる）項目を変えることができる
- レコードタイプごとに選択リストで表示する内容を定義することができる
    - 例えばサービスAの商品の販売国は「日本、台湾、中国」から選ぶことができサービスBの商品は「イギリス、フランス、スペイン」から選ぶことができるようにするなど、異なる選択肢を用意することができる
- レコードタイプごとに進捗パターンを定義することができる

# まとめ
Salesforceを触るに当たってまず最低限知っておかなければならない知識をまとめました。
明日はよく登場するオブジェクトについて少し深掘りしながら見ていこうと思います。
Flutterでカバレッジ計測の仕方

## Flutterでのカバレッジ出力
Flutterでカバレッジを計測するには以下のコマンド

```
flutter test --coverage
```

完了すると/coverage/lcov.infoが生成される。


## カバレッジレポートのHTMLを出力

```
brew install lcov
genhtml coverage/lcov.info -o coverage/html
```
上記を実行すると以下のようなHTMLが生成される。

![スクリーンショット 2022-11-29 22.40.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412693/2a658c82-dd57-7df1-44b3-6555196189bb.png)
Leetcode 380. Insert Delete GetRandom O(1)

# 380. Insert Delete GetRandom O(1)

https://leetcode.com/problems/insert-delete-getrandom-o1/

## アプローチ
### ArrayList, HashSet

```java
class RandomizedSet {

  public ArrayList<Integer> arrayList;
    public Set<Integer> set;
    public Random rm;
    public RandomizedSet() {
        arrayList = new ArrayList<>();
        set = new HashSet<>();
        rm = new Random();
    }

    public boolean insert(int val) {
        if(set.contains(val)){
            return false;
        }
        arrayList.add(val);
        set.add(val);
        return true;
    }

    public boolean remove(int val) {
        if(!set.contains(val)){
            return false;
        }

        set.remove(val);
        arrayList.remove(new Integer(val));
        return true;
    }

    public int getRandom() {
        int idx = rm.nextInt(set.size());
        return arrayList.get(idx);
    }
}
```
C#におけるnull合体演算子 ?? の優先順位と結合規則

# 概要
本稿では，C#におけるnull合体演算子の優先順位と結合規則について，例とともに簡単に述べる．また，結合規則については演習問題を用意した．

# 詳細

## null合体演算子とは
`??` のことである．
`a ?? b` は，`a` がnullのときに `b`，そうでないときに `a` となる：

```math
a\ ??\ b=
\begin{cases}
a & (a\neq\text{null}) \\
b & (a=\text{null})
\end{cases}
```

```cs:例
int? a = null;
int b = a ?? 0;
Console.WriteLine(b);  // output: 0
```

## null合体演算子の優先順位

### 確認：演算子の優先順位とは
演算子による演算が行われる順序のことを，演算子の**優先順位**という．
例えば，掛け算 `*` は足し算 `+` よりも優先順位が高い．従って，以下に示す例の `a` の値は，16ではなく10である．

```cs:例
var a = 2 + 2 * 4;
Console.WriteLine(a);  // output: 10
```

### null合体演算子の優先順位
`??` の優先順位は**低い**．
`??` より優先順位の低い演算子は，条件演算子 `?:`，代入演算子とラムダ宣言 `=>` のみである．
以下に示す例では，null合体演算子 `??` が掛け算 `*` より左にある．しかし，優先順位は `*` の方が高いため，`b` の値は100ではなく1となる．

```cs:例
int? a = 1;
int b = a ?? 0 * 100;
Console.WriteLine(b);  // output: 1
```

## null合体演算子の結合規則

### 確認：演算子の結合規則とは
演算子の優先順位が同じである場合に，演算を行う順序を決めるための規則を**結合規則**という．
例えば，足し算 `+` と引き算 `-` の優先順位は同じである．そして，`a + b - c` という式は `(a + b) - c` という順序で計算される．このように，左から右へ順番に演算を行う演算子は**左結合**であるという．逆に，右から左へ順番に演算を行う演算子は**右結合**であるという．

### null合体演算子の結合規則
`??` は**右結合**である．従って，`a ?? b ?? c` という式は `a ?? (b ?? c)` という順序で演算が行われる．
null合体演算子の他に右結合である演算子は，条件演算子 `?:`，代入演算子とラムダ宣言 `=>` である．

### 演習問題
`(a ?? b) ?? c` と `a ?? (b ?? c)` の演算結果は同じか．同じであれば証明し，そうでなければ反例を挙げよ．

※解答は[別の限定共有記事](https://qiita.com/denkiuo604/private/c9ed8828fe6067c1e9ab)に記載している．

# あとがき
null合体演算子は便利なものですが，演算子の優先順位に注意しないと，思わぬバグが生じる可能性があります．実際，筆者はそのようなバグに遭遇したため，今回の記事を書くに至りました．記事の分量からもお分かりいただける通り，内容は至って簡素なことですが，こういう小さな知識の積み重ねが大事だと思います．

結合規則のことは，優先順位について調べているときにたまたま知り，せっかくならと思い一緒に書きました．null合体演算子は右結合なんですね．もし，まだ演習問題を解いていなければ，是非挑戦してみてください．

以上です．最後までお読みいただき，ありがとうございました．

# 参考
- [?? および ??= 演算子 - C# リファレンス | Microsoft Learn](https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/null-coalescing-operator)
- [C# 演算子と式 - C# リファレンス | Microsoft Learn](https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/)
PowerShell の 起動時の読み込み設定は、プロファイルに保存しよう

# 背景
最近以下二つをよく使うようになった。
- [Windows Terminal](https://learn.microsoft.com/ja-jp/windows/terminal/install) 
- [Visual Studio Code](https://code.visualstudio.com/)

で、そうなってくると、デフォルトターミナルとしては、PowerShell をよく使うことになる。

自宅なら特に問題ないけれど、会社だとプロキシの設定をしていないと認証周りでエラーが出る。

しかも、プロキシーがおかしい！とか言って教えてくれるわけではなく・・
- Default Credential Error
- sam build 固まる
- SSL 異常

と、症状が色々出る。
で、いい加減、PowerShell 起動時の設定をするか、と思い立って調べた記録

# 結論
## 設定ファイル（プロファイル）の場所の確認
プロンプトで、$profile と打つと、パスが分かる
```powershell: プロファイルのパス表示：現在のユーザー・現在のホストの場合
$profile
```
こんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/f01f8398-190c-4558-fe75-7d9514eb3c08.png)

:::note info
この Path 表示のところで、CTRL+Clickすれば、そのまま編集出来るので便利
:::

基本は以下だと思われる
```powershell: デフォルトパス for windows
%userprofile%\ドキュメント\WindowsPowerShell
```

:::note info
すべてのプロファイルのパスを確認したい場合
すべてって？　ユーザーとホストの組み合わせで四種類あるのです・・[詳しくはここへ](https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.2#the-profile-files)
```powershell: 
$PROFILE | Get-Member -Type NoteProperty
```
:::

## 設定ファイル（プロファイル）への設定
パスが分かったら、後はファイルを作って設定記述するだけですね

何は無くとも、プロキシの設定

```powershell: 設定例
$proxy="http://10.20.30.40:8080"
$env:http_proxy=$proxy
$env:https_proxy=$proxy
$env:ftp_proxy=$proxy
```

設定したら、PowerShell を再起動して確認

```powershell: proxy の設定確認
Get-ChildItem env:*proxy
```

ちなみに、プロファイルの作成 PowerShell なんかが、以下に記載あったりしますけど・・
自動化を考えない限りは使わない・・かなぁ、とも

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.2#how-to-create-a-profile

# プロファイルで何設定するの？
こんなところ？
## 環境変数

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-7.2

:::note info
[見た目なんかも](
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-7.2#terminal-features)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/534bba98-6e96-e09e-47a5-c0359e3f5e6e.png)


:::

## モジュールのインポート: import *

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/import-module?view=powershell-7.2

## エイリアス設定

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_aliases?view=powershell-7.2

# 小ネタ
## プロファイル不適用にしたい場合
コマンドプロンプトなどで、"-NoProfile" オプションを付けて起動
```powershell: プロファイル読み込みせず起動
powershell -NoProfile
```

## エイリアスの確認
serverless のエイリアスである、sls が動かない場合とかなら
```powershell: sls のエイリアス確認
alias sl*
```

# 最初に躓いた話
 起動時設定ファイルはどこに？

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.2

ここを見ると、以下のように、フォルダ名が古い？ままなので、フォルダがないままに動かねーって悩みました。
あと、VSCode 用の プロファイル名にもちょっと惑わされたり
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/0037f818-fbf4-530e-5e90-d5bf2aab1efb.png)

# あとがき
プロキシは、nvm/npm の .npmrc なんかもあるし・・ SourceTree でも躓くし、全部システム参照をデフォルトにしてくれないものか・・
PRを細かくするためにやったこと

### 概要
私のチームではなるべく差分の少ないPRを出すことが文化になっいて、ただ前の会社では機能ごとなど一気にPRを作成してきていたので
結構苦労して、少なくなってきているのでそのためにやってきたことを記載します。

### そもそもPRを小さくするメリット
#### わたしの体感メリット
- PRのレビューをした際に確認漏れが少なくなる。
- 修正が必要な場合に少なく戻りが少なくなる。
- レビュー側が楽になる。
#### 一般的なメリット
参考: https://khigashigashi.hatenablog.com/entry/2018/03/09/020359

### 原因
原因としては大体はどこでPRを切ったら良いかわからないからPRが膨れ上がってしまうのかと考えられます。
その他の人に関しては自分で考えてください。

### 対応策
私が行っていたのは、一旦全てを実装してPRを作ってそのPRを分割してPRを作成すると言う方法で時間はかかりますが、区切り方が身につくので非常におすすめですが、忙しい会社では厳しいとは思いますので他の方法で頑張ってください。
Tableau関連の情報発信まとめ（随時更新予定）

自分がTwitterでつぶやいてきたTipsやこだわりをまとめました。大雑把にカテゴリわけしていますが順不同です。

# デザイン面のこだわり

## VizExhibition作品でのデザインのこだわり
https://twitter.com/unbosoms/status/1516051048720646152?s=20&t=Exzzg9M-qU1g3qJvM11_VA

## 映えるダッシュボードの作り方
https://twitter.com/unbosoms/status/1470244882237526019?s=20&t=Exzzg9M-qU1g3qJvM11_VA

## パディングは大切
https://twitter.com/unbosoms/status/1378914693742358528?s=20&t=Exzzg9M-qU1g3qJvM11_VA

# 技術的な解説

## ディメンションとメジャーの違い、連続と不連続の違い
https://twitter.com/unbosoms/status/1597253141195788288?s=20&t=Exzzg9M-qU1g3qJvM11_VA

## 日付の設定についての解説

https://twitter.com/unbosoms/status/1620362939780984832?s=20&t=ZVfUtXoFlARNWxwMRh2vAQ

## 保存されたデータソースとは？

https://twitter.com/unbosoms/status/1620571161125060608?s=20&t=ZVfUtXoFlARNWxwMRh2vAQ

# VizつくりまShow2022の解説

## 予選問題
https://twitter.com/unbosoms/status/1584736516567629826?s=20&t=gPECNyPCweIA2yoLLGtxIw

## 決勝問題
https://twitter.com/unbosoms/status/1585995341836341248?s=20&t=gPECNyPCweIA2yoLLGtxIw

# 便利なtips

## 積み上げ棒グラフのソートコントロール
https://twitter.com/unbosoms/status/1262913427187486720?s=20&t=Exzzg9M-qU1g3qJvM11_VA

## ステップドカラーが便利
https://twitter.com/unbosoms/status/1387189527396052992?s=20&t=Exzzg9M-qU1g3qJvM11_VA

## ツールヒントの書式設定tips
https://twitter.com/unbosoms/status/1377611297471270921?s=20&t=Exzzg9M-qU1g3qJvM11_VA

## 書式の一括設定
https://twitter.com/unbosoms/status/1392266815355572225?s=20&t=Exzzg9M-qU1g3qJvM11_VA

## 地図のパンとズームを無効化する
https://twitter.com/unbosoms/status/1387904529165787138?s=20&t=Exzzg9M-qU1g3qJvM11_VA

## ドラッグアンドドロップで計算式を作る
https://twitter.com/unbosoms/status/1378913796123553794?s=20&t=Exzzg9M-qU1g3qJvM11_VA

## ダッシュボードでのコンテンツの表示/非表示切り替えを簡単に実装
https://twitter.com/unbosoms/status/1390257841148022792?s=20&t=Exzzg9M-qU1g3qJvM11_VA

## 日の単位の数値にすると「hh:mm」などの時間書式を反映できる
https://twitter.com/unbosoms/status/1590719804180430849?s=20&t=Exzzg9M-qU1g3qJvM11_VA

## マークの選択を無効化する
https://twitter.com/unbosoms/status/1593260624880238599?s=20&t=Exzzg9M-qU1g3qJvM11_VA

# 他のQiita記事

https://qiita.com/unbosoms/items/3c82f0688b2fa3b85cef
RTX1200を買ったので初期設定をする

# インターネットに接続するまで

自宅のPC・サーバーに外からもアクセスしたいと思ったので、この度業務用ルーターのRTX1200を中古で購入。
無線機能は、既存のものがそのまま使えると思ったのであまり気にしませんでした。

開封一番、デカい。家庭用ルーターしか使ったことなかったのでその大きさに驚き。
![IMG_20221128_190150.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448268/d7a88601-d9c8-8ffa-b5a0-1094dbd623ba.jpeg)

以前使っていた事業者さんがつけていたのだと思いますが、「さわるな！危険！」と書いてあって事業所に置いてあったのだと実感。

ルーターの設定がコンソールでできるとか想像もしていなかったのですが徐々に細かく設定していけたらと思います。

## 初期化
前の"microSD", "USB", "Download"のボタン３つをそれぞれ押しながらスイッチONで初期化する。
LAN1の適当なポートとPCをケーブルでつないで、ブラウザで"192.168.100.1"を入力。
ログインフォームが出るが何も入力せずに確認でルーターの設定画面へ入れる。初期設定はGUIでできる。
そのまま左上の「管理者向けトップページへ」をクリック。最初同様にログイン情報を求められるが、何も入力せず確認。管理者トップページへ入れる。

初期設定でID・パスワードを設定。LAN2ポートにONUからのLANケーブルを接続する。日付設定はなしでも大丈夫だった。
ブラウザで初期設定の「ウィザード」→「プロバイダ情報の設定」でWANの設定に入る。インターフェースでLANケーブルを挿したLAN２を選択して次へ行くと、回線が認識され、PPPoE接続が可能であると表示された。
「次へ」で上から二つ目の「PPPoEを用いる端末型接続」を選択、「ユーザーID」と「接続パスワード」にプロバイダで与えられたものを入力する。残りはすべて「次へ」でOK.

## 謎の接続不良？
管理画面の「ルーター機能」、「インタフェース」で「種別」がPPPoEの「状態」がUpになっていればインターネットに接続完了。
私はなぜかLAN1に接続していたPCがなぜかリンク速度"100-fdx"になって回線速度が200Kbpsになって何度も初期設定をしたのですが治りませんでした。代わりに別のPCで試しに接続すると通常通りの300Mbpsくらいになっていたので一度最初のPCを再起動。
もう一度接続しなおすと300MbpsくらいになっていたのでPC起因でちゃんと速度が出ていなかったように思われる。結局原因がわからなかった。
もし同様な症状が出て場合は再起動してみてもいいかも。

VPNの設定などもおいおいやっていきます。
IntelliJ IDEA で好きなプラグインまとめ

を書こうと思ったんですが、紹介するほどプラグインを入れていない（入れる必要性を感じていない）ので、その他細かい設定を尾ビレとして付けておきます。

### CamelCase
変数名や関数名を、キャメルケース←→スネークケース←→ケバブケース と相互に変換したい場面があります。ローカルかるグローバルへスコープを拡げたい際に小文字から大文字に変換したい場面もあるでしょう。しかし、IntelliJ IDEA デフォルトだと「大/小文字の切り替え」しかできません。

**CamelCase** はショートカットキー一発で、選択範囲をキャメルケース←→スネークケース←→ケバブケース相互に変換します。

新環境に乗り換えた際に一番最初に入れたのがこのプラグインでした。個人的には必須です。

https://plugins.jetbrains.com/plugin/7160-camelcase

### Sticky Selection
コードリーディングをするなかで、複数の変数や関数を追いかけたいことが多々あります。IntelliJ IDEA ではカーソルを当てたものと同じ変数や関数をハイライトしてくれます。（モダンなエディタや IDE ではポピュラーな機能でしょう。）

**Sticky Selection**はその機能を拡張し、一つだけでなく複数の変数や関数に対してハイライトを当てることができます。

https://plugins.jetbrains.com/plugin/7341-sticky-selection

### AWS Toolkit
**AWS Toolkit** は AWS を利用する場合にはあると便利です。アカウントとそのクレデンシャルを設定することで、そのアカウントの範囲で所有しているリソースを操作することができます。

あえて IntelliJ IDEA から何でもかんでもやる必要はないと思いますが、さっと S3 バケットの中身を見たり ARN をコピーしたりとあると便利です。

https://plugins.jetbrains.com/plugin/11349-aws-toolkit

### Solarized Themes
IntelliJ IDEAD のカラースキームとして「**Solarized Themes**」を導入しています。カラースキームはただの好みなのでお好きなものを ☕

https://plugins.jetbrains.com/plugin/12784-solarized-themes

### 尾ビレ
#### キーマップ
エディタのタブ切替えをブラウザと同じにする

- 環境設定 > キーマップ > メインメニュー > ウィンドウ > エディタータブ
  - 次のタブを選択：^→|
  - 前のタブを選択：^⇧→|

#### 複数プロジェクトをタブで開く
IntelliJ IDEAD で複数のプロジェクトを同時に開くことがよくあります。

Mac 本体の システム環境設定... > 一般 > 書類を開くときはタブで開く を「常に」に設定します。
次に 環境設定 > 外観＆振る舞い > システム設定 > プロジェクト > プロジェクトを開く先 を「新規ウィンドウ」に設定します。
Amazon Inspector で AWS Lambda 関数の脆弱性スキャンをしてみよう！

# 概要

* [Amazon Inspector](https://aws.amazon.com/jp/inspector/)に新機能として AWS Lambda関数の脆弱性をスキャンする機能が追加されました。
* ということで早速試してみたという記事になります。

# Amazon Inspectorとは

* [Amazon Inspector](https://aws.amazon.com/jp/inspector/) というのは脆弱性を管理するためのサービスであり、今までは **Amazon EC2 インスタンス**の脆弱性や、**Amazon ECR** に存在するコンテナイメージの脆弱性を継続的にスキャンできました。
* 今回追加された機能というのは、AWS Lambda 関数と Lambda レイヤ全体の脆弱性を継続的にスキャンできるようになりました。

## 気をつけるべき点

* 現時点では、Java、NodeJS、Python で記述された関数とレイヤーに対してのスキャンが実行できます(2022/11/29 時点)
* デフォルトでは、アカウント内のすべての関数を継続的にスキャンしますが、特定の Lambda 関数を除外したい場合は、キー「InspectorExclusion」と値「LambdaStandardScanning」を含むリソースタグを付与します。

## 利用できるリージョン

* 米国東部 (オハイオ)
* 米国東部 (バージニア北部)
* 米国西部 (北カリフォルニア)
* 米国西部 (オレゴン)
* アジアパシフィック (香港) 
* アジア パシフィック (ムンバイ)
* アジア パシフィック (ソウル)
* アジア パシフィック (シンガポール)
* アジア パシフィック (シドニー)
* アジア パシフィック (東京)
* カナダ (中部)
* ヨーロッパ (フランクフルト)
* ヨーロッパ (アイルランド)
* ヨーロッパ (ロンドン)
* ヨーロッパ (ミラノ)
* ヨーロッパ (パリ)
* ヨーロッパ (ストックホルム)
* 中東 (バーレーン)
* 南アメリカ (サンパウロ)

## スキャンされるタイミング

* 関数のデプロイ時に関数とレイヤーをスキャンする
* Lambda 関数が更新されたときスキャンする
* 新しい脆弱性 (CVE) が公開されたときなど、ワークロードに変更があったときに自動的に再スキャンする

# やってみた

* Amazon Inspector のコンソール画面にいくと、Findings に「By Lambda Functions」が追加されてますね。
* まずは、「Dashboard」を確認してみると、今まで脆弱性のスキャンができていた Amazon EC2 と ECR の結果およびLambda Functionsの結果が表示されていることがわかります。

![スクリーンショット 2022-11-29 21.54.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563635/905daaa9-9764-9222-c1f3-7530bc6be70a.png)

* Amazon Inspector は、関数だけではなく、Lambda レイヤーもスキャンします。
* また、サードパーティのレイヤーを使用している場合も、Amazon Inspector はそれらのレイヤーの脆弱性もスキャンします。

* 次に、Findings の「By Lambda Functions」を移動します。
* ここでは、さまざまな関数の結果を確認することができます。
* また、**Amazon EventBridge** などを利用し、Amazon Inspector の結果を開発者やシステム管理者に通知することができるので、今までのスキャンできたリソースに加えて Lambda関数及び使用しているレイヤーの脆弱性スキャン結果を送れます。

![スクリーンショット 2022-11-29 21.50.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563635/4ba2ffbe-ba6d-1c5b-e7ba-85955fb34a09.png)


# まとめ

* 少し前にあった、Log4jの脆弱性ではないですが、Lambdaで実行しているアプリケーションで利用しているライブラリなどに新しい脆弱性が発覚した際に、Amazon Inspector は脆弱性が公開されたタイミングでワークロードを継続的に監視し、ほぼリアルタイムで再スキャンできる、かつ自動で通知することもできるワークフローが組めるのが素晴らしいですね！


# 参考文献

https://docs.aws.amazon.com/inspector/latest/user/enable-disable-scanning-lambda.html

https://aws.amazon.com/jp/blogs/aws/amazon-inspector-now-scans-aws-lambda-functions-for-vulnerabilities/
Power Automateのリソースメールボックス利用

Exchange（Outlook）では、ユーザーが使うメールボックスのほかにリソースが使うメールボックスというものがあります。
- 会議室メールボックス
- 備品メールボックス

これらに予定を追加することによって、会議室の予約をしたりするわけですね。これに何とかPower Automateからアクセスできないか？という話です。
ちなみに、空いているか空いていないかであればFindMeetingTimeでわかります。

まず、Exchange管理センターからリソースメールボックスを作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/2fa4ee34-829a-8a58-61f5-3ad92bdd56af.png)
（備品用は作成済みなので）今回は会議室リソースを追加してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/3400dca6-1495-9ef0-4d16-b79b0a037fb2.png)
会議室の名前と電子メールアドレスはいったん空欄で作ります。
するとこうなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/2ca51042-e347-fa8c-198e-3bbfd8e4a2c0.png)

これの代理人を設定します（自分に）。権限はフルアクセスとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/f87a6258-4d66-17da-4f90-c0aa5fa6fc09.png)
※同じ設定を備品メールボックス（プロジェクター）にもしてあります。

で、かなり待ちます・・・・。（繁栄に時間がかかります）

Outlook on the Web から予定表を選択し「予定表を追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/d239c8eb-638a-e655-4d0b-618f4f422ae5.png)

すると以下のような画面が出てくるのですが、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/186affa7-71bd-a385-80f1-e7f6233f7304.png)

先ほど作成した会議室が出てくるまで時間がかかります…。

(数時間後)


でてきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/c6ebd6d8-8e11-81a1-0f39-8e3a145ac181.png)

Outlookからは以下のように見えるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/fc080c48-8ca9-f264-5bb0-23ff16e302db.png)

では Power Automate から見てみます。
まずは適当に予定を入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/b35b2175-d786-b900-6103-cc14e21720ef.png)
Power Automateでインスタントフローを新規作成します。アクションとして「イベントの取得(V4)」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/d3dc57e4-0617-5a78-a5ae-8f9c8d33e2ef.png)

会議室がありますね。ではこのままテスト実行してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/60c2e157-9d4d-6090-2c0d-a86a791514d4.png)

予定が取れました。

以前は、自分の予定しか取れなかったはずなのですが、自分が代理人になっているリソース（会議室、備品）の予定表も取得できるようになりました。備品貸し出しアプリなどで活用できると思います。
（もし、昔からできたよーってことでしたらすみません💦）
「M365, Google Workspace以外の選択肢はあるのか？」というテーマのウェビナーを開催

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2655664/26eeb6d2-3e0b-0f67-c57a-9ef7270c571d.png)

こんにちは！

ONLYOFFICEとマジセミ株式会社は「M365, Google Workspace以外の選択肢はあるのか？」というテーマのウェビナーを開催します。

[詳細及び参加申込はこちら](https://osslabo.doorkeeper.jp/events/147427)

## 働き方の多様化にあわせ、シームレスなツールが必要

テレワークの普及によって働く場所の選択肢が広がり、働き方の多様化が進んでいます。

それに伴って場所やデバイスを問わず、シームレスに利用できるアプリケーションやツールの需要も高まっています。

## M365やGoogleWorkspaceだとセキュリティが不安

こうした背景もあり、Microsoft 365（以下、M365）やGoogleWorkspaceなどのクラウドサービスを利用してドキュメント作成を行う企業も多く見られるようになりました。

働く場所やデバイスを問わず利用できる一方で、クラウドサービスという性質上ドキュメントの保管場所が社外のサーバーとなるため、セキュリティ上の懸念も少なからず抱えています。

ひとたび機密情報の漏えい等が起きれば大きな損失につながることもあり得るため、セキュリティ対策を疎かにすることはできません。

## 固有のエディタでなければドキュメント編集ができない

また、M365であればWord、GoogleWorkspaceであればGoogleドキュメントなど、各アプリを起動しなければドキュメント編集ができないという欠点もあります。

これによって、社内で他のエディタを使っていたり、独自のシステムを構築してそちらをメインで使っている場合などに利用の弊害となることがあるのです。

## M365、Google Workspace以外の選択肢

本セミナーでは、シームレスに利用できるドキュメント編集ソフトとしてM365やGoogle Workspace以外の選択肢を示しつつ、これらのソフトが抱える課題を解決したAscensio System SIA社のソリューション「ONLYOFFICE Docs」についてもご紹介する予定です。

M365やGoogleWorkspaceを使用中であり、セキュリティ不安を感じている情報システム部門の方はぜひご参加ください。

[詳細及び参加申込はこちら](https://osslabo.doorkeeper.jp/events/147427)

皆様のご参加をお待ちしております✨
RailsのCurrentAttributesをより有害にするGemを作ってみた

## なんでこんなGem作った？

こんにちは!合同会社イービルマーシャンズと合同会社Sampo Development代表のサンポです。
フィンランドから台湾経由で日本に来ました。
（このGemは一切Evil Martiansと関係ありません）

CurrentAttributesは有害と言われる時もありますが、より有害にできないか、という想いから今回のGem作りを始めました。

面白そうなので、もっと便利に使えるようにしました。

RubyGemsは[ここ](https://rubygems.org/gems/super_current)で、ソースは[ここ](https://github.com/sampokuokkanen/SuperCurrent)で確認できます。


## CurrentAttributesとは何か？

ActiveSupport::CurrentAttributesはRailsの便利機能の一つです。
グローバルで使える値を設定できるので、値を渡さないといけないことが少なくなります。
そしてリクエストごとに自動的にリセットされるので、データの漏洩も心配なし！（ほとんど心配なし, PumaやRailsにバグがある場合漏洩する可能性もあり、過去は実際にもあった）

簡単な使い方の例

```ruby

# app/models/current.rb
# SuperCurrentだとこのファイル要らなくなります！
class Current < ActiveSupport::CurrentAttributes
  attribute :hoge
end

module HogeService
  extend self

  def hogehoge
    Current.hoge
  end
end

class HogeController
  def index
    Current.hoge = "hoge"
    render plain: HogeService.hogehoge
  end
end
```
これで`HogeService`にアーギュメント渡さなくてもちゃんとhogeという文字列がブラウザで表示されます。

`class Current`を定義したくなかったらどうしたらいい？

`Gemfile`に`super_current`を追加したらいいです！


## SuperCurrentとはなんですか？

どこでもCurrentが使えて、わざわざCurrentのテスト書かなくてもいいです！
とても便利ですね。

面倒くさいアトリビュートの指定もしなくてよくて、値をCurrentに指定すればいい！
PHPみたいでいいですね。（PHPもこれが今後使えなくなるみたいですが
```ruby
Current.hello #=> エラー、NoMethodError
Current.respond_to?(:hello) #=> false
Current.hello = "hello"
Current.respond_to?(:hello) #=> true
Current.hello #=> "hello"
```

Current.hogeが定義されてなくてもエラーにならないようにしようかとも思いましたが、それは流石にやりすぎだと思ってここまでにしました。

## 今すぐ本番で使った方がいいですか？

使わない方がいいかと思います！
（こういうGemではない場合も、バージョン0.1のGemは本番で使いたくないかと思いますが）

コードが分かりにくくなると思います。使い方にもよりそうですが。
遊び程度、Proof of Conceptみたいなところであれば是非使ってください。

## 今後の展望は？

method_missingではなくてconfigでやったらいいかと思ってました。
両方の使い方ができるようにしてもいいかもしれない、と思ってました。
configなら定義される予定のアトリビュートを確認できる、といういい点もありますし。
（その反面、悪い点としては実際に指定しないといけない、というのがありますが）
【SwiftUI】ControlGroup触ってみた

# はじめに
iOS15から[ControlGroup](https://developer.apple.com/documentation/swiftui/controlgroup)というUIコンポーネントが使えるようになってました。
見た目はPickerのsegmentedスタイルと同じだったので何が違うのか調査してみました。

# 実装
```swift
import SwiftUI

struct ContentView: View {
    private let animals: [String] = ["ライオン", "ネコ", "キリン"]
    var body: some View {
        ControlGroup {
            ForEach(0..<animals.count, id: \.self) { index in
                Button {
                    print()
                } label: {
                    Text(animals[index])
                }
            }
        }
    }
}
```

# スタイル
## automatic(指定なし)
```swift
ControlGroup {
    ForEach(0..<animals.count, id: \.self) { index in
        Button {
            print()
        } label: {
            Text(animals[index])
        }
    }
}
.controlGroupStyle(.automatic)
```
|iOS|macOS|
|-|-|
|![simulator_screenshot_1B7EA2C6-E104-4A65-B18A-65C714C52293.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/cb9d8c2f-9434-c0c0-2fac-8b274576f50c.png)|![スクリーンショット 2022-11-29 21.39.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/c34f53c4-57af-000e-591c-57a21844f018.png)|

### navigation
```swift
ControlGroup {
    ForEach(0..<animals.count, id: \.self) { index in
        Button {
            print()
        } label: {
            Text(animals[index])
        }
    }
}
.controlGroupStyle(.navigation)
```
|iOS|macOS|
|-|-|
|![simulator_screenshot_CBAF8B60-709C-42C8-8C90-20233141A707.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/a90b9875-478f-caa1-c2c5-159854f8efab.png)|![スクリーンショット 2022-11-29 21.41.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/c6f2d4ec-7db4-6fed-46ba-e140e1383e20.png)|

# Pickerのsegmentedとの違い
```swift
import SwiftUI

struct ContentView: View {
    @State var selection: Int = 0
    private let animals: [String] = ["ライオン", "ネコ", "キリン"]
    var body: some View {
        VStack(spacing: 50) {
            GroupBox("ControlGroup") {
                ControlGroup {
                    ForEach(0..<animals.count, id: \.self) { index in
                        Button {
                            print()
                        } label: {
                            Text(animals[index])
                        }
                    }
                }
                .controlGroupStyle(.automatic)
            }

            GroupBox("Picker") {
                Picker(selection: $selection) {
                    ForEach(0..<animals.count, id: \.self) { index in
                        Button {
                            print()
                        } label: {
                            Text(animals[index])
                        }
                    }
                } label: {
                    Text("")
                }
                .pickerStyle(.segmented)
            }
        }
        .padding(.horizontal, 20)
    }
}
```

![画面収録_2022-11-29_21_47_12_AdobeExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/3e747398-6cca-7efa-55ab-bd57eb1a08d9.gif)

見た目は同じですが、使用用途は全く違うものになりそうです。

# おわり
今の所、何に使うのか全くわかりません笑
スマートファクトリーについて考えてみた

# はじめに
毎週1本様々な技術に関する記事を投稿しています。
もし興味のある方は下のリンクから他の記事も見ていただければ幸いです。
 [@7_inai_](https://qiita.com/7_inai_)
# スマートファクトリーとは
スマートファクトリーには明確な定義はありませんが、私は次のように考えています。
`工場で一般的に課題とされる、直行率や稼働率のような生産性の改善だけでなく、ビジネスプロセス全体の変革を実現するDXを行なった工場`

# スマートファクトリーが求められる背景
昨今の製造業は、例えば次のような問題で非常に厳しい立ち位置にあります。
・円安による輸入価格の上昇
・少子高齢化による人員不足
・コモディティ化による価格競争の激化

これらの課題を解決し、競争力のある製造業を作ることが工場に求められています。しかし、これらの課題を解決するためには、現場メンバの取り組み(ロス削減や改善活動)だけではかなり厳しいのが現実です。そのために生産プロセスから抜本的に変革するような、スマートファクトリー化が注目されるようになったのです。

# IoT × スマートファクトリー
スマートファクトリーを実現するために、重要な技術の1つに[IoT](https://qiita.com/7_inai_/items/f2a56498b70b39befa0b)が挙げられます。
IoT化をすることで様々なことを実現することができますが、最大の特徴は __「見える化」__ でしょう。工場ではそれぞれ独立したPLCで個々の機械が稼働していますが、IoT用の端末を個々のPLCに接続し、その端末同士を同じネットワーク回線で接続することで、個々の機械のデータを一元的に管理することができます。
例えば、現在の最終製品出来高や、不良率、排出数、終了時間といったそれぞれの機械が持っているデータを、デスクに座ったままで瞬時に確認することができます。

# AI × スマートファクトリー
スマートファクトリーを実現するための技術の2つ目として[AI](https://qiita.com/7_inai_/items/095f95279a7257eaa01b)を紹介します。
工場の生産性は、作業者の力量や機械の状態のみならず、天気や前製品の完成度といった __非常に幅広い要因__ に左右されます。これら複数の条件と生産性に関連性を見つけようとしても、条件が多すぎて誤った結論を出してしまうこともあります。
そこで使用されるのがAIです。人では捌けないような大量のデータでもAIを用いて自動的に測定することができれば、条件と生産性の相関性を見つけ出せるかもしれません。

# 終わりに
スマートファクトリーを実現するためのIT技術としてAIとIoTを上げましたが、技術はあくまでも手段でしかありません。なんのためにスマートファクトリーを目指すのか、その目的の方が重要です。また、スマートファクトリー化は、抜本的な製造プロセスの変革を目指すため、製造部門のみならず、生産管理、SCM本部、総務といった複数の部門で全社的に取り組む必要があります。そのため難易度も高くなりますが、非常に価値のある取り組みとなるでしょう。
AWS上のWindowsServerに日本語化しようとするとエラー（0x800f0954）

# はじめに
AWSで構築したWindows Serverに言語パックを当てようとすると0x800f0954が発生し適用できない場合がる。その時他の記事でも紹介されている「直接言語パックを入れる方法」でもうまくいかない場合に対象法を記載している。

# 背景
問題の背景としてAWSのインスタンス（AMI）で構築したWindows Serverを利用しようとすると初期状態でWindows ServerのEnglish版が選択されてしまうためだ。
![スクリーンショット 2022-11-29 21.17.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570659/7f2d2227-e8fa-3e1a-aee6-c0a61e9e1777.png)

そのためAWS構築記事でもまずは日本語化する手順が記載されている。

# 対処法
Windows Server内でWindowsUpdateを実行すると現象が解決される。（要再起動）
もしインスタンス内でWindowsUpdateが実行不可な場合は、OSのレジストリが壊れている可能性があるためインスタンス自体をEBS等でリストアするかインスタンスを再構築する方法しかない。

言語パックのインストールもWindowsUpdateと同じ原理でインストールするため
WindowsUpdateで更新プログラムを入れると言語パックが同時にインストール可能になる可能性が高い。

# 最後に
AWSでサーバー構築中に発生した問題を備忘録として初投稿しました。
私自身もAWS勉強中のため間違え等ありましたらコメント等で指摘ください。
Magentaを用いた機械学習作曲入門（Google Colaboratoryで実行）

こんにちは。[東北TECH道場 郡山道場](http://koriyama.tohokutechdojo.org/)でスタッフをしています。今年度（第7期）は [Google Colaboratory](https://qiita.com/Aster_ideatech/items/3ae6ea5e5a011ebcd0b7)を使用して、Python の基礎を学ぼうということで月に1回活動しています。そこで、「Magentaを用いた機械学習作曲入門」という講座をGithubに公開しました。「Open In Colab」ボタンを押すと「Google Colaboratory」で開いて実行することができます。どなたかのお役に立てれば幸いです。

# 「Magentaを用いた機械学習作曲入門」
https://github.com/tomato-sugar/python_lesson/tree/main/magenta_basic

# 講座の内容
##  magenta_basic1.ipynb
  Ⅰ Magentaの概要
    (1) Magentaとは
    (2) Magentaに用意されているAI作曲モデル
  Ⅱ 自動作曲の実行手順
    (1) ライブラリのインストール
    (2) 基本となる音を与える
    (3) Melody RNN で単音のシンプルなメロディーの作曲
    
## magenta_basic2.ipynb
  Ⅰ Polyphony RNN でバッハ風合唱曲の作曲
  Ⅱ Drums RNN でドラム演奏パートの作曲
  Ⅲ Peformance RNN で高度なピアノ演奏の作曲

## 参考文献
斎藤 喜寛 [「Magentaで開発 AI作曲」](https://www.ohmsha.co.jp/book/9784274227318/) オーム社 2021/07/20出版
吾妻 幸長 [「【Magenta+Colab】AIによる作曲を学ぼう！ -ディープラーニングで自動生成する音楽データ」](https://www.udemy.com/course/ai-music/)Udemy
failed to prepare device for developmentエラーを解決した

## 概要
業務で実装を確かめるために実機ビルドした時に、「failed to prepare device for development」というメチャクチャ漠然としたエラーが発生したので、解決方法を備忘録として残しておきます。
ちなみに、実機の設定やiOSのバージョン、Macの設定も何1つ変更していないので、「実機のバージョンと新たなバージョンがリリースされたXcodeの相性が悪いのかな〜」と仮説を立てて調べることにしました。

## 調べたこと
上記のエラー文以外にも、「The run destination "ユーザー名"のiPhone is not valid for Running the scheme 'ビルドスキーム名'.」というようなエラーが出ていました。
とりあえずは、エラー文を何も考えずコピペして検索することにしました。
有力な記事もあり、どれも解決したとの文言があったので一番状況が近い下二つの記事を参考にさせていただきました。

https://negichou.com/troubleshooting-xcode-failed-to-prepare-device/

https://zenn.dev/bon/scraps/b6ac4c7f5a6384


ただ、この問題を解決するにあたって、「Macのバージョンを上げる」や「iOSのバージョンを上げる」というような方法がメインで記載されており、とてもいい解決案だと思うのですが、個人開発ならともかく、チームで端末やMacのバージョンを指定しているので、今回はバージョンを上げる等の手段は取りませんでした。
自分はMacやiPhone等のバージョンを上げるのは最終手段であることを肝に銘じています！(笑)

## 直すためにしたこと
では、どのようにして解決したかというと、「実機の電源を切って再度ビルドし直す」というかなり安直な方法でエラーを解決しました。調べてみたのですが、原因は不明でもしかしたらビルドスキームを変更してビルドをした等の可能性もあります。ただやはり、根本原因はわかりませんでした。（もし、根本原因を知っていらっしゃる方がいれば、コメントいただきたいです！）

## さいごに
実機ビルド関係でエラーが発生した場合でかつ実機に問題がありそうな場合は、「何も考えずまずデバイスの電源を切る」ということをまずはやってみようと思いました。
ついでに関係ないですが、ココナッツサブレが小さくなり過ぎてびっくりしました。
Cryptocurrency exchange revenue models & Development Methodologies

The cryptocurrency exchange is a trading platform that allows users to buy and sell cryptocurrencies. Many crypto newbies show interest to trade with cryptocurrencies. That's how crypto exchange emerged as a profitable business model. A cryptocurrency exchange is one of the roaring businesses in the crypto space.

Therefore starting a cryptocurrency exchange is the best choice for getting into the crypto ecosystem. Owners of a crypto exchange can generate revenue from every user in multiple ways. Generally, cryptocurrency exchanges generate revenues in three ways, such as trading fees, deposit fees, and withdrawal fees. 


These are all three main ways of generating revenue from the crypto exchange business. So that is the reason crypto exchanges are a hugely profit-making business. This is the finest and most profitable business and Budding startups who decided to determine a business in the crypto space.

But before initiating a crypto exchange be aware of development methodologies.
 
There are many service providers in the crypto sector who build your exchange from scratch without any clear roadmap of the project. On the flipside there is another turkey solution called Crypto exchange clone scripts.

If you're planning to build a crypto exchange you have no ideas on choosing the development methodologies and how to leverage Crypto exchange clone script for building your own crypto exchange. Let me explain

Crypto exchange clone scripts - It is a ready to use exchange software of existing crypto exchanges like Binance, Coinbase,remitano, and etc. 

It has all the features of its existing popular crypto exchange. So your question is where to find the best crypto exchange development company who provides top notch clone scripts. Your search for the query end here

coinsclone the popular [cryptocurrency exchange script](https://www.coinsclone.com/) providing company in the crypto sector for the past 7+years, provides all types of cryptocurrency exchange script based on clients' needs. 

You can contact them for a free demo and details that would help you to start a crypto exchange business.