読者です 読者をやめる 読者になる 読者になる

森理 麟(moririring)のプログラマブログ

ゲームプログラマ森理 麟がのプログラムの話題を中心に書くブログです。

C#のint

と言うわけで、このブログはC# Advent Calendar 2014の22日目の記事です。昨日はkekyoさんでした(実はつい最近お知り合いになりましたー)。今日はintについてゆるめに書こうと思いますー。

intの言語仕様

C#のintは、言語仕様*1に「–2147483648 から 2147483647 までの値を持つ、32 ビットの符号付き整数を表します」と書いてあります。また「System 名前空間で定義済みの構造体型に対する単なるエイリアス」とも書いてあります。

intの定義

それではこの内容を自分の目で見るために、Visual Studio上のintを定義しているところで、右クリックして「定義へ移動」を押しましょう。

https://lh5.googleusercontent.com/-yWuAv_YbqTY/VJRYxScxPOI/AAAAAAAADPk/gztY-SX3kTw/w705-h531-no/%E7%84%A1%E9%A1%8C%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97_121814_110510_PM.jpg

 

ハイ。intの定義に移動しました。

https://lh6.googleusercontent.com/-F1AHGHZOTFo/VJRYxFkKQbI/AAAAAAAADPc/jWgcIYrRXto/w798-h429-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_121814_110627_PM.jpg


intの名前

https://lh6.googleusercontent.com/-E-WgIeaSPMk/VJZaXoHVOiI/AAAAAAAADQM/m_NFvBxtS_Y/w264-h143-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_121814_110627_PM_122114_022125_PM.jpg

まず見るのは名前です。intの定義へ移動したはずなのにInt32になっています。これが言語仕様に書いてある単なるエイリアスという意味です。つまりintは渾名で、本名はInt32と言います。「僕の名前はInt32です!intと呼んでくださいね」という感じでしょうか。

https://lh6.googleusercontent.com/-G_f-C3qtImU/VJZaXic_O8I/AAAAAAAADQ4/_tWwR62k60k/w297-h156-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_121814_110627_PM_122114_022232_PM.jpg

次に名前空間を見てみましょう。namespace Systemです。さらにInt32の型を見るとstruct、つまり構造体です。これが言語仕様に書いてある「System 名前空間で定義済みの構造体型」という意味です。因みにC#の値型(int,float,charなど)は基本構造体型です。

 

intの値

次にメンバを見てみましょう。定数が2つ宣言されています。MaxValueとMinValueです。そして言わずもがなですが名前が「Int32」つまり32ビットの整数です。これが言語仕様に書いてある「–2147483648 から 2147483647 までの値を持つ、32 ビットの符号付き整数」という意味です。こんな感じで見ていると、言語仕様に書かれたことがより分かってくるかなと思います。折角なのでもう少しみてみましょう。

 

intの静的メンバ

staticがついた静的メンバはクラス名を使ってアクセス出来ます。constも静的と同じ扱いなので例えば最大値を使いたい場合はint.MaxValueと書くことが出来ます。他にもstaticキーワードを使っているParseやTryParseはint.Parse()やint.TryParse()と書くことが出来ます。もちろんInt32.MaxValueやInt32.Parse()と書くことも可能です。

 

intのインターフェース

またintは様々なインターフェースが宣言されています。IComparableはソートなどでどのように並べ替えられるかを、IFormattable・IConvertibleは文字列への変換を、IEquatableは等しいかどうかを明示的に実装しています。 

インターフェースメソッド
IComparable int CompareTo(object obj);
IFormattable string ToString(string format, IFormatProvider formatProvider)
IConvertible string ToString(string format);
IComparable<int> int CompareTo(T other);
IEquatable<int> bool Equals(T other);

 

intのオーバーライド

Equals(object obj)、GetHashCode()、ToString()はoverrideしています。この辺は全ての元になっている基本クラスObjectでvirtual宣言されているメソッドのオーバーライドになります。

intの実装

さて、intの定義を見てみました。しかしこの方法では実装がどうなっているかまでは見ることが出来ません。インターフェースやオーバーライドはやはり実装がどうなっているか見たくなります。実は実装も意外と簡単に見ることが出来ます。

 

