かつ丼はおやつに入りますか?

コンピュータの話とか食べ物の話とか旅行とかいろいろ

ぼくが考えた個人アカウント構成

はじめに

アカウントが必要な外部サービスが気づけば大量に増えていたので、棚卸しすることにした。ついでに、最近は生成 AI の出力でアカウント BAN を食らうケースも出てきているので、自分のアカウント構成のリスクを整理する。
一番の目的はgeminiをサービスに組み込みたかったんだけど、今持っているgoogleアカウントがgeminiの会話内容でBANされるリスクを許容できなかったため。

洗い出した脅威は 4 つ。

  • アカウント BAN
  • 物理的な紛失
  • アカウント乗っ取り
  • SIM スワップ攻撃

1. アカウント BAN

Google も Microsoft もアカウント BAN はありえる。 AI とエッチな話をしてたら BAN されたという話もある。

2. 物理的な紛失

スマホを落とした、盗まれた、壊れた。

SMS で二段階認証を受け取っていたアカウントは、SIM が手元にないだけでログインできなくなる。Authenticator アプリもスマホにしかないなら、スマホと一緒に消える。

3. アカウント乗っ取り

復旧用メールアドレスを設定していると、そこからパスワードリセットできる。

攻撃者がアカウントAを乗っ取る
→ アカウントAが復旧メールに設定されているアカウントBのパスワードをリセット
→ アカウントBも乗っ取り
→ 連鎖的に全アカウント陥落

復旧メールはアカウントを守るために必須だが、そのまま攻撃経路にもなる。

4. SIM スワップ攻撃

携帯キャリアを騙して、他人の SIM を再発行させる攻撃。SMS 認証を突破される。

解決のアプローチ

ポイントは 3 つ。

ポイント1:ルートアカウントを分離する

BAN されたアカウントは復旧できない。だから、BAN リスクを最小にしたアカウントを別に作って、重要な認証経路を守る。

  • ルートアカウント → 復旧メールの起点かつ Authenticator アプリの同期先。外部サービスには使わない。AI も使わない。BAN のトリガーを極力排除する。
  • デイリーアカウント → 普段使い。BAN リスクはあるが、ルートは巻き込まれない。

一番の目的は、Authenticator アプリを BAN から守ること。デイリーアカウントが BAN されても、Authenticator はルートアカウントに紐づいているので消えない。

またルートアカウントは何もないところから作成できるアカウントとする。
独自ドメインを取るならそのドメインを取るためのサービスに登録するためのメールアドレスがまず必要だったりするため対象外とする。自宅サーバーでメールを運用するつもりはない。

ポイント2:プラットフォームを分散する

Gmail と Outlook の両方にルートアカウントを持ち、互いを復旧メールに設定する。

ルートアカウントを Google と Microsoft に分ける理由は、Authenticator アプリを 2 つ持ってどちらでも使えるようにするため。Google Authenticator は Gmail アカウント、MS Authenticator は Outlook アカウントに紐づくので、片方のプラットフォームが BAN されてももう片方の Authenticator が生き残る。

ポイント3:物理キーでフィッシングを防ぐ

ハードウェアセキュリティキー(FIDO2)は、認証時にドメインを検証するので、フィッシングサイトでは認証が通らない。SMS や Authenticator アプリにはない特性。

パスワードが漏洩しても、物理キーが手元にない限りログインできない。物理キーはリモートから複製できないので、二段階認証の中で最も強い手段になる。

構成

全体像:5アカウントの4層モデル

Layer 0: 物理デバイス
         ├── ハードウェアセキュリティキー
         ├── バックアップコード(物理保管)
         └── 電話番号(SIM)

Layer 1: ルートアカウント
         ├── G-Root(Gmail)
         └── M-Root(Outlook)

Layer 2: サービス利用アカウント
         ├── G-Daily(Gmail)  ← Google サービス利用用
         ├── M-Daily(Outlook)← Microsoft サービス利用用
         └── M-Ext(Outlook)  ← 外部サービス登録専用

