
2026/08/28 1:49
私の ADHD 診断書のリバースエンジニアリング
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
改善された要約: 友人が自閉症や注意欠如・多動性障害(ADHD)の診断について話し合った後、ユーザーは精神科医から管理されるオンライン ADHD 評価を行いました。DevTools と公開 API アクセスによるリバースエンジニアリングを通じて、著者はシステムアルゴリズムがこのユーザーを「非常に衝動的」とフラグ化したのは、本物の認知機能の欠如而是因为ではないが、タイミングデータ、ウィンドウフォーカスの喪失、そしてユーザー疲労による軽微なボタンスパムなどといった堅固な指標に基づいていることを発見しました。スパム実行(低信用度)とフォーカス実行(良好な集中にもかかわらず高い衝動性フラグ)を比較した制御実験により、プラットフォームの採点モデルが環境上の妨害や通常の人間のエラーを考慮できていないことが明らかになりました。友人は問題なくテストを完了させた一方、著者の特定のパフォーマンスパターンは精神科医によって高衝動性の ADHD を示すものとして解釈されました。この研究は、現在のデジタル診断モデルが正常な人間のエラーを病状化するリスクを負っており、臨床的診断を発する前に単純な自動行動追跡を超えて進化させる必要があると結論付けます。
本文
ADハブテストのリバースエンジニアリング:衝動性の解析と診断の検証
2026 年 8 月 27 日(木)
著者:veritasStargazing
ある夜、友人との会話中に鮮明な星空を見て、「双眼鏡が欲しい」という衝動的な衝動から Amazon で注文しました。しかし過去の趣味は長く続きませんでした。友人の自閉症スペクトラム診断を受け、自分も**ADHD(注意欠如・多動症)**の有無を評価することに決めました。精神科医からのアドバイス「治療されていない ADHD はうつ病や不安障害と併存する可能性がある」を受け、オンラインでの自己診断テストを開始しました。
テストの実施:Flash 風 UI とハートカード反応
指示
- 白画面に赤いハート 3 つのカードが表示されたら
キーを押すSpace - それ以外は無操作
- タイマーやスコアなし、即時反応必須
経過
- ハートのカード出現たびに
を連打Space - 他のクリップアート(混乱誘発)も表示されるが指示に従う
- テスト後半は赤ちゃんの泣き声やサイレンなどが流され続け、終わらないように感じたため無意識に
連打してしまったSpace
リバースエンジニアリングのきっかけ
- 好奇心から**開発者ツール(Chrome DevTools)**を開く
- ウェブソースコードと外部リクエストをキャプチャ
- スクリプト保存後、テスト完了
- 医師より「来週に結果をお伝えします」と連絡あり
コード解析:入力検出とフォカス管理機構
スペースキー入力の処理ロジック
$(document).keyup(function (evt) { keyPressed = false; Context.LastPressTime = Context.CurrentTime; if (evt.keyCode == 32 || evt.which == 32) { Context.spacePressArray.clickTimes.push(adjustedTime); console.log('Pushing Space: ' + Context.CurrentTime + ', Adjusted Time: ' + adjustedTime); } else if (evt.keyCode != 32 && evt.keyCode != 13 ) { Context.spacePressArray.badClickTimes.push(adjustedTime); console.log('Pushing Bad Press: ' + ', Adjusted Time: ' + adjustedTime); } }).keydown(function (evt) { if (!keyPressed) { adjustedTime = Context.CurrentTime - Context.Offset; } keyPressed = true; });
キー押下時刻を記録Space- 誤入力(他のキー)もすべて記録される仕組み
フォカス損失検出機構
onBlur = function (present_message){ present_message = (typeof present_message !== 'undefined' ? present_message : true); if (!Context.canLooseFocus) { Context.LastinFocusTime = Date.now(); InnerLog.log('Last in Focus Time: ' + Context.LastinFocusTime + ', Last Test Time in Focus: ' + Context.CurrentTime); Context.InFocus = false; adhd.prototype.addBeep(); if (present_message) { this.outOfFocusAlert.htmlElement.style.visibility = "visible"; } } }; $(window).focus(function () { if (!Context.canLooseFocus) { this.outOfFocusAlert.htmlElement.style.visibility = "hidden"; Context.LostFocusAggregateTime += (Date.now() - Context.LastinFocusTime); Context.InFocus = true; Context.spacePressArray.lostFocusAggregateTime = Context.LostFocusAggregateTime; adhd.prototype.removeBeep(); InnerLog.log('Aggregate Not in Focus Time: ' + Context.LostFocusAggregateTime + ", at: " + Context.CurrentTime); if (Context.LostFocusAggregateTime < 0 || Context.CurrentTime < 0 || Context.startTime < 0) { alert(Context.MessageSomethingWentWrong); } } });
- ウィンドウが失焦点(新タブ開閉など)すると検出され、ビープ音が鳴る
- フォーカス復帰時に累計失焦点時間を記録
年齢別アセット切り替え
if (ageGroup == 'adults') { properties = lib.properties_adults; } else { properties = lib.properties_children; }
子供向け設定(15 FPS)
- 解像度:800x600
- 色:#666666
- 音源:鳥、ライトセーバー、ボウリング、飛行機など
大人向け設定(24 FPS)
- 解像度:800x600
- 色:#999999
- 音源:救急車、泣く赤ちゃん、車クラッシュ、警察サイレン、ペットボトル栓等
データ収集内容
テストから収集されたデータは以下のみに限定されていました:
- スペースキー押下時刻
- 誤入力(
)のタイミングbadClickTimes - ウィンドウ失焦点時間総計
スコア計算モデル自体はソースコード内に存在しませんでした。
スコアの算出と診断基準
公式サイト記載の説明
「集中力に関する 4 つの異なる指標(Attentiveness: 注意性、Timeliness: タイミング、Hyper-Reactivity: 高反応性、Impulsiveness: 衝動性)について標準化された Z スコアが提供されます。スコアは年齢と性別に一致する基準集団を元に標準化されています。」
4 つの指標の定義
A: Attentiveness(注意性)
- 指示に従って刺激を適切に評価・反応する能力
- 不注意な人は焦点がぼけたように見える(離脱状態)
- 日常生活での困難:授業中の追従、複雑な指示の理解、周囲変化の把握、計算ミス防止など
T: Timeliness(タイミング)
- 与えられた時間枠内に適切に反応する能力
- タイミング問題を持つ人は素早い即時対応に失敗しやすい
- タスク完了に時間差が生まれ、学習材料にギャップが生じる
- タスクが進むほど集中力低下、継続性喪失
I: Impulsiveness(衝動性)
- 禁じられた時点で反応する傾向
- 目の前の状況や結果を検討せずに行動しやすい
- 監視プロセスが初回反応後だけに依存
- 典型的な特徴:順番待ち困難、リスク無視の行為
H: Hyper-Reactivity(高反応性)
- 運動出力の効率的な調節困難
- 過剰な反応(動き過ぎ、過剰喋り等)を抑制できない
- 自らの行動の望まぬ結果に気づいても自制が難しい
医師との面接と不正疑い
医師からの質問
- 「試験をご不正行為は行いませんでしたか?」
- 「開発者ツールのトラップを使ったことはありますか?フォーカス検出フックを使いましたか?」
私の回答
「最善を尽くしましたが、終盤にはテストが終わらないような気がしてしまい、無意識にスペースキーを押してしまっていました」
医師の見解
- グラフ値が標準範囲から著しく外れているため不正疑い
- 「もしあなたが不正を試みたと約束すれば再テストを受け直させてもらえる」と提案
- 私は「不正は行わないので次週に再テストを予約してください」と返答
再挑戦:集中力維持と自己観察
新しい試み
- テスト開始 → スペースキー連打(意識的に抑制)
- 無意識の連打誘惑に抗うよう努力
- 終了後、医師より「数日以内にお知らせします」
コード内でのレポート送信関数発見
function sendParentReportToClinic(testId) { var clinicEmail = $('#clinicEmail').val(); var data = {"test_id": testId, "clinic_email": clinicEmail}; $.ajax({ type: 'POST', async: true, dataType: 'json', data: data, url: location.protocol + '//' + location.host + '/api/tests/send_parent_report', success: function (data) { alert(data.data); }, error: function(error) { var errorText = $.parseJSON(error.responseText).message; alert(errorText); } }); }
- レポート送信にはテスト IDとクリニックメールアドレスのみ必要
- バックエンドが緩いと、任意のメールアドレスでレポート受信可能(理論上)
cURL による試行
curl -X POST 'https://adhd-test/api/tests/send_parent_report' \ -H 'Accept: application/json' \ --data-urlencode 'test_id=1010101' \ --data-urlencode 'clinic_email=email@example.com'
- レスポンスはログインページ HTML(登録ボタン表示)
- メールアドレス・パスワード・名前・電話番号で登録可能
- ダッシュボードにアクセス:クライアント追加、テスト実施が可能
隠されたダッシュボードの発見
- サービスがプロバイダー向けにトライアルアカウントを作成することを認めていることが判明
制御実験:自己比較と友人検証
計画
- スパムシナリオ:初回同様スペースキー連打(不正疑い再現)
- 真剣挑戦:意識的に集中し、連打を抑制
自分自身をクライアントとして登録し、招待を送って実行。
スパムテスト結果(連打時)
- レポートに**「信頼性低い」**ラベル付与
- 基準集団比較グラフで不審なパターン可視化
真剣挑戦結果(集中維持時)
- 「信頼性」インジケーターが緑色(素晴らしい)
- 基準集団比較は概ね妥当
- 衝動性(Impulsivity)のみ突出(正常値より高い)
Null Ptr 氏(私)のパフォーマンス概要
- 持続的注意:A,T,H,I で安定
- 視覚的妨害下:A,T,H,I で安定
- 聴覚的妨害下:I(衝動性)上昇、A,T,H 安定
- 複合音響・視覚的妨害:A,T,H,I で安定
- 高負荷妨害条件:I(衝動性)上昇、T(タイミング)低下、A,H 安定
モデル判断:I(衝動性)の高値により、ADHD の可能性が高いと判定
「他の所見も併せて考慮すると、ADHD の存在確率が上昇している可能性があります」
友人 Haze へのテスト実施
- Haze 氏の忍耐強さが高く、18 分間スペースキーを押し続ける様子観察
- 結果:「注意欠如の可能性があるのは低い確率」
Haze 氏のパフォーマンス概要
- 持続的注意:A,T,H,I で安定
- 視覚的妨害下:A,T,H,I で安定
- 聴覚的妨害下:全指標安定
- 複合音響・視覚的妨害:全指標安定
- 高負荷妨害条件:T(タイミング)上昇、A,I,H 安定
医師とのフォローアップと診断の受容
医師からの発表
「あなたは確かにADHD を持っており、衝動性が高いことが分かりました」
私の実感
- 「びっくり Pikachu!」
- 将来への影響はまだ不確実
- 過去の学校生活:未診断のまま、コンピュータ科学以外で成績悪化(明白な徴候があったはず)
診断の意義
- すべての決定の理由とするわけではないが、自己理解の新しい視点を提供
- 衝動性の高さが行動パターンを説明する
月面の写真:新たな趣味の始まり
最後に、望遠鏡で撮影した月面の写真。Canon EOS R5 × Celestron NexStar 5SE。
新たな趣味として、今回こそ長く続けることを願っています。