OmniAICreator/Qiita-1.07M huggingface dataset:
イチカラOAuthとOIDC理解 #1 - 認可の仕組みを利用しているサービスを体験してみる (OAuth編)

# OAuthを利用しているサービスを体験してみる
色んな本が出ているが初めてOAuthやOIDC(OpenID Connect)に触れる人にはアーキテクチャの世界観が掴みにくい。
実サービスで体験してみてシーケンスを見てみて、コードに落とし込み、少しずつ理解をしてくための備忘録。

早速、OIDCもOAuth2.0もコードもシーケンスも忘れて、まずは実際に認可の仕組みがどのように使われているのか体験してみる。

### この記事の内容
このQiitaのサイトを使って認可を得るということはどういうことなのかを体験してみる。
具体的には、TwitterがQiitaに私のアカウントにアクセスして良いよという認可を与えることで、Qiitaは私のX(Twitter)に記事を投稿できるようになる。

### 1.アカウントの準備
- 1.Qiitaのアカウントを登録しログインする。
- 2.Twitterのアカウントを登録しログインする。
- 3.Twitterのアカウントからログアウトしておく。(今回は認可を与える一連の流れを細かく体験するため、一度ログアウトしておく)


### 2.確認手順
- 1.Qiitaの設定画面を開き、アカウントタブの「X(Twitter)を設定」を押下。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580483/63b5c424-b11d-db56-d42e-7ab6914eabf9.png" width="90%">

- 2.ユーザー名またはメールアドレスとパスワードを入力し、「連携アプリを認証」を押下。
  - この画面のURLはあくまで認可を与える側のサイトのURLであることを確認できる。
  - アカウントでツイートをできることを許可する文言が入っていることを確認できる。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580483/a4f21a4b-e5a7-6ba1-1dc2-aba03027cdb7.png" width="90%">


- 3.画面がQiitaに自動でリダイレクトされると、X(Twitter)のアカウント名が表示されている。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580483/320359c5-75f1-8d0d-1838-f79836ae0b44.png" width="90%">


- 4.記事をQiitaで作成し、記事公開時にX(Twitter)で共有するにチェックを入れて記事を投稿する。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580483/9f537369-f61d-b2cb-f0f9-47cfeb46ff58.png" width="90%">

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580483/41e29262-2b06-9608-9392-5d45186de4e8.png" width="90%">



- 5.Twitterの自分のタイムラインを見ると、先ほど投稿したQiitaの記事のURLがX(Twitter)にも投稿されていることを確認できる。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580483/04d75f94-c253-3d7b-c2b3-74640ba96df0.png" width="90%">


- QiitaはTwitterより私のアカウントでツイートする許可を貰ったので、私のX(Twitter)アカウントで投稿を行えた。

### まとめ. 行なったことのイメージ図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580483/671d21bd-0e7a-9c06-88f4-e6c0a37dc47e.png)



# (参考)
TwitterはOAuth 1.0aメソッドを利用しているため、OAuth2.0のフローとは異なる。
しかし、認可を与えるという行為自体は同じであり、そのための理解として今回はQiitaとX(Twitter)を利用して体験を行なった。

続きの記事は多くのクラウドの認証サービスで使用されているOAuth2.0を元に進めていくので、OAuth1.0については深掘りしない。

OAuth 1.0の説明はこちらを参考。
https://atmarkit.itmedia.co.jp/fsmart/articles/oauth2/01.html
UnityのSceneのリストをランタイムでも使用できる形で自動保存する

# 0. 完成像
UnityのSceneのリスト（もう少し具体的に言うと `Build Settings` で登録済みのSceneのリスト）は、 `UnityEditor.EditorBuildSettings.scenes` で取得できる。
ただ、__どう見てもエディタ上でのみ動かすAPIで、実際のランタイム使用に耐えうるものではない__。
今後、必要があるかはともかく、ランタイムで使用でき、かつ自動で保存・更新の機構があるSceneリストの実装をちょっと残しておこうと思う。

# 1. プログラム
```c#:CurrentScenesObserver.cs
using System;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif

namespace UnitySceneList.RunTime
{
    /// <summary>
    /// シーンリストに登録されているシーンの名前情報をランタイムまで保持しておくScriptableObject
    /// </summary>
    public sealed class CurrentScenesObserver : ScriptableObject
    {
        [SerializeField, ToolTip("シーン名とその詳細説明のデータ群")]
        private CurrentSceneData[] currentSceneDatas = null;

        /// <summary>
        /// シーンリストに登録されているシーンのデータを返す
        /// </summary>
        /// <returns>シーン名とその詳細説明</returns>
        public (string sceneName, string detail)[] GetCurrentSceneDatas()
        {
            return Array.ConvertAll(currentSceneDatas, data => data.SceneData);
        }

#if UNITY_EDITOR
        [InitializeOnLoadMethod]
        private static void Initialize()
        {
            EditorBuildSettings.sceneListChanged += () =>
            {
                var scenes = EditorBuildSettings.scenes;

                // CurrentScenesObserverのインスタンスを取得
                string[] guids = AssetDatabase.FindAssets($"t:{nameof(CurrentScenesObserver)}");
                if (guids.Length != 1) return;
                CurrentScenesObserver instance = AssetDatabase.LoadAssetAtPath<CurrentScenesObserver>(AssetDatabase.GUIDToAssetPath(guids[0]));

                // シーンが一つもない場合はnullを代入
                if (scenes.Length == 0)
                {
                    instance.currentSceneDatas = null;
                    return;
                }

                // シーンが一つ以上ある場合はシーンのデータを代入
                instance.currentSceneDatas = new CurrentSceneData[scenes.Length];
                for (int i = 0; i < scenes.Length; i++)
                {
                    string sceneName = System.IO.Path.GetFileNameWithoutExtension(scenes[i].path);
                    instance.currentSceneDatas[i] = new CurrentSceneData(sceneName, sceneName);
                }
            };
        }
#endif
    }

    /// <summary>
    /// シーン単体のデータ
    /// </summary>
    [Serializable]
    internal struct CurrentSceneData
    {
        [SerializeField, Tooltip("シーン名")]
        private string sceneName;

        [SerializeField, Tooltip("シーンの詳細説明")]
        private string detail;

        /// <summary>
        /// シーンのデータを返す
        /// </summary>
        internal (string sceneName, string detail) SceneData => (sceneName, detail);

        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="sceneName">シーン名</param>
        /// <param name="detail">シーンの詳細説明</param>
        internal CurrentSceneData(string sceneName, string detail)
        {
            this.sceneName = sceneName;
            this.detail = detail;
        }
    }
}
```
AMLでSharedAccessKeyDisallowedと表示される

Azure AI | Machine Learning StudioのWorkspaceで下記のエラーが表示された。
<i>
SharedAccessKeyDisallowed: Azure Storage <ストレージアカウントid> has AllowSharedKeyAccess disabled. Azure Storage supports Azure AD authorization for requests to Blob and Queue storage only. Please allow Shared Key access for requests to Azure Files or Table storage.
</i>
<hr>

ストレージアカウントのパラメータを確認してみる。
```bash
az storage account show --name <ストレージアカウント名>
```
```bash
{
  "accessTier": "Hot",
  "allowBlobPublicAccess": false,
  "allowCrossTenantReplication": null,
  "allowSharedKeyAccess": null,
  "allowedCopyScope": null,
:
```
`"allowSharedKeyAccess": null,`だった。
<hr>

trueに変えてみる。
```bash
az storage account update --name  <ストレージアカウント名> --allow-shared-key-access true
```

エラーが表示されなくなった。解決。
<hr>

公式ドキュメントを見ると、nullはtrue扱いのはずなんですが( ;∀;)

https://learn.microsoft.com/ja-jp/cli/azure/storage/account?view=azure-cli-latest#az-storage-account-update(storage-preview)
【Unity】Android バックキー操作でアプリを終了する

# バックキー操作を受け付ける
Update メソッド内で Escapeキーの入力を受け付けることで、バックキーの入力も受け付けるようになります。
``` csharp
private void Update()
{
    if(Input.GetKeyDown(KeyCode.Escape))
    {
        // バックキー押下時処理.
    }
}
```