Layer 3: 外部サービス群(M-Ext のメールで登録)

アカウント間の復旧構造

┌──────────┐   相互復旧メール  ┌──────────┐
│  G-Root  │ ◄──────────────► │  M-Root  │
└────┬─────┘                  └────┬─────┘
     │ 復旧メール                  │ 復旧メール
     ▼                            ├──────────┐
┌──────────┐                ┌─────▼────┐  ┌──▼───────┐
│  G-Daily │                │  M-Daily │  │  M-Ext   │
│(Google用)│                │  (MS用)  │  │ (外部用) │
└──────────┘                └──────────┘  └────┬─────┘
                                               │ 登録メール
                                               ▼
                                        ┌─────────────┐
                                        │外部サービス群│
                                        └─────────────┘

ポイント:

  • G-Root ↔ M-Root は相互に復旧メール設定(プラットフォーム分散)
  • G-Root → G-Daily は同じ Google 内で縦の復旧
  • M-Root → M-Daily / M-Ext は同じ Microsoft 内で縦の復旧
  • 外部サービスはすべて M-Ext に集約。G-Daily と M-Daily は本家サービス専用

なぜ 5 アカウントなのか

アカウント 役割 なぜ必要か
G-Root ルート(Gmail) M-Root が死んだとき、Google 側から助ける
M-Root ルート(Outlook) G-Root が死んだとき、Microsoft 側から助ける
G-Daily Google サービス利用 Gemini、Drive、YouTube 等を使う。BAN リスクあり
M-Daily Microsoft サービス利用 Copilot、OneDrive、365 等を使う。BAN リスクあり
M-Ext 外部サービス登録 外部サービスの登録先を隔離。プロバイダ BAN が直撃しない

G-Daily で外部サービスも登録すればいいじゃんと思うかもしれないが、Google に BAN されたとき外部サービスの通知もまとめて死ぬ。だから外部サービス専用のアカウントを分ける。

復旧経路:全アカウント 5 経路

各アカウントに 5 つの復旧手段を持たせる。単一障害点をなくす。

復旧手段 G-Root M-Root G-Daily M-Daily M-Ext
📱 電話番号(SMS)
🔑 ハードウェアキー
📝 バックアップコード
🔄 Authenticator
✉️ 復旧メール
合計 5 5 5 5 5

スマホを紛失しても、物理キーとバックアップコードがある。物理キーが壊れても、他 4 つで復旧できる。どれか 1 つが死んでも残り 4 つでカバーできる構造。

BAN シナリオ

Google に BAN された場合

❌ G-Root + G-Daily が死亡
✅ M-Root は無傷
✅ M-Daily は無傷
✅ M-Ext は無傷 → 外部サービスに影響なし

Google 側が全滅しても、Microsoft 側は無傷。MS Authenticator のデータも M-Root で同期しているので消えない。外部サービスも M-Ext で登録しているので影響なし。

Microsoft に BAN された場合

❌ M-Root + M-Daily + M-Ext が死亡
✅ G-Root は無傷
✅ G-Daily は無傷
→ 外部サービスはパスワードマネージャーでログインし、メールを G-Daily に変更

M-Ext が死んでも、パスワードマネージャーにパスワードが入っていれば外部サービスにはログインできる。Google Authenticator のデータは G-Root で同期しているので消えない。メールを G-Daily に変更していけば復旧完了。

ルートアカウントは BAN されるの?

まずありえない。理由:

  • 外部サービスに一切登録しない
  • AI 機能(Gemini / Copilot)を使わない
  • 大量のメール送受信をしない
  • クラウドストレージに何も保存しない

BAN のトリガーになる行動を一切しないアカウントを BAN する理由がない。

物理キーの役割

