X



【初心者歓迎】C/C++室 Ver.104【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
0550デフォルトの名無しさん
垢版 |
2019/02/24(日) 09:40:01.37ID:4ommn3XM
constはキーボード入力の観点からはそんなに苦じゃない
stdとかarrayが割りと入力しづらい
左右均等に割り振られてると楽な感じ
0554デフォルトの名無しさん
垢版 |
2019/02/24(日) 10:37:36.70ID:haqs87u6
>>545
>>544のこと言ってるの?
>>537は、ポインタの指し先だけでなく、戻り値を格納する変数自体を定数にしなければさほど意味がないっていう主張だと理解したけど、合ってる?
ローカル変数を定数化したければ呼び出し元が勝手にやればいいし、戻り値をconst char*にする重要性に比べたらそれをする必要性なんてごく僅かで"さほど意味がない"なんてとても言えないと思うけど
0557デフォルトの名無しさん
垢版 |
2019/02/24(日) 15:05:59.28ID:uFOuUY9d
constみたいな糞どうでもいい些末なことより
配列のサイズとオーバーフローの管理を強化するべきだったんだよ
互換性捨てなきゃならんが
0558デフォルトの名無しさん
垢版 |
2019/02/24(日) 15:35:26.16ID:2tRfk65D
>>557
そこはCの負の遺産を引き継いだのではなく、可能な限り実行時オーバーヘッドを小さくする実装手段を提供するというCの基本スタンスを継承しただけだろう。それが負の遺産というなら他の言語の方が適切なんだからそれを選択すればいいよ。
C++を使いたく、ある程度の実行時オーバーヘッドが許容できるときはstd::vectorという選択肢があるけど、それじゃダメなのか?
0559デフォルトの名無しさん
垢版 |
2019/02/24(日) 16:47:00.15ID:RgZ/0jGo
>>556
const に関しては C++ で新規導入された仕様を ANSI C に逆輸入、
みたいな感じじゃなかったっけ?
そのせいか、定数としてconst変数を使えないとか中途半端になってる。
C++ が C の負の遺産を切り捨てるべきだったとしても、
const はその「C の負の遺産」の範疇に含まれないかと。

いずれにせよ、今さら言っても、現に存在する C++ はどうもならんよね。
そういう新プログラミング言語が出ても、それは C++ じゃない別物ってことで。
0560デフォルトの名無しさん
垢版 |
2019/02/24(日) 16:57:30.90ID:2fcQjxFq
そういうのはDで良いと思う
0562デフォルトの名無しさん
垢版 |
2019/02/24(日) 17:34:26.40ID:qxqTarkR
>>557
at()使え。
>>556
constが負の遺産とか頭おかしい。
ドキュメントにこの変数は内部で変更しませんとか書くよりよっぽど楽だろ
0563はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/24(日) 17:36:09.20ID:gUJTdPsI
>>562
負の遺産だよ。
const キーワードを廃止して
デフォルトの挙動を const に出来れば
どれほど良いことか。
という意味で。
0567デフォルトの名無しさん
垢版 |
2019/02/24(日) 18:48:30.19ID:qLJosHl4
そこまで挙動を変えるなら別言語でやれば良いし、実際rustとか他の言語としてあるだろ。
0569デフォルトの名無しさん
垢版 |
2019/02/24(日) 19:20:28.43ID:iK4D+UQi
>>563

>>567 も書いてるけど、それ何てRust?と思った。
0570はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/25(月) 01:48:46.07ID:LzC1voP1
負の遺産でも互換性とのトレードオフだしな。
いいことばかりじゃないけど、悪いことばかりでもない。

