次世代言語11[Rust Swift TypeScript Dart]

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/06/03(日) 23:53:27.92ID:vrBh4O6u
スレタイ以外の言語もok

前スレ
次世代言語10[Rust Swift TypeScript Dart]
https://mevius.5ch.net/test/read.cgi/tech/1524607347/
2018/06/18(月) 14:48:34.03ID:soq2obRK
まあHakellに関してはもう次世代というよりLispと似たようなポジションだということで
578デフォルトの名無しさん
垢版 |
2018/06/18(月) 15:30:15.87ID:soq2obRK
ところで、またATS2に話を戻すんだけど、
日本語訳もあったしチュートリアルやってみてるんだけど
↓の再帰関数の停止性検査とやらで躓いている
ttp://jats-ug.metasepi.org/doc/ATS2/INT2PROGINATS/x2485.html

特に
fun isevn{n: nat} .<2*n>. (n: int n): bool = if n = 0 then true else isodd (n-1)
and isodd{n: nat} .<2*n+1>. (n: int n): bool = not(isevn(n))
が何故.<2 * n>.と.<2 * n + 1>になるか理解できん…
.<n>.と.<n + 1>.で大丈夫だと思ったんだが…
たぶんまだ、停止性メトリクスとやらが正しく理解できていないんだろうな…
誰か詳しく解説してくれないか?
2018/06/18(月) 15:31:22.53ID:/sFO+jYl
>>575
ドワンゴ(失笑)とかか?wwww
2018/06/18(月) 15:37:03.09ID:/sFO+jYl
ドワンゴが使ってると公言した言語を使ってる会社はドワンゴレベル

気を付けろwwwww
2018/06/18(月) 16:10:43.68ID:soq2obRK
ドワンゴってScala以外にもSwift, Kotlin(スマホアプリ)やReact(Typescript)やRustとかも使ってるからな…
開発事例は聞いたことないけどGoの勉強会とかもやってるし…
その基準だと、このスレでよく話題に挙がる言語はほとんど全てドワンゴレベルだな
ドワンゴレベルじゃない次世代言語はDartくらいか?www
2018/06/18(月) 16:24:24.97ID:NEyGx0zg
ドワンゴには、C++ の標準化委員の江添亮もいるし、Rust, Elixir, HDL もやってる。
クックパッドには、RubyVM を作った、笹田耕一もいる

基本は、Ruby。
Gradle で使うGroovy も、Ruby そっくり。
Elixir もそう。
jQuery のメソッドチェーンも、Ruby っぽい

無料のRails チュートリアルをやれば、すべてのフレームワークがわかる
2018/06/18(月) 16:24:43.92ID:yVgz9/Zm
言語と品質には何の関係もないのを
日々実証し続けているドワンゴさん
2018/06/18(月) 16:29:30.09ID:pZ1JIWjn
まだRubyのチュートリアルの話してんの?
Rubyっぽい、って、第一言語がRubyだからそう見えるだけだろ。
2018/06/18(月) 16:40:07.48ID:OPxRI0Cf
フリーソフトがあるから品質と価格が無関係
2018/06/18(月) 17:22:50.97ID:qMNnTEHn
ドワンゴってエンジニアだけ見ると技術力高そうなのに
なんで成果が全部ゴミなんだろうな
2018/06/18(月) 17:37:58.73ID:NEyGx0zg
YouTube, AbemaTV は、広告
ニコ生は、有料
Showroom は、寄付

ビジネスモデルが異なるから、
1つのチャネルの視聴者数が1万を超えると、追い出す

乃木坂みたいに、数万人も見ると、追い出す。
広告が無いから、1万人以上が無料で見ると、電気代が払えず、赤字になる
2018/06/18(月) 18:02:04.30ID:EvkbZGBx
>>578
isevn.<n>.とisodd.<n+1>.だと
isevn 3 のメトリックは.<n>. = .<3>.
そこから呼ばれるisodd 2 のメトリックも.<n + 1> = .<3>.
減ってねえ!エラー!ってことじゃね
想像だけで試してないので違ってたらすまん
2018/06/18(月) 18:04:53.53ID:xdRdwSco
>>578
とある関数呼び出しの定義内に表れる再帰的呼び出しの
停止性マトリクスが、大元の関数呼び出しの停止性マトリクスから辞書順で下降していくことから停止性を担保しようというのが停止性マトリクスの意味。

