スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

中の人の徒然草511 パンケーキに衝撃を受けた

 ここ最近、激務でブログ書けませんでした。申し訳ない。という事で、ひとまず最近起こった面白かった出来事を書きます。ここ最近で一番印象に残っているのはパンケーキです。これは、ある休みの日に起こった出来事です・・・

妹「ねぇねぇ、お兄ちゃん。久しぶりに休日なんだから、パンケーキ食べに行こうよ♡」
私「パンケーキ?」
妹「お兄ちゃん知らないの?ずっと前から、パンケーキがブームなんだよ。」
私「そうか、知らなかった。パンケーキって、ホットケーキみたいなもの?」
妹「まぁ、そうかな?ちょっと違う気がするけど・・・食べに行けばわかるよ♡」
私「そうか。食べに行こうか?」
妹「うん♡」

という事で、パンケーキを食べに行きました。
(メニューを見ながら)私「へぇ、おいしそうだな。ホットケーキに生クリームが付いた感じか?」
(同様にメニューを見ながら)妹「うん♡うん♡これとかおいしそうだよ♡」
テンションMAXの妹。メニューが一つに定まらない。
妹「これも、これもおいしそうだよ。う~ん、どうしようかな・・・」
私「僕と妹で違うものを注文して、食べ合いをしよう。」
妹「それいいね♡でも、候補が3,4品あるんだよね・・・2品ずつ食べる?」
私「写真を見た限りでは、食べられるように見えるけど、やめとこうよ。」
妹「う~ん、デザートなんだから、食べられると思うんだけどな・・・仕方がないか・・・えーと…」

という事で、おしゃれでかわいい商品の写真を見ながら、悩むこと約十分。
ようやく決まって、来たものを見て衝撃を受けました。

私「で、でかい!」
私の目の前には、大皿に乗った、ホットケーキのようなもの3枚に、大量に山盛りされた生クリームがありました。
これには妹も予想外だったようで、言葉を失っていました。
私「2品頼まなくてよかった…おいしそうだけど、2品は絶対に無理。」
妹「う、うん。メニューの写真ではここまでボリュームあるように見えなかったよ。」
衝撃から立ち直ると、私は蜂蜜を書けたあと、山盛りの生クリームを3等分にして、パンケーキに載せようとしました
私「うわぁ、生クリームがノセキレナイ・・・・。」
私が作業に夢中になっていると、妹はおもむろにパクパクと食べ始めました。
妹「ちょっとずつ食べよ。うん?あれ?これいけるよ♡」
私「うん?・・・思ったより甘ったるくないや。」
妹「こないだ、職場で・・・」
という事で、妹とトークを楽しみつつ、完食しました。パンケーキ凄いですね。
量もさることながら、胸やけを起こさないように調理してあります。
インパクトと意外性。この2つを同時に持つなんてすごい仕事です。
私もインパクトと意外性があるシステムを・・・無理か。
インパクトも意外性もお客に嫌われるからな・・・
そういえば、なんでシステムは地味なものと決まっているんだろう?
ファッション関係のシステムのとき、おしゃれなものを要求されるかと思いましたが、服装をチェックされました。
デザイナー「あなたのスーツなら、ネクタイの色は・・・」

私がいつも思うのは、引き込まれるようなシステムを作りたいという事です。
仕事の中でも、癒されたり、面白くて、使い続けたくなるようなシステムが作りたいです。
仕事が楽しくなるシステムを作ったらダメなんだろうか?
日本では仕事は苦行じゃなければならないと思い込んでいる節がある気がします。
仕事は人生の大半を占めるんだから、楽しんだもの勝ちなようなきがするんだけどな・・・

妹「仕事が楽しい?そんなの夢のまた夢だよ…あとで思い返したら、面白い事だったらいくらでもあるけど。
こないだだって、○○さんが(以下省略)」。
そんな妹を見てふと思いました。
日本人は仕事の愚痴で楽しむために苦行にしているかもしれませんね。
スポンサーサイト

テーマ : 日記
ジャンル : 日記

C#ライブラリリファレンス - データの集合の中から最初に条件に一致した要素もしくはデフォルト値を取得する

概要
 Enumerable静的クラスのFirstOrDefault拡張メソッドを使用すれば、例外を発生させずに、最初の要素を取得できます。存在しない場合は、デフォルト値を取得します。