全アカウントにハードウェアセキュリティキーを登録する。FIDO2 は認証時にドメインを検証するので、フィッシングサイトでは認証自体が通らない。パスワードが漏れても、物理キーがない限りログインできない。

攻撃者が G-Root のパスワードを入手
→ G-Root にログインしようとする
→ FIDO2 認証が要求される
→ 物理キーは攻撃者の手元にない
→ ログイン不可

Authenticator の冗長化

Authenticator アプリは 2 種類、2 台のスマホにインストールする。

スマホA(メイン / SIM入り)
├── Google Authenticator → ルートアカウント(Gmail)で同期
└── MS Authenticator     → ルートアカウント(Outlook)で同期

スマホB(サブ / SIMなし)
├── Google Authenticator → 同上
└── MS Authenticator     → 同上

外部サービスの二段階認証を設定するときは、QR コードを両方のアプリで読み取っておく。こうすると:

  • Google BAN → MS Authenticator で全 TOTP が残る
  • Microsoft BAN → Google Authenticator で全 TOTP が残る
  • スマホ 1 台紛失 → もう 1 台にデータが残る

外部サービスの登録ルール

外部サービス登録時のルール:

  1. ルートアカウントのメールで外部サービスに登録しない
  2. OAuth 認証(「Google でログイン」等)は使わない(BAN = 即ログイン不可)
  3. 2FA対応サービスならそれも設定する

ルートアカウントの運用ルール

ルートアカウントは基本触らないが、放置しすぎると消される。

プロバイダ ポリシー 対策
Google 2年間未使用のアカウントを削除する場合がある 四半期に1回ログインする
Microsoft 長期未使用アカウントの凍結がある 四半期に1回ログインする

ルートアカウントにログインするときは、デイリーアカウントとは別のブラウザプロファイル(またはシークレットウィンドウ)を使う。同じブラウザだと同一人物の複数アカウントとして紐づけられ、片方の BAN に巻き込まれるリスクがある。


おわり

Microsoftアカウントはwindowsに紐づけるのが半強制になってきているしOnedrive同期もしつこく有効化が求められる。
今までローカルで管理していたものがうっかりOneDrive同期されたりしてBANされるリスクが大きくなっていると思う。
GoogleアカウントにしてもyoutubeだったりGeminiだったりを利用する中で予期せぬBANのリスクが増している。
昔の儘のアカウント管理ではまずいと思い今回整理した。

SMS認証はSIMに紐づいているためバックアップとして2台持ちできないし物理的な紛失に弱い感じ。他の手段が使えるならSMSは使わなくていいかな。


この記事は個人的な検討メモを記事化したものです。セキュリティの専門家によるレビューを受けたものではありません。参考にされる場合は、ご自身の環境に合わせて判断してください。

2025年を振り返る

はじめに

今年もあと数日、いろんなことがあったけど季節が変わるのは早いものでここで振り返りをしておきたいと思う。
思い返しても大した事やってないな。

家のこと

昨年末に自治体の空き家バンクの制度を利用して中古戸建てを購入した。補助金を使って水回りの交換と屋根と壁の塗装を年末にしてもらい、何もない物件が手に入ったところから2025年がスタートした。
DIYでセルフリフォームをした1年だった。