# アプリの終了に関して
3パターン挙動を記載します。
- プロセスの終了
- バックグラウンドに移動
- タスクの終了

## プロセスの終了
Unity に標準で用意されている Application.Quit を使用します。
``` csharp
private void Update()
{
    if(Input.GetKeyDown(KeyCode.Escape))
    {
        Application.Quit();
        return;
    }
}
```
<img width="600" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3531721/c591016f-0995-756a-743e-e6f2a95b29e4.gif">

## バックグラウンドに移動
[AndroidJavaObject]("https://docs.unity3d.com/ja/2022.3/ScriptReference/AndroidJavaObject.html") を使用して [moveTaskToBackメソッド]("https://developer.android.com/reference/android/app/Activity#moveTaskToBack(boolean)") をコールします。

``` csharp
private void Update()
{
    if(Input.GetKeyDown(KeyCode.Escape))
    {
        AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
        activity.Call<bool>("moveTaskToBack", true);
        return;
    }
}
```
<img width="600" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3531721/7c8bb2f0-89e0-3e50-44b7-d54fa1826b51.gif">


## タスクの終了
[finishAndRemoveTaskメソッド]("https://developer.android.com/reference/android/app/Activity#finishAndRemoveTask()") をコールします。
``` csharp
private void Update()
{
    if(Input.GetKeyDown(KeyCode.Escape))
    {
        AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
        activity.Call("finishAndRemoveTask");
        return;
    }
}
```
<img width="600" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3531721/368273e3-77cb-fabd-fbc1-a9b54351af05.gif">


# 注意点
Unity 側としては、開発者側に独自処理を記述してほしくないようです。
リンク内では、バックグラウンドに移動する方法を勧めています。
https://docs.unity3d.com/2023.3/Documentation/Manual/android-quit.html
【ES2015】「var」で書かれるcodeにまだ出くわすことも多いが「let」か「const」の方がいいのか

どうもダメ人間です。 :spy: 

今回は、古い()コードを改修する際によく見かけ、「お、これはES2015にすべきか、このままでいいのか、、」窓際すぎて誰にも質問できないため、自分で悩んで自分で回答してみた、の回である。(窓際とは)


### let、const、varの定義

表にまとめてみたら、一目瞭然だった！
これまでの苦悩が綺麗さっぱりです。
再宣言、再代入は置いといて。
スコープですね。。(確信。。)

![Qiita用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2867756/fc820b13-8091-2342-8e28-2ee0913a3481.png)



### 出会った時に書き換えるべきかどうかの問題について

これまでの自分は「え、varも便利やん、、全然ええやん、、古いからって使わないのかわいそう！　文化の喪失、、etc」などと考えていた。
しかし、諸行無常。常に変化。の世界。
更新しなくては遅いのだ。(もうすでに遅い)
ので、三年前に本気でかき分けていただいたこの方の結論を元に

> ほぼ全部constで定義できる
オブジェクトや配列の値の変更は再代入にはならないため。
プリミティブ型を再代入したい場合はlet
varはもう使わない
https://qiita.com/cheez921/items/7b57835cb76e70dd0fc4

このダメ人間、これからは自信を持って「もうvarは使わない」とここに宣言する(フラグ)
ありがとう。みんな。(誰や)

### 結論

自分的にvarは捨てがたいものの、最大のデメリットである「すり抜け」(スコープが効かない)のために、使わないのがいいのかもしれないでござる。
ありがとうでござったvar。
大好きでござったvar。
これからはconstを使わせていただくでござる。(るろ剣で移った)

眠くて読めてない、理解浅い部分があるので、気が向いたら追記するでござる。

### 参考にした記事

https://qiita.com/soarflat/items/b251caf9cb59b72beb9b


https://programmingnote.jp/archives/556

な、なんとこのかた、二年前の元日にこの記事を書かれているのですね。。
ダメ人間も息が長く、向上心のあるアンテナのようなエンジニアになりたいものです


https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/let

色々な記事があるので安定の公式ドキュメントをば。
Javascriptによる自動作曲

簡単な自動作曲アプリケーションです。再生ボタンの回数でレイヤー再生が可能です。

<!DOCTYPE html>
<html>
<head>
    <title>自動作曲アプリケーション</title>
</head>
<body>
    <h1>自動作曲アプリケーション</h1>
    <button id="generateButton">音楽を生成</button>
    <button id="playButton">再生</button>

    <script>
        // 音符の定義
        const notes = ["C4", "D4", "E4", "F4", "G4", "A4", "B4"];

        // 生成された音楽の格納用
        let generatedMusic = [];

        // 音楽を生成する関数
        function generateMusic() {
            generatedMusic = [];
            for (let i = 0; i < 16; i++) { // 16拍分の音楽を生成
                const randomNote = notes[Math.floor(Math.random() * notes.length)];
                generatedMusic.push(randomNote);
            }
        }

        // 音楽を再生する関数
        function playMusic() {
            if (generatedMusic.length === 0) {
                alert("音楽を先に生成してください。");
                return;
            }

            let index = 0;
            const audioContext = new AudioContext();

            function playNextNote() {
                if (index < generatedMusic.length) {
                    const note = generatedMusic[index];
                    const oscillator = audioContext.createOscillator();
                    oscillator.type = "sine";
                    oscillator.frequency.setValueAtTime(noteToFrequency(note), audioContext.currentTime);
                    oscillator.connect(audioContext.destination);
                    oscillator.start();
                    oscillator.stop(audioContext.currentTime + 0.5); // 0.5秒間音を鳴らす
                    index++;
                    setTimeout(playNextNote, 500); // 0.5秒後に次の音符を再生
                }
            }

            playNextNote();
        }

        // 音符を周波数に変換する関数
        function noteToFrequency(note) {
            const noteToIndex = {
                "C4": 261.63,
                "D4": 293.66,
                "E4": 329.63,
                "F4": 349.23,
                "G4": 392.00,
                "A4": 440.00,
                "B4": 493.88
            };
            return noteToIndex[note];
        }

        // ボタンクリック時のイベントリスナー
        document.getElementById("generateButton").addEventListener("click", generateMusic);
        document.getElementById("playButton").addEventListener("click", playMusic);
    </script>
</body>
</html>
ISO 26262 Part 3: Concept phase 安全(53)

 <この項は書きかけです。順次追記します。>

ISO 26262-3:2018 Road vehicles ? Functional safety ? Part 3: Concept phase https://www.iso.org/standard/68385.html

>ForewordIntroduction
1 Scope
2 Normative references
3 Terms and definitions4 Requirements for compliance
4.1 Purpose
4.2 General requirements
4.3 Interpretations of tables
4.4 ASIL-dependent requirements and recommendations
4.5 Adaptation for motorcycles
4.6 Adaptation for trucks, buses, trailers and semi-trailers
5 Item definition
5.1 Objectives
5.2 General
5.3 Inputs to this clause
5.4 Requirements and recommendations
5.5 Work products
6 Hazard analysis and risk assessment
6.1 Objectives6.2 General
6.3 Inputs to this clause
6.4 Requirements and recommendations
6.5 Work products7 Functional safety concept
7.1 Objectives
7.2 General
7.3 Inputs to this clause
7.4 Requirements and recommendations
7.5 Work products
Annex A Overview of and workflow of concept phase
Annex B Hazard analysis and risk assessment
B.1 General
B.2 Examples of severity
B.3 Examples and explanations of the probability of exposure
B.4 Examples of controllability
Bibliography


 ＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
# 参考資料
自動車ソフトウェア三規格参考文献
https://qiita.com/kaizen_nagoya/items/def6176e74e8cd13ca79

自動車ソフトウェア三規格参考文献の参考文献
https://qiita.com/kaizen_nagoya/items/4595182168a2f7b0aa32

サイバー攻撃に防衛隊を組織教育
https://qiita.com/kaizen_nagoya/items/5bc6235c509e4fb108f0

### 文書履歴
ver. 0.01 初稿 20231019
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your hap
WordPress - ポートフォリオ②本番環境に移行,バナーについて学習(2023/10/18)

