「!function(鮨){var 鮭=5,鯛=3,鯖=8;console.log(鮭,鯛,鯖)}(window);」。読めるのは読めるけれど……。
年末の恒例になったアドベントカレンダーでは、エンジニアの皆さんがスキルアップを試みながらもおもしろい成果物をたくさん公開しています。その中の一つとして、「日本人にしか読めない難読化ツール」が公開されています。サンプルを見た方が分かりやすいと思いますので、まずは見てみましょう。
(function(win) { var hoge = 5; var piyo = 3; var fuga = 8; console.log(hoge, piyo, fuga); })(window);
!function(鮨){var 鮭=5,鯛=3,鯖=8;console.log(鮭,鯛,鯖)}(window);
これは、面白法人カヤックの技術者が実施しているアドベントカレンダーの2015年12月10日分として、フロントエンドエンジニアの@butchi_yさんが公開した“オンライン寿司難読化ツール”「Sushify」によるものです。
ブログでは、Nodeモジュールを作成したり、GitHubのリポジトリをforkしてみたりと、自身が未経験のことにチャレンジした成果だと紹介されています。
難読化とは、主にJavaScriptのように、利用者にソースコードが見えるプログラム言語で、可読性を低くすることで実装されている内容を「分かりにくくする」テクニックです。技術をコピーされたり、処理内容や内部の実装を推測されたりすることを避ける目的で行われます。
Sushifyは「日本人にしか読めない」とありますが、コード自体はきちんと難読化しているので、正確には「漢字は読めるけれどもコードは読みにくい」難読化ツールといえるでしょう。
@butchi_yさんはJSCompressというオンライン難読化ツールがGitHubに公開されていることを知り、それをforkしてSushifyを作成したということです。
もちろん、コード中で漢字を使っていますので、開発中の文字化けなどは「自己責任で」とのことです。ここからさらにforkすれば、いろいろな難読化ができそうですね。
Copyright © ITmedia, Inc. All Rights Reserved.