Rust part10

■ このスレッドは過去ログ倉庫に格納されています
2021/04/02(金) 21:38:04.11ID:L7IeSfpL
Mozilla発のRust言語のスレ

公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

Web上の実行環境
https://play.rust-lang.org

日本語の情報
https://rust-jp.rs/

前スレ
Rust part9
https://mevius.5ch.net/test/read.cgi/tech/1598112455/
2021/05/23(日) 16:18:03.34ID:ljEJPp90
>>735
static変数とglobal変数はスコープが違うだろ
global変数が悪とされるのは、そのスコープの広さだからね

いつどこで誰が変更するのか、また参照するのか、スコープが広ければ広いほど把握が困難になる
把握が困難になればなるほど、それだけバグを生む温床になる
2021/05/23(日) 18:34:32.71ID:1FznZ2H5
io周りは極論すればどう管理してもグローバルだからな。
プロジェクト毎に規約設ける以外にまともに管理する方法なんてない。
2021/05/23(日) 20:09:32.32ID:wHpcVS8W
>>735
そういやロガーの設定ってどこに保存されてるの?
debug!() 呼ぶたびにMutexロックしてるのかな?
2021/05/24(月) 12:11:21.84ID:1Toh/2dP
>>736
クラスの中に入れても、グローバル変数であることは避けられないし
どんな言語においてもグローバル変数は必要。
741デフォルトの名無しさん
垢版 |
2021/05/24(月) 12:28:02.03ID:wwlvG9VZ
「:?」ってなんなんですか?
https://tourofrust.com/08_ja.html
2021/05/24(月) 12:49:55.25ID:KKN49LSI
>>741
デバッグ用のフォーマットで出力するという意味
詳しくは以下参照
https://doc.rust-lang.org/std/fmt/
2021/05/24(月) 13:24:07.35ID:JJaZh5wC
>>740
そんなことはないだろう。
確かにグローバルでも大して変わらんてものはあるけど、
loggerを引数で渡していくっていうような実装方法もある。
2021/05/24(月) 13:33:20.21ID:u2umy7DV
>>739
logクレートのstatic mut変数だね
ロックするのは初期化とレベル設定時だけ
出力時にロックするかどうかは実装次第
745デフォルトの名無しさん
垢版 |
2021/05/24(月) 15:43:10.46ID:dukpbHqg
>>740
そのクラスの存在そのものがグローバル変数(相当)だという話?
それともそのクラスもしくはそのインスタンスをグローバル変数に入れて使うということ?
後者の意味ならば必要な範囲で引数として持ち歩けばグローバル変数を普通は使わないですよね。
2021/05/24(月) 16:59:24.57ID:tdQ8iTTE
大事なのは抽象化がきちんとしているかどうか。
各部品が妥当な意味に分離されているかどうか。

グローバル変数がよくないのは色んなパーツから横断的に使われる可能性があって
部品が不必要に密結合していることの表れだからであって、
そのグローバル変数のアクセス範囲が妥当な範囲に制御されているなら問題じゃないよ。

過剰な密結合を解消せずにグローバル変数を引数に置き換えてたら
影響範囲が見えにくくなってもっと悪くなることだってありうる。

まあどういう場合なら妥当なのかってのは色々と意見はあると思うけど。
747デフォルトの名無しさん
垢版 |
2021/05/24(月) 17:17:23.03ID:qqtJSk72
$_POSTはセーフ
2021/05/24(月) 17:21:32.94ID:Ig527IlE
>>746
まずは長くて区別しやすい名前に変えるのがスタートかね。
749デフォルトの名無しさん
垢版 |
2021/05/24(月) 17:31:54.98ID:wwlvG9VZ
>>742
ありがとう!なんか独特なのね
2021/05/24(月) 23:12:37.25ID:rI3Y4Uqa
関数型言語やったことないけど、Rustいけるかな
JavaとC++はそこそこ経験あり
2021/05/24(月) 23:17:37.88ID:zk4LoLUU
Java 8とかC++ 14以降くらいなら結構似たような機能も入ってるし
そこまで大変じゃない気がする
2021/05/24(月) 23:36:00.17ID:JJaZh5wC
c++はともかく、cくらいはやっぱ理解してた方が早道な気はする。
2021/05/25(火) 01:36:21.07ID:5vUI50kp
以下のような関数を作ったんですがmatchが多くてどうしようか考えていました