2023/10/18 WordPress - 本番環境に移行

-プラグイン
All-in-One WP Migration
-サーバー
さくらインターネット

https://wp-mandm.sakura.ne.jp/home/

2023/10/19 Figma - バナーについて②

—————————例①
商品 : ハンバーガー
内容 : 新商品の告知
メインターゲット : 10~40代男性
デザイン : 美味しそう、ワクワク感、食べ応え
ゴール : 新商品の告知、LPへの誘導
・バナーサイズ : 600px*600px

1.バナーの内容・要素・目的・ターゲットユーザーを確認 2.掲載要素の「優先度」を考える

「明確にするべき点」 どんな人に → どんな行動をさせたいのか ↪︎10~40代の男性に → 新商品の告知 → LPへの誘導 ↪︎30代の男性に → 新商品を知ってもらい → 食べてみたいと思わせる
 3.１・２を考慮してデザインを考える ↪︎一瞬で目に止めてもらうデザイン
	「何の広告なのか」が一瞬でわかるビジュアルのデザインにする ↪︎「伝えたい内容」をベストな状態で見せるデザイン
	・情報を見やすくする
	・優先度を意識したデザイン
	・見た目を良くして、見る人のモチベーションを上げる
 ↪︎「クリックしたい」と思わせる工夫
	・全てを伝えない
	・効果的なキャッチコピー、ワードのライティングテクニック
	・魅力的なシズル感のあるビジュアル
	・矢印やボタンなどのデザイン処理

＊YDA : 入稿サイズ 600px600px / 表示サイズ 350px350px

<実作業>
切り抜き : ペンツール
	・切り抜き - グループ化 - 「マスクとして使用」
・色調整 : デザイン要件に見合った画像加工
	・文字配置 - 背景 - 写真 - 影 - 背景グラデーション
・文字調整 : フォント
	テーマに沿ったフォントの選び方
	「ゴシック体 : 力強くポップ / 無機質」
	「Noto Sans : 力強い印象」
	「Noto Sans - Black」-男性の声のイメージ
＊斜体プラグイン””Skewdat

・ハンコ型ロゴ : 線を作成、微調整の後に結合してオブジェクト化
・ワクワク感を出す : 斜めにラインを入れて上昇感を演出
				: 丸みのあるオブジェクトで楽しい雰囲気

—————————例②
商品 : ヘアケア商品
内容 : 新商品のブランディング
メインターゲット : 30~50代女性
デザイン : 高級感、清潔感、透明感
ゴール : 新商品の認知、LPへの誘導
バナーサイズ : 600*600px

40代の女性に - 新商品を知ってもらい - LPへ誘導

<実作業>
塗り、グラデーションを焼き込みで重ねて微調整
フォント - 明朝体(Noto serif) - 清楚、綺麗
ISO 26262 Part 4: Product development at the system level 安全(54)

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

ISO 26262-4:2018 Road vehicles ? Functional safety ? Part 4: Product development at the system level https://www.iso.org/standard/68386.html

>Foreword
Introduction
1 Scope
2 Normative references
3 Terms and definitions
4 Requirements for compliance
4.1 Purpose]
4.2 General requirements
4.3 Interpretations of tables
4.4 ASIL-dependent requirements and recommendations
4.5 Adaptation for motorcycles
4.6 Adaptation for trucks, buses, trailers and semi-trailers
5 General topics for the product development at the system level
5.1 Objectives
5.2 General
6 Technical safety concept
6.1 Objectives
6.2 General
6.3 Inputs to this clause
6.4 Requirements and recommendations
6.5 Work products
7 System and item integration and testing
7.1 Objectives
7.2 Genera
7.3 Inputs to this clause
7.4 Requirements and recommendations
7.5 Work products
8 Safety validation
8.1 Objectives
8.2 General
8.3 Inputs to this clause
8.4 Requirements and recommendations
8.5 Work products
Annex A Overview of and workflow of product development at the system level
Annex B Example contents of hardware-software interface (HSI)
B.1 General
B.2 HSI elements
B.3 HSI characteristicsBibliography


＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.
# 参考資料
自動車ソフトウェア三規格参考文献
https://qiita.com/kaizen_nagoya/items/def6176e74e8cd13ca79

自動車ソフトウェア三規格参考文献の参考文献
https://qiita.com/kaizen_nagoya/items/4595182168a2f7b0aa32

サイバー攻撃に防衛隊を組織教育
https://qiita.com/kaizen_nagoya/items/5bc6235c509e4fb108f0

### 文書履歴
ver. 0.01 初稿 20231019
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.
木

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457284/d05ce1b8-5108-41a3-d13c-175d0b935f85.png)
　木構造では、データを格納する部分を節点（ノード）と言います。接点と接点は枝で結ばれています。節点は、場所によって次の名称で呼ばれます。

親：上位階層にある節点
子：回階層にある節点
根：最上位の接点
葉：子を持たない接点
兄弟：同じ親を持つ接点
　木の稲から最もしたの葉までの階層（最も下の葉に至るまでの枝の数）を木の深さと言います。

１：二分木と多分木
　二分木の代表例には、ヒープや二分探索木があります。ヒープは、データを並べる用途で利用されます。二分探索木は、データを探索する用途向きです。
　多分木の代表例は、B木があります。B木は、データベースやファイル管理（ファイルシステム）など、データを探索する用途に多く利用されます。すべての葉が同じ階層にあることが特徴です。
Unityちゃんがピンク色の影になってしまったときの対処法

## 概要

個人学習のため、無料で公開されているUnityちゃんのモデルを利用し、3Dアニメーションを作成しようとした際、インポートしたUnityちゃんのモデルが正常に表示されず、ピンク色の影のように表示されてしまう問題が発生しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561822/3c148199-9967-e946-ac89-e4761dd0763b.png)


今回はその解決法についてまとめたいと思います。

## 原因
トゥーンシェーダーのデータがダウンロードされていないため。

3Dグラフィックスの色調描画に関わるトゥーンシェーダについて、Unityちゃんのインポートの際に一部が正しくインストールできない問題があるようです。

## 解決方法
追加のトゥーンシェーダーデータをインストールする。

unity公式のgitから、追加のトゥーンシェーダーデータをインストール可能です。
手順
1. 「Window」⇒「Package Manager」
1. Package Managerの＋を押下して、Add package from git URLを選択
1. 「com.unity.toonshader」と入力して追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561822/e473200f-beb0-71bc-01a6-ed1aedb8d93f.png)
少し待つとトゥーンシェーダのインストールが開始します。シェーダのインストールが終了すると、Unityちゃんのモデルが正しく描画されているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561822/a4971dd3-91ee-6e8e-8e10-dbbf2ac3c720.png)
【プラクティス紹介】1分でさらっと分かる「リーンコーヒー」

![LeanCoffee.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3526800/ed701fc4-0d5c-0e36-44cb-0c0030c2f618.jpeg)


## プラクティス名（別名）
リーンコーヒー　（Lean Coffee）

## プラクティスの目的・狙い
* 限られた時間の中で多くのトピックについて話す
* チーム全員の興味に沿ったトピックに集中する

## どんな時に使うか
* いつも特定のトピックに話題が偏ってしまい、その他が消化できずに終わることが多い
* チームで話す際、特定の人だけが会話に参加しており、ほとんど話していない人がいる

## 実施手順
1. ボードにReady/Doing/Doneの３レーンを準備する
1. 各自、話したいトピックを1～3個ほど付箋に書き出しReadyに貼っていく
1. どのトピックについて話したいか皆で投票し、得票順に並び替える（自分以外の付箋に投票）
1. 最初のトピックをDoingに移動し、タイマーをセットして7分話す
1. タイマーが鳴ったら、全員で親指投票し延長するかどうかを決める
（サムズアップ＝延長したい、サムズダウン＝次のトピックへ、横にする＝どちらでもよい）
1. 大半が延長希望なら4分延長、半分程度なら2分延長とする
1. 会議時間の許す限り、手順4～6を繰り返す

