僕はここだ!

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

#Unite2016Tokyo に参加してきた!

 2016年4月3日(日)、4日(月)、5日(火)に開催されたUnite 2016 Tokyo参加レポートです。

f:id:MRStar:20160410171242j:plain

感想

  • 2D Experimental Preview超フィードバック送る!
  • 分析・課金・Cloud Build・Collaborateなどなど各種Unity Services試したい!
  • S席チケットよかった!ガンガン活用した!来年もやってほしい!
  • 懇親会よかった!Microsoft様ありがとうございました。来年はもっと中の人と英語でもっと話したい!来年もやってほしい!
  • トレーニングデイ、UI側でTAとして参加した!TAとして学び多かった!
  • トレーニングデイ、Unity Services側も気になる!
  • お金たくさん使ったけど、すげぇいいお金の使い方できたと思う!

よかったセッション5選

心にぐっときた!

 Unity部でもいつもお世話になっている@Takaaki_Ichijoさんのセッション。

  • 「個人開発ゲームは、9割が完成しない」
  • 「1日20分だけでも作業を積む。」
  • 「タイトルを覚えてもらえなくても、ゲームを覚えてくれる」
  • 「あなたの興味が一番のソース」
  • 「Not for youの精神」

 等々。なるほどと思ったり、考えさせられたり、心にぐっとくるフレーズが多数。

 自分にはとてもありがたいセッションでした。

はやく機能に触りたくなった!

  • 『ビルディング・2Dワールド In Unity ~2D機能のあれやこれや~』
  • 2日目 14:00 - 14:40 ROOM1
  • 資料 : なし

 今後リリース予定の機能や最近リリースした機能を紹介するセッションの中で、一番わくわくしたのがこのセッション。タイルマップエディタやCapsule Collider 2Dなど、追加予定の2D機能をライブコーディング・ライブデモで紹介されました。

 上記のツイートのあたりとかは、特にテンションが上がりました!

 2D Experimental Previewというものが予定されているそうです。Unity 5.4βとは別の流れで配布され、プロアカウント不要、メールアドレスなどの登録不要で試すことができるようです。 楽しみですね。こちらで、フィードバックを送ってほしいとのことでしたので、ガンガン送りましょう!

 ライブコーディング・ライブデモだったため、残念ながら資料はありません、動画の公開が楽しみですね。

来年もぜひまたやってほしい!

 セッション参加者が、UnityのR&DディレクターのAlex Leanさんはじめ、Unityの中の人たちに質問をどんどんぶつけたこのセッション。

 質問したい人は会場前方のマイク前に並び、早いもの順で質問していきました。

 私はセッション開始前、「オープンディスカッション・質問形式なら前の席の方がいいだろうな」と思いS席チケットを購入していました。その作戦が成功し、一番初めに質問をすることができました。やったね!

 ちなみに質問内容は「C# 7について。」

 あと、最初に質問した3名にはプレゼントがもらえました。ゲットしました!Unityちゃんフィギア。やったね。

 ぜひ来年もやっていただきたいです。

企業セッションが全部こんな感じだったらいいな!

 正直なところ、開発事例系のセッションってあまり好きではありませんでした。

  • その会社であれば適用できるけど、他社では使えないノウハウや方法を話されても意味がない
  • 自社で作ったライブラリのいいところをガンガン紹介するけれど、それを公開したりはしないので意味がない

 ということがあるからです。

 しかし今回のセッションは、上記のようなこともなくとても有意義なセッションでした。

 セッションもよかったですが、ブース展示も非常に素敵でした。展示ブースでは、PC用に出力した実行ファイルの展示ではなく、プロジェクトをエディタで開いた状態で展示をされていました。また、とても丁寧に質問にも答えていただきました。

質問と懇親会も丁寧に答えてくれてありがとうございました!

 登壇者のおひとりのIanさんは質問コーナーでも懇親会でも、とても丁寧に対応していただきました。ありがとうございました。

S席チケット

 S席チケットは、1セッションごと500円で

  • 公演開始前に並ばず、確実に入れる
  • 公演開始前の休憩時間に、S席ラウンジで確実に座ることができてドリンクや軽食をいただける
  • 最前列でゆったり見れる(S席自体が満席にならず隣が空席になることも多く、ゆったり座れたセッションが多かった)

 というメリットがある素敵なチケットです!

 ドリンクや軽食はこんな感じでした!

 多くの人が参加されるUnite。大人気セッションは立ち見になったりする場合もあります。また、次のセッション待ちの大行列に一日中並ぶのは非常に疲れます。

 S席のシステムはとてもすてきだと思いました。来年もぜひやって欲しいです。

 (ヒルトン東京お台場の人に軽食やドリンクをサーブされるすんごい貴重な経験もできたし!)

 私は以下の8セッション、計4000円課金しました。いい買い物だった!

 1日目 4月4日(月)

  • 13:30 - 14:10 ROOM1 モバイル端末向けのUnityアプリケーションの最適化実践テクニック
  • 15:30 - 16:10 ROOM2 Unity CollaborateとUnity Cloud Buildを使って開発サイクルを高速化!
  • 18:00 - 18:40 ROOM1 学校では教えてくれないアセットバンドルのしくみ
  • 19:90 - 19:40 ROOM1 Unity上級者を目指すなら知っておくべきデバッグテクニック集

 2日目 4月5日(火)

  • 13:00 - 13:40 ROOM1 Unity App Purchasingを使った実践マネタイズ講座
  • 14:00 - 14:40 ROOM1 ビルディング・2Dワールド In Unity ~2D機能のあれやこれや~
  • 17:00 - 17:40 ROOM2 Unityを使った個人ゲーム開発における「収益化」の現状と未来
  • 19:00 - 19:40 ROOM2 Unityのロードマップと来場者の皆様によるオープンディスカッション