方法はReference Sourceで検索することです。ここでInt32と打てばint32.csが見れます。さらにおススメなVisual Studio拡張機能があってRef12をインストールすればVisual Studio上でF12を押すだけでReference Sourceの名前で検索した画面にジャンプしてくれるようになります。

 

最後に

と言うわけでintの定義や実装を見てみました。C#.NET Frameworkの内容を知りたい場合は言語仕様ソースリファレンスMSDNが3種の神器だと思います。 他の基本的な型や.NET Frameworkで良く使うクラスの中身も同様に見てみるとなかなか面白いかと思います。と言うわけで、C# Advent Calendar 2014明日は、uzzuさんです。よろしくお願いします!

*1:VS2013をインストールしていれば"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC#\Specifications\1041\CSharp Language Specification.docx"にあります

第1回 Hubot×ChatOps勉強会に行った #hubot_chatops

https://connpass-tokyo.s3.amazonaws.com/thumbs/36/c1/36c1b285e92655030c183f493ffe15f8.png

第1回 Hubot×ChatOps勉強会に行ってきました。正直全然まとまってないです。時事系列も発言者も体験通りではないです。また懇親会で話した内容とかその後僕の考えたこと中心ですね。勉強会自体のピックアップは告知サイトtogetterを参考に。

 

ChatOps

そもそもChatopsって何?って思いますよね。Chatopsはチャットで運用をしてしまおうという試みです。チャットで運用?と思うでしょう。でもやり方に依っては、はまるところにはバッチリはまると思います。何より発想がめっちゃ面白い!

 

非常に分かりやすいのがトレタでの「slack」活用を紹介してみるの話で、かいつまんで言うとチャットで挨拶すれば出欠確認が出来て、しかもBotに今日の休みを問えば、一覧を返してくれるといった仕組みです。便利でしょー!

 

もちろんこれはほんの一例で、発展させていけばコンパイルエラーをチャットに通知したり、チャットへの書き込み一つでビルドやデプロイのトリガーに出来たりと、さまざまなopsを実現することが出来ます。 

bot

で、Chatopsのキーになるがbotです。botから内容の通知が来たり、デプロイの命令をbotに対して投げたりします。またbotは適度なジョークを言って場を和ませたり、今日の天気情報などを教えてくれたり、非常によくできた執事となります。

 

僕はLTでも少し話したけれど、ちょうどbot作り始めようと思って少し齧りだしたタイミングです。作り手としてはやっぱりbot作りは最高に面白いです。面白すぎてジョークに依りがちになってしまう危険性を感じたぐらいです。

 

実際適度なジョークは良いんですが、容量用法をまもらないと雰囲気が寒くなっちゃうかなーと思います。 実際にしっかりやっている人からすればツッコミどころもあるかも知れませんが。 

 

bouzuyaさん

さて、この勉強会も非常に良かったのですが、発表者のbouzuyaさんとChatopsとChatツールについて懇親会で結構話しました。bouzuyaさんはchatopsに否定的な面もあって、それはセッションでもかなり言ってました。因みにこのセッション最高だ!

 

bouzuyaさんはチャットでopsすること自体どうかなー?と。どうせボッチなんだし、UIだって表現出来ないし、それだったらチャットじゃなくて専用でやった方がきめ細かい対応がとれんじゃないか的なことを言っていたわけです。

 

また、折角話が盛り上がっている所にエラーとかボットに言われてもなーとかね。これに関しては別にノイズだって良いかなーと話ました。人間の発言だって多くはノイズだったりします。相手をしなければ流れるだけ。それがチャットの良さかもと。

 

チャットツールの欠点

で、僕はチャットツールへの不満話をしました。最近Facebookのメッセージのやりとりを頻繁にしてたんですが、特定の発言を見直すのが非常に大変!これ結構多くのチャットソフトである話かなー。つまり過去ログを見直すことが面倒。

 

これはTwitterのノウハウが役に経つかなーという話になってつまり特定の発言にスター的な機能があるだけでも後から見直しやすくなります。ただ、Twitterの例なら、じゃあスターだけ見直して有益かというとスターすらもいずれ流れてしまいます。

 

