++C++; // 未確認飛行 C ブログ

http://ufcpp.net/

Archive for 1月 2012

一斉更新

leave a comment »

先月一気に書きすぎたブログを ufcpp.net の方に清書したり、他の人の Advent Calendar にインスパイアされた記事書いたりするなど。

こんなペースでページ足したの、何年ぶりだろう。

広告

Written by ufcpp

2012年1月29日 at 20:44

カテゴリー: .NET, C#

C#らしくC#を書こう@Aiming

leave a comment »

株式会社 Aiming開発者ブログにて記事が出ていますが、社内勉強にて1時間ほど C# についてしゃべってきました。

以下のような内容です。

https://skydrive.live.com/?sc=documents&cid=5c622397e11c979d#!/view.aspx?cid=5C622397E11C979D&resid=5C622397E11C979D%213892

動画とってないのが残念ですが。

前半: 依存関係削減

Unity やってる人が多い前提で作ってたら、案外、サーバー側な人の比率が高くて、そっちの人にはどうだったかなぁという感じもあるものの。

Unity みたいに、なまじクロス プラットフォームなものを使うと、結構みんな容赦なく Unity 依存なコードを書くんですよねぇ。なので、前半はこんな感じで。

中盤: イベントと LINQ

他の言語にあんまりない機能の2大巨頭。でも正直、経験上、実は LINQ ってみんなすぐに覚えてくれるんですよねぇ。むしろイベントが鬼門。

イベントは、addEventLisnter との対比のスライドだけあればよかったかも、客層的には。さすがに、イベントの使いどころまでは要らなかった予感。

LINQ は、みんな割と興味津々で聞いていた感じ。

で、思ったのは、(今の)C# の敵は、他言語じゃなくて、C# 1.0 とか C# 2.0 だったりするかなぁとか。Windows も、 7 の最大の敵は XP とか言われてますしねぇ。

終盤: ライブ コーディング

スライド中に書いてる、

  • foreach
  • メソッド抽出
  • Usage-First
  • 単体テスト生成
  • LINQ

の中だと、LINQ 以外は一通りやれた感じ(LINQ は時間切れ)です。

特に、テスト プロジェクトの自動生成とか、Usage-First(Test-First 開発するんなら、先に用途の方書いてしまって、そこからメソッドとか生成する)みたいな話、大事ですよねぇ。テスト大事。

Written by ufcpp

2012年1月25日 at 18:46

カテゴリー: C#

Nuget on Express、Word Doc Generator、Power Viewデモ、等々

leave a comment »

 

Advent Calendar

さて、C#ユーザー会の1月の勉強会は、先月のAdvent Calendarの振り返りにしようかと。

C#のものだけじゃなく、他で面白そうな話題があれば共有しましょうという意図があるので、以下のページなど見てみるとよいのではないかと。

あー、この内容でブックマーク多くとれるんだー的な感じでも楽しめるのではないかと(思いっきり自分視点)。

しかし…完走率ひっくいなぁ…。見込み考えずに始めた1人Advent Calendarが多かったんですかねぇ。

Written by ufcpp

2012年1月14日 at 10:56

カテゴリー: .NET

MSのオープンソース取組(対談)、Roslynの舞台裏

leave a comment »

今日は2件ほど。

オープン ソース、オープンな標準にマイクロソフトはどう取り組んでいるか

なかなかいい内容の対談だった。一部、特に気に入ったところを引用。

ラベリノ: いいご質問ですね。例えばクラウドにおけるオープン性を考えると、単にそのクラウドのコードを開示しているだけでは十分ではありませんよね。クラウドでアプリケーションを運用することを考えると、データをそこにロックインされたくないからデータ用の API やデータ フォーマットの標準も欲しい。

だからオープン性にはさまざまな要素があって、オープンな API、オープン プロトコル、オープンな標準、そしてオープン ソース。この 4 つが柱です。けれどもどんなときにもこのすべてが必要というわけではありません。顧客がロックインされないためになにが必要か、というのはそれぞれ役割が違っていると考えています。

 