fn foo(x: Option<u32>, y: Option<&str>) { //実際はOptionが5個とか
let x = match x {
Some(x) => x,
None => return,
};
let y = match y {
Some(y) => y,
None => return,
};
println!("{} {}", x, y);
}

考えついたのが、次のようにする方法なのですが、
fn foo(x: Option<u32>, y: Option<&str>) -> Option<()> {
let x = x?;
let y = y?;
println!("{} {}", x, y);
Some(())
}

記載の省略のためだけに返値の型をOption<()>にして最後にSome(())つけるのがすごく気持ち悪いんですが、
返値なしのままどうにかする方法はないでしょうか
2021/05/25(火) 02:11:48.11ID:QcInQ0e9
if_chain使って
if_chain!{
if let Some(x) = x;
...
then { println!("{}", x); } }
2021/05/25(火) 02:16:51.35ID:Ygc8ZzR1
>>753
fooの型変えられないなら、戻り値Optionはクロージャないしローカル関数に留めるといいと思う
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=aa2bc019e7329f1b6bece2597b59ee8a
2021/05/25(火) 03:00:10.05ID:nrKC74iS
Ok(())はよく使うがSome(())はないな

普通にif-letでパターンマッチするのでよくない?
if let (Some(x), Some(y)) = (x, y) {
println!("{} {}", x, y);
}
2021/05/25(火) 05:18:39.47ID:gz717nup
loggerを引数で渡すためには
ロギングを行うクラスFooがどこかしら(コンストラクタか個々のメソッドで)loggerを受け取る引数を持たねばならない
これ、ロギングみたいな裏方の仕事がFooのインターフェース仕様に影響しているということで、
抽象度が下がってるやんけ;;;

引き換えに得られるメリットは、Fooのインスタンスごとにloggerを切り替えられるというおおよそ現実的にありがたみが無い機能だけ
758デフォルトの名無しさん
垢版 |
2021/05/25(火) 06:08:48.35ID:FYPKUk3M
>>756
それをmachでやるのがよくない?
2021/05/25(火) 06:23:40.79ID:gz717nup
つか機能の分離と記述の分離はトレードオフがある
1+1=2の形式的証明がどんだけの糞みたいな分量のに成り得るかを見たらワカル
どっかの抽象度をつきつめれば別のところにしわ寄せが逝く
それで良いジャマイカ人間の言語だもの、
2021/05/25(火) 09:01:56.56ID:5vUI50kp
皆様ありがとうございます
どうもSomeをある程度書くのは避けられない感じですね
2021/05/25(火) 10:09:28.07ID:4oEEOZjA
まさかstatic変数使ってるなんて、logクレートには失望したわ
2021/05/25(火) 10:33:41.89ID:bGIV0Xp5
>>757
ログを裏方と考えるのも偏ってるし、ログ切り替えはデバッグ目的で普通にあるわ。
別にグローバルにするという選択が間違いとも思わんがこういう決めつけ野郎は邪魔だな。
2021/05/25(火) 10:59:01.14ID:/nQyXsn+
サーバ側だとログを取るのが基本だし取り方も変えたくなるからlogger渡しは結構やるな
CLIとかなら雑にstaticでいいけど
2021/05/25(火) 13:12:03.88ID:CssgwvqL
>>761
stdも使えないじゃん
2021/05/25(火) 18:48:30.58ID:4oEEOZjA
>>764
なんで?
2021/05/25(火) 19:25:41.69ID:CssgwvqL
>>765
https://github.com/rust-lang/rust/blob/a7890c7952bdc9445eb6c63dc671fa7a1ab0260d/library/std/src/io/stdio.rs#L553
2021/05/25(火) 19:39:28.48ID:4oEEOZjA
>>766
えー
これからは write() システムコールでプリントするわ
768デフォルトの名無しさん
垢版 |
2021/05/25(火) 21:02:03.28ID:p1A5R6d8
stdが嫌ならcoreを使え
2021/05/25(火) 22:59:34.15ID:gz717nup
>>762
近代的なログシステムならタグが使えるから
記録時に分っける理由がさらさらない
だいたい並列な事象を並列なまま記録したのでは時系列の解析ができないし、

