僕はここだ!

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

Visual Studio 2017リリース記念勉強会 #csugjp #まどすた に参加しました。

 2017年3月11日(土)に開催されたVisual Studio 2017リリース記念勉強会 #csugjp #まどすた に参加しました。そのメモです。

csugjp.connpass.com

C# 7

  • C# 7.1、7.2など小数点リリースが決まり、マイルストーンも大体きまった
  • C# 7.0、コミニティ実装で入った機能もある
  • 「それXXXXXXを使えばコードすっきりするよ」という時、自分は言語機能の正式名称や共通言語を覚えてないことが多いなーと感じた
  • 他の言語でよくあるIndexedメソッドがTupleで可能。IEnumerableの拡張メソッドのZipみたいな、Tupleの拡張メソッドも
  • ValueTupleという構造体が裏側にいる。ValueTupleは8個まで型引数をとるものがある。8より大きいやつを作る場合は入れ子
  • throw式が加わって、return x ?? throw new XxxException();とか書ける
  • Discard普通のときの変数名とマルチ代入の場合で違う
  • ローカル関数のおかげでLINQみたいなnullチェックが必要なメソッドがすっきり!
  • バイナリーリテラル、Unityのタイルマップで使いたい
  • C# 7バイナリ互換、ValueTypeを除きある

Xamarin.Formsとコンソールアプリでモデル層を共通化してみた

  • サービスが軌道に乗るまでXamarin.Forms、乗ったらXamarin.Nativeもありかー
  • タイプが違っても共通化ができるのはモデル層

Unityの話

 オフレコでした

AWS Loves .NET : または私はいかにして心配するのを止めてMacを愛するようになったか

  • おめでとうございます
  • 技術書典2、楽しみにしています
  • ナイスデモ、お疲れ様でした

ホントのホントの0から始める3Dモデリング超入門

  • HoloLens Live Modeling
  • UnityとmetasequoiaはライブでSyncできる
  • UnityとHoloLensもライブでつなげられる
  • モデリングしながら、HoloLensでどんな感じがチェックできる!!!!

Visual Studio 2017の新機能

  • インストーラー、Electron
  • ソリューションを開くのが早くなった
  • ネストが深いif文でもどこにいるのか見やすくなる機能がついた
  • EditorConfigに対応!
  • プライベートメンバーの命名規則、間違っていたらコンパイルエラーにすることも可能
  • ヌルポ(NullPointerException)ではなく、ヌルリ(NullReferenceException)
  • いろいろ修正してくれる。ある箇所を直したら、ソリューションやプロジェクト内の同様の修正点を直してくれる
  • ファイル名とクラス名の不一致をサクッと直せる
  • Live Unit Testing、定義済みのユニットテストがコード編集中もリアルタイムで走る

まとめ

C# 7.0はいいぞ!!! Visual Studio 2017もいいぞ!!!!!

あと、HoloLensもよかった! ジェスチャーも発音も俺はくそだったけど。

DroidKaigi 2017でKotlinハンズオンのチューターとしてお手伝いしてきた #DroidKaigi

 2017年3月9日(木)・10日(金)に開催されたDroidKaigi 2017Kotlinハンズオンのチューターをさせてきたいただきました。

 セッションの登壇者は@ngsw_taroさんで、私は@yy_yankさんと一緒にチューターとしてお手伝いさせていただきました。

 @ngsw_taroの作られた、ハンズオンのリポジトリはこちら、ntaro/github-client-for-droidkaigi。そして資料はこちらです。

 非常に実践的な内容で、Kotlinのいいところだけでなく、実際の開発現場で必要になる泥臭い部分も伝えることを意図された、とても素晴らしいハンズオン内容だったと思います。

 チューターとして、ハンズオン内容を事前に確認させていただいて練習させていただいたりフィードバックさせていただきました。 また、当日は参加者の方の質問に対し、できる限りお答えさせていただきました。

 困ったことがあると手を上げ我々チューターに質問してくださる方もいました。しかしTwitterで疑問をつぶやかれている方も多くいらっしゃいました。そういう方に対して素早くTwitterでお答えしたり、口頭でも質問しやすい雰囲気を作れればよかったかな、というのが私のチューターとしての次回への改善点です。また、#JXUGで頻繁にハンズオンをされている@ytabuchiさんからもアドバイスをたくさんいただきました。

 もしまた機会がいただけるならば、チューターとしてのレベルあげてチャレンジできればなーと思います。Kotlinのファンが一人でも増やすことのお手伝いができていれば幸いです。

 参加者の方、DroidKaigiスタッフの皆さんありがとうございました。

 また一緒に頑張った@yy_yankさん、そして素敵な機会をくれた@ngsw_taroさんありがとうございました。

