エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

【Java】Java18調査 環境構築編

検証環境

Visual Studio Codeのバージョン情報そのまま貼り付け。

バージョン: 1.65.2 (system setup)
コミット: c722ca6c7eed3d7987c0d5c3df5c45f6b15e77d1
 日付: 2022-03-10T14:33:55.248Z
Electron: 13.5.2
Chromium: 91.0.4472.164
Node.js: 14.16.0
V8: 9.1.269.39-electron.0
OS: Windows_NT x64 10.0.19043

環境構築

sdkmanがインストール済みで話を進める。
sdkmanのインストールやら使い方は、過去の記事参照

suzaku-tec.hatenadiary.jp

Java18のインストール

インストールするバージョン情報を確認する。

$ sdk list java

結果

================================================================================
Available Java Versions for Cygwin
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 Corretto      |     | 18           | amzn    |            | 18-amzn             
               |     | 17.0.2.8.1   | amzn    |            | 17.0.2.8.1-amzn     
               |     | 17.0.0.35.1  | amzn    |            | 17.0.0.35.1-amzn    
               |     | 11.0.14.10.1 | amzn    |            | 11.0.14.10.1-amzn   
               |     | 11.0.14.9.1  | amzn    |            | 11.0.14.9.1-amzn    
               |     | 11.0.12.7.1  | amzn    |            | 11.0.12.7.1-amzn    
               |     | 8.322.06.2   | amzn    |            | 8.322.06.2-amzn     
               |     | 8.322.06.1   | amzn    |            | 8.322.06.1-amzn     
 Dragonwell    |     | 11.0.12.8    | albba   |            | 11.0.12.8-albba     
               |     | 8.8.9        | albba   |            | 8.8.9-albba         
 Gluon         |     | 22.0.0.3.r17 | gln     |            | 22.0.0.3.r17-gln    
               |     | 22.0.0.3.r11 | gln     |            | 22.0.0.3.r11-gln    
 GraalVM       |     | 22.0.0.2.r17 | grl     |            | 22.0.0.2.r17-grl    
               |     | 22.0.0.2.r11 | grl     |            | 22.0.0.2.r11-grl    
               |     | 21.3.1.r17   | grl     |            | 21.3.1.r17-grl      
               |     | 21.3.1.r11   | grl     |            | 21.3.1.r11-grl      
               |     | 21.3.1.r8    | grl     |            | 21.3.1.r8-grl       
               |     | 21.2.0.r16   | grl     |            | 21.2.0.r16-grl      
               |     | 21.2.0.r11   | grl     |            | 21.2.0.r11-grl      
               |     | 21.2.0.r8    | grl     |            | 21.2.0.r8-grl       
               |     | 21.1.0.r8    | grl     |            | 21.1.0.r8-grl       
               |     | 20.3.5.r11   | grl     |            | 20.3.5.r11-grl      
               |     | 20.3.3.r8    | grl     |            | 20.3.3.r8-grl       
               |     | 20.3.2.r8    | grl     |            | 20.3.2.r8-grl       
               |     | 19.3.6.r11   | grl     |            | 19.3.6.r11-grl      
               |     | 19.3.6.r8    | grl     |            | 19.3.6.r8-grl       
               |     | 19.1.0       | grl     |            | 19.1.0-grl          
 Java.net      |     | 19.ea.14     | open    |            | 19.ea.14-open       
               |     | 19.ea.4.lm   | open    |            | 19.ea.4.lm-open     
               |     | 19.ea.1.pma  | open    |            | 19.ea.1.pma-open    
               |     | 18           | open    |            | 18-open             
               | >>> | 17.ea.3.pma  | open    | local only | 17.ea.3.pma-open    
               |     | 17.0.2       | open    |            | 17.0.2-open         
               |     | 16.ea.36     | open    | local only | 16.ea.36-open       
               |     | 15.ea.36     | open    | local only | 15.ea.36-open       
               |     | 15.0.1       | open    | local only | 15.0.1-open         
               |     | 14.ea.36     | open    | local only | 14.ea.36-open       
               |     | 14.ea.24     | open    | local only | 14.ea.24-open       
               |     | 11.0.12      | open    |            | 11.0.12-open        
               |     | 11.0.11      | open    |            | 11.0.11-open        
               |     | 11.0.10      | open    |            | 11.0.10-open        
               |     | 11.0.2       | open    |            | 11.0.2-open         
               |     | 8.0.302      | open    |            | 8.0.302-open        
               |     | 8.0.292      | open    |            | 8.0.292-open        
               |     | 8.0.282      | open    |            | 8.0.282-open        
               |     | 8.0.265      | open    |            | 8.0.265-open        
 Liberica      |     | 18.fx        | librca  |            | 18.fx-librca        
               |     | 18           | librca  |            | 18-librca           
               |     | 17.0.2.fx    | librca  |            | 17.0.2.fx-librca    
               |     | 17.0.2       | librca  |            | 17.0.2-librca       
               |     | 11.0.14.fx   | librca  |            | 11.0.14.fx-librca   
               |     | 11.0.14      | librca  |            | 11.0.14-librca      
               |     | 8.0.322.fx   | librca  |            | 8.0.322.fx-librca   
               |     | 8.0.322      | librca  |            | 8.0.322-librca      
 Liberica NIK  |     | 22.0.0.2.r17 | nik     |            | 22.0.0.2.r17-nik    
               |     | 22.0.0.2.r11 | nik     |            | 22.0.0.2.r11-nik    
               |     | 21.3.1.r17   | nik     |            | 21.3.1.r17-nik      
               |     | 21.3.1.r11   | nik     |            | 21.3.1.r11-nik      
               |     | 21.3.0.r17   | nik     |            | 21.3.0.r17-nik      
               |     | 21.3.0.r11   | nik     |            | 21.3.0.r11-nik      
               |     | 21.2         | nik     |            | 21.2-nik            
               |     | 21.1         | nik     |            | 21.1-nik            
 Mandrel       |     | 22.0.0.2.r17 | mandrel |            | 22.0.0.2.r17-mandrel
               |     | 22.0.0.2.r11 | mandrel |            | 22.0.0.2.r11-mandrel
               |     | 21.3.1.1.r17 | mandrel |            | 21.3.1.1.r17-mandrel
               |     | 21.3.1.1.r11 | mandrel |            | 21.3.1.1.r11-mandrel
               |     | 21.3.1.0.r17 | mandrel |            | 21.3.1.0.r17-mandrel
               |     | 21.3.1.0.r11 | mandrel |            | 21.3.1.0.r11-mandrel
               |     | 21.3.0.0     | mandrel |            | 21.3.0.0-mandrel    
               |     | 21.2.0.2     | mandrel |            | 21.2.0.2-mandrel    
               |     | 20.3.3.0     | mandrel |            | 20.3.3.0-mandrel    
 Microsoft     |     | 17.0.2       | ms      |            | 17.0.2-ms           
               |     | 11.0.14      | ms      |            | 11.0.14-ms          
 Oracle        |     | 18           | oracle  |            | 18-oracle           
               |     | 17.0.2       | oracle  |            | 17.0.2-oracle       
 SapMachine    |     | 18           | sapmchn |            | 18-sapmchn          
               |     | 17.0.2       | sapmchn |            | 17.0.2-sapmchn      
               |     | 11.0.14      | sapmchn |            | 11.0.14-sapmchn     
               |     | 11.0.14.1    | sapmchn |            | 11.0.14.1-sapmchn   
 Semeru        |     | 17.0.2       | sem     |            | 17.0.2-sem          
               |     | 11.0.14      | sem     |            | 11.0.14-sem         
               |     | 11.0.14.1    | sem     |            | 11.0.14.1-sem       
               |     | 8.0.322      | sem     |            | 8.0.322-sem         
 Temurin       |     | 17.0.2       | tem     |            | 17.0.2-tem          
               |     | 11.0.14      | tem     |            | 11.0.14-tem         
               |     | 8.0.322      | tem     |            | 8.0.322-tem         
 Trava         |     | 11.0.9       | trava   |            | 11.0.9-trava        
 Zulu          |     | 18           | zulu    |            | 18-zulu             
               |     | 18.fx        | zulu    |            | 18.fx-zulu          
               |     | 17.0.2       | zulu    |            | 17.0.2-zulu         
               |     | 17.0.2.fx    | zulu    |            | 17.0.2.fx-zulu      
               |     | 11.0.14      | zulu    |            | 11.0.14-zulu        
               |     | 11.0.14.fx   | zulu    |            | 11.0.14.fx-zulu     
               |     | 8.0.322      | zulu    |            | 8.0.322-zulu        
               |     | 8.0.322.fx   | zulu    |            | 8.0.322.fx-zulu     
               |     | 7.0.332      | zulu    |            | 7.0.332-zulu        
               |     | 6.0.119      | zulu    |            | 6.0.119-zulu        
