MISRA C まとめ #include <misra_c.h>、OSEK(99), coding(38)

C言語を習得する３つの方法
https://qiita.com/kaizen_nagoya/items/84cab0888c193bba429b

C言語(C++)が必要な人と必要ない人
https://qiita.com/kaizen_nagoya/items/2afe9e846b55b24cb6f1

# MISRA C/C++
MISRA Cは自動車業界などで利用しているC言語記述作法(coding standard)です。

MISRA C++もあります。

CERT C, CERT C++などの他の記述作法からも参照されています。

MISRA C:1998,MISRA C:2004, MISRA C:2012と三世代に進化しています。

Qiitaの記事から、書いた方の引用「」に加えて、
「補足: by @kaizen_nagoya 」という解説事項を加えています。

最後に、MISRAのコードの断片をコンパイル・実行する際に利用するヘッダファイルmisra_c.hを記載しました。

参考文献は
MISRA-C 2012 Referenceに掲載している文献の入手可能性を確認
https://qiita.com/kaizen_nagoya/items/96dc8b125e462d5575bb

C言語(C++)が必要な人と必要ない人
https://qiita.com/kaizen_nagoya/items/2afe9e846b55b24cb6f1

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

# C言語規格
ANSI C 1989, ISO/IEC 9899:1990, programming language, 1st 
ISO/IEC/ANSI 9899:1999,programming language,2nd
ISO/IEC/ANSI 9899:2011, programming language,3rd

## 未定義(undefined)
CPUの機能、性能によりどのように実現すると効率的か決めるとCPU, Cコンパイラの発展に足枷となると良くないので、敢えて定義しないことを規定する。個々のCPU, Cコンパイラ処理系ごとに定義すると良い。

## 未規定(unspecified)
CPUの機能、性能により複数の解決方法の候補があり、どちらかを規定するとCPU, Cコンパイラの発展に足枷となると良くないので、敢えてどちらか一方にしないことを規定する。個々のCPU, Cコンパイラ処理系ごとに定義すると良い。

## 処理系定義(implementation definition)
処理系ごとに定義すると良い事項。未定義、未規定と異なる点は、必ず処理系で定義してプログラマに示すことが必要である事項。
ヘッダファイルなどで規定している定数、宣言などで実現している場合もある。

## 地域依存(locale)
処理対象、註釈(comment)として用いる、文字コード、文字フォント、自然言語の種類などにより必要な機能を定義する事項。

# 規則分類
必須(mandatory) 2012新設。逸脱することを想定していない。必須であっても逸脱する必要があれば、逸脱の手続きを取るとともに、MISRAに対して、逸脱から必須に変更することを要求すると良い。

必要(required)逸脱する場合には、逸脱の手続きを取る。

推奨(advisory)．逸脱手順を必要としない。

「推奨」を「必要」、「必要」を「必須」として取り扱っても良い． 
規則を格上げする場合には、その理由、根拠、複数のコンパイラ、複数のツールの結果を示すことが大切である。

# 逸脱の手続き
規則を守ることが、品質を上げることではありません。
規則が何のためにあるかを理解し、現在取り組んでいる製品と方向性が違う場合には、製品の必要な品質特性に合わせるために逸脱することが大切です。

逸脱は、ソースコードの先頭または末尾の註釈(comment)または下記のような文書を作るかは組織で決めてください。