:::note info
制限時間/延長時間は会議の目的/内容/人数などに応じて適宜調整する
:::

## アレンジ例
* レトロスペクティブとして行う場合は最後にTryを決める時間を残しておく
* トピックの書き出しは各自で事前に行っておく
* 延長ルールを簡略化し、延長希望が半数以上なら2分追加とする（ただし延長は2回まで）

## アンチパターン
* 1つのトピックについてズルズルと話し続けてしまう（タイムボックスを守らない）
* 複数の人が似たトピックを挙げていて結局テーマが偏る（→防止策：付箋を統合する）

## 参考情報

https://www.slideshare.net/araratakeshi/lean-coffee-60156736

https://www.slideshare.net/SteveRogalsky/a-guide-to-lean-coffee

Qiitaにも体験記ありました！（内容が濃く、とても参考になります）

https://qiita.com/46goh/items/ddfa228acb60d2c34dc4

## こぼれ話（私的コメント）
アジェンダのいらいないミーティング方法です。通常の会議だと声の大きい人の興味に偏りがちですが、この方式では「何を話すか」からを参加者が選ぶので、自分事として会話に参加できます。また全員の興味が可視化されるため、テンポよく次の話題に移ってゆけます。
反面、1つのトピックを深く掘り下げるのには向かないようです。また気づきを促す軸（書き出しの観点）は特に提供されないので、そもそもトピックがあまり挙がらないという場面ではもう一工夫要りそうです。

　[アジャイルプラクティス一覧へ戻る](https://qiita.com/kakashi_h5/items/20584998c5ca4594b9ea)
ISO 26262 Part 7: Production, operation, service and decommissioning 安全(57)

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

ISO 26262-7:2018 Road vehicles ? Functional safety ? Part 7: Production, operation, service and decommissioning https://www.iso.org/standard/68389.html
>Foreword
Introduction
1 Scope
2 Normative references
3 Terms and definitions
4 Requirements for complianc
e4.1 Purpose
4.2 General requirements
4.3 Interpretations of tables
4.4 ASIL-dependent requirements and recommendations
4.5 Adaptation for motorcycles
4.6 Adaptation for trucks, buses, trailers and semi-trailers
Planning for production, operation, service and decommissioning
5.1 Objectives
5.2 General5.3 Inputs to this clause5.4 Requirements and recommendations
5.5 Work products
6 Production
6.1 Objectives
6.2 General
6.3 Inputs to this clause
6.4 Requirements and recommendations
6.5 Work products
7 Operation, service and decommissioning
7.1 Objectives
7.2 General
7.3 Inputs to this clause
7.4 Requirements and recommendations
7.5 Work products
Annex A Overview on and document flow of production, operation, service and decommissioningBibliography


＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.

# 参考資料
自動車ソフトウェア三規格参考文献
https://qiita.com/kaizen_nagoya/items/def6176e74e8cd13ca79

自動車ソフトウェア三規格参考文献の参考文献
https://qiita.com/kaizen_nagoya/items/4595182168a2f7b0aa32

サイバー攻撃に防衛隊を組織教育
https://qiita.com/kaizen_nagoya/items/5bc6235c509e4fb108f0

### 文書履歴
ver. 0.01 初稿 20231019
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.
Please press the like icon 💚　and
Rustのインストール

# Rustのインストール手順について
公式サイトを参考にして、インストールの手順をまとめている。

https://doc.rust-jp.rs/book-ja/ch01-01-installation.html


## Windowsの場合

### ****Rustのインストーラーをダウンロード****

公式からインストーラをダウンロードして実行する必要がある。
上記のURLからインストーラをダウンロードする。
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646964/81ea5cf2-f9fd-f5a0-f943-cce96dab5af8.png)

