委譲か継承か、それが問題だ

この記事は 2013/4/1 に旧ブログの “Syn の独り言” で記載したものを
加筆、修正した者です。

なんか、「動的型付け言語では継承はダメ、委譲を使え」みたいな意見を聞いた。
いや、Rails だって、model は ActiveRedord 継承して作るじゃん。
お前、David さんディスってんのかよ

まあ、冗談は置いといて、
その人の周りに継承を使いすぎる人がいたのかもしれない。
僕が彼の意見を曲解しているのかもしれない。
でも、ちょっと気になったので今の僕の考えをまとめてみた。

まず、話のスコープをはっきりさせよう。
「オブジェクト指向」というと、少し範囲が広すぎる。
今回は、Java, Python, Ruby 等を前提に考えてみる。

僕の意見はこうだ。

まず、オブジェクト指向とかプログラムとか置いといて物作り一般に
広く言える事だが、

大きい物を作りたければ、疎結合で抽象化されている小さいパーツに分けろ。

疎結合とはパーツ外部からパーツ内部に対して与える影響が少ない状態の事。
逆に、影響が多い状態は密結合。

抽象化の定義を書くと色々と長くなるが、簡単に言うと
「抽象化されている」とは「直感的に使える」くらいに考えて欲しい。

人間、一度に多くの事を考える事は苦手だ。
また、頭のなかに有る作業用メモリが溢れると途端に難しくなる。
大きい = 複雑 = 難しい
くらいに考えて良いだろう。

そこで、疎結合で抽象化された小さいパーツに分けるのだ。
疎結合で小さければ、各パーツを作っている時にそのパーツだけに専念出来る。

IT のシステムに置いてパーツを疎結合にするには、パーツが外部とやり取りをする
インターフェースで外部から内部に出来る事を制限すれば良い。
(ここで言うインターフェースとは、Java の interface ではなく
外部との接続口という意味。)
インターフェースによる制限が厳しいほどパーツは疎結合になり、
制限が緩いほどパーツは密結合になる。
また、このインターフェースが直感的であれば、そのパーツは抽象化されていると
言えるだろう。

パーツの内部のやり取りの制限は緩くてよい。
というか、内部のやり取りを厳しく制限出来るならば、
さらに小さいパーツに分ける方が良いだろう。
(もちろん、パーツが充分小さければ分けないという選択肢もあり得るが。)

具体例を上げよう。
例えば、ある処理には速度向上のためにバッファリングが必要な場合。

その処理自体を行う為のパーツを用意したとして、バッファリングはどこで行うか?
今回は、バッファリングをあるその処理を行うパーツ自体に持たせる事を考えよう。
この為にはバッファをそのパーツ内部に持ち、そのバッファを扱う
インターフェースを用意しなければ良い。

上記の制限を行うと、どうなるか?
まず、パーツ内部を実装する際に「外部からバッファを操作される」という可能性を
考えなくて良くなる。
また、外部からこのパーツを使用する際もバッファリングという難しい処理を忘れて
直感的に使えるようになる。
内部の実装時も、外部の実装時も同時に考える項目数を減らす事ができるのだ。

後でバッファリングに関する部分を改修する時にも、この事は役に立つだろう。
改修時にはパーツ内部だけ考えれば良い。
なぜなら外部ではバッファリングの事を考えなくても良いようにしたから。

もちろん、制限を加えた事によって悪い事も発生する。
今回の場合、外部からはバッファリングの細かいチューニングが出来なくなった。
この事による速度の低下が致命的な場合は、この制限を加えたのは
間違いだったのだろう。
前の方に書いたが、「可能な範囲で」疎結合にするのだ。

さて、ずいぶん前置きが長くなってしまったがここからクラスの話に戻る。

クラスとは、プログラムにおけるパーツの一種。

「一種」と書いたのは、パーツの分け方が一通りでは無いから。
(ファイルを分けたり、関数で分けたり。)
多くの場合、public method がクラスの内部と外部のやり取りをする為の
インターフェースとなる。

では、クラスの委譲、継承とは何か?
どちらも、小さいクラスから大きいクラスを作る方法である。
両者の違いは小さいクラスに対する大きいクラスのアクセスの方法にある。

委譲は小さいクラスへ、そのインターフェースを通してアクセスする。
継承は小さいクラスの内部へ直接アクセスする。

委譲のメリットは、何と言っても小さいクラスと大きいクラスの疎結合性を
保てる事だ。
小さいクラスで外部と疎結合にするインターフェースを実装できるならば
小さいクラスと大きいクラスが疎結合になる。

逆にデメリットは、実装する必要のあるインターフェースが増える事だろう。
委譲の場合、大きいクラスでは、外部に公開するインターフェースを
全て実装しなくてはいけない。
たとえ、ほとんど同じインターフェースが小さいクラスにあったとしてもだ。
また、小さいクラスでは大きいクラスが必要とするインターフェースを
全て実装しなくてはいけない。

では、継承のメリットは?
それは、実装時のステップ数が減る事だ。
小さいクラスではインターフェースを実装する必要は無い。
インターフェースを含めて小さいクラスで実装済みの物は、ほとんど全て
大きいクラスで流用できる。
一つの子クラスを複数のクラスで流用すれば、全体のステップ数が減る。

継承のデメリットは、親クラスと子クラスが密結合になる事だ。
親クラスがどんなに優れたインターフェースを持っていたとしても、
子クラスはそのインターフェースを使わないので密結合になる。

では委譲と継承はどうやって使い分けたら良いだろう?

継承は「異なるクラスの共通部分を外出しして DRY にする」為に使う。

Interface

上手において、class A と class B は青色の部分が共通している。
それだったら、青色部分を外出しして共通の親クラスとすれば DRY になる。

外出ししたクラス(親クラス)は、パーツとして必要な機能を全て
実装しているわけではない。
(Java の抽象クラスなんかが、その典型。)
そういう意味で、「小さいクラス」だ。
継承は、小さいパーツに不足している機能を付け足し、肥大化させる事で
大きい(必要な機能を全て揃えた)パーツを作る。

委譲は「クラスをより小さい、疎結合なクラスに分割して実装する為」に使う。