日常でたとえると
 指定した売上ノルマを達成した社員を捜し、いなければ、「該当なし」とする。

使用に適した状況
 指定した条件を満たす最初のデータを探したいものの、例外の発生は避けたい場合。ただし、例外処理が面倒というだけで使用してはなりません。

サンプル

/*----------------------------------------------------
 * 
 *  データの集合の中から
 *  最初に条件に一致した要素
 *  もしくはデフォルト値を取得する
 *  
 ----------------------------------------------------*/
using System;
using System.Linq;
using System.Collections.Generic;

class Sample
{
    static void Main( )
    {
        //要素が存在しないときに取り出す
        int max = 10;
        List values = new List();
        if ( values.FirstOrDefault() == null ) {
            Console.WriteLine( 
                "まだデータが存在していません" );
        }

        //不完全なランダム値を用意
        Random d = new Random();
        for ( int i = 0 ; i < max ; ++i )
            values.Add( d.Next( 0, 100 ).ToString() );
        Console.WriteLine();
        Console.WriteLine( "データ" );
        foreach ( string v in values )
            Console.Write( "{0} ", v );
        Console.WriteLine( Environment.NewLine );

        //最大値よりも大きい値を取得しようとする
        string result = values.FirstOrDefault(
                x => Int32.Parse( x ) > 100 );
        if ( result == null )
            Console.WriteLine( "101以上の値はありません" );
        Console.WriteLine();

        //終了
        Console.WriteLine( "サンプル終了。" );
        Console.ReadLine();
    }
}


名前空間
 System.Linq名前空間を参照してください。

解説
 特定の条件を満たす最初の要素を取得したい場合があります。このような処理では、通常のプログラムは例外の発生があります。しかしながら、ユーザーが直接指定するなどといった状況では、例外が発生することは好ましくありません。何故ならば、間違えるのが「仕様」だからです。
 基本的には、例外処理は仕様外の事が起こった時にスローされるのが望ましいです。それは、プログラマーが間違ったプログラムを書いた時や、通信トラブルが起こった時などです。このような観点から、通常は例外処理を避けるべきではありません。ただし、間違った指示をされるのが通常の状態である場合、一々例外をスローしていれば、パフォーマンスが低下しますし、愛想がいいシステムとは呼べません。システムには、ある程度の柔軟性が必要なのです。
 このような場合に使用するのがFirstOrDefault拡張メソッドです。ただし基本的には、例外が発生する方が好ましいので、極力使用しないようにしましょう。

テーマ : プログラミング
ジャンル : コンピュータ

C#ライブラリリファレンス - データの集合をグループ化する

概要
 Enumerable静的クラスのGroupBy拡張メソッドを使用すれば、データの集合をグループ化することができます。

日常でたとえると
 分析するために顧客ごとに書類を纏める。

使用に適した状況
 何らかのデータを基準にして、関連するデータを纏めたい場合。例えば、商品別の売上データを見たい時などが該当します。

サンプル

/*----------------------------------------------------
 * 
 *  データの集合をグループ化する
 *  
 ----------------------------------------------------*/
using System;
using System.Linq;

class Sample
{
    class SalesDetails
    {
        public DateTime Date { get; set; }
        public string Name { get; set; }
        public int Count { get; set; }
        public SalesDetails( 
            DateTime date, string name, int count )
        {
            this.Date = date;
            this.Name = name;
            this.Count = count;
        }
        public override string ToString( )
    {
        return String.Format(
            "売上日:{0} 商品名「{1}」 数量={2}",
            this.Date, this.Name, this.Count );
    }

    }
    
    static void Main( )
    {
        //データソースを用意
        var values = new[ ] {
            new SalesDetails ( 
                new DateTime( 2014, 4, 10) , 
                    "釘", 
                    2 ) ,
            new SalesDetails ( 
                new DateTime( 2014, 6, 8) , 
                "金槌", 
                1 ) ,
            new SalesDetails ( 
                new DateTime( 2014, 6, 9 ) 
                , "釘", 
                1 )         
        };
        Console.WriteLine( "データ" );
        foreach ( var v in values )
            Console.WriteLine( "{0} ", v );
        Console.WriteLine( Environment.NewLine );

        //データをグループ化
        Console.WriteLine( 
            "データを名前でグループ化します・・・" );
        var results = values.GroupBy( x => x.Name );
        foreach ( var x in results ) {
            foreach ( var y in x )
                Console.WriteLine( "{0} ", y );
            Console.WriteLine(); //グループを分ける
        }
        Console.WriteLine( Environment.NewLine );

        //クエリ式でデータをグループ化
        Console.WriteLine( "クエリ式を使用します・・・" );
        var qr = from v in values
                       group v by v.Name;
        foreach ( var x in qr ) {
            foreach ( var y in x )
                Console.WriteLine( "{0} ", y );
            Console.WriteLine();
        }
        Console.WriteLine( Environment.NewLine );

        //終了
        Console.WriteLine( "サンプル終了。" );
        Console.ReadLine();
    }
}


