結局C++とRustってどっちが良いの? 6traits

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2023/07/29(土) 15:05:46.55ID:2Hm/yplK
C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」

っていう雑談スレ。

前スレ 
https://itest.5ch.net/mevius/test/read.cgi/tech/1688129795

関連スレ(マ板): Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.n...cgi/prog/1619943288/
2023/07/31(月) 13:56:25.29ID:SQ3dcTOC
>>56
意味がわからん
日本語も書けなくなったのか?
2023/07/31(月) 13:58:30.69ID:eCR2qI4e
>>57
多分、アメリカ人が書いている。
2023/07/31(月) 14:57:58.99ID:MuwrPG3l
>>52
あの頑固者のLinusが解禁したこと自体が画期的

RustがOKなら、Rust程度のOOPはOKってことで、近い言語が続々参入したりして
そうなると、simple化付きC++ってのも見えてくる
60デフォルトの名無しさん
垢版 |
2023/07/31(月) 15:00:33.59ID:ulrQSEBD
>>59
Rustコンパイラは何を使うの?
2023/07/31(月) 15:05:23.78ID:OPAJDfNb
何かの政治的な理由でRustを仕方なく使ったんじゃね?
2023/07/31(月) 16:30:08.80ID:MuwrPG3l
>>60
知らんまじで 処理系に指定があるかまでは存じ上げず
2023/07/31(月) 18:53:04.02ID:ky4iWRF2
普通にrustc(+llvm)でいいでしょ
知らんけど
2023/07/31(月) 19:29:15.62ID:f18AP/yx
>>63
じゃカーネルのコンパイルは何使うの?
2023/07/31(月) 22:08:37.01ID:+bjI2PCn
カーネルおじさん
2023/07/31(月) 23:55:46.68ID:bJxDuGa3
どいつもこいつもマウントを取る相手に飢えてるんやなあって
2023/08/01(火) 00:02:17.45ID:lcAcDegU
パタリとレスが止まったが
>>59みたいなこと書くのなら>>60とか>>64には答えられんとなぁw
2023/08/01(火) 01:13:33.06ID:enF/Vqu1
カーネルは知らないがrustcでコンパイルしたものとc言語で書かれたものはリンクできて動いてるし何を問題にしているのかわからない
最近はPythonやJavaScriptのライブラリもRustで書かれることが増えている
69デフォルトの名無しさん
垢版 |
2023/08/01(火) 01:42:20.33ID:lcAcDegU
>>68
Linuxカーネルは伝統的にgccでコンパイルされてきた
rustのコードはrustc on llvmでコンパイルされる
そうするとgccが吐いたオブジェクトファイルと
rustc on llvmが吐いたオブジェクトファイルをリンクできるのか?
という疑問が普通に浮かぶ
[解法1] できるのなら何も問題ない
[解法2] できないのならカーネルをclang on llvmでビルドすればリンクできるだろう
最近はclang on llvmでカーネルをビルドすることもあるみたいで
検索するとAndroidはclangらしい
[解法3] あるいはgccrsでrustコードをコンパイルすればgccのコードとリンクできるだろう
さて始まったらしい(しかし何もリリースされていないw)カーネルでRustの利用方法は
1なのか2なのか3なのか? あるいは別の方法かな?
2023/08/01(火) 01:44:23.88ID:lcAcDegU
>>59みたいなこと書くのなら答えられんとなぁw
2023/08/01(火) 01:47:19.20ID:lcAcDegU
WindowsでRustの利用が始まっているらしいが
MSはllvm使うのかね? Visual Rustかね?
2023/08/01(火) 02:10:15.58ID:enF/Vqu1
>>69
何を問題にしているのかさっぱりわからん
gccもclangも同じELF形式のオブジェクトファイルを吐くだけだぞ
共有ライブラリなども当然同じものが使われている
コンパイラ毎に別々の形式を吐いて共有ライブラリなども別々に用意されていると勘違いしている??
73デフォルトの名無しさん
垢版 |
2023/08/01(火) 02:15:20.41ID:8wU+ches
rustのコードはrustc on llvmでコンパイルされる
そうするとgccが吐いたオブジェクトファイルと
rustc on llvmが吐いたオブジェクトファイルをリンクできるのか?