やはりTogetterのようなキュレーションが出来ると良いかなーと。ただTogetterも数週間とか過ぎると途端にログが探しにくくなるし、そもそもハッシュタグみたいなものがないとログ探しが大変です。

 

チャット部屋のカテゴライズ

あと、チャットのスレッドや部屋をどういう単位で作るのが良いかも話しました。色々話は拡散したし、その場で言った結論かは覚えてないですが、チャットの部屋機能はあんまりなくても良いと思っています。

 

何故かと言うと有益な情報しかつぶやかない場所を作れば、そこには有益な情報だけが流れますか?んーなわけはないと。GTDのようにまずどんな話題でも全部一つに書いて、後からまとめるのが良いかなーと思います。

 

また2つ部屋を作った場合、ある部屋で、あ、この発言こっちで書くの適切でないとか考えるのが、もう心理的なハードルかなと思います。本来チャットというのは自由なスペースであるべきで、だからこそ光る発言が出るんでないかなー。

 

そういう意味で部屋を細かく分けることはカテゴライズ出来るメリットはあっても、可能性をつぶすデメリットがあるのではと感じます。チャットは有益な情報と無駄な情報が並ぶ場所です。玉石混交の極みだと思います。 

 

チャットソフトの文字表現力

あとチャットソフト自体の表現力が必要かという話もしました。最近僕がgitterを使う機会がありました。gitterはGithubリポジトリ単位で作れるので、そのこと自体が有益だし、そこにMarkdown乗せたのも最高だと思います。

 

確かに太字や斜体、大きなフォントや見出しが作れるMarkdownは便利です。さらにリンクがかけたり、画像が乗せれたり、なによりソースを書けたりします。素晴らしい仕組みだと思います。 

 

でも、そもそも普通のチャットツールに高い文字表現力は必要かなーという話になりました。マークダウンをマニュアルも見ずに手が覚えている人は結構一部だと思います。だってWikiプログラマ以外が使ってることって結構少なくないですか?

 

つまり、表現力の高さが、テンポの邪魔になるケースも多いんじゃないかなーと思います。 理想はFacebookのようにURLをはれば自動的にリンクを作ってくれる機能で、ソースも自動認識してくれれば結構事足りてしまう気もします。 

 

そもそもチャットオプスて

じゃあ、理想のチャットツールはなんでしょうか?勉強会で一つ象徴的な発言だったのが、うちはいまだにIRCです。理由は移行コストに見合わないからというがあって、えーと思いつつ、んーと思うところでした。

 

理想のチャットツールはこんなて感じでしょうか。あ、あくまで僕が思うですけれど。Typetalkとか良い線言っているかもですね。あとは皆大好きSlackね。

  • 情報はあまり拡散しないで、なるべく一元で管理出来ること
  • 全過去ログを高速で検索しやすいこと
  • 必要なキーワードをピックアップしてまとめる機能があること
  • 文字を打つだけで、リンクやソースは自動で認識してくれること
  • 難しい記法なしにいいねや顔文字とかのように楽に高い表現ができること

 

理想のchatopsはー、まだ見えてないです。今出来る中で作っていってもっと話あうべき段階、つまりまだまだ発展途上だと思います。しかしchatopsは非常に魅力を持った運用方法だと思います。これからももっと考えていこうと思います。  

Visual Studio Community 2013とVisual Studio Tools for Unityの設定

Visual Studio Community 2013のインストール

Visual Studio Community 2013(以下VS)のインストール方法を紹介します。特に難しいことはなくポチポチしているだけで終わりますw。先ずVSのHPに行きます。https://lh5.googleusercontent.com/-LDBLhj8mpJ0/VGi7MMaia1I/AAAAAAAADIc/KxzAKgUz44s/w991-h382-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111614_114314_PM.jpg

 

このページを下にスクロールしていくとダウンロードのボタンがあるのでそちらをクリックしてください。

https://lh4.googleusercontent.com/-B7nqaw2p5_s/VGi7L6FFnFI/AAAAAAAADIg/ek311CCveD4/w945-h366-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111614_114350_PM.jpg

 

クリックするとVisual Studioのダウンロードというページに切り替わわります。

