Closed4

学習記録#27 250706

ろみぃ(konatsu)ろみぃ(konatsu)

https://zenn.dev/konatsu/scraps/eb67f7af7759f2
久々にこのシリーズの続き

ろみぃ(konatsu)ろみぃ(konatsu)

ライブラリの全貌はなんとなく理解したので、今日はざっと全部写経していく
疑問点が上がったらここに書いていく

ろみぃ(konatsu)ろみぃ(konatsu)

Claudeさんに写経の正しいやり方を改めて聞いてみた

写経する順番は非常に重要です。上から順番にやるよりも、依存関係や理解の難易度を考慮した戦略的な順番で進めることをお勧めします。

効果的な写経順序の戦略

1. 依存関係の少ないコアから始める

推奨順序:
1. ユーティリティ・ヘルパー関数
2. 基本的なデータ構造(配列操作、文字列処理)
3. 例外・エラーハンドリングクラス
4. インターフェース定義
5. 基底クラス
6. 具象クラス

2. Laravelを例にした具体的な順番

Phase 1: 基礎
├── Support/Arr.php          # 配列ヘルパー
├── Support/Str.php          # 文字列ヘルパー
├── Contracts/               # インターフェース群
└── Foundation/Application.php # アプリケーション基底

Phase 2: コア機能
├── Container/Container.php   # DIコンテナ
├── Events/Dispatcher.php    # イベントシステム
└── Pipeline/Pipeline.php    # パイプライン処理

Phase 3: 高レベル機能
├── Routing/Router.php       # ルーティング
├── Http/Request.php         # HTTPリクエスト
└── Database/Query/Builder.php # クエリビルダー

3. 理解度チェックポイント

各段階で以下を確認:

// 写経後にテストを書いて理解度確認
class MyArrayHelperTest extends PHPUnit\Framework\TestCase
{
    public function testArrayDot()
    {
        $result = MyArr::dot(['foo' => ['bar' => 'baz']]);
        $this->assertEquals(['foo.bar' => 'baz'], $result);
    }
}

やってはいけない順番

❌ ファイルの物理的順序に従う

  • アルファベット順
  • ディレクトリ順

❌ 複雑な機能から始める

  • ORMの複雑なリレーション
  • 高度な抽象化クラス

❌ 一気に全部写経

  • 理解が追いつかない
  • デバッグが困難

推奨アプローチ

1. マップを作成

写経対象ライブラリの依存関係図を作成
├── レベル1: 依存なし(ユーティリティ)
├── レベル2: レベル1に依存
├── レベル3: レベル1-2に依存
└── レベル4: 全レベルに依存

2. 小さく動かす

// 1つのクラスを写経したら即座に動作確認
$helper = new MyStringHelper();
echo $helper->studlyCase('hello_world'); // HelloWorld

3. 段階的理解

  • なぜこの順序で依存しているのか
  • どのデザインパターンが使われているか
  • パフォーマンスへの配慮はどこか

この順序を意識することで、ライブラリの設計思想や構造を深く理解できるようになります。

このスクラップは2ヶ月前にクローズされました