とりあえず const は付けれるだけ付けとけというのが
ベストプラクティスだと思う。
0571デフォルトの名無しさん
垢版 |
2019/02/25(月) 12:52:11.08ID:y5m/9TYH
>>563
引数だけなら同意してもいいけど変数はどうするんだ?
for(variable int i = 0; i < 10; i++){
とかはあまり書きたくないぞ
0572はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/25(月) 13:56:12.72ID:LzC1voP1
>>571
まあそこはもしもの話だから。
最初から const なら文法もそれに
沿ったものになってただろうさ。
0573デフォルトの名無しさん
垢版 |
2019/02/25(月) 17:39:50.14ID:ubojwQhV
確かに、関数内で作ったローカル変数だけデフォルト変更可能、
他所から持ちこんだ、ポインタの先や参照、グローバル変数へのアクセスは
基本的に読み出しのみ許可で、明示した場合だけ変更できる、なら
「勝手に書き換えたのは誰だ!?」ってバグは減りそうだね。
0575デフォルトの名無しさん
垢版 |
2019/02/25(月) 20:42:12.40ID:lqvZQt+c
そうそう、だから普通にC++書いてる人は
とりあえず引数に全部 const つけるでしょ
それはそういうことだよ
0576デフォルトの名無しさん
垢版 |
2019/02/25(月) 20:44:41.85ID:x+rkal0w
引数じゃなく method の const は後悔することがちょいちょいと

class foo {
public:
void method() const;
};
0577デフォルトの名無しさん
垢版 |
2019/02/25(月) 20:50:25.72ID:1EOktSCH
constつけときゃいいってのもなんか胡散臭い印象しかないな。
そんなことよりも変更や生成を行う場所、タイミングを局所化するってのが本質だと思うが。
0578はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/25(月) 20:56:50.13ID:LzC1voP1
const が必要なところに付けるって考えるよりは
const では駄目なところでは外すという考え方の方が
安全っぽいという話であって、
適切に使い分けろというのは大前提のことだってことは補足しておく。

const が当たり前だって気持ちになると
変更が必要な個所は自然に局所化されるでしょ。
0580デフォルトの名無しさん
垢版 |
2019/02/25(月) 22:14:33.44ID:1EOktSCH
なんというかもう修正が一切されないコードしか想定してない印象を受ける。
0581デフォルトの名無しさん
垢版 |
2019/02/25(月) 22:37:43.55ID:rMTHv0xs
やりすぎオブジェクト指向といっしょで
事故起こりにくいとこでこだわっても変更に弱くなるだけ
0583デフォルトの名無しさん
垢版 |
2019/02/26(火) 00:51:25.18ID:wcHiR3Ib
初心者で申し訳ないんですが、c/c++を学ぶため何か作りたいのですが、cで作る意味のあるいいお題はないでしょうか。JavaやC♯、rubyは一通りかける感じですがcはmallocなど知ってはいても使ったことはないレベルです。よろしくお願いします!
0585はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/26(火) 01:30:28.38ID:azIRgqwp
>>583
いきなり「実務的な」プログラムを書くのはオススメしないよ。
C/C++ には歴史的経緯によってクソな落とし穴と「未定義」がたくさんあるので、
たとえ期待通りに動いたとしても正しくないプログラムであることは多い。
初心者向けのしょうもない (他の言語でやる入門と大差ないような) 題材で小さなプログラムを書いて
ブログとか Qiita とかに書いておけばベテランがよってたかって指摘してくれるさ。
そういうので基本的な落とし穴くらいは理解してから進んだ方が良いと思う。
0586デフォルトの名無しさん
垢版 |
2019/02/26(火) 01:35:07.18ID:F6jD76wH
HDDの中を検索するプログラムとか、整理するプログラムとか
こういうのがあったら便利だなっていう物を考えて作ってみる
途中分からなくなったら、ここに相談に来ると良い
親切な人が教えてくれる、かもしれない
あてにはしないこと
0587デフォルトの名無しさん
垢版 |
2019/02/26(火) 01:49:53.01ID:2prSgTvN
おっさんらジイさんらの世代だと
「こういうのあったら便利だよな」と思って作りはじめるパターンは有効だったけど
今はそういうの探したらほとんどあるからある意味不幸だよな
しかも自分で作ってたらとてもここまで作ってるヒマないっていうぐらい高機能なのが多いし
0588デフォルトの名無しさん
垢版 |
2019/02/26(火) 01:50:17.99ID:wcHiR3Ib
>>584
>>585
>>586
ありがとうすごく参考になりました。デスクトップランチャーとかほしいと思って作るならWPFだし、Cで実用的なほしい物ってむつかしいんですよね。初心者向けの小さなプログラムは上記のブラーとかでしょうか?Cで書く意味がある題材ってわからなくて。。。
0589デフォルトの名無しさん
垢版 |
2019/02/26(火) 01:59:04.98ID:H+xdnOpD
>>588
そもそも自分がC/C++を身につける意味があるかというとこらから見直した方がいいのでは?
直ちに必要な訳ではないが将来的に身に付けたいというなら、先に他の人が言っていたようにいきなり実用的なプログラムから入るより練習問題レベルの小品をコツコツ作っていった方がいいと思う。
0590はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/26(火) 02:00:19.43ID:azIRgqwp
どうしても自分が欲しくて既存のものがないってケースでも、
既存のものをバッチファイルで繋げればできるって程度のものだったりするもんな。
そういう意味じゃ、日常ではスクリプト言語の方が使うことが多いとは思う。
俺が一番最近に書いた C のプログラムもスクリプト言語の拡張パッケージだし。
0591デフォルトの名無しさん
垢版 |
2019/02/26(火) 02:19:19.20ID:F6jD76wH
>>588
例えば容量の大きなHDDだと、同じファイルが複数場所にあったりするじゃない?
そういうのを見つけて、チェックした後削除すれば容量節約という実利もあるよ
0592はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/26(火) 02:22:08.89ID:azIRgqwp
>>588
C/C++ で書く意味ということに最初は拘らなくてよいと思う。
こだわらなくてもプログラムの構成の仕方、書き方には確実に違いがあるから、
むしろ比較しながら学んだ方がいいかもしれない。
0593デフォルトの名無しさん
垢版 |
2019/02/26(火) 02:40:55.07ID:OTQ63qDn
C/C++使う必要性がわからないならやらないのが正解
今だにこんなクソ言語使ってるのはそれしか選択肢がないから
あるいは物好きな言語マニアか
0595588
垢版 |
2019/02/26(火) 08:48:58.01ID:+14u2RP+
こんなにレスもらえると思いませんでした、他の言語スレや板だともっと殺伐としてます。。。ありがとうございます。
低レイヤを高速で処理できるのが魅力だと思うので最終的には任意のパケットを送受信できるデーモンを作りたい。ので、>>591のいう同名ファイル検索デーモンから始めようと思います。
0596デフォルトの名無しさん
垢版 |
2019/02/26(火) 09:06:06.17ID:OTQ63qDn
ならechoサーバーから入ってhttpサーバーという定番ソケットプログラミングコースもおすすめ
まぁでもその検索デーモンとやらでファイルの扱い勉強してからでいいだろうな
高速化に興味あるならC/C++の標準ライブラリでなくOSのnativeのapiを積極的に使うのもいい
ファイルならメモリマップドファイルを使ったり(ファイル名調べるだけなら不要だけど)
他には検索アルゴリズムに凝る方向とかね
0598デフォルトの名無しさん
垢版 |
2019/02/26(火) 14:41:46.79ID:8+7ktUtN
globalに宣言されてる変数と同じ型同じ名前で
関数内にlocalに宣言されたものがあるとき
警告出してくれるオプションって何だっけ
0599デフォルトの名無しさん
垢版 |
2019/02/26(火) 16:05:20.40ID:5MxkS3P7
>>595
なんで、そんな面倒くさい事をしなきゃならないんだ?

Ruby なら、PowerShell から、1-liner で、
Rubyで作られた遅いウェブサーバー、WEBrick が起動する

ruby -run -e httpd . -p 8080

そのフォルダに、index.html があれば、
何も考えなくても、これでブラウザからアクセスできる

http://localhost:8080
0600デフォルトの名無しさん
垢版 |
2019/02/26(火) 16:39:31.27ID:2RZ4BMiv
>>599
お前は相手の意図を理解する気がまったくなく、人とのコミュニケーションができないことをさっさと理解して、巣にかえって閉じ籠っていてくれ。
ここはお前に用がある奴は一人もいない。
0601588
垢版 |
2019/02/26(火) 17:33:10.46ID:+14u2RP+
みなさんありがとう
今日は会社で暇だったのでコピペベースながらUDPで任意のメッセージ送受信出来るようになった
ヘッダでincludeする構造体って宣言済みのクラスみたいな感じで使えることを理解しました。(udphdrを使わずにsendしたからか、送れたけどudpチェックサムは自動で計算されなかった)

tcpは、というかhttpサーバは難しそうですが頑張ります!
0602デフォルトの名無しさん
垢版 |
2019/02/26(火) 17:44:16.64ID:MNG9zBp3
>>598
gcc/clang だと -Wshadow だな。
-Wall -Wextra とは別に指定する必要があるようだ。
細かいことを言えば、同じ型でなくても、名前が隠される場合は警告が出る。

今ネットで調べて確認、これからオイラも使うことにする。
0603デフォルトの名無しさん
垢版 |
2019/02/26(火) 23:22:44.06ID:8Je4SUY+
同じ意味だけど型が違うときの変数名ってどうされてますか?
いつも困ってます。

例)