![スライド060.jpg](https://qiita-image-store.s3.amazonaws.com/0/51423/036767d4-b2b8-4912-4bfc-9e2d55f93a3a.jpeg)

![スライド061.jpg](https://qiita-image-store.s3.amazonaws.com/0/51423/da18a8bb-dfc1-dc2a-cd56-74a2a16ecd6f.jpeg)

![スライド062.jpg](https://qiita-image-store.s3.amazonaws.com/0/51423/720e6415-dac8-0483-de49-9d7b6060a09d.jpeg)

![スライド063.jpg](https://qiita-image-store.s3.amazonaws.com/0/51423/313d4da8-b873-879f-2e61-4de1ef2bace5.jpeg)

![スライド064.jpg](https://qiita-image-store.s3.amazonaws.com/0/51423/7baa03bf-6ea7-203f-ab76-0e7a0d56f18d.jpeg)

# 1 Qiitaの記事
 1.1 STM32マイコンでFreeRTOSを用いてLEDを制御する(Lチカ)
https://qiita.com/46sayu/items/50b43477e7dfd55c9e21

```c
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
```

1.2 Railsアプリの例外構造パターン
https://qiita.com/tasaki-i3/items/6e90c8f037c35375c1c3

```ruby
module FatalError
  class InvalidArgument < Base
  end
end

class Device
  VALID_STATUSES = {
    :deleted   => 0,
    :activated => 1,
  }

  def status=(new_status)
    if new_status.is_a?(String)
      super VALID_STATUSES[new_status.underscore.to_sym]
    elsif new_status.is_a?(Symbol)
      super VALID_STATUSES[new_status]
    else
      # 想定外の値が指定されたので例外にする
      raise FatalError::InvalidArgument
    end
  end
end
```
「elsif句を使った場合とか、case文では必ずelse句をつけなさいという先人の教え(MISRA-C 15.7とか)があります」

補足: by @kaizen_nagoya 
「MISRA C:2012 15.7 すべてのif ... else if構文は、else文で終了しなければならない」
「MISRA C:2012 16.4  すべてのswitch文は、デフォルトのラベルをもたなければならない」
が先人の教えです。

1.3 OpenVX 1.1 SC版 (Safety Critical版)の変更点
https://qiita.com/takeoverjp/items/9a3ea016c2eb30a0fd7a

 1.4【社内勉強会】「リーダブルコード」の紹介
Javaコーディング規約勉強会
https://qiita.com/yuji38kwmt/items/7b1d25fc72e3fcd5d4f4

「[補足] 「関数の末尾以外の return 禁止」の発生元
MISRA-Cという「C言語のためのソフトウェア設計標準規格」が発生元らしい。」

補足: by @kaizen_nagoya 
禁止ではなく、末尾以外で戻る場合には、その理由、それでいい根拠を文書化することが必須なのです。逸脱の手続きと言います。規則を守る方が信頼性が下がる場合もあります。

1.5 C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識
https://qiita.com/kaizen_nagoya/items/d89a48c1536a02ecdec9

「SWESTでも、何度もMISRA Cの講演、演習を実施しています。」

### 1.5.1 C++ Templates Part1 BASICS 
Chapter 3. Class Templates 3.2 Use of Class Template Stack stack1test.cpp
https://qiita.com/kaizen_nagoya/items/cd5fc49106fad5a4e9ed

1.6 [C][C++]の国際規格案の例題をコンパイルするときの課題７つ。
https://qiita.com/kaizen_nagoya/items/5f4b155030259497c4de

### 1.6.1
ISO/IEC 14288 C++ standard. bit-field
https://qiita.com/kaizen_nagoya/items/e731e6d02258fe559056

1.7どうやって MISRA C Example Suiteをコンパイルするか
https://qiita.com/kaizen_nagoya/items/fbdbff5ff696e2ca7f00

### 1.7.1 MISRA C.2.1 
Type widening in integer promotion,(wicm3.c )
https://qiita.com/kaizen_nagoya/items/6a24db5d51efae358cfb

### 1.7.2 MISRA C++ 5-0-16
https://qiita.com/kaizen_nagoya/items/7df2d4e05db724752a74

## 1.8 CERT 
コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)
https://qiita.com/kaizen_nagoya/items/74220c0577a512c2d7da

## 1.8.1 CERT C

### 1.8.1.1 CERT C入門(1) Rule 01. Preprocessor (PRE)
https://qiita.com/kaizen_nagoya/items/8d2cb4158ed53d5a0a28

### 1.8.1.2 CERT C入門(2) Rule 02. Declarations and Initialization (DCL)
https://qiita.com/kaizen_nagoya/items/8db2bf294bb66344d6df#_reference-52026d66c61fb88415c7

## 1.8.2 CERT C++
### 1.8.2.1 CERT C++入門(1) Rule 01. Declarations and Initialization (DCL)
https://qiita.com/kaizen_nagoya/items/61b3c431756fe8e6af3e

1.9 プログラミング言語教育のXYZ
https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4
「TOPPERS　オープンソースのMISRA C対応。」

# 2. 関連資料
2.1 SWESTまとめ
https://qiita.com/kaizen_nagoya/items/62e56ae151554d6200c0
https://swest.toppers.jp/SWEST17/program.html 組込み開発者におくる MISRA C

2.2 効率的なHAZOPの進め方
https://qiita.com/kaizen_nagoya/items/2b8eae196945b7976446

「物について記述してもよい 事前，事後（初期条件，境界条件）を記述 3つ以上の設計指針を使う 共用品設計(universal design)，形の設計指針，言語規約(MISRA）など」

2.3 オープンソースカンファレンスの出展、セミナ、LTのすすめ
https://qiita.com/kaizen_nagoya/items/8628baa3f6e1bb500045
「名古屋アジャイル勉強会 ういろMUG Proof Cafe TOPPERS プロジェクト MISRA C愛好会 ちょけねこ友の会 などの名古屋の勉強会の集まりで出展」

2.4 TOPPERS まとめ（５つの壁のうちの一つ）
https://qiita.com/kaizen_nagoya/items/9026c049cb0309b9d451
 MISRA C MISRA C研究会は、NPO法人 組込みソフトウェア管理者・技術者育成研究会(SESSAME)の作業部会(WG)

 2.5 プログラマが学会・研究会で対外発表する際の９つの関門
https://qiita.com/kaizen_nagoya/items/b66b0bb7eb70b30082c8

「二上貴夫 SWESTのMISRAの解説で、少年のような目で技術を語っていた。」

 2.6 SWEST20で基調講演(再演含む）してほしい人上位10人
https://qiita.com/kaizen_nagoya/items/d4d9bf953953c720361d
https://swest.toppers.jp/SWEST19/program/s3c.html 1.3 「二上貴夫 SWEST4 自動車向け組込みC言語用ガイドラインMISRA C」

# 3 参考文献・URL
 3.1 MISRA C bulletin board
https://www.misra.org.uk/forum/index.php
英語です。日本からも多数質問をし、原書の改訂に貢献しています。

 3.2 MISRA C研究会
http://www.sessame.jp/workinggroup/WorkingGroup3/index.htm

 3.3 MISRA C愛好会 
http://researchmap.jp/kaizen/MISRA-C/
OSCなどに出展する時の任意団体

 3.4  misrac 断片コンパイル用ヘッダ

```misra_c.h
/* Author, (c) Dr. Ogawa Kiyoshi*/
/* ver 1.0 January 1, 1999 */
/* ver 2.0 Feburary 2, 2005 */ 
/* ver 3.0 March 3, 2013 */
/* @kaizen_nagoya, http://researchmap.jp/kaizen/MISRA-C/ */
/* Purpose: macro, definition and/or information to MISRA-C Examples.*/
/* https://gcc.gnu.org/onlinedocs/gcc/Standards.html */
/* https://gcc.gnu.org/c99status.html */
/* http://www.polyomino.org.uk/computer/c/ */
#ifndef __MISRA_C__
#define __MISRA_C__

#include <float.h>
#include <iso646.h>
#include <limits.h>
#include <stdarg.h>
#include <stdbool.h> /* define true */
#include <stddef.h>  /* define NULL */
#include <stdint.h>  /* C99: define int16_t */

#ifdef __STDC_VERSION__
#include <stdalign.h>
#include <stdnoreturn.h>
#endif 

#include <stdio.h>
// #include <sys/types.h>
typedef bool bool_t;
typedef float float32_t; /* dir4.6 */
typedef long double float64_t; /* dir4.6 */ 

#ifdef nofreestanding
#include <string.h>
#include <stdlib.h>
#endif

#ifndef DIR4_6
#ifndef __STDC_VERSION__

typedef char char_t; 
typedef unsigned char uint8_t; /* dir4.6 */
typedef unsigned short uint16_t; /* dir4.6 */
/*typedef unsigned long uint32_t;*/ /* dir4.6 */
typedef unsigned long long uint64_t; /* dir4.6 */
typedef unsigned long long uint128_t; 

typedef signed char int8_t; /* dir4.6 */
typedef signed short int16_t; /* dir4.6 */
/* typedef signed long int32_t; *//* dir4.6 */
typedef signed long long int64_t; /* dir4.6 */
typedef signed long long int128_t;

typedef float float32_t; /* dir4.6 */
typedef long double float64_t; /* dir4.6 */ 
typedef long double float128_t; /*dir4.6 */
#endif
#endif 

#ifndef  NC30  /* without renesas NC30WA, manual C.3.3 predefined macro */
#define __ISO_IEC_9899_1999__
#define __int32bit__
#define PR1x(a,b) (void)printf(" "#a  " = %" #b "=%x\n", a,a)
#define PR2x(a,b,c)  (void)printf(" "#a  " = %" #c "=%x \n " #b " = %" #c "=%x\n", a,a,b,b)
#define PR3x(a,b,c,d)  PR1x(a,d),PR2x(b,c,d);

#define PR1(a,b) (void)printf(" "#a  " = %" #b "\n", a)
#define PR2(a,b,c)  (void)printf(" "#a  " = %" #c "\n " #b " = %" #c "\n", a, b)
#define PR3(a,b,c,d)  PR1(a,d),PR2(b,c,d);

#else /* for renesas NC30W only */
#define __ISO_IEC_9899_1990__
#define __int16bit__
#define PR1(a,b)
#define PR2(a,b,c)
#define PR3(a,b,c,d)
#endif /*__STANDARD_IO__ */

#ifdef __ISO_IEC_9899_2011__
#include <stdarg.h>
#include <stdint.h> 
#define PRSV() printf("ISO/IEC 9899:2011\n")
#elseif __ISO_IEC_9899_1999__
#include <stdarg.h>
#include <stdint.h> 
#define PRSV() printf("ISO/IEC 9899:1999"\n)
#elseif __ISO_IEC_9899_1990__
/* #include <stdint.h> */ /*nc30wa is not supported */
typedef _bool bool_t;
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef signed long int64_t;
typedef signed long long int128_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long  uint64_t;
typedef unsigned long long uint128_t;
typedef float float32_t;
typedef double float64_t;
typedef long double float128_t;
/* macro using printf debug or not.*/
#define PRSV() printf("ISO/IEC 9899:1990\n")
#elseif __int16bit__
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
typedef unsigned long uint64_t;
typedef unsigned long  uint128_t;
#define PRSV() printf("no ISO/IEC 9899,16bit\n")
#else
/* typedef unsigned long long uint128_t;*/
#define PRSV() printf("no ISO/IEC 9899,32bit\n")
#endif

/* for each example*/ 

#ifdef DIR4_8
typedef struct OpaqueType *pOpaqueType;

pOpaqueType GetObject(void);
void UseObject(pOpaqueType);
#endif

#ifdef __MISRAC_6_6__
void f (uint16_t *p){
printf("uint16_t *p = %d, p = %d\n",*p,(int)p);
}
#endif /*__MISRAC_6_6__ */


#ifdef __MISRAC_6_9__
//typedef signed char int8_t;
//typedef signed short int16_t;
//typedef signed int int32_t;

#ifndef _INT64_T
#define _INT64_T
typedef signed long int64_t;
#endif

#ifndef _bool
typedef unsigned int _bool;
#endif 

#endif 

#ifdef __MISRAC_DIR_4_1__
#include <string.h>
#include <stdbool.h>
typedef float float32_t;
#endif

#ifdef DIR4_13
typedef struct mutex mutex_t;

struct mutex
{
    unsigned int number;
    unsigned char* name;
}mutex;

mutex_t n;

mutex_t mutex_lock (void)
{
    return n;
}
void mutex_unlock (mutex_t m)
{
    m.number = 0;
    m.name = (unsigned char *)"";
    return;
}

int16_t  x;

#endif

#ifdef __MISRAC_RULE_1_1__
#define __zpage // zero page, 0x0000
#define __near  // short address
#define __far	// full address
#define zpage __zpage

int i = 1;

#endif

#ifdef R2_1

int  error_handler (void){
	return true;
}

#endif


#ifdef __MISRAC_RULE_2_2__
volatile uint16_t v=1;
char a[]={"123456789ABCDEF"};
char *p=a;
#endif


#ifdef __MISRAC_RULE_3_2__
bool_t b=0;
#endif

#ifdef __MISRAC_RULE_5_1__
int32_t ABC = 1;
#endif

#ifdef __MISRAC_RULE_5_2__
int32_t engine_exhaust_gas_temperature_raw=0;
#endif

#ifdef __MISRAC_RULE_5_3__
struct astruct{
int16_t m;
};

void g (struct astruct *p){printf("struct astruct *p->m = %d\n",p->m);}
#endif

#ifdef __MISRAC_RULE_5_8__
extern void foo (void);
#endif

#ifdef __MISRAC_RULE_5_9__
extern void bar1(void) ;
extern void bar2(void);
#endif

#ifdef __MISRAC_RULE_7_1__
uint16_t code[ 10 ];
#endif

#ifdef __MISRAC_RULE_7_4__
void f1 (char * s1){
PR1(s1,s);
}
void f2(const char *s2){
PR1(s2,s);
}
#endif

#ifdef __MISRAC_RULE_8_1__
xn = 0;
int16_t xc = 1;
fn(void){
return printf("fn(void);\n");
}
int16_t fc(void){
return printf("int16_t fc(void);\n");
}
void gn(char c, const k){
PR2(c,k,d);
}
void gc(char c, const int16_t k){
PR2(c,k,d);
}
#endif


#ifdef __MISRAC_RULE_8_2__

#endif

#ifdef R8_4
extern uint16_t var1; // 宣言
extern void func1( uint16_t var1 );
extern void func2( uint16_t var1 );
#endif

#ifdef __MISRAC_RULE_8_4__
extern int16_t count;

extern void func1 (void);
extern void func2 (int16_t x, int16_t y);
extern void func3 (int16_t x, int16_t y);

#endif

#ifdef __MISRAC_RULE_8_5__
extern int16_t a;
#endif


#ifdef __MISRAC_RULE_8_6__
void f1(void);
void f2(void);
#endif

#ifdef __MISRAC_RULE_8_11__
int32_t array1[10]={0,1,2,3,4,5,6,7,8,9};
int32_t array2[]={9,8,7,6,5,4,3,2,1,0};
#endif

#ifdef __MISRAC_RULE_8_13__
char last_char (const char * const s);
// uint16_t first( const uint16_t a[5]);
#endif

#ifdef __MISRAC_8_14__
volatile bool_t b=true;
struct s{
uint16_t count;
uint16_t a[ 10 ];
};
struct s sps = {
0,
{0,1,2,3,4,5,6,7,8,9}
};
struct s * sp;
char *p="Control Statement Expressions\n";
#endif

#ifdef R11_1 
void f(int16_t n){
//	printf("%d\n",n);
}
#endif

#ifdef __MISRAC_RULE_11_1__
void f(int16_t n){
 PR1(n,d);
}
#endif

#ifdef R11_2
void f(int16_t n){
//	printf("%d\n",n);
}
#endif


#ifdef R11_3 
uint32_t read_value ( void ){
	return true;
}
void print ( uint32_t n ){
	PR1(n,d);
}
#endif

#ifdef __MISRAC_RULE_11_3__
uint32_t read_value ( void ){
return true;
}
void print ( uint32_t n ){
PR1(n,d);
}
#endif

#ifdef R11_4
void print ( uint16_t n ){
	PR1(n,d);
}
#endif

#ifdef __MISRAC_RULE_11_9__
void f ( uint8_t *p ){
if (NULL == p){
PR1(NULL,d);
} else {
PR2(*p,NULL,d);	
}
}
#endif


#ifdef __MISRAC_RULE_12_1__
int8_t f(int8_t a, int8_t b){
return a+b;
}
#endif

#ifdef __MISRAC_RULE_12_3__
void f(int8_t a, int8_t b){
PR2(a,b,d);
}
#endif

#ifdef __MISRAC_RULE_13_1__
void p ( uint16_t a[ 2 ] ){
PR2(a[0],a[1],d);
}
#endif

#ifdef __MISRAC_RULE_13_2__

#endif

#ifdef R14_1
uint32_t read_u32(void){
static uint32_t i = 14;
return --i;
}
float32_t read_float32(void){
static float32_t f = 0;
return ++f;
}
#endif 

#ifdef __MISRAC_RULE_14_4__
bool_t flag= true;
#endif

#ifdef __MISRAC_RULE_17_3__
double power (double d, int n){
return (double)d*n;
}
#endif

#ifdef R17_6
#define TEN 10U
 uint16_t v1[TEN]={0,1,2,3,4,5,6,7,8,9};
 uint16_t v2[TEN+TEN]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
  uint16_t v3[TEN+TEN+TEN]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30};
  
uint16_t t2(uint16_t n, uint16_t a[20]) {    
    uint16_t i;
    uint16_t sum=0U;
    for(i = 0U; i < n; ++i){ 
        sum = sum + a[i];
    }
    return sum;
}
uint16_t t(uint16_t n, uint16_t a[]) {    
    uint16_t i;
    uint16_t sum=0U;
    for(i = 0U; i < n; ++i){ 
        sum = sum + a[i];
    }
    return sum;
}
#endif

#ifdef __MISRAC_RULE_17_6__
 uint16_t v1[10]={0,1,2,3,4,5,6,7,8,9};
 uint16_t v2[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
#endif

#ifdef __MISRAC_C_2_1_
#ifndef  __STANDARD_IO__  /* without renesas NC30W */
#define PR(a,b,c,d,e)  printf("%" #a " + %" #a "= %" #a ", %" #b "\n", c, d, c + d, e)
#define PRC(a,b,c,d,e,f) printf("%" #a" + %" #a " = %" #a ", %" #b "\n", c, d, (f) c + d, e)
#define PRT(a,b,c,d,e,f) PR(a,b, c, d, e); e = c + d;PR(a,b, c, d, e); e = (f) c + d;/*printf(#e"= %llu ",e)*/;PRC(a,a, c, d, e, f);PRC(a,b, c, d, e, f)
#else /* for renesas NC30W only */
#define PR(a,b,c,d,e)
#define PRC(a,b,c,d,e,f) 
#define PRT(a,b,c,d,e,f)
#endif /*__STANDARD_IO__ */
#endif /* __MISRAC_C_2_1_ */

#endif /* __MISRAC__ */
```

# 4 関連文献
cpprefjp - C++日本語リファレンス
https://cpprefjp.github.io/

コンパイラの実装状況
https://cpprefjp.github.io/implementation-status.html

typedef は C++11 ではオワコン
https://qiita.com/Linda_pp/items/44a67c64c14cba00eef1

C99からC++14を駆け抜けるC++講座
https://qiita.com/yumetodo/items/e49a673afd9a3ecb81a8

## 4.1 自己参照
どうやって MISRA Example Suiteをコンパイルするか
https://qiita.com/kaizen_nagoya/items/fbdbff5ff696e2ca7f00

docker(154) Misra Example Suite at docker コンパイル完了までの道のり
https://qiita.com/kaizen_nagoya/items/71f04a0204d5a1114577

MISRA C.2.1 Type widening in integer promotion,(wicm3.c )
https://qiita.com/kaizen_nagoya/items/6a24db5d51efae358cfb

MISRA-C 2012 Referenceに掲載している文献の入手可能性を確認
https://qiita.com/kaizen_nagoya/items/96dc8b125e462d5575bb

MISRA C:2012追加文書
https://qiita.com/kaizen_nagoya/items/d08b2ae495b136f9638c

MISRA C まとめ #include <misra_c.h>
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9

MISRA C 2012のTechnical Corrigendum 1の21.X訂正意見はほとんど日本からだった件
https://qiita.com/kaizen_nagoya/items/152c1de26b0831c02f41

Autosar Guidelines C++14 example code compile list(1-169)名古屋のIoTは名古屋のOSで https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76

MISRA C++ 5-0-16
https://qiita.com/kaizen_nagoya/items/7df2d4e05db724752a74

言語規格、コーディング標準の使い方
https://qiita.com/kaizen_nagoya/items/01256365b82666e101aa

コピペコンパイルエラーあるある
https://qiita.com/kaizen_nagoya/items/29c832de9d762aed2761

C++ Error Message Collection(1)does not name a type, 11 articles
https://qiita.com/kaizen_nagoya/items/acb9f1a9b5aad6df06bd

dockerにclang
https://qiita.com/kaizen_nagoya/items/8829ffeee397eda50e80

docker gnu(gcc/g++) and llvm(clang/clang++)
https://qiita.com/drafts/059874ea39c4de64c0f7

コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)
https://qiita.com/kaizen_nagoya/items/74220c0577a512c2d7da

Compare the contents of C++N4910:2022, C++N4741:2018 and C++N4606:2015
https://qiita.com/kaizen_nagoya/items/483246d40f98abff7ded

C++ sample list
https://qiita.com/kaizen_nagoya/items/54ad75b73825b7c04f86

clang++, g++コンパイルエラー方針の違いの例
https://qiita.com/kaizen_nagoya/items/ea6e5009fe126d270a82

astyle 使ってみた
https://qiita.com/kaizen_nagoya/items/3c9a87a781d53a1a23f3

C++N4606 Working Draft 2016, ISO/IEC 14882, C++ standardのコード断片をコンパイルするためにしていること
https://qiita.com/kaizen_nagoya/items/a8d7ee2f2e29e76c19c1

コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)
https://qiita.com/kaizen_nagoya/items/74220c0577a512c2d7da

Clang/Clang++(LLVM) gcc/g++(GNU) コンパイラ警告等比較
https://qiita.com/kaizen_nagoya/items/9a82b958cc3aeef0403f

C++2003とC++2017でコンパイルエラーになるならない事例集
https://qiita.com/kaizen_nagoya/items/a13ea3823441c430edff

Qiitaに投稿するCのStyle例(暫定)
https://qiita.com/kaizen_nagoya/items/946df1528a6a1ef2bc0d

cpprefjpのdecltypeをコンパイル試験
https://qiita.com/kaizen_nagoya/items/090909af702f0d5d8a67

MISRA C++ 5-0-16
https://qiita.com/kaizen_nagoya/items/7df2d4e05db724752a74

C++ Templates Part1 BASICS Chapter 3. Class Templates 3.2 Use of Class Template Stack stack1test.cpp
https://qiita.com/kaizen_nagoya/items/cd5fc49106fad5a4e9ed

ISO/IEC TS 17961:2013 C Secure Coding Rules(1) All list(to be confirmed)
https://qiita.com/kaizen_nagoya/items/54e056195c4f11b850a1

C言語（C++)に対する誤解、曲解、無理解、爽快。
https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a

C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識
https://qiita.com/kaizen_nagoya/items/d89a48c1536a02ecdec9

'wchar.h' file not found で困った clang++ macOS
https://qiita.com/kaizen_nagoya/items/de15cd46d657517fac11

Open POSIX Test Suiteの使い方を調べはじめました
https://qiita.com/kaizen_nagoya/items/644d5e407f5faf96e6dc

MISRA-C 2012 Referenceに掲載している文献の入手可能性を確認
https://qiita.com/kaizen_nagoya/items/96dc8b125e462d5575bb

MISRA C まとめ #include <misra_c.h>
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9

「C++完全理解ガイド」の同意できること上位10
https://qiita.com/kaizen_nagoya/items/aa5744e0c4a8618c7671

物理記事　上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff

数学関連記事１００
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d

言語・文学記事　１００
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6

医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82

通信記事１００
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7

自動車　記事　１００
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5

# OSEK参考資料(Reference)
WSL上にnxtOSEKの開発環境を構築する方法
https://qiita.com/TsuneoNakanishi/items/76999b2e6b4e9cd30117

Raspberry Pi 3 Model B+ 向けにリアルタイムOSを実装してみた話
https://qiita.com/tenkoh2/items/baa8e0b6c09669793b4f

[メモ] TrampolineRTOSでLチカ (OSEK/VDX & AUTOSAR APIにあわせたRTOS)
https://qiita.com/mt08/items/65f2ac9bbdae09a34470

MacでLego Mindstorms NXT環境構築 in 2018
https://qiita.com/vivid344/items/2f23f846cd3b135c5a74

ETロボコン開発環境構築 for Mac
https://qiita.com/tac0x2a/items/b1d82050c660935765ef

[メモ] ERIKA様でLチカ (Arduino)
https://qiita.com/mt08/items/adc90efbbfc938be7cc4

COFEを使って水-エタノールの分離シミュレーションを行う
https://qiita.com/kijuky/items/0979327cf7e7c091da02

# 自己参考(Self Reference)
OSEKはもう流行らないのでしょうか。AUTOSAR（64）OSEK(1) https://qiita.com/kaizen_nagoya/items/b87687254b11f30cc2ee
OSEKを図から理解 OSEK(2) https://qiita.com/kaizen_nagoya/items/f87a7ff5aeb63803a022
OSEK OS（AUTOSAR OS）をざっくり理解するには OSEK(3) https://qiita.com/kaizen_nagoya/items/c68c0b86b97d4a90e6e2
calloutとcallback, OSEK/VDX OS and AUTOSAR OSEK(4) https://qiita.com/kaizen_nagoya/items/b95b81354d07b9172a56
OSEK/VDX ISO and 2.23 OSEK(5) https://qiita.com/kaizen_nagoya/items/4d6bcec01e0132f9c41c
OSEK/VDX OSEK(6) https://qiita.com/kaizen_nagoya/items/a7720994f2178a15be81
ISO OSEK/VDX and ISO Linux OS 同梱ソースをC++またはRUSTで書く企画　OSEK(7) https://qiita.com/kaizen_nagoya/items/27899e936c90b415d700
OSEK 記事で views 100,000を目指して　OSEK(8) https://qiita.com/kaizen_nagoya/items/ff45ee55566eeff5f62e
自動車用OSを網羅する OSEK(9) https://qiita.com/kaizen_nagoya/items/a61144daf500a3f2b4f4
Smallest Set Profile and Automotive Profile, OSEK(10) https://qiita.com/kaizen_nagoya/items/0c5484f6562cc259e7f0
Exclusive Area, OSEK(11)　https://qiita.com/kaizen_nagoya/items/d87ff4e08378dbcf68a7
自動車のソフトウェア、例えばAUTOSAR の仕事を始めてする方に, OSEK(12) https://qiita.com/kaizen_nagoya/items/1832634788c23498e054
名古屋で自動車関係のソフトウェア設計する際にあるといいかもしれない知識, OSEK(13) https://qiita.com/kaizen_nagoya/items/9f01d55e4bd0bd931c96
single task os and data, OSEK(14) https://qiita.com/kaizen_nagoya/items/6acbd5d2cfd3ed8bca60
ISO Road vehicles - Diagnostics 等規格72(調査中)。百規格、百記事をめざして。 https://qiita.com/kaizen_nagoya/items/51e29d318585a4219985
Automotive Software Expert Examination Exercise, Examples or Extract. OSEK(16) https://qiita.com/kaizen_nagoya/items/1762e0612ef01e036efb
自動運転資料集(1) OSEK(17) https://qiita.com/kaizen_nagoya/items/42eb2129e281f25eaab8
TOPPERS of the YearとAUTOSAR, AUTOSAR(39), OSEK(18) https://qiita.com/kaizen_nagoya/items/f241bb4a819733110b7a
Autosar 2.0を読む, AUTOSAR(25), OSEK(19) https://qiita.com/kaizen_nagoya/items/b44a1047c2c517d522fe
IT関連技術でお世話になった方々, OSEK(20) https://qiita.com/kaizen_nagoya/items/8a5bf487594cd106e8b8
AUTOSARの４つの入力, OSEK(21)  https://qiita.com/kaizen_nagoya/items/72cef6028b9697f7968e
AUTOSAR これだけ知っていればなんとかなる。OSEK(22) https://qiita.com/kaizen_nagoya/items/7a63e706bfb8f331cfe4
電動機故障診断(ACサーボモータを中心に) https://qiita.com/kaizen_nagoya/items/756d19527d5f862e8085
AUTOSARと国際規格。AUTOSAR（65), OSEK(24)  https://qiita.com/kaizen_nagoya/items/4ddba03efb942969b125
AUTOSAR入門, AUTOSAR(16), OSEK(25) https://qiita.com/kaizen_nagoya/items/5e43b8ef0935c32ee11d
MISRA-C 2012 Referenceに掲載している文献の入手可能性を確認 https://qiita.com/kaizen_nagoya/items/96dc8b125e462d5575bb
Autosarの課題, OSEK(27)  https://qiita.com/kaizen_nagoya/items/617d10b0e34143030600
AUTOSAR: The past 20 years and he next 10 years, OSEK(28) https://qiita.com/kaizen_nagoya/items/2dab0707c01059c152c4
Autosar文書を読む（準備), OSEK(29)　https://qiita.com/kaizen_nagoya/items/5f547173544703d267aa
AUTOSARが手に取るように分かるようになる。AUTOSAR(29), OSEK(30) https://qiita.com/kaizen_nagoya/items/ae092ea6aef89cdc15df
posixとethernet, osekとTCP/IP, osek(31) https://qiita.com/kaizen_nagoya/items/73b79a4a56f433bd53c0
斉藤直希「組み込み向けリアルタイムOSの基礎知識を整理する」を整理する, OSEK(32) https://qiita.com/kaizen_nagoya/items/d305e83b37d0c57dceb3
TOPPERS活用アイデア・アプリケーション開発コンテスト受賞作品紹介　まとめ作成中, OSEK(33) https://qiita.com/kaizen_nagoya/items/72b882d96b2841f25faf
はじめてのAUTOSAR(classic platform) ＜エンジニア夏休み企画>【読書感想文】, OSEK(34) https://qiita.com/kaizen_nagoya/items/696ad320f76f284664d7
AUTOSARとSimulink: Adaptive Platform, Classic Platformとマルチコア・共通化, OSEK(35) https://qiita.com/kaizen_nagoya/items/d613b0b14bfd91989a13
AUTOSAR Abstract Platformへの道（詳細編）, OSEK(36) https://qiita.com/kaizen_nagoya/items/cb217133884fa0a2c704
building block：AUTOSAR Abstruct Platform , OSEK(37), https://qiita.com/kaizen_nagoya/items/bf7c17624f648fb9f392
系建築家(system architect)になるには, OSEK(38) https://qiita.com/kaizen_nagoya/items/8c341e69233cb32f6275
自己紹介 OSEK(39) https://qiita.com/kaizen_nagoya/items/90aa368f296613ec93b5
AUTOSAR 「完全に理解した」, OSEK(40) https://qiita.com/kaizen_nagoya/items/51983798ad7902b33cb1
Architecture 「toaster model」を出発点として, OSEK(41)　https://qiita.com/kaizen_nagoya/items/9ab8b4bea3ff4e94b192
AUTOSAR Q&A。 AUTOSAR(30), OSEK(42) https://qiita.com/kaizen_nagoya/items/ba6c02b772e9617dc138
「人生で影響を受けた本100冊」に28冊足す計画（18冊）, OSEK(43) https://qiita.com/kaizen_nagoya/items/3ae6633725df77261df8
Bosch Automotive Handbook and so on. OSEK(44) https://qiita.com/kaizen_nagoya/items/8e330ce57880f04d71d9
自動車　記事　１００, OSEK(45) https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5
何故、今、国際規格なのか。OSEK(46) https://qiita.com/kaizen_nagoya/items/6970577e3e94e5b51ccc
名古屋のIoTは名古屋のOSで。仮説（186）OSEK(47) https://qiita.com/kaizen_nagoya/items/fa6694bbec50723ea90a
作業診断(process assessment)を成功させる５つの鍵。失敗する５つの罠 。仮説（50） https://qiita.com/kaizen_nagoya/items/bcdc60db20e8d7081fab
AUTOSAR教材作成３年計画, AUTOSAR(19) OSEK(49) https://qiita.com/kaizen_nagoya/items/84d8f1ecbbe7af7803af
AUTOSARの利点と方向性, OSEK(50) https://qiita.com/kaizen_nagoya/items/681902476520cccf3c3e
TOPPERS のAUTOSARへの貢献(更新中), AUTOSAR(15), OSEK(51) https://qiita.com/kaizen_nagoya/items/d363cf06e2176207b391
TOPPERS の AUTOSAR への貢献 II (改定中), OSEK(52) https://qiita.com/kaizen_nagoya/items/4614c04cfff70a241f77
A big wrapping cloth with the miniature garden, OSEK53) https://qiita.com/kaizen_nagoya/items/96411f20632e7f3ff73a
AUTOSAR R23-11 資料整理の計画（年越し懇親会遠隔開催時間投票含む）OSEK(54)　https://qiita.com/kaizen_nagoya/items/6b939e2373e0e6047ae8
自動車用（車載）ソフトウェアの基本設計提案を作る。OSEK(55)  https://qiita.com/kaizen_nagoya/items/9c218e65d98084b24dfe
自動車用（車載）ソフトウェアの基本設計提案を作る(2), OSEK(56) https://qiita.com/kaizen_nagoya/items/38cb4710410a0d51e7a0
マルチコアの壁, OSEK(67) https://qiita.com/kaizen_nagoya/items/f38e47574905c80c0706
実時間処理, OESK(58) https://qiita.com/kaizen_nagoya/items/1e36077736d11960bb64
CPU マルチコア　マルチOS, OSEK(59) https://qiita.com/kaizen_nagoya/items/6bdb6116f0aa50c5372a
AUTOSAR related Standard, OSEK(60) https://qiita.com/kaizen_nagoya/items/13b163f8515615ecc648
「あなたがAUTOSARのEditorだったらどの文書をどう書き換えたいか」選手権(0), OSEK(61) https://qiita.com/kaizen_nagoya/items/0055bb88f43f98a61739
Call back, OSEK(62) https://qiita.com/kaizen_nagoya/items/8c76f5e05cbd9125f86d
C言語教育はCコンパイラの写経で, OSEK(63) https://qiita.com/kaizen_nagoya/items/088a9906797559cd8b8a
Reentrant とRecursive, OESK(64)　https://qiita.com/kaizen_nagoya/items/cdc028f73fe2dea3090f
AUTOSARの基礎の仮説, OSEK(65) https://qiita.com/kaizen_nagoya/items/ceaf360e69f81c332677
Linuxを学ばずに使う, OSK(56)　https://qiita.com/kaizen_nagoya/items/b9859782bab0cf6c78a4
AUTOSAR わかりにくいこと12, AUTOSAR(27), OSEK(67) https://qiita.com/kaizen_nagoya/items/68b0da5bee1421200a11
お盆には「箱庭」記事を書きましょう「もくもく会」の題材になる（１）, OSEK(68) https://qiita.com/kaizen_nagoya/items/a22bf2b1dab0ad3258d4
逆も真：社会人が最初に確かめるとよいこと。OSEK(69) https://qiita.com/kaizen_nagoya/items/39afe4a728a31b903ddc
プログラマが安全工学シンポジウムで発表する動機、題材、技法。安全（22）OSEK(70) https://qiita.com/kaizen_nagoya/items/b7adf3001eb325166e52
プログラマにも読んでほしい「QC検定にも役立つ！QCべからず集」OSEK(81)　https://qiita.com/kaizen_nagoya/items/d8ada7b7fceafe2e5f0e
AUTOSAR文書の読み方（文書番号と発行年）, AUTOSAR(23), OSEK(72) https://qiita.com/kaizen_nagoya/items/daa3f7de7e86b89bcc33
計算機系事故記録(computer system trouble record), OSEK(73) https://qiita.com/kaizen_nagoya/items/910847f01379903e40c8
basic: プログラムジェネレータジェネレータ。構造屋(architect)としての成功事例3失敗事例６, OESK(74) https://qiita.com/kaizen_nagoya/items/117c7a1b6dad97470ae9
AUTOSAR記事一覧, OSEK(75) https://qiita.com/kaizen_nagoya/items/89c07961b59a8754c869
AUTOSAR 文書番号, OSEK(76) https://qiita.com/kaizen_nagoya/items/8b894228a0b76c2265c7
参考文献の参考文献は参考文献だ。清水吉男「「派生開発」を成功させるプロセス改善の技術と極意」を超えて, OSEK(77) https://qiita.com/kaizen_nagoya/items/562a0cf784cf92bc0ebb
ボッシュ自動車handbook(英語)11版(0-1) 課題と記事一覧new, OSEK(78) https://qiita.com/kaizen_nagoya/items/a9d2887bf2a7598dc8e5
プログラマの「プログラムが書ける」思い込みは強みだ。３つの理由。仮説（168）統計と確率(17) , OSEK(79) https://qiita.com/kaizen_nagoya/items/bc5dd86e414de402ec29
最新規格のコンパイル, OSEK(80) https://qiita.com/kaizen_nagoya/items/4e23544a7ee8a8f19b68
模型駆動開発(Model Driven Design)への道、OSEK(81)　https://qiita.com/kaizen_nagoya/items/bb4d73bfb3cbba88727f
MATLAB 完全に理解するには, OSEK882) https://qiita.com/kaizen_nagoya/items/867e8743fa813be9b37c
製造業における機械学習, OSEK(83) https://qiita.com/kaizen_nagoya/items/fbe846de16f74bea1d6f
自動車技術会 2020年春季大会 Summarized Paper 単語帳 https://qiita.com/kaizen_nagoya/items/758922c754be557571a4
NASAを超えるつもりがあれば読んでください。OSEK(85) https://qiita.com/kaizen_nagoya/items/e81669f9cb53109157f6
プロセスは未定義と定義するのがよい。仮説(67), OESK(86) https://qiita.com/kaizen_nagoya/items/0f3a1174f81935bb6d85
交通事故死を減らすのにプログラマが主導できる事項13選。仮説（21）。安全(26), OSEK(87) https://qiita.com/kaizen_nagoya/items/4d46bbf0dde44d7bb99a
AUTOSARはどこから来て、どこへ行くか。, AUTOSAR(13), OSEK(88) https://qiita.com/kaizen_nagoya/items/b605326a1aebe79b5d85
安全工学シンポジウムに向けて。安全（0）OSEK(89)　https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409
オープンソース計算機模擬試験による安全関連系の設計と分析。安全（23）, AUTOSAR(37)、OSEK(90) https://qiita.com/kaizen_nagoya/items/a317bf6570cb3bdf185b
プログラマが安全な系のためにできること。仮説(66), OSEK(91) https://qiita.com/kaizen_nagoya/items/a9667ab0d1e48438edba
AUTOSAR文書、参考文献、短縮名(short name:略号)一覧作成自動化の可能性, OSEK(92) https://qiita.com/kaizen_nagoya/items/005c4d82d8c1af7ce103
Autosar文書を読む(感想), OSEK(93) https://qiita.com/kaizen_nagoya/items/b517392610cdf85514f5
JAXA/IPA クリティカルソフトウェアワークショップ WOCS言語関連発表(改定版), OSEK(94) https://qiita.com/kaizen_nagoya/items/4789832baf494cb74626
電動機制御算譜（プログラム）設計における３つの罠６つの教訓（実機）, OSEK(95) https://qiita.com/kaizen_nagoya/items/b39b6b7ba0d90dff471d
参考文献駆動執筆(references driven writing)・デンソークリエイト編, OSEK(96) https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1
プログラマによるプログラマのプログラマの子供のための自動車安全絵本企画。安全(31), OSEK(97) https://qiita.com/kaizen_nagoya/items/0ab47d8fca2933f8877a
安全分析においてHAZOPで想定外を洗い出すために, OESK(98) https://qiita.com/kaizen_nagoya/items/11f1ace6f4c150248903
MISRA C まとめ #include <misra_c.h> OSEK(99)https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9
OSEK OS設計の基礎　OSEK(100)　https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3

