AIがファイルの中身を瞬時に見抜く!200種類以上を99%の精度で判定 — magika

google/magikaPython15.7k

Magikaは、ファイルの中身をAI(人工知能)で分析して、そのファイルが何の種類かを自動的に判定してくれるGoogle製のツールです。たとえば「.docx」のような拡張子がなくても、中身を読み取ってWordファイルなのかPythonのプログラムなのかを見分けることができます。約100万件ではなく1億件ものサンプルデータで学習させた小さなAIモデルを使い、1ファイルあたりわずか5ミリ秒で判定でき、平均99%の精度を誇ります。Googleでは実際にGmailやGoogleドライブ、セーフブラウジングなどのセキュリティ対策に活用されており、毎週数千億ものファイルを処理しています。コマンドラインツール、Python、JavaScript、Go、Rustなど多くの言語から利用可能で、ブラウザ上で試せるデモも用意されています。

🔥 なぜ話題?

AIによるセキュリティ対策への関心が高まる中、Googleが実際にGmailやドライブで使っている実績あるツールをオープンソースとして公開している点が注目を集めています。200種類以上のファイル形式に対応しながら99%の精度と5ミリ秒の高速判定を両立しており、従来のファイル判定ツール(fileコマンドなど)を大幅に上回る実用性が話題です。

💡 こう使える!

社内のセキュリティチームが、メールに添付された拡張子が『.txt』に偽装されたファイルを受け取ったとき、Magikaを使えば中身を解析して『実は実行可能なスクリプトファイルだった』と即座に見抜けるため、不正なファイルの検知に役立ちます。

ユースケース: 拡張子が不明・偽装されたファイルの種類をAIで正確に判定し、セキュリティや自動化の仕組みに組み込む

  • 1億件のサンプルで学習し200種類以上のファイル形式を平均99%の精度で判定
  • 1ファイルあたり約5ミリ秒で判定完了、ファイルサイズに関係なくほぼ一定速度
  • Googleが実際にGmail・Googleドライブ・セーフブラウジングで毎週数千億件の処理に使用中
GitHubで見る →

Fast and accurate AI powered file content types detection

技術情報

言語

Python

ライセンス

Apache-2.0

最終更新

2026-04-16

スター数

15,679

フォーク数

873

Issue数

135

トピック

aideep-learningfiletypekeras-classification-modelskeras-modelsmime-typesonnx

技術詳細

アーキテクチャ・仕組み

  • Magikaは深層学習(ディープラーニング)ベースのカスタムモデルを使用し、ファイルの内容の一部だけを読み取って種類を判定する
  • モデルサイズは数MB程度と非常に軽量で、CPU単体でも高速に動作する
  • ファイルサイズに依存せず、ほぼ一定の推論時間を実現(ファイルの一部のみ使用するため)
  • コンテンツタイプごとのしきい値システムを採用し、予測の信頼度が低い場合は「汎用テキスト」「不明なバイナリ」といった一般的なラベルを返す

対応コンテンツタイプ

  • 200種類以上のコンテンツタイプに対応(バイナリ形式とテキスト形式の両方をカバー)
  • 約1億件(~100M)のサンプルデータで学習・評価済み

パフォーマンス

  • 精度: テストセットで平均約99%の適合率(precision)と再現率(recall)
  • 推論速度: モデルロード後、1ファイルあたり約5ミリ秒(CPU実行時)
  • 特にテキスト系コンテンツタイプの判定で既存手法を大幅に上回る精度

対応言語・プラットフォーム

  • CLI: Rustで記述。pipx / brew / cargo / インストーラスクリプトで導入可能
  • Python: PyPI経由でmagikaパッケージとして利用可能
  • JavaScript/TypeScript: npm経由でmagikaパッケージとして利用可能(実験的)。Webデモはブラウザ上でローカル実行される
  • Go: 開発中(WIP)
  • Rust: バインディング提供

