naming-conventions について
Sui Move のコーディングエージェントと開発者向けの命名規則スキルです。Move の公式コード品質チェックリストに基づき、エラー定数、能力構造体、イベント、ゲッターなどの規則をまとめています。
主な機能
- 01エラー定数と通常定数の命名規則
- 02能力構造体とイベントの命名規則
- 03ゲッターと可変ゲッターの規則
- 04ホットポテト型と動的フィールドキーの規則
活用シーン
- 01規則に沿った Move コードの作成
- 02コード内の命名一貫性の確認
- 03能力、イベント、動的フィールドキーの命名
MCP 対応
利用可能な環境では、Sui ドキュメント MCP サーバーに問い合わせ、最新情報の確認や資料の補完ができます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mystenlabs/ skills --skill naming-conventionsインストール後、Claude Code で/naming-conventionsを入力して読み込まれたか確認します。
同梱ファイルevals/code-evals.jsonevals/evals.json
詳細
命名規則
MCP ツール: お使いの環境で利用できる場合は、最新の回答を得るために Sui ドキュメント MCP サーバー(
https://sui.mcp.kapa.ai)にも問い合わせてください。検証や、これらの参照ファイルに記載されていない詳細の確認に使用します。
概要
Sui の Move には、AI エージェントが学習データから一般的に生成するものとは異なる、固有の命名規則があります。このスキルでは、公式のコード品質チェックリストにあるすべての命名パターンを扱います。
すべてのパターンは https://move-book.com/guides/code-quality-checklist を参照しています。
エラー定数:#[error] を使った EPascalCase
エラー定数には、E を接頭辞とする PascalCase を必ず使用してください。SCREAMING_SNAKE_CASE は使用しないでください。
#[error] 属性を使って、エラー定数に人が読みやすいメッセージを付けます。abort が発生すると、そのメッセージがエラー出力に含まれるため、ユーザーやサポート担当者にとってデバッグがはるかに容易になります。
// WRONG
const NOT_AUTHORIZED: u64 = 0;
const INSUFFICIENT_BALANCE: u64 = 1;
// CORRECT — with #[error] for readable abort messages
#[error]
const ENotAuthorized: vector<u8> = b"Caller is not authorized to perform this action";
#[error]
const EInsufficientBalance: vector<u8> = b"Insufficient balance for this operation";
// Also valid — u64 without #[error] (less informative on abort)
const ENotAuthorized: u64 = 0;
const EInsufficientBalance: u64 = 1;
#[error] を使用する場合、定数の型は u64 ではなく vector<u8>(バイト文字列のメッセージ)になります。数値コードはコンパイラーによって自動的に割り当てられます。新しいコードでは、すべて #[error] の使用を推奨します。エクスプローラー、ウォレット、ログで、より明確なエラー出力が得られます。
通常の定数:ALL_CAPS
エラー以外の定数には、大文字のスネークケースを使用します。エラー定数とは反対の規則です。
// WRONG
const MyConstant: vector<u8> = b"hello";
const feeNumerator: u64 = 3;
// CORRECT
const MY_CONSTANT: vector<u8> = b"hello";
const FEE_NUMERATOR: u64 = 3;
Capability 構造体:Cap 接尾辞
Capability(アクションを実行する権限)を表す構造体には、必ず Cap を接尾辞として付けてください。
// WRONG
public struct Admin has key, store { id: UID }
public struct MintAuthority has key, store { id: UID }
// CORRECT
public struct AdminCap has key, store { id: UID }
public struct MintCap has key, store { id: UID }
イベント:過去形
イベントの構造体名には、すでに発生したことを示す過去形を必ず使用してください。
// WRONG
public struct RegisterUser has copy, drop { user: address }
public struct CreatePool has copy, drop { pool_id: ID }
public struct LevelUp has copy, drop { new_level: u64 }
// CORRECT
public struct UserRegistered has copy, drop { user: address }
public struct PoolCreated has copy, drop { pool_id: ID }
public struct LeveledUp has copy, drop { new_level: u64 }
ゲッター関数:get_ ではなくフィールド名
ゲッター関数には、get_ 接頭辞を付けず、取得するフィールドの名前を使用してください。ミュータブルなゲッターには _mut 接尾辞を付けます。
// WRONG
public fun get_name(u: &User): String { u.name }
public fun get_balance(u: &User): u64 { u.balance }
// CORRECT
public fun name(u: &User): String { u.name }
public fun balance(u: &User): u64 { u.balance }
public fun details_mut(u: &mut User): &mut Details { &mut u.details }
ホットポテト構造体:名前に Potato を含めない
ホットポテト型(abilities を持たない構造体)の名前に「Potato」を含めないでください。abilities がないこと自体が、このパターンを示しています。
// WRONG
public struct FlashLoanPotato {}
public struct PromisePotato {}
// CORRECT
public struct FlashLoanReceipt {}
public struct Promise {}
動的フィールドキー:Key 接尾辞を持つ位置指定構造体
動的フィールドキー型には、位置指定構造体構文(空の括弧)を使用し、Key を接尾辞として付けてください。
// WRONG
public struct DynamicField has copy, drop, store {}
public struct ItemSlot has copy, drop, store { name: String }
// CORRECT
public struct DynamicFieldKey() has copy, drop, store;
public struct ItemKey(String) has copy, drop, store;
クイックリファレンス
| 要素 | 規則 | 例 |
|---|---|---|
| エラー定数 | E + PascalCase | ENotAuthorized |
| 通常の定数 | ALL_CAPS | FEE_NUMERATOR |
| Capability | Cap を接尾辞に付ける | AdminCap |
| イベント | 過去形 | PoolCreated |
| ゲッター | get_ を付けず、フィールド名を使用 | balance() |
| ミュータブルなゲッター | フィールド名 + _mut | balance_mut() |
| ホットポテト | 説明的な名前を付け、Potato は含めない | FlashLoanReceipt |
| 動的フィールドキー | 位置指定 + Key 接尾辞 | ItemKey() |