KODAMA LAB / SEMINAR
✓ 全ページ検証済み — 2026-08-16

動作確認レポート

「Visual C++.NET プログラム集」から張られた全73ページを、本番サーバに対して1本ずつ実際に取得し、 ページ本体・図版・ページ内リンクがすべて生きているかを確かめました。 壊れていた 5件 は原因を特定して復元済みです。

73ページ 全て 200
226図版 全て表示
284ページ内リンク 全て 200
5件を修復
583回の HTTP 検査
Method

何を確かめて、何は確かめられないか

ページ本体

73本すべてに本番へ実際にアクセス。HTTP 200 であること、中身が空でないことを確認しました。

図版・コード画像

各ページが参照する 226 枚(計 6.6 MB)を1枚ずつ取得。404・0バイトが無いことを確認しました。

ページ内リンク

「つぎ」「うえ」や拡大画像へのリンク 284 本を追跡し、すべて到達できることを確認しました。

できなかったこと

プログラムのコンパイル・実行はしていません。ソースコードが JPEG 画像として貼られており、 対象も Windows 専用の MFC アプリのためです。コードの中身は画像を読んで確認しました。

🔍

検査は自動化してあります。同じ検査を後からもう一度回せば、リンク切れや図版の消失をいつでも洗い出せます。

Repairs

壊れていた5件と、その直し方

4件はファイルの中身が NUL バイトで埋まって真っ白になっていたもの、1件はリンクの綴り間違いでした。 前者は同じページが kodamay.org 側と Internet Archive(2006年の法政サーバ)の両方に残っており、 2つの出所の本文が完全に一致したので、それを EUC-JP から UTF-8 に直して戻しました。

1

円の描画

14th/ex116.html 基本的プログラム
症状
中身が NUL バイト 2,114個で埋まっていた(真っ白)
直した内容
kodamay.org の同一ページ(EUC-JP)と Wayback の2006年版が完全一致。UTF-8 に変換して復元
現在
本番で 200・図版も全て表示されることを確認済み
2

タートルグラフィックス

14th/ex117.html 基本的プログラム
症状
中身が NUL バイト 2,099個で埋まっていた(真っ白)/図版7枚も欠落
直した内容
同上で本文を復元し、cpic606〜611・cpic608_thumb の7枚を補完
現在
本番で 200・図版も全て表示されることを確認済み
3

エラトヌテネスのふるい

16th/ex127.html 基本的プログラム
症状
ページ下部の「つぎ」が ../ex17/ex128.html で 404
直した内容
../17th/ex128.html に修正(上部の同じリンクは元から正しかった)
現在
本番で 200・図版も全て表示されることを確認済み
4

定数

2nd/ex010.html その他
症状
中身が NUL バイト 2,333個で埋まっていた(真っ白)
直した内容
2つの出所が一致したものを UTF-8 に変換して復元
現在
本番で 200・図版も全て表示されることを確認済み
5

最大公約数と最小公倍数

5th/ex034.html その他
症状
中身が NUL バイト 2,347個で埋まっていた(真っ白)/図版2枚も欠落
直した内容
本文を復元し、pic227・pic228 を補完
現在
本番で 200・図版も全て表示されることを確認済み
Results

全73ページの結果