懇親会

 Unite Party Sponsored by Microsoft

 懇親会!Unityイベントではおなじみ3種のUnityビール、そしてヒルトン東京お台場の料理!料金3500円じゃたぶん全く足りないだろうから、Microsoft様ありがとうございました!!!

 Unite開始前に目標の一つに、「懇親会で登壇者のUnityの中の人と英語で話してみる」を挙げていました。

 実際、「モバイル端末向けのUnityアプリケーションの最適化実践テクニック」で登壇されたIanさんに話しかけることができました。セション後でのQ&Aでも丁寧に答えていただいたIanさん、つたない私の英語にとても丁寧に答えていただきとても感謝しています。来年はもっと流暢に深いディスカッションをできるように、そしてジョークの一つでも言えるように英語力をあげておきたいです。

購入したグッズ

  • Unityプレミアムパーカー(デバッググレー) 7000円
  • ユニティちゃんTシャツ Type Project.C.K. 3000円
  • Unityモバイルバッテリー 3200mAh Type Gradation 3000円

 計13000円!

 初日トレーニングデイで買って、セッションデイ2日間ともパーカーを着て参加しました。またモバイルバッテリーはイベント中、バッチリ活躍してくれました。

 結構お金を使ったけれど後悔はしていない!

お土産

 Unityロゴのいい感じのTシャツ!まさにこんな感じのTシャツがほしかったです!

 あと、AimingさんのKit Kat!ありがとうございます!

PlayStation VR初体験!

 大人気のPlayStation VRの体験展示。

 セッションデイ1日目はあっという間に体験整理券の配布が終了してしまいました。

 セッションデイ2日目、整理券をゲットするべく頑張って早起きしました。(近くの大江戸温泉物語に泊まりました)

 当日は8:30には会場入りしました。早起きしたかいあって、午前中の体験チケットをゲットすることができました。

 夢中になってしまって、もっと「ここがこーで、あーで」みたいなことを気にかけるべきだったorz

参加したセッション

1日目 4月4日(月)

  • 13:30 - 14:10 ROOM1 モバイル端末向けのUnityアプリケーションの最適化実践テクニック
  • 14:30 - 15:10 ROOM1 Unityグラフィックス最新機能ガイド
  • 15:30 - 16:10 ROOM2 Unity CollaborateとUnity Cloud Buildを使って開発サイクルを高速化!

休憩

  • 17:00 - 17:40 ROOM2 Unity x PlayStation@VR コンテンツを作ってリリースするまでのお話
  • 18:00 - 18:40 ROOM1 学校では教えてくれないアセットバンドルのしくみ
  • 19:90 - 19:40 ROOM1 Unity上級者を目指すなら知っておくべきデバッグテクニック集

2日目 4月5日(火)

  • 10:30 - 11:10 ROOM2 Unity5を使った「いけにえと雪のセツナ」の作り方

休憩

  • 13:00 - 13:40 ROOM1 Unity App Purchasingを使った実践マネタイズ講座
  • 14:00 - 14:40 ROOM1 ビルディング・2Dワールド In Unity ~2D機能のあれやこれや~
  • 15:00 - 15:40 ROOM1 アーティストもプログラマもウェルカム!新ランタイムエディタのご紹介

休憩

  • 17:00 - 17:40 ROOM2 Unityを使った個人ゲーム開発における「収益化」の現状と未来
  • 17:00 - 17:40 ROOM2 Unity Multiplayerによるネットワーク機能実装
  • 19:00 - 19:40 ROOM2 Unityのロードマップと来場者の皆様によるオープンディスカッション

TA参加したトレーニングデイ

 2016年4月3日(日)はトレーニングデイでした。  私はUI側のTAとして参加しました。

 TAとして非常に学びが多い一日でした。

 この件についてはまた後日まとめたいと思います。

写真

Microfost MVP落ちた

 2016年1月申し込みの4月受賞のMicrosoft MVPの選考に応募したのですが、先日落選の旨のメールが届きました。

 「だめでもともと、申し込むだけ申し込んでみよう」と思って応募したのですが、落選はショックでした。悔しいです。思っていた以上に悔しいです。

 もっと腕を磨き、技術力をつけ、価値を提供し、いづれ再応募したいと思います。

 悔しい!

「第2回Kotlin勉強会 @ Sansan」に参加してきた!

 Kotlin1.0のリリースを記念しSansan様で2016/03/24に開催された、「第2回Kotlin勉強会 @ Sansan」の参加レポートです。

概要

 DroidoKaigi 2016でKotlin+Androidをテーマに発表された、@boohbahさんや@ngsw_taroさんなど、計7名の方がLTをされました。

 ちなみにSansan様でのKotlin勉強会は2回目で、1回目は「AndroidでKotlin勉強会 @ Sansan」と題して、Androidメインで開催されました。

 今回第2回はAndroidにこだわらず、Kotlinオールジャンルでの開催となりました。

ビールで乾杯

 無料勉強会だったのですが参加者にビールとおつまみがふるまわれました。Sansan様、Coors様ご馳走様です。お酒の味をうまくは語れないのですが、Coors様のビールは、他のビールとぜんぜん違う香りでとてもおいしかったです!

f:id:MRStar:20160325180518j:plain

 Kotlinエバンジェリスト@ngsw_taroさんの乾杯でイベント開始です!

f:id:MRStar:20160325180439j:plain

