◆ そういえばちょうど今月から元号が変わって令和だしね
◆ キリがいいしね

最近 Vivaldi をアップデートしたら Chrome バージョンが 73 になってて Vivaldi でしか使ってなかったページでもこの仕様変更の影響が出てました
流石に面倒なのと見れなくはないのでもう放置です
ホント余計なことばかりしてくれます
こういう Google の勝手に付き合うのも疲れますし JavaScript では ES2015 からはいろいろ機能がどんどん入ってますが全部が全部歓迎ってものでもないです
例えばこれとか

PHP みたいな元が対して好きでもないものだと アップデートの変更をほぼ追ってなくて 知らない構文を見て 「そんな機能増えてたんだー」 と思うくらいで 気に入らない機能が増えてても「あーそうなんだー」くらいなものです
JavaScript の場合は基本機能がかなり私好みなものだったこともあって 変な仕様にしてほしくないという思いが強いんですよね
ブラウザで動いていつでもすぐに使える手軽さ (使い始めた頃は)すごくシンプルで最低限だけの機能かつ自由度の高い拡張性 さらにわかりやすい仕組みのプロトタイプベースのオブジェクト指向言語 (クラスベースのオブジェクト指向が好きじゃなくて他の探してた頃に見つけたので思い入れ度も高いです) と良いところ揃いです

でも そろそろ別の言語をメインにしていこうかなと思ってます
ブラウザを日常的に使う以上 JavaScript を捨てるのは無理ですが 常に最新を追うわけでもなく 変な変更があっても「そんな変わってたんだー」と言えるくらいを目指します

ただ 候補となる言語にピンとくるのがないんですよね
それくらい JavaScript が私の好みに合いすぎていました

候補

「*」 の数が候補度です

PHP (*)

JavaScript より前に使っててたまに使うけど使いづらさが目立つ
ちょっとしたことするときには楽に書けるけど アロー関数がなくて function 必須(最近追加予定があるとか聞いた気もする) だったり 外側スコープ参照できなかったり 引数の順番が覚えにくかったりメインとして使うほどじゃない
むしろ代替見つけて使わない方向にしたい

Hack (***)

php を改良したもの
配列とかアロー関数とか PHP で不便だった部分が改良されてる
最近 php 互換捨てたし良くなりそうと勝手に期待してる
まだまともに使ってないのでデメリットはほぼ不明
動的言語が好きなので型周りが不便に感じない程度に緩ければいいけど C# とかみたいなレベルに堅いとなるとちょっとこまる

Python (***)

もともと shellscript が意味不明過ぎて代替に使ってたくらい
PHP 代替としてありな気もするけどちょっとしたことするなら PHP のほうが短く書けたりもする
JupyterNotebook がブラウザで使えてかなり便利なので優先度高い候補
ブラウザのコンソールで気軽にコードを実行できる JavaScript の良い部分が Python でもできるようになる
あくまでページの一つなので 事前にサーバを起動しておいて JuputerNotebook のページを開く必要あり
JavaScript みたいにどのページでも良くて開いてるページのデータをサンプルとして使える便利さまではない
JupyterNotebook はインストール必要なので事前準備が必要なのがネック
通常の REPL なら Python は Linux だと基本デフォルトで入ってる言語なので JavaScript よりもどこでも動くとも言える
言語的には不満点もあるけど PHP に比べたらどうということはないレベル

Ruby (*)

いつか使ってみるかと思いつつ使わないうちに人気と需要も落ちていった……
次メジャーアップデートでいろいろ改善するみたいな噂は聞いたけど別にいいや感がでてきた
日本製で日本語情報が(たぶん)多いくらいしかメリットなさそう
Rails が有名だけど 個人的にあれの方針があんまり好きじゃないので そんなに使う理由もない感じ
昔は Ruby のみのツールで gem 必要だったものも今じゃたいてい npm とかにある

Lua (**)

プラグインなどに使われてたりする言語なので稀に使ってる
昔の JavaScript 風でシンプルな機能で拡張性も高いプロトタイプベースのオブジェクト指向言語
良いところが多いけどデフォで機能少なすぎるデメリットも同じ
ライブラリが少ないのでメインとして使うにはできないことが多すぎる気がする
C と組み合わせられるメリットがあるので C もメインで使ってるならありだけど C はほぼ使わないからメリット薄め
昔はスクリプト最速みたいなこと言われてたけど今もそうなのかな

TypeScript (**)

JavaScript のライブラリが TypeScript なことが多いので読むことは多め
VSCode がメインエディタになってきたのでそのメリットを最大限享受するならこれ
だけど型チェックや記法が求めてるタイプじゃない
ビルド時じゃなくて 動的に追加される素の JavaScript から呼び出したときの実行時チェックがほしいし型指定は elm とかみたいに外側に書きたい
あと JavaScript から対して離れてない

Elm (**)

HTML と JavaScript を書かなくていいので JavaScript の代わりならありかもしれないけどできることが制限あって 一部のことをするときは JavaScript でコードを書いてポート?が必要だったはず
メインにするほどじゃなく JavaScript の framework の一つレベルにしかならなそう
あと Haskell の練習

Haskell (**)

書けるようになりたいと思いつつ難しくて本当に基本的なことしかできない
それも稀にしか使わないから毎回調べながら
ここまで厳しい関数型だと慣れてもスラスラ書いていける気がしない
ロジックをいろいろ考えて最適化した結果がコードになるようなものでちょっとしたことするのに向かない気がする
メインは難しい

