SlideShare a Scribd company logo
1 of 64
Download to read offline
US,C#,Boo比較
     九州大学芸術工学部3年 花田 恒一




13年4月3日水曜日
じこしょうかい!

         Nobukazu Hanada
         @nobkz
         好きな言語 LISP

         Unity3dはとりあえず1年ぐらい




13年4月3日水曜日
ちょっと、謝っておきたい事が
                 ありまして...




13年4月3日水曜日
このスライドを作成した時の事




13年4月3日水曜日
調子に乗って、どんどんスライドを
                 追加していた結果




13年4月3日水曜日
200枚超えちゃいました!




13年4月3日水曜日
どう考えてもLTの枚数ではないですね...




13年4月3日水曜日
なので、すごく内容を圧縮&削ってます




13年4月3日水曜日
えっと、ところどころ飛躍してたりするかも
               しれないのでご容赦ください
             (なんとか、60枚程度に圧縮しました)




13年4月3日水曜日
Unityのサポート言語につい




13年4月3日水曜日
サポートされている言語


         JavaScript ( UnityScript )
         C#
         Boo




13年4月3日水曜日
先に結論から書くと...
         UnityScript ( JavaScript )
             ゲームオブジェクトのふるまいが書きやすい

         C#
             主にゲームロジックやらライブラリやら(ry

         Boo
             Unity3d最強の言語


13年4月3日水曜日
比較するまえに




13年4月3日水曜日
Unityアーキテクチャ

             Unity Engine    Unity Editor      Unity3d




               .NET Framework / Mono        共通言語基盤(CLI)




13年4月3日水曜日
CLIとは

         .Net Frameworkの基幹を構成する実行コードや実行環境などに
         ついてMSが策定した仕様

         CLI、C#言語共に仕様は公開されている。

         Microsoft .NET Framework

             MSの商用実装

         Mono

             オープンソースの実装

13年4月3日水曜日
Monoとは

         .NET Framework互換環境

         CLIのオープンソースの実装

         Javaと同じ中間コード方式

             (JVM => CLR, バイトコード => CIL )




13年4月3日水曜日
中間コードが生成できれば、
             どんな言語だって使える



13年4月3日水曜日
中間コード化されるので言語
    による速度の差はない
             どの言語も適度に最適化すればおk




13年4月3日水曜日
US,C#,Boo各言語紹介




13年4月3日水曜日
とりあえず、JS(US)から




13年4月3日水曜日
JavaScriptはみんな知ってるよね?
             けど、Unityの「JS」はJSじゃないんだ。




13年4月3日水曜日
UnityScriptと呼びなさい!




13年4月3日水曜日
と、いうわけでUSとJSの違いをまとめてみたお!
  (ちょっと、過去のVersionのUnity3dで検証したから
             ところどころ変わってるかも)




13年4月3日水曜日
UnityScript! JSって呼ぶな!
         型指定できる

         標準グローバルオブジェクトが存在しない

         argumentオブジェクトが存在しない

         prototypeが存在しない

         classがあるよ



13年4月3日水曜日
US!JSって呼ぶな part2
         ダッグタイピングできない

         interfaceがある

         なのに、抽象クラスが書けない
                        最新版では書けるみたい

             メソッド名がpascal記法

         関数のオーバーロードが出来る



13年4月3日水曜日
US!JSって呼ぶな part3


         動的なメンバの追加はできない

         一度に複数の変数を宣言できない

         generics method,class が中途半端に使える




13年4月3日水曜日
つまりは、USはJS風のC#!




13年4月3日水曜日
そもそもUnityScriptは、CLI上で走る言語Boo
              をDSLホスト言語として
             作ったJavaScript風の言語。

                        要するにBooの劣化版




13年4月3日水曜日
C#について




13年4月3日水曜日
ご存知だと思うからパス!




13年4月3日水曜日
あ、どの言語にも言えることだけど
              GCの動きだけは注意してね
                    知らない間にメモリリークしてるかもよ




13年4月3日水曜日
Boo言語について




13年4月3日水曜日
Boo言語とは?
         Pythonライクな、CLI上で走る言語

         静的片付け

         C#よりも短く書ける

         強力なメタプロ

         RodrigoB.DeOliveira 設計、開発



13年4月3日水曜日
Boo言語とは( Pythonぽい)

         インデントが文法

         リスト内包表記ができる

         ダックタイピングができる

         匿名関数が書きやすい気がする。




13年4月3日水曜日
BooについてC#より

         型定義

         ちゃんとしたinterface

         プロパティメソッド

         ちゃんとしたgenerics




13年4月3日水曜日
Booのソースコード




13年4月3日水曜日
サンプルとしてTetromino(テトリスミノ)
              クラスの実装




13年4月3日水曜日
これをコンパイルして、DLLファイルを
              C#に逆アセンブリしてコード整形
                   してみた。




13年4月3日水曜日
なんか
    ごちゃごちゃ




13年4月3日水曜日
Pythonのインデント文法の
              良さが分かるよねー




13年4月3日水曜日
Unity3dのスクリプティングにおける、
     各言語の差異について




13年4月3日水曜日
position.x = 1のについて




13年4月3日水曜日
C#で書いたやつ

13年4月3日水曜日
安定のエラー




13年4月3日水曜日
JS        Boo




             これらはOK。エラーは出ない。




13年4月3日水曜日
なんでエラーなるのか?


         Vector3dは参照型のクラスない

         Vector3dは値型の構造体

         だからエラーがでる。




13年4月3日水曜日
じゃあ、なんでBooやUSでエラーが出ないのよさ?




13年4月3日水曜日
なんか、コンパイル時にUnity3dが
             なんとかしてくれるらしいよ。




13年4月3日水曜日
逆アセンブルすると分かるよ




13年4月3日水曜日
つまり、ちゃんとコンパイル時にちゃんと
             「構造体をコピーしたものを修正して、
                    再代入」
               するように変換してくれてるんだ




13年4月3日水曜日
USの場合は、ホスト言語がBooなので、
                 同様の処理が走るよ。




13年4月3日水曜日
Booが神なことについて



13年4月3日水曜日
USまとめ

         USは結局のところJavascript風のBoo

         US独自言語なので、Unityに依存しないライブラリを
         作れない。

         再利用がなかなかしずらい。




13年4月3日水曜日
C#まとめ

         一応なんでもできる。

         position.xの書きづらさ

         Booの言語機能と比べると、若干劣る。(リスト内包
         表記など)




13年4月3日水曜日
Booまとめ

         神言語( Unity3dでは最も良い言語だと思う)

         悲しいかなBooを使う人がなかなかいない

         ドキュメントが少ない

         MonoDevelop-UnityのBooで、IDEがちょっとオカシ
         イ。(補完とか、テンプレートを開くところ)



13年4月3日水曜日
ちょっと補足
         スクリプトのライブラリ生成場所

         US
             Library/ScriptAssemblies/Assembly-UnityScript.dll
         C#
             Library/ScriptAssemblies/Assembly-CSharp.dll
         Boo
             Library/ScriptAssemblies/Assembly-Boo.dll

13年4月3日水曜日
補足2


         ちなみに、外部ライブラリはAssetとして登録

         そうすると自動的にプロジェクトの参照に追加され
         る




13年4月3日水曜日
さらに補足:スクリプトの戦略として




13年4月3日水曜日
自分の場合
         できるだけ、Unity3dに依存しない、ポータブルな外
         部ライブラリを作ることを心がけてます。

         というか、プログラミング全般として、ロジックの
         分離って大事だよね。

         外部ライブラリはF#か、Booで僕は書くようにしてい
         ます(どーでもいい)



13年4月3日水曜日
依存関係に注意


         Unityへの依存

         .Netへの依存(バージョンとか)

         プラットフォームの依存




13年4月3日水曜日
更に補足(最後です)




13年4月3日水曜日
異なる言語間アクセス

         基本的に、US、C#、Booは同じアセンブリにコンパ
         イルされないので、単純にアクセスできない。

         特別なフォルダとしてStandard Assets、Pro Standard
         Assets、Pluginsフォルダのスクリプトが一番最初に
         コンパイルされる




13年4月3日水曜日
異種言語間アクセスその2

         よって異なる言語のコードを参照したい場合
         Standard Assets、Pro Standard Assets、Pluginsフォ
         ルダに置いてCILにコンパイルさせて、参照するよう
         にする。

         例えば、C# -> USにアクセスしたい場合、USをこれ
         らのフォルダに格納する。(実演。)



13年4月3日水曜日
ご清聴ありがとうございました。




13年4月3日水曜日

More Related Content

Viewers also liked

JSerのためのHaxe入門
JSerのためのHaxe入門JSerのためのHaxe入門
JSerのためのHaxe入門Nobukazu Hanada
 
Swift勉強会。はてなとかclosuresについて
Swift勉強会。はてなとかclosuresについてSwift勉強会。はてなとかclosuresについて
Swift勉強会。はてなとかclosuresについてNobukazu Hanada
 
Swiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラスSwiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラスNobukazu Hanada
 
Asset bundleなどの、Unity3d基礎知識
Asset bundleなどの、Unity3d基礎知識Asset bundleなどの、Unity3d基礎知識
Asset bundleなどの、Unity3d基礎知識Nobukazu Hanada
 
Jenkinsのおっさんを眺めるだけ
Jenkinsのおっさんを眺めるだけJenkinsのおっさんを眺めるだけ
Jenkinsのおっさんを眺めるだけNobukazu Hanada
 
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについてNobukazu Hanada
 
2016年にGameJamで使って助かったと言われたアセット50選
2016年にGameJamで使って助かったと言われたアセット50選2016年にGameJamで使って助かったと言われたアセット50選
2016年にGameJamで使って助かったと言われたアセット50選Takashi Jona
 
GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
 GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ  GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ Hiroyuki Tanaka
 
Jenkinsを使ったコンシューマゲームでのデプロイとテスト
Jenkinsを使ったコンシューマゲームでのデプロイとテストJenkinsを使ったコンシューマゲームでのデプロイとテスト
Jenkinsを使ったコンシューマゲームでのデプロイとテストHiroyuki Tanaka
 
HoloLens x Graphics 入門
HoloLens x Graphics 入門HoloLens x Graphics 入門
HoloLens x Graphics 入門hecomi
 
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移まべ☆てっく運営
 

Viewers also liked (12)

JSerのためのHaxe入門
JSerのためのHaxe入門JSerのためのHaxe入門
JSerのためのHaxe入門
 
Swift勉強会。はてなとかclosuresについて
Swift勉強会。はてなとかclosuresについてSwift勉強会。はてなとかclosuresについて
Swift勉強会。はてなとかclosuresについて
 
Callback DSL on Haxe
Callback DSL on HaxeCallback DSL on Haxe
Callback DSL on Haxe
 
Swiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラスSwiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラス
 
Asset bundleなどの、Unity3d基礎知識
Asset bundleなどの、Unity3d基礎知識Asset bundleなどの、Unity3d基礎知識
Asset bundleなどの、Unity3d基礎知識
 
Jenkinsのおっさんを眺めるだけ
Jenkinsのおっさんを眺めるだけJenkinsのおっさんを眺めるだけ
Jenkinsのおっさんを眺めるだけ
 
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
 
2016年にGameJamで使って助かったと言われたアセット50選
2016年にGameJamで使って助かったと言われたアセット50選2016年にGameJamで使って助かったと言われたアセット50選
2016年にGameJamで使って助かったと言われたアセット50選
 
GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
 GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ  GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
 
Jenkinsを使ったコンシューマゲームでのデプロイとテスト
Jenkinsを使ったコンシューマゲームでのデプロイとテストJenkinsを使ったコンシューマゲームでのデプロイとテスト
Jenkinsを使ったコンシューマゲームでのデプロイとテスト
 
HoloLens x Graphics 入門
HoloLens x Graphics 入門HoloLens x Graphics 入門
HoloLens x Graphics 入門
 
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
 

Similar to Unity3dにおけるus c# boo比較

Testing PHP extension on Travis CI
Testing PHP extension on Travis CITesting PHP extension on Travis CI
Testing PHP extension on Travis CIYoshio Hanawa
 
NDS31 はじめてChrome App
NDS31 はじめてChrome AppNDS31 はじめてChrome App
NDS31 はじめてChrome Appcivic Sasaki
 
20130310 jaws tokai2013
20130310 jaws tokai201320130310 jaws tokai2013
20130310 jaws tokai2013Yuto Ogi
 
Moff 20130309 jawsug_santo_v01
Moff 20130309 jawsug_santo_v01Moff 20130309 jawsug_santo_v01
Moff 20130309 jawsug_santo_v01Motohiro Yonesaka
 
マルチデバイス対応のコーディング・マークアップのポイント
マルチデバイス対応のコーディング・マークアップのポイントマルチデバイス対応のコーディング・マークアップのポイント
マルチデバイス対応のコーディング・マークアップのポイントMasayuki Maekawa
 
WordBench Osaka 春の大翻訳祭り
WordBench Osaka 春の大翻訳祭りWordBench Osaka 春の大翻訳祭り
WordBench Osaka 春の大翻訳祭りTakayuki Miyauchi
 

Similar to Unity3dにおけるus c# boo比較 (9)

Testing PHP extension on Travis CI
Testing PHP extension on Travis CITesting PHP extension on Travis CI
Testing PHP extension on Travis CI
 
NDS31 はじめてChrome App
NDS31 はじめてChrome AppNDS31 はじめてChrome App
NDS31 はじめてChrome App
 
WPFことはじめ
WPFことはじめWPFことはじめ
WPFことはじめ
 
20130310 jaws tokai2013
20130310 jaws tokai201320130310 jaws tokai2013
20130310 jaws tokai2013
 
Moff 20130309 jawsug_santo_v01
Moff 20130309 jawsug_santo_v01Moff 20130309 jawsug_santo_v01
Moff 20130309 jawsug_santo_v01
 
マルチデバイス対応のコーディング・マークアップのポイント
マルチデバイス対応のコーディング・マークアップのポイントマルチデバイス対応のコーディング・マークアップのポイント
マルチデバイス対応のコーディング・マークアップのポイント
 
サラリーマン
サラリーマンサラリーマン
サラリーマン
 
iPhone develop for Beginner
iPhone develop for BeginneriPhone develop for Beginner
iPhone develop for Beginner
 
WordBench Osaka 春の大翻訳祭り
WordBench Osaka 春の大翻訳祭りWordBench Osaka 春の大翻訳祭り
WordBench Osaka 春の大翻訳祭り
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Recently uploaded (9)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

Unity3dにおけるus c# boo比較