float2 fPos( 1.0f, 2.0f );

XMFLOAT2 fPos( fPos.x, fPos.y ); ←当然同じ名前は×
0605デフォルトの名無しさん
垢版 |
2019/02/27(水) 07:53:03.71ID:3Jl+ieqT
>>603
よくシステムハンガリアンは悪と言われるけど、この例のように同じ内容で型名の違いに意味がある場合は、型名に関するプリフィックスをつければいいんでない?
とあるライブラリに渡す境界部分ならそのライブラリ名に関するプリフィックスとか。
0606デフォルトの名無しさん
垢版 |
2019/02/27(水) 19:12:35.49ID:8imVoWCJ
初心者ですみません、こんなコードをみたのですが2点わかりません。
char packet[1500];
memset(buf, 0, sizeof(buf));
ether_header *eh;
eh = (struct ether_header *)packet;

たぶん、1500byteのメモリを確保して0埋め、ether_header構造体のポインタを宣言してpacketのアドレスを渡す、としたいのだと思います。

分からないのは0埋め対象が宣言されていない変数bufであること、packetのアドレスを渡すのにわざわざether_header型のポインタにキャストしている2点です。よろしければ教えてください。

https://qiita.com/marufeuille/items/81f323a52a6fd3bd530c
0609デフォルトの名無しさん
垢版 |
2019/02/27(水) 19:41:57.94ID:vHAcjSp1
>>606 の引用元を見るとコード片だから、実際にはコンパイルしてないんだな。

