やっぱりデブサミは行くもんだ^^

最近、仕事が忙しくてブログ書く暇も勉強する時間もないです><

でも、デブサミだけは強行して行きました。(そのせいで徹夜ですがorz)

今年のデブサミ、、

今年は.NET系は目新しいものがなくて、参加を迷ってましたが、

やっぱデブサミは行くもんだ!

と思えるものはたくさんありました^^

僕のベスト3

1.ネット・コミュニケーション2.0

いろんな方がいて、ただ興奮しましたw

あぁー、○○さんだーと思いつつ、近くにいても挨拶する勇気もなく、

amachangいないかなーとキョロキョロしてましたw

[MVP & .NET Ladies Lightning Talks Session]も見ましたが、

スピーカーの方も見てる方も、何となく雰囲気って違うんですね。

僕はこっち(ネットコミュニケーション2.0)の空気(?)みたいなのが好きみたいです。

そこにいるとモチベーションが高くなってくるようなセッションっていいですね^^

2.言語の現在・過去・未来を語る

これはおもしろかった!!

最近、言語に興味が強くなったので、楽しかったーー^^

このセッションで完全に波村さんのファンになりました!

(でもLINQのセッションはやっぱちょっとだけgdgdでしたねw)

3.WCF+WFはクラウドベース時代のAPIになり得るか

3.5 Extensionのデモがあって良かったです。

このセッションの内容は、試してからブログに書きます♪

ってかタイトルより大分広い内容じゃないですか!小野さん><

見たかったセッション

この二つは見たかったなー……

本題、素晴らしい体験!

本題と言うのも変ですが、個人的に本当に嬉しい嬉しいことがありました。

Ask the speakerで波村さんとMVPの方々とお話することができました!!

(そーいうとこだからと突っ込まれちゃいますが、、いや、嬉しくて)

そして!

あのid:NyaRuRuさんが

僕だけの為に、ノートPCを開いてコードの説明をしてくれました><

これは泣けるぐらい嬉しかったです><

NyaRuRuさん本当にありがとうございました!

内容は勉強してからブログに書かなければ!!

出会いもありました

2008-02-15

と言うことで、高田純次botid:toriaezuさんにお会いすることができました><

でも話しかけるまで、1分ぐらい迷ってましたけどw

「え?誰?」

って言われたら、目も当てられない状況に、、とか思ってました。

まとめ

デブサミ最高^^

僕はもっと勉強しないと!

行動しないと!

そして、

来年のデブサミでは、もっと堂々といろんな方に挨拶する!

おまけ

このチケット、1981sでも使えますか?

次期C#は動的名前解決をサポート!?

ついにC#が動的名前解決!?

Future Focus I: Dynamic Lookup – Charlie Calvert's Community Blog

※僕は英語が読めません。自動翻訳と原文を超斜め読みして、そうなのかなーと個人的に解釈しただけですので

おそらく、C#で動的名前解決の方法を今開発してるよーって内容だと思う。

詳しい条件や環境などは、対して書いてないように思うけど、読めてないだけかも。

僕はめっちゃ欲しかったので大歓迎!

動的名前解決が使いたい場面は確かにある!

昔、使いたいと思うことがよくあって、「静的壊していいのかい」の問いに

unsafeだってあるし、キーワードブロックで解決するのが一番無難じゃん、てかそれで解決できないのかなー

と思ってました。

Syntaxについての説明

まだSyntaxは決まってないよー。でもなんたらかんたら、、、えーと、適当に書きます。

チームでこんな風に考えてるよー、って言うのを見せるよ。

dynamicってキーワード使ってブロックにするのが良いんじゃないかなーって今のところ考えてるよ。

的なことを書いてるのかな?

以下に紹介されてるコードを抜粋↓