丸山: 僕はオラクルに買収されたサン・マイクロシステムズという会社がとても好きで、なぜあの会社がだめになってしまったのか、ときどき考えるんです。それでいくつか思い当たることがあるのですが、サンは Java のオープン化って最後になるまでできなかったんですね。それからグーグルもオープンと言いつつ、キー テクノロジは絶対に外には出さないですね。そういう意味で実はプロプライエタリに近づいていると思うんです。

だけど一般的にはプロプライエタリな技術の筆頭だと思われているのはマイクロソフトだったりする。現実はどんどん変わっているんだってことを、もう少し印象的に示した方がいいと思ってるんですよね。

2つとも、まったくで。

Roslynの舞台裏

Roslyn開発者へのインタビュー動画の要約。

見た感じ、自分が把握してる内容(↓で書いたようなの)で間違いなさそう(その後の方針転換とかもなさそう)。

Written by ufcpp

2012年1月12日 at 16:06

カテゴリー: .NET

元帥のイメージしかない

leave a comment »

昨日の深夜に、ちょっとばかし、marshallingという英単語の意味について思い悩んだり。

辞書で引いて、「整列する」っていう意味じゃないの?とか思うかもしれないですけど、実際その通りなんですけど、記事書いたり人に教えたりしようと思うと、それだけじゃ不十分だと思うんですよね。

英語ネイティブな人がmarshalという語に抱くイメージと、日本語ネイティブな人が整列という語に抱くイメージ、ほんとに一致してるのかなぁとか。

yield ― 単語の文化的背景

過去、C#にイテレーター構文が導入されたとき、yieldの意味に相当悩みました。

もちろん、辞書を引けば「譲る」なんですけども、この「譲る」がどうもしっくりこなくて。最初、財産譲渡的なイメージの「譲る」で考えていて、一度yield returnした後、次に処理を再開するイメージが付かず。

で、結局、納得いったのは何かというと、前方優先の道路標識が「YIELD」なのを見たとき。そういう意味の「譲る」なんだという。「他の車に道を譲る」ってのと同じイメージで、「他のスレッドなりタスクなりにCPUを譲る」様子を思い浮かべて初めてしっくりきたという。いったん停車して、後続の車に道譲っても、別に走行自体止めたわけじゃなく。

オオカミ ― 単語のイメージは文化に依存する

こういう、イメージまで作り上げなきゃとか思うと、やっぱり単語をただ訳すだけってだと不十分になってきます。たとえ、ほんとに同じものを指す単語であっても、イメージって文化によって違ったりするので。

良く引き合いに出されるのが、オオカミ(イヌ科のあれ)を比喩表現として使う場合にどういうイメージで使われるかというもの。日本語だと、たぶん、「オオカミみたい」っていうと、一匹狼のイメージ、要するに「孤高」だったりするわけです。一方で、英語でwolfishっていうと、残虐性・凶暴性を表す単語。狼男が月夜に暴れるあのイメージ。

言語をまたがなくても、日本みたいな均一化を好む社会の内部であってさえも、育ちが違えば言葉のイメージが変わったりします。

自分は、ある用語に対して直訳な訳語でしっくりきたとします。が、他の人は同じ単語に同じイメージを持っていないかもしれない。人に何かを教えるときには、そういうところにまで気を回さないと行けなかったりします。なるべく、1単語で済まさないで、いろんな言葉でイメージを伝えるのが意外と大事。

static ― 今でもその語が適切か

またもう、歴史的背景があったりすると、作られた当初の様子を知っているかどうかによって、納得しやすさがもろに変わるわけで。

例えば、JavaやC#だと、クラスに属する/インスタンスによらずクラスにつき1個だけのメンバーを静的(static)というわけですが。