char packet[1500];
memset(buf, 0, sizeof(buf));
は、packet と buf が同じもので、正しくは

char packet[1500];
memset(packet, 0, sizeof(packet));

なんだと思う。最初は両方とも buf と書いてあったけど
「もっと自ら語る変数名にしよう」と packet に変えたはいいが、
memset() の方では直し忘れた、というお話かと。


(struct ether_header *) のキャストは、コンパイラの警告対策だな。
…って言うか、これキャストしないでも警告だけで通るのね。
0610デフォルトの名無しさん
垢版 |
2019/02/27(水) 19:48:31.45ID:cPR259KO
やってきたパケットのうち 頭のEthernet Header にフォーカスしてる意図でのキャストかな?

最終的には char [1500] で受け取ったパケットの配分を(パディング無しで)
 struct TCPpacket {
  Ethernet_Header eth;
  IP_Header iph;
  TCP_Header tcph;
  char* TCP_payload[]; /* 末尾可変サイズ */
 };
に配分したいんだろうけど、手を抜くなら union にしそうだわ

union Packet {
struct TCPpacket tcp;
char* packet[1500];
};
0611603
垢版 |
2019/02/28(木) 00:25:33.39ID:OS/9xoBt
>>604
>>605
ご提案ありがとうございます!
何らかのプリフィクスで識別が妥当そうですね。
ローカル名前空間みたいな概念があると便利そうですが・・・。

local namespace XM
{
  XMFLOAT2 fPos;
}

float2 fPos( 1.0f, 2.0f );

