オブジェクト指向ってクソじゃね?

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/08/24(金) 13:32:09.36ID:ifygL6bT
カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。

偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。

一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として
「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに
アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。

オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で
縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」
という概念はない。

https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96
2018/10/12(金) 00:48:51.77ID:mmIXjKhu
メリットの挙げられない技術を採用するな
2018/10/12(金) 07:03:34.63ID:ogDn0rIL
>>762
全く解消されてないだろ。。
キャプチャーしてる変数の寿命を考慮してなきゃならんし、こんなん使わねーわ。
2018/10/12(金) 08:23:50.28ID:8+F5vpV5
型の問題と寿命の問題を分離しない
OSとGUIを分離しない
フルスタックな環境を作る密結合指向って感じ
2018/10/12(金) 10:20:48.35ID:4mK9L0RW
>>768
それただの設計の問題じゃね?
2018/10/12(金) 11:04:22.00ID:8+F5vpV5
>>769
その設計にオブジェクト指向が関与していると疑われている
その問題の解決にオブジェクト指向は全く寄与しない、と宣言すれば疑いは晴れる
2018/10/12(金) 11:12:44.85ID:4mK9L0RW
>>770
いや、どう見ても設計の機能分けの問題
オブジェクト指向の前にレイヤーってあんだろ?
2018/10/12(金) 17:19:28.65ID:5jm0P0/q
オブジェクト指向信者もDI信者も同じ臭いがするね

【Java】DIコンテナって本当に便利か?
http://mevius.5ch.net/test/read.cgi/tech/1219242206/

次は何を担ぐのやら


外国で流行って育っていくのだから、それなりのメリットはあるんだろうけど、なぜか仕事では恩恵にあずかったことはない
2018/10/12(金) 20:33:03.38ID:4mK9L0RW
設計のセンスの無い奴はどんな流行が来たって糞な設計しか出来ないんだよなぁ
センスがある奴はなんとなくどんな流行のスタイルでもこなして来るからなぁ
774デフォルトの名無しさん
垢版 |
2018/10/12(金) 20:41:34.47ID:CecLyO81
どーでもいーけどコーディングの事設計てゆーのいーかげん恥ずかしくね?w
2018/10/12(金) 20:45:43.93ID:4mK9L0RW
は?
設計はコーディングじゃねーよw
四角い箱描いて矢印や電線で繋げて遊ぶ奴だぞ。
2018/10/12(金) 20:45:57.27ID:SyXP90mj
ある一定以下に対して理解できるような教範が出てこない
だから一部の人しか使えないようになってる
結局は出来る人の間で持て囃されるだけになってしまう
この何か新しいやり方を創造するのと一般に使えるようにする
というのは本来両輪なんだけど
普通以下の人達が使えるようになる教範を作る
というのはかなり難しい上に
それをやる人には余りメリットがないから
なかなか出てこない
だから
オブジェクト指向プログラミングにしても
関数型プログラミングにしてもその他の技術にしても
広く(普通程度以下)使われるのは難しいし
このスレのタイトルみたいな感想を持つしかなくなる
後は自分が出来るけど他の人が出来ないままのほうが出来る人には得だから妨害する
みたいなのが居るくらいだろうかねぇ
2018/10/12(金) 20:48:39.65ID:4mK9L0RW
あー電線繋げては遊ばないわ、危ないしw
点線の間違いだわ。
778デフォルトの名無しさん
垢版 |
2018/10/12(金) 21:12:49.59ID:CecLyO81
ガチでわかっとらん奴やったw
2018/10/12(金) 21:17:29.38ID:mCoAwEvP
>>772
DIはほんと便利
めちゃくちゃ開発が楽になった
780デフォルトの名無しさん
垢版 |
2018/10/12(金) 21:21:05.43ID:xVyRtSc0
少なくともこのスレにいるような低学歴知恵遅れのドカタには
オブジェクト指向言語を適切に使いこなせない
2018/10/12(金) 21:27:17.84ID:d1sPni1g
少なくともこのスレにいるような低学歴知恵遅れのドカタには
オブジェクト指向言語を適切に使いこなせない
2018/10/12(金) 22:41:19.80ID:F7y/wInK
>>772
テストしたことないのかい?
783デフォルトの名無しさん
垢版 |
2018/10/12(金) 23:12:30.21ID:xVyRtSc0
日銀短観のDIは便利
池沼あげのDIはtraitsなみにウンコくさい
2018/10/13(土) 10:26:58.14ID:YNebL+WU
今時DIも使いこなせない人材とか組織にとってのリスクでしか無いよ
あっちこっち結合しまくったクソコードを社内リポジトリにばらまくとか悪夢そのものじゃん
2018/10/13(土) 10:58:13.65ID:H4Y+M12v
DI使っても結合しまくったくそコードはくそのままだ
業務分析の時点でコケて役割分担がぐちゃぐちゃなんだからDI導入したって解決しない
2018/10/13(土) 21:25:17.45ID:YNebL+WU
>>785
DIを使わないから業務分析の時点でコケて役割分担がぐちゃぐちゃになるのでは?
設計者にDIを学習させてDIを使う前提で設計させればそのあたりの分担がキレイになるように意識して設計するようになるよ
2018/10/13(土) 22:13:29.66ID:An0DfPZD
>>786
それで成功した例なんてあんの?
788デフォルトの名無しさん
垢版 |
2018/10/13(土) 22:15:51.44ID:L3Dj2/gz
cのたくさんの構造体にいっぱい変数や関数ポインタもたせて
それ入力にして処理するのと同じ
2018/10/13(土) 22:29:25.59ID:HA3RUpZg
DIはたしかにきれいな設計になるが、めんどくて工数がかかる。
作業者にはYAGNIのほうが優先度高いから勝手に採用できない

