最近はJavaScriptの普及が進み、あらゆる機能がJavaScriptやTypeScriptで提供されるようになってきている。これはWebでできることが増えるいい側面はあるものの、ソースコードを読むことができるので、バイナリを解析するよりも遥かに簡単に内部ロジックを読み取れてしまう。巷のツールで難読化やMinifyはできるものの、それでも生成AIに説明させたり、根気があればハンド逆コンパイルもできてしまう1

会社勤めだと特徴的なビジネスロジックのひとつやふたつを抱えていることがあり、それ自体がサービスになるわけではないが、ライブラリというもう少し小さい単位としてなら成立することがある。そうしたときに、この有用なビジネスロジックをJavaScriptで提供していいのかどうかは結構悩ましい話だ23

それが嫌で隠蔽したいロジックがあれば該当部分だけをAPI化することもできるが、APIサーバーを構築するのもタダではないし、認証・認可プロセスだの障害点が増えるだの面倒なことが増える。RustやC++が書けるのであれば、WebAssemblyと難読化を組合せればこうした問題はまあまあ解消するのだろうが、チームの開発能力的に実現できるかどうかはまた別の課題である。

Footnotes

  1. 私はクライアントサイドでの採用を前提に話している。

  2. なのでJavaScriptにコメントを書くのも結構危険な行為になりうる。

  3. 元ネタがお高い専門書籍や言えない情報源経由だったりもする。