2025年でやったこと

  • キッチンの天井に取り付けられていたケスジャンを撤去。産廃になるので個人を相手にしてくれる産廃業者探しに苦労した。対応してくれた業者さんには大変感謝してる。ケスジャンの天井穴を合板で埋めた。
  • テレビが映らなかったので工務店さんの紹介で電気屋さんに見てもらった。アンテナの点検と端子交換をやってもらった。感謝。
  • 蛍光灯を引っ掛けシーリングに交換。照明器具も新調。
  • 床に化粧合板貼り。パナソニックのウスイータをリビングの床に貼った。とてもきれい。
  • ほこりまみれのカーテン撤去。カーテンレールも全撤去。
  • 窓枠リフォーム。サンダーしてパテ埋めしてシーラー塗ってペンキ塗って結露浸水防止のため窓枠の隙間にジョイントコークを注入。
  • レール取り外したところにRestaのサイズオーダーのロールカーテンを取り付けた
  • 断熱二重窓取り付け。樹脂製の窓枠とポリカボードで断熱内窓を作成した。古い家は歪んでるのでサイズ図っても合わないのが大変だった。トイレとか脱衣場の窓には目隠しデザインのポリカボードを採用。
  • 稼働棚取り付け。ホームセンターから稼働のレールを買ってきて洗濯機横とパントリー部に設置。棚板はケスジャンの穴埋めに使った合板の余りをカットして使用。
  • ドアノブ交換、ドアにリメイクシートを貼った。全ドアノブを新調し、Restaのドア用リメイクシートを貼った。貼ってる途中で販売終了してしまい、途中から違う色になってしまったのがちょっと気になりポイント。
  • 和室に漆喰を塗った。コーラルテックスという予め練られている素材。

庭のこと

家といっしょに約50坪のの荒れ果てた庭が付いてきた。壊れた池つき。
庭全体に野性味のある芝が張り巡らされており、芝の上に苔がびっしり、さらに芝の下に球根植物が増殖していていろんな花が咲く。ドクダミとスギナも出てる。
何をするにもまずは芝を剥がさないとその下の雑草に手を付けられない。

  • 花壇の芝を剥がした。1平米2〜3時間ペースで少しづつ。ツタ系の雑草もすごい。
  • ドクダミとスギナは格闘中。
  • ハーブ系を中心に鉢植えで育ててる。
  • スペース作って夏はミニトマトたナスとバジルを地植えして収穫した。秋から地植えエリアを拡大、冬のはじめにとりあえず白菜を植えてみたけど生育はあまり良くない。来年からが本番。
  • 雑草を撤去した花壇でも土が見えてるとエンドレスで雑草が生えることを学習した。雑草を抜いたらかわりに何かお花を植えるようにしてる。

仕事のこと

自社開発系の情シスをやってる。
今年はアーキテクチャ刷新の話が進んでいる。ようやく特級呪物とお別れする計画が進みそう。
クリーンアーキテクチャ、バーチカルスライスアーキテクチャ、DDDあたりを中心に勉強と検討をした。

生成AIの進歩が凄まじく、昨年はAI使っても出来なかったことが、今年はAI使えばできるねってことが増えた。
フル活用してるけどまだ勉強不足で、サブエージェントがうまく使いこなせていないのが課題。
来年は開発の補助として使うだけでなく生成AIを軸とした仕組み作りにも挑戦したい。

お金のこと

NISAフルベット継続。
今年も年間支出より金融資産の見込み増加額のほうが多くなった。ここ数年は実質不労所得で生活できている(再現性がない)。赤沢大臣も早苗総理もだいしゅき。

健康のこと

定期的に歯科通院してる。虫歯は増えてないけど歯周病が気になる。ちゃんと時間とお金をかけてできるだけ生の歯を守っていきたい。

それから高血圧が進行している。会社の健康診断で割とアウトな数字が出てしまい再検査。
再検査までに生活習慣を見直して、再検査ではセーフ判定だったが直近の会社の健康診断でまたアウトな数字が出てしまった。
家にウォーキングパッドを導入するなどして忙しくても運動できる環境を至急整備したところ。次の再検査までに回復できるかどうかが勝負。

保険は今年中に見直した。来年はもう追加できないかもな。

お付き合い関係

マッチングアプリやってみたけどだいぶきつい人としかマッチングしなくて心折れた。プロフィール見ただけでもう怖い。これからも1人で生きようと思った。

おわりに

リフォームはずっとやることあって休日も予定が詰まってることが多い。AI関係も自己学習しないとやっていけないし、健康に気を使う時間をどうやって捻出するかが課題になってる。お金の面は今のペースをあと10年続けられたらFIREが視野にはいるかなと思いつつ、自分だけ特別なことやってるわけではないので全員の資産が増えたらただインフレするだけでゴールが遠のく気もしてる。来年は健康第一でやっていきたい。