LT

 次の7名の方がLTをされました。

その1 KotlinでPhantom Type

  • 感想 : 「ジェネリクな型の型パラメータを具象化して、それに拡張関数を定義するの、なんかすごいのできそう!」
  • 資料 : KotlinでPhantom Type

 1人目は、DoroidKaigiでも登壇され、この勉強会の主催者でもある@boohbahさんが登壇されました。

f:id:MRStar:20160324194836j:plain

 Phantom Typeとは何でしょう?

 下記のコードは@boohbahさんのスライド中のコードを元に、一部変数名等を変えたものです。

package example

import example.State.Ready
import example.State.NotReady

sealed class State {
    class NotReady : State()
    class Ready : State() // これがPhantomタイプとのことです
}

data class Data<T : State>(val value: Int) // 型パラメータは実行時には消えてる。コンパイル時では使える。

fun Data<NotReady>.ready() = Data<Ready>(value)
fun Data<Ready>.print() = print("I'm ready.")

fun main(args: Array<String>) {
    val readyData = Data<Ready>(0)
    val notReadyData = Data<NotReady>(0)
    
    readyData.print()
    // notReadyData.print() コンパイルエラー

    // readyData.ready() コンパイルエラー
    notReadyData.ready()
}

 上記のコードでは、Data<NotReady>型のみにreadyという拡張関数を、Data<Ready>型のみにsayという拡張関数を定義しています。コンパイル時では型引数の情報が残っているため、それぞれのData<NotReady>でしかreadyを呼べませんし、Data<Ready>でしかsayを呼べません。

 この他にも、SQL文を出力するDSLの例なども紹介されていました。

 実はfun Iterable<Int>.sum(): Intfun Array<out Double>.average(): Doubleなど、型引数が具象型になっているジェネリク型の拡張関数は、kotlin.stdlibの中にもあります。

 LTで発表されているような使い方をみると、いろいろ面白いことができそうですね。

その2 Kotlin学習とライブラリ作成

 Androidアプリ開発者のみなさんはご存知、お二人目の@sys1yagiさんは「Kotlin学習とライブラリ作成」というタイトルでご自身がつくられたkmockitoというライブラリの開発の話をされました。

  • Kotlinの文法は基本抑えたけどどう使うのかなーって人
  • なにか既存のJavaのライブラリを拡張したい人
  • Kotlin勉強したいけど、資料がAndroidの知識前提だから辛いよ!って人

 は、とても参考になると思います!

 トピックスは次のような感じです。

  • トップレベルに(クラスの中でなく名前空間下に)拡張関数
  • inlineとreifiedで型パラメータを扱う
  • 拡張プロパティをうまく使う(メソッド呼び出しの()も省略できる)
  • 多重宣言を活用する

 ぜひコードも見てみましょう。githubこちら

 文法を学ぶだけでなく、実際にライブラリを書いてみることでそれを血肉とすることはとても大切だと思います。

 業務や本番ではなかなか投入できなくても、まずライブラリで試すというの、大切ですね。

f:id:MRStar:20160325180426j:plain

 ところで、「isとかwhenとか、メソッド名がKotlinの予約語やキーワードとかぶる」というのにみなさん遭遇しますよね?この後の@ngsw_taroさんでも、これがまた出てきます。

その3 Kotlinにお触り

 Kotlin歴数時間の@operandoOSさん。LTの冒頭で

 「僕はKotlinが大っ嫌い」

 というスライドに驚き

 「でした!!」

 という次のページのスライドに安堵しました。

f:id:MRStar:20160325180232j:plain

 なぜ嫌いだったのが非常に気になったのですが、特に理由はないそうです。

 IDEAやAndroidStudioでKotlinを書いている人がほとんどだと思っています。(Eclipseもほとんどいませんよね?)。@operandoOSさんはatomで書いてみたそうです。

 多くのみなさんが、Kotlinのプロジェクトの設定は、GradleでやるかIDEA(or AndroidStudio)がよしなにしてくれる方法を使っていると思っていました。またGroovyを初めてとするJVM言語と同様にSDKMANを使ってインストールできるのも知っていました。

 brewでインストールして使う、ということもできるのですね。なるほど。

その4 3分で作る Kotlin Friendly な API

すでにKotlinを実プロダクトで採用されていて、keninというテキストバリデーションツールを作られている@kikuchyさんの発表です。

 この一句に全てが詰められているLTですね。

f:id:MRStar:20160325180206j:plain

 kenin(Github)JavaからKotlinで書き換え、非常に短く簡潔になる過程が説明されています。

 次のKotlinの文法を活用しているそうです。

  • 拡張関数
  • ()の省略
  • thisの省略
  • レシーバ指定関数
  • 中置関数

 こちらも「Javaでライブラリを作っていたけどKotlinで書きたい」、「なんかKotlinっぽい書き方ができない」という時に、ぜひ読むといいと思います。

その5 JACK & JILL & KOTLIN もしくは「Kotlinはこの先生きのこることができるか」

 Kotlin歴7日の@dageziさんは、「Jack & Jill」とJava8とKotlinの話をされました。

 「JACK & JILL」を用いることで、Androidでもラムダ式が使えるようになるそうです。(最新のAndroidでなくても!)しかし残念ながら、StreamクラスやOptionクラスが使えるようになるわけではないそうです。

 また、INVOKEDYNAMIC (INDY)の話やinline修飾子の話しもされました。

 java8と比較した際のKotlinの良さって、関数リテラルだけじゃないですしね。Kotlinはいらない子にならないと思っています。

 (個人的にはJavaは、7から8の際に拡張関数を採用しなかったのがでかいと思っています。)

