【Unity豆知識】現在は廃止されたC#以外の言語があったって知ってた?

【Unity豆知識】現在は廃止されたC#以外の言語があったって知ってた?

 私たちがUnityでスクリプトを書く時はC#で書きますよね。実は昔のUnityにはC#の他にUnityScript/JavaScript・Booという言語がありました。今回はこれらの言語がなぜ廃止されたのかについてわかりやすく解説していきます。今のC#がどれだけ便利かよくわかる内容となってます。

Unityで廃止された言語

UnityScript(JavaScript)

 C#の代替えとしてJavaScriptのようなスクリプト言語として仕えた言語です。

Boo

 Pythonに影響を受けた言語です。

 ウェブアプリケーションも開発可能な言語でした。

 文法もPythonによく似ています。

print "Hello, World!"

なぜ廃止されたのか?

Booの場合

 Unityが発表したこちらの記事(英語)によると廃止された原因はBooの圧倒的な不人気によるものです。

 ほとんど誰も使ってない言語をサポートするより、多くの人が使っているC#とその次に使われているUnityScriptのサポートに力を入れるために廃止されました。

 当時のエディター分析の統計によると3つの言語(C#,UnityScript,Boo)の割合は以下のようになります。

C#80.4%
UnityScript18.9%
Boo0.44%

 ちょっとBooが可哀そうになるくらい圧倒的な結果ですね。

UnityScriptの場合

 Booと比べてUnityScriptを気に入って使っている人も多かったです。

 C#と同じようなことができるのになぜ廃止されるんだろう?って不満を持った方もいました。

 結論として、UnityScriptができることはC#もでき、C#の方が優れている点があったからです。

 便利なUnityScriptではありましたが、C#の方が強みがありました。

C#の優れている点

  • アップデートで機能が追加される
  • 何百万ものサンプルプログラムがある

 Unity側の視点で考えると、C#の下位互換なUnityScriptを改良してC#に近づけていくためにソースを使うより、C#のサポートに力を入れた方がユーザーのためになりますよね。

UnityScriptが廃止された時の反応

コメント1

翻訳

非常に賢明な決断。 今日のエンジニアリング時間は非常に高価であり、死にかけている馬をサポートおよび維持するためにそれらを割り当てることは、純粋に時間の無駄です。
C#開発者として、私は.NET 4.6、C#6、そしてうまくいけばRoslynがUnity3Dの唯一のスクリプトオプションとして採用されているのを見て非常に興奮しています。
JavaScriptとそのすべての派生物をそれらが属する場所に残します-> Web開発(グロス!)

原文

very smart decision. Engineering hours are very expensive nowadays and allocating them to support and maintain a dying horse is a pure waste of time.

as a C# developer , I am very excited to see .NET 4.6, C# 6 and hopefully Roslyn being adopted as the ONLY scripting option for Unity3D

Leave JavaScript and all its derivatives where they belong –> web development (gross!)

Unity 公式ブログより

コメント2

翻訳

間違いなく良い決断です。 どういうわけか、皆さんに余裕があるとは思えません。2つの言語のサポートを維持するには、必然的に新機能やバグ修正などが犠牲になります。
うまくいけば、やがて、タスクベースの非同期などの新しい言語機能のサポートが見られるようになるでしょう。
私自身はUnityにかなり慣れておらず、Unityscriptに何も投資していません。 JavaScript(ish)のサポートにUnityを選んだコメント投稿者もいます。 私、それが私が使用しなければならなかった言語であるならば、私はユニティを決して選びませんでした。 つまり、それは双方向です。
良い仕事を続けてください。 そして、あなたがそれについて行くオープンでプロフェッショナルな方法に対する称賛。

原文

Undoubtedly a good decision. Somehow i doubt you guys have time to spare, and maintaining support for two languages must inevitably come at the cost of new features, bugfixing etc.

Hopefully now, in time we will see support for the newer language features, such as task-based async.

I myself am fairly new to Unity, and have nothing invested in unityscript. I see some commenters chose Unity for the JavaScript(ish) support. Me, I would never have chosen Unity if that was the language I had to use. So that goes both ways.

Keep up the good work. And kudos for the open, professional way you go about it.

Unity 公式ブログより

コメント3

翻訳

(中略)
UnityScriptの削除について私が言わなければならないことは次のとおりです。
UnityScriptは決して重要ではありませんでした。 それは常にバニラジャバスクリプトでなければなりませんでした。 これにより、Unityは常にハードコアC#プログラマー、Web開発者、フロントエンド開発者のいずれかに開かれたままになります。 UnityがバニラJavaScriptのサポートを完全に活用していたら、まったく別の世界だったと思います。
UnityはバニラC#を使用しています。 同じことがjavascriptにも常に当てはまることを願っています。

原文

Here’s what I have to say about the removal of UnityScript:

UnityScript should have never been a thing. It should have ALWAYS been vanilla javascript. This always leaves Unity open to either hardcore C# programmers, web developers, and front end developers. I feel if Unity went all the way with vanilla javascript support it would have been quite a different world.

Unity uses vanilla C#. I just wish the same was always true for javascript.

Unity 公式ブログより一部抜粋