2017年2月振り返り

 気が付いたら2017年も1年の1/6が終わりました。

 2月は28日しかないと言えども、あっという間ですね。

 やばい。

Build InsiderでUnityの連載をはじめる

 Build Insider様で、Unityの連載を始めさせていただきました。

 1回目はこちらの「Unity入門 ― 何が作れるか? ライセンス/料金、開発に有利な特長」です。

 初心者の方の役に立つように、そしてすでにUnityを使っている人が初心者の人に教えるときに役立つような連載にできたらと思います。

 関連:Build Insiderで、「Unity入門」の連載を始めさせていただきました

ブログ投稿まとめ

 技術的なことはQiitaに、勉強会の参加等ログ的なことははてなブログに書いています。

 Qiita

 はてなブログ

年間目標振り返り

 年始に建てた目標を振り返ります。

  • 個人ゲーム開発3個リリース
  • ブログ 100記事書く
  • TOEIC 860点以上をとる
  • 体重62kg以下にする
  • 彼女を1人作る

個人ゲーム開発3個リリース

 2017年1作目の「転生勇者」。リリース目標は4月中です。

 3月は次のことを目標にしようと思います。

  • 毎日10分でもいいからUnityプロジェクトを開いて何でもいいから何かを改善する
  • 3/04(土)・3/18(土)・3/25(土)は一人もくもく会をやる
  • アルファ版リリース準備

 仕事が忙しくても、寝る前の10分でもいいからUnityプロジェクトを開くことにしました。

 前回、一人もくもく会を3回やるという目標をたてたけど一度もやれなかったので、このタイミングで日付を決めました。

ブログ 100記事書く

 計8記事。1月は5記事書いたので、現在13記事。

 このままだと1年で100記事できなそうですね。

  • もくもく会の報告 (×3記事)
  • Unity + C# 6.0の記事 (×3記事)
  • Unity 2D Experimental PreviewやTilemap関連記事 (×2記事)
  • Build Insider執筆報告 (×2記事)
  • Unity Tilemapの公開記事 (×1記事)
  • Kotlin1.1関連 (×2記事)
  • Kotlinの赤べこぼん レビュー記事 (×1記事)
  • 勉強会関連 (×1記事)

 の計、15記事を書きたいです。

TOEIC 860点以上をとる

 DMM英会話を全然やれてないです。曜日を決めてやろうと思います。

 3月の目標

  • DMM英会話を月・水・金・日の週4回やる

体重62kg以下にする

 1月時点で、69.5kg。2月現在、69.8kg前後。

 微増しました。腹囲を目標にした方がいい気がしてきました。

 3月の目標

  • 軽くてもいいので週3回運動
  • 目標が適切か聞く
  • オフィスにいる時は、お菓子を自分で買わない
  • ヘルシープログラマを読む

彼女を1人作る

 進捗ありません。

まとめ

 3月は、事前に決めた小さな目標を達成して、進捗を積み上げていきたいです。

Mini DisplayPort to HDMI/DVI/VGA なアダプタが便利

 LTをよくやります。

 私物マシンがSurface Book or MacBookPro(2010年のモデル)です。

 たいていの場合「Mini DisplayPortオス HDMIのメス」を持っていれば済むことがほとんどです。

 しかしたまにVGAでなくてはいけないなどの場面があり、困ることがありました。

 そんな時に、おすすめなのがこれ。(私もお世話になっている方におすすめされました)

 Mini DisplayPort オス to HDMI/DVI/VGA メス 3-in-1変換アダプタケーブル 黒

 出先での登壇機会の多い人、かさばらないのでお勧めです。

 以下、画像。