名前空間
 System.Linq名前空間を参照してください。

解説
 昨今は、ビッグデータを分析する機会が増えました。その膨大なデータを分析する方法は色々ありますが、基本的なデータの見方は、一つの基準でデータをグルーピングする事です。
 例えば、商品ごとにデータを纏めると、商品の売れ行きや、商品の製造工程などが把握できます。他にも、顧客別にデータをグルーピング化して、好む商品を割り出したり、著作者別に出版した本を把握したりできます。
 このように、グルーピングはデータを扱う上で一般的な処理なので、GroupBy拡張メソッドが用意されています。データを扱う上で避けては通れない重要なメソッドといえるでしょう。

テーマ : プログラミング
ジャンル : コンピュータ

中の人の徒然草510 議員が不正をするのは自明の理

 ここ最近ニュースを見ていると、議員の不正が取りざたされています。しかしながら、何時ものように、ニュースではワイドショー的に報道されておしまいで す。いつになったら、抽象化して根本的な解決法を考えるのでしょうか・・・TVに出てくる事象政治評論家たちは、結局政治ワイドショー家にしかすぎないと 思えてなりません。
 私が前から言っているように、問題の根本は議員の報酬が「嘘でもなんでもついて、就活(選挙)さえ成功すれば報酬が保障される。おまけに企業と癒着すればもっと儲かる。」である点です。報酬がそうなっているのですから、そのようにして儲けたい人が議員になるのは自明の理だといっていいでしょう。国民の事を考えていないなどといわれていますが、それは当たり前です。考えなくても報酬が貰えるのですから考えるはずがありません。国民のためになることをしたら報酬が貰えるシステムにしておかないと、国民のために仕事をしないのは当然であって、いまさら何を言っているのだろうと不思議でなりません。
 仮に彼らが「国民のために」といっているのが本当ならば、「国民のために仕事をしないで報酬が貰える」という点に疑問を持たないのはおかしいです。疑問を持たないというのは、頭から国民の事はどうでもいいと思っているのか、そんなことも気付かない能力しか持たない人なのであって、前提からおかしいです。日本国民に自殺願望があるとしか思えません。
 とにかく私が言いたいのは「不正をした議員個人をネタにして騒いでおしまい。」という子供じみた行為をやめて、真剣に不正がないようにするにはどのようにすればいいのかをよく考えようという事です。私が思うに解決法は簡単です。国民のために仕事を擦れば、その仕事の成果に応じて報酬を与えるというルールと、天下り、嘘、企業との癒着などをすれば厳罰をかすルールを作るだけです。泥棒は窃盗罪を作らない(例え)のですから、国民が考えるしかありません。それだけで日本がよくなるのに、それをなぜしないのか不思議です。
 やっぱりなんだかんだ言って、日本人は社会人になっていない人が多いのかもしれません。もしくは、報道機関がワイドショー一本になっているかもしれませんね。なにはともあれ、茶番はもうやめて、真面目に国の崩壊を防ぐべきです。口では未来の子供のためだとかかわいそうだとか言っていますが、みんな本気で考えていないようです。そんなことをすれば、明日は我が身です。やるべきことをさっさとやろうよ。
 ただ、戦後70年そうなっていないところを見ると、私が異端なのかもしれません。私が知らないだけで、日本人全員で「自殺するために問題を放置してもっと悲惨な現実を楽しむ」というドMな暗黙のルールが出来上がっているのかもしれません。日本社会には謎が多いです。数学や情報技術よりも難しいです。日本人として生まれて、30数年生きているけど、いまだにわかりません。一体全体どうなっているんだろう・・・

テーマ : 日記
ジャンル : 日記

