2026年3月22日日曜日

🌐FlatBuffersとProtocol Buffersの違い Protobufはデコードして読む。FlatBuffersはゼロコピー参照で高速だが生成が癖。

 

プロトコルバッファはFlatBuffersと比較的似ていますが、

FlatBuffersではデータにアクセスする前に2次表現へのパース/アンパックのステップが不要で、しばしばオブジェクトごとのメモリ割り当てと結合される点が主に異なっています。コードも一桁大きくなっています。Protocol Buffersにはオプションでテキストのインポート/エクスポートはありません。

JSONとの比較

JSONは非常に読みやすく(だから私たちはオプションのテキスト形式としてJSONを使用しています)、動的型付け言語(JavaScriptなど)と一緒に使用すると非常に便利です。しかし、静的型付け言語からデータをシリアライズする場合、JSONは実行時の効率が悪いという明らかな欠点があるだけでなく、動的型付けシリアライズシステムのために、データにアクセスするために(直感に反して)多くのコードを書かなければならなくなるのです。
TensorFlow Liteは、ネットワークモデルのデータシリアライズ形式としてFlatBuffersを採用しており、標準的なTensorFlowモデルで採用されているProtocol Buffers形式は採用していない。

FlatBuffersは、Protocol Buffers、Thrift、Apache Avro、SBE、Cap'n Protoに似たシリアル化フォーマットを実装したフリーソフトウェアライブラリで、主にWouter van Oortmerssen氏によって開発され、Googleによってオープンソース化されています。

Cap'n ProtoやSBEと同様に「ゼロコピー」デシリアライゼーションをサポートしており、シリアル化されたデータにアクセスする際に、最初にメモリの別の部分にコピーする必要がありません。このため、これらのフォーマットのデータへのアクセスは、JSONやCSV、そして多くの場合プロトコルバッファのような、より広範な処理を必要とするフォーマットのデータよりもはるかに高速です。

シリアル化されたフォーマットにより、すべてのデータを解析することなく、特定のデータ要素(例えば、個々の文字列や整数のプロパティ)にランダムにアクセスすることができます。可変長の整数を使用するプロトコルバッファとは異なり、FlatBuffersでは整数をネイティブサイズでエンコードするため、パフォーマンスに有利ですが、エンコードされた表現が長くなります。

スキーマは名前空間宣言から始まります。これは生成されるコードに対応するパッケージ/名前空間を決定するものです。この例では、MyGame ネームスペースの中に Sample ネームスペースがあります。

FlatBuffersとProtocol Buffers(Protobuf)は、両方ともGoogleが開発したデータのシリアライズ(直列化)形式で、ネットワーク経由でのデータの送受信やファイルへのデータの保存などで使用されます。しかし、その特性と利用場面にはいくつか違いがあります。

  1. Protocol Buffers (Protobuf): Protocol Buffersは、効率的で拡張可能なメカニズムを提供し、構造化データを簡単にシリアライズ(直列化)できるように設計されています。それはバイナリ形式であり、シリアライズとデシリアライズの過程で一部のCPUリソースを消費しますが、生成されるデータは通常小さく、またネットワーク経由で送信する際の帯域幅も少なくて済みます。また、異なるデータ構造間で互換性を保つための機能も提供しています。

  2. FlatBuffers: FlatBuffersもまた、Protocol Buffersと同様にデータをシリアライズするためのものですが、その主な特徴は「ゼロコピー」のデシリアライズです。FlatBuffersが生成するデータはメモリに直接マッピングされ、そのデータを解析するためにはデータのコピーを作成する必要がありません。これにより、デシリアライズの過程でのCPUリソースの使用を削減し、パフォーマンスを向上させることができます。また、生成されるデータは通常Protobufよりも大きいですが、高速なアクセスが必要なゲーム開発やリアルタイムシステムなどでは、その性能の利点が活かされます。

  1. インストール: まず、FlatBuffersコンパイラとランタイムライブラリをインストールします。GitHubのFlatBuffersリポジトリからソースコードをダウンロードしてビルドするか、パッケージマネージャー(例: apt-getbrewvcpkg など)を使ってインストールできます。

  2. スキーマ定義: データ構造を定義するためのスキーマファイル(.fbsファイル)を作成します。このファイルには、シリアル化/デシリアル化するためのテーブル、構造体、および他のデータタイプが定義されます。

namespace MyGame.Sample;

table Monster {
  pos:Vec3;
  mana:int;
  hp:int;
  name:string;
  friendly:bool;
  inventory:[ubyte];
}

root_type Monster;

コード生成: FlatBuffersコンパイラ(flatc)を使って、スキーマファイルからターゲット言語のコードを生成します。

FILEはスキーマ(末尾は.fbsでなければならない)、バイナリー・スキーマ(末尾は.bfbsでなければならない)、JSONファイル(直前のスキーマに準拠)である。の後のBINARY_FILEは、バイナリー・フラットバッファー形式のファイルでなければなりません。
出力ファイルは入力のベース・ファイル名を使って命名され、カレント・ディレクトリか-oで与えられたパスに書き出される。