そして停止性マトリクスの記述に表れる n は issven や isodd の引数そのものだということに注意

iseven、isodd の停止性マトリクスがそれぞれ n、n+1 だと、

iseven n の停止性マトリクス→n
iseven n の定義に出てくる isodd (n-1) の停止性マトリクス→n-1+1=n
減っていないから停止性が担保されない(NG)。

説明にあるように <n, 0> と <n,1> ならば、
iseven n の停止性マトリクス→<n,0>
iseven n の定義に出てくる isodd (n-1) の停止性マトリクス→<n-1,1> (下降している!OK)
isodd も同様に
isodd n の停止性マトリクス→<n,1>
isodd n の定義に出てくる iseven (n) の停止性マトリクス→<n,1> (下降している!OK)

そして<n,0>, <n,1> の代わりに n*2, n*2+1 を使っている(この代用が可能なことはわかるよね)。
2018/06/18(月) 18:08:28.85ID:xdRdwSco
>>589
>停止性マトリクスが、大元の関数呼び出しの停止性マトリクスから辞書順で下降していくことから停止性を担保しようというのが停止性マトリクスの意味。

この説明「下降していく」だと本当に再起をどんどん
実行していくみたいで間違ってるか。

とある関数呼び出しの停止性マトリクスよりも、
その関数の定義に表れる全ての再帰的呼び出しの停止性マトリクスのほうが辞書順で小さい、
というべきか。
2018/06/18(月) 18:09:50.53ID:xdRdwSco
>>589
>isodd も同様に
>isodd n の停止性マトリクス→<n,1>
>isodd n の定義に出てくる iseven (n) の停止性マトリクス→<n,1> (下降している!OK)

最後の行は
isodd n の定義に出てくる iseven (n) の停止性マトリクス→<n,0> (下降している!OK)

の間違いでした
2018/06/18(月) 18:32:21.74ID:NEyGx0zg
偶数は、2*n

奇数は、2*n+1
2018/06/18(月) 18:34:45.57ID:EvkbZGBx
>>592
理解してないだろw
2018/06/18(月) 18:51:32.37ID:OPxRI0Cf
安全装置のたぐいは損失を防ぐばかりで利益は全然ない
利益がないから理解できない人が続出
2018/06/18(月) 18:58:41.11ID:soq2obRK
>>589
ありがとう
冷静に計算していったら、確かにnとn+1じゃ減ってないからダメで
2*nと2*n+1だときちんと減ってるからOKってところまでは理解できた
でも、一体何を考えて<n,0>と<n,1>のタプル?のメトリクスが出てきたか全然分からない…

> そして<n,0>, <n,1> の代わりに n*2, n*2+1 を使っている(この代用が可能なことはわかるよね)。
すまない。俺はバカなんだ。分からないんで教えて下さい。

自分でも自分がどこまで分かっているのかさえよく分かっていないんだが、
たぶん、停止性メトリクスがきちんと減っているかどうかを計算する方法までは理解できたが、
きちんと減っている停止性メトリクスを導き出す方法が分かってないんだと思う
2018/06/18(月) 19:23:14.64ID:xdRdwSco
>>595
>すまない。俺はバカなんだ。分からないんで教えて下さい。

辞書順を保ったまま <n, 0>, <n,1> をそれぞれ 2*n, 2*n+1 で置き換えられる
3*nとか4nでもいいけど2つしかないから2nで十分



fun f
{n:nat} .<3*n>.
(n: int n) : bool =
if n = 0 then true else g (n-1)
and g
{n:nat} .<3*n+2>.
(n: int n) : bool = not (h (n))
and h
{n:nat} .<3*n+1>.
(n: int n) : bool = not (f (n))
2018/06/18(月) 19:24:20.04ID:EvkbZGBx
>>595
引数のnと、isoddとisevnの2つの関数の区別(+0, +1)を位取り(*2)して足してるだけじゃないかな……
2018/06/18(月) 19:33:04.83ID:vrc1WpPf
>>581
全部そうだよ