中の人の徒然草509 政府が知的財産流出国家を目指しているのを嘆く

 報道機関に信頼性がないので、その報道自体が正しいのか疑わしいところですが、一応正しいと仮定して書きます。日本政府は今、特許の財産権を会社のものにするという法案を出そうとしているそうです。今まで日本は、本音は違いましたが建前上、基本的に知的財産は発明者のものとなっていましたが、その建前すら捨てて、企業の支持率を上げたいようですね・・・
 発明をするのは個人です。それにも関わらず、日本は今まで「企業が個人の知的財産を奪って何が悪い」という態度を取ってきました。私は特許庁で「盗みたい放題だから個人で出願するのは馬鹿だ」といわれて、墓の下まで持っていくことを決めています。研究者として勤務している時も、「国が容認しているのだからお前の知的財産を奪って何が悪い。この国は生まれたときから奪うものと奪われるものが決まっているんだ。」と、ブラック企業の社長から言われて、時給100円ぐらいで働いたりしていました。
 先ほども言ったように、その結果、日本の発展は望んでいるものの、断腸の思いで、自分の身の安全を確保するために、知的財産は全て秘密にすることを選びました。私がそういった人間だから思うのですが、人間は奪われると分かっていれば発明しません。
 ですから、発明したい時は中村さんのように、海外に住むことになるでしょう。そうなれば、日本は何の知的財産も生み出せず、技術力を流出する他国にとって有り難い国になるでしょう。建前すら捨てて、本音を言うのは、ある意味すがすがしいですが、建前を本当にしたほうが、日本が発展すると私は思います。
 発明者が望むのは、莫大なお金ではなく、安全に生活できて、ちょっとだけ報酬をもらう事です。発明をしたら何の報酬も得られず、餓死を待つしかなくなるというのは嫌です。発明者だって生存権はあると思います。日本という国が、発明者に生存権を許さないというのは、憲法違反であり、発明者を人間としてみないその態度には心底嫌になります。
 おそらく、政治家は選挙という名の就活が成功したときから報酬が約束されており、個人から報酬をもらっておらず、企業から追加で報酬をもらっているのでそうなるのでしょう。しかしながら、原発事故や火山事件の件からも明らかですが、サービスを受ける国民はどうでもいいというのはまともな国家ではありません。国民一人ひとりの命が国を支えているのであって、企業も人で成り立っています。人を捨てた国は亡ぶしかありません。暴走し、命を刈り取る、国家レベルのウイルスをどうにかしないと、日本は存続しません。
 日本の崩壊を防ぐには、議員の報酬を見なすところから始めないと駄目なのですが、楽して儲かる当人たちが変えることはありません。楽してもう儲けたいから議員になった人が多いでしょうし・・・。まぁ、「楽して儲かりたい人」を募集するのが選挙なのだから当たり前だよな。だから、国民がそれを正さねばならないのですが、日本人は「お上が考えるもの」だと思考停止しています。う~ん、日本人は国が崩壊して「想定外だった」と騒ぐのでしょうが、無理心中するのは嫌です。この絶望的な状況が心底嫌で仕方がありません。

テーマ : 日記
ジャンル : 日記

C#ライブラリリファレンス - データの集合の中から指定した位置にある要素を得る

概要
 Enumerable静的クラスのElementAt拡張メソッドを使用して、指定した位置にある要素を取り出せます。

日常でたとえると
 3番目の商品棚にあるウーロン茶を検品する。

使用に適した状況
 任意の場所にある要素を取り出したい時。集合では並びは関係ありませんから、逐次的な処理をする時に必要になります。

サンプル

/*----------------------------------------------------
 * 
 *  データの集合の中から指定した位置の要素を取り出す
 *  
 ----------------------------------------------------*/
using System;
using System.Linq;

class Sample
{
    static void Main( )
    {
        //データソースを用意
        int max = 10;
        int[ ] values = new int[ max ];
        for ( int i = 0 ; i < max ; ++i )
            values[ i ] = i + 1;
        Console.WriteLine( "データ" );
        foreach ( int v in values )
            Console.Write( "{0} ", v );
        Console.WriteLine(
            Environment.NewLine );

        //指定位置の要素を取り出す
        Console.WriteLine(
            "指定位置の要素を取り出します・・・" );
        int index = 3;
        Console.WriteLine(
            "{0}に位置する要素は{1}です。",
            index, values.ElementAt( index ) );
        Console.WriteLine();

        //存在しない要素を指定すると・・・
        int errorIndex = 10;
        try {
            Console.WriteLine(
                "{0}に位置する要素は{1}です。",
                errorIndex, values.ElementAt( 
                errorIndex ) );
        } catch ( ArgumentOutOfRangeException ) {
            Console.WriteLine( 
                "{0}に要素は存在しません。", 
                errorIndex );
        }
        Console.WriteLine(
           Environment.NewLine );

        //終了
        Console.WriteLine( "サンプル終了。" );
        Console.ReadLine();
    }
}