委譲

上手のように、class A の中で青色部分と緑色部分に分かれており、
互いのやり取りの方法が限定されていたら?
そうやって疎結合な部分に分かれているのならば、
より小さいクラスに分けて実装する事で同時に考えなくては行けない事が
もっと減るかもしれない。
(青を実装中は緑を考えなくてよい。)

小さいクラスは、インターフェースを含めて小さいパーツに必要な物を
全て備えている。
委譲は、その小さいパーツを組み立てて一回り大きいパーツを作る。
委譲によって後で組み立てられる事が保証されているから、安心してクラスを細かく
分割できるのだ。

継承の本質は、重複を避けて DRY にする事だ。
複数クラスで重複した部分が無ければ、継承をする意味が無い。

委譲の本質は、大きいパーツをより小さい疎結合なパーツに分けて実装する事だ。
小さいクラスを複数のクラスで流用出来なかったとしても、委譲する意味はある。
(もちろん、複数クラスで小さいクラスを流用できるならば、
するに越した事は無い。)

GoF を初め、多くの人が「継承よりも委譲を」と言っているのは、
下記のような場合だと考えている。
委譲と継承

クラス A は、青い部分と緑の部分に疎結合に分ける事が出来る。
クラス B は、青い部分と赤い部分に疎結合に分ける事が出来る。

この場合、青のクラスを共通の親クラスとしてクラス A と B で継承で
実装する事もできる。
青のクラスを作ってクラス A と B で委譲で実装する事も出来る。
こういう場合は、委譲にするべきだろう。

継承か委譲か迷ったら、試しに青のクラスを作ってみると良い。
(これは、継承でも委譲でも、どのみち必要になる)
青のクラスが疎結合になる制限の強いインターフェースを含め、
パーツとして必要な機能を全て備えたクラスになった場合。
継承という方法で、その疎結合性を壊す必要は無い。委譲を使えば良い。
そうならなければ、継承を使う。

ついでに、緑と赤もパーツとして必要な機能を備えた、疎結合なクラスを
作れるのならば作ると良いだろう。
たとえ青の部分を継承で実装する事になったとしても。
たとえ緑と赤のクラスを他の部分で流用出来なかったとしても。

また、よく「is-A ならば継承を、has-A や use-A ならば委譲を使え」と言う。
これは、
「has-A や use-A の場合、A がロジック的に分かれているわけだから、
実装時も疎結合なクラス A として分けられる事が多い。
is-A ならば A がロジックとして分かれていないから、
実装時も疎結合なクラスに分けられない事が多い」
という事ではないか?
僕の経験としても、そうなっている事が多い。

さて、一番最初に話を戻して、僕が違和感を感じた
「動的型付け言語で継承はダメ、委譲を使え」という意見について。
彼は

Java のような静的型付けの言語では、親の型を引き継ぐ為に継承を使う事もあるだろう。
でも、Python のような動的型付け言語では型を引き継ぐ必要は無い。
ステップ数を減らしたいのはプログラマの怠慢であり、意味は無い。
疎結合にするため、委譲を使うべき。

という結論に至っていた。

それは違うだろう。
だいたい、Java だって Interface を使えば親のクラスの型を引き継ぐ必要はない。
ステップ数を減らすための怠慢は、優れたプログラマに必要な物だ。

彼は、
「委譲を使えば疎結合に、継承を使えば密結合になる」と考えているのではないか?

僕は、
「疎結合な小さいクラスを作ったという前提の元で、委譲を使うと
その疎結合性を保つ事ができる。
継承を使うと疎結合性を保つ事が出来ない」
つまり、
「もともと疎結合に分ける事ができなければ、
委譲にしても継承にしても疎結合にならない。」

「どうせ密結合になるなら、継承の方がステップ数が短くなるから
良いのではないか?」

と考えている。

もっとも、「どうせ密結合になるなら継承の方が良い」というのは、実は少し眉唾だ。
ただ、今回の話のスコープである、Java, Ruby, Python の場合は十分に正しいだろう。

最後に、僕が大きいシステムを作る際の作業フローを紹介してみる。

まず、僕は大きいシステムを一度に実装できるほど優れた人間ではない。
最初に、僕の手に負える程度のサイズまでシステムを疎結合なパーツに分ける。

何もクラスという形で分けるとは限らない。
小さいパーツは、より小さいシステムかもしれないし
「人間の目視確認」というワークフローかもしれない。
(人間による作業を増やすのは良い事じゃないけれど。)

また、パーツを分けたら今度は既存の物をそのパーツとして使用できないか考える。
既存のシステムとか、有名なミドルウェアとか、誰かが書いたライブラリとか、
プログラム言語のビルトインのシステムとか。
(というか、パーツ分けの段階で既にこの辺りは意識している。)

流用出来ない部分は、自分で実装するしかない。
自分の手に負える範囲まで小さく分けてから実装の開始だ。

各パーツを実装する際は、できるだけ DRY に、できるだけシンプルに行いたい。
多くの関数内で共通化できる部分があれば、その部分を外だしして別の関数を
作るだろう。
多くのクラスで共通化できる部分があれば、親クラスを1個作って継承させるだろう。

細かいパーツができたら、今度はそれを組み立てる。
ミドルウェアと組み合わせる場合はドライバを使うかもしれない。
システム同士を組み合わせる場合は API を使うかもしれない。

クラスとクラス、クラスと関数を組み合わせる場合は?
その時は委譲を使うだろう。
個々のクラスは外部と疎結合になっているはずなので、それを保ったまま
組み立てるのだ。

無事に組み上がってテストが通ったら、システムは完成する。

もっとも、上記のウォーターフォール的な流れを 1回行うだけで全て上手く行く事は
少ない。
先に大きいクラスを作ってから小さいクラスを作る場合も有る。
作りながらリファクタリンングを繰り返して、パーツを組み立ててからパーツを
再作成するかもしれない。
でも、何となく分かってもらえ無いだろうか?

ちなみに、多重継承はどんな時に使うだろう?
使うとしたら、上記の作業フローで言うと、単体継承と同じフェーズだ。
例えば、下図のようなクラスを作る場合。
多重継承