### ****Visual StudioのC++ビルドツールのインストール****
ダウンロードしたインストーラを実行する。
WindowsでRustを起動させるには、C++のビルドツールが必要。
インストールされていない場合、下記が表示されるため対応が必要になる。
※表示されない場合は、下記手順スキップ。
![Untitled 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646964/e1644864-7706-1356-f25c-7be97c70aae2.png)
1）を選択すると、必要なものに加え、[Visual Studio](https://visualstudio.microsoft.com/ja/vs/)のCommunity版がインストールされる。
Visual Studioを使いたい場合はこちらを選んでも構いません。
インストール後、再起動して、次へ。
Visual Studioは使わない場合は、「x」ボタンを押してこのウインドウを閉じてください。
[Microsoft C++ Build Tools](https://visualstudio.microsoft.com/ja/visual-cpp-build-tools/)をインストールする。
![Untitled 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646964/294d835e-1ed7-79ab-8329-c2a26d417629.png)
「C++によるデスクトップ開発」にチェック。
言語パックの「英語」にもチェック。
![Untitled 4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646964/fc5da692-947f-b22c-aa6f-942e1e1e0437.png)
インストールボタンを押して実行。
完了後再起動する。

### ****Rustのインストール****

インストーラを実行すると選択肢が表示されるため、1を入力しデフォルトでインストールする。
![Untitled 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646964/45984c4a-e0b0-53bf-9988-7ba6e502b73d.png)

インストールが完了すると「Press the Enter key to continue」と表示されるため「Enter」をクリックする。
![Untitled 6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646964/679962bf-ff69-4e74-0262-7a3709588a3a.png)

### ****Rustのバージョン確認****

PowerShellからバージョンを確認する。
※バージョンは、インストール時期によって異なる。

```powershell
rustc --version

rustc 1.70.0 (90c541806 2023-05-31)
```

### Cargo****のバージョン確認****

Cargoは、Rustのビルドシステム兼パッケージマネージャになる。

PowerShellからバージョンを確認する。

```powershell
cargo --version

cargo 1.70.0 (ec8a8a0ca 2023-04-25)
```

## Ubuntuの場合
### curlコマンドからrustをインストールする

下記コマンドを実行して、Rustをインストールする。

```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
```

確認方法は、「Windowsの場合」と同じになる。
ISO 26262 Part 9: Automotive safety integrity level (ASIL)-oriented and safety-oriented analyses 安全(59)

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

ISO 26262-9:2018 Road vehicles ? Functional safety ? Part 9: Automotive safety integrity level (ASIL)-oriented and safety-oriented analyses https://www.iso.org/standard/68391.html

>Foreword
Introduction
1 Scope
2 Normative references
3 Terms and definitions
4 Requirements for compliance
4.1 Purpose
4.2 General requirements
4.3 Interpretations of tables
4.4 ASIL-dependent requirements and recommendations
4.5 Adaptation for motorcycles
4.6 Adaptation for trucks, buses, trailers and semi-trailers
5 Requirements decomposition with respect to ASIL tailoring
5.1 Objectives
5.2 General
5.3 Inputs to this clause
5.4 Requirements and recommendations
5.5 Work products
6 Criteria for coexistence of elements
6.1 Objectives
6.2 General
6.3 Inputs to this clause
6.4 Requirements and recommendations
6.5 Work products
7 Analysis of dependent failures
7.1 Objectives
7.2 General
7.3 Inputs to this clause
.4 Requirements and recommendations
7.5 Work products
8 Safety analyses
8.1 Objectives
8.2 General
8.3 Inputs to this clause
8.4 Requirements and recommendations
8.5 Work products
Annex A Overview of and document flow of Automotive Safety Integrity Level (ASIL)-oriented and safety-oriented analysesAnnex 
B Example architectures for Coexistence of elements and Decomposition of requirements
B.1 Example architecture
B.2 Coexistence (Clause 6):B.3 Decomposition (Clause 5)
Annex C Framework for Identifying Dependent Failures
Bibliography

# 参考資料
自動車ソフトウェア三規格参考文献
https://qiita.com/kaizen_nagoya/items/def6176e74e8cd13ca79

自動車ソフトウェア三規格参考文献の参考文献
https://qiita.com/kaizen_nagoya/items/4595182168a2f7b0aa32

サイバー攻撃に防衛隊を組織教育
https://qiita.com/kaizen_nagoya/items/5bc6235c509e4fb108f0

＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.
### 文書履歴
ver. 0.01 初稿 20231019
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.
MariaDB コマンド（随時追加）

MariaDBを使っていくにあたってのコマンド備忘。
基本はMySQLと同じ。

# データベース一覧表示
```コマンド:コマンド
MariaDB [(none)]> show databases;
```

```結果:結果
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
```
上記結果はMariaDBインストール直後の状態。
以降DBを作成していくと増えていきます。

# 接続するデータベースの選択
使用するDatabaseを選択。
```コマンド:コマンド
MariaDB [(none)]> use mysql;
```
```結果:結果
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]>
```
入力待ちのMairaDB[]の[]内が選択したDB名に変わっていればOK

# 接続しているデータベースの確認
```コマンド:コマンド
MariaDB[mysql]> select database();
```
```結果:結果
+------------+
| database() |
+------------+
| mysql      |
+------------+
1 row in set (0.000 sec)
```
入力待ちのMariaDB[]の[]内に接続しているDBは表記されているので、コマンドライン上で使うことはほぼないかも。

# データベース作成
```コマンド:コマンド
MariaDB[(none)]> create database DBNAME;
```
DBNAMEはもちろん任意

# テーブル作成
```コマンド:コマンド
create table TABLENAME(COLUMN_NAME TYPE OPTION, ...）;
```
TABLENAME → 作成したいテーブル名
COLUMN_NAME → カラム名
TYPE → データ型
OPTION → autocomplete、unique、primary key()等
必要カラム分後に続ける

# 登録テーブル確認
```コマンド:コマンド
MariaDB [mysql]> show databases;
```
```結果:結果
MariaDB [mysql]> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| column_stats              |
| columns_priv              |
| db                        |
            ・
            ・
            ・
| transaction_registry      |
| user                      |
+---------------------------+
31 rows in set (0.001 sec)
```


# テーブル構成の確認
```コマンド:コマンド
MariaDB [xxx]> desc TABLENAME;
または
SHOW COLUMNS FROM TABLENAME;
または
SHOW FIELDS FROM TABLENAME;
```
```結果:結果
+-------------+-----------------------+------+-----+---------+-------+
| Field       | Type                  | Null | Key | Default | Extra |
+-------------+-----------------------+------+-----+---------+-------+
| no          | mediumint(8) unsigned | NO   | PRI | NULL    |       |
                                    ・
                                    ・
                                    ・
+-------------+-----------------------+------+-----+---------+-------+
x rows in set (0.003 sec)
```
いずれのコマンドを実行しても結果は同じです。
Windows11にBunChoを入れた時のエラー

# 概要
Windows11にBunChoを入れた時に、「AssertionError: Torch not compiled with CUDA enabled」というエラーが出てハマったが、NVIDIAのページから「CUDA Toolkit」をダウンロードしてインストールしてから torchを入れなおした。

# AI BunCho
https://bun-cho.work/

>AI BunChoはAIが物語のタイトルやプロットを提案したり、本文を生成する創作支援アプリです。
>
>小説に特化したAIであるパラメータ60億の大規模日本語言語モデルを用いており、かなり文脈に沿った文章の生成が行えます。



# 本記事の元ネタ
- AI Bunchoモデルで何か物語めいたものを生成する
https://note.com/shi3zblog/n/n0eb77bae5a8a

- Google Colab で AI BunChoで利用されているモデル japanese-novel-gpt-j-6b-v1.5 を試す
https://note.com/npaka/n/n4bbc4a9f612e


# 環境
- OS：Windows 11 Pro バージョン 22H2
- グラボ：GeForce RTX 3090 (24GB積んでるので少し前に買った)
- Python: 3.11.5

# ハマった所
途中で「AssertionError: Torch not compiled with CUDA enabled」
と出たので、NVIDIAのページから「CUDA Toolkit」をダウンロードしてインストールしてから torchを入れなおした。

参考：
- ryuuriの日記： VRAM8GBのRTX3080Laptop + Window11 で、今話題の RWKV(ルワクフ)を動かしてみた
https://srad.jp/~ryuuri/journal/660962/

# 解消方法
## CUDA12 のインストール
- https://developer.nvidia.com/cuda-toolkit から「CUDA 12」を「Download now」ボタンをクリックしてダウンロード

    - アップデートをメールで受け取るか聞かれるが、×ボタンで閉じる
    - OSはLinuxとWindowsがあるが、Windowsを選択
    - アーキテクチャはx86_64
    - バージョンは11(10, 11, Server 2019, Server 2022が選べる)
    - インストールタイプは exe(local)(3.0GB), exe(network)(29.4MB)
        - cuda_12.2.2_537.13_windows.exe というファイルがダウンロードされた。

## pycuda を入れる
```shell
pip install pycuda
```

## torchの入れ直し
torch 2.0.1 が入っていたが、入れ直す。
```shell
pip uninstall torch
pip cache purge
pip install torch -f https://download.pytorch.org/whl/torch_stable.html
```

(pip install torch だけだとうまくいかない)

> Successfully installed torch-2.0.1+cu118

のように表示されればOK。

## 他のパッケージをまだ入れていない場合は入れる
上記の npaka さんの記事を見ながら、パッケージのインストール
```shell
pip install transformers sentencepiece accelerate
```

## 動作確認
上記の npaka さんの記事にあるPythonプログラムを実行して、こんな感じの文章が生成されればOK。

> わたくしといふ現象は、この世界の常識から外れている。

私の環境では10秒弱で表示されました。

# 何度かやった結果

- わたくしといふ現象は、この世界の理から外れています。
- わたくしといふ現象は、全てその世界の知識が元になっています。
- わたくしといふ現象は、この地球に生きる人間全員の脳を支配し、その人間の記憶を改竄します。
- わたくしといふ現象は、まだ未解明なのです。その謎を解き明かすため、私はこの研究所に来ましたの」
- わたくしといふ現象は、『魔素』と呼ばれる生命エネルギーが結晶化した物から生成されるんですの」
- わたくしといふ現象は、その存在を知らされていないのですが?」
- わたくしといふ現象は、この魔法で世界を滅ぼす事が可能なのです」
- わたくしといふ現象は、この時代では珍しいものなのでしょう。
- わたくしといふ現象は、ほぼ同時に起こったのです」「つまり……。
- わたくしといふ現象は、今に始まったことではありません。そのたびに、わたくしがこうして無事でいることに感謝こそすれど、不満など抱いたことは一度たりともありませんわ」

文末にカギかっこが付く場合があるのが謎です。
会議でテンパる人間のアジェンダ作成

# あらすじ

こんにちは。芝を駆っている人です。

突然ですが私は喋ることが苦手です。
とても緊張する人間です。
そして緊張して焦ってテンパって空回って自爆するタイプの人間です。

そんな私ですが、「打ち合わせのアジェンダづくりがしっかりしている」とお褒め頂く機会がありました。
カンペとして作成していたものですが、褒めて頂けると嬉しいですね。
という訳で言語化もかねて、テンパる人間がどんな~~カンペ~~アジェンダを作って毎回乗り切っているかをまとめていこうと思います。

# 前提

主に使用しているのは.mdファイル(マークダウン)です。
図が必要な場合は、Excelやパワポで作成⇒画像として保存⇒アジェンダに貼り付けで何とかしています。

また、会議中はこのアジェンダを共有しながら進めるものとします。
何かコメントや質問があった場合は共有しながらアジェンダに記載しましょう。そうすることで、認識を合わせながら記録することができる上、議事録を書く手間が省けます。

# 本題

## アジェンダに書いておくべきもの（必須事項）

書いておくべきものは至ってシンプル。
__「何が何でも頭からふっとばしてはいけない事」です。__

具体的には…

__1. この会議で絶対に決めなければならない、合意を取らなければならない事__
> その会議の主目的、絶対に可決しなければならない事です。
システムの要件や仕様変更とか、運用の方針や責任範囲決めなど。
どんなにテンパってもこれを見れば原点立ち返れるようにすること。この会議で一番やらなければならないことから外れないように、見えるところに見るべきものを置いておくようにしましょう。

__2. この会議で絶対に聞かなければならない事__
> 質問や問題点の相談など、あらかじめ見えているつまづき。
あとは他部署と連携が必要な個所についての仕様確認とかもそうですね。
この辺りはテンパると確認を忘れます。ぜっっっったいに頭から吹き飛びます。
箇条書きで全然OKです。可視化することでリスト化して1つ1つ確実に聞けるようにしましょう。


## アジェンダに書いておくと便利なもの（任意事項）

書いておくと便利なものの基準は、
__「自分のテンパりの原因になりそうなものを潰すもの」__
です。
これを分かりやすく説明しなきゃ…(プレッシャー)、これは会議中に決めればいいや…(不明瞭であやふやなアドリブ的立ち回りを求められるもの)、等々。
全て空回りの原因になります。~~カンペ~~アジェンダでなるべく潰していきましょう。

__1. 説明用の図__
> システムの仕様説明とか、体制図とか、口で説明するとこんがらがりそうなものは図（絵）を描きましょう。
言葉は聞き手の頭の中のイメージに頼るので認識がブレやすいですが、図はイメージを直接突きつけるので認識を合わせやすいです。双方のイメージがずれることがほぼないので、話や質疑応答もしやすくなります。
~~口で説明しようとすると言葉が出てこなくてテンパる~~

__2. 目次(アジェンダ)__
> ゴールの分からないマラソン程だるいものはありません。
目次を作ることで、会議のボリュームと予定(解説・デモ・質疑応答等)を相手に把握してもらいます。
相手から見ると、「これくらいの規模なら時間オーバーしなさそうだな」「オーバーしそうだから先に次の会議へ遅刻連絡しておこう」「気になることがあったけど、後で質疑応答があるみたいだからそこで聞こう」…等、会議に合わせて立ち回りができるようになるのです。心理的なハードルも下がりますし、横から質問が飛んでくることが少なくなるので司会も楽です。ｲｲﾈ
また、自分がどう会議を進行するかの道しるべにもなります。
あると何かと便利です。

## アジェンダ例 

★が必須、☆が任意の要素です。
いつもこんな感じで書いています。
(内容は適当です。最近環境構築することがあったので。。。。)

```
■新規開発用サーバーの導入について

□本日のアジェンダ(☆目次)
・概要説明
・確認事項について
・質疑応答
・その他連絡事項(任意)

□概要説明
新しい開発環境の構築・導入・運用に伴い、認識合わせを行いたいと考えております。(★絶対に達成しなければならないこと)
私共としてはこのような環境を構築する想定でいます。
[図1](☆図)

□確認事項 (★絶対に聞かないといけないこと)
・現在どの程度の開発規模か
・利用人数／頻度はどの程度か
・サーバーを用意するにあたり予算等の縛りはあるか
・導入時期としてはいつごろが望ましい？
・他に環境に欲しい物はあるか

□質疑応答
（ここには、画面を共有しながら質疑応答の内容を記載する）

□その他連絡事項
明日はメンバーが休暇のため不在です

```

[図]の中には以下のような画像が入ると思ってください。
![図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2093391/21e415ef-c918-4657-6907-3eb9cff10d4a.png)

# 終わりに

いかがだったでしょうか。
マークダウンの練習もかねて書いてみましたが、言語化するとすっきりしますね。

会議というのは大変なことですが、大変な中でも必要なものをしっかりこなせるようにすれば最悪それ以外は取りこぼしてしまっても大丈夫だと思います。取りこぼしてしまったものは後でこっそり質問しましょう。
人間は万能ではありません。すべてのものなんて拾えません。すべて拾おうとするテンパります。やめましょう。
そうして少しずつテンパりの種を潰しましょう。

アジェンダをしっかり作れれば、きっと要素を拾うための手助けになります。アジェンダ君は戦友です。
会議で司会が出来ず悩んでいる人がいたらよければ試してみてください。
この記事が少しでも人の助けになれば幸いです。
デカ文字)ESP32でカラー液晶、温度計を作って遊ぶ6(結合テスト)完成

x 過去ログをみよ


目的
マイコン付きセンサーと表示部を結合させて
温度計として機能するかテストする。


3.3VとGNDとシリアル9600bpsを繋ぐ

![o_cop679.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/8f10b7dc-04f4-40aa-9034-78bb265370b3.jpeg)
ISO 26262 Par t 11 Guidelines on application of ISO 26262 to semiconductors 安全(61)

ISO 26262-11:2018 Road vehicles ? Functional safety ? Part 11: Guidelines on application of ISO 26262 to semiconductors https://www.iso.org/standard/69604.html

>Foreword
Introduction
1 Scope
2 Normative references
3 Terms and definitions
4 A semiconductor component and its partitioning
4.1 How to consider semiconductor components
4.2 Dividing a semiconductor component in parts
4.3 About hardware faults, errors and failure modes
4.4 About adapting a semiconductor component safety analysis to system level
4.5 Intellectual Property (IP)
4.6 Base failure rate for semiconductors
4.7 Semiconductor dependent failure analysis
4.8 Fault injection
4.9 Production and Operation
4.10 Interfaces within distributed developments
4.11 Confirmation measures
4.12 Clarification on hardware integration and verification
5 Specific semiconductor technologies and use cases
5.1 Digital components and memories
5.2 Analogue/mixed signal components
5.3 Programmable logic devices
5.4 Multi-core components
5.5 Sensors and transducers
Annex A Example on how to use digital failure modes for diagnostic coverage evaluation
A.1 Example of evaluation of a DMA safety mechanismAnnex 
B Examples of dependent failure analysis
B.1 Microcontroller example
B.2 Analogue example
Annex C Examples of quantitative analysis for a digital component
C.1 Description
Annex D Examples of quantitative analysis for analogue component
D.1 DescriptionAnnex 
E Examples of quantitative analysis for PLD component
E.1 Architecture of the example
E.2 PLD external measures
E.3 PLD internal measuresBibliography

自動車安全の課題は、隔離の原則が働く機械安全規格では対応できないことにある。
自動車安全規格はない。

2011年版には、Part11,Part12はなかった。
半導体の安全関連機能を網羅しようとしている。

＃ 参考資料
自動車ソフトウェア三規格参考文献
https://qiita.com/kaizen_nagoya/items/def6176e74e8cd13ca79

自動車ソフトウェア三規格参考文献の参考文献
https://qiita.com/kaizen_nagoya/items/4595182168a2f7b0aa32

サイバー攻撃に防衛隊を組織教育
https://qiita.com/kaizen_nagoya/items/5bc6235c509e4fb108f0

##＃ 文書履歴
ver. 0.01 初稿 20231019
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.
ISO 26262 Part 12: Adaptation of ISO 26262 for motorcycles 

ISO 26262-12:2018 Road vehicles - Functional safety - Part 12: Adaptation of ISO 26262 for motorcycles https://www.iso.org/standard/69605.html

>Foreword
Introduction
1 Scope
2 Normative references
3 Terms and definitions
4 Requirements for compliance
4.1 Purpose
4.2 General requirements
4.3 Interpretations of tables
4.4 ASIL-dependent requirements and recommendations
4.5 Adaptation for motorcycles
4.6 Adaptation for trucks, buses, trailers and semi-trailers
5 General topics for adaptation for motorcycles
5.1 Objectives
5.2 General
6 Safety culture
6.1 Objective
6.2 Requirements and recommendations
7 Confirmation measures
7.1 Objective
7.2 Requirements and recommendations
8 Hazard analysis and risk assessment
8.1 Objectives
8.2 General
8.3 Input to this clause
8.4 Requirements and recommendations
8.5 Work products
9 Vehicle integration and testing
9.1 Objective
9.2 Requirements and recommendations
10 Safety validation
10.1 Objective
10.2 General
10.3 Inputs to this clause
10.4 Requirements and recommendations
10.5 Work products
Annex A Overview of and workflow of adaptation of the ISO 26262 series of standards for motorcycles
A.1 General
A.2 Overview of and workflow of management of functional safety
A.3 Overview of and workflow of concept phase
A.4 Overview of and workflow of product development of system levelAnnex 
B Hazard analysis and risk assessment for motorcycles
B.1 General
B.2 Examples of severity
B.3 Examples and explanations of the probability of exposure
B.4 Examples of controllability
Annex C Example of controllability classification techniques
C.1 General
C.2 Concept of controllability classification panel
C.3 Evaluating controllability of motorcycle hazardous events
C.4 Expert riders
C.5 Controllability evaluation techniques
C.6 Evaluating ControllabilityBibliography

2011年版には、Part11,Part12はなかった。
四輪車と二輪車で、安全目標、安全方針、安全設計、安全分析が異なる。
二輪車以外に、4.6 で、trucks, buses, trailers and semi-trailersについて記述している。

自動車安全が規格になっていない。




＃ 参考資料
自動車ソフトウェア三規格参考文献
https://qiita.com/kaizen_nagoya/items/def6176e74e8cd13ca79

自動車ソフトウェア三規格参考文献の参考文献
https://qiita.com/kaizen_nagoya/items/4595182168a2f7b0aa32

サイバー攻撃に防衛隊を組織教育
https://qiita.com/kaizen_nagoya/items/5bc6235c509e4fb108f0

＃ 文書履歴
ver. 0.01 初稿 20231019

### 最後までおよみいただきありがとうございました。

いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.

Please press the like icon 💚　and follow me for your happy life.
リモートサーバーでアプリケーションが正しく動作できないとき

# プロキシが設定されたからかもしれない
研究室のサーバーを使っているので、これをすっかり忘れていた。No_proxyをコードに設定すれば、LocalHostにアプリケーションを起動できる
###
import os
os.environ["no_proxy"] = "localhost,127.0.0.1,::1"
###

# ライブラリーのバージョン
自分はGradioを使っていて、エラーはNo event dataだった。
これをアップデートすれば、直せた。
【ナメクジじゃないけどし(shift)お(option / alt)振(F)ろう】インデント自動補正コマンド 〜「インデントのコマンドなんだっけ？と聞かれたら」「しお振る」でmac/windows問わずカッコよくインデント卍〜

どうも。ダメ人間です。
今回はダメ人間が以前Windows女子()とハンズオンしていた時に「インデントってどうやるんでしたっけ~?」と聞かれ、「`shift` + `tab` です！(ドヤッ)」と伝えたところ、「あ、できない、。もしかしてmacですか？」と聞かれ、「あっ。。macだけども。。」となったため、カッコよく伝えられるようにように覚え書いた。

### 「インデント揃えるコマンド」はこれで決まり！！！

【Mac】  `shift`　`option`　 `F`

【Windous】  `Shift`　`Alt`　 `F`

### 【惜しい】「インデントを戻すコマンド」ならこれだ(多分みんな知ってる)

`shift`　`tab`

### 参考にした記事


https://programming-engineer.com/vscode-indentation/


生まれ変わったらハスキーボイスになって耳鼻科医になる。
TeraTermで設定を保持したまま自動ログイン

## はじめに
みなさん、TeraTermを開くたびにユーザ名やパスワードを入力していませんか？
自動ログインのマクロについては検索すればすぐ出てきます。
しかし、黒背景・白文字のまま。
好みの設定のまま開けたらいいのにと常々思っていました。
こちらについても検索すれば出てきはしますが、自分がわかりやすいように簡単にまとめてみました。

## まずは普通にログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3579674/3994621d-1554-3056-a9ef-c55553aaa33f.png)
ユーザ名とパスワードを入力してログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3579674/c4846718-62ea-7a2f-6727-64e67a881221.png)
今回は文字色を黄色に変更します！
設定＞ウィンドウを開く
文字色を変更してしてOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3579674/025ea80f-5e3a-c15c-5fb3-3b6dffed1505.png)
設定＞設定の保存を開き、ファイルを保存する
（筆者はデスクトップに「TeraTerm」フォルダを作成し、そこに保存しています。）