Lisp (**)

書けそうでかけない
Handlebars のヘルパとか WebAssembly とかで似たものが使われたりする
S 式?をベースにして使われてるものはあちこちにあるし
簡単に処理内容とデータを持てる構造を作るときに似たような構文のものを作って使ったりはする
ただ 簡単な計算や条件を書いたりリスト処理はできてもそれ止まりで これだけでなんでもできるというのは無理だと思う

F# (***)

.NET なので C# の知識が使い回しできそう
ちょっとしたものなら C# より短く書ける
シンプルに関数組み合わせて使う分にはこっちのほうがいいけど .NET Framework の class/interface/namespace など入ってくると複雑で C# のほうが見やすくわかりやすいと思う
また WPF など GUI 系を使うとなると C# のほうが向いてそうかな
ただ組み合わせられるのでロジック部分と言語分けるのも良さそう

C# (***)

WinForms/WPF で GUI つくるために一時期使ってた
VisualStudio あれば使いやすいけど VisualStudio なしはかなりつらい
書くこと多いし補完で型見れないと無理
メインにするなら使う PC 全部にインストールして常時起動はしたいけど インストールに数時間かかるし重いしで VisualStudio を常時起動なんて無茶
VSCode もわりと使えるけど VisualStudio に比べると足りてない部分も多い
他言語はコンソールアプリ前提だし コンソールアプリのみなら VSCode でありかも
GUI エディタは流石に無理そう
Windows 限定なのは dotnet core を使えば Linux でも動くし .NET Framework 5.0 では統合されるみたいなことを聞いたので 一応候補度は高め

Rust (***)

使える様になりたいとは思いつつも難しめ
使ってみて毎回苦労してる感じ(特に文字列あたり)
IDE あればいいけどただのエディタだとコンパイル試してエラーが山のように出る
エラーメッセージが丁寧だから助かるけどやっぱり C#+VisualStudio 的なサポートがある IDE がほしいと思う
C/C++ の代替になるものなのでスクリプト系言語好きで C/C++ はあんまり好きじゃない人が使うものでもないのかもしれない
でもネイティブな exe とか作る必要があるときもあるので C/C++ 代わりに使えるようにはしたい

D (*)

昔少しだけ使ってた
最近生きてるのかな
これも C/C++ 代替で C/C++ よりは書きやすかった(たぶん)
いまなら Rust でいいかなと思う

Go (*)

構文が C 系に近いけど少し特殊で分かりづらめ
一部で人気みたいだけどなぜか特に興味ない
これなら Rust でいいかな

C/C++ (*)

最初に使った言語
昔過ぎてあんまり覚えてない
C++ も C をちょっと便利にしたくらいで C++ らしい使い方はしてなかった
途中で D に行ったりもっと楽に使える言語探して使わなくなった
これなら Rust で(r

R (*)

統計処理っぽいことしてたときに使ってた
C 系とも関数型系とも違って独特な書き方
使いやすいとは言えなかった
最近だと Python で十分じゃない?と思ってる
素の状態だと R のほうがいいかもしれないけど Python のほうがライブラリに高機能なものが多い
numpy/pandas と pyplot あれば R でやってたことはだいたいできそう

Julia (**)

R の代替になるとかならないとか
書き方が R の癖のあるのから C 系に近いものになった
ほんのちょっとかる~く使った感じだと Python よりよいと思えるのはみあたらなかった
Python は基本は何でもできる用途でライブラリを使えば科学計算も向いてるもの
こっちはデフォで科学計算向けみたいだし 普段そういう用途で使うことはあまりないのでメインに向かなそう

VBA (*)

まぁないよね
Excel でマクロ使うほどのことするなら R/Python などでいいし

Scala (**)

JVM 系ではよさそうだけど関数型しすぎてちょっと使いづらそう
具体的な違いが言えるほど使ってないけど後発の Kotlin のほうがもっと緩めで良いところを取り込んでる感じがする
あと Android 開発にも Kotlin が向いてるし JVM 系なら Kotlin でいい気がしてきてる

Kotlin (***)

稀に使うものの最低限の機能だけやコピペの修正なので構文はそこまで把握してない
なんとなく良さそうに思ってるのでわりと候補度高い

Dart2 (**)

死んでたのに Flutter が出てなんか復活した
ざっと見た感じではわざわざ言語作るほどと思えないくらいの特徴なさ
元が JavaScript の置き換え狙ってただけあって JavaScript に近くて JavaScript に型つけた感じ
TypeScript と被りそう
これにするメリットも見当たらず 使い始める壁は低いけどわざわざ乗り越える必要もない感じ
だけど Flutter ではこれが必要らしいので Flutter 使うならありなのかも
モバイルするなら Xamarin/ReactNative/KotlinNative/Cordova などがあるけどこの中だと Flutter が興味度高い

まとめ

***:
  • Hack
  • Python
  • F#/C#
  • Rust
  • Kotlin

**:
  • Lua
  • TypeScript
  • Elm
  • Haskell
  • Lisp
  • Julia
  • Scala
  • Dart2

こう見ると Python かな?
Hack や Kotlin は期待値が高いだけでほぼ使ってないから使ってやっぱり違うってなる可能性も高めです
最近は PC ユーザが減ってスマホ・タブレットが多いらしいし モバイル手を出すのもいいけど自分があんまり使わないのでそんなに乗り気がしないです