俺のコロナが治りつつある

初めて新型コロナ陽性判定が出てからそこそこ症状が和らいでくるまでの記録。

俺のスペック

  • 30代男性
  • 独身一人暮らし
  • 中肉中背
  • ワクチン4回摂取済

初期症状

土日で買い物して帰ってきて日曜の夕方から、若干喉の痛みを感じるようになった。風邪の初期症状のようだが十分に水分をとって寝れば治るだろうと思っていた。

翌日どうしても出社が必要な仕事があったため喉の痛みに加え若干の熱っぽさも感じながらも出社。午後からは大事をとってリモートに切り替えた。 微熱の喉の痛みがあるものの問題なくリモートワークできるレベル。残業も問題なし。

陽性判定

翌朝、微熱と喉の痛みに加え少し鼻水も出るようになってきた。咳はほとんど出ない。朝イチで発熱外来の電話をして病院へいったところ抗原検査で陽性。 症状が軽いことから薬の処方は無しで、5日間人との接触を避けるように言われた。 今は回復から5日間ではなく発症から5日間らしい。

症状悪化

陽性判定があってから徐々に症状が悪化してきた。

  • 熱は微熱、または平熱のまま
  • 喉の痛みが日に日に強くなった
  • 喉の痛みにあわせて咳も頻繁に出るように
  • 鼻水が出まくる。ごみ袋がティッシュの山に
  • 鼻の奥の粘膜がやられて、それにつられて目の奥も痛くなり頭痛

とても仕事ができるような状態ではなくなった

回復まで

3日間ひたすら寝た。飲み食いする時間と風呂入る時間以外は全部睡眠。火曜日に陽性判定が出て、金曜日にはだいぶ落ち着いた。 完治はしていないがこれから良くなっていくんだろうという感覚が持てるようになった。

  • 鼻水が落ち着いた
  • 喉の痛みは続いているが悪化しなくなった
  • 頭がぼーっとする感覚が落ち着いた。あと数日休めばリモートなら仕事できそう

振り返り

自分の場合はこれから回復に向かうと思うが、なかなかしんどかった。食欲もわかず摂取カロリーが足りてない。 長期化したら体力的に危なかったと思う。

vue3でmswを使ったらjsonレスポンスが返らずhtmlのDOMが返ってきたときの対処

自分の場合は Service Worker が起動する前にリクエストが走って、画面リロードしようがキャッシュが有効で304 Not Modifiedが返ってくる状況だったと思われる。

Async/Awaitを使って起動順を整理したら解消した。

main.ts でcreateAppしているところを以下のように修正して worker.startとcreateAppの順番を整理した。

main.ts

async function enableMocking() {
  if (process.env.NODE_ENV !== 'development') {
    return
  }
  const { worker } = await import('./mocks/browser')
  return worker.start({
    onUnhandledRequest: 'bypass'
  })
}

enableMocking().then(() => {
  const app = createApp(App)

  app.use(createPinia())
  app.use(router)

  app.mount('#app')
})

楽天カード解約手順

めんどくさすぎてもう二度と契約したくないなと思いました

楽天カードのWEBページからよくあるご質問

1

よくあるご質問のページの中にある カードの作り直し(切り替え)について を開く

2

右サイドメニューから カードの解約について を開く

カードを解約したい場合のお手続き方法を知りたい を開く

チャットサポートはこちら を開く

チャットでのお問い合わせを開始する を開く

ここから自動チャット開始。

契約者ご本人様 を選択

上記に該当しないメニューはこちら を選択

カードのご解約 を選択

上記のカードに該当しない を選択

手元にカードあり を選択(なくても手続きできる)

本カードの解約 を選択

理由を選択

このまま解約手続きを希望する を選択