f:id:MRStar:20160325180133j:plain

その6 khronos

  • 感想 : 「khronos、Kotlinで時間を扱うときは使いたい!あと、名前超いい」
  • 資料 : khronos
  • khronos(github)

 @hotchemiさんは「khronos」と題して、ご自身が作られたKotlin製の時刻を扱うライブラリについて発表されました。

f:id:MRStar:20160325214110j:plain

 Javaの時刻・日付を司るCalenderクラスやDateクラスを使うコードに対して、今まで扱いずらい・読みにくいと思ったことがある方も多いのではないでしょうか?

 khronosは

という他のプログラミング言語のライブラリにインスパイアされた、時刻を扱うKotin製のライブラリだそうです。

  • オペレーターのオーバーロード
  • 拡張関数
  • 拡張プロパティ
  • 名前付き引数呼び出し、デフォルト引数
  • Range

 などのKotlinの言語機能を用いて、時刻に対して扱いやすく読みやすいコードを記述できるAPIを提供しています。

 khronosは、JCenterにあがっているとのことです。ちなみに登壇(2016/03/24(木))時点では、できたてほやほやだとか。

 ところで、「khronos」という名前、とても素敵な名前だと思います。

  • KotlinだからKがついている
  • 時刻を扱う名前だとすぐ伝わる
  • かっこいい

 こんなことを懇親会で、@ngsw_taroさんとも話していました。

 ライブラリの名前は重要ですね。ライブラリの命名スキルは、メソッド名・クラス名の命名スキルのそれとはまた違うものスキルかもしれません。(他と区別かできるとか、一発で覚えられるとか。)

 今すぐ、khronos(github)のコード読みましょう!

その7 knitで学ぶKotlin入門の次

 最後は@ngsw_taroさん。いつも「自称エバンジェリスト」って自己紹介されていましたが、今回は「黙認エバンジェリスト」って自己紹介されていましたね!

 @ngsw_taroさんが開発された、JUnitの拡張ライブラリ、knitを紹介しつつ、Kotlinのいいところを紹介されました。knitニットと読むそうです。

 Kotlinではisはキーワードになっています。そこで、Javaで書かれたライブラリのメソッド名でisというものがあったら、クォートで囲わないと呼び出すことができません。

KotlinでJUnitassertThatを呼び出す場合、次のようにする必要があります。

assertThat(1 + 2, `is`(3))

 Knitを用いることで、次のように記述できるようになります。

(1 + 2).should be 3

 このようにknitを使うことで、テストをDSLライクに記述できるようになります。

 また、コード自体もとても参考になると思います。とくにKotlinを用いて既存のライブラリやJavaライブラリをDSL形式で呼び出せるように拡張したいときですね。knitのコード自体は現在(2016/3/24次点)では、たったの5ファイル(1個ずつも小さい)で構成されていますが、学べるポイントはたくさんあると思います!

f:id:MRStar:20160325220315j:plain

 話はがらっと変わって後半は、実コードでは絶対に書かない、変態的なコードを紹介されました。ご本人も懇親会でこんな読みにくいコード絶対書かないとおっしゃっていました。Kotlinの文法を学ぶ際には参考になりそうですね。

 僕は、まだ読めてないです。

懇親会の様子

 @boohbahさんの音頭で乾杯!

 f:id:MRStar:20160325180401j:plain

 おいしいビールとおつまみを、Sansan様、Coors様ありがとうございました。

 f:id:MRStar:20160325180547j:plain

 懇親会、自分自身は、「JACK & JILL」のことを教えていただいたり、 Knitって名前かわいいよね、とかKhronosって名前かっこいいよね、とか話したりと非常に楽しかったです。

 個人的にショックだったのは、Kollectionってライブラリを作っているのですが、『それだと口頭で話しているとき、「コレクションと区別つかないからわかりづらくない?」』と、@ngsw_taroさんに突っ込まれたことです。確かに...

 盛り上がっている懇親会の様子!

 f:id:MRStar:20160325180059j:plain

まとめ

 「Kotlin、なんとなく文法はわかった。けどうまくKotlinっぽいコードが書けない。あと、ほかの人が書いたライブラリはなんでこう書けるかわかんない。」そんな人は、今回の資料を片手に、今回紹介されているライブラリのコードを読みましょう。

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

 もしKotlin勉強会 at Sansanの3回目、あったらまたお邪魔したいです。

おまけ

「【プチLT】Unityの新機能で遊ぶ会【もくもく】」を開催しました

【プチLT】Unityの新機能で遊ぶ会【もくもく】を開催しました。 その開催レポートです。

f:id:MRStar:20160321150731j:plain

概要

 2016/03/20(日)にStudio Geeks様にて、Unity部主催の【プチLT】Unityの新機能で遊ぶ会【もくもく】を開催しました。

 2015年の年末に多くの機能を伴ってリリースされたUnity5.3、そしてつい最近2016年3月に発表されたUnity5.4 public preview。Unity5.0リリース以降も、Unityはバージョンアップを重ねるごとに多くの機能が加わっています。しかし、なかなかそれらに触れない人も多いのではないでしょうか。私もその一人です。

 そこでUnity部では

  • Unity5.x系で加わった新機能を参加者みんなでもくもくする
  • もくもくして学んだ知見・成果をLTで発表する

 という趣旨で、「【プチLT】Unityの新機能で遊ぶ会【もくもく】」という勉強会を開催しました。

 ちなみに大体1年くらい前に同様のイベントをUnity部で開催しています。

 Studio Geeks様の素敵な会場で、お菓子を食べながら、ジュースを飲みながらのもくもく会、参加者の皆さまは集中してもくもくできたのでしたらうれしいです。

