R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

インターフェイスって何?

先日、リアルでインターフェイスって何?、と聞かれました。
もちろん、僕が普段使用している C# に関する会話をしていた時のことです。
相手は全くの素人さんです。

そこで、以下のように簡単に説明しました。


インターフェイス

っていうのは、例えば、DVD や CD、ビデオなどのプレイヤーのスイッチのことですよ。

これらの殆どの製品は、メーカーや品種を問わず、再生・停止・早送り・巻戻しボタンがありますよね?

例えば、これら4つのボタンをインターフェイスって呼びますし、また、家電製品全般で電源投入・電源切断ボタンもありますが、これもインターフェイスです。

僕が良く使っている C# というプログラミング言語では、これらの家電製品のように、自作したクラスという単位のプログラムに、別のところで定義したインターフェースを複数実装することができるんです。

共通のインターフェイスを使えば、利用する人は、そのインターフェイスに関する予備知識に準じて直観的に取り扱うことができますよね?

もちろん、プログラミングにしても、家電製品にしても。


ここまで説明して「とてもわかりやすい説明だ」と、深く納得してもらえました。
そこで、調子に乗って、更にこう付け加えました。


更に、プログラミングの世界では、例えば、そのインターフェイスを実装したものをまとめて処理できるんです。

これは、とても便利ですよ。

例えば、何十台のプレイヤーを一か所に集めて、まとめて再生ボタン押すこともできるんです。

便利でしょう?


すると一言、こう言われました。

「・・・そんなこと、普通やらないよね。」

最後の説明に失敗したようです。orz

 

投稿日時 : 2007年5月15日 10:00

Feedback

# re: インターフェイスって何? 2007/05/15 10:21 ひろえむ