やっぱりJavaやC、Pythonが最終的に一番良いってことだな
新しいものに飛び付いてるとドワンゴになるぞ
2018/06/18(月) 19:52:57.33ID:wJzzPYpc
ドワンゴはc++みたいなもんだな。
とりあえず新言語(新機能)の実験台になってもらえるっていう。
2018/06/18(月) 20:40:04.20ID:bcKP+A2z
>>599
つまりドワンゴがスレタイ言語は
ほぼ使えないと証明してくれてるってことだな
2018/06/18(月) 20:46:12.17ID:7nYEmGe5
ドワンゴは本当のC++プログラマーも募集してるしな
2018/06/18(月) 21:40:32.50ID:poCVJCAd
やきそば焼かせてるようなクズ会社にいくのか?
2018/06/18(月) 21:49:26.33ID:c5Ieze8t
bio100%の戀塚もいるんだよな
いかんせん上がアホだから
2018/06/18(月) 21:55:35.52ID:soq2obRK
>>596
辞書順を保ったまま置き換えられるってのが何をしてるのかイマイチよく分からんが
とりあえず、2つの関数で相互再帰なら2n、3つなら3nといった感じ……なのか?
うーん…まだ勉強し始めたばかりだし、やってればそのうち分かるようになるかぁ…
あざっす。
2018/06/18(月) 22:18:33.96ID:ejyTxCd5
>>604
いやここで堪えて理解しておくべき。
引数から算出できて、再帰で減るものを何か考えてそれを停止性マトリクスとする。

値そのものじゃなく大小関係だけが大事だから、
m が 0 と 1 のどちらかしかなければ
<n, m> の代わりに n*2+m で ok ってこと


<5,0> は <4,1> より大 ⇔ 5*2+0 は 4*2+1 より大
2018/06/18(月) 22:30:23.80ID:ejyTxCd5
ちなみに辞書順というのは停止性メトリクスのタプルについて、

先頭の要素同士を比較、等しければ次の要素同士を比較、また等しければそのまた次の以下略…
という風に比較したときの順序関係
2018/06/18(月) 22:47:52.93ID:ejyTxCd5
上で散々マトリクスと誤記しているメトリクスはこの場合「(停まるまでの)距離」という意味
608デフォルトの名無しさん
垢版 |
2018/06/18(月) 23:09:05.63ID:soq2obRK
>>605
なるほど。(n, 0)と(n, 1)が2nと2n+1に変換できることまでは分かった。ありがたい。
でも、そもそもの話として(n, 0)と(n, 1)っていうのが
一体何を考えて導き出されたのかが分からないんだよ…
チュートリアルに「isevn と isodd に (n, 0) と (n, 1) のメトリクスを与えれば、
これら2つの関数の停止性もまた検査できることは明白です。」って
書いてあるんだけど、俺にとっては全然明白じゃない…
何をどう考えたら(n, 0)と(n, 1)のメトリクスを与えようと思うんだ…?

現状、分かっているのは2nと2n+1ならメトリクスが減っているからOKってところと
(n, 0)と(n, 1)のメトリクスが2nと2n+1に変換できるってところまで…
一番肝心な部分が理解できていない気がする…
609デフォルトの名無しさん
垢版 |
2018/06/18(月) 23:17:38.17ID:Tp0/3gfg
なんの話か分からないけどこういう奴らが使ってる技術は使いたくない
2018/06/19(火) 00:28:07.36ID:2myyjakz
ATSは依存型言語の中でも奇抜な方だと思うよ
Coqとソフトウェアの基礎の方が易しいと思う
2018/06/19(火) 01:44:59.48ID:menX4d1R
CoqとAgdaは敬遠してるんだよね…
あの二つはプログラミング言語じゃなくて証明支援器だって聞いてるから…
オレは別にPCに証明問題を解くのを手伝ってもらいたいんじゃなくて、
従来の型システムを発展させた依存型とかを使ったより安全な
プログラミングを行うの方法が知りたいんだよって思って…
けど、学ぶ順番としてはCoqが先のほうが良かったのかな?
でも、Coqだとどうにもモチベーションが…

