
ã¿ãªããããã«ã¡ã¯ïŒïŒïŒ
Claude Codeã¯ãAnthropicãæäŸããã¿ãŒããã«ããŒã¹ã®ã³ãŒãã£ã³ã°çšã®AIãšãŒãžã§ã³ãã§ãã
æè¿ã¯Claude Codeã§ã°ã£ããéçºãããŠããŸããXãç£èŠããŠãããšã **ããã§ããã«ç Žç¶»ããŠäœ¿ãç©ã«ãªããã** ãã¿ãããªæ²èгçãªè©±ã¯ããèŠãããŸãã
å®éã以äžã®ãããªåé¡ã¯é »çºããŠãããšæããŸãã
- **ã³ãŒããå€å°å€§ãããªã£ã â ã³ã³ããã¹ããèŠå€±ãç Žç¶»**
- **ã³ãŒããæ£ããã£ãŠãã â åäž**
- **é£æåºŠãé«ãããžãã¯ãå®è£
â åãã€ã**
éæž¡æãªã®ã§ãããŒãªãã§ããããã©ããŸã§å®è£
ãä»»ããŠããã®ãâŠïŒïŒããšããäžå®ã¯ããããªãŒãšæããŸãã
ãã ãçŸæ®µéã§ãã®èŸºãã®è©±ãèŠå®ããããã«ã¯ããšã«ãã䜿ã£ãŠã¿ããããªããšæãã®ã§ãä»åã¯ãå®éã«äœ¿ãåããŠã¿ãŠããããããšæŠãããŸãããããããªãããªãŒãšããTipsãéããŠã¿ãŸããã
é©åãªèšå®ãšäœ¿ãæ¹ã§ããããã®åé¡ã¯ããçšåºŠè»œæžã§ããããªãšæããŸãã
åããããã詊ããŠããã®ããããŸããããæ
å ±åéã®æ«ãããŸããã£ãç¥èŠãããããããããããããïŒã©ã£ãã§èŠãããšãããªãŒããšããèšå®ãªã©ããããããããŸããã
### â»20250725\_远èš\_Claude Codeèšå®éã®å
Ž
ãããã®èšå®ã倧äœãŸãã£ãšè¡ãããã®èšå®éãäœããŸããïŒïŒ
`~/.claude` ãã©ã«ãã«ããŸãããšåã蟌ãã§ãããã ãã§ãå®ãããžã§ã¯ãã«ããŸãé©åãããããšãã§ããŸãïŒ
### ã»ããã¢ããæé
ãŸãããã¯å
¬åŒãèŠãŠãã ããããšããæãã§ããäžå¿èšèŒããŠãããŸãã
- å
¬åŒããã¥ã¡ã³ãïŒ [Claude CodeæŠèŠ](https://docs.anthropic.com/ja/docs/claude-code/overview)
```bash
npm install -g @anthropic-ai/claude-code
```
ãããžã§ã¯ãã§ã®èµ·åïŒ
```bash
# ãããžã§ã¯ããã£ã¬ã¯ããªã«ç§»å
cd your-project-directory
# Claude Codeãèµ·å
claude
```
ProãMaxãã©ã³ã®å Žåã¯ãã°ã€ã³ãæ±ããããã®ã§ãã¢ã«ãŠã³ãæ
å ±ãå
¥åãããšãã°ã€ã³ããŠå©çšéå§ãšãªããŸãã
### â»20250831\_远èš\_Claude Code v1.0.37ãžã®ããŠã³ã°ã¬ãŒã
以åããããªã€ã¶ãããããŸããã
[https://x.com/nokonoko\_1203/status/1949850204762710027](https://x.com/nokonoko_1203/status/1949850204762710027)
ãClaude Codeãã¢ãã«ãªã£ããããã£ãŠãã話ãäžææãšãŠã話é¡ã«ãªãããªããªãä»ã§ãç¶ç¶äžã§ãã
ææ°çã ãšå©çšããã®ãèŠçã«ãªããããªæåãèŠããã®ã§ãClaude Codeã®ããŒãžã§ã³ã1.0.24ã«åºå®ããã®ãããããã§ãããšããè¶£æšã®ãã¹ããªãã§ãããv1.0.24ã ãš
- Winã§å©çšã§ããªã
- ã¢ãã«ãå€ãããã³ã«settings.jsonããªã»ããããããã°
ãšãã£ãå¶çŽããããŸãã
ã€ãæè¿ãnpmã§ã®ã€ã³ã¹ããŒã«ã§ã¯ãªããã€ãã£ãã€ã³ã¹ããŒã«ã§ããæ¹æ³ãå
¬åŒããå
¬éãããŠãããã§ããã以äžã®ããã«v1.0.24ãã€ã³ã¹ããŒã«ããããšãããšãçšæãããŠããŸããã§ããâŠ
```text
curl -fsSL https://claude.ai/install.sh | bash -s 1.0.24
```
ã©ããããv1.0.37以åã®ããŒãžã§ã³ã¯ååšããªãããã§ãã
ãã ãv1.0.37ãå©çšããŠã¿ããšãäœæãšããŠã¯v1.0.24ãšå€ãããªãæåãããããšã確èªã§ããã®ã§ã以äžã®ã³ãã³ãã§ã€ã³ã¹ããŒã«ããããšããå§ãããŸãïŒ
```text
curl -fsSL https://claude.ai/install.sh | bash -s 1.0.37
```
## å®è·µçãªäœ¿ãæ¹
### ãã䜿ãã³ãã³ãäžèЧ
claude codeèªäœã«è²ã
ãªãªãã·ã§ã³ããããŸãã
ç¹ã«ãååã®äŒè©±ãåéãã `-c` ãªãã·ã§ã³ãªããã¯é »ç¹ã«å©çšãããããããŸããã
詳ããã¯ã¯ã€ãã¯ã¹ã¿ãŒããžã
```bash
# Claude Codeã®èµ·å
claude
# ç¹å®ã®ãã£ã¬ã¯ããªã§èµ·å
claude /path/to/project
# ææ°çãžã®æŽæ°
claude update
# ååã®äŒè©±ãç¶ç¶
claude -c
# äŒè©±å±¥æŽãåç
§ããŠèµ·å
claude -r
# ããŒãžã§ã³ç¢ºèª
claude --version
```
### ã³ãã³ãã§å¹çå
`claude` ã³ãã³ããå®è¡ãããšãClaude Codeãèµ·åããããã³ãããå
¥åã§ããããã«ãªããŸãããå
é ã« `/` ãã€ãããšãClaude Codeã®äŸ¿å©ããŒã«ã䜿ããŸãã
```bash
# ã¢ãã«ã®åãæ¿ãïŒSonnet/OpusïŒ
> /model
# ã³ã³ããã¹ãã«å¥ãã©ã«ãã远å
> /add-dir <path>
# äŒè©±å±¥æŽãã¯ãªã¢
> /clear
```
ã³ãã³ãã¯ãããããã£ãŠãclaudeãèµ·åãããç¶æ
ã§ `/` ãå
¥åããã ãã§ãµãžã§ã¹ããããŸããã `/help` ã³ãã³ãã«ã¯ãã詳ããæ
å ±ãèŒã£ãŠããŸãã
```text
Claude Code v1.0.33
Always review Claude's responses, especially when running code. Claude has read access to files in the current directory and can run commands and edit
files with your permission.
Usage Modes:
⢠REPL: claude (interactive session)
⢠Non-interactive: claude -p "question"
Run claude -h for all command line options
Common Tasks:
⢠Ask questions about your codebase > How does foo.py work?
⢠Edit files > Update bar.ts to...
⢠Fix errors > cargo build
⢠Run commands > /help
⢠Run bash commands > !ls
Interactive Mode Commands:
/add-dir - Add a new working directory
/bug - Submit feedback about Claude Code
/clear - Clear conversation history and free up context
/compact - Clear conversation history but keep a summary in context. Optional: /compact [instructions for summarization]
/config - Open config panel
/cost - Show the total cost and duration of the current session
/doctor - Checks the health of your Claude Code installation
/exit - Exit the REPL
/help - Show help and available commands
/ide - Manage IDE integrations and show status
/init - Initialize a new CLAUDE.md file with codebase documentation
/install-github-app - Set up Claude GitHub Actions for a repository
/login - Sign in with your Anthropic account
/logout - Sign out from your Anthropic account
/marp - Simplify markdown and convert to PDF with Marp (user)
/mcp - Manage MCP servers
/memory - Edit Claude memory files
/migrate-installer - Migrate from global npm installation to local installation
/model - Set the AI model for Claude Code
/permissions - Manage allow & deny tool permission rules
/pr-comments - Get comments from a GitHub pull request
/README - Claude Commands (user)
/release-notes - View release notes
/resume - Resume a conversation
/review - Review a pull request
/status - Show Claude Code status including version, model, account, API connectivity, and tool statuses
/terminal-setup - Install Shift+Enter key binding for newlines
/upgrade - Upgrade to Max for higher rate limits and more Opus
/vim - Toggle between Vim and Normal editing modes
Learn more at: https://docs.anthropic.com/s/claude-code
```
### é »ç¹ãªã¢ããããŒãïŒâ»éæšå¥šïŒ
Claude Codeã¯ãã¡ããã¡ãé«é »åºŠã§ã¢ããããŒããããæ°æ©èœè¿œå ããã°ä¿®æ£ãè¡ãããŠããŸãã宿çãªã¢ããããŒãã§ææ°æ©èœã掻çšã§ããŸãã
```bash
# ã¢ããããŒã
claude update
# ããŒãžã§ã³ç¢ºèª
claude --version
```
### â»20250831\_远èš\_Claude Code v1.0.37ãžã®ããŠã³ã°ã¬ãŒã
åé
ã§èšèŒãããšããã **æ§èœãå£åãããããããŒãžã§ã³ã¢ããéæšå¥šã§ãïŒïŒ**
### èšèšã»ã¿ã¹ã¯æŽçã»å®è£
ãæç¢ºã«åé¢
è€éãªã¿ã¹ã¯ã§ã¯ããã§ãŒãºãæç¢ºã«åããããšã§å質ãåäžãããããšãã§ãããã ãªãŒãšæã£ãŠããŸãã
åé¡ããšã«ããå°ããããŠããããããŸãç©ã¿äžããŠè¡ãã®ã¯ãšã³ãžãã¢ãšããŠè
ã®èŠãæãããããŸããã
äŸãã°åã¯ä»¥äžã®ãã³ãã¬ãŒãã䜿çšããããããã®é
ç®ïŒãäœæ¥ã®ç®çã»èæ¯ããªã©ïŒã **èªåã§åãã** äžã§ãæç€ºãåºããŸãã
ïŒãã ããã\*å
·äœçãªæç€ºãããªããæ¹ãæ§èœãäžããïŒãªã©ãèšãããŠããŸããïŒ
ããããããšã **åŸè¿°ã®ã«ã¹ã¿ã ã³ãã³ããäœæ** ãããã **CLAUDE.mdãªã©ã§ã°ããŒãã«ã«ãŒã«ãšããŠèšå®** ããæ¹ãè¯ãã®ãããããŸããããã®èŸºãã¯ç®çãåŒã³åºãããã¿ã€ãã³ã°ã«å¿ããŠæ±ºããŸãããã
```md
å®è£
äœæ¥ã«å¿
èŠãªèšèšãè¡ãªã£ãŠãæ¹éã瀺ããŠãã ããã
ã¿ã¹ã¯ã¯éåžžã«çްããåå²ããäžåºŠã®æç€ºã§ãšã©ãŒãªãå®è£
ã§ãããããªç²åºŠã§ã«ããŠãã ããã
èšèšæ¹éãšäœæ¥ã®ã¹ãããã瀺ããŠãã ããã
## äœæ¥ã®ç®çã»èæ¯
## äœæ¥å
容
## è©³çŽ°ä»æ§
## åææ¡ä»¶
## èæ
®ãã¹ããã€ã³ã
## ææç©ãæºããæ¡ä»¶
## ãã®ä»ã现ã
ãšããæ³šæç¹
```
### CLAUDE.mdã«ããã°ããŒãã«èšå®
`~/.claude/CLAUDE.md` ãã¡ã€ã«ã§ããããžã§ã¯ã暪æçãªã«ãŒã«ãèšå®ã§ããŸãã
äŸãã°åã®èšå®äŸã§ã¯ä»¥äžã®ãããªããšãå®çŸããŠããŸãã
- è±èªã§æèãæ¥æ¬èªã§å¿ç
- ããã¥ã¡ã³ãã¯è±èªãå®è£
ã³ã¡ã³ãã¯æ¥æ¬èª
- 䞊ååŠçã®æå€§å
- ã¿ã¹ã¯å®äºæã®éç¥
- èšèšããã¥ã¡ã³ãã®èªåçæïŒ`.tmp/design.md` ã`.tmp/task.md` ïŒ
ã¢ãã«èªèº«ãè±èªåã§çãŸããŠããäžãäžã®äžã®æ
å ±ãå§åçã«å€ããããè±èªã§æèããããšç²ŸåºŠãé«ããšããªããšãâŠ
ãã ãåã¯è±èªãåŸæã§ã¯ãªããããã¬ã¹ãã³ã¹èªäœã¯æ¥æ¬èªã§ãããŠããŸãã
å
·äœçã«ã¯ã以äžã®ãããªèšå®ãããŠããŸãã
```md
# Guidelines
This document defines the project's rules, objectives, and progress management methods. Please proceed with the project according to the following content.
## Top-Level Rules
- To maximize efficiency, **if you need to execute multiple independent processes, invoke those tools concurrently, not sequentially**.
- **You must think exclusively in English**. However, you are required to **respond in Japanese**.
## Project Rules
- Follow the rules below for writing code comments and documentation:
- **Documentation** such as JSDoc and Docstrings must be written in **English**.
- **Comments embedded within the code**, such as descriptions for Vitest or zod-openapi, must be written in **English**.
- **Code comments** that describe the background or reasoning behind the implementation should be written in **Japanese**.
- **Do not use emojis**.
- When writing Japanese, do not include unnecessary spaces.
- for example
- ⯠"Claude Codeå
¥é"
- Ã "Claude Code å
¥é"
- To understand how to use a library, **always use the Contex7 MCP** to retrieve the latest information.
- When searching for hidden folders like \`.tmp\`, the \`List\` tool is unlikely to find them. **Use the \`Bash\` tool to find hidden folders**.
- **You must send a notification upon task completion.**
- "Task completion" refers to the state immediately after you have finished responding to the user and are awaiting their next input.
- **A notification is required even for minor tasks** like format correction, refactoring, or documentation updates.
- Use the following format and \`osascript\` to send notifications:
- \`osascript -e 'display notification "${TASK_DESCRIPTION} is complete" with title "${REPOSITORY_NAME}"'\`
- \`${TASK_DESCRIPTION}\` should be a summary of the task, and \`${REPOSITORY_NAME}\` should be the repository name.
## Project Objectives
### Development Style
- **Requirements and design for each task must be documented in \`.tmp/design.md\`**.
- **Detailed sub-tasks for each main task must be defined in \`.tmp/task.md\`**.
- **You must update \`.tmp/task.md\` as you make progress on your work.**
1. First, create a plan and document the requirements in \`.tmp/design.md\`.
2. Based on the requirements, identify all necessary tasks and list them in a Markdown file at \`.tmp/task.md\`.
3. Once the plan is established, create a new branch and begin your work.
- Branch names should start with \`feature/\` followed by a brief summary of the task.
4. Break down tasks into small, manageable units that can be completed within a single commit.
5. Create a checklist for each task to manage its progress.
6. Always apply a code formatter to maintain readability.
7. Do not commit your changes. Instead, ask for confirmation.
8. When instructed to create a Pull Request (PR), use the following format:
- **Title**: A brief summary of the task.
- **Key Changes**: Describe the changes, points of caution, etc.
- **Testing**: Specify which tests passed, which tests were added, and clearly state how to run the tests.
- **Related Tasks**: Provide links or numbers for related tasks.
- **Other**: Include any other special notes or relevant information.
```
**â»2025/07/02远èš**
**ã«ã¹ã¿ã ã³ãã³ã** ã **Hooks** ã䟿å©ã«ãªã£ãŠããã®ã§ãããŸãCLAUDE.mdã«æ
å ±ãè©°ã蟌ãŸãªãæ¹ãè¯ããããããŸãããïŒé·æã«ãªãã°ãªãã»ã©ãã³ã³ããã¹ããèŠå€±ãæ©èœããªããªãïŒ
çŸåšã¯ãã®ãããã·ã³ãã«ã«ãªããŸããã
ç®çã«åãããŠèª¿æŽããŠãããŸãããïŒ
```md
# Guidelines
This document defines the project's rules, objectives, and progress management methods. Please proceed with the project according to the following content.
## Top-Level Rules
- To maximize efficiency, **if you need to execute multiple independent processes, invoke those tools concurrently, not sequentially**.
- **You must think exclusively in English**. However, you are required to **respond in Japanese**.
- To understand how to use a library, **always use the Contex7 MCP** to retrieve the latest information.
## Programming Rules
- Avoid hard-coding values unless absolutely necessary.
- Do not use \`any\` or \`unknown\` types in TypeScript.
- You must not use a TypeScript \`class\` unless it is absolutely necessary (e.g., extending the \`Error\` class for custom error handling that requires \`instanceof\` checks).
```
`Programming Rules` ãªããã¯ãã³ãŒãã¬ãã¥ãŒãè¡ãªã£ãŠãããMCPãªã©ãããã°ãã¡ãã«ä»»ããŠããŸãããšãã§ãããšæããŸãã
### MCPã«ããæ©èœæ¡åŒµ
MCPïŒModel Context ProtocolïŒã掻çšããŠãClaude Codeã®æ©èœã倧å¹
ã«æ¡åŒµã§ããŸãã
MCPãå©çšããäžã§æ¥œã§ç°¡åãªæ¹æ³ã¯ã `claude mcp add` ã³ãã³ãã䜿çšããããšã§ãã
```bash
# Context7ãã°ããŒãã«èšå®ã«è¿œå
claude mcp add -s user context7 -- npx -y @upstash/context7-mcp@latest
# ãããžã§ã¯ãå
±æèšå®ãšããŠè¿œå
claude mcp add -s project context7 -- npx -y @upstash/context7-mcp@latest
```
ããé«åºŠãªèšå®ãå¿
èŠãªå Žåã¯ãèšå®ãã¡ã€ã«ãçŽæ¥ç·šéããããšãå¯èœã§ãã
èšå®ãã¡ã€ã«ïŒ `~/.claude/.mcp.json` ïŒã®äŸ
```json
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "..."
}
},
"context7": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"]
},
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
}
}
}
```
åMCPãµãŒããŒã®çšé
- **GitHub MCP**: GitHubãªããžããªã®æäœïŒIssueãPRãã³ãŒãã®ååŸïŒ
- **Context7**: ã©ã€ãã©ãªã®ããã¥ã¡ã³ãããªã¢ã«ã¿ã€ã ã§ååŸ
- **Playwright**: ãã©ãŠã¶èªååãšWebã¹ã¯ã¬ã€ãã³ã°
ã°ããŒãã«ãªèšå®ã¯æ¬æ¥ `~/.claude.json` ã«èšèŒããã®ãé©åããšæããŸããã `claude` ã³ãã³ãã§MCPçšã®èšå®ãã¡ã€ã«ãæå®ããããšãå¯èœã§ããã¡ããå©çšããŠããŸãã
ãŸããå
¬åŒããã¥ã¡ã³ãã®ãšãã `claude mcp add` ã³ãã³ãã§è¿œå ããããšãã§ããŸãã
```bash
claude mcp add <name> <command> [args...]
```
### â»20250831\_远èš\_Serenaã®å©çš
Claude Codeã®æ§èœãå£åãããããšèšããããããããæ¥éã«å©çšãåºãŸã£ãŠããã®ããSerenaããšããããŒã«ïŒMCPãµãŒããŒïŒã§ãã
LSPïŒLanguage Server ProtocolïŒã䜿ã£ãŠã·ã³ãã«ããŒã¹ã§ã³ãŒãã®è§£æãè¡ããLLMã«ããã³ãŒãæ€çŽ¢ããã³äœæã»ä¿®æ£ããšãŠãå¹çè¯ãã粟床è¯ããããŒã¯ã³æ¶è²»ãæããŠãããããšãããçŸåšã§ã¯å¿
é ã®ããŒã«ã«ãªã£ãŠããŸãã
ãã¡ãã®èšäºããšãŠãåèã«ãªããŸããã
å©ç𿹿³ã¯ãšãŠãç°¡åã§ãéçºãããããžã§ã¯ãã®ãã£ã¬ã¯ããªã«ç§»åãã以äžã®ã³ãã³ããå®è¡ããã ãã§ãã
```text
claude mcp add serena -- uvx --from git+https://github.com/oraios/serena serena-mcp-server --context ide-assistant --project $(pwd) && \
uvx --from git+https://github.com/oraios/serena serena project index
```
ãã®ã³ãã³ãã«ãããMCPãµãŒããŒã®è¿œå ãSerenaã®åæåãªã©ãè¡ãªã£ãŠãããŸãã
å®è¡åŸã¯æ®éã«Claude Codeãèµ·åãã
```text
serenaãå©çšããŠã³ãŒããæ€çŽ¢ãããããä¿®æ£ããŠãã ãã
```
ã®ããã«æç€ºããã°åããŠãããŸãã
ãã ã以äžã®ããã«ã«ã¹ã¿ã ã¹ã©ãã·ã¥ã³ãã³ããä»èŸŒãã§ãããšãªãè¯ããããããŸããã
ïŒãã¡ãã®ã³ãŒãã¯ã©ãªããã®èšäºãåèã«ãããŠããã ãããã®ã§ãããå
èšäºãå®å
šã«å¿ããŠããŸãâŠèŠã€ããæ¬¡ç¬¬ãªã³ã¯ã貌ããŸãâŠïŒïŒïŒ
### 广çãªã³ãŒãã¬ãã¥ãŒ
claude codeã® `/review` ã³ãã³ããå©çšããŠãã³ãŒãã¬ãã¥ãŒãè¡ãããšãã§ããŸããããã©ãŒããããæå®ãããå Žåã¯æ®éã«ããã³ããã§ã¬ãã¥ãŒã宿œãããããšãã§ããŸãã
```md
\`https://github.com/{owner}/{repository}/pull/{pull request ID}\`ã®ããã«pull requestã®URLãæå®ããã®ã§ãã¬ãã¥ãŒãäŸé Œãããå Žåã«ã¯ãpull requestãååŸããã³ãŒãã¬ãã¥ãŒãæ¥æ¬èªã§è©³çްãã€äžå¯§ã«è¡ãªã£ãŠãã ããã
æè¡çãªãã¯ããã¯ã«ç¹ã«çç®ããããè¯ãææ³ãææ¡ããŠãã ããã
- åŠçã®è²¬ååé¢
- åŠçã®å
±éå
- äžèŠãªã³ãŒãã®åé€
- APIã¬ã¹ãã³ã¹ã®æé©å
- ãã¹ãã®å質åäž
- 倿°åã®æŽåæ§
- ãšã©ãŒãã³ããªã³ã°ã®æ¹å
- åŠçå Žæã®é©åæ§ïŒããã¯ãšã³ã/ããã³ããšã³ãïŒ
ãã©ãŒãããïŒ
---
# PRçªå·ãšã¿ã€ãã«
## 倿޿ŠèŠ
## 倿Žãã¡ã€ã«
## ã³ãŒã倿Žã®è©³çްåæ
## ã¬ãã¥ãŒã³ã¡ã³ã
### è¯ãç¹
### æ¹åç¹ã»ç¢ºèªç¹
## çµè«
---
ã§ã¯ã¬ãã¥ãŒãè¡ã£ãŠãã ããã
pull requestã®URL:
```
### æèæ¡åŒµã«ãã粟床åäž
Claude Codeã«ã¯ãè€éãªåé¡ã«å¯ŸããŠããæ·±ãåæãè¡ãããã®ãæ¡åŒµæèã¢ãŒããããããŸãã
ç¹å®ã®ããŒã¯ãŒãã䜿çšããããšã§ãç°ãªãã¬ãã«ã®èšç®ãªãœãŒã¹ãå²ãåœãŠãããšãã§ããŸãã
ããŒã¯ãŒãã¯è€æ°ååšããããã§ãããå
šãŠ `think` ããå§ãŸãã¯ãŒãã®æ¹ãèŠããã®ã楜ã ã£ãããããã®ããã«æããŠããŸãã
- `think` - åºæ¬ã¬ãã«ïŒ4,000ããŒã¯ã³ïŒ
- 䜿çšäŸïŒç°¡åãªãªãã¡ã¯ã¿ãªã³ã°ã説æ
- `think hard` / `think deeply` - 詳现ã¬ãã«ïŒ10,000ããŒã¯ã³ïŒ
- 䜿çšäŸïŒã¢ãŒããã¯ãã£ã®èšèšãè€éãªãã°ã®è§£æ
- `think harder` / `ultrathink` - æå€§ã¬ãã«ïŒ31,999ããŒã¯ã³ïŒ
- 䜿çšäŸïŒå€§èŠæš¡ãªãã¡ã¯ã¿ãªã³ã°ãã·ã¹ãã å
šäœã®æé©åææ¡
䜿çšäŸïŒ
```text
> "think hard ãã®ã³ãŒãã®ããã©ãŒãã³ã¹ãæ¹åããæ¹æ³ãèããŠ"
> "think super hard ãã®ã¢ãŒããã¯ãã£ã®åé¡ç¹ãšæ¹åæ¡ãæç€ºããŠ"
```
ãã ããæèæ¡åŒµã¯ããŒã¯ã³æ¶è²»ãå¢ãããããã¬ãŒããªãããã«æ³šæãå¿
èŠã§ãã
### ã»ãã¥ãªãã£ãèæ
®ããpermissionsèšå®
`~/.claude/settings.json` ã§ããã¡ã€ã«ã¢ã¯ã»ã¹ãã³ãã³ãå®è¡ã®æš©éã现ããå¶åŸ¡ã§ããŸãã
ãããžã§ã¯ãïŒã©ãããPC諞å
±ïŒç Žå£ãããããªå±éºãªã³ãã³ãã¯çŠæ¢ãã€ã€ãå¹çããéçºãã§ããããã«ãã©ã³ã¹ãåãå¿
èŠãããããã§ãã
ãã¡ãã®èšäºãªãããåèã«ãããŠããã ããŸããã
```json
{
"env": {},
"permissions": {
"allow": [
"Read(**)",
"Write(src/**)",
"Write(docs/**)",
"Write(.tmp/**)",
"Bash(git init:*)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Bash(git push origin*:*)",
"Bash(git status:*)",
"Bash(git diff:*)",
"Bash(git log:*)",
"Bash(npm install:*)",
"Bash(pnpm install:*)",
"Bash(rm *)",
"Bash(ls:*)",
"Bash(cat **)",
"Bash(osascript -e:*)",
"mcp__context7__resolve-library-id",
"mcp__context7__get-library-docs"
],
"deny": [
"Bash(sudo:*)",
"Bash(rm -rf:*)",
"Bash(git push:*)",
"Bash(git reset:*)",
"Bash(git rebase:*)",
"Read(.env.*)",
"Read(id_rsa)",
"Read(id_ed25519)",
"Write(.env*)",
"Bash(curl:*)",
"Bash(wget:*)"
]
},
"model": "opus",
"preferredNotifChannel": "auto",
"enableAllProjectMcpServers": false
}
```
### Git Worktreeãšccmanagerã®æŽ»çš
Git Worktreeã䜿çšããããšã§ãåäžãªããžããªã®è€æ°ãã©ã³ããç°ãªããã£ã¬ã¯ããªã§åæã«äœæ¥ã§ããŸãã
Claude Codeã§ã®å©ç¹
- è€æ°ã¿ã¹ã¯ã®äžŠåå®è¡ãå¯èœ
- ãã©ã³ãåãæ¿ãã«ããã³ã³ããã¹ããã¹ã鲿¢
- åworktreeã§ç¬ç«ããã»ãã·ã§ã³ãç¶æ
worktreeãå¹ççã«ç®¡çããææ³ãšããŠã `ccmanager` ãªã©ã®ããŒã«ã®å©çšãæããããŸãã
ccmanagerã¯ãè€æ°ã®Claude Codeã»ãã·ã§ã³ãå¹ççã«ç®¡çããCUIããŒã«ã§ãã
```bash
# ã€ã³ã¹ããŒã«
npm install -g ccmanager
```
èšå®ã«ãã以äžãå®çŸå¯èœ
- åworktreeã®ã¹ããŒã¿ã¹è¡šç€ºïŒäœæ¥äžãå
¥ååŸ
ã¡ãå®äºãªã©ïŒ
- ã·ã§ãŒãã«ããã«ããçŽ æ©ãã»ãã·ã§ã³åãæ¿ã
- Gitæäœã®UIçµ±å
- ã«ã¹ã¿ã ã³ãã³ãã«ããèªåå
ãã ãããã«ãã¿ã¹ã¯ã¯ç²åŽåºŠãé«ããããé©åºŠãªå©çšãæšå¥šããŸãã
䞊åéçºãããŠãããšè²ã
ãªãªããžããªã®ã«ãŒãã§é »ç¹ã« `ccmanager` ã³ãã³ããå©ãå¿
èŠãããã®ã§ãshellã®èšå®ïŒ `~/.zshrc` ãªã©ïŒã«ã¯ä»¥äžã®ããã«èšå®ããŠãããšã³ãã³ããççž®ã§ããŠå°å³ã«äŸ¿å©ã§ãããã
```text
alias ccm='ccmanager'
```
ccmanagerã«ã¯ä»¥äžã®ãããªèšå®ã䜿çšããŠããŸãã
commandãèšå®ããããšã§claude codeã«å®è¡ãããåŒæ°ãæå®ã§ããŸãã
å®éã«å©çšããŠã¿ããšä»¥äžã®ããã«ãªããŸãã
ç°¡åã«worktreeã®äœæãåé€ãªã©ãè¡ããŸãã
**â»2025/07/02远èš**
ccmanagerã§ã **ããªã»ãã** ãã®èšå®ãã§ããããã«ãªã£ãŠããŸããïŒ
èšå®ããŠãããšã¯ãŒã¯ããªãŒãéžæããåŸã«ãèšå®ããããªã»ããã§Claude Codeãèµ·åãããããŸãïŒ
äŸãã° `~/.config/ccmanager/config.json` ã®èšå®ãã¡ã€ã«ã以äžã®ããã«èšå®ããŠãããšããŸãããã
```json
{
"worktree": {
"autoDirectory": true,
"autoDirectoryPattern": "../{branch}"
},
"commandPresets": {
"presets": [
{
"id": "claude-resume",
"name": "Claude Code (Resume)",
"command": "claude",
"args": ["--resume"],
"fallbackArgs": []
},
{
"id": "claude-yolo",
"name": "Claude Code (YOLO)",
"command": "claude",
"args": [
"--dangerously-skip-permissions"
],
"fallbackArgs": []
},
{
"id": "gemini-default",
"name": "Gemini CLI",
"command": "gemini",
"args": [],
"detectionStrategy": "gemini"
}
],
"defaultPresetId": "claude-resume",
"selectPresetOnStart": true
}
}
```
ãããããšã以äžã®ããã«ã©ã®ã³ãã³ããå®è¡ãããéžæã§ããããã«ãªããŸãïŒ
[](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F203944%2F5ce57e20-8802-4e5a-8291-7f6424db1a5c.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=396040c0d5622456c8887e22dd975e6c)
**`Gemini CLI` ãå®è¡ã** ãããšãã§ãã¡ããã®ã§ãã¡ã䟿å©ã§ãïŒïŒ
### äœæ¥å®äºéç¥ã®èªåå
`~/.claude/CLAUDE.md` ã«ãäœæ¥å®äºåŸã«ã¯ä»¥äžã®ãããªã³ãã³ããå®è¡ããããã«æç€ºããŠããããšã§ãäœæ¥å®äºæã«èªåéç¥ãåãåããŸãïŒ
```bash
osascript -e 'display notification "${TASK_DESCRIPTION} is complete" with title "${REPOSITORY_NAME}"'
```
ãã®èšå®ã«ããïŒ
- é·æéå®è¡ã¿ã¹ã¯ã®å®äºãèŠéããªã
- 䞊åäœæ¥æã®é²æç®¡çã容æ
- äœæ¥å¹çãåäž
**â»2025/07/02远èš**
åŸè¿°ããHooksãå©çšå¯èœã«ãªã£ãããããã¡ãã§éç¥ããæ¹ã確å®ãããããŸããïŒ
### ã«ã¹ã¿ã ã¹ã©ãã·ã¥ã³ãã³ãã®äœæ
ã«ã¹ã¿ã ã³ãã³ãã§äœæ¥ãå¹çåã§ããŸãã
äŸãã°ã以äžã®ãããªã³ãã³ãã§çºè¡šã¹ã©ã€ãäœæã³ã¹ãã®ççž®ãªã©ãã§ãããããããŸããã
**â»2025/07/02远èš**
`@` ãã¬ãã£ãã¯ã¹ãå©çšããŠãã³ãã³ãå®è¡ã®åã«æå®ããããã¡ã€ã«ãå«ããããšãã§ããããã«ãªããŸããïŒ
ã³ãã³ãã埮修æ£ããŸããïŒ
äŸïŒMarpã§ããŒã¯ããŠã³ããã¹ã©ã€ããèªåçæ
`~/.claude/commands/marp.md` ïŒ
```md
---
allowed-tools: Read, Write, Bash(marp:*, rm:*)
description: Simplify markdown and convert to PDF with Marp
---
## Context
- Input file: $ARGUMENTS
- Guidelines: @~/.claude/templates/slide-guidelines.md
- Template: @~/.claude/templates/design-template.md
## Your task
1. Read the input markdown file
2. Read the slide guidelines
3. Simplify the markdown content according to the guidelines
4. Read the design template
5. Apply the template to the simplified content
6. Save to a temporary file
7. Convert to PDF using Marp CLI
8. Clean up the temporary file
```
ãã®ã³ãã³ãã§ã¯äºåã«çšæãã以äžã®ãããªãã³ãã¬ãŒããå©çšããŠããŸãã
- `~/.claude/templates/design-template.md`
```md
---
marp: true
theme: white-minimal
paginate: true
---
<style>
</style>
```
- `~/.claude/templates/slide-guidelines.md`
```md
# Slide Simplification Guidelines
## Core Principles
### 1. One Slide, One Message
- Each slide should convey a single, clear message
- Avoid information overload
- Supplement details verbally or in separate materials
### 2. Title Rules (\`##\`)
- **Maximum 30 full-width characters** (or ~60 half-width characters)
- **Must fit on one line** - wrapping breaks the layout
- Keep titles concise and clear
### 3. Content Guidelines
#### Text and Bullet Points
- **Characters per line:** 35-45 full-width characters
- **Bullet points per slide:** 5-7 items maximum
- **Lines per bullet point:** 1-2 lines ideally
- **Paragraph lines:** 5-7 lines maximum
#### Subtitle Rules (\`###\`)
- Maximum 15 full-width characters
- Use for section breaks or sub-headings only
#### Tables
- **Columns:** 3-4 maximum
- Keep cell content concise
- Consider bullet points for complex data
## Simplification Strategies
### 1. Remove Redundancy
- Eliminate repetitive phrases
- Remove obvious statements
- Cut unnecessary transitional words
### 2. Use Clear Structure
- Start with the most important point
- Use parallel construction in lists
- Group related items together
### 3. Simplify Language
- Replace complex terms with simple ones
- Use active voice
- Avoid jargon unless necessary
### 4. Visual Hierarchy
- Use headings to structure content
- Break long paragraphs into bullet points
- Add whitespace for readability
## Examples
### Bad Example
---
## An Extremely Long Title About Very Important Technical Debt in This Project and Its Detailed Repayment Plan with Comprehensive Considerations
---
### Good Example
---
## Technical Debt Repayment Plan
---
### Before Simplification
---
- In order to properly understand the complex nature of our system architecture, it is absolutely essential that we first take into consideration the various interconnected components and their relationships
---
### After Simplification
---
- Understand system architecture through component relationships
---
```
äœ¿çšæ¹æ³ã¯ããã ãã§ãã
```text
/marp path-to-markdown
```
### Gemini CLIãå©çšããGoogle Web Search
Gemini CLIã¯Claude Codeã®é¡äŒŒããŒã«ã§ãã
ã³ãŒãã£ã³ã°ã¿ã¹ã¯ãè¡ãäžã§ã¯Claude Codeã®æ¹ãæ§èœãè¯ããšãã話ã¯èãããŠããŸãããWebæ€çŽ¢ã«ããæ
å ±åéãªãGemini CLIã®å§åã ããã§ãã
åé
ã§èª¬æããã«ã¹ã¿ã ã³ãã³ããšã㊠`search` ãç»é²ããŸãããã
**â»2025/07/02远èš**
`!`ãã¬ãã£ãã¯ã¹ãå©çšããŠãã³ãã³ãå®è¡ã®åã«bashã³ãã³ããå®è¡ã§ããããã«ãªããŸããïŒãŸãã `think` ãªã©ã®ããŒã¯ãŒããå
¥ããŠããããšã§ãæèæ¡åŒµãè¡ããããã«ãªã£ãŠããŸãã
ã³ãã³ãã埮修æ£ããŸããïŒ
- `~/.claude/commands/search.md`
```md
---
allowed-tools: Bash(gemini:*)
description: "Use the Gemini CLI to perform web searches."
---
## Gemini Search
**Run the Gemini CLI with the Bash tool instead of the Web_Search tool**
You will receive a command like \`>/search [arguments]\`.
Use the Bash tool to launch Google_Web_Search in the Gemini CLI and search for the arguments you received as follows:
- Use !\`gemini -p 'google_web_search:[arguments]'\`
Please narrow down the keywords you want to search for about 2-3.
think.
```
ãã®ããã«å©çšããããšãã§ããŸãã
```text
> /search "æ°å§ãšãã®å€åã瀺ãæç³»åããŒã¿ã£ãŠãã©ããªããŒã¿ãããïŒ"
⺠æ°å§ãšãã®å€åã瀺ãæç³»åããŒã¿ã®çš®é¡
äž»ãªããŒã¿åœ¢åŒ
1. GRIB/GRIB2åœ¢åŒ - äžçæ°è±¡æ©é¢(WMO)æšæºã®æ°è±¡ããŒã¿åœ¢åŒ
2. NetCDFåœ¢åŒ - ç§åŠããŒã¿ã®ä¿åã»å
±æã«åºã䜿çš
3. JSONåœ¢åŒ - Web APIã§æäŸããã圢åŒ
4. CSV/ããã¹ãåœ¢åŒ - ã·ã³ãã«ãªæç³»åããŒã¿
å©çšå¯èœãªããŒã¿ãœãŒã¹
1. NOAA GFS (Global Forecast System)
- å
šçäºå ±ããŒã¿ïŒ0.25床解å床ïŒ
- å°è¡šé¢æ°å§ãæµ·é¢æŽæ£æ°å§ãªã©
- GRIB2圢åŒã§æäŸ
2. Open-Meteo API
- ç¡æã®æ°è±¡äºå ±API
- JSON圢åŒã§ç°¡åã«ã¢ã¯ã»ã¹å¯èœ
- éå»ããŒã¿ãšäºå ±ããŒã¿ãæäŸ
3. æ°è±¡åºããŒã¿
- ã¢ã¡ãã¹èŠ³æž¬ããŒã¿
- é«å±€æ°è±¡èŠ³æž¬ããŒã¿
ããŒã¿å
容
- å°è¡šé¢æ°å§ (surface pressure)
- æµ·é¢æŽæ£æ°å§ (mean sea level pressure)
- æ°å§ã®æéå€åç
- äºå ±æç³»åããŒã¿ (3æéããšãæå€§16æ¥å
ãŸã§)
```
### Hooksãå©çšããã¿ã¹ã¯å®äºéç¥
**â»2025/07/02远èš**
Hooksãå©çšãããšClaude Codeã®ã©ã€ããµã€ã¯ã«ïŒåå·¥çšãå®äºããæïŒã§ã³ãã³ããå®è¡ã§ããããã«ãªããŸãïŒ
ä»ãŸã§ã¯ã«ã¹ã¿ã ã³ãã³ããCLAUDE.mdã«èšè¿°ãããŠããLLMãå®è¡å€æãäžããªãã£ãããã³ã³ããã¹ããèŠå€±ã£ãŠããŸããšèšè¿°ããåŠçãå®è¡ããŠãããŸããã§ããããHooksã§ã¯ç¹å®ã®ã¢ã¯ã·ã§ã³ãå¿
ãå®è¡ãããããã«ãªããŸãïŒ
Hooksãå©çšããã«ã¯ãŸã `~/.claude/settings.json` ã«hooksã»ã¯ã·ã§ã³ã远å ããå¿
èŠããããŸãã
ãã¡ãã®èšäºãåèã«ãããŠããããŸããã
```json
{
"env": {
...
},
"permissions": {
...
},
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/stop-send-notification.js"
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/textlint-hook.js"
}
]
}
]
}
}
```
å®è¡ãããcommandãã¯ã³ã©ã€ããŒã§èšè¿°ããŠãè¯ãã§ãããè€éãªãã®ãäœæãããšãã«ã¯ `~/.claude/hooks` ãã©ã«ããäœæããå®è¡å¯èœãªããã°ã©ã ïŒã·ã§ã«ã¹ã¯ãªããã.jsã.pyãªã©ïŒãé
眮ãããã®ãã¹ãæå®ããŸãããã
`Stop` ã `PostToolUse` ã¯ããã¯ã€ãã³ããæå®ãã `matcher` ã«ã¯Claude Codeãã©ã®ãããªã¿ã€ãã³ã°ã§ã³ãã³ããå®è¡ããããæå®ããŸãã
ããã¯æã«ã¯æšæºå
¥åã§JSONãåä¿¡ããŸãã
ãã®ãããå®è¡ãããããã°ã©ã ã§ã¯æšæºå
¥åããå€ãæœåºããäœãããåŠçããå¿
èŠããããŸãã
ä»åäœã£ã `textlint-hook.js` ã¯ããã¡ã€ã«ç·šéããŒã«çµäºæã«å®è¡ããã `textlint` ãšããããŒã«ãå®è¡ããæ¥æ¬èªæç« ãæŽããŸãã
ããã°ã©ã ãå®è¡ãããã®ã¡ã察象ãããŒã¯ããŠã³ã®å Žåã¯ããã«å¥ã®ã³ãã³ããå®è¡ããããããªäœãã§ãã
ïŒä»¥äžãé©åœã«LLMã«äœãããããã°ã©ã ãªã®ã§ãå®è¡ã¯èªå·±è²¬ä»»ã§ãé¡ãããŸããïŒ
```js
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const { spawn } = require('child_process');
const os = require('os');
/**
* Check if file is a markdown file
*/
function isMarkdownFile(filepath) {
return filepath.endsWith('.md') || filepath.endsWith('.markdown');
}
/**
* Run textlint on the file and return result
*/
function runTextlint(filepath) {
return new Promise((resolve) => {
try {
const configPath = path.join(os.homedir(), '.claude', '.textlintrc.json');
// First, check for errors
const textlint = spawn('npx', ['textlint', '-c', configPath, filepath], {
stdio: ['inherit', 'pipe', 'pipe']
});
let stdout = '';
let stderr = '';
textlint.stdout.on('data', (data) => {
stdout += data.toString();
});
textlint.stderr.on('data', (data) => {
stderr += data.toString();
});
textlint.on('close', (code) => {
if (code !== 0) {
// Errors found, try to fix them
console.error(\`Textlint found issues in ${filepath}. Attempting to fix...\`);
// Run with --fix option
const fixTextlint = spawn('npx', ['textlint', '-c', configPath, '--fix', filepath], {
stdio: ['inherit', 'pipe', 'pipe']
});
let fixStdout = '';
let fixStderr = '';
fixTextlint.stdout.on('data', (data) => {
fixStdout += data.toString();
});
fixTextlint.stderr.on('data', (data) => {
fixStderr += data.toString();
});
fixTextlint.on('close', (fixCode) => {
if (fixCode === 0) {
console.error(\`â
Textlint automatically fixed issues in ${filepath}\`);
} else {
console.error(\`â ïž Some textlint issues could not be automatically fixed in ${filepath}\`);
console.error(fixStdout);
}
resolve(fixCode);
});
} else {
resolve(0);
}
});
} catch (error) {
console.error(\`Error running textlint: ${error}\`);
resolve(1);
}
});
}
// Read input from stdin
let inputData = '';
process.stdin.setEncoding('utf8');
process.stdin.on('data', (chunk) => {
inputData += chunk;
});
process.stdin.on('end', async () => {
try {
const input = JSON.parse(inputData);
// Get tool information
const toolName = input.tool_name || '';
const toolInput = input.tool_input || {};
// Check if this is a file editing tool
if (!['Edit', 'Write', 'MultiEdit'].includes(toolName)) {
process.exit(0);
}
// Get the file path
let filePath = toolInput.file_path || '';
// For MultiEdit, also check edits
if (toolName === 'MultiEdit') {
// MultiEdit can edit multiple files, but file_path is the target
if (!isMarkdownFile(filePath)) {
process.exit(0);
}
} else {
// For Edit and Write, check the file path
if (!filePath || !isMarkdownFile(filePath)) {
process.exit(0);
}
}
// Expand the file path
filePath = filePath.replace(/^~/, os.homedir());
// Check if file exists (it should after editing)
if (!fs.existsSync(filePath)) {
console.error(\`Warning: File ${filePath} does not exist\`);
process.exit(0);
}
// Run textlint
await runTextlint(filePath);
// Exit with 0 even if textlint found issues (non-blocking)
process.exit(0);
} catch (error) {
console.error(\`Error: Invalid JSON input: ${error}\`);
process.exit(1);
}
});
```
textlintã«ã€ããŠã¯å¥èšäºãæžãäºå®ã§ãïŒ
## ãŸãšã
ãšããããšã§ããã€ãTipsã玹ä»ããŠããŸããïŒ
Claude Codeã¯ããããäœãããªããŠã䟿å©ã§ãããã¡ãã£ãšãã倿Žã§ãã£ãšäŸ¿å©ã«ãªããŸãã
以äžãŸãšãã§ãã
- é »ç¹ãªã¢ããããŒã
- èšèšã»ã¿ã¹ã¯æŽçã»å®è£
ãæç¢ºã«åé¢
- CLAUDE.mdã«ããã°ããŒãã«èšå®
- MCPã«ããæ©èœæ¡åŒµ
- 广çãªã³ãŒãã¬ãã¥ãŒ
- æèæ¡åŒµã«ãã粟床åäž
- ã»ãã¥ãªãã£ãèæ
®ããpermissionsèšå®
- Git Worktreeãšccmanagerã®æŽ»çš
- äœæ¥å®äºéç¥ã®èªåå
- ã«ã¹ã¿ã ã¹ã©ãã·ã¥ã³ãã³ãã®äœæ
- Gemini CLIãå©çšããGoogle Web Search
**â»2025/07/02远èš**
- Hooksãå©çšããã¿ã¹ã¯å®äºéç¥
çããããã£ãŠãããŸãããïŒ
[1](https://qiita.com/nokonoko_1203/items/#comments)
ã³ã¡ã³ãäžèЧãžç§»å
XïŒTwitterïŒã§ã·ã§ã¢ãã
Facebookã§ã·ã§ã¢ãã
ã¯ãŠãªããã¯ããŒã¯ã«è¿œå ãã
æ°èŠç»é²ããŠããã£ãšäŸ¿å©ã«Qiitaã䜿ã£ãŠã¿ãã
1. ããªãã«ãããããèšäºããå±ãããŸã
2. 䟿å©ãªæ
å ±ãããšã§å¹ççã«èªã¿è¿ããŸã
3. ããŒã¯ããŒããå©çšã§ããŸã
[ãã°ã€ã³ãããšäœ¿ããæ©èœã«ã€ããŠ](https://help.qiita.com/ja/articles/qiita-login-user)
[æ°èŠç»é²](https://qiita.com/signup?callback_action=login_or_signup&redirect_to=%2Fnokonoko_1203%2Fitems%2F67f8692a0a3ca7e621f3&realm=qiita) [ãã°ã€ã³](https://qiita.com/login?callback_action=login_or_signup&redirect_to=%2Fnokonoko_1203%2Fitems%2F67f8692a0a3ca7e621f3&realm=qiita)
[422](https://qiita.com/nokonoko_1203/items/67f8692a0a3ca7e621f3/likers)
ããããããŠãŒã¶ãŒäžèЧãžç§»å
291