LTコーナー

計6(+1)名の方にLTや知見の共有をしていただきました。

f:id:MRStar:20160321150637j:plain

y.ikwd(@ivoryfunc)さん

 いけてるスマホアプリのUIをUnityでつくること、そして引力・斥力を表現するコンポーネントのLTをしてくださいました。

 UniteのUIハンズオンもとても楽しみです。

殺意駆動開発(@toru_inoue)さん

 AssetGraphとShaderKitchenのLTをしてくださいました。実際に動くunityPackageをDLできるのは素敵ですね。

 ブログ:UnityMokuMoku 行った

時村良平(@rodostw)さん

 「プロジェクトを開く際に、Unityのバージョンが違うと確認ダイアログがでる」ということ、そしてコルーチンの入れ子でStartCorotutineメソッドなしでも子コルーチンの処理が実行できるようになったことをLTされました。MonoBehaviourクラスでなくても子コルーチン処理が記述できるのでとても便利になりましたね。

 ブログ:Unity5.3から、コルーチン内でコルーチンを呼び出しやすくなった

とりすーぷ(@toRisouP)さん

 GGJでの制作方法や設計・指針についてLTしてくださいました。LTでは試しプレイも行われました!

Ichijo #NotGDC(@Takaaki_Ichijo)さん

 ご自身の今後のエバンジェリスト活動に向けUnity関連のアンケートLTを行われました。次回その結果を受けてのLTや発表をしてくださるそうなので、とても楽しみです。

 またUniteでの登壇もされるそうでこちらもとても楽しみです。

けーご(@kyusyukeigo)さん

 UnityにまつわるキュレーションサービスについてLTしていただきました。非常に便利そうです。とても楽しみです。

むろほし(@RyotaMurohoshi)

 自分です。クロージングトークもかねてLTをしました。後述します。

ザバ(ザバイオーネ)@z_zabaglioneさん

 新たに加わったUNITY_5_3_OR_NEWERシンボルについて共有してくださいました。ありがとうございます!

自分のLT

 Unity4.x系では次のようなコードをよく書いていたと思います。

public class CharacterBehaviour : MonoBehaviour
{
    [SerializeField] HpBar hpBarPrefab;

    HpBar hpBar;

    void Awake()
    {
        hpBar = Instantiate(hpBarPrefab) as HpBar;
    }
}

 Unity5.0とそれ以降では次のように書けます。

public class CharacterBehaviour : MonoBehaviour
{
    [SerializeField] HpBar hpBarPrefab;

    HpBar hpBar;

    void Awake()
    {
        hpBar = Instantiate(hpBarPrefab);
    }
}

 違うところに気が付きましたか?asが無くなりましたね。毎度プレファブからゲームオブジェクトを作成した際の面倒だったasやキャストがUnity5.0からは不要になりました!これはInstantiateメソッドジェネリックオーバーロードが加わったためです。

 また、

   hpBar = Instantiate(hpBarPrefab);

 は

   hpBar = Instantiate<HpBar>(hpBarPrefab);

 とも書けますが、冗長ですね。

 (っていう話は実はQiitaにもう書いてありました。Unity5.0からInstantiateメソッドにジェネリックなオーバーロードが加わった)

 意外と知らない方がいてLTしてよかったなって思いました。ここらへん、気づきにくいですよね。とくにUnity5.0とか5.3って多くの機能がでたからリリースノート読むの大変だったし。

 JSONや分析、アプリ内課金とか主要な目立つ機能以外にも

  • Vector2.downとかVector2.left
  • NUnitがUnityビルドインに
  • コルーチンの入れ子、StartCoroutine不要でIEnumerator
  • ログ周り強化
  • UnityEngine.Assertions名前空間

 などような機能も実は、変更・パワーアップしていましたね!

まとめ

 もくもく会参加者のみなさんが普段試せていない新機能に触り、知見を貯めることができたのであればうれしいです。

 Studio Geeks様、会場提供ありがとうございました。

 また、次回!

おまけ

ごめんなさい(1)

もくもく会は作業に集中するから、LT大会とか懇親会に比べてジュースはあまり飲まない。 あと、自分は人よりめっちゃ水分を飲む。 覚えた。

ごめんなさい(2)

カレンダー!!!!

各位

俺のもくもく会は終わった! 各位、もう一度張っておきますね。 一言感想でもいいですよ。

f:id:MRStar:20160321150731j:plain

【お誕生日】Kotlin Birthday Partyに参加しました【おめでとう!】

わくわくKotlin 誕生日会!

 2016年02月26日(金)に開催された、「【東京】Kotlin Birthday Party #jkug」に参加しました。

 会場は東京池袋の、サムライズム様。

 たくさんシールをもらえました。C#を長く書いている私としては、R#のロゴが嬉しかったです!

 JetBrainsのみなさまから日本のKotlinユーザー向けにお祝いのメッセージが!会場大盛り上がりでした!

 諸注意で@yusukeさんが「Kotlin好きな人〜?」と問いかけに、会場は大いに盛り上がります。そりゃ嫌いな人は誕生日会には来ませんね。

 一方で「Javaが好きな人〜?」という質問に対しては...お察しください。