そもそも>>762がいくら「ログは裏方じゃない」と叫んだところで基準が無い
アプリケーションロジックを汚してまでか?!という議論はいつまでもつきまとう
2021/05/26(水) 00:00:47.75ID:S2nFrW0F
別に仕事で使ったことないならそういえばいいと思うよ。悪いことしてるわけじゃないんだから。
2021/05/26(水) 00:04:47.15ID:PLorGv/T
そういやLog4JでいうMDCみたいなやつはあるのかしら?
2021/05/26(水) 00:07:56.89ID:rwxZHBm1
お前らslog

>>760
ただのzipやん。
ttps://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=01c2f30ff2a49dc57c917ec16947aadb
2021/05/26(水) 08:19:13.92ID:AN5OxrIl
まあloggingオブジェクトを複数作る仕事なんなら仕方が無いな
2021/05/26(水) 08:29:19.07ID:vJAmL6Qi
slog見たけど、クソややこしいな
2021/05/28(金) 09:51:25.19ID:jQHjx/Sg
シンタックスで判断しづらいもので性的分析するって、そのうち破綻しそうだな。
2021/05/28(金) 09:54:11.42ID:S8Iz9SRl
エロい分析か
2021/05/28(金) 10:45:17.68ID:EKMYAKDR
やらC
2021/05/29(土) 20:28:41.06ID:sKXDX7XX
JPEG-XLのリファレンス実装作ってるチームがRustで再実装も始めてて驚いた
https://github.com/libjxl/jxl-rs

FirefoxにJPEG-XL対応を入れるかどうか議論するチケットで
今更大量のunsafeなC++コードを入れるのはちょっと……みたいな反応をされてた事と関係あるのかもしれない
779デフォルトの名無しさん
垢版 |
2021/05/30(日) 15:56:56.42ID:HupJBx7X
https://4e6.github.io/firefox-lang-stats/
https://www.openhub.net/p/firefox/analyses/latest/languages_summary
Firefox、かなりの割合でC++のコード入ってるけどこれでも減らそうとしてるのか
2021/05/30(日) 16:00:13.57ID:P46Jh5T1
もう9.5%も行ってるのか

と言うかfirefoxからrustは始まったから当然か
2021/05/30(日) 16:15:38.02ID:ds+xAsBi
でも、大量の有名なWebサービスが一時的にRubyで書いていたのに、
しばらくすると他言語に書き直した歴史がある。
アメリカ人はなぜか言語を書き直すのが好きなようだ。
Rustで書いてもまた別言語に直すかも知れない。
なお、Googleドライブなどの各社のストレージサービスを統一的なAPIで制御できる
ライブラリも何故かGoで書かれている。
メンドクサイ。
782デフォルトの名無しさん
垢版 |
2021/05/30(日) 17:11:41.17ID:cF4puvJq
>>781
遅い方から速い方へ書き直すのよ
特にスクリプト言語からC++/Rustへ書き換えるとサーバー数を1/10にできるケースもあり規模によっては経費激減ね
GoもGCあるから場合によっては他へ書き換えられる対象になりうるかも
Rustが他へ書き換えられる可能性がもしあるとしたら今はまだ存在しない新たに出現する言語へ
783デフォルトの名無しさん
垢版 |
2021/05/31(月) 00:35:54.04ID:7s+MSAY0
なんでClippy大先生がcargoでインストールできるクレートから外されるの?
2021/05/31(月) 01:50:13.82ID:u1BqTaEs
rustupでインストールできるからでは
rustcとバージョン合わせないといけないから他のcrateと同じ扱いはしづらいのでは
2021/05/31(月) 08:44:19.92ID:etoumxTf
Ruby on Rails の時価総額は、

Shopify が15兆円、
民泊のAirbnb が、大手ホテル3社の合計以上の10兆円、
Github が8千億円

これぐらい巨大でも、Rails で出来る。
時価総額が千億円以上になったら、Go, Elixir を考えてもよい

食べチョクは売上50億円らしいけど、
若い文系女が1人で起業したような会社は、Rails で十分

売上が千億円を超えたら、考えてもよい
2021/05/31(月) 15:24:48.93ID:hqkxpUd6
ウェブシステム全体の実行コストはネットワークや IO にボトルネックが有るので
システム構成やらなんやらで工夫するのがまずやることで、
言語の速度が少しばかり速いのはそんなに効いてこないよ。