各クラスの同じ色の部分は同じ内容。
しかし、赤、青、緑、黄のそれぞれは密結合。
この場合、赤、青、黄、緑のそれぞれの部分をクラスとして実装してそれを
多重継承する方法もある。

ただ、自分でこれを実装するのは、非常にしんどい。
例えば、多重継承を使わない場合、クラス A の青い部分を実装している時は
青と緑の部分だけ考えれば良い。
でも、多重継承を前提に青いクラスを実装する場合は青、緑、赤を全て一度に考える
必要がある。

これを読む方は実装する人以上にしんどいだろう。
丁寧なドキュメントを用意する必要がある。

その他、多重継承のメソッド探索順序は非常に複雑になる場合も多い。
それについてはPython 菱形の継承にも書いたので良ければ見て欲しい。

多重継承を使用するのは、上記の労力を払ってでも実装する価値がある場合のみだ。
その多くは、汎用性の高いライブラリやフレームワーク、ビルトインや
標準ライブラリのクラスだろう。

代表的な例は Ruby だと思う。
正確に言うと Ruby は単体継承しかサポートしていないが、module を複数
include 出来る。
これは、実質的にはメソッド探索順序を単純化した多重継承みたいなもんだ。

Ruby の場合、多重継承もどき(include)を前提とした親クラスもどき(module)が
標準ライブラリにあふれているので、ユーザーも多重継承もどき(include)を
行う事も多い。
でも、普通は多重継承を使う事は滅多に無いんじゃないかな?

Author: wbcchsyn

未来のスーパーエンジニア とりあえず、新しい物が大好き