LTしました!

 「【ハピバ】未来に備えたKotlin、大好きだぜ!【Kotlin 1.0】」と題してLTをしました。(資料はこちら)

 言語の破壊的な仕様変更についての話とか、Kotlinがリリース直前にした将来の破壊的な変更を減らすための破壊的な変更などについて話しました。

 LT内でも触れましたが私はC#erが好きです。最近C#はXamarinやUnityにより、Windowsだけでなく、MaciOSAndroidPlayStationやDSなど家庭用ゲーム機などいろいろなプラットフォームで活躍しています。

 現状Kotlinの主戦場はAndroidIntelliJプラグインなどかもしれませんが、5年後や10年後、C#のようにもっともっと活躍の場が広がることを祈っています。

他の方のLT

 他の方のLTはこちら!

 @boohbahさんの紹介されたClass Delegate、Groovyの@Delegateが同じような機能だと思うのでその利用例が参考になるかもしれません。

 @ngsw_taroさんは、マイルストーンごとの歴史を振り返り、Kotlinのテーマ「Pragmatic 実用的・実践的」を紹介されました。確かにKotlinはもっと違う姿があったかもしれません。「Ceylonの方がおもしろい」とか、「ずいぶん言語仕様がおちついた」というつぶやきも見かけたことがあります。そのような意見分かるのですが、Kotlinが選んだ「Javaとの親和性」と「Androidでの実用」というのは、一つの解として個人的には好きです。

 @yy_yamkさんは、「Kotlinあるある言いたい」と題して、飛び位入りLTをされました。「自信ない」とか言いつつ、会場の笑いをかっさらっていきました。Kotlinをがっつり使っている人だけでなく、Kotlinちょっとでも調べたことがある人なら「あるある」と感じることができるな〜と思いました。だれだよ、あのwiki書いたの...

 どうでもいいですが、@yy_yankさんも@ngsw_taroさんも、ラブライブご存知でないんですね。

本編、懇親会!

 誕生日会ということで、ケーキ!美味しかったです!

 乾杯の挨拶は、前回のSanSanさんの勉強会に引き続き、コットリーンでした!

 ビール美味しかった!

 懇親会、非常に楽しかったです。自分は仕事でKotlinを使っているわけではないのですが、仕事で導入する上での工夫や苦労話などをお聞きし、とてもおもしろかったです。それから、先日あったDroidKaigiではKotlinの2個のセッションは大人気だったようで、Kotlinの盛り上がりを感じました。

 また、来月にはもくもく会が二つも企画されているようですね。

 @ngsw_taro さん、 @yusuke さん、ビールとピザ、ごちそうさまでした。

 改めまして、Kotlin、お誕生日おめでとう!(ちなみに動画はTake2!)

@ngsw_taroさんとKotlin

 流行っている言語とか流行りそうな言語を学ぶんじゃなくて、好きな言語や使いたい言語を自分で流行らせるって、最高にかっこよくないですか?

 「就職に有利だから」とか「食いっぱぐれないから」っていう理由で言語を選ぶのは悪いことではないと思うし否定もしないですけど、どっちがカッコいいか、好きかっていったら、「好きな言語を流行らせる」です、自分は。

 もちろん言語だけじゃなくて、ライブラリとかツールもね。

 この誕生日会の主催者でKotlinの日本での発展に大きく貢献している、@ngsw_taroさん。Kotlinの実装がまだなくて、ドキュメントだけの時から、いろいろKotlinを勉強していたそうです。

『流行るかどうかわからない。 実際に仕事に役に立つかもわからない。 それでも好きだからやる。』

 だったのでしょうか?それとも

『Kotlinにものすごい可能性を感じ、投資する価値が絶対ある』

 と思われたのでしょうか?すごいですね。(聞けばよかったな)

 自分がKotlinを知ったきっかけは、@ngsw_taroさんがKotlin代表として出場された2013年秋のJJUG_CCCJVM言語のパネルディスカッションでした。Groovyが目当て見に行ったのですが、Kotlinにも大変惹かれました。その後、家で@ngsw_taroさんの作られたKotlin Advent Calendar 2012 (全部俺) を一気に見たのを覚えています。

 Kotlinを知るきっかけをつくってくれたこと、本当にありがとうございます。

 もちろん、@ngsw_taroさんだけでなく、@yy_yankさんをはじめKotlinの情報発信をされている方達やいつもJetBrainsのブログを翻訳されている@yusukeさんにも感謝しています。

 Kotlin 1.0のリリース、おめでとうございます。これからですね!