https://lh6.googleusercontent.com/-ThMBbxd3gCA/VGi7MLdXTSI/AAAAAAAADIU/dVaftE0zLTU/w1003-h332-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111614_114447_PM.jpg

 

そこでCommunity 2013 with Update4をクリックするとメニューが広がります。Install nowをクリックするとexeがダウンロードされます。Language Packを入れれば日本語化も可能です。このダウンロードはわりと一瞬です。

https://lh4.googleusercontent.com/-sNYAiwR04GU/VGi7MxGl7WI/AAAAAAAADIM/MBmXW2qS7FE/w984-h567-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111614_114713_PM.jpg

 

ダウンロードしたらvs_community.exeをダブルクリックします。

https://lh6.googleusercontent.com/-3paTH0uVZQQ/VGi7NaKnHgI/AAAAAAAADIY/FOoovAfg_KU/w754-h405-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111614_115346_PM.jpg

これでインストールが開始です。先ずLAUNCHを押します。

https://lh6.googleusercontent.com/-rufykZiTla8/VGu_FlFSpmI/AAAAAAAADME/6Dx7LTRF2hQ/w460-h644-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111814_115501_PM2_111914_063933_AM.jpg

次にライセンスとポリシーに同意したらNextを押します。

https://lh6.googleusercontent.com/-NkduucGJ-_M/VGu_FlN6DsI/AAAAAAAADMA/uXcUjhPBj6w/w460-h644-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111814_121153_PM_111914_064110_AM.jpg

インストールするものは特に理由がなければデフォルトでOK です。INSTALLを押しましょう。

https://lh4.googleusercontent.com/-KJB1cuqwDBk/VGu_GSZxjyI/AAAAAAAADMs/ej8Oo3SHjmQ/w460-h644-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111814_121217_PM_111914_064830_AM.jpg

ゲージが進みだせば後は待つだけです。結構時間がかかります。

https://lh3.googleusercontent.com/-zN2QZuK5DFc/VGu_GkHvS9I/AAAAAAAADMU/rZzEeV2bT64/w460-h644-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111814_121239_PM.jpg

Visual Studio Tools for Unityのインストール

その間にVisual Studio Tools for Unity(以下VSTU)もインストールしましょう。Visual Studio 2013 Tools for Unity extensionからダウンロードできます。

https://lh6.googleusercontent.com/-RvIb5hk5sM4/VGjAp1ad1PI/AAAAAAAADJA/dNjl-pbjbm0/w961-h344-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111714_121900_AM.jpg

ダウンロードしたファイルを実行すればインストールが開始します。ライセンスに同意してInstallボタンを押しましょう。

https://lh6.googleusercontent.com/-VndHIW0r3Rg/VGjHMZDiXqI/AAAAAAAADJ8/LC43Rob1JEU/w499-h389-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111714_122954_AM.jpg

インストール完了すれば以下の画面になります。

https://lh5.googleusercontent.com/-XYFPny_mXLM/VGjHMZWtjFI/AAAAAAAADJ0/aKaSLVNVw_I/w499-h389-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111714_124722_AM.jpg

 

さて、VSとVSTUのインストールが終わったら、一度再起動をおすすめします。

Visual Studio Community 2013の日本語化

次は日本語化です。先ほどVSと一緒に落としたvs_langpack.exeをダブルクリックします。ライセンスとポリシーに同意してインストールを押しましょう。

https://lh5.googleusercontent.com/-Zr5hfqtsptA/VHFK0oyHgzI/AAAAAAAADNU/Jfba6YHqo2U/w460-h644-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_111914_072017_AM.jpg

待っていれば終わります。

https://lh6.googleusercontent.com/-OEyXdMOgExk/VHFK0jDMSKI/AAAAAAAADNY/q7mirGr5PzA/w460-h644-no/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_112314_114708_AM.jpg

インストールが終わったらVSを起動しましょう。そのままメニューの「TOOLS」→「Options...」を押します。

https://lh6.googleusercontent.com/-qGxqqTgJE6Y/VHFQV0PRvOI/AAAAAAAADOk/sd3Aa11ztpA/w1068-h589-no/%E7%84%A1%E9%A1%8C%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97_112314_120521_PM_112314_121101_PM.jpg

