Skip to content

Instantly share code, notes, and snippets.

View ryotapoi's full-sized avatar

Ryota Kurosaki ryotapoi

View GitHub Profile

Claude Code 開発プロジェクト構成

Claude Code + Codex MCP を使った開発プロジェクトの標準的なフォルダ構成と開発フロー。 AIエージェント開発の情報管理-原則 のフォルダ構成をベースに、Claude Code のシステム上の制約を組み合わせたもの。

フォルダ構成

原則のフォルダ構成をそのまま採用し、Claude Code 固有の設定ファイル群(.claude/, CLAUDE.md)を追加する。

@ryotapoi
ryotapoi / AI エージェント開発の情報管理 - 原則.md
Last active March 4, 2026 09:41
Coding Agent 前提のプロジェクト情報管理 ─ DRY・SSoT で設計するフォルダ構成

AI エージェント開発の情報管理 - 原則

AI コーディングエージェントを前提とする開発プロジェクトの情報管理原則とフォルダ構成。 特定のツール(Claude Code, GitHub Copilot 等)に依存しない一般論。

スコープ: 情報の分類・配置・管理の原則。 プロジェクト管理(スケジュール、タスク管理等)は扱わない。

関連: AIエージェント開発の情報管理-設計根拠(各原則の背景と根拠)

@ryotapoi
ryotapoi / Markdown 記法ルール.md
Last active February 17, 2025 09:15
Markdownの書き方を人間+AI向けにまとめた。広く使われているもの、GFMで推奨されているものをベースにしている。リストは `-` で 強調は`*` というのは趣味で、迷わないように一つに限定した。

Markdown 記法ルール

この Markdown 記法ルールに従って、Markdown 文書を作成・修正してください。


1. 見出し

ルール

//
// AlertController.swift
//
// Created by ryotapoi on 2025/01/20.
//
import UIKit
/// Represents an action displayed in an alert.
///
@ryotapoi
ryotapoi / ToastWindow
Created June 3, 2024 05:00
最前面表示を実現するためにUIWindowを使う
class ToastWindow: UIWindow {
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let view = super.hitTest(point, with: event)
if view == self {
return nil
} else {
return view
}
}
}
@ryotapoi
ryotapoi / CRC32.swift
Last active November 9, 2020 03:58
Swiftで高速にCRC32を求める。
import Foundation
import zlib
struct CRC32: Equatable, ExpressibleByIntegerLiteral, CustomStringConvertible {
typealias IntegerLiteralType = UInt32
let value: UInt32
var description: String { String(format: "%08X", value) }
init(data: Data) {
@ryotapoi
ryotapoi / SequencialPublisher.swift
Created November 6, 2020 04:29
Publisherの配列を先頭からひとつずつ順次実行する。
import Foundation
import Combine
extension Combine.Publishers {
struct Sequencial<Sequence, Output, Failure>: Publisher
where
Sequence: Swift.Sequence,
Sequence.Element: Publisher,
Sequence.Element.Output == Output,
Sequence.Element.Failure == Failure
@ryotapoi
ryotapoi / FileManagerExtensions.swift
Created November 6, 2020 04:26
FileManagerによるファイル操作でCombineを使う。
import Foundation
import Combine
extension FileManager {
struct RemoveItemPublisher: Publisher {
typealias Output = Void
typealias Failure = Error
var url: URL
var fileManager: FileManager
@ryotapoi
ryotapoi / DateComponents.swift
Created November 2, 2020 09:30
経過時間などを表す mm:ss 形式のフォーマット
import Foundation
let formatter = DateComponentsFormatter()
formatter.unitsStyle = .positional
formatter.allowedUnits = [.minute, .second]
formatter.zeroFormattingBehavior = .pad
formatter.string(from: 61)
@ryotapoi
ryotapoi / command.sh
Created August 22, 2020 15:02
無圧縮zipをコマンドで作る
zip -0 -r archive.zip source…