開発初心者のためのClaude Code完全攻略ガイド

未分類
  1. はじめに:なぜこの記事を書いたのか
  2. 🎯 前提条件:課金プランは「MAX」一択!
    1. なぜMAXプランなのか?詳しく解説
      1. 1. Opusモデルの独占利用権
      2. 2. 開発初心者にこそ最高性能が必要な理由
      3. 3. 5時間枠システムの活用
  3. 🌟 六位一体の開発原則:複数AIを使い分ける戦略
    1. なぜ複数のAIを使うのか?
    2. 各AIの役割と具体的な使い方
    3. 具体的な活用例
      1. 例:新機能を実装したい場合
  4. ⏰ Opus5時間枠の戦略的運用法
    1. 5時間枠とは何か?
    2. 基本戦略:「重要タスク=Opus専用」の鉄則
      1. ステップ1:枠の開始を見極める
      2. ステップ2:即座にOpusを指定
      3. ステップ3:最重要タスクを一気に実行
    3. 重要な運用ルール(失敗談から学んだ教訓)
      1. ❌ 私がやって失敗したこと
      2. ⚡ なぜSonnetを避けるのか(具体的な違い)
  5. 📋 1日のタスク管理:最大3件の黄金ルール
    1. なぜ4件ではなく3件なのか?
      1. 理論値 vs 現実的運用の差
    2. 3件制限がもたらす具体的メリット
      1. 1. 睡眠時間の確保
      2. 2. プロンプト力の維持
      3. 3. レビュー力の維持
    3. タスク管理の具体的な方法
      1. タスクリストの管理場所と理由
      2. 優先順位の付け方
  6. 📚 知識の蓄積:学習する開発環境を作る
    1. なぜ記録が重要なのか?
    2. タスク完了後の必須作業(具体的な指示例)
    3. 実際の記録例
  7. 🤖 完全自動化主義:人間は手を動かさない
    1. なぜ「手動作業ゼロ」にこだわるのか?
      1. 私がやらかした手動作業の失敗例
    2. 正しい自動化の実践方法
      1. 1. CLAUDE.mdの編集(自動化版)
      2. 2. Serena MCPセットアップ(自動化版)
      3. 3. GitHub運用(自動化版)
    3. 人間の手動作業を避けるメリット(具体例付き)
    4. 実践のコツ:「指示力」を鍛える
      1. 良い指示の出し方
    5. 自動化で得られる最大のメリット
  8. 🎊 まとめ:開発初心者でも確実に成長できる運用法

はじめに:なぜこの記事を書いたのか

私はIT専門職として働いたことも、プログラミングを学んだこともない、完全な開発初心者です。しかし、Claude Codeと出会い、試行錯誤を重ねる中で、効率的に開発を進められる独自の運用方法を確立できました。

この記事では、同じような立場の方に向けて、Claude Codeの課金を無駄にせず、最大限に活用するための実践的なノウハウを詳しくシェアします。技術的な知識がなくても、適切な戦略があれば確実に成長できることをお伝えしたいと思います。

🎯 前提条件:課金プランは「MAX」一択!

なぜMAXプランなのか?詳しく解説

Claude MAXプランを選ぶ決定的な理由:

1. Opusモデルの独占利用権

  • 2025年8月現在の状況: ProプランではOpusモデルが使用不可
  • Opus vs Sonnet の性能差:
    • Opus:複雑なタスクを一発で完了できる精度
    • Sonnet:同じタスクに3-5倍の指示が必要になることも

2. 開発初心者にこそ最高性能が必要な理由

  • 判断力の補完: 経験不足を最高性能AIがカバー
  • 学習効率: 正しいコードを最初から学べる
  • ミスの削減: 手戻りが少なく、モチベーション維持に直結

3. 5時間枠システムの活用

  • 5時間ごとに利用トークンがリセットされる。5時間ごとにOpusの利用上限まで使用可能: 計画的に使えば1日4回Opusを使える
  • 料金対効果: 月額料金で最高性能を使える

🌟 六位一体の開発原則:複数AIを使い分ける戦略