## マクロ作成
やり方はいくつかあるようですが（曖昧）、テキストファイルに書き込むのが一番簡単かと！
接続情報の4つを書き換えて保存すればOK（拡張子はttl）
```ttl:login.ttl
;=====================================================================
; 接続情報
HOSTADDR = '192.0.0.0'
USERNAME = 'ユーザ名'
PASSWORD = 'パスワード'
INITFILE = '先ほど作成したファイルのパス\ファイル名.INI'
;=====================================================================

; コマンドオプション組立て
COMMAND = HOSTADDR
strconcat COMMAND ':22 /ssh /2 /F='
strconcat COMMAND INITFILE
strconcat COMMAND ' /auth=password /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD

; 接続
connect COMMAND

end
```
## ttlファイルを開く
作成したttlファイルを右クリック＞プログラムから開く＞TeraTerm Macro Interpreter を選択すると文字色が黄色のまま、自動ログインできます！
TeraTermがない場合は別のプログラムを選択＞PCでアプリを選択 からttpmacro.exeを選択すれば開くことができます。
テストダブル　5つの違いとは

## はじめに
皆さん、テストを書きながら開発を進めていますか？
私が関わっているプロダクトではテストを書きながら開発を進めています。

 <font color=red> __テストを書く→実装する__ <font/>