================================================================================

Java18がほしいので、下記コマンドでインストール

$ sdk install java 18-open

インストールが終わったら、バージョン確認

$ java -version
openjdk version "18" 2022-03-22
OpenJDK Runtime Environment (build 18+36-2087)
OpenJDK 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)

$ javac -version
javac 18

環境構築完了!!!!!!!!!!

雑記

sdkmanのおかげで、バージョンアップがだいぶ楽になったな。。。
人類の叡智サイコー

2022/03/07週 気づきと振り返り 無気力感がやべぇ。。。

業務こなしての問題・気づき

開発環境

ネットワークと分断されてるVM環境に接続しているんだが、クッソ面倒くさい。
情報の連携が難しいのと、ネット検索できないのが面倒。
デュアルディスプレイ前提の開発環境だなと思う。

テスト

テスト仕様書作ってるんだが、テストデータ生成が面倒くさい。。。
かんたんにテストデータ作る方法ないだろうか?

新人教育

特に教育ってことはしてないけど、やってることを見守ってて気づいたこと

  • 矩形選択という発想がない
    • 毎回同じ箇所をコピペしてたり、削除してたりしてる。。。
  • 1メソッドに大量に実装する
  • Javaは辛うじて分かるけど、それ以外のことができない
    • web開発の初期開発は厳しい。覚えることが多すぎて、ついてこれてない感じ
    • なるべくバッチの開発をさせたほうがいい。
    • 覚えることが多すぎるのは、脳がパンクする&無力感を覚える→離職の可能性大

