前回、「2つ目にマスターしておくとよい言語とは?【 Scala】」について書きました。
メインとなる言語である程度余裕ができたら興味のある分野に手を出したくなるのは当然でしょう。ここでは全ての興味に対して記載することはできませんが、いくつか代表的なものについて触れてみます。
ゲーム系は実はエンジンという開発フレームワークがあってそれが言語そのものより優位になります。
勿論極めるにはエンジンに頼らなくても。。。ということが理想的にはありですが、エンジンを選んで言語を選ぶのが普通です。
Unity UnrealEngine
ゲームのエンジンは開発フレームワークのようなもので、これさえあれば言語の仕様を良く理解していなくてもゲームが書けてしまうというもののようです。上記2エンジンの難点はあまりにも便利すぎてこれなしに書けなくなってしまう人が実は相当多いということです
Unityはモバイル、ブラウザは圧倒的に使われています。言語はC#です。スクリプトもありますが、JavaScriptは最近サポートされなくなり
ました。UnrealEngineはゲーム機が多いようですね。言語はC++です。これはかなり古くからあるエンジンですね。
ほかにも結構ありますが、自分のやりたい分野で選べばよいと思います
上記の様にエンジンとの組み合わせで使うことが多いので、単独で論じても仕方ありませんが、C#ってマイクロソフトから出た言語で、出たときは微妙な感じでしたが、ゲーム界では圧倒的なシェアを握っています。
これほど使われるのは身も蓋もない話ですが、Unityというゲーム界の最強エンジンに対応しているからが大きいでしょう。
SwiftはSpriteKitというエンジンがあり、iOSプラットフォームでこちらを使う方もいます。後述の通りSwiftはiOSアプリ開発での主要言語ですので、こちらを使いたいという人もいます。
JavaScriptはいままでUnity対応していましたので、言語のやさしさもあってかなり活用されていましたが、2017年にUnity非対応となってからは価値が半減してしまいました。JavaScriptが使えるエンジンもあります。
C++はUnrealEngine に使われていますね。
特にどの分野と決めておらず単にゲームなら UnityーC# がいいでしょうね。
この組み合わせはものすごーい数の本が出ています。ネットの無料リソースもかなりあります。ゲームプログラミングの入り口となっているせいか「初心者向け」といったネットリソースが多くあります。
スマホアプリはシンプルで、AndroidならJavaまたはKotlin, iOSならSwiftかObjective-Cです。
Swift、Objective-CはiOSの開発言語ですが、SwiftはObjective-Cの後継という位置づけです。
Objective-Cはかなり長ーい間iOSの公式開発言語だったため、資産が多いですね。Swiftを学ぶにせよ、Objective-Cは読めた方が良いということはあるでしょう。
Swiftは上記モバイルゲームでも使われています。モバイルならiPhoneということでしたらSwiftで決まりでしょう。
Androidは現在Javaで書かれたアプリがかなり多いですが、前回の単価の高い言語でもあったKotlin がかなり評判がよく、猛追しています。Kotlinで開発始めたらJavaに戻れないという話もあります
これみると本当?広告では?と思われがちですが、これは編集記事です。
AppleやGoogleに開発されたわけでもない(ジェットブレインズは高名なIDEを生み出している会社ですが)言語が8年でここまでなるのはそれなりの意味がありそうです。
Android開発を受注したからKotlinをガッツリ使ってみたら最高だった
の記事もあります。
前者の記事ではKotlinを学ぶことによってJavaの生産性があがったと断言されおられますね。なるほどと思います。Javaは基本として抑えている方で、第二言語の特に分野を定めていない方ならKotlinもよさそうですね。
これはPython1強です。この分野Python以外に協力ライバルがないのが問題です。
強いて言えばデータサイエンティストご用達の言語Rは統計解析専用言語で様々なライブラリを準備しており、それを使って人工知能プログラミングを行うことが可能です。Rはデータ解析に強力なコミュニティがあり、単価の高い言語です。その延長線上でありといえるでしょう。
またJuliaという新進気鋭の人口知能、統計解析が得意なオープンソース言語もあります。日本語のリソースがごくわずかでときどき勉強会はやっているようです。
Juliaを使った開発案件など日本にはほとんどないでしょうが、これから出てくるかもしれません。
さて今回は第二言語は第一言語の生産性を上げてくれるという視点がでました。
まあ生産性を上げるためには筋の良いコードを書くことが必要で、新しい言語はそう書いてもらうように色々仕掛けをしているところがありますね。
新しい言語を学ぶことは考えを学ぶことなので、40代でエンジニアの曲がり角を迎える前に検討しておいた方がよいと思います。