だからそういうのはトップエンジニアが最初に管理方針としてきめとくもんだ
末端のプログラマーに責任押し付けるのは酷
2018/10/13(土) 22:38:19.49ID:HA3RUpZg
今のDIはめんどすぎる
既存コードをいじらないで中身をすげかえる
もっと楽な方法はないものか
2018/10/13(土) 22:42:51.86ID:An0DfPZD
DIは言語自体に組み込まれるべきもの
高級言語はどんどん高級になるべきだが
ガベコレ搭載あたりで停滞してしまったからね

本来はDIやデザインパターンやユニットテストや
フレームワークまで高級言語の仕様に含めなきゃいけない
792デフォルトの名無しさん
垢版 |
2018/10/13(土) 22:44:08.09ID:L3Dj2/gz
インターフェースを決め打ちにしたテンプレート作る間抜けな作りと
大してかわらないからな
2018/10/13(土) 22:48:54.83ID:c+yfSqJ1
使用者との合意の無いインターフェースほどクソなモンは無い
独りよがりで考えたものは全部クソなので誰にも見られないうちに捨てて欲しい
2018/10/13(土) 22:54:18.52ID:An0DfPZD
逆に言えば使用者との合意のあるインターフェースは問題ない
ということになってしまう。
2018/10/13(土) 22:59:41.42ID:c+yfSqJ1
>>794
もちろんそうだろ
2018/10/13(土) 23:21:29.03ID:An0DfPZD
>>795
あ、そうだって認めたねw

つまり、お前はインターフェースに問題があるとしようとしていたようだが、
俺はインターフェースには問題ないという話への誘導に成功したわけだ
797デフォルトの名無しさん
垢版 |
2018/10/13(土) 23:38:37.37ID:L3Dj2/gz
クソが余計なことをして
余計にクソなコードを生産するサイクルが途絶えることはない
2018/10/13(土) 23:45:30.90ID:An0DfPZD
SEが余計なことをして
クソコードを量産することになるのは
よくある話だな
2018/10/14(日) 11:01:28.22ID:RzJcTIeH
DIを使わないと結合部分に余計なコードが入り乱れて大変なんだよな
2018/10/14(日) 12:27:39.55ID:mBxOrkWE
え?どんなコードが入るの?
ありえないのに
2018/10/15(月) 20:24:46.22ID:vo4hBZ/w
なあ、おまえのクラス内に公開変数作って、そいつをインクルードして関数呼び出し時にポインター参照で指定するなんてインターフェス、誰が言い出したの?
しかも各関数は自前のその公開変数を直接参照して動いてるし。
こんな中途半端なやり方するなら、最初から隠蔽しちゃってくださいよ。
2018/10/15(月) 20:30:03.66ID:1WHouwEf
ごめん自分のデータクラスを全クラスの共通IFにする自信がなかった
2018/10/15(月) 21:16:54.08ID:E6pr56BO
 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