C++ Support(0)　
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514

Coding Rules(0) C Secure , MISRA and so on 
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0

Ethernet 記事一覧　Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48) 
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網（Wi-Fi）空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

OSEK OS設計の基礎　OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3

Error一覧(C/C++, python, bash...) Error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

プログラムちょい替え（0）一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394

TOPPERSまとめ　#名古屋のIoTは名古屋のOSで
https://qiita.com/kaizen_nagoya/items/9026c049cb0309b9d451

docker(0) 資料集
https://qiita.com/kaizen_nagoya/items/45699eefd62677f69c1d

Qiita-dockerお宝鑑定団
https://qiita.com/kaizen_nagoya/items/509e125263559b5aed5b

The C++ Standard Library: clang++とg++でコンパイルしてみた(まとめ):14件
https://qiita.com/kaizen_nagoya/items/9bdfaa392443d13e5759

C++17 - The Complete Guide clang++とg++でコンパイルしてみた(まとめ):4件
https://qiita.com/kaizen_nagoya/items/c000f307e642990781e1

C++N3242, 2011, ISO/IEC 14882, C++ standard(1) Example code compile list
https://qiita.com/kaizen_nagoya/items/685b5c1a2c17c1bf1318

C++N4606 Working Draft 2016, ISO/IEC 14882, C++ standard(1) Example code compile list
https://qiita.com/kaizen_nagoya/items/df5d62c35bd6ed1c3d43/

C++N4741, 2018 Standard Working Draft on ISO/IEC 14882 sample code compile list
https://qiita.com/kaizen_nagoya/items/3294c014044550896010

C++N4910:2022 Standard Working Draft on ISO/IEC 14882(0) sample code compile list
https://qiita.com/kaizen_nagoya/items/fc957ddddd402004bb91

Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76

プログラマによる、プログラマのための、統計と確率のプログラミングとその後 統計と確率一覧（０）
https://qiita.com/kaizen_nagoya/items/6e9897eb641268766909

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

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.
# 文書履歴(document history)
ver. 1.00 初稿 20180316
ver. 1.01 見出し分類 20180317
ver. 1.02 10項目追記 20180322
ver. 1.03 URL追記 20201228
ver. 1.04 タグ見直し 20220618
ver. 1.05 ありがとう追記 20230315
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
####  Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.