なぜ複数のAIを使うのか?

単一のAIに依存せず、それぞれの特徴を活かした分業体制を構築することで、コストを抑えながら最高の成果を得られます。

各AIの役割と具体的な使い方

AI役割利用方法月額コスト
Claude Opus統合・実行の司令塔MAXプラン5時間枠MAXプラン料金内
Gemini最新情報の収集担当個人Googleアカウント無料枠0円
GPT-5複雑な問題の分析担当Tier3 API無料枠0円
Serenaコード構造の理解担当MCP連携0円
Qwen3 Coderコード生成の専門家OpenRouter無料枠0円($10初回課金後)
あなた最終意思決定者全体の舵取り

具体的な活用例

例:新機能を実装したい場合

  1. Gemini: 「最新のReact Hooksのベストプラクティスを調査」
  2. GPT-5: 「既存コードとの整合性を分析」
  3. Serena: 「現在のコード構造を解析」
  4. Qwen3 Coder: 「具体的な実装コードを生成」
  5. Claude Opus: 「全ての情報を統合して実装」
  6. あなた: 「実装方針を承認」

⏰ Opus5時間枠の戦略的運用法

5時間枠とは何か?

Claude MAXプランでは、5時間ごとにOpusモデルの利用制限がリセットされます。これを「5時間枠」と呼びます。

基本戦略:「重要タスク=Opus専用」の鉄則

ステップ1:枠の開始を見極める

# ccusage blocksコマンドで残り時間を確認
# 例:「4時間50分」と表示されたら、枠が新しく始まった直後

ステップ2:即座にOpusを指定

/model opus  # 5時間枠開始と同時に実行

ステップ3:最重要タスクを一気に実行

  • 事前に準備した重要タスクリストから選択
  • 迷わず、最も重要なものから着手

重要な運用ルール(失敗談から学んだ教訓)

❌ 私がやって失敗したこと

失敗例1:Sonnetへの切り替え

  • 状況:Opusで80%完了したタスクを、枠が終わったからとSonnetに引き継いだ
  • 結果:Sonnetが理解できず、最初からやり直しに
  • 学び:未完了でも次の5時間枠まで待つべき

失敗例2:Sonnetで「簡単そうな」タスクを実行

  • 状況:「これくらいならSonnetでも…」と思った
  • 結果:
    • 不要なファイルが10個以上生成された
    • 同じ説明を5回以上繰り返した
    • 結局Opusで全部やり直し
  • 学び:「簡単そう」は初心者の判断ミス

⚡ なぜSonnetを避けるのか(具体的な違い)

項目OpusSonnet
理解力1回の指示で意図を理解3-5回の説明が必要
ファイル管理必要最小限のファイル作成試行錯誤で大量のゴミファイル
エラー対応原因を特定して修正表面的な対処で根本解決せず
完了時間30分で完了2時間かけても未完了

📋 1日のタスク管理:最大3件の黄金ルール

なぜ4件ではなく3件なのか?

理論値 vs 現実的運用の差

理論上の計算:

  • 24時間 ÷ 5時間枠 = 4.8回
  • つまり最大4件の重要タスクが実行可能

現実の私の経験:

  • 4件挑戦した日:

    • 深夜2時、朝7時、昼12時、夕方5時に実行
    • 結果:3件目から集中力が切れ、4件目は失敗
    • 翌日は疲労で1件も実行できず
  • 3件に制限した日:

    • 朝8時、午後2時、夜8時に実行
    • 結果:全て成功、翌日も継続可能
    • 1週間で21件のタスクを完了(4件×5日=20件より多い!)

3件制限がもたらす具体的メリット

1. 睡眠時間の確保

理想的なスケジュール例:
- 8:00  - 1件目のタスク(朝の頭が冴えている時間)
- 14:00 - 2件目のタスク(昼食後の集中時間)
- 20:00 - 3件目のタスク(夕食後の落ち着いた時間)
- 23:00 - 就寝(7時間睡眠確保)

2. プロンプト力の維持

良いプロンプトと悪いプロンプトの例:

疲労していない時のプロンプト:

「ユーザー認証システムを実装してください。
要件:
1. JWT使用
2. リフレッシュトークン対応
3. セキュリティを考慮
4. テストコード付き」

疲労している時のプロンプト:

「ログイン機能作って」
→ Opusでも意図が伝わらず、手戻り発生

3. レビュー力の維持

成果物のレビューチェックリスト:

  • [ ] 要件を満たしているか
  • [ ] セキュリティホールはないか
  • [ ] 不要なファイルは生成されていないか
  • [ ] コードの品質は適切か
  • [ ] ドキュメントは更新されているか

疲労時はこれらのチェックが甘くなり、後で大きな問題に

タスク管理の具体的な方法

タスクリストの管理場所と理由

❌ 悪い例:Claude Codeディレクトリ内に保存
→ AIが勝手に編集してしまう可能性

✅ 良い例:デスクトップやメモアプリに保存
📁 デスクトップ/
  └── Claude_タスク管理/
      ├── 今週のタスク.txt
      ├── 完了済み/
      └── アイデアメモ.txt

優先順位の付け方

緊急度×重要度マトリックス:

重要重要でない
緊急Opus枠1番目他のAIに委託
緊急でないOpus枠2-3番目保留

📚 知識の蓄積:学習する開発環境を作る

なぜ記録が重要なのか?

開発初心者の最大の弱点は「経験不足」です。しかし、適切に記録を残せば、AIが過去の経験を次の開発に活かしてくれます。

タスク完了後の必須作業(具体的な指示例)

各5時間枠の最初に、Opusに以下のような指示を出します:

「前回のタスクについて、以下の形式でドキュメントを作成してください:

1. 成果物の整理
   - 作成/編集したファイル一覧
   - 主要な機能の説明
   
2. 遭遇した問題
   - エラー内容
   - 原因
   
3. 解決方法
   - 具体的な手順
   - 参考にした情報源
   
4. 次回への申し送り
   - 改善点
   - 注意事項

ファイル名: docs/task_[日付]_[タスク名].md として保存してください」

実際の記録例

# タスク記録:2024-03-15_認証システム実装

## 成果物
- `/api/auth.js` - JWT認証エンドポイント
- `/middleware/auth.js` - 認証ミドルウェア
- `/tests/auth.test.js` - テストコード

## 遭遇した問題
### 1. JWTトークンの有効期限エラー
- **エラー**: `TokenExpiredError`
- **原因**: タイムゾーンの不一致

### 2. リフレッシュトークンのループ
- **エラー**: 無限ループ発生
- **原因**: 条件分岐のミス

## 解決方法
### 1. タイムゾーン問題
```javascript
// UTCで統一
const exp = Math.floor(Date.now() / 1000) + (60 * 60);
</code></pre>
<h3>2. ループ問題</h3>
<ul>
<li>リフレッシュ処理に回数制限を追加</li>
<li>最大3回までリトライ</li>
</ul>
<h2>次回への申し送り</h2>
<ul>
<li>ログアウト機能の実装が必要</li>
<li>レート制限の検討</li>
<li>セキュリティ監査の実施</li>
</ul>
<pre><code>
### 継続的改善の具体的な効果

#### 1ヶ月後の変化(実体験)

**開始時:**
- 「エラーが出た...どうしよう」
- 同じエラーで毎回30分悩む
- 解決方法を忘れて繰り返す

**1ヶ月後:**
- 「このエラーは先週も出た。docs/task_2024-03-08_*.mdを参照」
- 5分で解決
- パターンを認識して予防できる

#### Serenaとの連携効果

```bash
# Serenaが過去の記録を活用する例
/serena "認証エラーの解決方法を過去の記録から探して"

# 結果:関連する3つのドキュメントを即座に発見
# → 類似の問題を5分で解決(以前は2時間かかった)

🤖 完全自動化主義:人間は手を動かさない

なぜ「手動作業ゼロ」にこだわるのか?

初心者が手動で作業すると、必ず以下の問題が発生します(私の失敗談):