という話もよく聞くんだけど、実際のところどんなもんやろね?
787デフォルトの名無しさん
垢版 |
2021/05/31(月) 16:31:16.04ID:slsuSMsk
そりゃそうね
でも実行速度だけで選ぶわけじゃないからね
2021/05/31(月) 19:40:04.29ID:mBUAbPrR
今まではハードにぶん投げても大丈夫だったのが
ハードの進化の鈍化でソフト側が工夫しないと駄目になりつつあるって話ってマジ?
2021/05/31(月) 21:37:16.00ID:M7WLmn8V
いやそこでソフトで頑張ってもほぼダメだろ。。アーキテクチャで分散化考えないとって話じゃないかね
2021/06/01(火) 01:05:37.48ID:69wa4c/Y
>>788
ハードウェアがもう伸びないってことではなくて、 CPU の速度が単純に速くなるという方向ではもう伸びにくいって話。
電子の大きさは変えられないから際限なく微細化できるわけではない。

わかりやすい例で言えば今のパソコンはマルチコアが当たり前になってて複数の CPU を載せる方向で性能を上げているが、
マルチコアを想定してないソフトをマルチコアパソコンで動かしてもひとつのコアしか使わないので性能が出ない。
高価な GPU を乗せても GPU を使うプログラムになってなきゃ意味がない。

ハードウェアの総合的な性能を上げるには色んな工夫があり得て、それらを実現すると同時に
ソフトウェアは「ハードウェアに合わせて」「ハードウェアの性能を引き出すように」工夫がいる。

これは今までにも普通にやってたことで、今になって必要になったわけじゃない。
小さな変化の積み重ねなこともあれば大きな変革を迫られることもあるってだけ。
2021/06/01(火) 07:44:50.11ID:DWqq5xbS
後藤弘茂のWeekly海外ニュース■ Prescott/Tejasは5GHz台、65nmのNehalemは10GHz以上に
ttps://pc.watch.impress.co.jp/docs/2003/0227/kaigai01.htm
当時は景気よかったっすね。すぐ後に爆熱で日和ったけど
そして今、300Wの時代・・・

てか並列化によるスループットの向上はこのあたりから検討されるようになっていた気が
792デフォルトの名無しさん
垢版 |
2021/06/01(火) 19:29:09.48ID:a3oi+h5L
>>784 でも何故かcargoだけはcargo install cargo --forceとすれば自分でコンパイルしたもので上書きができる謎
793デフォルトの名無しさん
垢版 |
2021/06/04(金) 15:33:30.83ID:kJqxa98Z
よくわからないんだけどこれ、C言語のポインタ渡しが諸悪の根源で、そこを断ちさえすればC言語も所有権概念を取り入れられるの?
2021/06/04(金) 15:42:09.57ID:03MQShFS
>>793
C言語において、ポインタは大発明で、それによってリンクリストやツリー構造
が簡単に実装に出来る様になった、大変重要なもの。
C言語からポインタを絶てば何も残らない。
2021/06/04(金) 15:48:43.92ID:1/rRer4v
Javaキチガイはポインタ使いこなせない
日本のMSの社員がソレだった
破棄忘れてやんのw
2021/06/04(金) 15:55:06.60ID:JfDLBnT5
RAIIなしで良いなら多少の拡張で所有権の概念取り込めるかも知れないけど
絶対スマートポインタ欲しくなるしCの表現力だと使いづらい物になりそうな気がする
2021/06/04(金) 16:03:03.62ID:KjgiO9jk
>>794
>C言語において、ポインタは大発明
笑笑
2021/06/04(金) 17:24:32.39ID:Lunsq3fv
Cと比較するのは流石に乱暴だろ
C++と比較するべき
で、C++でできなくてRustでできるものというのは現状存在しない (今後その差も埋まっていくだろうが)