f:id:MRStar:20170211131249j:plain

f:id:MRStar:20170211131252j:plain

Build Insiderで、「Unity入門」の連載を始めさせていただきました

 Build Insiderで、「Unity入門」の連載を始めさせていただきました。

 第1回は、

 「Unity入門 ― 何が作れるか? ライセンス/料金、開発に有利な特長

 というタイトルで2/1に公開されました。

 Unityをすでに使っている人向けの記事ではありませんが、すでに使っている人は「Unityってこんな感じだよ」って紹介するときに使っていただければ嬉しいです。

 よろしくお願いします。

www.buildinsider.net

2017年1月振り返り

 気が付いたら2017年も1カ月終わりました。あっという間ですね。

 昨年度はMicrosoft MVPの申請のため、3カ月ごとに振り返りブログを書いていました。

 ところで最近、Microsoft MVPレギュレーションが変わったので、私もそれに合わせて振り返りブログは1カ月ごとにしようと思います。

BuriKaigi2017に参加

 2017年1月28日(土)に、富山県民会館で開催された「BuriKaigi2017 in Toyama ~そろそろ寒ブリが美味しいくなる季節~」に参加しました。

 今まで見る側だった、ドキドキライブコーディングにやる側で参加しとても楽しかったです。また来年、参加したいです。

mrstar-logs.hatenablog.com

48時間1人ゲーム開発もくもく会をやった

 2017年春リリース予定の個人製作のゲーム、「転生勇者」の開発を進めるべく2017年1月20日(金)・21(土)・22(日)で、自宅にて48時間1人ゲーム開発もくもく会をおこないました。

 開発は停滞気味なので、もう一度がっつりスピードを上げたいです。

mrstar-logs.hatenablog.com

勉強会・イベントまとめ

 2017年1月の勉強会の登壇は、

 の1件です。

ブログ投稿まとめ

 技術的なことはQiitaに、勉強会の参加等ログ的なことははてなブログに書いています。

 Qiita

 はてなブログ

年間目標振り返り

 年始に建てた目標を振り返ります。

  • 個人ゲーム開発3個リリース
  • ブログ 100記事書く
  • TOEIC 860点以上をとる
  • 体重62kg以下にする
  • 彼女を1人作る

個人ゲーム開発3個リリース

 1個目の転生勇者を開発中。仕様も固めきっていないので、開発を加速させたい。

 2月の目標