「Evniroment」の「International Setting」を選びLanguageをEnglishから日本語に変更します。OKを押してVSを再起動すると日本語になります。 

https://lh4.googleusercontent.com/-0k2JhNtrIko/VHFP7ZNsdcI/AAAAAAAADOA/rm2SD8_C5Do/w753-h609-no/%E7%84%A1%E9%A1%8C%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97_112314_120705_PM.jpg

 

Visual Studio Tools for Unityの有効化

Unityを起動して「Asserts->Import Package->Visual Studio 2013 Tools」を押します。

https://lh3.googleusercontent.com/-3Dyi1Uo8rew/U97hA0ml2sI/AAAAAAAAC8s/Uy3efcgIrXk/w718-h557-no/080414_092350_AM.jpg

 

Importを押せば設定完了です。これで設定は完了です!

 https://lh5.googleusercontent.com/-TDmWlsBq9XM/U97tiQ8z4JI/AAAAAAAAC9Y/9-Ym9F2Srss/w476-h387-no/080414_104107_AM.jpg

これでUnity上でC#のソースをダブルクリックするとVSが起動するようになります。VSの実行ボタンに「Attach to Unity」と書いてあればUnityのデバッグも出来ます!

https://lh3.googleusercontent.com/-hHLBCGRWBjo/U97ticpA5QI/AAAAAAAAC98/PAjbF__HiUY/w558-h271-no/080414_104719_AM.jpg

 お疲れ様でした!

あわせて読みたい

Unity開発者のためのVisual Studio Community 2013

Visual Studio Tools for Unity 1.9について

Unity開発者のためのVisual Studio Community 2013

https://lh3.googleusercontent.com/-NkMT5cizTQY/VGh6xuiqamI/AAAAAAAADHM/YyPZ8xSyQvg/w920-h200-no/111614_071927_PM.jpg

Unity開発者の皆さん。IDEは何をお使いですか?

Unity開発者の皆さん。IDEは何をお使いですか?…え?まさかまだMonoDevelopですか?2014年11月12日を持ちましてYesと答えた貴方。残念!時代は変わりました。老害になるのが嫌なら今すぐ下記の内容をすぐに試してください。 

Visual Studio Community 2013

MSからVisual Studio Community 2013が発表されました。これは個人開発者、学生、非営利団体、大企業以外の会社で5人以内であれば無料で使えるライセンスです。これで今まで無料版では使えなかったVisual Studio Tools for Unityを使うことが出来ます。VSの超強力で使いやすいデバッグ機能をフルで使うことが出来るんです!

Visual Studio Tools for Unity

使い方は以前のブログでも書きましたが、Unityのメニューで「Asserts->Import Package->Visual Studio 2013 Tools」を押してImporting packageでImportを押すだけです。

https://lh5.googleusercontent.com/-TDmWlsBq9XM/U97tiQ8z4JI/AAAAAAAAC9Y/9-Ym9F2Srss/w476-h387-no/080414_104107_AM.jpg

 

これでProjectにUnityVSが入ったら、直接slnから起動しても、UnityでC#をダブルクリックしてもVSで上部のメニューにAttach to Unityのアイコンが出ています。この状態でブレイクポイントを置いてAttach to Unityを押せば…ほら、もうこれだけでデバッグできます!

https://lh3.googleusercontent.com/-wJxICrsAE2w/U97tjY93RgI/AAAAAAAAC9g/S8u0A79O7mE/w571-h370-no/080414_104939_AM.jpg

 

この他にもUnity Project Explorer、Script method wizard、Quick script metdho creator、Unity API Referenceと言った拡張機能が入っており、VSでのUnity開発が使いやすくなっています。

http://unityvs.com/img/select-method.png

Hello "Visual Studio for Unity" World!

今までUnity開発でVisual Studioを使ったことがない人や、以前VSExpressでやった人はぜひ1度試してください。ExpressではVSの恩恵を味合うことが出来ませんでした。Visual Studio Community 2013+ Visual Studio Tools for Unity 無料でVSの良さを味わうことが出来ます。Hello "Visual Studio for Unity" World! 

あわせて読みたい

Visual Studio Tools for Unity 1.9について

Visual Studio Tools for Unity 1.9について