名前空間
 Sytem.Linq名前空間を参照してください。

解説
 集合指向プログラミンをしている時は、要素の位置は気にしません。集合同士を結合したり、任意の要素を射影したりします。しかしながらプログラミングの幅は広く、命令型プログラミングの逐次的処理も必要になります。
 その状況で必要になるのが「位置を指定して要素を取り出す」処理です。その要求にこたえるのがEnumerable静的クラスのElementAt拡張メソッドです。各コレクションオブジェクト(コンテナオブジェクト)も、その手のプロパティ9を備えていたりしますが、IEnumerableインタフェースを実装するオブジェクトに対して、共通して使用できるので、より抽象的なプログラミングが可能となります。活用して、良いプログラムを作ろう。

テーマ : プログラミング
ジャンル : コンピュータ

中の人の徒然草508 マイクロソフトのたいへんさを知り日本の怠惰さを嘆く

 ここ最近、ライブラリリファレンスを書いていてふと思ったのですが、マイクロソフトってすごいですね。WindowsUpdateを維持するのも金銭的にも労働的にも大変ですし、MSDNリファレンスを維持管理するのも大変でしょう。読んでいるときは意識していなかったのですが、核となると大変です。如何にして、初心者に伝えるのか、それは習得するよりも難しいです。
 そう考えると、日本の全てに対する遅さ、いい加減さには本当に嫌気がさします。日本社会は何をするにも遅く、社会的問題を解決したことがほとんどありません。問題を解決するのではなく、選挙で受かったり、天下り法人を作ったりすることより、報酬を得るシステムにしてしまったドM日本国民が原因といえばそうなのですが、それにしても酷すぎます。いきなりは無理だと思いますので、マイクロソフトのようにちゃんとしろとまでは要求しませんが、もうちょっとましにならないものでしょうか・・・
 もしかしたら日本人は、ものすごく怠惰な民族なのかもしれません・・・戦後70年もこの状態を放置していたのですから、自殺行為としか思えませんし、余りに怠惰すぎます。子供でもわかることをやろうよ。
 どうやら、日本は評価という行為が弱点な様です。国家システムを評価するぐらいならば何をされてもよいというのが今の日本の現状ですし、戦前も兵士は優秀、司令する人は無能といわれていました。それに、馬鹿殿を愛でる文化があるようで、自分よりも位が上だと思った人に対しては一切評価しませんし、会社でもかたくなに人を評価しようとしません。日本はどうも社名や役職名などのレッテルだけを見て、評価をしようともしないので看板詐欺に弱いです。それが、今のIT業界の惨状を生み(おそらく他の業界も同じことが起こっているようです)、日本社会の弊害を生み出しています。う~ん、日本人の私でもこの日本文化が理解できない・・・不思議でなりません。
 ノーベル賞の数とか、金メダルの数とかを見るに、個々の人は優秀です。こんな簡単な事をわからないはずがありません。日本の自殺行為が余計に不思議でなりません。やはり、優秀でわかっているけど苦境を喜ぶドM民族なのかな・・・それとか、馬鹿殿がかわいくて仕方がないとか?わからない・・・

テーマ : 日記
ジャンル : 日記

C#ライブラリリファレンス - 変換演算子でリストを得る

概要
 Enumerable静的クラスのToList拡張メソッドを使用して、IEnumerableオブジェクトを、リストオブジェクトへ変換することができます。

日常でたとえると
 その箱に入っている書類をリスト化して。

使用に適した状況
 リスト特有のメソッドを使用したいなどといった、リストオブジェクトを使用したい場面で使用します。

サンプル

/*---------------------------------------------------------
 * 
 *  変換演算子でリストを得る
 *  
 ---------------------------------------------------------*/
using System;
using System.Linq;
using System.Collections.Generic;