を繰り返すことで、__プロダクトの信頼性を高めることができる__　のです。
<font color=gray>(たまに実装が先になってしまうこともありますが。。。。）<font/>


## テストダブルの種類
テストダブルには5つの種類があります。

``test Spy``
``Mock Object``

``test Stub`` 
``Dummy Object``
``Fake Object``

それぞれの種類のイメージを題目に示しながら以下にまとめました。


## 違いが分かりづらい Spy と Mock

``test Spy``
テスト対象の間接出力を記録する
　「メソッドは呼び出されたかどうか」
　「メソッドは何回呼び出されたか」
　「メソッドに渡された実引数は何だったか」
というポイントを検証したいときに使用する。


```
//Test Spyとして動作する代替関数
void 外部メソッド(int input)
{
	間接出力値 = input;
}

int テスト対象()
{
	...
	外部メソッド(x);
	...
}
```
```
@Test
public void テストコード()
{
	テスト対象();

	AssertEquals(期待値, 間接出力値);//Test Spyに記録させておいた間接出力値を比較検証する
}
```

``Mock Object``
上記のTestSpyは"間接出力値"だけをチェックしているのに対し、
MockObjectは"テスト成功フラグ"を確認することで
　__１.間接出力値__
　__2.間接出力値によって受け取った結果(true or false)__
という2つの事をチェックしている。

一連の確認項目を1つのメソッドで確認するのがMockObjectであるため
<font color=red>__TestSpyをリファクタリングした副産物　＝　MockObject__<font/>　である。

```
//Mock Objectとして動作する代替関数
void 外部メソッド(int input)
{
	if (期待する間接出力値 == input) {
		テスト成功フラグ = true;
		return;
	}
	テスト成功フラグ = false;
}

int テスト対象()
{
	...
	外部メソッド(x);
	...
}
```
```
@Test
public void テストコード()
{
	期待する間接出力値 = 999;    //Mock内で比較に用いる期待値
	テスト対象();
    AssertTrue(テスト成功フラグ);    //Mock内で検証した結果をチェック
}
```

## よく使うStub

``test Stub`` 
テスト対象に間接入力を操作する
テスト対象に渡したい値を設定するためのオブジェクト

```
// Test Stubとして動作する代替関数
int 外部メソッド()
{
	return indirectInputValue;
}

int テスト対象()
{
	...
	answer = 外部メソッド();
	...
}
```
```
@Test
public void テストコード()
{
	indirectInputValue = 100; //TestStubである外部メソッド()の返り値となりテスト対象に入力
	AssertEquals(期待値,  テスト対象());
}
```

## テスト書くたび徐々にわかる？Dummy
``Dummy Object``
テストに影響を与えない代替オブジェクト
これを設定してもテスト対象の返り値に影響しないが、コンパイルなどの都合上準備すべきもの。
下記は例になりますが、fooの内容が変わってもテスト対象の返り値は必ず10になる、
この時のfooがDummy Object
```
int テスト対象(Foo foo)
{
	return 10;
}
```
```
@Test
public void テストコード()
{
	Foo foo = new Foo(); //Dummy Object
	AssertEquals(期待値,  テスト対象(foo));
}
```

## 今のところ出番のないFake
``Fake Object``
テスト実行中に間接出力を受け取り、間接入力を操作するもの
本物同様の動きをする
認証の機能などを持たせたプロダクトで動きを確認するときなどに作る完全コピー品のようなもの。
<font color=gray>（まだあんま使った記憶ないな)<font/>


