             ])
         
         
-        var subject: BehaviorSubject<Int>! = nil
+        var subject: BehaviorSubject<Int>! = nil        // テスト対象の BehaviorSubject
         var subscription: Disposable! = nil
         
-        let results1 = scheduler.createObserver(Int)
+        let results1 = scheduler.createObserver(Int)    // subject の出力結果を受け取る results1
         var subscription1: Disposable! = nil
         
         scheduler.scheduleAt(100) { subject = BehaviorSubject<Int>(value: 100) }
         scheduler.scheduleAt(200) { subscription = xs.subscribe(subject) }
-        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }
+        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }   // results1 に subject を subscribe させる
         
         scheduler.scheduleAt(500) { subject.onCompleted() }
         scheduler.scheduleAt(600) { subscription1.dispose() }

        
        scheduler.start()
        
        XCTAssertEqual(results1.events, [
            next(300, 4),
            next(340, 5),
            next(410, 6),

    
    
    func test_ViewModel() {
        class MockClient: Fetchable {   // 通信クライアントのモックオブジェクトを定義
            let xs: TestableObservable<Int>
            init(scheduler: TestScheduler) {
                xs = scheduler.createColdObservable([   // モックを作成
                    next(100, 200)                      // 時刻 100 で 値 HTTP_OK を出力
                    ])
            }
            // リクエスト結果の Observable をモックで置き換え
            func fetch() -> Observable<Int> { return xs.asObservable() }
        }
        class MockViewModel: ViewModel {