個人開発

typescript

「入力ファイルを上書きすることになるため、ファイル 'XXX.js' を書き込めません。」の対応方法

typescriptのコンパイルオプションで、出力先を指定できるのだが、それを指定してないとエラー判定される。
自分のところは、webpackにて出力していたので、挙動的には問題ないのだが、エラーとして判定されるのが癪なので、以下の対応をする。

{
  "compilerOptions": {
    "outDir": "dist"
  }
}

outDirさえあれば、とりあえず回避可能。

参考サイト

Nuxt2 + TypeScriptの環境構築 - 備忘録

Webpack 入門 その3:Babel による ECMAScript のトランスパイル・TypeScript のトランスパイル - Neo's World

その他雑記

Vtuber

最近、Vtuber見出したのだが、普通に面白い。
芸人見るより面白い。
最近の芸人のコント、つまらなすぎるのだが、俺の感性がおかしいのか?

神の試練

最近あったことなんだが、リモート会議中に神の試練(便意)が与えられたのだが、トイレ行っても良かったのだろうか?
立ち位置上、急に話が振られることがあるので、離席できなかったのだが。。。
誰も見てないけど、なんとか威厳は保つことができた。

神の試練、突発的に発生するから、マジで神の試練だわ
クリアできなかったときの罰が重すぎるんだよな。

最近、ミネラルウォーラーを飲むようになったのだが、ものすごい便の出がいい。
食べ物に気をつけていれば、比較的快適に過ごせる。
今までミネラルウォーラーを馬鹿にしてたけど、見直したわ。
コーラとか飲みたくなるけど、ミネラルウォーラー飲んで誤魔化してる。

土日

すごい無気力になるんだけど、ヤバい?
もう、ゲーム以外、何もしたくなくなる。

2022/02/25週 気づきと振り返り 採番のみの変数名に怒り新党

業務こなしての問題・気づき

Java

クラス名が採番しただけのものはやめろぉぉお!

すごい見ずらいんじゃ!ボゲェェェェェェェェェェ!!

間違いたくないのに、ものすごい間違える。
ちゃんと名称をつけるべきだと思うわ。