804デフォルトの名無しさん
垢版 |
2018/10/16(火) 03:09:47.94ID:ou8fzFot
この記事拍手の数すげぇな。まだ伸び続けてる
Goodbye, Object Oriented Programming
https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53
2018/10/16(火) 07:54:43.79ID:Z3LiiLXa
誰か和訳してよ
2018/10/16(火) 07:57:35.98ID:Z3LiiLXa
オブジェクト指向を厚く語るヤツは
お勉強いまいちのヤツが多くて信用できないけど、
さらっとオブジェクト指向で書いたようなライブラリを公開してるヤツが
高学歴というわけでもない不思議な業界だよね
2018/10/16(火) 08:20:25.22ID:Jp8CUHhN
Banana Monkey Jungle Solution

まで読んだ
2018/10/16(火) 09:47:48.81ID:hiAtkD1Q
Elm最高まで読んだ
2018/10/16(火) 10:44:44.96ID:KsONw+2K
結局関数プログラミングが良い
って書いてある様に見えるけど
オブジェクト指向に対して何がどう良いのかは書いてないように見える
オブジェクト指向の問題点の指摘自体は有ってるように思えるけど
そもそもそういう使い方をするものじゃない
って気がするなぁ
現実世界とどうたらこうたら
こういう書き方をする人は自分からみてほぼ間違えている様に見える
騙された
って書いて有るけど
オブジェクト指向ってそんなに劇的に何かが壮大に変わるわけじゃないんだけど
その辺を誤解しているかオブジェクト指向を宣伝している奴がそもそも捕らえ違いをしている
そう自分には感じる事が多いなぁ
2018/10/16(火) 10:49:18.08ID:hiAtkD1Q
現実世界とマッピングさせようとしたらそりゃ上手くいかんし
バナナモンキージャングルになるわな
あほくさ
2018/10/16(火) 11:00:52.85ID:sVO7hlJ7
アクセス修飾子について分かりやすい説明しているサイトない?
privateからゲッター → セッターの理由がわかんないんだよな。
publicとの違いがなんなのか
2018/10/16(火) 11:06:30.91ID:HqnwAz6t
>>811
アクセサーを用意すると
ゲトーとセトーのアクセスを個別に制御できる
2018/10/16(火) 11:07:25.98ID:HqnwAz6t
ゲターもせターもパブリクーにするなら
アクセサーとフィールドの違いはない
2018/10/16(火) 11:39:32.23ID:8J+M5yKD
あとから処理をフックできるぞ!
2018/10/16(火) 11:40:12.83ID:Ul6KAhVk
setget時にログ出したいときに一括でできるぐらいか?
2018/10/16(火) 13:06:07.08ID:GbK/byr7
>>811
わかんないなら使わなくていいよ
用もないのにゲッターセッターを用意しろってのは間違って広まった悪いスタイルだ

多態したいとか、書かれてるようにログを取りたいとか、アクセサがあるとインスペクタで値が見えて便利とか
なんか用事がある時だけでいい
2018/10/16(火) 13:22:26.52ID:sVO7hlJ7
>>816
色々サイトみてるけど不要論も結構あるんだよな