あほすぎわろす
74デフォルトの名無しさん
垢版 |
2023/08/01(火) 02:28:22.85ID:lcAcDegU
>>72,73
じゃ1で良いのかな?
2023/08/01(火) 02:44:40.50ID:enF/Vqu1
そもそもRustは全く関係なくC言語だけを使う世界でも同じ話
コンパイラを変えてもリンクする既存ライブラリは同じものを指定して同じものをリンクするだろ
それを知らないとはエアプログラマーかね?
2023/08/01(火) 02:46:40.94ID:rdOaCXEZ
まずrustcがllvmでコード生成してることを知ってるかどうか確認する必要があるな
rustc on llvmという表現に若干の不安を感じる

もしかしたらllvmを知ってるかどうかの確認も必要かもしれない
2023/08/01(火) 03:08:01.35ID:lcAcDegU
>>75,76
じゃ1で良いのかな?
つまりカーネルはgccでビルドして
Rustで書かれたカーネルモジュールは(まだないけどもw)
rustcでコンパイルするのかな?
78デフォルトの名無しさん
垢版 |
2023/08/01(火) 03:19:00.62ID:y4WjFr+T
coff とか omf とか elf とか面倒だよなω
D は沈没したしωωω
7959
垢版 |
2023/08/01(火) 06:25:09.53ID:1HHpj/ls
夏風邪で寝込んでた 隠れ新型コロナかもしれん ちなマスクはしてる

俺はC++派だし、どうしてるんかまで知らんって
Rust部のツールチェーンのバージョンを指定してるんじゃないか
見に行く元気はない まだだりぃ

Rustの努力にはライバルながら賛辞を贈る
Rustの成功をC++に取り込むべきだと思ってるからね
2023/08/01(火) 10:31:09.40ID:1HHpj/ls
ぐぐったらこれがあったので貼る
https://docs.kernel.org/rust/quick-start.html

