僕はここだ!

読書記録とか、ポエムとか、メモとか、コードスニペットとか。まとまったのはQiitaにも書きます。(http://qiita.com/RyotaMurohoshi) 掲載内容は個人の見解であり、所属する企業を代表するものではありません。

「【Unity道場16】パフォーマンス最適化のポイント」に参加しました! #unity道場

 2016/12/22(木)に開催された「【Unity道場16】パフォーマンス最適化のポイント」に参加しました。

 たくさんの質問に答えていただいた講師の山村さんありがとうございました。

eventdots.jp

togetter.com

twitter.com

Tweetメモ

 一般的なソフトウェアではこういう言葉がありますね、

 これに対して、講師の山村さんは「Unityにおけるゲーム開発においては」

 だそうです。大きな手戻りを防ぐために、ポイントはしっかり抑えた方がよさそうですね。

 自分が作っているプラットフォームに対応した、それぞれに適切な最適化が必要ですね。まずは計測!!!

 自分が作っている・作る予定のゲームで一番関係ありそうなのが、これ。表示内容を更新するUIゲームオブジェクト群のCanvasコンポーネント

 Animator関連のネタも個人的には要チェック。

 Asset Bundleの構成も大事。Resouecesディレクトリが無駄にでかいのも影響しますね。

 GameObjectのSetActiveも要注意

さいごに

 最適化に関しては、やりすぎると読みづらいコード・トリッキーな構成になってしまうと思います。

 また、プラットフォームやSDKのアップデートや改善により、あまり効果が無くなったり、逆効果になってしまうこともあるでしょう。

 ただ、ゲームにおいてパフォーマンスの問題は非常に悩ましく大きな問題です。

 問題にぶちあったったら、知識を実践し知恵にして、一つ一つ解決していきたいと思います。

 当てずっぽうにやらず、この知識をしっかり実測しながら、または仕組みを理解しながら改善ですね。

おまけ

 便利だなー

2016 アドベントカレンダー振り返り

 ソフトウェアエンジニア界隈ではすっかり年末の恒例イベントなった、アドベントカレンダー

 今年、私は次の7個のカレンダーに参加しました。

 簡単に振り返ります。

やすべえ

 つけめん屋 やすべえのファンの方が作成したアドベントカレンダーやすべえ Advent Calendar

 去年に引き続き参加しました。

 この日、健康診断で朝食を食べれず昼食も軽かったのでとっても美味しかったです。ただ夕飯にこれを食べた後、飲み会だったので最終的にお腹はパンパンでした。

Visual Studio Code

 Visual Studio Codeアドベントカレンダーは、12/04(日)にMarkdownのショートカットで参加しました。

qiita.com

 一番時間がかかってないけど、一番いいねされているこの記事。

 MarkdownVisual Studio Codeも使っている人多いですもんね。

 2015年も同じネタでVisual Studio Codeアドベントカレンダーに参加したんですが、さらに便利なショートカットが追加されていました。

 実は、参加するつもりなかったのですが空きがあったのと、短時間で書けそうだったので参加しました。

Kotlin

 Kotlinアドベントカレンダーは、12/05(月)にPlatform Typeの話で参加しました。

qiita.com

 もともと、「Kotlin Internal勉強会」で以前話した内容をコンパイラあたりの話を除きつつ、投稿に起こしました。Platform Typeについてはその後の「第4回 Kotlin Sansan勉強会」でMapped Typeの話と合わせてこちらでもお話しさせていただきました。

 今年の私が書いたアドベントカレンダーの中では、ぶっちゃけ一番実用的というか今後も需要がある記事だと思ってます。

朝こざけ

  朝こざけ #asakzkアドベントカレンダーより、朝こざけとは

おはよう、世界 朝こざけの様子のツイーヨを貼ればいいよ

朝こざけとは: 出社前にカフェで勉強してドヤ写真をうpする行為

こざけとは: 日本を代表するアーキテクト

 とのことです。

 当日、Unityの年末恒例LT大会でした。なるべく朝早く起きたかったので登録!

 いい朝、いい朝こざけでした。

Unity

 Unityアドベントカレンダーは、12/12(月)にTileMapEditrの話で参加しました。

qiita.com

 前々日に行われたUnity LT大会のスライドを記事に起こしたやつです。デモでやることを文字に起こしたり、GIFを作って貼ったりと、意外と大変でした。

 一昨年、去年、今年とLT大会で話した内容を遅く説明する形でアドベントカレンダーを書いています。

 今後もTileMapEditor、布教していきたいです。

G*Advent Calendar(Groovy,Grails,Gradle,Spock...)

 G*Advent Calendar(Groovy,Grails,Gradle,Spock...)アドベントカレンダーは、12/13(火) にコレクションメソッドのチートシートで参加しました。

qiita.com

 「普段JavaとかC#を使っていて、たまにGradleとかちょっとした処理をするスクリプトを作る時にGroovy書く人」を想定して、そんな人があったら嬉しいだろうなって記事を書きました。

 同じような記事はあったんですが、addとかclearとか副作用があるものも含まれていたり、しっかり各メソッド説明をしてくださっていて。「ぱっ」て探すのに便利なものを今回新たに作りました。

 collect、findAll、everyとかよく使うメソッドが他の言語と違うから、よく忘れてしまうんです。はい。

C#

 C# アドベントカレンダーは、12/19(月) に「【Unity勢に】C#のforeachとラムダ式の落とし穴、そしてその破壊的言語仕様変更【今読んでほしい】」という記事を書きました。

qiita.com

 あんまり記事に「いいね」はされていないんですが、宣伝ツイートはおかげさまで結構リツイートしていただいています。

 タイトルにもありますし・本文中にも書きましたが、C#アドベントカレンダーだけど、一番の想定読者はUnityクラスタです。

 「ぼちぼちC# 7.0がー」なんて2016年の年末に、なんでまたC# 5.0の話をしているのか。それは2016年の11月末に出たUnity 5.5でforeach + デリゲートの挙動が変わったからです。(ちなみにまだC# 5.0は使えません。)

 以前、Unity Facebook助け合い助で、foreach+デリゲートの話題が出た時からこのことを書こう書こうと思っていたものがズルズル来てしまいました。折角だしってことで、アドベントカレンダーにしました。

 とりあえず、C# erは、みんな岩永さんのサイトをがっつり読んだ方がいいんじゃないかと思います。

全体的に振り返り

 C#、Unity、Kotlin、Groovyのネタ。実は11月の後半には、あらかじめ何を書くか決まっている( or 候補はいくつかあってそこから絞る)状態でした。

 技術投稿の5個の記事はきちんと前日までに仕上げて、Qiitaの予約投稿で投稿することができました。前日や当日に「うぁ、終わってねえ、やべえ」とかが無くて良かったです。

 お祭りみたいなもんですから楽しみたいですが、無理して仕事に支障が出たり、体調崩したら元も子もありませんしね。

 そこそこ、Qiitaでいいねがいただけたのも嬉しいです。私の記事がみなさんの役にたてたのならば幸いです。

 さぁ、2017年のアドベントカレンダーでは何をやろうかな?

「第4回Kotlin勉強会 @ Sansan」でLTしてきました! #kotlin_sansan

 2016/12/13(火)に開催された 第4回Kotlin勉強会 @Sansanで「Mapped TypeとPlatform Type」と題してLTをしてきました。

f:id:MRStar:20161214023325j:plain

概要

 1月から始まって、なんと今年だけで4回目。SansanさんでのKotlin勉強会でLTさせていただいました。

 前回の第3回に引き続いて、2回目です。

 今回も素敵な会場とご飯とビールありがとうございました。

発表内容

 11/26のKotlin Internal勉強会で「KotlinとJavaとnullのライトな話」で登壇し、12/5のアドベントカレンダーで「【!ってなんだ】KotlinとJava、nullとPlatformType【NullableにNotNull】」という投稿をしました。どちらもPlatform Typeについてですね。

 今回は、Platform TypeとMapped Typeの話を「Mapped TypeとPlatform Type」と題して、発表させていただきました。

 公式ドキュメントの「Null-Safety and Platform Types」とか「Mapped Types」のことですね。

 資料はこちら。

 「これ、公式ドキュメントに記載あってもいいじゃん?言語仕様じゃないの?」みたいなことを幾つかお話しさせていただきました。

 @ReadOnlyと@Mutableについて。これらは、Kotlin Internal勉強会で@Nullableと@NotNullについて調べている時に、これに関する記述がコンパイラのコードにあったので「もしや」と思ったのですが、「(Mutable)List<T!>!」に関するアノテーションでしたね。

 いや、実はですね。ダダッズベリしたらどうしようかと、内心ヒヤヒヤだったんですよ。まぁでも「知らなかった」とか「勉強になった」って声もいただいたんで、(リップサービスかもしれませんが)良かったです。

 あと@ngsw_taroさんにご指摘いただいたんですが、アンボクシングの働きで KotlinのInt? -> JavaのInteger -> Javaのintってのができますね。

 よくない言い方をしてしまいました。ご指摘ありがとうございます。

さいごに

 第5回、もしあったらぜひKotlin 1.1とかのテーマで参加させて頂いたらいいなー、と思っています。

 Sansanの皆様、登壇者の皆様、参加者の皆様、ありがとうございましたー

【年末恒例】UnityLT大会でLTしたり運営したりしました!【2016】 #unity_lt

f:id:MRStar:20161212153905j:plain

 2016/12/11(土)にニフティさんで開催させていただUnity部主催のLT大会『【年末だよ】Unity お・と・な のLT大会 2016【ポロりしてもいいのよ】』で登壇させていただいたり、運営させていただいたりしました。

Unity お・と・な のLT大会

 今回で4回目となるUnityユーザーグループ・Unity部の年末恒例イベント、『Unity お・と・な のLT大会』。

 「Unityに関連する」というふわっとしたテーマで発表制限時間もわりと緩めなLT大会です。

 技術ガチネタ、面白ネタ、Tipsネタ、ここでしか言えないネタ、響く人にはめちゃめちゃ響くネタなどなど、登壇者が自由に喋りまくります。

 毎年お酒を出させていただき、時期もあってかちょっとした忘年会的なイベントになっています。

 会場は今年もニフティ様のご提供です。毎年ありがとうございます!

私のLT「TileMapEditorはいいぞ!」

 私は「TileMapEditorはいいぞ!」と題して、発表させていただきました。

 目標は二点

  • TileMapEditorを知ってもらう
  • TileMapEditorにフィードバックしてくれそうな人をつくる

 です。

 第一の目標のために、くどいくらい「TileMapEditorはいいぞ!」というスライドを入れました。

 第二の目標に関して、「まずは使ってみよう!」って方が出てくれたらうれしいです。そしてよかったらフィードバックしましょ!

 さて、同じ内容でUnityアドベントカレンダーも書きました。デモ部分の操作の部分を文字に起こしたり、デモの動作をGIFアニメーションで張ったりした記事です。併せてご覧ください。

 「TileMapEditorはいいぞ!(Qiita記事)

初めてのデモ

 今回のLTで初めてデモを含む発表をやりました。

 頻繁にLTやショートセッションなどをしているのですが、ピンチに弱いので、イレギュラーなことが起こりやすいデモを今までずっと避けてきました。

 今回のテーマ的にデモを見せたほうが伝わるし、いつまでたっても苦手だから避けるっていうのもあれなのデモにチャレンジしてみました。

 デモ、難しいですね。

 それぞれの操作・やったことに意図はあったのですが、壇上に立ってお客さんの反応を見ると、うまく機能した点も、そうでない点も多くありました。修業ですね!

他の方のLT

 イベントの性質上、後日資料を公開されない(できない)方が多いこのイベント。そんな中でも私含めて数名の登壇者の方は、資料を公開されているので興味がある方はぜひ見てください!

 登壇者の皆さん、自分が好きなものを紹介して「XXXXはいいぞ!」って言ったり、他の参加者の方を自分の「沼」に引きずり込もうと素敵なLTをされました。

 「内緒にしてね」というお話は、僕らの胸の中に秘めておきましょう!いいですね!?

 個人的に一番(熱い気持ちになった的な意味で)面白かったのは「」製作者の時村(@rodostw)さんの、「心の中のスネ吉兄さん」のお話し。

 個人的に一番(勉強になった的な意味で)面白かったのは、やなせさんの研究に基づいたVRの話。

 個人的に一番(ゲラゲラ笑った的な意味で)面白かったのは、「みんな以外とネタに走るんですね」って言っときながら、自分も技術力でPPAPをした@notargsさんの話。

さいごに

 これが終わると一気に年末感が高まるこのイベント、2016年もあっという間でしたね。

 それでは、また来年2017年の年末にお・と・なのLT大会ができることを祈りつつ!

おまけ1

 ちなみにマイクロソフト様には、「お酒が出るので20歳以上の」というとても大人なご紹介をしていただきました。ありがとうございます。

おまけ2

 最近のマイブーム。勉強会が終わった後、秋葉原日高屋で一人反省会。

 「あそこは受けた」とか、「ああいえばもっとうまく伝わったとか」、ラーメン・チャーハン・サワーを飲み食いしながら反省しています。

JJUG_CCC 2016 Fallに参加しました! #jjug_ccc

はじめに

 2016/12/3(土)ベルサール新宿グランドで開催されたJavaの超大規模ユーザーコミュニティイベント JJUG CCC 2016に参加しました。

 すべてではありませんが、聞いたセッションのツイートと感想・メモ書きです。

Javaの型システム再入門 ~オブジェクト指向からジェネリクスまで~

 ジェネリクスとかセミコロンレスで有名ななぎせさんのセッション。

 スライドのタイトルに「ヘル」とか書いてあるし、初心者向けではなく、中級者向けのセッションでした!

 まずは、オブジェクト指向の話からJavaの起源、

 リスコフの置換原則の話がでました。

 配列の話、ジェネリクス、変性の話が続き、

 話は再帰ジェネリクスや「new T()したい」という話へ

 やっぱり最後はhell

 三つのTや変性は、しっかり理解したいですね。

 セッションが終わった際に、次のような声が。

受験勉強経験も留学経験もない日本人がJavaOneで英語で講演できるようになるまで

 超、大人気!!!

 外資の企業でも長らく働かれていたゆーすけさん。

 転職もそうですが、イベントで英語セッションにガンガンチャレンジしたそうです。

 楽な道も必勝法もなく、結局努力は必要ですよね。

 すごいですね!

 いきなりは大変そうですが、まず小さな一歩を頑張ってみようかと思いました。

JVM言語とJava、切っても切れないその関係

 ちょいちょい小ネタで笑いを取りながらJVMJVM言語の話をされた@yy_yankさん。

 歴史や背景を説明されました。

 ハッシュタグ #ccc_l6には、それぞれの言語に詳しい人やJVMに詳しい方たちから、さらなる補足情報や追加情報が。

 知見あふれます。

 個人的には、Kotlinを勤め先で使っているので「JVM言語って何?」ってのを説明するとき、この発表資料を紹介したいと思います。

 最後に、ここは大事にしていきたいですね。

Featherweight JavaやGroovyの漸進的型付けについて

 まず、Featherweight Javaのお話をされて、

 Groovyでの実例(それに近いことを@TypeCheckや@CompileStatickやっているよね)という話だったと思います。

 (ただ勘違いしている可能性があります。その際はコメントいただけるとうれしいです。)

 正直力不足でした。特にFeatherweight Javaと漸進的型付けの説明、簡約とかの部分は。

 だけど、こういうことがあるというのを把握しているのも一つのレベルアップ。

さいごに

 大観衆の中、25分・50分セッションやハンズオンをされた登壇者の皆様、とても勉強になりました。ありがとうございました。

 また超大規模イベントの運営をされてJJUG スタッフのみなさん、ありがとうございました。お疲れ様でしたー。

 毎回JJUG_CCCは、豪華なセッションが並列で進むので、「このセッションとこのセッションどっちに行こうか?」と悩みます。

 とくに最後のセッション、キャリアのセッションはとても興味があったのですが。。。

 またの機会に。

 @各位、頑張ろうな!!!

デジモンアドベンチャーtriと5周年記念日と

 先日、デジモンアドベンチャーtri 第三章「告白」を劇場で見てきました。

  映画は無音のBGMと真っ黒な背景に次の文字で始まりました。

 「和田光司さんと水谷優子さんに捧ぐ」


 『Butter-Fly』をはじめ、デジモンシリーズの主題歌を歌われていた和田光司さん。

 ちびまる子ちゃんのお姉ちゃん役やミニーマウスの声を演じ、デジモンではテレビシリーズの「武之内空」を演じられていた水谷優子さん。

 「和田光司さんと水谷優子さんに捧ぐ」を見た瞬間、和田さんの訃報を知った時の悲しい気持ちが再度こみ上げてきました。

 とても悲しかったです。


 きっと僕は、友人たちと行くカラオケでは今までと同じように、僕は『Butter-Fly』を歌うと思います。

 きっと僕は、水谷さんでない方が演じた「お姉ちゃん」や「ミニーマウス」の声を聴くたびに違和感を感じると思います。

 和田さんは歌手として、水谷さんは声優として、昭和に生まれ平成に育った僕と僕の同世代にたくさんの思い出を与えてくれました。

 死んでも歌った曲や演じたキャラクターの思い出が残る、歌手の方や声優の方はすごいと思います。

 ただ和田さんの新たな曲を聞けないことや、水谷さんが演じる新たなお話しを見れないのはやはりとても残念です。


 僕は今日、プログラマとして働き始めて5年目になりました。

 お二人のように僕が死んでも残り続ける、そんな何かを作りたい。そう思うようになりました。

 いつまでかかるかわかりませんが、5年、10年、元気な限り頑張ろうと思います。


 和田光司さんと水谷優子さんのご冥福を心よりお祈りいたします。


 『Butter-Fly』が好きな方、よかったら和田さんの「re-fly」も聴いてみてください。何かうまくいかないことにぶち当たったとき、もう一回頑張ろうっていう勇気をもらえる素敵な曲です。

 さぁ、ゴミ箱を飛び越えて。

Kotlin Internal 勉強会で、「KotlinとJavaとnullのライトな話」で登壇しました!

 2016/11/26(土)にドワンゴさんで開催された、「Kotlin Internal 勉強会」で「KotlinとJavaとnullのライトな話」というタイトルで登壇しました。

 イベントページは、こちら

 発表資料はこちら。

自分のセッション振り返り

 「なんとなくはわかってるつもり。だけど一歩踏み込むと、あれどうなるんだっけ?」

 「雰囲気は把握しているけど、あれここって内部どうなるんだっけ?」

 って感じの内容を狙って、Bytecode -> Decompileの結果を示したり、関連コンパイラのコードを示したりしつつ、JavaのコードをKotlinから呼び出した場合のPlatform Typeの話をしました。

 とてもありがたいことに、「面白かった」という感想をTwitterで頂きました。素直に嬉しいです。

 今回、多すぎない参加者数でかつ時間もある程度余裕があったので「質問や疑問があったらどんどんしてください」ってセッション中に宣言したのですが、複数の方から疑問や質問をいただきました。ありがとうございましたー。

 もうまさに「そこ、疑問に思ってほしいところ」ドンピシャで質問していただいりして、(「ここって実はこうなるよね」って解説があとから入る)これまた嬉しかったです。

 「そうなっているのは、こういう背景があると思う」などの背景や関連事項も教えていただきました。発表した私自身が、発表中も一番学びがあったセッションでした。ありがとうございます。

 懇親会も含めて、いろいろディスカッションでき、とてもおもしろかったです。

登壇準備とか

 実は、前日に登壇申し込みして大慌てで資料作りました。

 できれば、もう少しKotlinのコンパイラのコードを深く潜って理解したかったです。

 あとギリギリで資料作るの、やめよう。本当にやめよう。

他の方のセッションとか

 こんな感じでTwitter上も質問させていただきました。

 やんくさんのセッション、今回コンパイラのコードを読む前に読みたかった。

 kmizuさんの追加セッションも非常に知見が!

さいごに

 20人程度で時間に発表時間が30分くらいのセッション。22・23分くらいで資料作って、途中でガンガン質問をもらったり、ディスカッションどんどんやるセッションの方が楽しい気がしてきた。

 あと、懇親会では、KotlinはもちろんJavaScala、GroovyとかのJVM言語だけじゃなくて、C#とかF#とかRustとかCとかC++とかGoとかたくさん言語出てきた。

 Xamarinの話も出てきた。