C++とRustの違いはひとえにスタンスの違いだよ
自由奔放なC++か良いコードにカッチリ導いてくれるRustか
意欲的に新機能取り込んで発展してるのは両者とも同じ
2021/06/04(金) 17:31:18.17ID:AGlHvwIO
>>798
>C++でできなくてRustでできるものというのは現状存在しない
こういう比べ方はアホ
チューリング完全ならなんでもできるじゃんみたいなことになる
できるできないの線引きが恣意的
2021/06/04(金) 17:54:18.33ID:7u0nl5aT
>>799
バカアホじゃなくて、Rustでしかできないものの例を挙げてください
そうすれば一単語で反論の余地なく終わるんで
801デフォルトの名無しさん
垢版 |
2021/06/04(金) 17:58:01.49ID:UUHTR6cx
C++は奇麗に描くと言うのが出来ない
2021/06/04(金) 18:03:48.84ID:Pwqe5Yy7
>>800
C++でできなくてRustでできるもの
から
Rustでしかできないもの
への華麗な転身www
2021/06/04(金) 18:16:57.72ID:hlBLv8XD
C++はMemory Safetyをコンパイル時に担保できない
Rustを使う一番の動機
804デフォルトの名無しさん
垢版 |
2021/06/04(金) 18:53:59.58ID:nHzCWsfU
>>802 C++とRustの比較において「C++でできなくてRustでできるもの」と「Rustでしかできないもの」は同じ意味だから転身でもなんでもない
https://i.imgur.com/3svkdus.png
2021/06/04(金) 19:11:16.95ID:s8nyhwnD
Cloudflareの画像処理責任者を名乗る人も、これ以上C++ライブラリを増やすのはイヤでござると発言してるな
2021/06/04(金) 19:23:30.63ID:4pNcWBF2
>>804
C++とRust以外にも言語はたくさんある
2021/06/04(金) 19:29:23.53ID:nsxzushh
Rustのモジュール(ファイル分割)の仕組みはC++のヘッダー+ソース(+名前空間)より扱いやすいと思う
C++は分割コンパイルが主流だった歴史的経緯があるから仕方ないけど事前の宣言が必要なのは地味に面倒くさい
808デフォルトの名無しさん
垢版 |
2021/06/04(金) 19:43:15.38ID:nHzCWsfU
>>806 この会話の流れではC++とRustの比較をしていたから
2021/06/04(金) 19:58:10.76ID:4pNcWBF2
ライフタイムによるメモリ管理はRustオンリーだろ
2021/06/04(金) 20:12:39.71ID:s8nyhwnD
マイナーな環境だとC++プログラムは様々な理由でコンパイルが通らないことがよくある
Rustは基本的にはそういう事ないし、コンパイラ実装が一つしかないというのも利点に働く
2021/06/04(金) 20:40:42.82ID:CpdoeubZ
C++との比較を議論したいなら専用の隔離スレでどうぞ
2021/06/04(金) 22:02:04.46ID:ivUqItUs
>>793は言語レベルのサポートがほしいんだろ?
substructural type systemがないと無理。