引き続き、精読する元気はない(w
81デフォルトの名無しさん
垢版 |
2023/08/01(火) 10:39:09.49ID:lcAcDegU
>>80
>>69の解法2だね

>>72,73,75,76
何で解法1じゃないの?
何でvery experimentalなの?
2023/08/01(火) 11:29:23.00ID:a8DQwFPL
Rustに詳しい人しか答えられないような内容を
ここに書くべきじゃない。
Rust専門スレがあるのに、何故そこに書かないか。
2023/08/01(火) 11:32:16.29ID:AvEKEx5a
昔はコンパイラとリンカは別物でコンパイラはposix標準のライブラリファイルを出すのが仕事でその後各言語が吐き出したライブラリファイルをリンカでくっつけてた
しかし今はコンパイラがリンクまでやってるのでこの“別言語間のリンク”がどうなんとなってるけど、流石にコンパイル後リンク前のライブラリファイル形式もその形式のファイルをはくオプションも残ってるやろ
84デフォルトの名無しさん
垢版 |
2023/08/01(火) 11:34:34.48ID:lcAcDegU
>>82
>Rustに詳しい人しか答えられないような内容を
>ここに書くべきじゃない。
何やそれw

自分が詳しくないこと分からないことについては
ここに限らず(5chにも限らず)書くべきじゃない
2023/08/01(火) 11:53:54.57ID:1HHpj/ls
かたいこというなや
「しらんけど」って付けときゃいいんだよ
しらんけど

まあ、bfd/binutilみたいのができて久しいし、
そのへんに準拠してれば、リンクはできるよ
(最近のことは)しらんけどw
2023/08/01(火) 12:12:45.73ID:1HHpj/ls
calling convention は、今後もなんとか突き合わせてもらうとして。
だいぶ前に書いたのは、RustにはRustのname manglingがあって、C/C++がそれに合わせられないかってこと

それができれば、所有権情報付きの型に対応できることになるから、
C/C++も一気に所有権まわりを獲得できるってことになる
2023/08/01(火) 12:53:01.64ID:f+qzMJki
>>84
Rust専用スレがある。
そっちの住人にこっちは隔離スレとされた。
隔離されて無いはずのスレに戻れよ。
そっちの方が多いはずなんだろ、Rust信者の脳内では。
2023/08/01(火) 15:10:07.83ID:lcAcDegU
>>87
文章は丁寧に(自戒も込めて)
89デフォルトの名無しさん
垢版 |
2023/08/01(火) 15:34:55.86ID:vjzMKnjk
>>88
ウザい
90デフォルトの名無しさん
垢版 |
2023/08/01(火) 15:45:28.88ID:lcAcDegU
戻れも何も俺はそもそもRustユーザではないので
「Rust専用スレ」なるものを開いたことはない
ここには議論をしに来たのであってウザいと言われれば
反論できないのだなぁwとしか思わん
2023/08/01(火) 15:48:14.84ID:1HHpj/ls
またーりしていけよもう

たらこは言った、面白いことをかけって
2023/08/01(火) 18:54:49.18ID:a4U8O1ra
Rust一択でしょ

どっちもやったことないけど
2023/08/01(火) 19:06:00.69ID:G//O9I6m
質問してるヤツと答えてるヤツが同一人物って可能性もある
2023/08/01(火) 20:49:40.26ID:rdOaCXEZ
さすがにその可能性を疑い出したら病気の一歩手前だから気を付けてくれ
何か引っ掛かる点があったなら別だけど
95デフォルトの名無しさん
垢版 |
2023/08/01(火) 20:51:58.06ID:lcAcDegU
>>93
同一人物で自作自演したとして
俺が何をどう思われたいと思ってるのかが分からんので
是非論理的に教えてくれ
2023/08/02(水) 00:36:41.42ID:NJTTLLY6
>>69
それはRustと全く関係ない問題
オブジェクトファイルはコンパイラと独立した存在
C言語だけの話でもclangとgccを当然併用できる

まず関数fooだけのfoo.cを用意
$ cat foo.c
#include <stdint.h>
int foo(int32_t a, int32_t b) {
 return a + b;
}

これをclangでコンパイル
$ clang -c foo.c

オブジェクトファイルfoo.oが出来ている
$ ls foo.o
foo.o

つづく
2023/08/02(水) 00:37:45.81ID:NJTTLLY6
次に関数mainのmain.cを用意
$ cat main.c
#include <stdio.h>
#include <stdint.h>

int32_t foo(int32_t, int32_t);

int main(void) {
 int ret = foo(10, 20);
 printf("ret = %d\n", ret);
 return 0;
}

このmain.cをgccでコンパイルして(clangで作った)foo.oをリンクして実行ファイル生成
$ gcc -o main main.c foo.o

無事に足し算が実行できました
$ ./main
ret = 30
2023/08/02(水) 00:59:42.14ID:NJTTLLY6
clangとgccで上手くいった話は
rustcとgccにしても当然上手くいく

今度はRustで関数fooだけのfoo.rsを用意 (区別できるように掛け算に変えた)
$ cat foo.rs
#[no_mangle]
pub extern "C" fn foo(a: i32, b: i32) -> i32 {
 a * b
}

念のためfoo.oを削除しておく
$ rm foo.o

そしてrustcでコンパイルしてオブジェクトファイル生成
$ rustc -O --emit obj --crate-type staticlib foo.rs

さっきと同様にオブジェクトファイルfoo.oが出来ている
$ ls foo.o
foo.o

再び全く同じくgccでmain.cをコンパイルして(rustcで作った)foo.oもリンクして実行ファイル生成
$ gcc -o main main.c foo.o

無事に掛け算が実行できました
$ ./main
ret = 200

つまりRustで書かれたコードとその生成オブジェクトファイルは
何の問題もなくgccでコンパイルしたC言語コードから呼び出せる
(もちろん逆向きもOK)
2023/08/02(水) 01:09:19.89ID:iG8SsFh7
>>96-98
それは>>69の解法1を取り得ることを意味するが
公式文書では>>80のように解法2が説明されており
解法1はvery experimentalとある
なぜだい?
2023/08/02(水) 01:11:29.45ID:8pIQRBW6
誰でも知ってることを長文で書かなくていいから>>80読んでね
2023/08/02(水) 01:15:12.91ID:iG8SsFh7
>>86
>それができれば、所有権情報付きの型に対応できることになるから、
これが気になってて
>>98みたいにno_mangleすると
所有権システムは制限されるのかな?
2023/08/02(水) 01:28:10.98ID:NJTTLLY6
>>99
その文書に根拠が書かれていないからわからない
その文書によるとclangとrustcならば上手くいくのだからRust側の問題ではなくclang側の問題でもない
仮に問題があるとすればgcc側の問題なのだろう
そしてその場合かあると仮定するとC言語のみでもgccとclangで上手くいかないケースが存在するのだろう
2023/08/02(水) 01:34:00.68ID:MBDISWVo
very experimentalなのは単純に実績が浅いからでしょ
同じ規格に合わせて作ったつもりでも実際に組み合わせると想定外の問題が生じる場合がある
この辺は結合テストの経験がないとピンとこないかもしれない
2023/08/02(水) 01:51:18.44ID:TcjEDVFj
>>103
実績は10年以上あるでしょ
例えば/usr/lib/の下にあるライブラリファイルがgccかclangかどちらでコンパイルされたものかに関わらず
gccからもclangからもそれらライブラリを区別なく使われて問題を起こさず動いてきた
そこはELFのフォーマットが定められているからコンパイラの違いがあっても大丈夫
2023/08/02(水) 02:02:17.30ID:iG8SsFh7
linuxのソースに含まれない外部配布のカーネルモジュールのコンパイルって
普通コンパイラを(バージョンも含めて)揃えない?
神経質過ぎるだけかな?
2023/08/02(水) 03:18:19.71ID:stxSLRlm
結論
C++使いとRust使いは生産性が低い
2023/08/02(水) 06:19:43.25ID:2Ms30o08
生産性最強は…「さくっと探してくる」

なんでも自作(内製)しようとしちゃうよね、自分にもそんな時期がありました
勉強にはなるけど
108デフォルトの名無しさん
垢版 |
2023/08/02(水) 09:10:06.07ID:4pI1Wfnv
>>93-95
hissi.org を AI に掛けたらそろそろ自演検出出来る時代
2023/08/02(水) 14:23:27.46ID:iG8SsFh7
教師データが少なすぎて精度が上がらんやろ
2023/08/02(水) 20:35:38.56ID:HZivUK5/
>>101
こういうことじゃないか
少し前にRust派が貼った https://github.com/microsoft/windows-rs は、
win32 APIをunsafeなRustで受けてる そういうreadmeになってるからそうなんだろう
unsafeなAPIにRustが接続してるんだから、たしかに道理

Rust派がいうように、どんどんRust世代(Swiftとかも含む)のAPIが増えてくると、
所有権情報がついたAPIになるわけだから、C++(とC)も当然それに合わせていく必要があるし、
それがわかってるなら、いまのうちから追随に向けたC++の発展を期待するぜ、っていうわけ
111デフォルトの名無しさん
垢版 |
2023/08/02(水) 20:46:07.42ID:ss9KhaID
C++なんざ何処が良いのか分からん
C#ほどセーフティーな訳でも無ければ
アセンブラみたいに痒い所に手が届く訳でもない
2023/08/02(水) 21:02:46.80ID:bcW2DJn5
普通はインラインアセンブラとか使えるぞ たまに便利
2023/08/02(水) 21:43:56.55ID:2DJiiIQu
>>110
>所有権情報がついたAPIになるわけだから、C++(とC)も当然それに合わせていく必要があるし
C/C++の言語仕様・ライブラリでこれをサポートする予定があるのか
2023/08/03(木) 06:38:17.02ID:x4MCSOl6
サポートしてもらわないと困るって話
Rustがそこまで普及するんならね
2023/08/03(木) 08:14:30.82ID:8npqW66R
C/C++の問題点はプログラム全体がunsafeエリアな点にある
Rustのように自動的に安全が保証されるsafeエリアを作るべきだ
116デフォルトの名無しさん
垢版 |
2023/08/03(木) 13:49:40.33ID:Lr04Zjag
unsafe { } なコード描き捲れば良いじゃん
誰も止めないし
2023/08/03(木) 14:47:00.92ID:8npqW66R
生のメモリはunsafeだからunsafeなエリアをゼロにするのは無理だが最小限に閉じ込めることはできる
ちなみにunsafeなエリアとは自動的に安全性が保証されず人間が安全性を保証しなければならない意味であり安全でないコードの意味ではない
C/C++は全てがunsafeなエリアとなっていることが根本的な問題であるためC/C++に導入すべきはsafeなエリアとunsafeなエリアの区別の導入
2023/08/04(金) 02:45:20.65ID:9vVWYNaF
科学者は、新しいものより古いものを好むような気がする。
やっとFortranからC++に移行したみたいな感じじゃない。
119デフォルトの名無しさん
垢版 |
2023/08/04(金) 09:03:06.23ID:XLfSEGlw
unsafe { C++ }
unsafe { unsafe { Fortran }}
120デフォルトの名無しさん
垢版 |
2023/08/04(金) 11:28:27.58ID:rcIkyW/J
>>118
ある年齢以下だと科学者でもかなりpythonが主流派だよ。
2023/08/04(金) 12:38:38.48ID:Hxv32tG4
unsafeは名前が悪い。

noguardがguidelessの方が実態に合っている。
122デフォルトの名無しさん
垢版 |
2023/08/04(金) 12:40:31.64ID:l9tpj9tS
>>121
同意。
rustも別にunsafeだから安全じゃないってわけじゃないからな。
123デフォルトの名無しさん
垢版 |
2023/08/04(金) 13:02:53.96ID:2tbTIxDy
>>121
>noguardがguidelessの方が実態に合っている。
wwwww
guidelesswww
124デフォルトの名無しさん
垢版 |
2023/08/04(金) 13:09:44.29ID:TzILUUtf
俺はコンパイラの支援なんか不要!
安全なコード書けるから!
などというバカ対策
2023/08/04(金) 13:32:31.68ID:sr1c8EdF
いくら自信があっても
いくら百戦錬磨のプロでも
思い込みや見逃しでミスが入り込む可能性がある
そしてミスがないと主張してもその客観的な根拠はなく頭の中にしかない

C/C++にも客観的に自動的に安全性が保証されるsafeエリアを導入すべきだ
そしてプログラム本体にunsafeエリアが露出せずに済むようにsafeなライブラリ関数を充実すべきだ
126デフォルトの名無しさん
垢版 |
2023/08/04(金) 14:14:29.32ID:egOIBhxw
急にスレのベレルが下がったな
2023/08/04(金) 14:23:45.74ID:neuFS+YA
気のせいです
128デフォルトの名無しさん
垢版 |
2023/08/04(金) 14:45:44.75ID:z0X1ZVr3
>>125
唐突なポエム草
2023/08/04(金) 15:02:43.37ID:BcxuRAkw
もっともマトモな層は、コード書きに行ってこんなとこ来ないからw
2023/08/04(金) 15:21:59.11ID:9eDSr/2C
急にスレのベレルが下がったな
131デフォルトの名無しさん
垢版 |
2023/08/04(金) 15:39:49.20ID:XLfSEGlw
高かったことが一度でも在ったかのような言い草だな
2023/08/04(金) 15:45:57.96ID:f95F43ae
散髪屋に安全ガミソリを強制したり、マシン語プログラマを
蔑みそうな思想だな。
2023/08/04(金) 15:49:31.23ID:f95F43ae
安全ガミソリは刃に毛が挟まって取れなくなって、
再利用しにくいのに対し、直刃のかみそりは、
安全面さえ気をつければ手入れが簡単で再利用しやすい
からプロは後者を好んで使う。
それと同じ。
2023/08/04(金) 15:51:38.78ID:f95F43ae
直刃のかみそりを好んで使うプロたちに対して、
「お前らは客の安全性を疎かにする自信過剰で傲慢な
駄目な奴ら」
だとか言うつもりか。
2023/08/04(金) 15:56:47.17ID:i+NL2LDR
急にスレのベレルが下がったな
2023/08/04(金) 15:58:20.80ID:BcxuRAkw
>>134
消毒(sanitize)はどうしてるのかって問題はたしかにあるな
俺は気にしてないが、気にする人がいてもいい
2023/08/04(金) 16:01:00.54ID:f95F43ae
マシン語プログラマに対して、
「おまえらは、自身の腕を過信する安全性軽視の
 駄目プログラマだ」
なんて言う権利は他人には無いと思う。
2023/08/04(金) 16:09:50.05ID:S7yEvO65
>>137
安全性とは何なのかも定義も理解できていないからそんな馬鹿げた書き込みばかりしてるのか
2023/08/04(金) 16:17:28.67ID:f95F43ae
結局、相手を馬鹿にしてRustを推すのが、Rust信者の
やり口。
140デフォルトの名無しさん
垢版 |
2023/08/04(金) 16:31:11.69ID:EJnCR0gN
安全カミソリは安全ではないし
直刃のカミソリを使うプロでも客に切り傷つけることはよくある
141デフォルトの名無しさん
垢版 |
2023/08/04(金) 19:56:00.95ID:l9tpj9tS
直刃のカミソリっていうか、柄もないカミソリの刃だけを使うようなもんだろ。
自分も痛い目みること含めて。
2023/08/04(金) 20:09:16.36ID:S7yEvO65
他人が書いた部分や使ってるライブラリやその孫ライブラリまで含めて全ソースをチェックするのは非現実的だからな
もちろん自分で書いた部分やリファクタリングした部分も万が一のチェックを書き換えるたびにするのも手間暇コスト増
unsafeでもunguardでも呼び名はなんでもいいからsafe/guard部分がコンパイラによる自動チェックされるようになれば人間がチェックすべき部分は激減できる
2023/08/04(金) 20:15:00.62ID:bJlFt79O
急にスレのベレルが下がったな
2023/08/04(金) 20:26:53.92ID:og8Edpiv
ダングリングの検出ってGPTの登場で
言語側が備える意味は最早なくなった
そのうち外部にチェックプログラムが登場するよ
ABIが非互換になるデメリットを考えると
なおさらRustに追随する言語はないと思う
さよならRustの未来を信じた皆さん
2023/08/04(金) 20:36:35.81ID:q/UYza0u
>>144
ダングリングなんて小さな問題だけが対象ではないことを理解していなさそうにもみえるが
これまで外部ログラムがいくら頑張っても各種問題を静的に見つけることはできていないし今後も無理だろう
AIであろうとそれは同じであり神のようなAIが登場するならその時は全ての言語のプログラマー全員廃業だ
146デフォルトの名無しさん
垢版 |
2023/08/04(金) 21:00:09.09ID:IJ6nE+NX
>>144
外部のチェックツールって今までもあったけどね。
上手いプロンプトを考えられたらいいね。
147デフォルトの名無しさん
垢版 |
2023/08/04(金) 21:36:58.62ID:K3V5Xtdy
>そのうち外部にチェックプログラムが登場するよ
今まで使ったことないのかよww
2023/08/04(金) 22:00:25.44ID:CoH1yBj0
CheckGPTでRustは終わる
149デフォルトの名無しさん
垢版 |
2023/08/05(土) 00:03:15.32ID:8PC/4Tei
残念だけど言語サポート無しにRustと同じレベルのチェックは不可能
それがわからない時点で安全なコードを書く能力もないことが分かる
2023/08/05(土) 01:06:25.49ID:YeB01PWa
>>149
SendやSyncのマーカートレイトなど
様々な安全性を型チェックで保証できるような枠組みがRustには揃ってるあたりのことか
C++にも導入すべきだよな
C++は色んな機能が足りなすぎる
2023/08/05(土) 01:50:07.55ID:dts8KIsS
Rustは人の命をあずかるシステムに使えますか?
2023/08/05(土) 02:47:29.11ID:LVFgAb7y
使えます
2023/08/05(土) 04:34:10.67ID:KocMWFZU
Rust信者の正体は、ぎゃあぎゃあ五月蝿い評論家だ。
自分が上だと思って色々言ってくる。
2023/08/05(土) 04:36:47.68ID:KocMWFZU
実際にソフトウェアでサラリーマンとしてではなく、事業
として成功している人以外の意見はさらっと流して無視
しなければ、上手く行かない。
2023/08/05(土) 07:16:06.28ID:xdlV5LLb
>>148
これ
2023/08/05(土) 07:31:06.33ID:YeB01PWa
>>155
Rustが様々な安全性をコンパイラで保証できる仕組みは
例えばスレッド間での移動や共有の可否などを抽象的なトレイトで表現して
各型をそれらのトレイト境界で制約して型チェックで実現したりしているようだから
C++にもそういう仕組みを導入すれば自動チェックの可能性が出てくるね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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