番号で管理したがるよな、日本人って。
ものすごい見間違えるから辞めたほうがいいと思う。
俺がよく身間違えるのは、7と1、3と8。
単体でなら間違えないんだけど、上が数桁入り組むとよく間違える。

名称をつけてくれないと、ダメだと思うんだよね。
変数名を123みたいにつけないのと一緒。

SVN

部分更新が最悪

svnってさ、フォルダ単位で部分更新できるのがダメだと思った。
別階層のやつを合わせて修正したのだが、人によって、たまに部分更新しているからビルドエラーが出て悩むことがある。

最初っから全体更新かけるしか方法がないようにしておけば、こんな問題は起こさずに済む。
運用回避可能だけど、落とし穴にハマる操作が可能になっているのは、個人的には「それってどうなの?」って思う。

2022/02/07週 気づきと振り返り 脳みそ破壊されそう

業務こなしての問題・気づき

自動化

設計書のメンテ

設計書からコード生成すると、実装が間違っている場合にメンテが面倒になってくる。
もう、面倒クセェから、直接実装変えたいんだが。。。
設計書修正→自動生成→コードメンテの流れになるから、普通に作業するより1工程多いんだよ!
それに、コードメンテが普通に実装直すのと変わらないのだが、自動生成にメリットあるのか?
自動生成のメリット、設計書と実装がほぼ同じになるくらいしかメリットがない。
自動生成するなら、レビューしないとかなら分かるけど、普通の実装と同じ工程をやるから、あんまり意味ないんだよね。。。

自動生成のメリット皆無なはずなんだけど、なんでそんなに希望を見いだせるのだろうか?

変更に対応しにくくなる

自動生成のための情報を細かく指定しなければ行けないせいで、いろんなところに影響が出てくる。
特にライブラリ作ってたりする場合だと、ものすごいインパクトがでかくなる。

遊びがないせいで、変更対応の工数が結構多いような気がする。

管理と開発業務を同時にやる。

結論:無理

管理業務と開発業務を一緒にやるようなタスクが切られて、一緒にやっていたのだが、どんな優秀な人間でも無理だと思う。。。

開発しながらだと、管理面の問題を忘れてしまう。。。
チーム全体に影響あるのは、結構な工数をかけると感じた。
逆に管理面に力を入れると、開発のタスクが遅れるという。。。

心労が耐えないから、任せるならどちらかの業務に集中させた方がいいと感じた。

Java

初学者とってのJava

たぶん、言語的には難しくないと思う。
ただ、実際に開発する場合、必要とされる知識量が膨大だと感じた。
今、新人の面倒を見ているのだが、予想外のことをしてきたり、やたらと悩んでたりして、自分の時間を確保するのがキツイ。。。
Javaとなると、サーバーサイドの開発が多いと思うのだが、それが環境関連の知識と直結しているせいで、知識が深くないと、かなり厳しい。
サーバーサイドって、受けたデータを元にDB操作するだけってのが多いが、それを難しく感じる様子。Java学習しましたって言っても、SQLは知らない、サーバー知識なし、TCP/UDP・HTML知識なしだと結構キツイ。
取っ掛かりの知識がないから、ググるのも難しいのだろうと感じている。
Javaで完結したものを作るなら良いんだけど、それ以外の要素が混じってくると、途端に難しくなる。
Javaで完結といっても、ユニットテストの考え方とかしらないと、思ってたのと違うことしてたりするので、厳しいなぁ。。。と感じる。

外部の研修って言っても、ほぼほぼ役に立たないってことが多いなぁ。。。

何でも準備万全にしてから挑もうとする人がいるけど、トライ・アンド・エラーじゃないと、プログラミング言語の学習は厳しいと思うんだよね。。。
研修だと、問題解決力が養われないから、実際に開発するときに挫折する人が多いのだと思う。
スクール出身の人が、即戦力になれないのは、そこだろうなぁ。。。

なので、やるとしたらバッチからやらせるのがいいと思っている。
ただ、SQLとかファイル操作とか含んでくると複雑なので、SQLのみに絞るとかの方が良い気がする。

Javascript

eclipseJavascriptの開発しているんだけど、他人のソース見ると、やたらとタイポが多い。。。
タイポ多いのは、たぶん、入力補完がないせいだろうな。。。
開発環境起因だとは思うが、昔の人はどうやって開発していたのだろうか?

