Humanify: AIとBabelでJSの難読化を解除

Web開発の世界では、ミニファイ(minify)および難読化(obfuscate)されたJavaScriptコードは、理解やデバッグにおいて大きな障壁となることがあります。幸いにも、この課題に取り組む革新的なオープンソースプロジェクトが登場しています。その一つが Humanify です。これは、ChatGPTやGeminiのような大規模言語モデル(LLM)と、高度なBabelプラグインを組み合わせ、複雑で読みにくいJavaScriptを人間が理解しやすい形式に変換する多機能ツールです。

Humanifyは、JavaScriptコードの難読化解除、ミニファイ解除、トランスパイル、アンパック(unpack)を目指しています。LLMは主に変数名や関数名の明確化に貢献しますが、構造的なコード変換の主要な作業は、Babelが抽象構文木(AST)レベルで行います。これにより、コードの機能は完全に(1対1で)保持されます。

主な機能とメリット:

  • AIによる変数・関数名の変換: LLMを活用して、変数や関数に記述的で分かりやすい名前をインテリジェントに提案し、コードの可読性を大幅に向上させます。
  • ASTレベルでのコード変換: カスタムおよび既存のBabelプラグインを使用し、変数名の復号化(unmangling)やコード構造の再構築を根本的なレベルで実行します。
  • Webpackのアンバンドル: Webcrack のサポートにより、WebpackでバンドルされたJavaScriptアプリケーションを効果的にアンバンドルします。
  • 柔軟な実行モード: ツールを実行する方法はいくつかあります。
    • OpenAI/Gemini モード: クラウドベースのAIサービスに接続します(APIキーが必要です)。コードサイズに応じた費用が発生する可能性がありますが、精度の高さと利便性が期待できます。
    • ローカルモード: CPUまたはGPUを利用して、PC上で難読化解除プロセスを完全に実行できます。このモードは無料であり、特にApple Silicon搭載のMacでは優れたパフォーマンスを発揮しますが、使用するローカルモデルによって精度が影響を受ける場合があります。
  • クロスプラットフォーム対応: Node.js上で実行できるように設計されており、幅広い開発者が利用できます。
  • 簡単なインストール: npmを介してグローバルにインストール(npm install -g humanifyjs)するか、npxで直接使用(npx humanifyjs)して簡単にテストできます。

Humanify の始め方:

  1. インストール: Node.js(バージョン20以上)がインストールされていることを確認してください。その後、npm install -g humanifyjs でHumanifyをグローバルにインストールします。
  2. 使用方法: ターミナルからツールを実行できます。例えば、OpenAI APIを使用して obfuscated-script.js というファイルを難読化解除するには、次のように実行します。
    humanify openai --apiKey="your-api-key" obfuscated-script.js
    
    Geminiを使用する場合は、次のようになります。
    humanify gemini --apiKey="your-google-api-key" obfuscated-script.js
    
    ローカル処理を行う場合は、まずモデルをダウンロードする必要があります(例: humanify download 2b)。その後、次のように実行します。
    humanify local obfuscated-script.js
    

Humanifyは、JavaScriptコードをより透過的で理解しやすいものにするための大きな進歩です。サードパーティ製スクリプトやレガシーコードを扱う場合、あるいは自身のプロジェクトの保守性を向上させたい場合でも、このオープンソースツールは強力で適応性の高いソリューションを提供します。AIの知能と堅牢なコード変換能力の組み合わせは、あらゆる開発者のツールボックスに欠かせないものとなるでしょう。

この記事を共有

目次

任意のセクションにジャンプ