http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-29-92/2275.Visual-Studio-Tools-for-Unity-1.9.png

Visual Studio Tools for Unity 1.9

Visual Studio Tools for Unity 1.9(以下VSTU)が出ました!NuGetにもあります。ダウンロードサイトに飛ばされるのでHPからダウンロードしても同じです。VS2013,VS2012,VS2010に対応しています。

 

VSのデバッグは以前は有料

もともとUnityをデバッグしようと思ったら、有料のUnityVSを使うしかなく、諦めてMono Developerかprintfデバッグをしていました。しかし、なんと、なんとMicrosoftがSyntaxTreeを買収してUnity用プラグインUnityVSをVisual Studioに統合。そしてVSTUがこの度めでたく発表されて無料で使えるようになった流れです。パチパチ。

http://apptractor.ru/wp-content/uploads/2014/07/UnityVS.jpg

 

VSTU初期設定

では、VSTUをインストールして早速使ってみましょう。僕はUnityを起動せずに、Unityプロジェクトのslnファイルから先にVisual Studioを起動したのですが、この順番では一部機能が使えなかったです。

https://lh6.googleusercontent.com/-F9ZIIHAg8Ns/U97hAYFQVLI/AAAAAAAAC8g/jrD7Qb6vLo0/w506-h329-no/080414_091914_AM.jpg

で、次はUnityを起動しました。Extrnal ToolsをMicrosoft Visual Studioにしています。

https://lh6.googleusercontent.com/-B6JccqZDtEE/U97hAZEplrI/AAAAAAAAC8o/wduXW0cFWNU/w513-h441-no/080414_092235_AM.jpg

この状態でC#をダブルクリックしてもVSでの起動に失敗しました。

https://lh6.googleusercontent.com/-rzNgIwacrrU/U97hAYV7axI/AAAAAAAAC8k/aHXpiOJtWFo/w468-h215-no/080414_091639_AM.jpg

上手く行かないのは両方とも同じ原因です。

 

まずUnityで「Asserts->Import Package->Visual Studio 2013 Tools」をします。

https://lh3.googleusercontent.com/-3Dyi1Uo8rew/U97hA0ml2sI/AAAAAAAAC8s/Uy3efcgIrXk/w718-h557-no/080414_092350_AM.jpg

次にImporting packageでImportを押してやる必要があります。これでProjectにUnityVSが入ったら、直接slnから起動しても、UnityでC#をダブルクリックしてもVSでVSTUの機能がフルで使えます。 

https://lh5.googleusercontent.com/-TDmWlsBq9XM/U97tiQ8z4JI/AAAAAAAAC9Y/9-Ym9F2Srss/w476-h387-no/080414_104107_AM.jpg

VSでデバッグ

さて、VSに行くと上部のメニューにAttach to Unityのアイコンが出ています。VSからデバッグしたい時にUnityをPlayした方が便利なのでAttach to Unity and Playに変えましょう。

https://lh3.googleusercontent.com/-hHLBCGRWBjo/U97ticpA5QI/AAAAAAAAC98/PAjbF__HiUY/w558-h271-no/080414_104719_AM.jpg

で、ブレイクポイントを置いて

https://lh5.googleusercontent.com/-HBvi4C6o6U8/U97ticCXk_I/AAAAAAAAC9k/12yvBXffQbQ/w506-h361-no/080414_104906_AM.jpg

 

Attach to Unity and Playを押せば…ほら、もうこれだけでデバッグできました!素晴らしい!! 

https://lh3.googleusercontent.com/-wJxICrsAE2w/U97tjY93RgI/AAAAAAAAC9g/S8u0A79O7mE/w571-h370-no/080414_104939_AM.jpg

 VSからデバッグしたい場合は当たり前ですが、VSとUnity両方起動しておく必要があります。 Select Unity Instaceで選びます。

 

VSのデバッグは本当に沢山のことが出来ます。ブレークポイントのヒットカウンターとか知っていれば格段に効率が違います。Unity用に書いたのではないですが、以前発表した資料も載せておきます。 

 

で、VSTUの魅力の一番はデバッグ出来ることですが、これ以外にも機能があります。特にUnityVSの公式サイトにも乗っているおススメ機能が3つあります。 