よくわからないけどありがとう
2018/10/16(火) 14:20:20.47ID:cFNbEHw0
言語仕様で何とでもなるものにいちいちゲッターセッター付けるの無駄じゃね?
2018/10/16(火) 14:59:03.86ID:8J+M5yKD
それがプロパティなわけだが
ゲッターセッターと機能が重複しててほぼシンタックスシュガーで邪魔
2018/10/16(火) 15:33:44.68ID:pkWZobMJ
今時まだゲッターセッターなんて無意味なもん書いてる奴いんのか。
821デフォルトの名無しさん
垢版 |
2018/10/16(火) 16:52:45.97ID:nQomBRvE
セットなんちゃらって書く場面を考えると
なにかの状態遷移を伴うケースが大抵である
だとしたら、それを具体的に示す関数を書くべきなのでは
初期化が不便だというのもなんか違う

設定するメンバの組み合わせは決めておくべきではないか
それに併せて初期化関数を用意するだけ
2018/10/16(火) 17:08:05.58ID:JHQMnpCL
>>820
プロパティがない言語ではゲッターセッターが
プロパティの代わりになる
2018/10/16(火) 17:10:16.39ID:JHQMnpCL
>>821
> セットなんちゃらって書く場面を考えると

セットなんちゃらって書くと思うからいけない。
本当に書きたいことは、属性の変更
2018/10/16(火) 18:13:44.49ID:AosmVSTK
いつもクラスの例にでてくるPersonクラスはNameとAgeを持ってるけどあれ適当だよな
Ageは不変じゃないからいつの時点のAgeなのかもわからん

本来は誕生日を持っておいてAgeが必要なときにいつの時点の年齢が欲しいかを引数で与えて計算すべきなんだよな
825デフォルトの名無しさん
垢版 |
2018/10/16(火) 18:57:36.52ID:PnSVhV/K
言われたらそうだなw盲点だった
2018/10/16(火) 19:03:13.54ID:JHQMnpCL
そこででてくるのがプロパティだよ
ageは属性かメソッドかといったら属性だろ?

一見属性にアクセスしているようで、内部では
いろんな処理を行って値を返す。
それがプロパティ
2018/10/16(火) 19:04:22.70ID:JHQMnpCL
>>825
盲点でも何でも無いよw

例えば、Configクラスであっても、いつの時点のConfigかわからんだろ?
一年前の設定がほしいかもしれない。
2018/10/16(火) 19:12:47.50ID:AosmVSTK
>>826
引数が渡せるプロパティじゃないとね
c#使いなんだけどc#は引数を渡せない
2018/10/16(火) 19:22:26.29ID:AzP++FB2
状態状態ってよく悪者にされるけどOOPの肝はのへんににあると思う
#include <iostream>
struct logger {
std::ostream *out;
logger() : out(0) {}
void p(const char *s) {
if (out) *out << s << std::endl;
}
};
void f(logger &l) {
l.p("foo");
l.p("bar");
}
int main() {
logger g;
f(g);
g.out = &std::cout;
f(g);
g.out = &std::cerr;
f(g);
return 0;
}
ログの有効無効なんかをこうやって切り替えるのって
そんなに悪いこと?
2018/10/16(火) 19:24:41.24ID:GbK/byr7
Delphiなら配列の構文で引数付きプロパティを扱えたりするが
そんなことするぐらいならpersonからはbirthdayだけ見せて
今何歳かなんて呼び出し側で勝手に計算しやがれって思うわw
2018/10/16(火) 19:26:14.38ID:OiVT6sa2
読み取りのプロパティは冪等であるべきじゃないの?
2018/10/16(火) 19:27:08.86ID:JHQMnpCL
Nameも不変じゃないし身長体重性別だって不変じゃない
商品の値段も不変じゃない
不変のものなってまず無いだろう。

つまりは、オブジェクトの状態の過去のスナップショットを
オブジェクト自身に持たせるのが正しい設計かという話
2018/10/16(火) 19:30:01.71ID:GbK/byr7
>>831
だから>>824は時刻を引数で与えるよう提案しているわけだ。最初からそういう話
personクラスが中で勝手に現在時刻を取得してたりしたら複数インスタンスのageの基準がずれたりして
使い辛くてかなわんだろう
2018/10/16(火) 19:33:44.42ID:JHQMnpCL
>>833
その理屈だと結婚などでNameが変わることもあるから
Nameにも日時を与えるようにしないといけなくなる
2018/10/16(火) 19:34:54.98ID:AosmVSTK
話がずれてる
本質が理解されてないらしい
2018/10/16(火) 19:35:57.94ID:JHQMnpCL
本質は>>832に書いたとおり

