Avatar
Avatar
tochi86 - とち🐹
【質問】CLAUDE.mdにどんなことを書いているのかは、気になりました
あんまメンテしてないので参考になるかわかりませんが、今見ると結構細かいこと書いてますね・・・。

『電光石火』 開発ガイドライン

概要

本プロジェクトはiOSアプリ『電光石火』の開発をするためのものです。 『電光石火』は「九九」「四字熟語」「県庁所在地」など、反復練習ですばやく答えられるようになるべきものを、ゲーム形式で手軽に身につけられるアプリです。「たしざん」「ひきざん」「L / Rなどの聞き分け」「炎色反応」「東西南北」など、定番のものから少し変わったものまで、様々なコンテンツを提供しています。 本アプリはエントリーポイントを除いて基本的にSwift Packageで作られており、本ディレクトリはDenkouSekkaパッケージのルートディレクトリです。DenkouSekkaパッケージには次の二つのモジュールが存在します。
  • DenkouSekkaLogic: UIとは独立したロジックのレイヤーを表すモジュール
  • DenkouSekkaUI: DenkouSekkaLogicを利用し、ユーザーに練習問題等を提供するモジュール
DenkouSekkaUIのRootViewがDenkouSekkaUIのエントリーポイントとなります。

ビルドコマンド

  • ビルド: swift build
  • テストの実行: swift test
  • 特定のモジュールだけビルド: swift build --target DenkouSekkaLogic

コードスタイルガイドライン

  • Foundationの型を使わない場合はimport Foundationを書かない
  • Swift 6.0の機能を使用する (swift-tools-version: 6.0)
  • UIコンポーネントにはSwiftUIを使用する
  • foregroundColor よりも foregroundStyle を利用する
  • ZStack でなければならない場合を除き overlay を優先的に利用する
  • コンポーネントの間隔は padding よりも spacing で調整する
  • 命名規則: Swift API Design GuidelinesとSwift Standard Libraryの命名規則に従う
  • 値型( structenum )のエンティティは SendableCodable に準拠する
  • enum がassociated valueを持たない単純な case のみを持つときは Hashable に準拠する
  • メソッドがインスタンスの状態にアクセスする必要がない場合は static メソッドにする
  • static メソッド・プロパティにアクセスするときには可能であれば Self. を使う
  • できるだけ return を省略する(single expressionの場合)
  • if 式や switch 式が利用できる場合は活用する
// switch式の例 func foo(base: Bar) -> Int { switch bar { case a: 2 // returnは不要 case b: 3 case c: 5 } }
  • 名前空間のスコープを意識し、積極的にnested typeを利用する
  • 関連する関数では引数の順序を一貫させる
  • unit testにはSwift Testingを使用する
  • Swift TestingではSuiteとなるstructをネストして構造を整理する
...
(edited)
👏 4
2:52 PM
↓みたいなのもありますね。

作業手順

  • コードの修正を行った場合は、必ず修正後に以下を実行する:
1. swift build でプロジェクトがビルドできることを確認 2. swift test でテストが通ることを確認 3. 上記の確認が取れるまでコードを修正する
(edited)