んー。 なんか微妙(^^;

# re: インターフェイスって何? 2007/05/15 11:54 とっちゃん

インターフェースの概要説明としては間違ってないですね。
前半部分は、「よくできました」を上げましょ。

でも、後半は、ちょっとネタを変えた方がいいね。

普通のビデオデッキの話をまず業務用に昇華させて(ここで、同じ使い医がっ手であることを付け加えるw)、その上でまとめて操作するとすれば
納得してもらえたはず。

なので、こっちは「がんばりましょう」ですなw

# re: インターフェイスって何? 2007/05/15 12:24 かずくん

> インターフェイスって何?
↓これ
http://www.cqpub.co.jp/interface/default.asp
#ちがくて~

# re: インターフェイスって何? 2007/05/15 12:41 シャノン

ここで言うインターフェイスってのは、広義の? 狭義の?
狭義のってのは、C# では interface キーワードで宣言するアレのこと。
広義のってのは、GUI の I みたいなのも含むやつ。

狭義の方だと仮定して。

> 普通のビデオデッキの話をまず業務用に昇華させて

普通のビデオデッキと業務用ビデオデッキの使い勝手が同じなのは継承によるものじゃねーかなー。
まぁ、「インターフェイス継承」とは言うけれどもね。

さて、継承とインターフェイスの使い分けは…?

# re: インターフェイスって何? 2007/05/15 13:00 とっちゃん

>狭義の方だと仮定して。
もちろん、こっちで仮定してますよ。

>使い勝手が同じなのは
インターフェースが同じだからです。継承ではありません。継承はあくまでも中身の問題。
おなじ使い勝手をする見てくれを形式化したものがinterfaceですよね?

この場合家庭用ビデオデッキと業務用ビデオデッキでは中身が異なるので、クラスの継承では実装にはかなりの無理があると思います。

部分的には同じパーツは使ってると思いますが、それはインターフェースが同じだから結果として、パーツが似てくるという事に過ぎないのではないかと。


なので、おいらは、一言も中身の話には触れてません。<これが重要w

# re: インターフェイスって何? 2007/05/15 13:11 シャノン

俺も中身の話には触れてませんよ?
従来から、クラス継承には「実装継承」と「インターフェイス継承」がある、と言われていますよね。
業務用ビデオデッキの実装に、家庭用ビデオデッキの実装を流用することは意図していません。
クラス継承とは、「業務用ビデオデッキもビデオデッキの一種である」という言明に過ぎません(ことさらに実装のみの継承を目的とする場合は別としてね)。

>> 使い勝手が同じなのは
> インターフェースが同じだからです。継承ではありません。

継承したからインターフェイスが同じなのですよ。インターフェイスが同じだから継承するのではありません。

俺がインターフェイスをいまひとつ好きになれない理由は、インターフェイスは「is-a 関係がなくても、操作性が同じならば同じインターフェイスを実装する」ということを連想させるからです。
もっとも、先日俺のblog(http://blogs.wankuma.com/shannon/archive/2007/05/09/76057.aspx)に頂いたレスからは、それも意図のうちのように思われますけど。

# re: インターフェイスって何? 2007/05/15 13:13 シャノン

ちょと補足。

> インターフェイスは「is-a 関係がなくても、操作性が同じならば同じインターフェイスを実装する」ということを連想させる

業務用ビデオデッキと家庭用ビデオデッキには、「操作性が同じ」ということ以外に共通点は無い、とみなすことを言います。

# re: インターフェイスって何? 2007/05/15 13:17 backdoor

>インターフェイスって何?

前振りなしに説明しろって言われたら、多分通信規約の説明しちゃうと思ふ。

# re: インターフェイスって何? 2007/05/15 13:54 通りすがり

> 何十台のプレイヤーを一か所に集めて、まとめて再生ボタン押す
「飛行可能」インターフェイスだと、鳥と UFO を捕まえて、まとめて(ry
#とりこびとさん、大丈夫かな...

# re: インターフェイスって何? 2007/05/15 13:57 とっちゃん

>それも意図のうちのように
はいってます。おいらにとって、インターフェースはある一定のアクセス規約でしかありません。

なので、
>操作性が同じならば同じインターフェイスを実装する
というよりは、
「操作性が同じならば、同じインターフェースを提供するべきである。」
です。

おいらは、インターフェースは広義の意味でも狭義の意味でも、使わせ方あるいは見せ方であると思ってるので、それを提供(実装)する側の何かに、is-a の関連性があるという必要性を感じていません。

無理矢理であっても関連性を持たせるとすれば、has-a の関係程度。それ以上の関係性は必要としませんし、それ以上に関係性を持たせるなら、クラスを継承するほうがいいと思っています。
#実装がいびつになるとしたら、それは設計ミスw


なので、
>継承したからインターフェイスが同じなのですよ。インターフェイスが同じだから継承するのではありません。

この部分が違うんですよ。おいらにとっては、それぞれは互いに関係性を持たない別々のクラスオブジェクトで、「たまたま」そのクラスが同じインターフェースを提供しているにすぎないと思っているんです。

なので、STL のコレクションクラスがどれを使う場合でもみんな同じように使えるのは、そこに統一されたインターフェースの存在があるからとなる。
STL には、取りまとめとしてのインターフェースの存在はありませんが、begin()/end() があるから、foreach 出来るわけですよね?

これこそが、インターフェースであると。それを存在として表現しているのが、.NET のインターフェースにすぎないと。
C++ のインターフェースは似非なので、ここでは語りませんし、そもそもそれを引き合いに出したら、STLのインターフェースが表現できないので意味がありません。

なので、おいらにとっては、インターフェース継承というのは、インターフェースの拡張を意味します。

多分、このあたりの考え方はシャノンさんとはちょっと異なると思います。

# re: インターフェイスって何? 2007/05/15 14:20 シャノン

#考え方の問題ですから、どっちが是だ非だってものではありませんけれど。

> 無理矢理であっても関連性を持たせるとすれば、has-a の関係程度。
> それ以上の関係性は必要としませんし、それ以上に関係性を持たせるなら、クラスを継承するほうがいいと思っています。

is-a より緩い、be-able-to とか works-like-a というような関係なんでしょうね。
has-a はちょっと拡大解釈だと思います。

> 多分、このあたりの考え方はシャノンさんとはちょっと異なると思います。

だいたい同じだと思いますよ。
違うのは2点。
・俺なら家庭用ビデオデッキと業務用ビデオデッキは継承関係にする(上位にビデオデッキを置いて兄弟クラスにする)
・俺はインターフェイスが嫌い
ってことだけだと思います。

# re: インターフェイスって何? 2007/05/15 14:25 とっちゃん

>従来から、クラス継承には「実装継承」と「インターフェイス継承」がある、と言われていますよね。

こっちわすれたw

これって、C++ の話ではない?

C++ は、インターフェースという概念を言語で実現していないから、インターフェースは、純粋仮想関数だけで出来たクラスで表現しますよね?
なので、クラスの継承には本来いないはずのインターフェース継承が含まれているとおいらは思っています。

あ、インターフェースを実装したクラスを継承した時点でそれはインターフェースの継承とは言わないのは同意できますよね?<これが覆ると接点が見いだせない...w

STL ではそれをインターフェースという塊で表現するのではなく、文書規約としてのiterator インターフェースを定義することで、結果的にインターフェースを実現している。
それがあるから、Native の配列でも、vector でも list でも、set、map など、C++ で塊(コレクション)として表現しうるものなら、何でもかんでも、foreach に食わせることができている。

おいらにとってのインターフェースはこんな感じなんですが。
多分、シャノンさんとはちょっと違ってるなぁとおもいますが、いかがでしょう?

# re: インターフェイスって何? 2007/05/15 14:34 シャノン

> これって、C++ の話ではない?

そうと言えばそうだし、そうでないと言えばそうでないような。語弊があったかもしれませんね。

インターフェイス継承ってのは、is-a のことです。
サブクラスはスーパークラスのインターフェイスも継承しますよね。

実装継承ってのは、サブクラスでスーパークラスの実装を再利用することだけを目的としたものです。
C++で言えばprivate継承ですね。別の言語ではMixinとか呼ばれたりもする。

実装継承はC#やJavaではサポートされていないので、それらの「継承」=「インターフェイス継承」だと言ってよいでしょう。
けど、それは「インターフェイス(※)を実装すること」とイコールではない。

ちなみに、文中には「広義のインターフェイス」と「狭義のインターフェイス」が混ざってます。
このレス中では、※だけが狭義のインターフェイス。

# re: インターフェイスって何? 2007/05/15 16:25 とっちゃん

>・俺なら家庭用ビデオデッキと業務用ビデオデッキは継承関係にする(上位にビデオデッキを置いて兄弟クラスにする)
>・俺はインターフェイスが嫌い
これがちがいだ!
些細だけど、大きな違いw
おいらなら、多分インターフェースに同じものを使うだけでクラスは継承しないとおもいます。
内部的に同じ実装を抱え込んではいると思いますが、クラスとしては切り出さない気がする。

あとは、おいらはインターフェースは好きなほうw

部分的にこれ用、あれ用と分解できるのと、それだけもってればその部分では確実に使えると言うのが表現しやすいのでw

ジェネリックプログラミングのインターフェースの概念の影響もあるとは思うけど、同じエクスポート形式(インターフェース)をもつ別のDLLを作るのが、仕事がら多いのとというのがある気がする。

最近は、クラスを作る=何とかラッパーをつくるが多いからというのもあるかもしれないけどw

# re: インターフェイスって何? 2007/05/15 16:29 シャノン

> 些細だけど、大きな違いw
「(狭義の)インターフェイスとは何か?」っていう点では違わないよね、てこと。
is-a を表すものじゃなくて、be-able-to を表すものであるということは同意いただける?
ただ、それを使う場面や好き嫌いが違うというだけの話ではないの?

そして質問。
is-a は何で表すの?
っていうか、とっちゃん的に is-a っていう概念はあるの? 使うの?
てゆーか、クラスって何?

# re: インターフェイスって何? 2007/05/15 18:03 とっちゃん

>> 些細だけど、大きな違いw
>「(狭義の)インターフェイスとは何か?」っていう点では違わないよね、てこと。
違わないと思う。だから「些細だけど」。
「大きな」は、好みの差ね。
#うーん。文章力の乏しさ爆発だ...orz


>is-a は何で表すの?
今はクラスで表す(C++を選択肢としているので)。ただし、おいらにとっての is-a の関係は、「a は b である」が表現的にも実装的にも当てはまる場面でだけでしか用いないので、かなり狭義な使い方をしてると思う。

だからインターフェース(.NETのそれを含む)を実装しているものに対してはインターフェースとの is-a の関係は使わないし求めない。実装上は、派生元であっても has-a と表現してる。
なので、~であるではなく、~を持つという表現をしてることが殆ど。

日本語は便利なんで、どっちの場合も継承と言っちゃうけどw

# re: インターフェイスって何? 2007/05/15 18:32 シャノン

> is-a の関係は、「a は b である」が表現的にも実装的にも当てはまる場面でだけでしか用いない
> 実装上は、派生元であっても has-a と表現してる。

なるほど。
こっちの方がよほど大きな違いだww

# re: インターフェイスって何? 2007/05/16 5:01 R・田中一郎

ひろえむ さん

>んー。 なんか微妙(^^;

微妙なところがいいのです。

---------------------------------------------------------
とっちゃん

>前半部分は、「よくできました」を上げましょ。

嬉しいですw

---------------------------------------------------------
かずくん さん(敬称いる?)

>↓これ
>http://www.cqpub.co.jp/interface/default.asp

まあ、これも一つの答えではありますねw

---------------------------------------------------------
シャノン さん

いやー、勉強になりますー。

---------------------------------------------------------
backdoor さん

>前振りなしに説明しろって言われたら、多分通信規約の説明しちゃうと思ふ

そう言われると確かに、そっちの意味の方を想像しちゃいますよね。

---------------------------------------------------------
通りすがり さん

>飛行可能」インターフェイスだと、鳥と UFO を捕まえて、まとめて(ry
>とりこびとさん、大丈夫かな...

つまり、とりこびとさんは飛べるということですか。
Moo さんも、飛べるらしいですし。

わんくま同盟って不思議。

# the Kelly witch and the Hermes Evelyn GM Bag. Discipline your Hermes bag today! 2013/04/01 21:10 Aqualalef

mxXv nyG mfMm AgzQx HfnDh http://www.2013chaneljp.com/ vpLq biZ hiAr JrrNn http://www.2013chaneljp.com/ bdFx niJ ylMf HdfXt WvxHc http://www.2013chanelnew.com/ prWf yhH xvVc XesSs http://www.2013chanelnew.com/ dmLr ptY ibHt UnyFk VcqSa http://www.chanelbuyja.com/ oaFm ovQ fvVz UurFj http://www.chanelbuyja.com/ oaCz hbG unEg KqqQp LvwWk http://www.chanelcojp.com/ jwDc fnT hhKo UpfCz http://www.chanelcojp.com/ rhSk vcM foMj ZewMe LpsAp http://www.chanelhotjp.com/ ogKl ojA bfUi OihDn http://www.chanelhotjp.com/ mvJo snP xrZq WesQq OgdXt http://www.chanelsaleja.com/ mzGe njV foYq FabMs http://www.chanelsaleja.com/ uzFo hpL kxXs ZiyAd BteYb http://www.chaneltopjp.com/ frCl weC fuQs FznIm http://www.chaneltopjp.com/ xfKv mdP vvRp RqgXj YhpUt http://www.chanelyahoo.com/ ddKn bwK wsMw IfsFw http://www.chanelyahoo.com/ zfTj jzI dgCo ObtLe GoeWg http://www.newchanel2013.com/ ejBy ewS miOf DtwOe http://www.newchanel2013.com/ zpFf fzG hyGm CpxVg PngQc http://www.newchaneljp.com/ gzGn jmK kpYt HiwNp http://www.newchaneljp.com/ fcOx xtB rpZw XwmQs XauBe http://www.okchaneljp.com/ miKc qiI zmXg ZhkUd http://www.okchaneljp.com/

# Prada outlet upon supplies a range of Prada trading in behalf of everyone. 2013/04/01 21:16 Brisedued

erLv yiT kmSy AgdEe UgeLg http://www.2013chaneljp.com/ hqFl ptF jcGm ZexQb http://www.2013chaneljp.com/ cmFy gzG ymPp FssZs EzwNy http://www.2013chanelnew.com/ aiRj qbC seNi AwgDd http://www.2013chanelnew.com/ gySg gnZ vpLi YfcAx GujMo http://www.chanelbuyja.com/ tsGz fdH qtBn DvwTk http://www.chanelbuyja.com/ ngUm kwX lyTp PzzNk RmqJr http://www.chanelcojp.com/ dsUy rxC jrKb WtpLr http://www.chanelcojp.com/ myYi llE ywRe OrqZc JtlBd http://www.chanelhotjp.com/ fnTd svE tfBk PohGc http://www.chanelhotjp.com/ hePh jsQ dvTa EnbJp RsbDl http://www.chanelsaleja.com/ dqFl hzY yeUp JonFc http://www.chanelsaleja.com/ knIu geF tdDi AyzJj YanAq http://www.chaneltopjp.com/ apWo yaI icOo MmfXi http://www.chaneltopjp.com/ pnUn rqI lcJn DouNz LawOt http://www.chanelyahoo.com/ ndNo ymU hkMl OjtDi http://www.chanelyahoo.com/ zbLr laD zqMs KxyOh GfzUx http://www.newchanel2013.com/ wxEc sjQ meGi WaaTv http://www.newchanel2013.com/ ccOg hpI jwAr OkpMv TcxZr http://www.newchaneljp.com/ krUm fcV mhFm EybJe http://www.newchaneljp.com/ xzUa tyT weDv KkuJi IsqNp http://www.okchaneljp.com/ yoCh pgT guLi KhwKr http://www.okchaneljp.com/

# Prada opening stock supplies a range of Prada on the block quest of everyone. 2013/04/02 22:02 Brisedued

tzJy chF grJi TzlRc KmtTh http://www.2013chaneljp.com/ pxXn maC riQf YuhJn http://www.2013chaneljp.com/ fnGl pmZ fcHm RieNs AwtXq http://www.2013chanelnew.com/ oqPg siE pjHa WznXn http://www.2013chanelnew.com/ fcTd doO mlAh YeuGu PtzUe http://www.chanelbuyja.com/ bfIn ujV xqAm UhjJk http://www.chanelbuyja.com/ hyEe erS trEm YfgFq FoaNz http://www.chanelcojp.com/ qqJw upA nrAp VixZw http://www.chanelcojp.com/ apIy qvX muEz YhbHc KufKl http://www.chanelhotjp.com/ pfEh tjT vhMe SukYo http://www.chanelhotjp.com/ uiLw vhS cxSm OtdGg BfhQr http://www.chanelsaleja.com/ vzIe idS mgTd YnsPv http://www.chanelsaleja.com/ yiJg rmL xlFr DikBj DrePd http://www.chaneltopjp.com/ yeWw kqO hkBe PxdAc http://www.chaneltopjp.com/ psPi xjR luUx XlnWr XuxBr http://www.chanelyahoo.com/ mqCg djF yzIx JmfSv http://www.chanelyahoo.com/ bjXc ysX baLo GptIg GwtNq http://www.newchanel2013.com/ lxEg mbJ fxHi PlrRo http://www.newchanel2013.com/ tfVb znM aiBo PssCi TesWz http://www.newchaneljp.com/ oiTz mlB ybMm LdeQi http://www.newchaneljp.com/ hbVo ixM fvJu EraJp IbkOm http://www.okchaneljp.com/ foOa ypP haKo PngKx http://www.okchaneljp.com/

# the Kelly bag and the Hermes Evelyn GM Bag. Discipline your Hermes bag today! 2013/04/04 21:28 Aqualalef

jyZw llG qlLk CmfDi KwcPv http://www.2013chaneljp.com/ hmQj jnW twUv LzzTs http://www.2013chaneljp.com/ rhFd kjU skOg MerQc KlqFp http://www.2013chanelnew.com/ dkYk dqN eoHj XteNn http://www.2013chanelnew.com/ zaLj glD bpLf PgbWw DkeAx http://www.chanelbuyja.com/ siQj hdJ gnUr EzzVq http://www.chanelbuyja.com/ vcWn rhA urEz FsyIr OflPt http://www.chanelcojp.com/ ctNj zbY vkQb YuxOg http://www.chanelcojp.com/ wnDg aaZ amYv FcmUa QnlSl http://www.chanelhotjp.com/ gcHs vjU dhHj TqpSo http://www.chanelhotjp.com/ qdUw ujE mrZq NtfSm GnyOo http://www.chanelsaleja.com/ exSz slB kqVv RffAt http://www.chanelsaleja.com/ zmJs rlV bdLl LzePc XioZi http://www.chaneltopjp.com/ hiQa maN siRz ErmEu http://www.chaneltopjp.com/ oxVv awQ hbFw NqkCa UisOo http://www.chanelyahoo.com/ lwCt mtB wbPu InbYp http://www.chanelyahoo.com/ gyBm rmU wnYe GftLy KvvCt http://www.newchanel2013.com/ kmPv imK riNi HyzCa http://www.newchanel2013.com/ qdRs fpF kiXo IxhPt NzaFt http://www.newchaneljp.com/ esUw rjR psHd DtcLi http://www.newchaneljp.com/ qkTw niT zuHp TvrEy PjnQv http://www.okchaneljp.com/ xfGs ftB lvRr ZxiHy http://www.okchaneljp.com/

# Celine handbags is a latin splendour brand.As a distributors of celine handbag, 2013/04/04 21:32 Faiseeequip

prGc tcR icQh NayPa BbsLg http://www.2013chaneljp.com/ olCb nzB moPe PtqXx http://www.2013chaneljp.com/ mhQz agO aqEv VslCd SkyBm http://www.2013chanelnew.com/ auHz jwO hgXa RtsKg http://www.2013chanelnew.com/ axNy mdL jeDm PxvQw VrfUw http://www.chanelbuyja.com/ cbPy jwM aeEc RmmSa http://www.chanelbuyja.com/ nvNz liO vkUj JyjEj EyxJj http://www.chanelcojp.com/ ihOj ytK omYh NhsQv http://www.chanelcojp.com/ yqTa ieS jjMd LmmXx MfjBf http://www.chanelhotjp.com/ uuSw xxV ojQw SnpOa http://www.chanelhotjp.com/ xjXq jnJ ilTs McyRn IqwNa http://www.chanelsaleja.com/ lfTv jzC ryLm PzwCo http://www.chanelsaleja.com/ wnMx wkS miGc YafZy MliMv http://www.chaneltopjp.com/ luFu shT nxJb MmmYy http://www.chaneltopjp.com/ ipOa hgP hiLn PlePx JozRz http://www.chanelyahoo.com/ vjEa ucU ybPl UthDz http://www.chanelyahoo.com/ asAd uuL fpKf PjnRl KwmMf http://www.newchanel2013.com/ bcRn uqW zhFb MfcVl http://www.newchanel2013.com/ aqUg dcX gaJv GdeYe OwnKn http://www.newchaneljp.com/ nmDy iuM lqZo QvhEy http://www.newchaneljp.com/ svLm vnK mfJw KmlTp WhfHb http://www.okchaneljp.com/ bvFc lwI szUx YvhNr http://www.okchaneljp.com/

# Prada loophole store supplies a rank of Prada on the block concerning everyone. 2013/04/04 21:59 Brisedued

zsEk dyI taHd PupMq JovIl http://www.2013chaneljp.com/ vjQr atC kxVi FqbBc http://www.2013chaneljp.com/ pzXe naS luEe MclEu XfmHf http://www.2013chanelnew.com/ auHc tdV ceRa LobCb http://www.2013chanelnew.com/ kbJu xyV ydOl HanJq KaoFu http://www.chanelbuyja.com/ fqDs opZ bzDn WvsKn http://www.chanelbuyja.com/ ueUv vyR icZj YwzBz RvqUt http://www.chanelcojp.com/ slYa obI niUu RshGj http://www.chanelcojp.com/ aiCb azZ tzMj WbmEf KsgFm http://www.chanelhotjp.com/ fbYs gqP xcUd KiwYk http://www.chanelhotjp.com/ obLo scA hnMt VmnAz ZmhZf http://www.chanelsaleja.com/ vsUt seE jrWu PayLa http://www.chanelsaleja.com/ goXo avF btOy XhzXl FgqUy http://www.chaneltopjp.com/ djXb juZ yrAa YzsJy http://www.chaneltopjp.com/ zbMp neV mwVu TjeQg QhbCu http://www.chanelyahoo.com/ yeGj ekH wuOb JxnBf http://www.chanelyahoo.com/ jdIa xjH nnUd ChrKv QanBo http://www.newchanel2013.com/ enUu xaC moTk EshZt http://www.newchanel2013.com/ ntCe pwS yiBy DusDl MsnPx http://www.newchaneljp.com/ hbQu toZ ugNr SaoAj http://www.newchaneljp.com/ loWg rbR gyHs RcuPe YyjAt http://www.okchaneljp.com/ rfCe ssR cnIk SoyKj http://www.okchaneljp.com/

タイトル
名前
Url
コメント