ブログ 100記事書く

 計5記事。ぶり会の振り返りとかでもっと書けたので、書こうと思ったタイミングですぐ書きたいです。

 2月の目標

  • 2月で15記事
  • ぶりの振り返り(九九・FizzBuzzC# 6.0のstring)
  • Unity 2D Experimental PreviewやTilemap関連 3個くらい?

TOEIC 860点以上をとる

 DMM英会話を全然やれてないです。しっかりやりたいです。

 2月の目標

  • DMM英会話を週4回やる
  • Unity 2D Experimental Previewのフォーラムに投稿

体重62kg以下にする

 1月時点で、70kg。現在、69.5kg前後。

 あまり進捗なしです。そもそも目標として適切なのか?腹囲とかの方が適切な気がします。。。

 2月の目標

  • 軽くてもいいので週3回運動
  • 目標が適切か聞く
  • ヘルシープログラマを読む

彼女を1人作る

 進捗ありません。

まとめ

 2月は小さな進捗をもっと細かく素早く積み上げていきたいです。

BuriKaigi2017 in Toyama で ドキドキライブコーディングした! #ToyamaBuri

f:id:MRStar:20170205220312j:plain

toyama-eng.connpass.com

twitter.com

2017年1月28日(土)に、富山県民会館で開催された「BuriKaigi2017 in Toyama ~そろそろ寒ブリが美味しいくなる季節~」に参加しました。

そして、「C# 大好き MVP による、C# ドキドキ・ライブコーディング!!」で登壇しました。

タイトルこそ毎回違えど、この時期の北陸でのイベントはなんと8年目!

私自身は3回目の参加、毎年冬の楽しみなイベントの1つです!

ドキド・キライブコーディング とは?

以下、イベントページの「C# 大好き MVP による、C# ドキドキ・ライブコーディング!!」の説明より。

北信越Visual Studio and Development Technologies MVP 4名が C# の魅力について語ります。LT や コーディング ライブ。

北信越出身のMicrosoft MVP

そして、今年から私(新潟出身)が加わり

  • @AILightさんが出すお題を、セッション中その場でライブコーディングでする
  • @AILightさんが事前に出すお題を事前に作成し、セッション中その場で競わせる

という、恒例人気セッションです!

昨年までのドキドキ・ライブコーディング は?

 過去3回の「ドキドキ・ライブコーディング」事前作成のお題は

  • 2014年 オセロ
  • 2015年 七並べ
  • 2016年 テトリス(この年は事前作成じゃなくて、ライブコーディングでテトリスを作るというものでした)

 でした。

 そして今回、2017年のお題は再び「オセロ」です。

 オセロというと、プログラミングの授業・講義でよくあるテーマの一つですね。私も高専・大学でオセロを作った記憶があります。

 さて、この「ドキドキ・ライブコーディング」では、学校の課題ではありません。普通のオセロではないのです。

ここがすごいよ、ドキドキ・ライブコーディング

 普通のオセロであれば、定石からアルゴリズムを工夫することが大切です。

 しかしドキドキ・ライブコーディングでは違います。

 大切なのはオセロのアルゴリズムなどではなく、C#を駆使していかに他のMVPの相手を欺くのかが勝利のカギなのです。

 対戦相手の

 この中で一番注意しなくてはいけないのは、@Fujiwo さんです。去年と一昨年、相手のインスタンスを上書きして勝つなど インチキ チート ルールの隅をつつく戦略を得意とする@Fujiwo さん。今年も「私の役割を考えていたところです」など、とても意味深な発言をされており、必ず何かやってくることが予想できました。

 また今年は@xin9leさんもTwitterで、しきりに「IL(中間言語)が~」と発言しており、これは@Fujiwoさん以上に、汚い えげつない ハックをしてくる可能性を感じました。

 @AILightさんの、「罠にかかった若者(<-私のこと)」という発言もあり、私の警戒レベルはマックスになりました。

 そう、「C# ドキドキ・ライブコーディング」は、アルゴリズムやAIの授業ではないのです。

私の作戦

 私がほかのMVPを欺くために用意して作戦を説明します。

 「1ターンキル」です。

f:id:MRStar:20170205215932p:plain

  • ボードの盤面を書き換えて上の状態のようにする。
  • ボードの手番を私にする
  • 上記の処理をゲームスタートのボタン押下時に行う

 というものです。

 画面左上のただ一つ空いているマスに置けば勝てるという状況を作る作戦です。

 使っているC#の要素としては、

  • リフレクション
  • Form生成の監視
  • イベントの書き換え

 などです。

 対戦相手の皆さんは「プレイヤーを書き変える」など、えぐいこと 高度なことをやってきそうな雰囲気を感じたため、「何もさせないのがベスト」と判断し、「1ターンキル」という戦略を選びました。

結果

 次の画像は「1ターンキル」に成功しドヤ顔を決める私です。

f:id:MRStar:20170205220748p:plain

 作戦通り、「1ターンキル」を成功させることができました。

 しかし残念ながら、レギュレーション違反により失格となってしまいました。

 「相手のプレイヤーのインスタンスを書き換えるのはありだけど、盤はダメ。もうオセロじゃない。」

 とのコメントをいただいてしまいました。

 なるほど、残念です。

まとめ

 残念ながら失格になってしまいました。

 またそれに加えて、対戦相手の方たちの戦略・アルゴリズムの説明を聞いたところ

 完敗でした。悔しいです。

 失格にはなりましたが、来年また呼んでいただけるそうなので、その時はリベンジしたいと思います。

おまけ1

 結局4人中3人がずるしました。私と @Fujiwo さんと @xin9le さんです。

おまけ2

 勝ったのはずるしなかった @AILight さんです。

おまけ3

 ぶり、おいしかったです。

おまけ4

speakerdeck.com

関連

blog.xin9le.net