class Sample
{
    static void Main( )
    {
        //配列を用意
        int[ ] ie = new int[10];
        Console.WriteLine(
            "データの型:{0}",
            ie.GetType().FullName );
        Console.WriteLine();

        //リストに変換して確認
        List<int> list = ie.ToList();
        Console.WriteLine(
            "データの型:{0}",
            list.GetType().FullName );
        Console.WriteLine(
            Environment.NewLine );

        //終了
        Console.WriteLine( "サンプル終了。" );
        Console.ReadLine();
    }
}


名前空間
 Sytem.Linq名前空間を参照してください。

解説
 オブジェクト指向プログラミングの極意は、抽象化にあります。しかしながら、具象的な処理も必要となります。例えば、リストオブジェクトが持っているメソッドをどうしても使用したい時などです。その時活躍するのがToList拡張メソッドです。
 オブジェクト指向プログラミングは、抽象化と具象化をうまく使い分けします。抽象的な処理だけではなく、具象化するための処理もマスターしましょう。

テーマ : プログラミング
ジャンル : コンピュータ

C#ライブラリリファレンス - 変換演算子で配列を得る

概要
 Enumerable静的クラスのToArray拡張メソッドを使用して、IEnumerableオブジェクトを、配列オブジェクトへ変換することができます。

日常でたとえると
 そのファイルを並べて。

使用に適した状況
 配列特有のメソッドを使用したいなどといった、配列オブジェクトを使用したい場面で使用します。

サンプル

/*---------------------------------------------------------
 * 
 *  変換演算子で配列を得る
 *  
 ---------------------------------------------------------*/
using System;
using System.Linq;
using System.Collections.Generic;

class Sample
{
    static void Main( )
    {
        //リストを用意
        List<int> ie =  new List<int>();
        Console.WriteLine(
            "データの型:{0}",
            ie.GetType().FullName );
        Console.WriteLine();

        //配列に変換して確認
        int[] array = ie.ToArray();
        Console.WriteLine(
            "データの型:{0}",
            array.GetType().FullName );
        Console.WriteLine( 
            Environment.NewLine );

        //終了
        Console.WriteLine( "サンプル終了。" );
        Console.ReadLine();
    }
}


名前空間
 Sytem.Linq名前空間を参照してください。

解説
 オブジェクト指向プログラミングの極意は、抽象化にあります。しかしながら、具象的な処理も必要となります。例えば、配列オブジェクトが持っているメソッドをどうしても使用したい時などです。その時活躍するのがToArray拡張メソッドです。
 オブジェクト指向プログラミングは、抽象化と具象化をうまく使い分けします。抽象的な処理だけではなく、具象化するための処理もマスターしましょう。

テーマ : プログラミング
ジャンル : コンピュータ

C#ライブラリリファレンス - 生成演算子で空のデータ集合を生成する

概要
 Enumerable静的クラスのEmpty拡張メソッドを使用すると、特定のコレクションオブジェクトを意識しないで、データの空集合を生成できます。

日常でたとえると
 書けるものを用意しておいて。

使用に適した状況
 Listや配列といった、特定のコレクションオブジェクト(コンテナオブジェクト)を意識せず、より抽象的な処理を書きたい場合。

サンプル

/*---------------------------------------------------------
 * 
 *  生成演算子で空のデータ集合を生成する
 *  
 ---------------------------------------------------------*/
using System;
using System.Linq;

class Sample
{
    static void Main( )
    {
        //空のデータ集合を作って確認
        var ie = Enumerable.Empty< int >();
        Console.WriteLine( 
            "データの型:{0}", 
            ie.GetType().Name );
        Console.WriteLine(
            "個数:{0}", 
            ie.Count() );

        //終了
        Console.WriteLine( "サンプル終了。" );
        Console.ReadLine();
    }
}


名前空間
 Sytem.Linq名前空間を参照してください。

解説
 オブジェクト指向プログラミングをしていると、抽象的な処理を書く機会が増えます。抽象的な処理を書けるようになると、プログラミングの力が飛躍的にアップするので、プログラミングが上達するにつれて、自然とより抽象的に書けないかを考えるようになります。
 この際に問題になるは、new演算子の抽象化です。つまり、「どのオブジェクトを使用するのか」を抽象化する必要が生じます。ですが、普通のオブジェクト指向言語の機能を使用すると、特定のオブジェクトを指定し、インスタンスを生成するしかありません。これでは、抽象的な処理が書きにくいです。それ故に、デザインパターンを駆使することになります。
 しかしながら、抽象化により、複雑なオブジェクト設計になるのは避けたいです。シンプルさを突き詰めて、抽象化するのであって、不必要な複雑化は望ましくありません。そこで重宝するのが、特定のインタフェースを持つオブジェクトを生成するメソッドです。
 インタフェースを使用すると、具象的な「どのオブジェクトを生成する」という問題を解決できます。短いサンプルでは有用性を示せませんが、Enumerable静的クラスのEmpty拡張メソッドは、本格的にプログラミングをする上で、非常に役立ちます。覚えておくとよいと思います。