ラブライブとことりん

 @ngsw_taroさんや@yy_yankさんをはじめ、誕生日会に参加したみなさんはあまりラブライブをご存知ないようですね。

 ことりちゃんです。

 紅白歌合戦にも出場したラブライブ(μ's)ですが、当然最初期は今ほど人気があったわけではありません。まだ全然流行っていなかった最初期に開かれたイベントの最中、「ことり」を演じる「内田彩」さんは「ここに来た80人が絶対自慢できるようにしてみせるからね!」と宣言したそうです。ラブライブはその後、内田さんの宣言通りイベントに参加した80人が自慢できるくらい流行りましたね。内田さん、かっこいいですね。おっとこ前ですね!

 Kotlinをやっていると、「ことり」ちゃん、っていうキャラクターの名前を耳にされる方は結構いると思います。

 実はですね、「りん」ちゃんってキャラクターもいるんですよ。

 もしかしたら、「ことりんラジオ」とかあってもおかしくなかった!

 ついでに言うと、自分は海未ちゃん推しです。

 ちなみに@ngsw_taroさんからは、「誕生日会なのでネタ的なのがいいです〜ww」とTwitterで言われていました。実際にした話と、KotterKnifeの話とラブライブの話で、どれにしようか迷ったのは内緒。

まとめ

 Kotlin最高!

 素敵な誕生日会をありがとうございました!    ハピバ!Kotlin!

関連投稿

Kotlin Birthday Partyに行ってきた、あとLTしてきた #jkug - Javaプログラマーのはしくれダイアリー

Kotlin Birthday Party を開催したよ〜 #jkug - 算譜王におれはなる!!!!

【本編は】Hokuriku ComCamp 2016 powered by MVPsに参加しました【懇親会】

 2016年2月20日に行われた「Hokuriku ComCamp 2016 powered by MVPs」に参加しました。

 以下、イベントページより。

この度、石川県金沢市で、毎年恒例のマイクロソフトの技術に関する勉強会 ComCamp を開催します。 是非ご参加ください。 新社会人、第二新卒、学生さん大歓迎です。

 昨年度、「鰤しゃぶイベント」と合同開催だった本イベント。去年に引き続き今年もお邪魔させていただきました。

 今年も去年に続き、LTをさせて頂いたり、会場設営や配信・録画などをちょいちょいお手伝いさせていただきました。

 ハッシュタグ:#jccmvp,#hokunet

いざ金沢へ

 実家のある新潟県から会場の石川県金沢市に向かいました。

 新潟県が誇るMVPの@AILightさんと駅でお会いし、電車の中でC#についてなどいろいろお話しさせていただきました。

 北陸新幹線、最高です。

 高専サッカー部の北信越高専大会で訪れて以来、2度目の石川・金沢でした。

 だそうです。

毎年恒例のライブコーティングからイベントスタート

 イベントは毎年恒例のこちらのセッションからはじまりました。

 Hokuriku Com Camp恒例の@Fujiwoさん、@AILightさん、@xin9leさんのライブコーティング。このセッションでは撮影係も担当しました。三人の苦悶の表情を浮かべながらコーディングしている様子を撮影できて、とても満足です。きっとどこかにアップされると思います。

 今年のお題はテトリス。例年通り、今年も大盛り上がりのセッションでした。

西脇さんのお話しに引き込まれる

Microsoftエバンジェリスト@wakiさん(西脇さん)の「エンジニアよ興味を持ち続けろ! ドローンだってITだ」。

Microsofrtエバンジェリストのみなさんのお話しは、本当に引き込まれますね。

「好きなものは極めよう」

「かけたものの分、回収しよう」

という言葉がとても印象的でした。

普段自分から学びに行かない.NETやMS技術を知る

 自分は現在、趣味でC#、仕事ではTypeScriptを使っています。それに関連するもの以外のMSテクノロジにはなかなか触れる機会がありませんでした。

 例えば、Cortana。

 

 Windoes Server関連や.NETのCMSなど、本イベントのセッションでは、普段触れないのを知ることができる素敵なきっかけとなりました。

 それからこんな学びも。

 Getting Things Donw(GTD)だそうです。

他会場ではKotlinのLTがあったみたい

 全国各地で同時刻で開催されたCom Camp、他の会場の内容も気になります。個人的には名古屋会場のKotlinのLTが気になります。

美味しいお弁当とお菓子

 ところで、美味しいものを食べると幸せになりますね。

自分のLT

 LTをしました。

 C#の言語機能varについて、「「var禁止」禁止」というタイトルで、5分間お話しさせていただきました。

 うそです、ちょっと時間オーバーしました。ごめんなさい。

 会場で「var禁止」と言われたことがあるか尋ねたところ、お一人経験のある方がいらっしゃいました。後ほど、どのような状況で言われたのか聞いたら、クライアントから「コーティング規約をこうしろ」という指示があり、それを断ったり、是正できるような状況じゃなかったとのこと。つらたん。

 別の方で、コーディング規約を提示されvar禁止のように納得できないおかしい規約だった際、「その理由を問いただし、それがおかしい理由を納得させ、規約を変えさせたことがある」という方がいらっしゃいました。自分もそうなりたいです、はい。

 LT終わった後、「varで一時間話せる」という声も。LT終わった後から懇親会が楽しみでしょうがなくなります。

懇親会が本編でした

 懇親会の写真がないのは、集中してお話ししていたからです。

 「本編は懇親会」って言うと、怒る人もいるかもしれませんが割とまじめにそう思っています。セッションやLTの内容についてディスカッションしたり、日頃の技術的な悩みを相談したり、気になる話題を共有したり。

 本当に、大切で学びが多い場だと思います。

 なんか、自分の健康診断の結果を心配していただきすいません。技術的な不安の時は、「大丈夫だよ」って言ってくれた先輩方の目の色が良くない方に変わったので、まじめにケアします。

 いろいろありがとうございました。

 それから「キャバクラが苦手で楽しめそうにない」(1回しか行ったことないけど)という、アホなことに答えていただきありがとうございました。

 時間の都合で参加できない方もいらっしゃいましたので、また次回別の機会でお話ししたいです。

「全部varでよくね」というツッコミ

 懇親会で「全部varでよくね」と、たくさんツッコまれました。

 発表もしたのですが、自分がvarを使うべきとおもっているのは次のような場面です。

 これに対して、お一人「同じ意見です」と言ってくださる方がいて、嬉しく思っていました。

 ところが、「全部varでもいいんじゃね」とか「原則var多用するよ」ということを、多くのC#すごい勢のみなさんから、懇親会やTwitterでご意見をいただきました。

 もうね、代わる代わる突っ込まれましたよ。懇親会では「さっきちょうどその話ししてましたー」が2回くらいあって、とどめに@xin9leさんのこのツイート。

 現状は、「あぁ確かに全部varでいいや」という意見に変わりつつあります。自分の言葉で説明できるくらい噛み砕いて、またこれに関しては書きます。

 発表することでの学び。勉強会はやっぱり発表する方が、多く学べますね!

初めての宿泊一人旅

 慣れていないため、宿を取るのが遅くなってしまいました。直前だったため会場・懇親会会場から歩いて20分くらいかかる宿しか取れず、料金も高くなってしまいました。

 まぁ、そのおかげで日曜日は、たまたま入った店でうまい鯖食べることができたし、

 散歩も楽しめたので、

 今回はまぁ、いっかって感じです。

 次は早めに宿を予約します。

さいごに

 そのうち関西にも行きたいですね〜

 そして来年もHokuriku Com Camp、お邪魔したいです〜

 それでは、また来年北陸にいけることを祈りつつ。

【乾杯の音頭は】AndroidでKotlin勉強会@Sansanに参加した【こっとりーん!】

 2016年1月15日(金)、SanSanさんで行われたAndroidでKotlin勉強会 @ Sansanに参加してきました。

 ハッシュタグ#Kotlin_Sansan

メイン感想

  • Kotlin、Androidを相当大事にしているんだな~
  • Kotlin、Javaとの互換性を相当大事にしているんだな~
  • Kotlin、将来の破壊的な変更を少なくするために今がんばってるんだな~
  • Kotlin、Java8が来たくらいでいらない子にならないですよね。ね!
  • Kotlin、拡張関数すげぇ、たろーさんすげぇ

Kotlin、Androidを相当大事にしているんだな~

JetBrainsの中の人、yanさんのプレゼンより。動画の大体、14分前後あたり。

Androidアプリはメソッド数が65536を超えた時に問題が起きます。(参考)

Kotlinを使ってAndroidアプリを書いた際にこの問題を起こさないように、Kotlinのランタイムライブラリを対処をしたようです。ユニットテストのライブラリなどを移管したりして、ランタイムライブラリ自体のサイズを1MB、メソッド数を8000個くらいにしたそうです。

Kotlin Android Extensionなどのライブラリを用意するだけでなく、言語のランタイムライブラリレベルでAndroidにフォーカスしてる。すごいですね。

Kotlin、Javaとの互換性を相当大事にしているんだな~

Javaとの互換性というと、

JavaをKotlinから呼ぶ」

をどうしてもイメージしてしまいます。Kotlinはこれだけでなく、

「KotlinをJavaから呼ぶ」

ということを強く意識して設計されているんだなー、と思いました。

じゅんぺさんの「KotlinをJavaで理解する」という発表がとても参考になりました。(スライド動画)

Kotlin、将来の破壊的な変更を少なくするために今がんばってるんだな~

2015年の年内に出るかと思ったKotlin 1.0、まだ来てませんねー(2016年1月15日現在)

さて、「Kotlin 1.0がリリースされた後の破壊的な変更はどうなのか?」っていう質問を、JetBrainsの中の人、yanさんにさせていただきました。 (動画の22分30秒前後)

  • 本当にどうしても必要なら破壊的な変更を入れる
  • でもなるべく避けたいし、互換性を保ちたい
  • 将来的な破壊的な変更を避けるために今頑張っている
  • asyncなどの予約語もそれ関連
  • ↑の対処で1.0のリリースが遅れている

ざっとこんな回答をいただきました。

多少遅れるぐらいなら、将来の互換性のためにぜひとも慎重に検討を重ねてください! 頑張ってください!!!

Kotlin、Java8が来たくらいでいらない子にならないですよね。ね!

きりみんさんのプレゼン、俺たちのKotlinが AndroidにJava8が来たくらいで いらない子になるわけがない!

そうだー!そうだーーー!!!

Kotlin、拡張関数すげぇ、たろうさんすげぇ

Kotlinエバンジェリスト(自称)のたろうさん。 Kotlinの勉強会では基調講演をするから、包括的な内容を発表するたろうさん。 JJUG CCCなど、Kotlinがメインでない勉強会では「Kotlinとは何か」から説明しないといけないたろうさん。

「実はすごいマニアックな内容とか、つっこんだ深い内容とかを話したいんじゃないかな~?」ってひそかに思ってました。 今回の勉強会では、拡張関数に絞ってお話しされていました!気のせいか、僕にはとっても楽しそうに登壇されているように見えました。

とっても面白かったです。 また深く面白い内容の話を、たろうさんから聞きたいです。あと、今回の解説ブログも読みたい。

AndroidでKotlinフル活用プログラミング (スライド,動画)

その他の感想

  • 青山やべえ、おしゃれ
  • ビルの一階にあったカフェの店員さんが素敵だった
  • 立ち見が出るほど大人気
  • キャンセル待ちの対処って、勉強会を運営する立場としてどうすれば正解なんだろう?
  • 型推論のルールあたり要チェック 
  • Rx+Kotlinの実用的な例、RxとKotlinでAndroid書いている人にはとっても参考になりそう
  • ライブコーディングってむずかしいですよね
  • booleanのプロパティのJavaからの見え方、だれかまとめる?
  • Kotlinの勉強会の乾杯の音頭は、「こっとりーん」
  • 「絶対言ってくださいね」って言うのは不利じゃなくてちゃんという、「こっとりーん」

次回はKotlin 1.0の誕生日を祝う会でやるとのこと。 その時はLTしたいな。

発表一覧

関連

全体の様子をつかむには、

@yimajoさんのKotlin勉強会に参加した

がとってもいいです。

蛇足

勉強会の参加レポートは、その日のうちに仕上げないと書かない。 学んだ。

書きかけのJJUG_CCCの勉強会参加レポートのやつは、どっか行った。