内部実装を考えると確かにstatic(プログラムと同じ寿命で、ずっと同じ場所に確保され続ける)ですけども。意味的にはクラス メンバーとか、共有メンバーとか読んだ方がしっくりくるわけで。実際、OOP用語的にはクラス メンバーって言い方結構されますし、VBだとSharedキーワード使いますし。

元々はC言語由来で、関数ローカルなstatic変数(関数を抜けても値が残り続けるローカル変数。グローバル変数と同じ寿命になるものの、その変数を参照できるのは関数内でだけ)から来ていて、それをクラス メンバーに流用した(実際、コンパイル結果的には、スコープが狭まったグローバル変数でしかなく、関数内staticと一緒)のが始まりで。

でも、JavaやC#は、関数内staticもなく、内部実装を意識させるようなプログラミング言語でもなく。

特に、ベテランの人が新人相手に教える時ほど、これがネックになったりするんですよねぇ。長い歴史を経て今の自分があることを忘れて、自分基準で言葉を選んでしまったり。

おまけ: LPCTSTR ― 何それ?難読化?

ちょっと本題からそれますけども、昨日、ちょうど、Win32 APIの文字列(を表すtypedef)についての話なんかも出てたり。

LPSTR, LPWSTR, LPTSTR, …とか、今見たらもう、難読化されたコードか何かに見えてくるよなーという。

  • L: long。昔、long pointerとshort pointerってのがあった。16ビットから32ビットへ移行した時期の名残。
  • P: pointer。
  • C: const。文字列内の書き換えができるかどうか。
  • W: wide。8ビット文字(char)か、16ビット文字(wchar_t)か。
  • T: textの略?コンパイル オプション次第でcharかwchar_tかを自動切り替え。

の組み合わせ。割かし黒歴史。

未だにWin32 APIが現役なので、WindowsでC++使うなら通らなきゃいけない道ですが。毎年、これを新人に教えるお仕事が待っています。

おまけ: ε-δ論法 ― 言葉の意味を考えて使っていますか?

そういや、専門用語ほど、みんな言葉の本来の意味を考えずに使ったりしますよねぇ…

大学数学で多くの学生をくじくことで有名なε-δ論法なんてその最たるもので。

|x|<δ → |y|<ε

みたいな式があったとき、この式だけを見てまず思いつきそうなのは、「δを決めればεが決まる」なんじゃないでしょうか。

ε-δ論法は、それを、「εの方を先に決める」というように、順序を逆にするのがポイント。どんなεだろうと、従属変数δ(ε)が求まる。だから、Greekアルファベット順だとδ→εなところが、逆のε→δの順番でならんでる。これが、極限という概念を厳密に定義するにことに成功した秘訣。

とかいう話を学生(理学系含め)相手にすると、十中八九びっくりされるんですよねぇ。

みんな、難しい理論だから難しい意味が込められているに違いないとか思うみたいです。そのせいか、あくまで用語として覚えてしまって、言葉に込められた意味まで考えてない。

marshalling ― 話を戻して

そんなくらい、言葉の持ってるイメージを気にするので、marshallingについても「整列」って何?とか思うわけです。

  1. メモリ レイアウトが違う可能性あるからレイアウト並べ直せという意味?
  2. serializationと同じ扱い受けてるみたいだし、結局、serializationと同じような感覚?
    • データをディスクに保存するにしろ、通信に使うにしろ、バイト ストリームを通すわけで、そこを通せるように直線的にデータを一直線にならべる = 直列化
    • スレッドとかプロセスとかの境界にも、そういうストリームが挟まっているイメージ?
  3. お家がくっついた際に、家紋を統合する作業をマーシャリングというらしいし、それのイメージも入ってたりする?

等々。

serialization(一直線に並べる)よりは、marshaling(並べるという意味合いだけ)の方が制約の少ない単語なので、1の意味合い(一直線でなくてもいいから、とにかく並べ直せ)なのかなぁ。