static void Main(string[] args)
{
dynamic
{
object myDynamicObject = GetDynamicObject();
myDynamicObject.SomeMethod(); // call a method myDynamicObject.someString = "value"; // Set a field

myDynamicObject[0] = 25; // Access an indexer }
}

おー、やっぱりじゃん!

うは!これは楽しみすぐる!^^


でも、これはかなり議論になりそう^^;

わんくま同盟勉強会

初めて、勉強会に参加してみました

ずっとブログで勉強させて頂いてる、わんくま同盟さんの勉強会に参加させて頂きました。

まず自分の結果

とりあえず名前だけ知ってた方々にお会いできたのは良かった。

でも次回はもっと積極的に話さないとなー、と反省です。

セッション内容の感想

中さんWPFの話はちょっと凹みました

いろんなターゲットにいろんな視点からセッションするから、いろんなレベルや切り口があるのは当然だけど、

WPFって、まだまだ全然なんだなー、、、と感じました。

みんなが基礎を知って、こんなんやってみたよ!こういう使い方どう!?カラクリはこの機能だよ!

なんてWPFのセッションが流行るのは当分先なのかなー

初音さんOracle 11gのセッションすっごい良かった!

Oracleにプロキシ認証なんてものがあるの知らなかったなー!

僕はMS SQL派でOracle嫌いなんだけど、あれは魅力的すぎる!MS SQLにも実装されないかなー。

囚人さんがとにかくラブ

話が面白い!内容もちょっと変わってて面白い!

やっべー便利!って内容とはほど遠いけどw

普段読まない面白い読み物を読んだときの満足感^^

東京は今回初上陸のようでしたが、毎回来てくれないかなー!

是非お願いします囚人さん!><

ひどりさんの画像処理 ※スピーカ紹介にリンクがない(?)からリンク自重します

配列かunsafeか、パフォーマンスコストか実装コストか、

皆さんいろいろ考えるんだなーと思いました。

僕は基本的には超富豪的プログラミング派ですが、たまにはカリカリ系やんないとできなくなっちゃうかな^^;

凪瀬さんかつのりさんJavaは僕にはムリでした^^;

Java未経験なので内容は全くわかりませんでした><

でもライブセッションって面白いなー!と思った!

C#でやりたい!!!

わんくま同盟様、スピーカーの皆様ありがとうございました!

楽しく参加できました^^ 次回を楽しみにしています!

初めて参加してみて勉強会、コミュニティについて思ったこと

勉強会ってすごい!わくわくする!見るだけじゃなくてもっと参加したくなる!!

もっといろんなコミュニティに参加してみたい!

そしていつか絶対、スピーカーやってみたい!(とは言え、死ぬほど緊張するからムリかも

あと、幅の広いコミュだけじゃなくて、狭いコミュもいいのかなーなんて思いました。

僕の参加してみたいコミュニティを想像してみる
  • C#バカのコミュニティ

 C#の話ばっかしてみたい

  • 若手.NETエンジニアで勉強しながらコーディング大会(?)みたいなの

って想像したものの、そう自分に都合良くはないと思うのでw

とりあえずは、いろいろ見てみる!

ないなら作る!ぐらいじゃないとダメかも!

もっともっといろんな人に出会ってチャンスを見つけよう^^

Y Combinatorが凄すぎる!

って言いたかったけど、難しくて理解できません><

ラムダの話をしてたら会社の人が、Recursive lambda expressions – The Mellow Musings of Dr. Tの説明をしてくれました。
去年の秋にブクマで見たときは難しそうだからスルーしたけど、、今回は理解しようと頑張って見てみます。

やっぱり理解はできないorz

でも、ここで諦めたら負けなので、とりあえず触ってみました。

昔、書いてみたフィボナッチ数列で試してみる


public static void Main()
{
foreach (var item in Math.Fib(10))
Console.WriteLine(item);
}
static public class Math
{
static public IEnumerable<int> Fib(int count)
{
Func<int, int> f = null;
f = i => (i < 2) ? 1 : f(i - 1) + f(i - 2);
foreach (int i in Enumerable.Range(0, count))
yield return f(i);
}
}

ここの部分↓

Func<int, int> f = null;

この初期化と同時に入れられないのが、悔しいなーで終わってたんですが、、
どうも、Y Combinatorってやつはそれを解消できるらしい!!

これがY Combinatorらしいです


static Func<T, T> Fix<T>(Func<Func<T, T>, Func<T, T>> F)
{
return t => F(Fix(F))(t);
}

で、こうなりました。


static public IEnumerable<int> Fib(int count)
{
foreach (int ii in Enumerable.Range(0, count))
yield return Fix((Func<Func<int, int>, Func<int, int>>)(ff => i => ((i < 2) ? 1 : ff(i - 1) + ff(i - 2))))(ii);
}

これすっっげぇ・・(゜゜

で、でも使い方あってんのかわかんない;
キャスト長いけど、どっか別のところに入れたら推論できないのかな・・・

これで終わり

とりあえずは、これ以上は追わない。

それよりも純粋に関数型言語をやってみたいからF#をやってみます^^

関数型言語再帰とか簡単だし、C#で大変なことが簡単にできるのはやっぱすごいなー

let rec! let rec!

初投稿してみました。ライフゲーム。

どう書く?.orgとは?

エロと風俗情報満載 どう抜く?

このサイトは出されたお題をいかに解くか競い合う、プログラマのためのコロシアムです。

らしいです。

でもTopCoderほど競う雰囲気は強くなくて、

俺ならこう書くよー!

へー、他の言語ならこう書くんだー!

って雰囲気から入っていける印象です。

実質、他の投稿サイトの一番の違いは「○○ってどう作るんですか」って教えて君のための

サイトじゃないことかなーと思います。

ライフゲームって何?

どんなもんかは知ってるけど、詳細は知らない。

と言うか、アルゴリズムや数学は基本ダメorz。

とりあえず、ライフゲーム - Wikipedia

まぁ、特別難しいことやれってお題じゃないし、やってみる

言語はもちろんC#

自分的ポリシーを整理
  • パフォーマンスなんて知らない
  • ショートコードに魅力も感じない
  • 富豪的プログラミング万歳
  • 読みやすさは一応大事。バランス。でも特別気にしない。
  • 命名はわかり易く(でも英語わからないから厳密には気にしない)
  • C#で遊ぶ。楽しむ
    • LINQ最高♪
    • 拡張メソッドも気楽に使う。
    • 問題視されてるvarも気にせず使う。(もちろん使うとわかり辛いと自分で思う数値とかには使わない)
  • Visual Studio前提のコードで良い(テキストエディタで見たときの見やすさはVisual C#使いの自分的にはどうでもいいと思ってる)

こんなところ。

完成

さっそく初投稿です。ドキドキ><oO(ボケ!へたくそって言われたら凹むなぁー)
http://ja.doukaku.org/comment/5427/

で、内容は?

orz

"間引き"ってやつができませんでした。
やってるつもりですが、実行すればするほど、狂ってると実感(もう投稿しちゃったよーorz


あといろいろ試行錯誤しながら書いたから、大分、見づらいコードになったかなー・・・

最近は、全体の見やすさよりも、とりあえずリファクタリングして
メソッドを分けまくる主義なので、書いた本人以外、パッと見は見づらいと感じると思う。

でもIDEを活用して構築すること前提だから、それほど間違ってはないと思ってやってるからいいやw

(何と言う、負け惜しみw

感想

どう書く?.orgって、工夫してシンプルに書ける言語のコードを発表するのに向いてる気がするなー。

C#で、(僕的に)やりたい放題するには、見づらくなってしまう気がする。

LINQだけで処理するようなお題は向いてるのかも、LINQやF#向きのお題ならRubyとか他の言語は同じようにシンプルになりそう)

UPするために、わざとシンプルに書くのは何か違う気がするし、C言語っぽい書き方もしたくない。

ファイル分けるなどの整理方法がVisual C#の正しい作法だと思うから、
普段書くC#と同じ書き方で書きたい。


って考えすぎかな^^;
とりあえず、自分の思うように書いてUPしよう。

最後に

このサイトがなければ、このお題(ライフゲーム)のプログラムを組もうとすることはなかったし、

この先、こういうコーダー向けサイトをもっと使うようになったりとか、

自分が変化するきっかけかもしれないと考えると、こういうサイトとの出会いは凄く貴重だと思いました。

こんな面白いサイトを運営してるサイボウズラボさんに感謝!^^

varより拡張メソッドのほうが問題児な気がするのだけど

varの件

R・田中一郎さんのところで議論になってたvar
暗黙的型付け(その4)

C#を使うようになってから、こういうのあまり気にしなくなってたので、
改めてみんないろいろ考えるんだなー、と勉強になりました。

僕はルールなんてねぇ!バンバン使っちゃえ!派なのですが…

と言うより、開発の規模でも基準なんて変わると思う。

問題だと思ったたびに、メンバーで話し合えばいいじゃん。

と思ってます(varに関しては)

で、本題ですが。拡張メソッドは大問題だと思うのですが!?

もしこんな拡張メソッドを作ったとしたら

static public string NullToEmpty(this string value)
{
return value ?? string.Empty;
}

もちろん普通に呼び出せます。

static void Main(string[] args)
{
string a = null;
string b = a.NullToEmpty();
}


これどうなの?

拡張メソッド自体は最高だと思ってます。

ただ、使い方次第で、ソースレビューする人を大混乱させるようなことが可能だと思うので、

拡張メソッドについては、バンバン使っちゃえ!の姿勢に変わりはないのですが、

varと違って、Visual Studio使っても、ソースの中みないと判断できないことは問題な気がします。*1

で、それより、もっと気になることがあるのですが

そもそも、その設計ってどうなの?

インスタンスのメソッドのように見せる能力なのに、その変数がnullの場合の処理を作るための
メソッドを拡張メソッドで用意していいの?

個人的には、String.IsNullOrEmptyも、拡張にしたほうが便利だと思えばしちゃっていいじゃん。

とも思ってるのですが・・・何か気持ち悪さが

ガイドラインないのかな?

ダメダメ、インスタンスにアクセスしないなら拡張にしないでねー

的なガイドラインはないのかな???*2

インターフェースの拡張メソッドでかなり無茶なこともできちゃいますし、

仕事でもむちゃくちゃに使いまくったら、便利!すげえ!、、と思いつつ

あれ?え?設計間違ってるかも?となりました。

まぁ、浮かれて勝手に設計間違えただけなのですが、

設計ミスできる要因が増えたことに違いはないと思うので、

『拡張メソッドはそのインスタンスを利用する事(nullは利用できないと考える)を前提とする』

と言うガイドラインがあってもおかしくないかな?と思いました。

*1:Visual Studioで開発してる時は、拡張メソッドはインテリセンスのマークで区別できるので拡張メソッドかどうかの判断はできます。

*2:僕は公式ガイドラインは絶対派です