あと、ついでに線形型も学びたかった……
Rustの所有権・借用・ライフタイムはほぼ理解できてるんでそれほど難しくはないだろうと…
まず、依存型で躓いてるんで線形型までたどり着いていない…
んー……一度に色々やろうとし過ぎか…(´・ω・`)
2018/06/19(火) 02:53:39.62ID:8GZLihdn
Idris とかはどうなのよ
2018/06/19(火) 04:24:16.98ID:thfWBPV2
>>608
この場合呼び出しのたびに変化するものが、引数のnと「どちらの関数を呼ぶか」という
2つしかないんだから、呼び出しのたびに減る式を作ろうとしたらこれを組み合わせるしかない
後はパズルだろ
614デフォルトの名無しさん
垢版 |
2018/06/19(火) 07:30:15.96ID:3/FXNCrL
全てのnについて(n, 1)>(n, 0)と2n+1>2nは同値だから当たり前だろ。
2018/06/19(火) 08:33:24.05ID:vJmt1KGh
わかりにくい記法は自分で自由にわかりやすい記法に変換すればわかる
Cのポインタの記法と同じ
自由に考える方が早い
偉い人にいちいち許可を求めたり質問したりすると時間がかかる
2018/06/19(火) 08:33:59.97ID:menX4d1R
>>613
んー…1日置いたらやっと分かったような気がする…
気がしてるだけかもだけどあとは自力でどうにか理解できそう…
まあ、新しい概念を覚えるときはどうしても時間が掛かるものだし、
あとは腑に落ちるまでサンプルコードひたすら写経したりするか…
皆ありがとう

>>610
ATSの依存型は奇抜なの?
他の依存型がある言語も似たようなことやるんじゃないの?
2018/06/19(火) 08:51:24.21ID:vJmt1KGh
コンパイル時のメタプログラミングはみんな奇抜
2018/06/19(火) 19:52:01.92ID:R39QGoSG
型を静的に解析しつつマクロみたいに評価順序を入れ替えようってのが
そもそも無理があるんだよ。
2018/06/19(火) 20:25:55.46ID:b5m1uThb
そもそも型に期待しすぎるのがキモい
型の役目なんてOCamlくらいでちょうどいいのに
2018/06/19(火) 21:54:08.10ID:vbOWauRQ
型安全のためにDRY原則すら無視してるのあるからな
2018/06/20(水) 01:28:01.72ID:QSlqi/vd
型安全を崩す水準のDRYはかなり悪い印象があるな
共通化すべきでないものまで共通化してるのではと
2018/06/20(水) 11:07:04.58ID:YLzmhKZ9
一生型書いてろ
俺はプロダクト書くからよ
2018/06/20(水) 11:47:35.83ID:CARL/ed1
人は型かプロダクトかどっちかしか書けないからなw
2018/06/20(水) 13:04:18.23ID:pTH4tzak
>>620
ジェネリクスやインターフェース正しく使ってれば
DRY原則無視しなきゃ型安全守れないこととかほぼ無いだろ
どんなコード書いてるんだよ?
2018/06/20(水) 21:17:56.02ID:vXpw0FFs
型って建物に例えると水準器だろ
柱がまっすぐ立ってるか見るための補助具

補助具ばっか作って家が建つのか?
2018/06/20(水) 21:34:34.91ID:kjCaqS0j
一生水準器使ってろ
俺は家建てるからよ
2018/06/20(水) 21:39:33.95ID:pTH4tzak
そうか、じゃあ動的言語で作ったプログラムって例えるなら水準器なしで建てられた家なのか…
それは欠陥住宅というもので工期が遅れてる建物よりもっと害悪だと思うんだがそれは…
2018/06/20(水) 21:55:16.85ID:nu99cs2X
いや単なる犬小屋欲しいだけなのに設計書に一年くらい時間かけるようなもんだ。
2018/06/20(水) 22:31:25.72ID:R/RR2gVc
>>628
犬小屋ってどれくらいの規模のものを指してるの?
リソース3つくらいのweb apiサーバとか?
2018/06/20(水) 22:35:54.20ID:R/RR2gVc
>>625
それだけじゃないよ。メンテナンスという観点でも必要。
いわば動的言語なら釘で家を建てるけど、
型付きなら、簡単に取り替えられるようにボルトで止まってる。
ちゃんとネジに印がついていて交換ミスも起こりにくい
631デフォルトの名無しさん
垢版 |
2018/06/20(水) 22:37:33.02ID:6Ldi6ZQ0
例え話をするエンジニアは無能の法則
2018/06/20(水) 22:45:13.44ID:pTH4tzak
>>629
犬小屋なんだから日曜大工、つまり個人の趣味レベルのものでしょ
2018/06/20(水) 23:03:24.49ID:kjCaqS0j
型は水準器というより物差しに近い
2018/06/21(木) 00:46:09.92ID:j3Jry11G
オプションでも型制約無い言語なんてもうJSとRubyくらいじやね?
2018/06/21(木) 01:00:00.42ID:9yZQgWTf
Lua忘れるとか
2018/06/21(木) 01:15:00.23ID:Xm+RspnJ
c++のstd::chornoみたいな設計は行き過ぎた型安全だと思う
2018/06/21(木) 01:16:19.88ID:tnwaIVRK
C++は存在そのものが行き過ぎている
2018/06/21(木) 02:30:14.21ID:lOkS/ogb
永遠の次世代言語
2018/06/21(木) 03:28:39.67ID:CmPcltgN
C++はやべーよ
でも誰も逃げ出せない
2018/06/21(木) 07:30:10.88ID:6ripmtAT
まさに魔王
2018/06/21(木) 12:02:43.31ID:NVNRBOaD
逃げ出したいけど環境がっつりだから無理だわ
2018/06/21(木) 12:22:25.31ID:f5p4gdbf
rubyは絶対に型を書きたくないから
コメントか外部ファイルに型を書くようにするらしいぞ
2018/06/21(木) 12:26:56.39ID:Ny0HAIKC
0から何か作ろうって時にC++だけは選びたくない
2018/06/21(木) 13:31:50.47ID:AvdUCmrX
俺はアプリ屋だからコアの部分は Windows、
Android、iOS、MacOS のどれでも使える c++
UI 側を書く各言語から呼び出して使う
2018/06/21(木) 13:35:39.24ID:uYxelfTA
あいかわらずRubyの人たちは何がしたいのかよくわからんな
2018/06/21(木) 13:52:08.71ID:/kaFS0dg
C/C++の型はアドレスやサイズの計算に使う
低級言語だから型が役に立つ
高級言語がC++の真似をする必要はないんだよ
型を書かない高級言語はたくさんある
2018/06/21(木) 13:55:42.09ID:Ij19PzUL
コードに型を書かないと後で分からなくなるから結局コメントで型を書くことになるゴミ
2018/06/21(木) 13:58:07.14ID:D8gwnbh9
メソッド名とか使われ方とかコメントとかプログラマのクセとかからAIが型推論してくれるんだろう
2018/06/21(木) 14:00:01.02ID:gnPepsUQ
AIは確率過程だからコードみたいな根幹部分には使いたくないな
2018/06/21(木) 14:11:21.05ID:0x6Lg0t3
AIを使ったエラー検出は今後のトレンドになるだろうね
技術進歩に伴って緩やかに型は不要になっていくだろう
IntelliCodeの発展形としてMSがやりそう
2018/06/21(木) 14:33:42.30ID:copqf+uW
そのAIをC++で作らされたりしてな
2018/06/21(木) 14:34:54.31ID:/kaFS0dg
AIの得意分野はどっちかが必ず勝つ対戦ゲームというブルーオーシャン
レッドオーシャンに飛び込んでも勝てると思うのは確率的に間違ってる
2018/06/21(木) 14:46:28.87ID:S4IxNo+1
>>646
とあるオブジェクトを扱うアルゴリズムが要求するのは型じゃなく
整数っぽいものを返すsize() メソッドは実装していること、
とかそういう制約だよな
2018/06/21(木) 20:54:11.38ID:bp0U88xF
>>642
python2の型ヒントみたいなやり方するってことかな。まあ実行時には必要ない情報だから
それもリーズナブルな解だと思うけどね。使えるものを早く出してくれさえすれば。
2018/06/21(木) 21:51:19.80ID:6ripmtAT
型推論とかAIで検出とかバカほど無駄なことに計算資源使おうとするのな。
そんなカスみたいな機能に資源使うくらいならコンパイル速度上げた方がよっぽどマシ。
2018/06/21(木) 23:52:49.86ID:c3YkgC6b
>>655
えぇ…
AIは知らんが型推論のほうはコンパイル速度重視のGoでさえ使ってる技術だぞ
2018/06/22(金) 00:03:19.61ID:7bl9EfTW
単純な右から左の型推論は余計な型名解決が減る分むしろコンパイル速くなるだろ
2018/06/22(金) 00:15:01.47ID:ecfXobDJ
おじいちゃんは自分がよく知らないものは全部無駄に見える生き物だから…
2018/06/22(金) 00:18:04.51ID:mjvSylV1
>>657
単純な場合はむしろ速くなるの?それは知らんかった
ただ、どっちにしろ型推論ってそんなに計算リソースを消費するイメージないんだけど…
2018/06/22(金) 00:42:37.48ID:fxQEanUA
速くなる訳ねーだろ。。
https://cocopon.me/blog/2015/03/swift-compilation-time/
なんでこいつらこんな簡単に騙されるの?
2018/06/22(金) 00:43:40.93ID:H0orbnfz
型推論の計算コストは有効範囲と言語の持ってる型システムの表現力でけっこう変わるよ
関数内でのみ有効なのと関数宣言でも使えるのだと随分違う
既存の、コーディング中に型を書くのが苦にならないような言語だと後から型推論追加しても旨味が少ないと思う

Rustはコンパイル速度を気にしてかライフタイム関係の推論が面倒だったのか知らんけど、関数内でしか型推論有効にしなかったのは個人的にマイナス
2018/06/22(金) 00:58:36.71ID:ZcpNHe71
>>660
せめてgoでの比較持ってこいよ
2018/06/22(金) 01:02:01.33ID:mjvSylV1
>>660
結局コンパイラがどうやって推論してるかはソース見てみない限り分からないからな
遅くなる場合もあれば、ほとんど変わらない場合もあるだろうし、何とも言えないな…

>>661
俺は逆に関数宣言の型の情報まで推論されるのは好きじゃないな
推論するのはローカル変数だけにしてほしい
まぁ、そこら辺は好みの問題だな
2018/06/22(金) 01:56:16.57ID:fZhhlNhQ
>>663
関数宣言の型の情報って何よ?
665デフォルトの名無しさん
垢版 |
2018/06/22(金) 08:06:59.36ID:UUvhOuOE
constは推論されないとかのことかな
2018/06/22(金) 10:04:29.72ID:HgCip2r2
Nim IN ACTIONの1章と8章が無料公開されてるから1章読んでみてるけどなかなかセンスいい言語だな
2018/06/22(金) 11:15:38.68ID:HgCip2r2
しかしスネークケースキャメルケース同一視すんのどうなんだ
識別子に暗黙で余計な解釈しないでほしい
railsの自動変換思い出して嫌な感じ
2018/06/22(金) 13:59:02.57ID:yU7k9q5t
NimはDの後継って感じがする
2018/06/22(金) 17:58:23.96ID:cmFjayc5
最近D言語は低レベルのほう寄ってってるからなあ
2018/06/22(金) 18:08:28.35ID:oC8L9s8J
ベクトル化を使うための4要素配列とかヤバすぎ
2018/06/22(金) 18:49:57.22ID:y18AFRdV
Dとは一緒にしないでいただきたい!

ってのは冗談だけどDとは違うと信じたい
アホみたいに機能消したり追加したりしてないし
2018/06/23(土) 03:45:17.94ID:U3yty0jv
Facebookで使ってるってのはドワンゴとはまた違った種類の怖さがある
673デフォルトの名無しさん
垢版 |
2018/06/23(土) 05:57:11.77ID:tcOUUI9f
なんだんだ理由付けて勉強したくないだけでしょ
わたしはrustで先にゆきますよ
2018/06/23(土) 07:38:19.54ID:0Hl7KNt9
rust自体はちょこちょこ迷走やまずい部分も見られるので、本当に使い物になるのは
rustの成果を引き継ぎだか横取りだかした次の言語だと思ってる
675デフォルトの名無しさん
垢版 |
2018/06/23(土) 08:08:55.39ID:tcOUUI9f
はいはい次は本気出すパターンね
2018/06/23(土) 08:21:35.71ID:xKUV9tWt
個人的に勉強するだけならいいと思いますよ。
他人にクソコンパイラの使用を押し付けなければね。
2018/06/23(土) 08:33:57.94ID:XcMMhDbo
>>674
swiftかな。swiftはにんきあるよな。俺には理解できないけど。関数型に興味を持つきっかけとnull安全な言語仕様の有効性を教えてくれた
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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