> つまりは、オブジェクトの状態の過去のスナップショットを
> オブジェクト自身に持たせるのが正しい設計かという話
2018/10/16(火) 19:37:46.55ID:AosmVSTK
誕生日だけが提供されていたらコードのあちこちで年齢を出すメソッドが別々に書かれるかもしれない
同じ処理が複数で書かれてそれも同じ処理とも限らない

ロジックが散らばるのはよくないからクラスが持つべきではないかと思う
2018/10/16(火) 19:38:15.60ID:eMqRZshQ
大小比較のアルゴリズム自体を引数で渡したり、
オブジェクト指向っぽくてエレガントに見えはするけど、
一般プログラマには可読性低いなー
と思ったり。

一昔前のオブジェクト指向設計が売りの会社たちは、
オナニー会社として、まるで奮わなかったもんな

やっぱ適正レベルってもんが大事だよね
2018/10/16(火) 19:40:14.57ID:GbK/byr7
>>837
そこは、年齢に限らず単に時刻の差を計算する処理として
dateクラスのメソッドかグローバル関数であるべきでは
2018/10/16(火) 19:41:53.17ID:eMqRZshQ
C++はベターCとして、文字列いじるときとか楽できればいいんじゃね?

でもmallocとかメモリ管理が面倒だから、C#やJavaに流れるよね
要員確保できるもの
2018/10/16(火) 19:43:35.70ID:AosmVSTK
>>839
間違っても年齢を出す処理はdateクラスに持たせるべきではない

誕生日から年齢を出すのは実は結構めんどくさい
日本での年齢は日本の法律にのっとって決まってる
2018/10/16(火) 19:43:50.71ID:eMqRZshQ
だいたいそういうのは業務共通クラスとしてstaticメソッドてんこ盛りで置いておくよね
2018/10/16(火) 19:46:28.35ID:JHQMnpCL
つーか簡単だろ?

日付クラス。もしくは日付補助クラスに
2つの日付の差を年で返すメソッドを追加する

Personクラスには、誕生日とageプロパティをもたせ
ageプロパティは、誕生日と今日の日付の差を
さっきの年で返すメソッドを呼び出すだけにする


テストは日付クラスのメソッドはそのまま年計算のメソッドのテストを書けばいいし
Personクラスのテストは、単体テストの観点から日付クラスが
外部モジュールになるので年計算のテストは不要(すでにやってる)
年計算のメソッドを期待したとおりの引数で呼び出していることの確認と
返り値をそのまま戻しているかを確認すればいい


特定の年月日の年齢が知りたいなら、誕生日プロパティと特定の日付から
日付クラスの年計算メソッドを呼び出して差を計算するか、
適切な場所があるならそこにメソッドをおけばいい
2018/10/16(火) 19:47:01.66ID:JHQMnpCL
>>841
> 間違っても年齢を出す処理はdateクラスに持たせるべきではない