Unity Project Explorer

Unity Project ExplorerはVSのソリューションエクスプローラーのUnity版で、Visual Studio StyleとUnity Styleでソートできます。ソリューションエクスプローラーで困ることはあまりないですが、UnityのProjectビューと同じ並びなので使いわけると良いと思います。ショートカットキーは「Shift + Alt + E」。

http://unityvs.com/img/upe-outline.png

Script method wizard

Script method wizardはUnityのメソッドを一覧から選べば作ってくれる機能です。メソッドを挿入するポイント(カーソル位置、start()の後、update()の後)、APIのバージョン、コメントを入れるかどうかなどが選べます。ショートカットキーは「Ctrl + Shift +M」。http://unityvs.com/img/select-method.png

Quick script metdho creator

Quick script metdho creatorも似たような機能ですが、一覧ではなくインテリセンスで打ち込むごとに絞り込まれて表示されます。前からOnCollisionEnterとか微妙にインテリセンスが効かなくて不便だなと思っていたのがこれで解消です。ショートカットキーは「Ctrl + Shift + Q」。

http://unityvs.com/img/create-method.png

Unity API Reference

あとUnity API Referenceも地味に嬉しいです。 

https://lh6.googleusercontent.com/-6Zgh7WRB7Fg/U97tj4HTMII/AAAAAAAAC9w/1f0ZVaWk4LA/w449-h281-no/080414_111602_AM.jpg

何よりブラウザじゃなくてVSの新しいタブに出てくれるのが良いです。ショートカット「Ctrl + Alt +M, Ctrl + M」が押し辛いのだけが惜しい!F1とかに出来ないものかな?

https://lh4.googleusercontent.com/-xjnLbh5cfY4/U97ybxhoucI/AAAAAAAAC-k/e0lDUsGsbWg/w1451-h754-no/080414_111717_AM.jpg

 

Express対応 

最後に残念ながら無料版のVisual Studio ExpressではVSTUは使えません。Professional以上が必要です。Expressで使えたらもう宣伝しまくりですが、ホビープログラマやインディースゲームプログラマへ訴えるにはここが一番ネックかなーと。インディースゲームプログラマ用ライセンスとか作ってくれないかなー。  

参考

Visual Studio Tools for Unity(UnityVS) - Unity開発におけるVisual Studioのすすめ

UnityVS改めVisual Studio Tools for Unityが無償で公開されています

初めてオンラインでの勉強会をやってみたらすこぶる快適だった

 http://www.sedori-school.com/images/be001.jpg

オンライン勉強会

先日オンライン勉強会をやってみました。オンラインつまりインターネットを介して遠隔地の人とやる勉強会です。不安もありつつ何度か実験を重ねて行けそうと思ったので、小規模で開催してみました。結果から言うとオンライン勉強会最高です!これはもっと広げたいと思ってブログを書きました。

 

使用ツール

オンライン勉強会に使ったツールSkypeです。Skype以外にはappear.in,Hangoutsをテストしました。個人的な感想ですが、単純に3つのツールを比べてSkypeが最も音声がクリアに聞こえました。別の機会に、勉強会を撮影しながら映像をチェックしました。音声だけでなく映像もSkypeが一番上だと感じました。他は撮影している画面の文字が少し読みづらかったですが、Skypeははっきり読めました。5年以上前は同時接続数が上がると音声の質が下がっていたような気がしますが、今回は6人でやっても全く問題ありませんでした。人数はなんと最大25人まで同時接続できます。デスクトップ版に比べてストアアプリ版は少し使いづらいです。

 

勉強会の形式について

福井と岡山に講師が1人ずつ居て、大阪は会場を借りて7人で集まってパブリックビューというスタイルです。福井の講師は個人で自宅からつないでもらってハンズオン形式で3時間。岡山の講師は実際に岡山で勉強会をやっていて、セッションの時間になった時につないでもらって、そのまま40分話してもらうスタイル。もちろん聞く方も集まらないでやることは可能でしたが、今回は敢えて集まって聞くことにしました。ちなみにまだ実験段階ということで9人全員が顔見知りです。

 

当日の接続に関して