231 thoughts on “委譲か継承か、それが問題だ”

  1. I simply want to mention I’m all new to blogging and certainly liked your page. Almost certainly I’m planning to bookmark your website . You absolutely have outstanding article content. Regards for sharing with us your website page.

  2. Hello there, just became aware of your blog through Google, and found that it’s truly informative. I’m gonna watch out for brussels. I’ll be grateful if you continue this in future. Many people will be benefited from your writing. Cheers!

  3. I loved as much as you’ll receive carried out right here. The sketch is tasteful, your authored material stylish. nonetheless, you command get bought an nervousness over that you wish be delivering the following. unwell unquestionably come further formerly again as exactly the same nearly very often inside case you shield this hike.

  4. Very efficiently written information. It will be supportive to everyone who usess it, including me. Keep doing what you are doing – i will definitely read more posts.

  5. Can I just say what a relief to uncover someone who really understands what they’re talking about on the internet. You actually realize how to bring a problem to light and make it important. A lot more people have to read this and understand this side of the story. I can’t believe you aren’t more popular because you certainly have the gift.

  6. Thank you, I have recently been searching for information approximately this subject for a while and yours is the greatest I’ve found out so far. But, what concerning the bottom line? Are you positive concerning the source?

  7. you are truly a good webmaster. The website loading pace is amazing. It sort of feels that you are doing any unique trick. Furthermore, The contents are masterwork. you’ve performed a great activity in this subject!

  8. Thank you for the sensible critique. Me and my neighbor were just preparing to do some research about this. We got a grab a book from our local library but I think I learned more from this post. I’m very glad to see such wonderful information being shared freely out there.

  9. I have been absent for some time, but now I remember why I used to love this site. Thanks, I’ll try and check back more frequently. How frequently you update your web site?

  10. I just could not go away your site before suggesting that I actually loved the standard info a person supply to your guests? Is going to be again often in order to check out new posts

  11. I’m typically to running a blog and i actually respect your content. The article has really peaks my interest. I am going to bookmark your web site and keep checking for new information.

  12. I’m usually to blogging and i actually respect your content. The article has really peaks my interest. I’m going to bookmark your site and preserve checking for brand new information.

  13. You made some first rate factors there. I seemed on the internet for the problem and found most people will go along with together with your website.

  14. Oh my goodness! an amazing article dude. Thank you Nonetheless I’m experiencing subject with ur rss . Don抰 know why Unable to subscribe to it. Is there anybody getting similar rss problem? Anyone who is aware of kindly respond. Thnkx

  15. A person essentially lend a hand to make seriously posts I would state. That is the very first time I frequented your web page and so far? I surprised with the research you made to create this actual submit incredible. Great process!

  16. you’re really a good webmaster. The web site loading velocity is amazing. It kind of feels that you are doing any unique trick. In addition, The contents are masterpiece. you’ve performed a great job in this subject!

  17. obviously like your web site however you need to take a look at the spelling on quite a few of your posts. A number of them are rife with spelling problems and I in finding it very troublesome to inform the reality then again I’ll surely come back again.

  18. I do trust all the concepts you’ve presented for your post. They’re very convincing and can definitely work. Nonetheless, the posts are very short for starters. May just you please prolong them a bit from subsequent time? Thanks for the post.

  19. Wow! This could be one particular of the most useful blogs We’ve ever arrive across on this subject. Basically Wonderful. I am also an expert in this topic so I can understand your hard work.

  20. I do agree with all the concepts you’ve introduced on your post. They are very convincing and can certainly work. Nonetheless, the posts are very short for beginners. May just you please extend them a bit from next time? Thank you for the post.

  21. I have recently started a blog, the information you offer on this web site has helped me greatly. Thanks for all of your time & work. “Her grandmother, as she gets older, is not fading but rather becoming more concentrated.” by Paulette Bates Alden.

  22. Very interesting details you have observed , thanks for putting up. “I’ve made a couple of mistakes I’d like to do over.” by Jerry Coleman.

  23. I wanted to create you the bit of word so as to thank you over again about the superb basics you’ve shown here. This is so surprisingly generous of people like you to provide openly all that numerous people would’ve offered for an electronic book to get some bucks on their own, even more so now that you might well have tried it if you wanted. These good ideas additionally served to be the great way to fully grasp other individuals have the identical desire similar to my own to realize more and more in regard to this condition. I’m certain there are millions of more pleasurable sessions ahead for people who looked at your website.

  24. hi!,I like your writing so a lot! proportion we be in contact more about your article on AOL? I require a specialist on this space to solve my problem. Maybe that is you! Looking ahead to look you.

  25. hi!,I like your writing so much! share we keep in touch more about your article on AOL? I require a specialist in this house to resolve my problem. May be that is you! Having a look ahead to peer you.

  26. I together with my guys happened to be checking the best tricks from your site then quickly came up with a terrible suspicion I had not thanked the website owner for those tips. Those boys ended up certainly happy to see them and now have surely been taking pleasure in those things. We appreciate you being quite considerate as well as for obtaining some notable things millions of individuals are really wanting to know about. My very own sincere apologies for not expressing appreciation to earlier.

  27. I don’t even know how I ended up here, but I thought this post was good. I don’t know who you are but definitely you’re going to a famous blogger if you aren’t already 😉 Cheers!

  28. fantastic points altogether, you simply gained a emblem new reader. What would you recommend in regards to your publish that you made some days in the past? Any positive?

  29. Hello, you used to write magnificent, but the last several posts have been kinda boring… I miss your great writings. Past few posts are just a bit out of track! come on!

  30. I loved as much as you will receive carried out right here. The sketch is tasteful, your authored subject matter stylish. nonetheless, you command get bought an impatience over that you wish be delivering the following. unwell unquestionably come more formerly again since exactly the same nearly a lot often inside case you shield this hike.

  31. Good day very nice blog!! Man .. Excellent .. Amazing .. I will bookmark your web site and take the feeds also…I’m happy to search out a lot of helpful info here in the post, we want develop extra strategies on this regard, thanks for sharing.

  32. Whats up very cool blog!! Man .. Excellent .. Superb .. I will bookmark your site and take the feeds additionally…I’m satisfied to seek out a lot of useful info right here in the submit, we want work out extra techniques on this regard, thank you for sharing.

  33. Great blog here! Also your web site loads up fast! What host are you using? Can I get your affiliate link to your host? I wish my web site loaded up as fast as yours lol

  34. Thank you for sharing superb informations. Your web site is very cool. I’m impressed by the details that you’ve on this website. It reveals how nicely you perceive this subject. Bookmarked this website page, will come back for more articles. You, my friend, ROCK! I found just the information I already searched everywhere and simply couldn’t come across. What a great web-site.

  35. Its like you read my mind! You seem to know so much about this, like you wrote the book in it or something. I think that you can do with a few pics to drive the message home a little bit, but instead of that, this is great blog. A great read. I will certainly be back.

  36. Whats up very cool web site!! Guy .. Beautiful .. Wonderful .. I’ll bookmark your site and take the feeds additionally…I’m glad to find a lot of useful information here in the publish, we need work out more techniques on this regard, thank you for sharing.

  37. I simply couldn’t go away your web site prior to suggesting that I really enjoyed the usual information an individual provide for your visitors? Is going to be back continuously in order to check up on new posts.

  38. You have noted very interesting details ! ps decent website . “Great opportunities to help others seldom come, but small ones surround us every day.” by Sally Koch.

  39. Fantastic beat ! I wish to apprentice while you amend your site, how can i subscribe for a blog site? The account helped me a acceptable deal. I had been tiny bit acquainted of this your broadcast offered bright clear idea

  40. Great write-up, I am normal visitor of one’s website, maintain up the nice operate, and It’s going to be a regular visitor for a long time.

  41. I like what you guys are up too. Such clever work and reporting! Carry on the excellent works guys I have incorporated you guys to my blogroll. I think it will improve the value of my website :).

  42. Generally I don’t learn post on blogs, however I would like to say that this write-up very forced me to check out and do it! Your writing style has been surprised me. Thanks, very nice article.

  43. It is actually a great and useful piece of info. I’m satisfied that you shared this useful information with us. Please keep us up to date like this. Thanks for sharing.

  44. You really make it seem so easy with your presentation but I find this matter to be really something which I think I would never understand. It seems too complex and extremely broad for me. I am looking forward for your next post, I will try to get the hang of it!

  45. Somebody essentially assist to make severely posts I might state. This is the very first time I frequented your web page and to this point? I amazed with the analysis you made to create this actual submit incredible. Great job!

  46. certainly like your web site but you have to check the spelling on quite a few of your posts. A number of them are rife with spelling issues and I to find it very bothersome to inform the reality however I will definitely come back again.

  47. My spouse and i ended up being really glad Louis could finish off his research from your precious recommendations he was given in your site. It is now and again perplexing to just find yourself giving freely procedures some people could have been selling. Therefore we see we’ve got the writer to be grateful to for that. The specific illustrations you’ve made, the easy site navigation, the friendships you can give support to engender – it is most incredible, and it’s helping our son and us know that that situation is satisfying, and that is incredibly fundamental. Thanks for the whole lot!

  48. Pretty section of content. I just stumbled upon your blog and in accession capital to assert that I acquire in fact enjoyed account your blog posts. Any way I’ll be subscribing to your augment and even I achievement you access consistently fast.

  49. Hey there, You’ve done an incredible job. I will definitely digg it and personally suggest to my friends. I am sure they will be benefited from this website.

  50. Fantastic beat ! I would like to apprentice while you amend your website, how can i subscribe for a blog web site? The account aided me a acceptable deal. I had been tiny bit acquainted of this your broadcast provided bright clear concept

  51. F*ckin’ awesome things here. I am very happy to peer your post. Thank you a lot and i’m looking forward to touch you. Will you kindly drop me a mail?

  52. It is really a nice and helpful piece of info. I am glad that you simply shared this useful information with us. Please stay us up to date like this. Thanks for sharing.

  53. I do not even know how I ended up here, but I thought this post was great. I do not know who you are but certainly you’re going to a famous blogger if you aren’t already 😉 Cheers!

  54. Thank you, I’ve just been searching for info about this subject for a long time and yours is the best I have came upon so far. However, what in regards to the conclusion? Are you positive concerning the source?

  55. Hello, Neat post. There is an issue along with your site in internet explorer, could check this… IE nonetheless is the marketplace leader and a huge part of other folks will leave out your great writing because of this problem.

  56. This is really interesting, You’re a very skilled blogger. I’ve joined your rss feed and look forward to seeking more of your excellent post. Also, I’ve shared your website in my social networks!

  57. I genuinely enjoy examining on this website, it holds superb content. “Beware lest in your anxiety to avoid war you obtain a master.” by Demosthenes.

  58. I got what you intend, appreciate it for posting .Woh I am delighted to find this website through google. “If one does not know to which port one is sailing, no wind is favorable.” by Seneca.

  59. Normally I do not read post on blogs, but I would like to say that this write-up very pressured me to take a look at and do it! Your writing style has been amazed me. Thanks, quite nice article.

  60. I really like your writing style, wonderful information, thank you for posting :D. “He wrapped himself in quotations- as a beggar would enfold himself in the purple of Emperors.” by Rudyard Kipling.

  61. I do consider all the concepts you’ve presented to your post. They’re really convincing and will definitely work. Nonetheless, the posts are very brief for newbies. Could you please extend them a bit from subsequent time? Thank you for the post.

  62. Some really fantastic info , Gladiola I noticed this. “If a child can’t learn the way we teach, maybe we should teach the way they learn.” by Ignacio Estrada.

  63. Hi, Neat post. There’s a problem with your site in internet explorer, could check this… IE still is the market chief and a big component to other people will miss your wonderful writing due to this problem.

  64. I believe this site has got some really good info for everyone :D. “Time–our youth–it never really goes, does it It is all held in our minds.” by Helen Hoover Santmyer.

  65. There are some fascinating time limits on this article however I don抰 know if I see all of them middle to heart. There is some validity but I will take maintain opinion until I look into it further. Good article , thanks and we want extra! Added to FeedBurner as nicely

  66. Its like you read my mind! You seem to know a lot about this, like you wrote the book in it or something. I think that you could do with a few pics to drive the message home a little bit, but instead of that, this is fantastic blog. An excellent read. I will definitely be back.

  67. HELLOMYSORRY
    Thank you for the auspicious writeup. It in fact was a amusement account it. Look advanced to far added agreeable from you! By the way, how could we communicate?

  68. I was suggested this website by my cousin. I am not sure whether this post is written by him as nobody else know such detailed about my difficulty. You’re amazing! Thanks!

  69. Someone necessarily assist to make significantly posts I’d state. That is the first time I frequented your website page and to this point? I amazed with the research you made to make this actual post incredible. Wonderful process!

  70. Just desire to say your article is as amazing. The clarity in your post is just nice and i can assume you’re an expert on this subject. Well with your permission let me to grab your feed to keep up to date with forthcoming post. Thanks a million and please keep up the rewarding work.

  71. I like this weblog very much, Its a rattling nice position to read and obtain information. “What happens to the hole when the cheese is gone” by Bertolt Brecht.

  72. great issues altogether, you just won a emblem new reader. What might you suggest in regards to your publish that you made a few days in the past? Any sure?

  73. Oh my goodness! an incredible article dude. Thank you Nevertheless I’m experiencing situation with ur rss . Don抰 know why Unable to subscribe to it. Is there anyone getting equivalent rss drawback? Anyone who knows kindly respond. Thnkx

  74. It is truly a great and helpful piece of info. I am happy that you just shared this helpful information with us. Please stay us up to date like this. Thank you for sharing.

  75. Nice read, I just passed this onto a friend who was doing a little research on that. And he actually bought me lunch as I found it for him smile Therefore let me rephrase that: Thank you for lunch! “Any man would be forsworn to gain a kingdom.” by Roger Zelazny.

  76. After I originally commented I clicked the -Notify me when new feedback are added- checkbox and now every time a comment is added I get four emails with the same comment. Is there any way you possibly can remove me from that service? Thanks!

  77. After research a couple of of the weblog posts on your web site now, and I really like your method of blogging. I bookmarked it to my bookmark web site checklist and can be checking back soon. Pls take a look at my site as properly and let me know what you think.

  78. My wife and i ended up being now thrilled that Raymond managed to carry out his preliminary research by way of the precious recommendations he was given using your web site. It is now and again perplexing just to always be giving out information and facts which usually a number of people may have been making money from. And we also do understand we’ve got the blog owner to thank because of that. Most of the illustrations you’ve made, the straightforward blog navigation, the relationships you can help to engender – it’s got all awesome, and it is letting our son in addition to our family understand this subject matter is satisfying, and that is seriously serious. Thank you for the whole thing!

  79. I am often to blogging and i really recognize your content. The article has really peaks my interest. I’m going to bookmark your site and preserve checking for new information.

  80. I discovered your blog site on google and examine a number of of your early posts. Proceed to maintain up the superb operate. I just additional up your RSS feed to my MSN News Reader. In search of forward to studying extra from you in a while!?

  81. Hello, Neat post. There’s a problem with your website in internet explorer, might test this… IE nonetheless is the marketplace leader and a good portion of other people will miss your fantastic writing due to this problem.

  82. Can I just say what a reduction to seek out someone who really knows what theyre talking about on the internet. You undoubtedly know how one can convey an issue to gentle and make it important. Extra folks need to learn this and understand this side of the story. I cant consider youre not more in style since you undoubtedly have the gift.

  83. Thanks for all your effort on this web site. My daughter takes pleasure in managing internet research and it’s really obvious why. I learn all regarding the lively mode you produce practical steps via this blog and even foster contribution from some others on this area while our child is certainly starting to learn a lot of things. Enjoy the rest of the new year. Your conducting a powerful job.
    [url=http://www.michaelkors-outletstore.us.com/michael-kors-smooth-shiny-logo-large-orange-wallets-p-5581.html]Michael Kors Smooth Shiny Logo Large Orange Wallets[/url]

  84. I just want to mention I’m beginner to blogs and definitely loved you’re web blog. Probably I’m going to bookmark your website . You certainly come with fabulous posts. Thanks a lot for sharing with us your web-site.

  85. I simply want to say I’m beginner to blogging and site-building and really enjoyed you’re web blog. Probably I’m going to bookmark your website . You definitely have beneficial articles and reviews. Regards for sharing your web-site.

  86. Oh my goodness! an amazing article dude. Thanks Nonetheless I’m experiencing difficulty with ur rss . Don抰 know why Unable to subscribe to it. Is there anyone getting an identical rss downside? Anyone who is aware of kindly respond. Thnkx

  87. Spot on with this write-up, I really think this website wants far more consideration. I抣l in all probability be again to read way more, thanks for that info.

  88. I抎 have to test with you here. Which is not something I normally do! I enjoy studying a submit that will make individuals think. Additionally, thanks for permitting me to comment!

  89. A formidable share, I simply given this onto a colleague who was doing a little bit analysis on this. And he in reality purchased me breakfast as a result of I found it for him.. smile. So let me reword that: Thnx for the treat! However yeah Thnkx for spending the time to debate this, I feel strongly about it and love reading more on this topic. If doable, as you develop into expertise, would you thoughts updating your weblog with more particulars? It is extremely helpful for me. Big thumb up for this blog put up!

  90. Aw, this was a really nice post. In idea I would like to put in writing like this moreover ?taking time and precise effort to make an excellent article?however what can I say?I procrastinate alot and by no means seem to get something done.

  91. Can I simply say what a aid to search out someone who truly is aware of what theyre speaking about on the internet. You positively know the way to deliver an issue to mild and make it important. Extra people have to learn this and understand this facet of the story. I cant believe youre no more fashionable since you undoubtedly have the gift.

  92. After study a few of the weblog posts on your website now, and I actually like your manner of blogging. I bookmarked it to my bookmark website list and shall be checking back soon. Pls take a look at my website online as properly and let me know what you think.

  93. Youre so cool! I dont suppose Ive read anything like this before. So good to search out any individual with some unique thoughts on this subject. realy thank you for beginning this up. this website is something that is wanted on the web, somebody with somewhat originality. useful job for bringing something new to the internet!

  94. I’m really impressed with your writing skills as well as with the layout on your weblog. Is this a paid theme or did you modify it yourself? Anyway keep up the excellent quality writing, it is rare to see a nice blog like this one today..

  95. I want to get across my admiration for your kind-heartedness giving support to those individuals that must have help on your area of interest. Your real commitment to getting the solution up and down appeared to be particularly beneficial and have usually empowered girls much like me to achieve their goals. Your entire important instruction means a lot a person like me and especially to my peers. With thanks; from each one of us.

  96. Appreciating the time and energy you put into your site and in depth information you provide. It’s good to come across a blog every once in a while that isn’t the same unwanted rehashed material. Excellent read! I’ve saved your site and I’m including your RSS feeds to my Google account.

  97. Do you have a spam problem on this blog; I also am a blogger, and I was wondering your situation; we have created some nice methods and we are looking to exchange techniques with other folks, why not shoot me an email if interested.

  98. I know this if off topic but I’m looking into starting my own blog and was curious what all is required to get setup? I’m assuming having a blog like yours would cost a pretty penny? I’m not very internet savvy so I’m not 100% sure. Any suggestions or advice would be greatly appreciated. Thank you

  99. Hey there, I think your website might be having browser compatibility issues. When I look at your website in Ie, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, amazing blog!

  100. My partner and I absolutely love your blog and find a lot of your post’s to be exactly what I’m looking for. Does one offer guest writers to write content in your case? I wouldn’t mind creating a post or elaborating on a few of the subjects you write about here. Again, awesome web log!

  101. Howdy! I realize this is kind of off-topic however I needed to ask. Does running a well-established website such as yours take a large amount of work? I am completely new to blogging however I do write in my diary on a daily basis. I’d like to start a blog so I will be able to share my personal experience and views online. Please let me know if you have any kind of recommendations or tips for new aspiring bloggers. Thankyou!

  102. Have you ever considered about adding a little bit more than just your articles? I mean, what you say is valuable and everything. However just imagine if you added some great images or video clips to give your posts more, “pop”! Your content is excellent but with pics and video clips, this website could undeniably be one of the best in its field. Excellent blog!

  103. I know this if off topic but I’m looking into starting my own blog and was wondering what all is needed to get setup? I’m assuming having a blog like yours would cost a pretty penny? I’m not very web savvy so I’m not 100% positive. Any recommendations or advice would be greatly appreciated. Thank you

  104. Wow that was strange. I just wrote an very long comment but after I clicked submit my comment didn’t show up. Grrrr… well I’m not writing all that over again. Anyhow, just wanted to say great blog!

  105. Sweet blog! I found it while surfing around on Yahoo News. Do you have any suggestions on how to get listed in Yahoo News? I’ve been trying for a while but I never seem to get there! Thank you

  106. Heya terrific website! Does running a blog such as this require a massive amount work? I’ve no understanding of coding but I was hoping to start my own blog soon. Anyway, should you have any ideas or tips for new blog owners please share. I know this is off subject but I just had to ask. Kudos!

  107. Woah! I’m really enjoying the template/theme of this blog. It’s simple, yet effective. A lot of times it’s difficult to get that “perfect balance” between superb usability and visual appearance. I must say you’ve done a superb job with this. Additionally, the blog loads very quick for me on Safari. Outstanding Blog!

  108. Hi there! Quick question that’s entirely off topic. Do you know how to make your site mobile friendly? My site looks weird when viewing from my iphone. I’m trying to find a template or plugin that might be able to resolve this problem. If you have any suggestions, please share. Thank you!

  109. Greetings from Los angeles! I’m bored to tears at work so I decided to browse your website on my iphone during lunch break. I enjoy the knowledge you provide here and can’t wait to take a look when I get home. I’m amazed at how fast your blog loaded on my phone .. I’m not even using WIFI, just 3G .. Anyways, excellent site!

  110. Hey! This is kind of off topic but I need some guidance from an established blog. Is it difficult to set up your own blog? I’m not very techincal but I can figure things out pretty quick. I’m thinking about creating my own but I’m not sure where to start. Do you have any points or suggestions? Many thanks

  111. Just want to say your article is as surprising. The clearness in your post is just spectacular and i can assume you’re an expert on this subject. Well with your permission let me to grab your feed to keep up to date with forthcoming post. Thanks a million and please keep up the enjoyable work.

  112. Just desire to say your article is as amazing. The clarity in your post is simply great and i could assume you’re an expert on this subject. Well with your permission let me to grab your feed to keep up to date with forthcoming post. Thanks a million and please carry on the enjoyable work.

  113. You actually make it appear so easy along with your presentation however I find this topic to be actually one thing which I think I would never understand. It kind of feels too complicated and very wide for me. I’m having a look ahead to your subsequent post, I¡¦ll attempt to get the cling of it!

  114. I know this if off topic but I’m looking into starting my own blog and was wondering what all is needed to get setup? I’m assuming having a blog like yours would cost a pretty penny? I’m not very web savvy so I’m not 100% positive. Any suggestions or advice would be greatly appreciated. Many thanks

  115. I’m truly enjoying the design and layout of your site. It’s a very easy on the eyes which makes it much more enjoyable for me to come here and visit more often. Did you hire out a designer to create your theme? Superb work!

  116. Superb website you have here but I was curious if you knew of any user discussion forums that cover the same topics discussed here? I’d really love to be a part of group where I can get feedback from other knowledgeable people that share the same interest. If you have any suggestions, please let me know. Appreciate it!

  117. Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You clearly know what youre talking about, why throw away your intelligence on just posting videos to your site when you could be giving us something enlightening to read?

  118. Do you mind if I quote a few of your articles as long as I provide credit and sources back to your blog? My blog site is in the exact same area of interest as yours and my users would genuinely benefit from some of the information you present here. Please let me know if this ok with you. Appreciate it!

  119. Wow, wonderful blog layout! How long have you been blogging for? you made blogging look easy. The overall look of your site is great, as well as the content!

  120. This design is incredible! You most certainly know how to keep a reader entertained. Between your wit and your videos, I was almost moved to start my own blog (well, almost…HaHa!) Great job. I really enjoyed what you had to say, and more than that, how you presented it. Too cool!

  121. Hey there would you mind sharing which blog platform you’re using? I’m planning to start my own blog soon but I’m having a difficult time choosing between BlogEngine/Wordpress/B2evolution and Drupal. The reason I ask is because your layout seems different then most blogs and I’m looking for something completely unique. P.S My apologies for being off-topic but I had to ask!

  122. Hey there! I just wanted to ask if you ever have any trouble with hackers? My last blog (wordpress) was hacked and I ended up losing several weeks of hard work due to no back up. Do you have any methods to stop hackers?

  123. Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You obviously know what youre talking about, why throw away your intelligence on just posting videos to your site when you could be giving us something enlightening to read?

  124. Hi! I understand this is kind of off-topic however I had to ask. Does running a well-established website such as yours require a massive amount work? I am brand new to running a blog but I do write in my journal on a daily basis. I’d like to start a blog so I can share my own experience and views online. Please let me know if you have any recommendations or tips for new aspiring blog owners. Appreciate it!

  125. Thanks for ones marvelous posting! I truly enjoyed reading it, you’re a great author.I will make sure to bookmark your blog and may come back in the foreseeable future. I want to encourage that you continue your great posts, have a nice holiday weekend!

  126. I love your blog.. very nice colors & theme. Did you make this website yourself or did you hire someone to do it for you? Plz reply as I’m looking to construct my own blog and would like to find out where u got this from. thank you

  127. Wonderful blog! I found it while surfing around on Yahoo News. Do you have any suggestions on how to get listed in Yahoo News? I’ve been trying for a while but I never seem to get there! Thanks

  128. I love your blog.. very nice colors & theme. Did you create this website yourself or did you hire someone to do it for you? Plz respond as I’m looking to construct my own blog and would like to know where u got this from. kudos

  129. Hello! This is kind of off topic but I need some guidance from an established blog. Is it very hard to set up your own blog? I’m not very techincal but I can figure things out pretty quick. I’m thinking about setting up my own but I’m not sure where to begin. Do you have any points or suggestions? Thanks

  130. Howdy! Someone in my Myspace group shared this site with us so I came to check it out. I’m definitely loving the information. I’m bookmarking and will be tweeting this to my followers! Exceptional blog and outstanding design.

  131. Do you have a spam issue on this blog; I also am a blogger, and I was curious about your situation; we have created some nice methods and we are looking to swap techniques with others, why not shoot me an email if interested.

  132. Have you ever thought about adding a little bit more than just your articles? I mean, what you say is fundamental and all. However think about if you added some great photos or video clips to give your posts more, “pop”! Your content is excellent but with images and video clips, this site could definitely be one of the greatest in its niche. Great blog!

  133. I do not know whether it’s just me or if everyone else experiencing issues with your website. It appears like some of the text within your posts are running off the screen. Can somebody else please comment and let me know if this is happening to them too? This may be a issue with my web browser because I’ve had this happen previously. Appreciate it

  134. I don’t know if it’s just me or if everyone else encountering issues with your website. It appears as if some of the text on your content are running off the screen. Can someone else please comment and let me know if this is happening to them as well? This could be a issue with my web browser because I’ve had this happen previously. Thank you

  135. Hey! Someone in my Facebook group shared this website with us so I came to take a look. I’m definitely enjoying the information. I’m book-marking and will be tweeting this to my followers! Great blog and wonderful style and design.

  136. I’m really enjoying the design and layout of your blog. It’s a very easy on the eyes which makes it much more enjoyable for me to come here and visit more often. Did you hire out a developer to create your theme? Fantastic work!

  137. Have you ever considered writing an ebook or guest authoring on other sites? I have a blog based on the same ideas you discuss and would really like to have you share some stories/information. I know my subscribers would value your work. If you’re even remotely interested, feel free to shoot me an e-mail.

  138. It’s truly a great and useful piece of information. I’m glad that you just shared this helpful info with us. Please stay us up to date like this. Thanks for sharing.

  139. Hey would you mind letting me know which web host you’re using? I’ve loaded your blog in 3 completely different internet browsers and I must say this blog loads a lot faster then most. Can you recommend a good web hosting provider at a reasonable price? Thanks, I appreciate it!

  140. Hmm it seems like your blog ate my first comment (it was super long) so I guess I’ll just sum it up what I had written and say, I’m thoroughly enjoying your blog. I too am an aspiring blog writer but I’m still new to everything. Do you have any suggestions for rookie blog writers? I’d definitely appreciate it.

  141. I’m not sure exactly why but this blog is loading very slow for me. Is anyone else having this problem or is it a issue on my end? I’ll check back later on and see if the problem still exists.

  142. Wonderful blog! I found it while browsing on Yahoo News. Do you have any suggestions on how to get listed in Yahoo News? I’ve been trying for a while but I never seem to get there! Cheers

  143. Woah! I’m really digging the template/theme of this site. It’s simple, yet effective. A lot of times it’s very difficult to get that “perfect balance” between superb usability and appearance. I must say you have done a amazing job with this. Also, the blog loads super fast for me on Internet explorer. Exceptional Blog!

  144. Hey! I know this is somewhat off topic but I was wondering which blog platform are you using for this website? I’m getting fed up of WordPress because I’ve had issues with hackers and I’m looking at options for another platform. I would be great if you could point me in the direction of a good platform.

  145. Howdy, i read your blog from time to time and i own a similar one and i was just curious if you get a lot of spam responses? If so how do you protect against it, any plugin or anything you can advise? I get so much lately it’s driving me insane so any support is very much appreciated.

  146. Hello there! This is kind of off topic but I need some help from an established blog. Is it tough to set up your own blog? I’m not very techincal but I can figure things out pretty quick. I’m thinking about setting up my own but I’m not sure where to start. Do you have any points or suggestions? With thanks

  147. Howdy terrific blog! Does running a blog such as this take a great deal of work? I have virtually no knowledge of programming however I was hoping to start my own blog soon. Anyhow, should you have any recommendations or tips for new blog owners please share. I know this is off topic nevertheless I just had to ask. Many thanks!

  148. Hey are using WordPress for your site platform? I’m new to the blog world but I’m trying to get started and create my own. Do you need any coding expertise to make your own blog? Any help would be really appreciated!

  149. I am really loving the theme/design of your website. Do you ever run into any browser compatibility issues? A couple of my blog audience have complained about my blog not working correctly in Explorer but looks great in Chrome. Do you have any suggestions to help fix this problem?

  150. I don’t know whether it’s just me or if everyone else encountering problems with your site. It appears like some of the written text within your posts are running off the screen. Can someone else please provide feedback and let me know if this is happening to them as well? This may be a problem with my web browser because I’ve had this happen before. Appreciate it

  151. Have you ever considered writing an ebook or guest authoring on other sites? I have a blog based on the same subjects you discuss and would love to have you share some stories/information. I know my readers would enjoy your work. If you are even remotely interested, feel free to send me an e-mail.

  152. Hey I know this is off topic but I was wondering if you knew of any widgets I could add to my blog that automatically tweet my newest twitter updates. I’ve been looking for a plug-in like this for quite some time and was hoping maybe you would have some experience with something like this. Please let me know if you run into anything. I truly enjoy reading your blog and I look forward to your new updates.

  153. Admiring the time and effort you put into your site and detailed information you provide. It’s good to come across a blog every once in a while that isn’t the same old rehashed information. Fantastic read! I’ve saved your site and I’m including your RSS feeds to my Google account.

  154. Have you ever considered writing an e-book or guest authoring on other sites? I have a blog based on the same subjects you discuss and would really like to have you share some stories/information. I know my audience would appreciate your work. If you’re even remotely interested, feel free to send me an e mail.

  155. Does your site have a contact page? I’m having a tough time locating it but, I’d like to shoot you an email. I’ve got some ideas for your blog you might be interested in hearing. Either way, great blog and I look forward to seeing it develop over time.

  156. You are my inhalation , I have few blogs and infrequently run out from to post .I believe this website holds some very excellent info for everyone. “Dealing with network executives is like being nibbled to death by ducks.” by Eric Sevareid.

  157. Unquestionably believe that which you stated. Your favorite reason seemed to be on the web the simplest thing to be aware of. I say to you, I certainly get annoyed while people think about worries that they plainly do not know about. You managed to hit the nail upon the top and also defined out the whole thing without having side-effects , people can take a signal. Will likely be back to get more. Thanks

  158. you are in point of fact a just right webmaster. The web site loading pace is incredible. It seems that you are doing any unique trick. In addition, The contents are masterwork. you have performed a magnificent task on this topic!

  159. Hi would you mind letting me know which web host you’re using? I’ve loaded your blog in 3 different browsers and I must say this blog loads a lot quicker then most. Can you suggest a good hosting provider at a fair price? Thanks, I appreciate it!

  160. Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You definitely know what youre talking about, why throw away your intelligence on just posting videos to your blog when you could be giving us something enlightening to read?

  161. Superb post however I was wondering if you could write a litte more on this topic? I’d be very grateful if you could elaborate a little bit more. Kudos!

  162. Hey there, I think your website might be having browser compatibility issues. When I look at your blog in Firefox, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, great blog!

  163. Do you mind if I quote a few of your posts as long as I provide credit and sources back to your website? My blog is in the very same area of interest as yours and my visitors would really benefit from a lot of the information you present here. Please let me know if this okay with you. Thank you!

  164. Hello! I realize this is sort of off-topic however I needed to ask. Does managing a well-established website such as yours require a large amount of work? I’m completely new to operating a blog but I do write in my diary on a daily basis. I’d like to start a blog so I can share my experience and thoughts online. Please let me know if you have any kind of recommendations or tips for new aspiring bloggers. Appreciate it!

  165. When I initially commented I clicked the “Notify me when new comments are added” checkbox and now each time a comment is added I get four e-mails with the same comment. Is there any way you can remove me from that service? Thanks a lot!

  166. When I originally commented I clicked the “Notify me when new comments are added” checkbox and now each time a comment is added I get four e-mails with the same comment. Is there any way you can remove me from that service? Bless you!

  167. Hey there! Someone in my Myspace group shared this website with us so I came to check it out. I’m definitely enjoying the information. I’m bookmarking and will be tweeting this to my followers! Fantastic blog and amazing design.

Leave a Reply

リンクの無いコメントは即時反映されます