私がやらかした手動作業の失敗例

失敗1:CLAUDE.mdを手動編集

# 手動で追加したつもりが...
- タイポだらけ(GEmini、GPT-4、Sarena...)
- フォーマットが崩れてAIが理解できない
- 重要な設定を消してしまい、動作しなくなった

失敗2:ファイルの手動整理

Before(手動整理):
/project/
  test.js       # これは何のテスト?
  backup.js     # いつのバックアップ?
  新しいファイル.js  # 日本語ファイル名で文字化け
  untitled-1.js  # 内容不明...

失敗3:GitHubへの手動コミット

# 手動でやった結果
git add .  # 全部追加してしまった(秘密鍵も...)
git commit -m "更新"  # 意味不明なコミットメッセージ
git push --force  # 履歴を破壊...

正しい自動化の実践方法

1. CLAUDE.mdの編集(自動化版)

❌ 悪い例(手動):
自分でCLAUDE.mdを開いて編集

✅ 良い例(自動化):
「CLAUDE.mdに、Pythonプロジェクトでは必ず仮想環境を使うルールを追加して」
→ Claude Codeが適切な場所に正確に追加

2. Serena MCPセットアップ(自動化版)

❌ 悪い例(手動):
ドキュメントを見ながらコマンドをコピペ

✅ 良い例(自動化):
「Serena MCPをセットアップして。設定ファイルのパスは/Users/xx/Cursorです」
→ Claude Codeが全ての手順を正確に実行

3. GitHub運用(自動化版)

実際の指示例:

「今日の作業内容をGitHubにコミットして。
コミットメッセージは作業内容が分かるように書いて。
秘密情報は含めないで」

Claude Codeが実行すること:

  1. 変更ファイルの確認
  2. 秘密情報のチェック
  3. 適切なファイルのみステージング
  4. 意味のあるコミットメッセージ作成
  5. 安全にプッシュ

人間の手動作業を避けるメリット(具体例付き)

メリット手動の問題自動化の結果
整理整頓test1.js, test2.js, 最新.jsauth_test.js, api_test.js, user_service.js
品質向上「これで動くはず」完全なドキュメント付きコード
自動管理不要ファイルが100個以上…「不要ファイルを削除して」で一発解決
知識蓄積「先週何やったっけ?」Serenaが全履歴を記憶
継続性引き継ぎ不可能誰でも理解できる状態

実践のコツ:「指示力」を鍛える

良い指示の出し方

レベル1(初心者):

「README作って」

レベル2(中級者):

「このプロジェクトのREADMEを作って。
インストール方法と使い方を含めて」

レベル3(上級者):

「このプロジェクトのREADMEを作成してください。
含める内容:
1. プロジェクト概要
2. 必要な環境
3. インストール手順(コマンド例付き)
4. 基本的な使い方(3つ以上の例)
5. トラブルシューティング
6. 今後の開発予定
マークダウン形式で、初心者にも分かりやすく」

自動化で得られる最大のメリット

「失敗を恐れなくなる」

  • 手動:「間違えたら戻せない…」
  • 自動:「Claude、さっきの変更を元に戻して」で解決

これにより、挑戦的なタスクにも積極的に取り組めるようになります。

🎊 まとめ:開発初心者でも確実に成長できる運用法

この運用方法を実践することで:

  1. 効率的なリソース活用: 課金したMAXプランを最大限活用
  2. 着実なスキル向上: 毎日最大3件の確実な成長
  3. 知識の定着: 経験が確実に蓄積される仕組み
  4. 持続可能な開発: 無理のないペースで継続

開発経験がなくても、適切な戦略とツールがあれば確実に成長できます。Claude Codeを相棒に、一緒に開発の世界を楽しみましょう!

コメント