XM::fPos = { fPos.x, fPos.y };
0615デフォルトの名無しさん
垢版 |
2019/02/28(木) 22:42:25.23ID:chn/XevV
いやーCは簡単な言語だけどC++はとんでもなく難しい言語だと思うぞ
解説本が電話帳より分厚いなんてな自然言語超えてる
0618デフォルトの名無しさん
垢版 |
2019/03/01(金) 00:09:02.27ID:TIzWjpCx
しかも、言語仕様の改訂が3年ごとと早すぎて、
邦訳解説本はもちろん、原書でもリリースがおいつかず、
仕様改訂を繰り返すたびについてこれないユーザーをふるい落とす恐るべき言語
仕様改訂の世代を重ねるごとに中国以上の人口減少率でユーザー数が減少する既に終わった少子化言語ww
0619デフォルトの名無しさん
垢版 |
2019/03/01(金) 01:01:16.39ID:SPEgyt6t
なんか皆C++はむずかしいむずかしいっていうが、そんなむずかしいか?
俺的には今時のECMAScriptと各種フレームワークの使い方のほうがよほどむずかしい。
2、3年もすると何だかイノベーションがどうのこうのいってまるっきり別物のコンセプトのがでてくるし・・。
C++なんて基本概念はもう何十年もかわらんだろ。あとはその都度必要なstlとかの機能覚えればいいだけ。
楽なもんだよ。
0622デフォルトの名無しさん
垢版 |
2019/03/01(金) 06:22:49.33ID:TGgsjFNR
『プログラミング言語C++』第4版は電話帳より厚いね。
あれは解説書だよな。1300ページ以上ある。

ちょうど新しい電話帳が届けられたばかり。
田舎住まいだから都市部に比べて電話帳が薄いってこともあるけど。
0623デフォルトの名無しさん
垢版 |
2019/03/01(金) 07:01:09.26ID:TGgsjFNR
C++は新しい言語仕様が次々に追加されるせいで、
同じ細かな処理をするにも人によって書き方が色々になって、
「同じ言語で同じ処理をしてるはずなのにソースは似ても似つかない」
「自分で書くには便利だけど、他人の書いたプログラムは読み解けない」
てな状況になってるんと違うかな。

わざわざストラウストラップ先生が「言語の全部を知らなくても、
徐々に理解しながら使えばいい」と書いてくれてるけど、
他人のソースを読む際には役に立たないアドバイスだよね。
0624デフォルトの名無しさん
垢版 |
2019/03/01(金) 13:03:30.11ID:ozM8zBQ9
>>615
CもC++も仕様は簡単
ライブラリやアルゴリズム考えるのが面倒で生産性が低いだけ
それを難しいと勘違いしてるだけ
0625デフォルトの名無しさん
垢版 |
2019/03/01(金) 13:21:26.51ID:5w/5u0Tx
こういうc++の危険さをまったく認識できてないやつが一番困る
std::forwardの意義を誰にでもわかるように説明してみろよ
0627はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/03/01(金) 16:02:10.84ID:Vq7maKYR
>>623
「徐々に理解しながら」は、 C を既に知っている人を明らかに想定していて、
今では C がそんなに支配的でもないという状況を思うと適切な動線とは言えないという意味でも
あまり役に立たなくなってきていると思う。

ただ、追加された機能を見ると、
新しい書き方の方が間違い難くて綺麗で一貫していることが多いので、
肥大化するから追加するのをやめろとも言い難いんだよな……。
0628デフォルトの名無しさん
垢版 |
2019/03/01(金) 16:17:07.89ID:yZJ4Zkhu
皆、ドワンゴ江添亮の本を読んでいないから、C++ の恐ろしさがわからないのだろう

詳細を突っつくと、無限にややこしいものが出てくるw
だから江添でさえ、詳細は省略しますって書いてあるw