チェックを入れて確認

以降 8/9 まで同じ。チェックを入れて確認をし続ける。

カード番号下4桁を入力して確認

propsにオブジェクトの配列を設定する書き方 (Vue3, Typescript, Compotision API)

vue初心者の学習記録。
これであってるのかわからないがエラー無く動いたので記録に残す。

まとめると

  • 型を定義してexport、コンポーネントの呼び出し元でその型を使えるようにする。
  • 配列のような参照渡しのpropsを定義するときは Array as PropType<T> で定義する。
  • definePropsって戻り値無しで良いい?
<script lang="ts" setup>
import { type PropType } from 'vue';

interface LinkProp {
    path: string;
    text: string;
    iconClass: string;
}

export type LinkProps = LinkProp[];

defineProps({
    links: {
        type: Array as PropType<LinkProps>,
        required: true
    }
});

</script>

<template>
    <ul>
        <li v-for="link in links" :key="link.path">
            <a :href="link.path">
                <i :class="['icon bi', `bi-${link.iconClass}`]"></i>
                <span class="label">{{ link.text }}</span>
            </a>
        </li>
    </ul>
</template>

呼び出し元

<script setup lang="ts">
import MyNav, { type LinkProps } from './MyNav.vue';

const links: LinkProps = [
    {
        path: 'aaa',
        text: 'ホーム',
        iconClass: 'house'
    },
    {
        path: 'aaa',
        text: '検索',
        iconClass: 'search'
    },
    {
        path: 'aaa',
        text: 'ライブラリ',
        iconClass: 'bookmarks'
    },
    {
        path: 'aaa',
        text: '設定',
        iconClass: 'gear'
    },
];
</script>

<template>
    <footer>
        <MyNav :links="links"></MyNav>
    </footer>
</template>

運動意識を高めるために見たやつ

脳を鍛えるには運動しかない

https://www.amazon.co.jp/dp/B00JDLBEFW

という本をざっくり読んだ。
簡潔に書くと

  • ニューロンの総数は変わる。新しいニューロンが作られ、使われないと死んでいく。
  • 運動するとニューロンが作られる。
  • 年齢でニューロンの生成量は減るが、運動で年齢差を覆すことができる。
  • 死なないようにするにはニューロンの結びつきを強くする必要がある。
  • ただ運動するだけではニューロンの結びつきは強くならない。
  • 頭を使う球技などが良い。ぼっちならジムで走りながら意識高い系のyoutubeを見る程度でも十分と思った。
  • 新しい細胞にエネルギーを送るには毛細血管が必要。毛細血管は酸欠のときにより多く生成される。健康を維持するなら酸欠になる程度の心拍数が上がる運動が良い。

食事について

www.youtube.com

youtube動画を参考に。

  • エネルギーになるのはPFC(タンパク質、脂質、炭水化物)
  • タンパク質:脂質:炭水化物 のバランスは 3:2:5 が良い。
  • ダイエットするのは月2kgまで。1週間で500g。カロリーにすると1日500kcalマイナスが目安。これ以上カロリーを制限すると筋肉が落ちて代謝が落ちる。
  • ただしずっとカロリーがマイナスの状態が続くと基礎代謝が落ちる。基礎代謝を落とさないためにはメンテナンスカロリーといい、カロリーをマイナスにしない日を作ること。ずっと絞り続けるよりもちょっと戻すほうが効率がいい。
  • ダイエットに最も重要なのは摂取カロリーと代謝。運動はカロリーを消費するためではなく代謝を上げるために行う。
  • 健康にいい筋トレは1週間に1時間。これで筋力の維持はできる。1回で1時間よりも2回で1時間が良い。2回以上は細かく切っても良いがあまり差異はない。
  • アンチエイジングのため、つまり血流を良くするためであれば毎日トレーニングしたほうが良い。
  • 辛くならないように、波があっていい。筋トレする日を作る、カロリーを制限する日を作るなど。