---
url: /ja/rules/props-name-convention.md
---

# props-name-convention

CDK Construct クラスの `Props` (interface) 名が `${ConstructName}Props` の形式に従うことを強制します。\
(ここでの `${ConstructName}` は Construct のクラス名を示します)

一貫した命名パターンに従うことで、Construct とその Props (interface) の関係が明確になり、コードの保守性と理解のしやすさが向上します。

***

#### 🔧 使用方法

::: code-group

```ts [Oxlint]
// oxlint.config.ts
export default defineConfig({
  // ... some configs
  rules: {
    "awscdk/props-name-convention": "error",
  },
});
```

```js [ESLint]
// eslint.config.mjs
export default defineConfig({
  // ... some configs
  rules: {
    "awscdk/props-name-convention": "error",
  },
});
```

:::

#### ✅ 適切な例

```ts
import { Construct } from "constructs";
import { IBucket } from "aws-cdk-lib/aws-s3";

// ✅ Props (interface) 名が `${ConstructName}Props` の形式に従っている
interface MyConstructProps {
  readonly bucket?: IBucket;
}

class MyConstruct extends Construct {
  constructor(scope: Construct, id: string, props: MyConstructProps) {
    super(scope, id);
  }
}
```

#### ❌ 不適切な例

```ts
import { Construct } from "constructs";
import { IBucket } from "aws-cdk-lib/aws-s3";

// ❌ Props (interface) 名が `${ConstructName}Props` の形式に従っていない
interface Props {
  readonly bucket?: IBucket;
}

class MyConstruct extends Construct {
  constructor(scope: Construct, id: string, props: Props) {
    super(scope, id);
  }
}
```