予測モード

  • high-confidence: 信頼度の高い予測のみを返す(エラー耐性を高める)
  • medium-confidence: 中程度の信頼度でも結果を返す
  • best-guess: 最も可能性の高い結果を常に返す

CLI出力形式

  • デフォルトのテキスト出力、JSON、JSONL、カスタムフォーマット(--formatオプション)に対応
  • MIME型(-i)、ラベル(-l)、スコア(-s)の出力オプションあり
  • 再帰スキャン(-r)、シンボリックリンクの扱い、標準入力(-)にも対応

Python API

  • Magikaクラスを通じて3つの判定メソッドを提供:
    • identify_path(): ファイルパスから判定
    • identify_bytes(): バイト列から判定
    • identify_stream(): ストリーム(ファイルオブジェクト)から判定

実績・連携

  • Google社内: Gmail、Googleドライブ、セーフブラウジングで週あたり数千億ファイルを処理
  • 外部連携: VirusTotal、abuse.ch(マルウェアサンプル共有プラットフォーム)に統合済み

研究論文

  • IEEE/ACM International Conference on Software Engineering(ICSE)2025で発表済み

ライセンス

  • Apache 2.0ライセンス — 商用利用を含む幅広い利用が可能
  • Googleの公式プロジェクトではなく、品質や適合性の保証はない旨の免責事項あり

インストール・クイックスタート

コマンドラインツール(CLI)のインストール

pipx経由(Pythonが必要):

pipx install magika

brew経由(macOS / Linux):

brew install magika

インストーラスクリプト経由:

curl -LsSf https://securityresearch.google/magika/install.sh | sh

Cargo経由(Rustが必要):

cargo install --locked magika-cli

Pythonパッケージ

pip install magika

JavaScriptパッケージ

npm install magika

基本的な使い方

# ファイルの種類を判定
magika ファイル名

# ディレクトリを再帰的にスキャン
magika -r ディレクトリ名

# JSON形式で出力
magika ファイル名 --json

# 標準入力から判定
cat ファイル名 | magika -

参考になる外部の関連記事

過去のトレンド履歴

関連リポジトリ

写真1枚でリアルタイム顔入れ替え!ワンクリックでディープフェイク映像を生成 — Deep-Live-Cam

hacksider/Deep-Live-CamPython90.5k

Deep-Live-Camは、たった1枚の写真を用意するだけで、ウェブカメラの映像やビデオの中の顔をリアルタイムに別人の顔に入れ替えられるソフトウェアです。「顔を選ぶ→カメラを選ぶ→ライブボタンを押す

キーワードを入れるだけでAIが高画質ショート動画を自動生成! — MoneyPrinterTurbo

harry0703/MoneyPrinterTurboPython53.0k

MoneyPrinterTurboは、動画のテーマやキーワードを入力するだけで、AIが台本作成・映像素材の収集・字幕生成・BGM追加まですべて自動でこなし、高画質なショート動画を一発で作ってくれるツー

あらゆるAIモデルを束ねて社内チャット・検索・研究を全自動化するオープンソース基盤 — onyx

onyx-dot-app/onyxPython25.3k

Onyxは、ChatGPTのようなAIチャット機能を自分のサーバーに設置できるオープンソースのAIプラットフォームです。50種類以上の外部サービス(Google Drive、Slackなど)と接続し、

LINEもQQもSlackも!あらゆるチャットアプリにAIボットを一発導入できる万能プラットフォーム — AstrBot

AstrBotDevs/AstrBotPython24.2k

AstrBotは、さまざまなチャットアプリ(メッセージングアプリ)にAIチャットボットを簡単に導入できるオープンソースのプラットフォームです。QQ、Telegram、Slack、Discord、LIN

AIエージェントに「記憶力」を与える!たった6行で構築できる知識エンジン — cognee

topoteretes/cogneePython16.1k

cogneeは、AIエージェント(自律的に動くAIプログラム)に「記憶」を持たせるためのオープンソースの知識エンジンです。ドキュメントやデータを取り込むと、意味で検索できるベクトル検索と、情報同士のつ