テーマ : プログラミング
ジャンル : コンピュータ

プロフィール

インドリ

Author:インドリ
みなさん、はじめまして、
コンニチハ。

ボクは、無限の夢(infinity dream)を持つネタ好きな虹色の鳥インドリ(in dre)です。
色々な情報処理技術を啄ばむから楽しみにしてね。

http://twitter.com/indori
は別人による嫌がらせ行為です。
私とは関係ないので注意して下さい。
次はなりすましブログなどをするかもしれませんが、ここ以外でブログをするつもりがないので、ここ以外にインドリのブログがあったとしても無視してください。


何度言っても分からない人がいるので、ここにコメント欄へ書き込むときの注意事項を書きます。


一、社会人としてのマナーをわきまえましょう。
一、妄想に基づく書き込みを止めてください。
一、暴言の類は書かないで下さい。
一、某誹謗中傷サイトの書き込みは彼らの妄想に基づく書き込みですから無視して、ここへ書き込まないで下さい。
一、コメント書く前に他のコメントよく読んでから行って下さい。
一、言いがかかり等の行為を禁止します。
一、その他常識的に考えて迷惑なコメントはしないで下さい。


以上のルールを守れない人のコメントは削除します。



利用上の注意
ここに紹介してある文章およびプログラムコードは正確であるように心がけておりますが、内容を保証するものではありません。当サイトの内容によって生じた損害については、一切の責任を負いませんので御了承ください。


執筆したCodeZineの記事


【VB.NETで仮想CPUを作ろう】

  1. VB.NETで仮想CPUを作ろう
  2. レジスタの実装
  3. 仮想CPUのGUI化
  4. テストドライバの改良
  5. CPUの基礎動作の実装
  6. MOV命令の実装
  7. ADD命令実装
  8. SUB命令実装
  9. INC命令&DEC命令の実装と命令長
  10. MLU命令の実装とModR/Mについて
  11. DIV命令の実装とイベント設計について
  12. 機械語駆動式 関数電卓を作ろう!
  13. 機械語駆動式 関数電卓を作ろう! 解答編(前半)
  14. 機械語駆動式 関数電卓を作ろう! 解答編(後半)


【仮想ネットワーク実装でTCP/IPを学ぼう】
  1. TCP/IPの基礎と勘所
  2. ネットワークアクセス層の勘所
  3. インターネット層の勘所
  4. トランスポート層の勘所
  5. アプリケーション層の勘所
  6. セキュリティの基礎と仮想ネットワークの仕様
  7. GDI+と独自プロトコルの定義



【並列化】
インテル Parallel Studioを使って並列化プログラミングを試してみた
並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」


【TBBシリーズ】
  1. インテル スレッディング・ビルディング・ブロックの概要
  2. インテルTBBから学ぶループの並列化
  3. スレッドセーフとインテルTBBのコンテナ
  4. インテルTBBのスレッドクラス


【OpenMPシリーズ】
  1. OpenMPの基礎構文
  2. OpenMPの実行時ライブラリと並列ループ
  3. OpenMPのメモリモデルとfork- joinモデル

最近の記事
最近のコメント
月別アーカイブ
カテゴリ
Ada (9)
COBOL (5)
C (9)
C++ (11)
C# (370)
D (25)
Java (8)
Perl (1)
Ruby (14)
PHP (2)
Boo (2)
Cobra (2)
LISP (6)
F# (33)
HTML (0)
XHTML (0)
CSS (0)
XML (0)
XSLT (0)
Scala (4)
WPF (0)
WF (2)
WCF (0)
LINQ (4)
MONO (5)
Linux (0)
MySQL (0)
ブログ内検索
リンク
最近のトラックバック
RSSフィード
ブロとも申請フォーム

この人とブロともになる

QRコード
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。