");const o=le?le.createHTML(e):e;if(ot===nt)try{t=(new Y).parseFromString(o,ut)}catch(e){}if(!t||!t.documentElement){t=se.createDocument(ot,"template",null);try{t.documentElement.innerHTML=rt?ce:o}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),ot===nt?pe.call(t,ze?"html":"body")[0]:ze?t.documentElement:i},St=function(e){return ue.call(e.ownerDocument||e,e,B.SHOW_ELEMENT|B.SHOW_COMMENT|B.SHOW_TEXT|B.SHOW_PROCESSING_INSTRUCTION|B.SHOW_CDATA_SECTION,null)},bt=function(e){return e instanceof G&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof W)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},Nt=function(e){return"function"==typeof R&&e instanceof R};function Rt(e,t,n){u(e,(e=>{e.call(o,t,n,ft)}))}const wt=function(e){let t=null;if(Rt(de.beforeSanitizeElements,e,null),bt(e))return Et(e),!0;const n=pt(e.nodeName);if(Rt(de.uponSanitizeElement,e,{tagName:n,allowedTags:Ne}),Ue&&e.hasChildNodes()&&!Nt(e.firstElementChild)&&S(/<[/\w!]/g,e.innerHTML)&&S(/<[/\w!]/g,e.textContent))return Et(e),!0;if(e.nodeType===ee)return Et(e),!0;if(Ue&&e.nodeType===te&&S(/<[/\w]/g,e.data))return Et(e),!0;if(!Ne[n]||ve[n]){if(!ve[n]&&Dt(n)){if(De.tagNameCheck instanceof RegExp&&S(De.tagNameCheck,n))return!1;if(De.tagNameCheck instanceof Function&&De.tagNameCheck(n))return!1}if(je&&!$e[n]){const t=ae(e)||e.parentNode,n=ie(e)||e.childNodes;if(n&&t){for(let o=n.length-1;o>=0;--o){const r=$(n[o],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,re(e))}}}return Et(e),!0}return e instanceof O&&!function(e){let t=ae(e);t&&t.tagName||(t={namespaceURI:ot,tagName:"template"});const n=h(e.tagName),o=h(t.tagName);return!!it[e.namespaceURI]&&(e.namespaceURI===tt?t.namespaceURI===nt?"svg"===n:t.namespaceURI===et?"svg"===n&&("annotation-xml"===o||lt[o]):Boolean(Tt[n]):e.namespaceURI===et?t.namespaceURI===nt?"math"===n:t.namespaceURI===tt?"math"===n&&ct[o]:Boolean(yt[n]):e.namespaceURI===nt?!(t.namespaceURI===tt&&!ct[o])&&!(t.namespaceURI===et&&!lt[o])&&!yt[n]&&(st[n]||!Tt[n]):!("application/xhtml+xml"!==ut||!it[e.namespaceURI]))}(e)?(Et(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!S(/<\/no(script|embed|frames)/i,e.innerHTML)?(Me&&e.nodeType===Q&&(t=e.textContent,u([he,ge,Te],(e=>{t=y(t,e," ")})),e.textContent!==t&&(f(o.removed,{element:e.cloneNode()}),e.textContent=t)),Rt(de.afterSanitizeElements,e,null),!1):(Et(e),!0)},Ot=function(e,t,n){if(Ge&&("id"===t||"name"===t)&&(n in r||n in dt))return!1;if(Ce&&!Le[t]&&S(ye,t));else if(xe&&S(Ee,t));else if(!we[t]||Le[t]){if(!(Dt(e)&&(De.tagNameCheck instanceof RegExp&&S(De.tagNameCheck,e)||De.tagNameCheck instanceof Function&&De.tagNameCheck(e))&&(De.attributeNameCheck instanceof RegExp&&S(De.attributeNameCheck,t)||De.attributeNameCheck instanceof Function&&De.attributeNameCheck(t))||"is"===t&&De.allowCustomizedBuiltInElements&&(De.tagNameCheck instanceof RegExp&&S(De.tagNameCheck,n)||De.tagNameCheck instanceof Function&&De.tagNameCheck(n))))return!1}else if(Je[t]);else if(S(be,y(n,_e,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==E(n,"data:")||!Ve[e]){if(ke&&!S(Ae,y(n,_e,"")));else if(n)return!1}return!0},Dt=function(e){return"annotation-xml"!==e&&T(e,Se)},vt=function(e){Rt(de.beforeSanitizeAttributes,e,null);const{attributes:t}=e;if(!t||bt(e))return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:we,forceKeepAttr:void 0};let r=t.length;for(;r--;){const i=t[r],{name:a,namespaceURI:l,value:c}=i,s=pt(a),m=c;let f="value"===a?m:A(m);if(n.attrName=s,n.attrValue=f,n.keepAttr=!0,n.forceKeepAttr=void 0,Rt(de.uponSanitizeAttribute,e,n),f=n.attrValue,!Ye||"id"!==s&&"name"!==s||(At(a,e),f="user-content-"+f),Ue&&S(/((--!?|])>)|<\/(style|title)/i,f)){At(a,e);continue}if("attributename"===s&&T(f,"href")){At(a,e);continue}if(n.forceKeepAttr)continue;if(!n.keepAttr){At(a,e);continue}if(!Ie&&S(/\/>/i,f)){At(a,e);continue}Me&&u([he,ge,Te],(e=>{f=y(f,e," ")}));const d=pt(e.nodeName);if(Ot(d,s,f)){if(le&&"object"==typeof j&&"function"==typeof j.getAttributeType)if(l);else switch(j.getAttributeType(d,s)){case"TrustedHTML":f=le.createHTML(f);break;case"TrustedScriptURL":f=le.createScriptURL(f)}if(f!==m)try{l?e.setAttributeNS(l,a,f):e.setAttribute(a,f),bt(e)?Et(e):p(o.removed)}catch(t){At(a,e)}}else At(a,e)}Rt(de.afterSanitizeAttributes,e,null)},Lt=function e(t){let n=null;const o=St(t);for(Rt(de.beforeSanitizeShadowDOM,t,null);n=o.nextNode();)Rt(de.uponSanitizeShadowNode,n,null),wt(n),vt(n),n.content instanceof s&&e(n.content);Rt(de.afterSanitizeShadowDOM,t,null)};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,i=null,l=null;if(rt=!e,rt&&(e="\x3c!--\x3e"),"string"!=typeof e&&!Nt(e)){if("function"!=typeof e.toString)throw b("toString is not a function");if("string"!=typeof(e=e.toString()))throw b("dirty is not a string, aborting")}if(!o.isSupported)return e;if(Pe||gt(t),o.removed=[],"string"==typeof e&&(Xe=!1),Xe){if(e.nodeName){const t=pt(e.nodeName);if(!Ne[t]||ve[t])throw b("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof R)n=_t("\x3c!----\x3e"),r=n.ownerDocument.importNode(e,!0),r.nodeType===J&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!Fe&&!Me&&!ze&&-1===e.indexOf("<"))return le&&We?le.createHTML(e):e;if(n=_t(e),!n)return Fe?null:We?ce:""}n&&He&&Et(n.firstChild);const c=St(Xe?e:n);for(;i=c.nextNode();)wt(i),vt(i),i.content instanceof s&&Lt(i.content);if(Xe)return e;if(Fe){if(Be)for(l=me.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(we.shadowroot||we.shadowrootmode)&&(l=fe.call(a,l,!0)),l}let m=ze?n.outerHTML:n.innerHTML;return ze&&Ne["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&S(K,n.ownerDocument.doctype.name)&&(m="\n"+m),Me&&u([he,ge,Te],(e=>{m=y(m,e," ")})),le&&We?le.createHTML(m):m},o.setConfig=function(){gt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Pe=!0},o.clearConfig=function(){ft=null,Pe=!1},o.isValidAttribute=function(e,t,n){ft||gt({});const o=pt(e),r=pt(t);return Ot(o,r,n)},o.addHook=function(e,t){"function"==typeof t&&f(de[e],t)},o.removeHook=function(e,t){if(void 0!==t){const n=m(de[e],t);return-1===n?void 0:d(de[e],n,1)[0]}return p(de[e])},o.removeHooks=function(e){de[e]=[]},o.removeAllHooks=function(){de={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},o}();return re}))
タイトルとURLをコピーしました