その他雑記

プログラマーの立ち位置

正直、ソフトウェア開発におけるプログラマーの立ち位置って、低いと思うんだよね。
実際に開発携わっていると、設計重視の傾向が強いが、いざ開発するとなると、プログラマーの重要性が目立ってくる。
ここで言っているプログラマーは、言われたことをやるやつではなく、環境を理解して問題を自己解決できるやつ。
それができないのは、プログラマー未満だと思うんだよね。
それができてない設計者が、日本には多い気がする。

どうにかしてプログラマーの地位を上げたいとは思うけど、プログラミングできる=プログラマーって認識が強すぎて、問題解決力ってのを度外視してるから、地位向上が厳しいのだと思う。

あと、管理者って、偉そうな割に、何も分かってないケースが多分にある。
自分で調べろよって思うことがないわけでもないが、自己研鑽する努力はして欲しいと思う。
そういう姿みてるから、配下メンバーも育たないのでは?って感じている今日このごろ

ヘルプ

誰かの遅れのキャッチアップをしているのだが、正直キツイ。。。
何が正しいのか、実装者に聞いても答えがないのが辛たん。。。
もっと緩やかな現場で仕事したいお。。。
プレッシャーとストレスで、脳みそ破壊されそう

npm-check-updatesでGithubのDependabot alertsに対応する

きっかけ

Githubにてセキュリティアラート(dependency alert)が来てたので、「対応してみっか!」と思い、まずは現時点のバージョンを知りたいのだが、どうしたらいいのか分からなかったので調べた

環境

バージョン: 1.63.2 (system setup)
コミット: 899d46d82c4c95423fb7e10e68eba52050e30ba3
 日付: 2021-12-15T09:40:02.816Z
Electron: 13.5.2
Chromium: 91.0.4472.164
Node.js: 14.16.0
V8: 9.1.269.39-electron.0
OS: Windows_NT x64 10.0.19043

準備

npm-check-updates っていうのを使うと、現時点のバージョンと、最新バージョンを表示してくれるらしいから、下記のコマンドでインストール。
プロジェクトに欲しいというよりは、環境的に欲しい感じだったので、グローバルにインストール。

$ npm install -g npm-check-updates

調査

対象のプロジェクト直下に移動して、$ ncu を叩くだけ。
そうすると、以下のような結果が帰る。

$ ncu
Checking E:\dev\java\GaleWings\src\main\javascript\package.json
[====================] 33/33 100%

 @popperjs/core             ^2.9.3  →   ^2.11.2     
 @types/bootstrap           ^5.1.2  →    ^5.1.9     
 axios                     ^0.21.1  →   ^0.25.0     
 bootstrap                  ^5.1.0  →    ^5.1.3     
 @types/jest               ^27.0.2  →   ^27.4.0     
 @types/react             ^17.0.20  →  ^17.0.39     
 @types/react-dom          ^17.0.9  →  ^17.0.11     
 @webpack-cli/generators    ^2.3.0  →    ^2.4.2
 css-loader                 ^6.2.0  →    ^6.6.0
 html-webpack-plugin        ^5.3.2  →    ^5.5.0
 jest                      ^27.2.5  →   ^27.5.0
 less                       ^4.1.1  →    ^4.1.2
 less-loader               ^10.0.1  →   ^10.2.0
 prettier                   ^2.3.2  →    ^2.5.1
 style-loader               ^3.2.1  →    ^3.3.1
 ts-jest                   ^27.0.5  →   ^27.1.3
 ts-loader                  ^9.2.5  →    ^9.2.6
 ts-node                   ^10.2.1  →   ^10.4.0
 typescript                 ^4.3.5  →    ^4.5.5
 webpack                   ^5.51.1  →   ^5.68.0
 webpack-cli                ^4.8.0  →    ^4.9.2

Run ncu -u to upgrade package.json

利用しているモジュールをアップデート

前述のncuコマンドの最後に出力されていた通り$ ncu -uを実行する。

