.NET Fringe Japan 2016参加してきました。そのチビっとした感想郡。

.NET Fringe Japan 2016に参加してきました。一週間くらい前に。

dotnetfringe-japan.connpass.com

セッションに関する内容は俺俺要約と、リンクを張る程度に留め、ザックリとした感想をポツポツと書いていきます。資料自体は全部ココにあります

そもそも.NET Fringe とは?

dotnetfringe.org

An atypical conference for open-source .NET developers.

.NET開発者のための型にはまらない自由なカンファレンス、的なニュアンスかの?

GitHubPagesで公式サイト動いてたから、イベントに関する説明文探してみたけど思うように結果は得られず。ま、要は.NETのイベント。いじょ。

FSharp Deep じゃない Dive

途中から参加。イベントを知ったのが前日で、はキャンセル待ち状態での。繰り上がりで参加できる連絡きてからパパっと移動したンだけど。。。

F#は眺めたことはあるけど、書いたことはない。一行も。

F#の学び方が割りと印象的だった。 ちょっと古めの和書でOK。和書全然新しいの出てこないらしいけど、F#2.0の知識でも大部分カバーできるらしい。

F#は関数もシリアライズできるって点も印象的だった。 資料には載ってないけど、口頭でチラッと情報が出た。 どゆこと?シリアライズってデータをゴニョゴニョするもんじゃないの?

関数もデータっちゃあデータなんだろうけど。 ちらっと調べてみたけどイマイチ分からんかった。 ちな、理屈も利用場面もさっぱり分かってない。 俺が持ってる「シリアライズ」の定義が世間とずれてるのかもしれない。

何にせよ、そういうパラダイム持ってなかったんで刺激になった。

「はじめにお読みください」な C# 言語機能の作り方 - 機能は用法・用量を守って正しく追加してください

C#コンパイラーをちょこっといじる話。怖い。

と見せかけて、実際のセッションでは1行しかいじらない。

  • 言語作ることの大変さとか
  • roslynリポジトリの歩き方とか
  • 言語いじらなくともVisualStudioの拡張機能でカバーできる範囲とか

提案する際は社会人らしく提案しましょう、まる。って感じだった。 issueってポンポン立ってる状態なんだなぁ。

Azure Storage Partition Internals

パーティションの話。

そもそもサーバーのパーティション周りを弄ったことも調べたこともなかったため、さっぱり分からなかった。。。 サーバーサイドのスケーラビリティに関わる機会が生まれたら、再度スライドを見ることになりそう。

Xamarinソースクエスト

Xamarin/Mono周辺がオープンソースなった。ソースコード読んだり弄ったりするためのコツやら注意点やらのセッション。資料スライドは英語だけど、実際のセッションでは日本語で話してもらったので、理解はスルスルと。

触る機会そのものは少なそう。バグっぽい挙動を踏み抜いたときに見返す事になりそう。

makeを3回実行すると動くようになる、というのが印象的でした、まる。

MessagePack for CLIとそこから学ぶ.NETのマルチプラットフォーム対応

「一般的なシリアライザーの構成要素」ってのが印象的だった。本腰入れて作る機会は無い気がするけど、遊びがてら触るときはこの構成にしようと思う。

リフレクションが必要な箇所をマルチプラットフォーム対応するのは大変そうだなぁと思いました、まる。

週末OSSやるんだったら、好きな分野やると良いよってのも印象的でした。好きな分野ってのは、あまり重ならないものらしい。メジャーどころは強キャラだらけでモチベ維持が大変だったりとか。

完璧を求めたりせず、好きなものを好きな通りにやるのが長続きさせるのに重要なのかも。

What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの原理原則

  • 世界で使われるもの作れると名刺代わりになる
  • ライブラリの大きさは関係ない
  • 外に出すためのパッケージングで得られる経験値は貴重
  • OSSは出した瞬間が旬。あとは萎んでいくのが普通
  • 使ってもらうにはコードだけで終わらず、ドキュメントもサポートも外部アプリとの連携も大切
  • 「設定より規約」よりコンパイラがルールを伝えてくれる方がいい
  • APIユーザビリティ設計についてはこの本がオススメ

丁寧にパッケージングする大切さを知った。ポツポツと出していこうと思う。

Beachhead implements new opcode on CLR JIT

.NET Core Runtimeを拡張子、自作オペコードを追加する闇のセッション。手探りでソースをいじってた感が伝わってきました。怖かった。

「最終的にILに自作オペコードを呼び出す処理を実装する必要あるよな?まさかIL吐き出すところまで作るんか?」とビビってたけど、流石に違った。

  1. ほぼ空のコンソールプログラムをコンパイルして
  2. idlasm使って逆コンパイルして
  3. 出てきたIL直弄りして(!?)
  4. ILを再びアセンブリに戻す

という流れだった。怖いぞ。

これも資料は英語だけど、セッションそのものは日本語で行われました。 デモ実演も行われました。

お話としてはスゴイ面白かったけど、自分で直接触る機会は無いでしょう。ないでしょう。

.NET Core とマルチ プラットフォーム Deep Dive

どのようにマルチプラットフォーム対応しているのかというセッション。直前の闇セッションと、MessagePackのマルチプラットフォーム対応のセッションと関連が深く、いろいろ知識を補完できるいい流れだった。

開発/コンパイル時と配布時とで参照先を見えないところで切り替える、みたいな話だった(理解怪しい)。

マルチプラットフォーム対応のライブラリを作る際に見返すと良さそう。

全体を通して

皆さんお疲れ様でした。とても楽しかったです。

長かった。実に長かった。20:20までかかった。

私は遅れての参加だったけど、フルで参加してる人は10時間以上も踏ん張ってたことになる。懇親会で更に遅くまでって人もいるだろうし、運営者に至っては朝もっと早くから動いてたわけだろうし。ホンマありがとうございました。

今回は前日に知っていろいろ焦った。広く情報を仕入れ、前もって予定立てれるようにしよう。