またもう、この単語、整列は整列でも、軍隊の部隊整列の意味で使われることが多い(名詞で使うと「元帥、最高司令官」の意味だし)んで、その軍隊色はイメージに含めた方がいいの?関係ないの?とかも悩んだり。ユーザー コードが整列するわけじゃなく、システム様がトップ ダウンで整列するわけですし。

そしてまた、staticみたいに、歴史的背景があって、この言葉が生まれた当初の背景を知っているともっとしっくりくる解釈ができたりするのかな?とかも勘ぐってみたりするわけです。marshallingという言葉を使いだしたのは、MicrosoftのCOM?

追記1: CORBA

夜が明けてから頂いたご意見1。

COMよりもCORBAの方が先っぽい。その当時、marshallingという用語を使っていたかどうかまでは不明とのこと。

追記2: 軍事/祭事のイメージであってるっぽい

同、ご意見2。

「システム全体を把握しているmarshal(名詞用法だと、司令官、所長、式典担当者)の案内がないと通れないのがプロセス境界」とのこと。

両側のプロセスのコンテキストを把握して、通るデータを適切に並べ直すのがmarshalのお仕事。

結局、タイトル通り、元帥のイメージでよかったようです。自分がしっくりきてなかったのは、「組織のトップ=構成員を正しく配置する人」というイメージがなかったせいかも。自分もやっぱり日本人だと思いました。

Written by ufcpp

2012年1月11日 at 23:22

カテゴリー: 未分類

芹沢茜←正体

leave a comment »

あー、アップし忘れてた、例の26日目(あとがたりっ!)に使った顔アイコン。

200×200で背景透過なものを一応うp。

C#たん: 芹沢茜

C++たん:橘玲

 

VBたん:一条さん

作画: Paese

依頼内容は、「もろにぱにぽにだっしゅのパロディでお願い。C#たんなんか、完璧に芹沢にしていいんで。」

  • C#たん=芹沢茜。髪型の元ネタ。犬耳っぽいくせ毛。
  • C++たん=橘玲。C++たんを作るにあたって、お姉さんキャラ的なイメージのキャラをいろいろ集めたのの中に含まれてる。
  • VBたん=一条さん。VBたんのイメージの一部に、ネギま!の近衛木乃香が含まれてて、中の人(野中藍)つながりで一条さんに。

絵師さん曰く「この絵柄を動かしてたシャフトのスタッフすげー」とのこと。あと、描いてもらってて思った、C++たんの特徴のなさ。正統派にしたかったとうのはあるものの、もうちょっと髪型に癖持たせてもよかったかも。あと、橘玲のパロディなせいで、普段かけてないメガネかけてるのも誰だかわからない理由。橘玲のパロディなので、伊達メガネ。

26日目のネタも、唐突の思いつきでした。25日分の全原稿書き終えた後、23日くらいに思い立って、急に絵の依頼して、忙しい中間に合わせてもらえて、26日に公開。「ネタ切れネタ切れって 言いたい事言いやがって ネタなんて最初からねーんだよ! 」とか凄んでみた後に、さすがに申し訳なくなって絵を足そうかなーと。

でも、「ブロガー(元ネタでは作家)が消費してんのは 寿命だけだオラ!」ってセリフはかなりガチ。うすた京介の名言。

Written by ufcpp

2012年1月5日 at 15:44

カテゴリー: C#たん

2011 in review

leave a comment »

WordPress.com 統計チームは、2011年のあなたのブログの年間まとめレポートを用意しました。

概要はこちらです。

ルーブル美術館には毎年850万人が来場します。2011にこのブログは約88,000回表示されました。ルーブル美術館の展覧会に置き換えると、それだけの来場者が訪れるには約4年かかることになります。

レポートをすべて見るにはクリックしてください。

Written by ufcpp

2012年1月1日 at 09:58

カテゴリー: 未分類