>>809
MLkit,RTSJ,cyclone,ATS/ATS2。学術的にはとっくの昔に廃れたぞ。
2021/06/04(金) 22:04:58.58ID:yXI/MC9G
WinUIとRustやってる人いる?
同じネイティブのMFCとかと比べて、やっぱり生産性は高いんかな
2021/06/04(金) 22:26:52.09ID:I1RVdPKQ
メモリ関連って原因不明のバグ引き起こしやすいしトータルな目で見れば上がるんじゃないだろうか
2021/06/04(金) 23:27:29.47ID:JfDLBnT5
>>810
gcc-rsとかのプロジェクト始まってるけどそれはネガティブなことなのかね
2021/06/05(土) 06:04:54.16ID:uC9Joojh
>>810
そういえば、C++のSTLは、VSでは動くが、BSD系のLLVM用のlibc++は、
なかなか上手く動いてくれない。理由は、libc++が、その
基礎関数として滅多に使われないようなMB・WC文字変換関連や、
NAN、INFINITYなどのfloat/double調査関数など、昔ながらのC環境では
定義されて無いような(新しい)Cの関数を大量に必要としているため。
その意味で、WasmのWASIなんかは、たとえCUIだけであっても
世界共通の関数群を整備してくれるのだとしたら有りがたいかも知れない。
でもWASI自体の移植作業が必要になるから一緒か。
2021/06/05(土) 06:14:19.54ID:uC9Joojh
>>816
昔からCには文字種判別として、isalphaやisdigitなどがあるが、
libc++は、isalpha_l()などのlocale指定タイプを必要としていたりして
locale関連がやたらと複雑。また、その
isalpha_lなどを基礎にしてくれているならまだしも、isalpha_lが内部で使っている
文字種テーブル unsigned short _ctype[256]; も仮定していたりする。
このテーブルは、_CONTROL、_SPACE、_DIGIT、_ALPHAなどの
BIT定数とandを取ってBITが立っているかどうかで文字種を判定する。
それは環境依存なのだが、高速化のためか何故かそれを必要としている。
(C++のライブラリが欲しいのに、そのライブラリが、なぜか一般的ではない
大量のC関数や特殊なデータテーブルを必要としてしまっている。)
だから移植が進まない。
plain Cは、標準ライブラリが多くの環境である程度の互換性を持って整備されているが、
結果的にC++のSTLはなかなかそうではないようだ。
2021/06/05(土) 06:17:47.83ID:uC9Joojh
C++ライブラリがisalpha_lなどを用いてしまったら、速度面でC#やJavaなど
に比べた優位性が少なくなってしまうからかも知れない。
つまり高速化のためにやたらと移植性の低い方法を使っているから、
スムーズに移植が進まない。
それか単純にC++ライブラリを作る人の技術力が低いからだろうか?
2021/06/05(土) 06:20:08.28ID:uC9Joojh
>>801
すまんが、Rustはもっと出来ない気がする。
2021/06/05(土) 09:02:04.60ID:KdS0cXcP
RustスレでC++の話題が出てしまうのはもはや運命なのか
2021/06/05(土) 09:20:03.77ID:3ILRB2eH
>>820
そりゃ better C++言語として作られたんだから当たり前でしょう
2021/06/05(土) 09:32:35.80ID:4o2YwJP1
ライフラインの書き方がとにかく見づらい
2021/06/05(土) 09:45:07.09ID:3ILRB2eH
これヤバくない?
どうやって防いだらいいんだろう?

https://github.com/lucky/bad_actor_poc
2021/06/05(土) 09:46:58.65ID:4o2YwJP1
localhostに送るだけならいくないん?
2021/06/05(土) 09:53:33.78ID:3ILRB2eH
え、マジで言ってるの?
2021/06/05(土) 10:04:24.16ID:4o2YwJP1
あおられてもダメな理由がわかりまそん
びっくりはするけど
2021/06/05(土) 11:21:46.59ID:KdS0cXcP
悪意を持ったコードをビルドしない
828デフォルトの名無しさん
垢版 |
2021/06/05(土) 12:04:01.08ID:bvIfRQLF
c++との比較はガファムが結論出してくれたからもう話すことなどない
2021/06/05(土) 12:08:54.56ID:85+uBK5B
何をみて結論だと思ってんだか。短絡的だな。
2021/06/05(土) 12:26:06.61ID:YTe/4gPS
依存するクレートの依存するクレートの依存するクレートの以下無限ループまで全部チェックしないと駄目ー?(´・ω・`)
2021/06/05(土) 12:58:14.11ID:KdS0cXcP
チェックするツールとか誰か作っていそうだね
バイナリを診断するよりは簡単だろうし
2021/06/05(土) 13:57:18.40ID:IMH8ctkE
>>826
念のためマジレスすると公開した人がいつでもlocalhostを〇国サーバーのアドレスに書き換えられるってこと
githubのオープンソースでそれやったらすぐにばれそうだけど

ビルド時ならともかくエディタ起動直後のコード解析でデータが送信されるのは盲点やね
2021/06/05(土) 14:01:47.49ID:f5S9H8yw
ビルドしなくてもファイルを開いたらコードが実行されるというのはよろしくないね

ファイルやネットワークならアクセスされる側でブロック可能だけど
メモリはサンドボックス内のみで展開・実行されるようにしないとブロックできない気がする

サンドボックス化できなければ
cargo auditやcargo crevを通して怪しいcrateだけ自分でチェックするとかかな
2021/06/05(土) 14:06:05.14ID:KdS0cXcP
vscodeやlspヤバイな
2021/06/05(土) 14:13:31.58ID:8YO6sBC6
解決方: vscode を使わない
2021/06/05(土) 14:27:34.92ID:4o2YwJP1
まったくだ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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