実際に大人数でSkypeでつなぎ合うのは初めてだったので、色々トラブルがあり、設定だけで1時間弱かかってしまいました。最初は福井の講師と大阪の聴衆を全員Skypeでつなぐつもりでしたが、そもそもSkypeを入れていない人もいたので福井1人と大阪4人でつないで、大阪の一人の画面をプロジェクターに映すことにしました。注意点として複数人つないでいる状態でマイクの声を2台以上のスピーカーが拾うとハウリングします。少人数ならマイクとスピーカーは1台以外はオフで良いと思います。

 

ハンズオンのセッションについて

福井の講師の画面を共有してもらって、大阪側がそれを見ながらセッションというスタイルです。プロジェクターで映した画面は個人でつないでいる画面よりも文字が読みづらくなっていました。結局講師の画面の解像度を下げてもらって、重要な所は、200%に拡大してもらって辛うじて文字は読めるようになりました。このスタイルで初めてみて、殆ど問題なく行えました。仲間内と言うこともあってちょっと進むごとに質問も出まくりでした。

 

映像トラブルについて

2時間ぐらいは問題なかったのですが、途中で画面共有のレスポンスが低下しました。顔を映しているカメラの映像は問題なかったので、転送情報が多い画面共有だけで起きている感じでした。お互いのSkypeやパソコンを再起動したり、同時接続数を5台から3台にしたりしたら一瞬回復しましたが、結局最初よりもレスポンスは落ちていました。Skypeの問題より、ネットワークの問題な気もしました。低下しているなりに続けて結局最後まで出来ました。

 

スピーカセッションについて

その後は岡山の講師のセッションを聞きました。岡山の講師のパソコンはカメラがなかったのですが、画面共有は可能だったのでセッションの資料を画面共有してもらいました。ついでにPowerPointのオンラインプレゼンテーションも使ってもらいました。レスポンスはオンラインプレゼンテーションの方が良かったですが、デモは画面共有でしか見ることができないのでやはりSkypeの方が勉強会に向いていると思いました。こちらは本当に何の問題もなく最後まで聞けました。

 

感想

最後に今日の勉強会の感想を言い合いました。画面共有していると講師の顔が見えなくなっていたので、質問するタイミングは計りづらいという話が出ました(Skypeの機能的には画面共有と顔を両方出すことは可能だけど今回は見えなかった)。すると講師の方もリアクションが分からないのは話しづらいと同様の意見を言っていました。ただ途中から大阪側のカメラを部屋全体を映すように変えたのですが、それがすごく良かったと言われました。全体が見えるとやはり急に話しやすくなったと聞いて、聞く側にも話す側にもカメラは必須で特に顔やリアクションが分かることは重要だということが分かりました。

 

まとめ

Skypeを使ったオンライン勉強会、最高です。細かいトラブルはあったものの本当に思っていた以上に距離の壁も感じませんでした。これから細かいところはもっと洗練していきたいと思います。やる場合問題となるのは機材だけだと思います。それもいまどきかなり安価です。もしパブリックビューするのであれば、参加者全員が機材を用意できるとは限らないのでプロジェクターはあった方が良いと思います。

 

最後に

勉強会を同時開催で中継しあうことが出来ると尚ベターだと思います。日本中とつなぎ合わせて日本全国合同勉強会とかできたら最高だと思います。興味を持った皆さん是非お声掛けくださいー!

Room metro #24 大阪 今晩おしえて欲しい!第2夜 「Unity」用の資料

スライド

作成したスライドはShideShareにありこのブログで見られます。

ソース

作成したソースサンプルはgistにありこのブログで見られます。

1.「移動」、古き良き書き方

2.「移動のUnity版」、新しき良き書き方

3.「ジャンプ」、飛びます飛びます

4.「1回だけジャンプ」、1回だけ!1回だけだから

5.「敵」素敵な敵

6.「発射」

7.「ちゃんと発射」

8.「花発射」オマケ

9.「撃破」

10.「敵ゼネレーター」

11.「パーティクル」

12.「スコア」

13.「ゲームオーバー」

プロジェクト

作成したプロジェクトはGitHubにアップしてあります。

プレイ

作成したプロジェクトはDropboxにありこのブログで見られます。