JavaScriptのコードを難読化する方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaScriptのコードを難読化する方法について解説しています。ここではプログラムの難読化を行う目的、JavaScriptを難読化するツールについて説明します。難読化に挑戦する際の参考にしてください。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

JavaScriptのコードを難読化する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

そもそもJavaScriptについてよく分からないという方は、JavaScriptとは何なのかについて解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプJavaScript/jQuery講座の内容をもとにしています。

 

田島悠介

今回は、JavaScriptに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

コードを難読化する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

難読化とは

その言葉通り、コードを読み難くする行為の事をいいます。読み難くするだけで、コードの動きには影響を与えません。今まで通り動くことが大事です。

また、パズルの様な扱いで難読化コードを公開すような場合もあります。良かったら、挑戦してみて下さい。

 

難読化するメリット

普通にプログラムを勉強していると、プログラムは読みやすくするように習うかと思います。実際、その方が良いばいいが多いです。しかし、では何故あえて「難読化」などをするのでしょうか?

読みやすくするのは、他の人が再利用したり問題点を見つけやすくしたりする為に行います。その逆に他の人が再利用したり、内容を理解出来ない様にするのが目的です。

主に、JavaScriptはブラウザーで動くため、必ず公開されるプログラムとなってしまいます。其の為、苦労して考えたコードも誰でもマネできてしまう状況になっています。これらを簡単にさせない為に、「難読化」が必要になりました。

最近では、JavaScriptだけでなく様々な言語でも利用される技術となっています。

 

[PR] JavaScript・jQueryで挫折しない学習方法を動画で公開中

難読化と暗号化の違い

ここで、暗号化とは違うの?という疑問が湧くかもしれません。暗号化と違うのは、「読み難いが読めるもの」と、「完全に読むことが出来ないもの」の違いとなります。

暗号化された状況では、プログラムが動くことが出来ません。また、圧縮や最適化といったプログラムの変換作業もあります。圧縮はプログラムを軽くするもので、最適化はプログラムを早くするものです。

 

難読化する方法

難読化には、ツールを使うのが一般的です。Javascriptで利用できるツールを幾つか紹介します。

■Javascript Obfuscator

恐らく、一番普及していると思われるツールです。初心者でも利用しやすくなっています。

■Closure Compiler

Googleが提供しているものです。圧縮や最適化がメインと思われます。

■jjencode

デコーダーがあるので、元に戻すことも容易です。一度は試してみるのもいいかと思います。

 

監修してくれたメンター

小宮山晃史(こみやまこうじ)

現在はOracle系システムの導入コンサルに勤め、仕事でコーディングをする機会は少なくなくなっているが、ライフワークで数多くの言語を勉強中。

iphoneのアプリ開発やWEBサーバの構築など幅広く挑戦しています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも最短4週間でJavaScript・jQueryを使ったWebサービス公開を習得できるオンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。