最近JavaScript好きすぎて
全てJavaScriptで完結すればいいのにと思う今日この頃です。(2016現在)
他のプログラミング言語にもいいところとか特化してて素晴らしいところもあり、
否定したいわけではないのであしからず。
(もっとJavaScript信者増えればそうゆう方向にならないかなと期待してみたり・・・)
ちなみに言語仕様の話がしたいわけではないです。
様々なプラットフォームで使える
いわずと知れたブラウザ唯一のフロントエンド言語
(DOM操作やCSSの動的変更やらWebGLやら果てはデバイス連動まで)
最近はNodeJSでのサーバサイドでの使用やElectronでのWindows,MacOSアプリ作成まで
幅広くできるのが特徴です。
特に開発のしやすさも段違いに良いのが特徴です。
- フロントエンド(ブラウザさえあれば開発できる。デバッガーもブラウザにあるし)
- サーバサイド(NodeJSはOS問わず簡単にインストールできる、特に付属パッケージ管理ソフトであるnpmが素晴らしい)
- ネイティブアプリ化(Electronを使えば.exeや.appのバイナリ実行形式にパッケージできる)
- スマホネイティブ(WebView経由で呼ぼうと思えば呼べる、React NativeやTitaniumでネイティブアプリ変換も・・・)
- クラウドでたぶん一番採用されてる言語(AWS、Azure、IBM Bluemix、Heroku、Cloud9)
- IoTでも使えるよ(Raspberry pi、ArduinoでJohnny-FiveとかGroove Kitとか)
- 豊富なライブラリ、サンプルコード、情報量
- 割と習得しやすい(
prototypeチェーンとか闇をしらなければ)
最近はJavaより使える幅広くね?と思ったり、
後、Swiftみたいな発展途上で過去を切り捨てる言語と違って
言語仕様の変化が急激すぎたりしなく、
OSに引っ張られないためソフトウェア耐久年数もましだったり(フロントエンドのブラウザ互換はしんどいが、Can I useもあるしIE6も消えたから少しましになった)
JavaScriptの亜種
完全に同じものではないけど
独自APIがつかえる拡張がある(非互換)
- Google App Script(スプレッドシートとかのAPI)
- Unity Script(UnityもJavaScriptぽく書けちゃうよ)
- JScript(Windowsの.Net APIとか呼べちゃうWindows専用すくりぷと)
JavaScriptの限界
やはりセキュリティ的な観点で制限が・・・
- フロントエンドからの通信はCORSの制限があったり(これは仕方ないのであきらめてNodeJSから呼ぶ)
- OSのネイティブAPIが直接呼べなかったり~~(ファイル操作はできるし、コマンドはたたけるけど・・・)~~
- スマホネイティブの機能の一部が直接使えなかったり(Bluetoothだったり、バックグラウンド状態での位置情報取得だったり、スマホネイティブの画面遷移アニメーション)
とはいいつつも、ジャイロセンサーやらカメラやらほとんどのデバイス機能もJavaScriptで取得できちゃったり、そうゆう傾向にあったりします。(WebRTCやらWebGLやらWebVRやら)
どうしても使いたいというネイティブの機能だけネイティブアプリで実装すればよいのではないかと思ったりします。(React Nativeで変換する手もある)
根強い対抗勢力
- C/C++(いろんな言語のご先祖様、カーネルとか組み込み系とかネイティブコア部分で活躍)
- Java(Android,VMあればいろんなとこで動く)
- Objective-C,Swift(iOS,OSX)
- C#(
Javaのぱくr.Net,Unity) - Ruby,PHP(サーバサイド)
- Python(機械学習系)
JavaScriptで潰しが効かない、C/C++、Android Java、Objective-C、Pythonは勉強する価値あるかも
いろんな環境で使ってみた
JavaScriptでWrite once, run anywhere
GitHub:https://github.com/teradonburi/bridge