https://www.mankier.com/1/flatc

--binary,  -b
任意のデータ定義に対してワイヤーフォーマットのバイナリーを生成する。

--json, -t
データ定義に対してテキスト出力を生成する。

--cpp, -c
テーブル/構造体の C++ ヘッダーを生成する。

--go, -g
テーブル/構造体のGoファイルを生成する。

--java, -j
テーブル/構造体用のJavaクラスを生成する。

--dart, -d
テーブル/構造体に Dart クラスを生成する。

--ts, -T
テーブル/構造体にTypeScriptコードを生成する。

--csharp, -n
テーブル/構造体用の C# クラスを生成する。

--python, -p
テーブル/構造体用の Python ファイルを生成する。

--lobster
テーブル/構造体用の Lobster ファイルを生成する。

--lua, -l
テーブル/構造体用のLuaファイルを生成する。

--rust, -r
テーブル/構造体に Rust ファイルを生成する。

--php
テーブル/構造体用の PHP ファイルを生成する。

--kotlin
テーブル/構造体にKotlinクラスを生成する。

--jsonschema
Json スキーマを生成する。

--swift
テーブル/構造体用の Swift ファイルを生成する。

--nim
テーブル/構造体のNimファイルを生成する。

-o PATH
生成されるファイルの先頭に PATH を付ける。

-I PATH
指定したパスでインクルードを検索する。

-M
生成されるファイルに make(1) のルールを表示する。


⚠️2025年最新:Temuアプリを削除しても安全?アンインストール後のデータ送信疑惑と完全対策ガイド

 Temu は「削除後も個人情報を送信する」と噂されますが、実証研究は未確認です。本稿では 2025 年の米アーカンソー州訴訟や EU の DSA 調査動向The Sunnli-research.co.jpを踏まえ、アンインストール後に残り得る4つのリスクアカウントを完全消去する具体的手順を解説します。まずは事実と対策を整理し、「怖いけれど使いたい」ユーザーが取るべき最善策を示します。

現在、TEMUアプリをアンインストールした後もデータを送信していると示す具体的な研究は見つかりませんでした。​一般的に、アプリをアンインストールしただけでは、アカウント情報やデータはサーバー上に残る可能性があります。​そのため、アカウントを完全に削除したい場合は、アンインストール前にアプリ内の設定からアカウント削除手続きを行うことが推奨されています。​具体的な手順としては、アプリ内の「マイページ」から「設定」を選択し、「アカウントのセキュリティ」内の「Temuのアカウントを削除する」を選ぶ方法があります。 ​この手続きを行うことで、アカウント情報や関連データが完全に削除されるとされています。​

削除後はそのアプリがスマホの情報をぬきとるのは不可能ですよね?そういうハッキングがありますか?

通常、アプリをアンインストールした後にスマホの情報を抜き取ることは不可能です。しかし、いくつかのハッキング手法やセキュリティ上の脅威が考えられます。

1. アプリ削除後も情報を抜き取る可能性のある手法

① 残存するキャッシュや設定ファイル

  • 一部のアプリは、アンインストール後もデバイスにキャッシュや設定ファイルを残します。

  • これらが悪意のあるアプリと連携して情報を抜き取る可能性があります。

② マルウェアやバックドア

  • もしアプリがスマホのOSの権限を悪用してマルウェアをインストールしていた場合、アンインストール後も情報を盗むことができます。

  • 特に「バックドア(不正な遠隔操作プログラム)」が仕込まれていると、アプリを削除しても影響が続く可能性があります。

③ OSレベルの脆弱性を利用

  • スマホのOSに脆弱性があると、アンインストール後も一部のプロセスが悪意のあるアプリによって実行されることがあります。

  • これはゼロデイ攻撃ルートキットと呼ばれる手法を使うことで実現されます。

④ 通信プロトコルの悪用

  • アプリが削除されても、アカウント情報やクッキーがクラウドに残る場合があります。

  • 特にWi-FiやBluetoothを通じた攻撃(例:MITM攻撃)により、削除後も間接的にデータを盗まれる可能性があります。

2. アプリ削除後もデータを盗まれないための対策

  1. アカウント削除を行う

    • アプリ内の「アカウント削除」オプションを使って、サーバー上のデータも削除する。

  2. キャッシュとデータの削除

    • スマホの「設定」→「アプリ」→「対象アプリ」→「ストレージ」→「キャッシュ削除」「データ削除」を実行。

  3. 不審なプロセスを確認

    • 「設定」→「バッテリーとデバイスケア」や「開発者オプション」から、不審なアプリやバックグラウンドプロセスが動いていないか確認。

  4. スマホの完全リセット(必要なら)

    • もし不審な挙動が続く場合は、工場出荷状態にリセットする。

  5. セキュリティソフトの導入

    • ウイルス対策アプリ(Malwarebytes, Bitdefenderなど)で定期的にスキャンする。