## 結論

``test Spy``テスト対象の出力を記録するもの
``Mock Object``testSpyをリファクタリングした時の副産物

``test Stub`` テスト対象に間接入力をする
``Dummy Object``テスト対象の結果に影響は与えないけど動かすために必要なもの
``Fake Object``本物同様の動きをする、完全コピー品のようなもの

少しは理解ができた気もしますが、
完全理解にはテストを書く訓練がまだまだ必要そうです。
若手エンジニア奮闘記②「研修編」

# はじめに

皆さん初めまして。増田です。
私は、IT企業に勤める入社二年目のSEです。
いわゆる若手エンジニアってやつですね（タイトル回収）。

私自身、入社前まではITについての勉強などしたことも無く、まったく知識がありませんでした。
そんな私が未経験でIT業界に足を踏み入れてどのような経験をしたか、何を感じ、何を学んできたのかを話していきたいと思います。

この記事を読んでいるあなたはどんな人でしょうか。
これからIT業界に関わっていきたい人でしょうか、今の私と同じように若手という立場の人でしょうか、もしくはたまたまこの記事を見つけた人でしょうか。

この記事を読んで、皆さんに少しでも興味を持ってもらえたら幸いです。

# 研修（配属前）

形態は異なるかもしれませんが、入社直後は新人向けの研修を行ってくれる会社が多いのではないでしょうか。
特にIT系は基礎的な知識を身に付けるという意味合いもあり、手厚い研修を行ってくれる印象があります。
私の会社も研修は手厚く、研修期間はなんと3か月もあり、研修後にそれぞれの部署に配属されていきます。

では、この3か月間どんなことを行ってきたのか、気になりますよね？
そんなあなたのために、研修の内容を箇条書きでまとめました。
・ネットワーク機器についての基礎的な学習
・Office製品の基礎的な使用方法の学習
・Webサーバーの構築
・データベースの操作
・Java、C#を用いたプログラミング
・Linuxの操作
研修の内容を大きく分けるとこんなところです。

# Javaを用いたプログラミング

研修の中で最も印象に残ったのは、Javaを用いたプログラミングです。
1か月の間、黒い画面に浮かび上がっている謎の文字の羅列と、ひたすらにらめっこしていました。
最初はJavaとはなんだ、プログラミングとはなんだといった状態で、頭上に「？」が無数に浮かんでいたのですが、Javaでのプログラミングの考え方から学び、簡単なプログラムを作っていくことで、少しずつ慣れていきました。

Javaでの研修の最後に「プログラミングで電卓をつくる」といった課題が出たのですが、こいつにはかなり手を焼かされました。
どんなに頭を悩ませて考え付いた実装を施しても、期待するようには動いてくれず、最終的には一緒に研修を受けている同期たちと協力して（助けてもらって）なんとか完成したのを憶えています。

また、こうして培った論理的な考え方は今でも私を助けてくれます。
プログラミングするときはもちろん、人に何かを伝えるときにも役立っていて、最終的な結論は何で、そこまでの過程でどんな情報が必要で、どのように順序立てて話していくことが相手に最も伝わるのか、みたいなイメージを頭の中で構築してくれます。
論理的思考は必ず必要になるものの、経験を重ねないとなかなか養うことができないものだと思います。
それを研修を通して、しかも同時にプログラミングも学びながら身に付けることができたのは、非常にラッキーな経験でした。

# まとめ

いかがだったでしょうか。
今回は1回目ということで、新卒時に受けていた研修について話しました。
若手の頃は特に楽しいこと、つらいことがはっきりと感じられる時期だとは思いますが、ここで学んだことは、今後の自分にとって揺らぐことのない土台になると思います。
自分が何を学び、何を感じたか、今のうちから一つ一つ大事にしていきたいですね。

次回は研修が終わり、配属された後についての話しをしていこうと思います。
お楽しみに。
【UiPath Appsでアプリ作成①】コンテナーとスタイルを駆使してヘッダーを作成する

UiPath Appsはローコードで手軽にWebアプリを作成することができます。
今回は、コンテナーとスタイルを使いこなしてヘッダーを作成する方法をご紹介します。

[【公式ドキュメント】UiPath Apps](https://docs.uipath.com/ja/apps/automation-cloud/latest)
[【ユーザーガイド】コンテナ―](https://docs.uipath.com/ja/apps/automation-cloud/latest/user-guide/container)


<h2>今回作成する画面</h2>
この記事で作成するヘッダーの画面です。ロゴとアプリ名が左側にあり、右側にメニューを配置しています。

UiPath AppsではレガシとVBの二つを選べますが今回はVBで開発を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575031/be29d183-ccd0-bdc9-390b-575d1f6b22f2.png)

<h2>ヘッダーの作成</h2>

まずは空のページにコンテナーを配置し、背景色を白に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575031/ed21ad0f-38db-3e31-6ad3-b392fd383bb6.png)

次にロゴを画面の左上に配置します。今回は画像ではなく、Appsにもともとあるアイコンを使います。サイズや色はお好みで設定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575031/5ae07135-c7ab-fe3a-9c2e-3109fa786363.png)

最初に配置したコンテナーの下に、もう一つコンテナーを作成しします。（わかりやすいように色を黄色にしていますが特に変える必要性はありません）新しく作成したコンテナーにラベルを使ってダッシュボード、支出の記録、収入の記録の3つの文字を配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575031/0526a47a-273c-8745-235c-f4b66b0c3d7b.png)


黄色のコンテナーを選択し、レイアウトを縦方向から横方向に変更します。こうすることで要素を横に並べることができます。感覚などはスタイルの下部にあるパディング、マージンを使って整えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575031/f015362b-0540-341f-7c88-0dbc8c33baa7.png)


黄色のコンテナーを最初に配置した白色のコンテナーの中に入れます。そのあとに白色のコンテナーのスタイルを横方向に設定します。ロゴの横に黄色のコンテナーが配置できていれば成功です。できなかった方は、画像の左のパネルを参考に、白いコンテナーと黄色のコンテナーが入れ子の構造になっているか確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575031/5b05be2f-2d6b-ba23-2473-2a10f63950a7.png)

白いコンテナーを選択してから、スタイルを幅/高さを揃えるに変更します。そうすることでヘッダーとは逆側にメニューを配置することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575031/792d8b7c-f8d2-8027-245f-6ba6fcc7c9f2.png)

後は、ラベルのイベントからURLを開く、ページを開くなど設定し、デザインを整えれば完成です。
プレビューで確認してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575031/be29d183-ccd0-bdc9-390b-575d1f6b22f2.png)

アプリの名前を入れ忘れていたので、最後に足しました:bow:
復習としてタイトルをロゴの横に配置してみてください。（投げやり）

下の赤い線は、赤色に塗りつぶした空っぽのコンテナーを配置して高さを5pxに設定することで作りました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575031/5c90d8e0-418d-fb56-2b96-9c78267ffeb4.png)


最終的な各要素の配置は以下の画像の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575031/1c40df9a-b8e8-8cf9-f768-d4ca9b8dee6c.png)

<H2>まとめ</H2>

今回はコンテナーとスタイルを駆使して、アプリのヘッダーを作成しました。CSSを勉強し始めたときに、要素を横に並べたり、右に寄せたりするのが難しくて、ヘッダー作成で沼っていたことを思い起こせば、圧倒的に簡単にかつ直感的に作ることができました。ローコードで作れるのすごい。

アプリ作成第二弾として、ヘッダーとフッターを共通化した記事も書いているのでぜひご参照ください。

https://qiita.com/kumatech/items/f1b8ea4c683233b8bc23