状態ページパス図版リンク文字数
確認済 ラベルの生成 12th/ex105.html 2 4 373
確認済 イベントの記述 12th/ex106.html 3 4 1723
確認済 ボタンとイベントの記述 12th/ex107.html 6 6 326
確認済 時間の計算 12th/ex108.html 8 4 420
確認済 円、球に関する計算 12th/ex109.html 3 2 197
確認済 トグルボタン 13th/ex110.html 4 5 135
確認済 線分の回転 13th/ex112.html 3 5 181
確認済 一次直線の描画 13th/ex113.html 3 2 201
修復 円の描画 14th/ex116.html 6 5 266
修復 タートルグラフィックス 14th/ex117.html 6 5 236
確認済 利子計算 14th/ex118.html 3 4 254
確認済 いろいろな図形 15th/ex121.html 3 4 134
確認済 簡単な図形 15th/ex122.html 3 4 128
確認済 タートルグラフィックス(2) 15th/ex123.html 4 4 276
確認済 繰り返しの基礎 16th/ex125.html 2 4 134
確認済 繰り返し 16th/ex126.html 2 4 150
修復 エラトヌテネスのふるい 16th/ex127.html 4 4 322
確認済 最大公約数と最小公倍数 17th/ex127-1.html 2 4 157
確認済 素因数分解 17th/ex128.html 2 4 129
確認済 最大値と最小値 17th/ex129.html 2 4 186
確認済 Nまでの和 18th/ex130.html 3 4 185
確認済 最大公約数と最小公倍数(2) 18th/ex131.html 3 4 317
確認済 swap 関数 18th/ex132.html 3 4 167
確認済 チェックボックスの使用 19th/ex135.html 3 4 279
確認済 ラジオボタンの使用 19th/ex136.html 3 4 300
確認済 桁数の判定 19th/ex137.html 2 4 341
確認済 動的配列 20th/ex141.html 3 4 234
確認済 分数の計算 20th/ex142.html 4 4 255
確認済 文字列配列と文字列の検索 20th/ex143.html 3 4 336
確認済 多角形の描画 21th/ex145.html 3 4 209
確認済 リストボックスと文字列 21th/ex146.html 3 4 381
確認済 文字の検索とカウント 21th/ex147.html 4 4 277
確認済 Rectangle の応用 22th/ex150.html 3 4 165
確認済 再帰定義 22th/ex151.html 2 4 146
確認済 コッホ曲線 22th/ex152.html 4 4 207
確認済 ドラゴン曲線 22th/ex153.html 4 4 205
確認済 回転体を描く 23th/ex156.html 6 4 274
確認済 回転体を回す 23th/ex157.html 6 4 262
確認済 簡単な整列 24th/ex163.html 3 4 200
確認済 最小法 24th/ex161.html 5 4 236
確認済 バブルソート 24th/ex162.html 3 4 218
確認済 シフト演算 25th/ex165.html 5 4 271
確認済 挿入法(2) 25th/ex166.html 4 4 218
確認済 挿入法(3) 25th/ex167.html 4 4 237
確認済 Visual C++.NETの基礎(2000年版)図版を使わないページ 11th/index.html 0 9 199
確認済 はじめに(コンソールプログラミング)図版を使わないページ 0th/index.html 0 8 111
確認済 簡単な整数値計算 1st/ex006.html 3 3 238
確認済 変数とデータ 1st/ex007.html 2 4 1145
確認済 簡単な浮動小数点数演算 1st/ex008.html 2 3 229
確認済 標準体重 1st/ex009.html 2 1 1117
修復 定数図版を使わないページ 2nd/ex010.html 0 4 792
確認済 円の円周、面積、球の表面積、体積 2nd/ex011.html 2 4 178
確認済 真理表 2nd/ex013.html 3 4 347
確認済 利子計算 2nd/ex014.html 2 2 191
確認済 さまざまな文字の表示 3rd/ex016.html 2 4 161
確認済 数列の和 3rd/ex018.html 3 4 177
確認済 標準体重と利子計算 3rd/ex019.html 4 2 265
確認済 最大値と最小値 4th/ex021.html 5 4 253
確認済 選択子の問題 4th/ex023.html 4 4 361
確認済 月の日数 4th/ex024.html 2 2 162
確認済 Nまでの和 5th/ex031.html 5 4 204
確認済 Nまでの約数 5th/ex033.html 2 4 184
確認済 最大公約数と最小公倍数、計算のお話し図版を使わないページ 5th/ex034-1.html 0 4 4849
修復 最大公約数と最小公倍数 5th/ex034.html 2 2 736
確認済 支払い金額 6th/ex036.html 2 4 293
確認済 九九の表 6th/ex038.html 2 4 147
確認済 単語のカウント 6th/ex039.html 2 2 249
確認済 身長と体重の検索 7th/ex041.html 4 4 345
確認済 支払い金額(2) 7th/ex043.html 2 4 218
確認済 文字のカウント 7th/ex044.html 3 2 298
確認済 Nまでの和 8th/ex046.html 3 4 184
確認済 最大公約数と最小公倍数(2) 8th/ex048.html 3 4 218
確認済 swap関数 8th/ex049.html 3 2 180
Running it today

今のパソコンで動かすには

掲載されているのは MFC(Microsoft Foundation Classes)のプログラムです。 CClientDC・CEdit::SetWindowText・OnBnClickedButton1 といった、 Visual C++ .NET 2002/2003 時代の書き方をしています。MFC 自体は現在の Visual Studio でも現役なので、 作り直しではなく手直しで動きます。引っかかるのは次の4点です。

  1. プロジェクトは開き直す(.vcproj は直接は開けない)

    当時の .vcproj を最新の Visual Studio へそのまま持っていくことはできません。 Visual Studio 2019 を挟んで2段階で変換するのが公式の方法ですが、 これらは1ファイルの小さな例題なので、MFC アプリを新規作成してコードを貼り直す方が速いです。

  2. MFC を入れる

    Visual Studio インストーラーで「C++ によるデスクトップ開発」を選び、オプションで 「最新の v143 ビルド ツール用 C++ MFC」 にチェックを入れます。 これを入れ忘れると afxwin.h が見つかりません で止まります。

  3. 文字セットを「マルチバイト文字セット」にする

    現在の既定は Unicode なので、当時のまま char cbuf[80]; を SetWindowText(cbuf) に渡すと型が合わずコンパイルエラーになります。 プロジェクトのプロパティ →「詳細」→ 文字セットを マルチバイトにすれば当時のコードがそのまま通ります。 新しく書き直すなら CString と TCHAR を使うのが本筋です。

    // そのままだと Unicode ビルドで通らない
    - char cbuf[80];
    - sprintf(cbuf, "%d", kazu);
    - hEdit1.SetWindowText(cbuf);
    + CString s;
    + s.Format(_T("%d"), kazu);
    + hEdit1.SetWindowText(s);
  4. sprintf などの警告を通す

    sprintf・strcpy・atoi は現在は非推奨で C4996 が出ます。 sprintf_s に置き換えるか、プロジェクトのプリプロセッサ定義に _CRT_SECURE_NO_WARNINGS を足せば当時のまま通ります。

⚠️

描き直しの落とし穴。「線分の回転」などは CClientDC を使ってボタンのイベントの中で直接描いています。 この描き方だと、ウインドウを最小化したり他の窓を重ねたりすると絵が消えます。 残したい場合は座標を変数に持っておき、OnDraw(または OnPaint)の中で描き直してください。 これは今の Windows に限らず当時からの性質です。