$ ncu -u
Upgrading E:\dev\java\GaleWings\src\main\javascript\package.json
[====================] 33/33 100%

 @popperjs/core             ^2.9.3  →   ^2.11.2     
 @types/bootstrap           ^5.1.2  →    ^5.1.9
 axios                     ^0.21.1  →   ^0.25.0
 bootstrap                  ^5.1.0  →    ^5.1.3
 @types/jest               ^27.0.2  →   ^27.4.0
 @types/react             ^17.0.20  →  ^17.0.39
 @types/react-dom          ^17.0.9  →  ^17.0.11
 @webpack-cli/generators    ^2.3.0  →    ^2.4.2
 css-loader                 ^6.2.0  →    ^6.6.0
 html-webpack-plugin        ^5.3.2  →    ^5.5.0
 jest                      ^27.2.5  →   ^27.5.0
 less                       ^4.1.1  →    ^4.1.2
 less-loader               ^10.0.1  →   ^10.2.0
 prettier                   ^2.3.2  →    ^2.5.1
 style-loader               ^3.2.1  →    ^3.3.1
 ts-jest                   ^27.0.5  →   ^27.1.3
 ts-loader                  ^9.2.5  →    ^9.2.6
 ts-node                   ^10.2.1  →   ^10.4.0
 typescript                 ^4.3.5  →    ^4.5.5
 webpack                   ^5.51.1  →   ^5.68.0
 webpack-cli                ^4.8.0  →    ^4.9.2

Run npm install to install new versions.

確認

最後は、ちゃんとnpm installして、挙動確認しましょう。
※俺は面倒くさいから、ビルド通ればOKにするけど、皆はガンバってね!

参考サイト

npm のパッケージを最新版に更新する – ラボラジアン

curlコマンドからソース生成できるcurlconverter

きっかけ

curlコマンドでAPI叩くのを試し終えた。
コマンドからプログラミングに落とすのが面倒になったので、いろいろ調べていたら、良さげなツールがあったので、使い方を自分用にメモ

自動生成について

いろいろ自動生成について批判的なことを書いたけど、管理できる狭い範囲内であれば、自動生成には賛成。
特に定型的なものを作る場合は、積極的に利用していいと思っている。
それが、人が管理できない範囲に適用するのはNGだと考えている。
狭い範囲内で使うべきで、複雑なケースが存在する箇所については、絶対にダメ。

curlconverter

Convert curl commands to code

解説

curl コマンドを各種プログラミング言語(JS, Java, Python, Ruby, etc...)に変換してくれる。 curl commandの欄にコマンド貼り付けて、Languageで生成したいプログラミング言語を選べば、生成してくれる。

今回は、JSで使いたかったので、Node.js(fetch) で生成した。
Node.js(request) もあったけど、requestは非推奨っぽいので辞めた。

感想

やることわかってるけど、調べるのが面倒くさかったので利用した。
レスポンスデータを加工して利用するのは実装しなければいけないけど、curlでいろいろやるのをプログラミング化できるのは、楽だと思った。

nodeモジュールを使ったJSファイルをnodeコマンドで実行する方法

きっかけ

node.jsのモジュール使った簡単なAPIバッチを叩くスクリプトを作ったんだけど、どう実行したらいいんだ?ってなって調べた。

すでにプロジェクトがあるやつに対してやったので、package.jsonスクリプトかかない方法で実行できないか探した。

環境

Chromium: 91.0.4472.164
Node.js: 14.16.0
V8: 9.1.269.39-electron.0
OS: Windows_NT x64 10.0.19043

サンプルソース

やったのは、voicevoxのAPIを叩きたいので、いろいろ調べた。

import fetch from 'node-fetch';

const response = await fetch('http://localhost:50021/audio_query?speaker=1', {
  method: 'POST',
  body: 'こんにちは、音声合成の世界へようこそ',
});

console.log('===== response =====');
console.log(response);

const data = await response.json();
console.log('===== response.json =====');
console.log(data);

const response2 = await fetch('http://localhost:50021/synthesis?speaker=1', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: data,
});

console.log('===== response2 =====');
console.log(response2);

実行方法

一番大事なところ

  • mjsファイルとして作成する
    • js→mjsにファイルの拡張子を蛙
  • --experimental-modulesオプションを付けて実行
    • node --experimental-modules {mjsファイル}で実行できる

参考サイト

node.js モジュール(ES Module)のimport/exportにハマる。 - かもメモ

感想

nodeでjsファイルは何でも実行できると思っていた時期があった。
この日から、大丈夫になったはず。