3. TEMUが該当するか?

現在のところ、TEMUがアプリ削除後にスマホの情報を抜き取るといった報告はありません。ただし、過去に大量のデータを収集している疑いが指摘されています。そのため、必要な対策を講じることが推奨されます。

もし不審な挙動があれば、スマホのリセットを検討するのが最も安全な方法です。

いわゆるGAIDの弊害とか、アプリAをアンインストールしても、別の関連アプリBがアプリAのキャッシュを閲覧して持っていく可能性がある、という感じの話でしょうかね

GAIDの弊害と削除後もデータを抜き取る仕組み

1. GAID(Google Advertising ID)とは?

  • Androidでは、アプリごとに一意の識別子(GAID)を使用してユーザーをトラッキングします。

  • GAIDは端末ごとに発行され、ユーザーがアプリを削除しても変わらないため、アプリ開発者や広告ネットワークが個人を特定しやすくなっています。

2. アプリ削除後もデータが抜き取られる仕組み

① GAIDを通じたトラッキング

  • アプリAを削除しても、アプリBがGAIDを使って同じユーザーだと判定できる。

  • たとえば、TEMUを削除しても、関連企業のアプリBがGAIDを使って「以前TEMUを使っていた人」と認識できる。

② キャッシュ・データ共有

  • Androidでは、特定のアプリ間でキャッシュやデータを共有できる仕組みがある。

  • たとえば、ある開発者が複数のアプリを公開している場合、アプリAの削除後もアプリBがAのキャッシュフォルダを読み取れる可能性がある。

③ データブローカーの存在

  • アプリ開発者は、ユーザー情報をデータブローカーに販売することがある。

  • そのため、削除したアプリのデータが別のアプリで再利用される可能性がある。

④ システムレベルのトラッキング

  • 一部のアプリは、ユーザーのデバイス情報(IMEI, IPアドレス, Wi-Fi情報, インストールアプリリスト)を記録し、アプリを削除しても特定のデバイスであることを判定できる。

  • たとえば、あるアプリを削除した後に別のアプリをインストールしても、「この端末は以前アプリAを使っていた」と認識される。

FAQ(よくある質問)

Q1. アプリを削除するだけで安全ですか?

A. 十分ではありません。退会(アカウント削除)→アンインストール→通知/メール停止→広告ID見直しの順で対処してください。

Q2. 「退会」と「アカウント削除」は同じですか?

A. 実質同義として使われます。Temu内の**「アカウント削除」**メニューから手続きを行うのが確実です。

Q3. 削除後もメールや通知が届くのはなぜ?

A. 配信設定や別端末でのログインが残っている可能性があります。Temu内の通知/メール設定をオフ、メールは購読解除機能やフィルタで止めてください。

Q4. メール本文の「配信停止」リンクは押して大丈夫?

A. 送信元が不明な場合は避け、メールアプリの購読解除ボタンドメイン指定フィルタを使う方が安全です。

Q5. アプリ削除後に、そのアプリがデータを送り続けますか?

A. いいえ。削除後にそのアプリ自身は動作しません。残るのはサーバー側のアカウント情報や通知設定、広告配信です。

Q6. 別アプリが、削除済みアプリのデータを勝手に読めますか?

A. 一般論として不可です(アプリはサンドボックスで分離)。誤解されやすい点なので本文の技術解説も参照ください。

Q7. Androidの広告ID(GAID)はどうすればいい?

A. 設定 → プライバシー → 広告 から広告IDのリセット/削除を実行します。体感の「追跡感」を下げられます。

Q8. iPhoneの追跡許可(ATT)はどこで見直せますか?

A. 設定 → プライバシーとセキュリティ → トラッキングで、アプリごとに追跡をオフにできます。

Q9. 退会前にやっておくべきことは?

A. 注文履歴・領収書・返金状況の控えを保存。必要なら連絡先メールをバックアップしておきましょう。

Q10. 支払い情報は消えますか?

A. サービス側の削除手続きとは別に、カード会社/決済事業者の明細は残ります。カード停止等は決済側の窓口で対応します。

Q11. 端末の安全確認は必要?

A. OSアップデート、公式ストア経由のみの再取得、セキュリティ診断(標準機能/信頼できるアプリ)を推奨します。

Q12. 再登録はできますか?

A. 可能な場合がありますが、旧データが引き継がれないことがあります。必要な控えは退会前に保存してください。

Q:削除後も通知/メールが届きます。止め方は?
A:Temuアプリ〔あなた→設定→通知→編集〕でプッシュ/メールをオフ。メールはクライアントの「購読解除」ボタンorフィルタ推奨。
(一次情報リンク:Temuヘルプの“通知設定”掲載) temu