理由ぐらい書けよな
2018/10/16(火) 19:47:46.46ID:JHQMnpCL
dateクラスに持たせるべきではないというのなら
年齢計算クラスに持たせればいいだけだな
2018/10/16(火) 19:47:59.81ID:GbK/byr7
>>841
すまん、ならdateクラスは撤回する
国にも依るとなると尚更personにも持たせたくないな
単にグローバル関数にするか、いっそそれ用のクラスツリーをでっち上げて後々多態できるようにするか、かなあ
2018/10/16(火) 19:48:53.47ID:tUmXldvA
>>843
じーちゃん132歳とか出るパターンじゃね?
2018/10/16(火) 19:49:01.40ID:JHQMnpCL
国によって年齢計算のアルゴリズムを変えたいというのなら
ストラテジーパターンの出番だなw
849デフォルトの名無しさん
垢版 |
2018/10/16(火) 19:54:14.32ID:nQomBRvE
みんな賢いねぇ
2018/10/16(火) 20:36:04.05ID:83dvK2wh
俺やったらageプロパティやageオブジェクト作るんじゃなくて
ageクラス作ってpersonのデリゲートメソッドにageクラスオブジェクト返すものを作る。これで年齢とはそもそもなんぞや定義はの面倒な過程の話にも対応出来る
だが書く途中でゲッターですませやとキレだすと思う
2018/10/16(火) 20:39:51.39ID:+sj1AQoJ
普通に考えたら person と基準日を表すオブジェクトから年齢を返す関数を作るってことになると思うんだが。
852デフォルトの名無しさん
垢版 |
2018/10/16(火) 20:42:25.71ID:H029zngb
>>850
定義もわからんもの作んなカスwwww
2018/10/16(火) 21:14:56.44ID:83dvK2wh
>>852
定義がわからんからオブジェクト指向やろう
というか俺はプロパティで済ますわ
2018/10/16(火) 22:05:40.03ID:t+SGPyRj
もうメンバー変数とメンバー関数が混在するクラスは作るな
関数しかないinterfaceで十分
関数が一つしかないならlambdaでいい
2018/10/16(火) 22:35:26.96ID:uJDDS3c2
それ、区別する必要あるの?
856デフォルトの名無しさん
垢版 |
2018/10/16(火) 22:42:29.73ID:H029zngb
正直必要かどうかはわからない
ただおまえが欲しい
だめか?それだけじゃ?
857デフォルトの名無しさん
垢版 |
2018/10/16(火) 22:45:36.90ID:VMcjBADQ
その低学歴知恵遅れが作ったメソッドは
うるう年考慮してなさそうで変なバグが入ってそうだわ

2000年10月20日生まれなら
普通にintで
(20181016-20001020)/1000
でしまいだからな
858デフォルトの名無しさん
垢版 |
2018/10/16(火) 22:48:30.57ID:VMcjBADQ
そもそも常識的に
特殊なケースを除いて日付の引き算で
経過年数がかえってくるという発想はないからな

経過日数はあったとしてもな
859デフォルトの名無しさん
垢版 |
2018/10/16(火) 22:52:46.85ID:VMcjBADQ
(20181016-20001020)/10000
こうだな
危ない。。。
860デフォルトの名無しさん
垢版 |
2018/10/16(火) 22:54:43.61ID:VMcjBADQ
このとおり、
やっぱりな低学歴知恵遅れが
オブジェクト指向にふれるのは危険

オレぐらいのレベルがないとムリ
861デフォルトの名無しさん
垢版 |
2018/10/16(火) 23:02:22.64ID:+0KL0EUx
俺の周りじゃあ
バカほど大喜びで使っているよ
2018/10/17(水) 08:20:36.48ID:K4tsdk4L
>>832
勝手に変わるか、と言う意味では、生年月日は不変だけど、年齢は変わるんでは?

>>833
なるほど。そもそもそれはプロパティとは言ってなかったんだな。
それはおっしゃるとおり、関数にすべきだと思う。
2018/10/17(水) 08:22:14.61ID:K4tsdk4L
>>857
年齢はその前日の満了を持って加算される、のルールで抜けるパターンがあるんじゃね?
半角さんは間抜けなの?
2018/10/17(水) 09:03:37.20ID:Vm5CNq+z
半角さんを怒らせたら低学歴知恵遅れにされちゃうよ
2018/10/17(水) 09:56:27.08ID:18gBK5Xa
大抵の場合、正しく理解せずに中途半端な実装してる案件にぶち当たって嫌な思いした奴がここに集うんだろ?
866デフォルトの名無しさん
垢版 |
2018/10/17(水) 10:09:33.91ID:nljGc94P
実装レベルの議論してるやつと設計レベルの議論してるやつ
さらにもーちょい上から俯瞰して物を言ってるやつ
全部ごちゃ混ぜになってて面白いね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況