>>610
1バイトずつ、check sum を計算するような場合は、そういうように、union にするのが定番
0629デフォルトの名無しさん
垢版 |
2019/03/01(金) 17:25:35.13ID:tC4m5Wn4
●ワンゴ倒産の危機わろすω
0630588
垢版 |
2019/03/01(金) 17:56:26.55ID:VPz6Y2H0
udpパケットを送れるようにはなったのですが、wiresharkで確認するとudpフレームのchecksumが未定義となっていました。。。
そこで1からやりなおしたいのですが、ソケットはrawで開くべきなのでしょうか。いまはudpなのでdgramで開いてsockaddr_inのインスタンスをつかってsendtoしています。
0631デフォルトの名無しさん
垢版 |
2019/03/01(金) 18:11:15.15ID:a4IFMTFx
checksum計算して値入れてから送れよ
0632デフォルトの名無しさん
垢版 |
2019/03/01(金) 18:18:10.83ID:6LDVvTwi
enumについて教えてください
enum { ..\..\VAL1, VAL2 };
このような書き方でコンパイルが通る環境はありますか?
case ..\..\VAL1:
というのも許される環境はありますか?
c/c++
0634632
垢版 |
2019/03/01(金) 19:04:29.12ID:6LDVvTwi
どこかで見た覚えがあります
0635588
垢版 |
2019/03/01(金) 19:14:27.70ID:VPz6Y2H0
>>631
調べた方が足りませんでした、NICのTCP offloadingという機能が有効になっていたせいで、NICより手前でキャプチャするとunverifiedとなっているようです。大変失礼しました。
0636デフォルトの名無しさん
垢版 |
2019/03/01(金) 19:23:28.99ID:HVxvwZsK
>>619
>今時のECMAScript
いや、ハードウェアに固定されたバイナリーですらなく、ソフトウェア上で決められた決め事になんら意味を見出せないのですが、それでも javascript とかに熱意を抱けるコツがあったら教えてください
0637デフォルトの名無しさん
垢版 |
2019/03/01(金) 19:25:06.34ID:HVxvwZsK
>>629
いいかげんにニコ動をなんとかしてほしいです、昔も重かったけれども今も重い、これはなんとかならないのですか?
0639デフォルトの名無しさん
垢版 |
2019/03/01(金) 21:35:36.90ID:Y8fj+4tW
引数のmove受け一つとってもrustの3倍くらい難しくなってるわな。
シンタックスが特殊だし、オーバーロードはされるわ、特殊な右辺値に対してのみ動作するとか
根本からおかしい。
0640デフォルトの名無しさん
垢版 |
2019/03/02(土) 09:08:32.90ID:NYNVQHNm
物作った事の無い人の重箱の隅つつき+詳細未記載本なんて
時間の無駄だというのが良くわかった。
石田晴久の通信プログラムとか技術書展の方がマシ
0641デフォルトの名無しさん
垢版 |
2019/03/02(土) 11:46:55.44ID:jZcAiOx4
ソース書くときに気を付けるのはとにかく引き継ぎしないといけなくなったときに楽になるようにって点かな。
上から読み下していったときにわかりやすければなんでもいいと思ってる。
0642デフォルトの名無しさん
垢版 |
2019/03/02(土) 12:38:56.25ID:+L4gK20K
構造体で例えば
struct POINT{
int x, y;
};
があるとき
struct POINT p = {1, 2};
と定義と代入を同時に出来ますが
一度代入したものを後から書き換えるとき
p = {3, 4};
と書くとエラーになるみたいで
p.x = 3, p.y = 4;
と書かないといけないのが面倒です

先生なんとかなりませんか?
0643デフォルトの名無しさん
垢版 |
2019/03/02(土) 12:45:48.83ID:+L4gK20K
ああできた
p = (struct POINT){3, 4};
これでいけました
0644デフォルトの名無しさん
垢版 |
2019/03/02(土) 13:27:28.31ID:NYNVQHNm
構造体一括代入はANSI以降の機能だからOS/9とかCP/M68K
のC言語では当然のように動かない
0645デフォルトの名無しさん
垢版 |
2019/03/02(土) 13:49:52.82ID:+L4gK20K
C++だと
p = POINT(3, 4);
もいけるかな
0646デフォルトの名無しさん
垢版 |
2019/03/02(土) 13:50:54.37ID:+L4gK20K
>>644
たぶんそうだったと思います
ありがとうございます
0648デフォルトの名無しさん
垢版 |
2019/03/02(土) 14:07:27.41ID:kDivPjLV
片山さんは何で改名したんですか?
0649デフォルトの名無しさん
垢版 |
2019/03/02(土) 16:04:24.12ID:uz1yhwTy
C の p = (struct POINT){3, 4}; は、構造体の一括代入に違いないけど、
(struct POINT){3, 4} の部分が「複合リテラル」compound literal だから
使えるのは C99 以降だね。
■ このスレッドは過去ログ倉庫に格納されています

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