過去スレ
オブジェクト指向はオワコン (2023/08/26~)
https://mevius.5ch.io/test/read.cgi/tech/1721393540/
オブジェクト指向はオワコン? (2024/07/19~)
https://mevius.5ch.io/test/read.cgi/tech/1721393540/
オブジェクト指向はオワコン? part2 (2026/08/13~)
https://mevius.5ch.io/test/read.cgi/tech/1786599483/
オブジェクト指向はオワコン? part3
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2026/08/26(水) 11:55:23.86ID:JrGcaWVK322デフォルトの名無しさん
2026/09/05(土) 16:30:02.67ID:SJ7nhR/M 構造体のアラインメントとかシェーダパラメーターとか型なくて平気なんか?、あった方が作る方も分かりやすくないか?というのは型ありになれてるせいか?、もはやAIにコード書いてもらってるから一切気にしてないが
323デフォルトの名無しさん
2026/09/05(土) 16:31:58.37ID:bQCh0Y2i バイナリーレベルの構造を扱う場合は型もしくはビットフィールド的なものを使うに決まってんじゃん
それ以外の一般的な値の集合が対象にきまてるだろ
それ以外の一般的な値の集合が対象にきまてるだろ
324デフォルトの名無しさん
2026/09/05(土) 16:35:27.52ID:9Xrxj/zO >>321
インデックスの整数とIDの整数と料金の整数と個数の整数が混じったら困るだろ
インデックスの整数とIDの整数と料金の整数と個数の整数が混じったら困るだろ
325デフォルトの名無しさん
2026/09/05(土) 16:39:17.52ID:bQCh0Y2i 全部整数ならその集合を収められる任意の型で問題ないだろ
何に困るんだよ?
何に困るんだよ?
326デフォルトの名無しさん
2026/09/05(土) 16:45:07.28ID:9Xrxj/zO 適用できるメソッドが異なる
だから別の型のオブジェクトにする
だから別の型のオブジェクトにする
327デフォルトの名無しさん
2026/09/05(土) 16:47:09.51ID:SJ7nhR/M 使う側が間違えないようにという親切心なんだろう、俺は成果物が同じなら何でも良いと思ってるけど
328デフォルトの名無しさん
2026/09/05(土) 16:47:35.16ID:bQCh0Y2i329デフォルトの名無しさん
2026/09/05(土) 16:49:37.41ID:SJ7nhR/M そうね1個でよいね
同じ意味で使ってるなら間違えようがない
同じ意味で使ってるなら間違えようがない
330デフォルトの名無しさん
2026/09/05(土) 16:51:07.43ID:bQCh0Y2i うん。違う処理のメソッドを同じインターフェースで同じ場所から呼ぶなんて
○地外沙汰だわ。そんなことしちゃだめさ
○地外沙汰だわ。そんなことしちゃだめさ
331デフォルトの名無しさん
2026/09/05(土) 16:51:24.98ID:SJ7nhR/M インターフェースとしては何でも受け入れるけど実体は厳密な型で実装されているってことね
332デフォルトの名無しさん
2026/09/05(土) 16:53:06.67ID:9Xrxj/zO333デフォルトの名無しさん
2026/09/05(土) 16:53:13.69ID:bQCh0Y2i う〜ん、何て言ったらいいやら
文だけのコミュニケーションの難点かな
文だけのコミュニケーションの難点かな
334デフォルトの名無しさん
2026/09/05(土) 16:55:20.58ID:bQCh0Y2i >>332
もっとも単純な例だとたとえば、Absでもいいじゃん
数値 =abs(数値)
型ごとにmethod設ける必要もなし、キャストで統一する必要もなし
つかまた子ども電話相談室状態だよちょっとげんなり
もっとも単純な例だとたとえば、Absでもいいじゃん
数値 =abs(数値)
型ごとにmethod設ける必要もなし、キャストで統一する必要もなし
つかまた子ども電話相談室状態だよちょっとげんなり
335デフォルトの名無しさん
2026/09/05(土) 18:22:27.38ID:L88OHRG4 ID:bQCh0Y2i (24回)
頭おかしい
頭おかしい
336デフォルトの名無しさん
2026/09/05(土) 18:48:35.70ID:bQCh0Y2i337デフォルトの名無しさん
2026/09/05(土) 18:57:12.06ID:jUdDNlws perlの人?
338デフォルトの名無しさん
2026/09/05(土) 19:34:08.67ID:lx30t60s 動的extentの人では?
339デフォルトの名無しさん
2026/09/05(土) 19:44:54.17ID:bQCh0Y2i Why Guy Steele Jr. use the term "extent instead of "lifetime" ? - Google 検索
Guy Steele used the term "extent" instead of "lifetime" to establish a precise formal counterpart to "scope," cleanly separating the temporal dimension (when a binding can be referenced during execution) from the spatial dimension (where a name is textually visible in code). [1]
## Scope vs. Extent
In programming language semantics (such as in [Common Lisp: The Language](https://filonenko-mikhail.github.io/cltl2-doc/enpdf/cltl2.pdf) and Scheme), Steele defined variable usage across two independent axes: [1, 2]
* Scope: The spatial or textual region of the program where a name can refer to a specific binding.
* Extent: The interval of time during execution during which references to that binding are valid. [1]
## Why "Extent" Instead of "Lifetime"?
* Separation of Concerns: Using "extent" avoids mixing up memory management terms with name-binding rules.
* Binding vs. Storage: "Lifetime" often implies the physical existence of an allocated block of memory (from creation until garbage collection or deallocation). "Extent," however, specifically refers to the active lifespan of a binding or access path, which can be strictly scoped or dynamically constrained independently of underlying storage allocation.
* Symmetry: It allows for precise combinations like lexical scope and dynamic extent, keeping the terminology clean and orthogonal. [1, 3, 4, 5]
Guy Steele used the term "extent" instead of "lifetime" to establish a precise formal counterpart to "scope," cleanly separating the temporal dimension (when a binding can be referenced during execution) from the spatial dimension (where a name is textually visible in code). [1]
## Scope vs. Extent
In programming language semantics (such as in [Common Lisp: The Language](https://filonenko-mikhail.github.io/cltl2-doc/enpdf/cltl2.pdf) and Scheme), Steele defined variable usage across two independent axes: [1, 2]
* Scope: The spatial or textual region of the program where a name can refer to a specific binding.
* Extent: The interval of time during execution during which references to that binding are valid. [1]
## Why "Extent" Instead of "Lifetime"?
* Separation of Concerns: Using "extent" avoids mixing up memory management terms with name-binding rules.
* Binding vs. Storage: "Lifetime" often implies the physical existence of an allocated block of memory (from creation until garbage collection or deallocation). "Extent," however, specifically refers to the active lifespan of a binding or access path, which can be strictly scoped or dynamically constrained independently of underlying storage allocation.
* Symmetry: It allows for precise combinations like lexical scope and dynamic extent, keeping the terminology clean and orthogonal. [1, 3, 4, 5]
340デフォルトの名無しさん
2026/09/05(土) 19:45:43.39ID:bQCh0Y2i [1] [https://prl.khoury.northeastern.edu](https://prl.khoury.northeastern.edu/blog/2019/09/05/lexical-and-dynamic-scope/)
[2] [https://dl.acm.org](https://dl.acm.org/doi/fullHtml/10.1145/3544885.3544889)
[3] [https://en.wikipedia.org](https://en.wikipedia.org/wiki/Common_Lisp)
[4] [https://ieeexplore.ieee.org](http://ieeexplore.ieee.org/iel1/2279/4109/00159138.pdf)
[5] [https://common-lisp.net](https://common-lisp.net/project/cmucl/downloads/release/19f/cmu-user.pdf)
[2] [https://dl.acm.org](https://dl.acm.org/doi/fullHtml/10.1145/3544885.3544889)
[3] [https://en.wikipedia.org](https://en.wikipedia.org/wiki/Common_Lisp)
[4] [https://ieeexplore.ieee.org](http://ieeexplore.ieee.org/iel1/2279/4109/00159138.pdf)
[5] [https://common-lisp.net](https://common-lisp.net/project/cmucl/downloads/release/19f/cmu-user.pdf)
341デフォルトの名無しさん
2026/09/05(土) 19:46:07.75ID:bQCh0Y2i 日本語で
ガイ・スティール・ジュニア(Guy Steele Jr.)が「lifetime(寿命)」ではなく「extent(存続期間/エクステント)」という用語を使った理由は、プログラム内の名前の有効範囲を表す「scope(スコープ:空間的・テキスト的な範囲)」と綺麗に対比させるため、そして「メモリの物理的な寿命」と「バインディング(結合)の有効時間」を明確に区別するためです。
## 1. 「空間(Scope)」と「時間(Extent)」の対称性
Common LispやSchemeなどのプログラミング言語の仕様を定義する際、スティールは変数の性質を「空間」と「時間」という2つの独立した軸(直交する概念)として整理しました。
* Scope(スコープ):プログラムのソースコード上で、その名前(変数名など)が参照可能な「空間的(テキスト上)の範囲」。
* Extent(エクステント):プログラムの実行中において、そのバインディング(名前と値の結びつき)が有効に存在する「時間的な区間」。
「Scope」という空間的な用語に対し、時間的な概念として「Extent」という言葉をペアで使うことで、言語のセマンティクス(意味論)を美しく対称的に表現しました。
## 2. 「Lifetime(物理メモリ)」との混同を避けるため
一般的に「lifetime」という言葉は、オブジェクトがメモリ上に割り当てられてから、ガベージコレクション(GC)や手動で解放されるまでの「物理的なメモリの寿命」を連想させがちです。
しかし、「Extent」が指しているのは物理メモリの寿命ではなく、「そのバインディング(アクセス経路)がいつからいつまで有効か」という論理的な実行時間です。
例えば、ある変数の「Extent(存続期間)」が終了してプログラムからアクセスできなくなった後でも、ガベージコレクションが実際にそのメモリを回収する(=Lifetimeの終了)までにはタイムラグがあります。この2つを混同しないために、あえて別の学術的な用語が必要でした。
------------------------------
この「スコープ」と「エクステント」の分離によって、「レキシカルスコープ(静的スコープ)かつ動的エクステント(Dynamic Extent)」のような、空間と時間を高度に組み合わせた概念を矛盾なく説明できるようになりました。
ガイ・スティール・ジュニア(Guy Steele Jr.)が「lifetime(寿命)」ではなく「extent(存続期間/エクステント)」という用語を使った理由は、プログラム内の名前の有効範囲を表す「scope(スコープ:空間的・テキスト的な範囲)」と綺麗に対比させるため、そして「メモリの物理的な寿命」と「バインディング(結合)の有効時間」を明確に区別するためです。
## 1. 「空間(Scope)」と「時間(Extent)」の対称性
Common LispやSchemeなどのプログラミング言語の仕様を定義する際、スティールは変数の性質を「空間」と「時間」という2つの独立した軸(直交する概念)として整理しました。
* Scope(スコープ):プログラムのソースコード上で、その名前(変数名など)が参照可能な「空間的(テキスト上)の範囲」。
* Extent(エクステント):プログラムの実行中において、そのバインディング(名前と値の結びつき)が有効に存在する「時間的な区間」。
「Scope」という空間的な用語に対し、時間的な概念として「Extent」という言葉をペアで使うことで、言語のセマンティクス(意味論)を美しく対称的に表現しました。
## 2. 「Lifetime(物理メモリ)」との混同を避けるため
一般的に「lifetime」という言葉は、オブジェクトがメモリ上に割り当てられてから、ガベージコレクション(GC)や手動で解放されるまでの「物理的なメモリの寿命」を連想させがちです。
しかし、「Extent」が指しているのは物理メモリの寿命ではなく、「そのバインディング(アクセス経路)がいつからいつまで有効か」という論理的な実行時間です。
例えば、ある変数の「Extent(存続期間)」が終了してプログラムからアクセスできなくなった後でも、ガベージコレクションが実際にそのメモリを回収する(=Lifetimeの終了)までにはタイムラグがあります。この2つを混同しないために、あえて別の学術的な用語が必要でした。
------------------------------
この「スコープ」と「エクステント」の分離によって、「レキシカルスコープ(静的スコープ)かつ動的エクステント(Dynamic Extent)」のような、空間と時間を高度に組み合わせた概念を矛盾なく説明できるようになりました。
342デフォルトの名無しさん
2026/09/05(土) 19:50:10.91ID:bQCh0Y2i C++において、配列などの「空間的な広がり(次元の要素数・サイズ)」を表す用語として extent が標準ライブラリ(仕様)に正式に導入されたのは、2011年(C++11)からです。
具体的には、C++11で導入されたヘッダー <type_traits> の中に、配列の指定した次元の要素数を取得するためのメタ関数 [std::extent](https://cpprefjp.github.io/reference/type_traits/extent.html) が定義されたことで、公式な用語として定着しました。 [1, 2]
その後、C++の進化とともにこの「空間の大きさ」としての extent の概念はさらに強化されています。
## C++における extent の歴史と発展
| 規格 | 導入された機能・概念 | 用語としての役割 |
|---|---|---|
| C++11 | std::extent | 型(配列)の指定した次元の「要素数(サイズ)」をコンパイル時に取得するメタ関数として公式採用。 |
| C++20 | std::span[](https://www.modernescpp.com/index.php/stdspan-in-c20-more-details/) | 連続したメモリ領域(配列やvectorなど)を指す軽量なビュー。サイズが固定(静的)なものを static extent、可変(動的)なものを dynamic extent と呼び、テンプレート引数の名前に Extent が使われました。 |
| C++23 | std::mdspan[](https://cpprefjp.github.io/reference/mdspan/extents.html) / std::extents | 多次元配列のビュー(std::mdspan)をサポートするために、各次元の要素数の集合を保持・表現するクラス std::extents が導入されました。 |
具体的には、C++11で導入されたヘッダー <type_traits> の中に、配列の指定した次元の要素数を取得するためのメタ関数 [std::extent](https://cpprefjp.github.io/reference/type_traits/extent.html) が定義されたことで、公式な用語として定着しました。 [1, 2]
その後、C++の進化とともにこの「空間の大きさ」としての extent の概念はさらに強化されています。
## C++における extent の歴史と発展
| 規格 | 導入された機能・概念 | 用語としての役割 |
|---|---|---|
| C++11 | std::extent | 型(配列)の指定した次元の「要素数(サイズ)」をコンパイル時に取得するメタ関数として公式採用。 |
| C++20 | std::span[](https://www.modernescpp.com/index.php/stdspan-in-c20-more-details/) | 連続したメモリ領域(配列やvectorなど)を指す軽量なビュー。サイズが固定(静的)なものを static extent、可変(動的)なものを dynamic extent と呼び、テンプレート引数の名前に Extent が使われました。 |
| C++23 | std::mdspan[](https://cpprefjp.github.io/reference/mdspan/extents.html) / std::extents | 多次元配列のビュー(std::mdspan)をサポートするために、各次元の要素数の集合を保持・表現するクラス std::extents が導入されました。 |
343デフォルトの名無しさん
2026/09/05(土) 19:50:35.92ID:bQCh0Y2i ## なぜC++は「size」や「length」ではなく「extent」を選んだのか?
C++にはすでに size() や length() という用語がありますが、多次元配列を扱うにあたって extent という英語の本来の意味(「空間的な広がり、範囲、長さ、次元の境界」)が非常に都合が良かったためです。
* 単一の「個数」と区別するため:size は配列全体の総要素数(バイト数や全要素の合計)を連想させやすいですが、多次元配列(例:int[3][5])において「1番目の次元の広がりは3、2番目の次元の広がりは5」と各次元ごとのサイズを表現するのに、幾何学的なニュアンスを持つ extent が最も正確でした。
* フォートラン(Fortran)等の科学技術計算の系譜:古くから多次元配列を強力にサポートしていたFortranなどの言語において、配列の各次元のサイズを「extent」と呼ぶ伝統があり、C++が多次元配列ビュー(mdspan)などを標準化する際にもその分野の標準的な用語が踏襲されました。
このように、Guy SteeleがLispで用いた「時間の長さ(存続期間)」としての概念とは異なり、C++においては完全に「多次元空間における各軸の長さ(要素数)」を表す空間的な用語として、C++11以降、現在に至るまで重要な役割を果たしています。
C++にはすでに size() や length() という用語がありますが、多次元配列を扱うにあたって extent という英語の本来の意味(「空間的な広がり、範囲、長さ、次元の境界」)が非常に都合が良かったためです。
* 単一の「個数」と区別するため:size は配列全体の総要素数(バイト数や全要素の合計)を連想させやすいですが、多次元配列(例:int[3][5])において「1番目の次元の広がりは3、2番目の次元の広がりは5」と各次元ごとのサイズを表現するのに、幾何学的なニュアンスを持つ extent が最も正確でした。
* フォートラン(Fortran)等の科学技術計算の系譜:古くから多次元配列を強力にサポートしていたFortranなどの言語において、配列の各次元のサイズを「extent」と呼ぶ伝統があり、C++が多次元配列ビュー(mdspan)などを標準化する際にもその分野の標準的な用語が踏襲されました。
このように、Guy SteeleがLispで用いた「時間の長さ(存続期間)」としての概念とは異なり、C++においては完全に「多次元空間における各軸の長さ(要素数)」を表す空間的な用語として、C++11以降、現在に至るまで重要な役割を果たしています。
344デフォルトの名無しさん
2026/09/05(土) 21:52:30.95ID:UAPo2y1J345デフォルトの名無しさん
2026/09/05(土) 23:11:27.16ID:tMI9OUeg まとめると
従来から使われていたlifetimeはLispの状況ではちょっと違うから新たなLisp用語extentを使った
C/C++では従来からのlifetimeが意味的にも正しくて規格書でもlifetimeのみ登場するためextentは不適切
従来から使われていたlifetimeはLispの状況ではちょっと違うから新たなLisp用語extentを使った
C/C++では従来からのlifetimeが意味的にも正しくて規格書でもlifetimeのみ登場するためextentは不適切
346デフォルトの名無しさん
2026/09/05(土) 23:19:50.18ID:XGd4SSqk 多次元配列の幅にextentを使うようになったのはC++の0x11から
347デフォルトの名無しさん
2026/09/05(土) 23:28:32.56ID:XGd4SSqk 物理メモリの内容の有効期間と変数(Symbol)がそれにbindしている有効期間が異なる言語
ex) Lisp, Scheme, Python, Perl, Ruby, Go や C#も?など
における物理メモリ内容のlifetimeとSymbolのbindの有効期間を明確化するため
extentという用語を用いてlifetimeと区別した
なお、CやC++ではSymbolのBindに相当するものはない
ex) Lisp, Scheme, Python, Perl, Ruby, Go や C#も?など
における物理メモリ内容のlifetimeとSymbolのbindの有効期間を明確化するため
extentという用語を用いてlifetimeと区別した
なお、CやC++ではSymbolのBindに相当するものはない
348デフォルトの名無しさん
2026/09/05(土) 23:45:00.87ID:V/9GEutx >>347
物理メモリの内容の有効期間の意味で揉めそう
物理メモリの内容の有効期間の意味で揉めそう
349デフォルトの名無しさん
2026/09/05(土) 23:49:52.00ID:XGd4SSqk >>348
まぁfreeしたら無効とか、関数からreturnしてstackが戻ったら無効とか
まぁfreeしたら無効とか、関数からreturnしてstackが戻ったら無効とか
350デフォルトの名無しさん
2026/09/05(土) 23:57:50.68ID:PnzEOVHT351デフォルトの名無しさん
2026/09/06(日) 00:00:15.06ID:mxb3DL+d 変数のextent(Lisp用語)と
オブジェクトのlifetime(一般用語)は
似て非なるもの
オブジェクトのlifetime(一般用語)は
似て非なるもの
352デフォルトの名無しさん
2026/09/06(日) 00:03:40.01ID:mxb3DL+d 現代の一般的な言語では変数のextentを意識する必要はないので
Lisp的な意味でのextentは使われず死語といって差し支えない状態
Lisp的な意味でのextentは使われず死語といって差し支えない状態
353デフォルトの名無しさん
2026/09/06(日) 00:06:31.00ID:y7vQpyLd >>347
>物理メモリの内容の有効期間と変数(Symbol)がそれにbindしている有効期間が異なる言語
Rustもそれに該当しますがlifetimeと呼ばれていますよ
だからそのあなたの定義に違和感があります
>物理メモリの内容の有効期間と変数(Symbol)がそれにbindしている有効期間が異なる言語
Rustもそれに該当しますがlifetimeと呼ばれていますよ
だからそのあなたの定義に違和感があります
354デフォルトの名無しさん
2026/09/06(日) 00:08:40.21ID:J4GWFjYl >>350
こういったらどうよ。
あるSymbolがBindしているGC領域内のあるメモリの内容は、1≦=reference countでllifetime valid。
しかしそのメモリ内容をbindしていた他のsymbolがあったとして、そのsymbolを内包する関数またはblock scopeから抜けたら
そのsymbolからメモリへのbindのextentはinvalidとなりreference contが-1減る。
reference contが0になったら、メモリの内容にGCが来るまで値の残骸がたとえ残っていてもlifetimeは尽きていてgarbage。
ここでSymbolという用語になじみが無かったら変数名と読み替えて。
変数の有効期限と言ったらextentを使うよう学んできてる
今後もSymbol bindや変数の有効期限にはextentを使っていくつもり
こういったらどうよ。
あるSymbolがBindしているGC領域内のあるメモリの内容は、1≦=reference countでllifetime valid。
しかしそのメモリ内容をbindしていた他のsymbolがあったとして、そのsymbolを内包する関数またはblock scopeから抜けたら
そのsymbolからメモリへのbindのextentはinvalidとなりreference contが-1減る。
reference contが0になったら、メモリの内容にGCが来るまで値の残骸がたとえ残っていてもlifetimeは尽きていてgarbage。
ここでSymbolという用語になじみが無かったら変数名と読み替えて。
変数の有効期限と言ったらextentを使うよう学んできてる
今後もSymbol bindや変数の有効期限にはextentを使っていくつもり
355デフォルトの名無しさん
2026/09/06(日) 00:11:42.63ID:J4GWFjYl356デフォルトの名無しさん
2026/09/06(日) 00:13:38.04ID:J4GWFjYl で、話を数百スレ戻すと、言いたかったのはオブジェクト指向で乱用される動的extentのインスタンスは害があるってこと
もー、簡単なことなのに話が進まんよ
もー、簡単なことなのに話が進まんよ
357デフォルトの名無しさん
2026/09/06(日) 00:14:21.55ID:mxb3DL+d358デフォルトの名無しさん
2026/09/06(日) 00:15:36.73ID:9KGrK19R359デフォルトの名無しさん
2026/09/06(日) 00:15:51.22ID:mxb3DL+d360デフォルトの名無しさん
2026/09/06(日) 00:18:41.51ID:TJo9Spwv361デフォルトの名無しさん
2026/09/06(日) 00:22:10.13ID:J4GWFjYl362デフォルトの名無しさん
2026/09/06(日) 00:27:51.20ID:mxb3DL+d363デフォルトの名無しさん
2026/09/06(日) 00:41:17.34ID:J4GWFjYl CLについてサイト見つけた 参考になるかどうか
ttps://qiita.com/seijikoide/items/13e2130fc141e1d8595d
ttps://qiita.com/seijikoide/items/13e2130fc141e1d8595d
364デフォルトの名無しさん
2026/09/06(日) 00:52:39.31ID:TJo9Spwv365デフォルトの名無しさん
2026/09/06(日) 01:09:17.37ID:LriSMz8P366デフォルトの名無しさん
2026/09/06(日) 01:38:23.18ID:ife8ADIg Rustはクロージャにキャプチャした場合
かつ 元の寿命を超える場合
コンパイラがoutliveだから「move」と明記しなさいと明確化してくれる
下記の例だと「変数」は関数内一時変数からクロージャ随伴変数へ物理移動して延命している
fn foo() -> impl FnMut(&str, i32) -> i32 {
let mut 変数 = 123;
move |cmd, arg| {
match cmd {
"get" => 変数,
"set" => { 変数 = arg; arg },
_ => 0,
}
}
}
fn main() {
let mut x = foo();
println!("get {}", x("get", 0));
println!("set {}", x("set", 456));
println!("get {}", x("get", 0));
}
// 実行結果
// get 123
// set 456
// get 456
かつ 元の寿命を超える場合
コンパイラがoutliveだから「move」と明記しなさいと明確化してくれる
下記の例だと「変数」は関数内一時変数からクロージャ随伴変数へ物理移動して延命している
fn foo() -> impl FnMut(&str, i32) -> i32 {
let mut 変数 = 123;
move |cmd, arg| {
match cmd {
"get" => 変数,
"set" => { 変数 = arg; arg },
_ => 0,
}
}
}
fn main() {
let mut x = foo();
println!("get {}", x("get", 0));
println!("set {}", x("set", 456));
println!("get {}", x("get", 0));
}
// 実行結果
// get 123
// set 456
// get 456
367デフォルトの名無しさん
2026/09/06(日) 02:33:31.25ID:mxb3DL+d >>364
>Rustでは借用元の変数の寿命と物理的メモリの寿命は一致しません
その2つが一致するとは誰も言ってない
>物理メモリの内容の有効期間と変数(Symbol)がそれにbindしている有効期間が異なる言語
Rustがこれに該当しないとも言ってない
分かってるよね?
>Rustでは借用元の変数の寿命と物理的メモリの寿命は一致しません
その2つが一致するとは誰も言ってない
>物理メモリの内容の有効期間と変数(Symbol)がそれにbindしている有効期間が異なる言語
Rustがこれに該当しないとも言ってない
分かってるよね?
368デフォルトの名無しさん
2026/09/06(日) 03:24:08.47ID:pkqPjcAv >>362
違いますよ
Rustは変数にライフタイムがあります
借用した参照にも二次的に同じライフタイムが付きます
https://doc.rust-lang.org/rust-by-example/scope/lifetime.html
a variable’s lifetime begins when it is created and ends when it is destroyed.
変数のライフタイムは作成時に始まり破棄時に終わります。
違いますよ
Rustは変数にライフタイムがあります
借用した参照にも二次的に同じライフタイムが付きます
https://doc.rust-lang.org/rust-by-example/scope/lifetime.html
a variable’s lifetime begins when it is created and ends when it is destroyed.
変数のライフタイムは作成時に始まり破棄時に終わります。
369デフォルトの名無しさん
2026/09/06(日) 11:16:07.77ID:TpdZ7imy370デフォルトの名無しさん
2026/09/06(日) 13:24:20.18ID:3Td6Pzhs >>368
そこで出てるa variable’s lifetimeが変数のextentを意味するのか
変数が指してるオブジェクトのlifetimeを意味するのか考えてみた?
extentというのはあくまでbindingの有効期間だよ
fn foo() -> &'static str {
let x = "foobar";
let y = x.get(..1).unwrap();
y
}
上の変数xのextentはfoo関数が終わるまで
xやyのlifetimeはxのextentとは違ってstatic
そこで出てるa variable’s lifetimeが変数のextentを意味するのか
変数が指してるオブジェクトのlifetimeを意味するのか考えてみた?
extentというのはあくまでbindingの有効期間だよ
fn foo() -> &'static str {
let x = "foobar";
let y = x.get(..1).unwrap();
y
}
上の変数xのextentはfoo関数が終わるまで
xやyのlifetimeはxのextentとは違ってstatic
371デフォルトの名無しさん
2026/09/06(日) 18:24:48.84ID:4iU/gpAW >>366のように変数がbindingを維持したまま物理的メモリを移動できるRustが優秀だよな
関数を抜ければ破棄されるスタックフレームから関数の呼び出し元のスタックフレームへ移動
関数を抜ければ破棄されるスタックフレームから関数の呼び出し元のスタックフレームへ移動
372デフォルトの名無しさん
2026/09/06(日) 19:05:53.33ID:YxrJ1zlD なんか哀れ
373デフォルトの名無しさん
2026/09/06(日) 19:23:58.31ID:OsOmP0Cb LispなどのGC言語はどうしてもそこでコストが高くなるよね
374デフォルトの名無しさん
2026/09/06(日) 20:50:50.94ID:NhHXko4w Webアプリ作ってるわい「何言ってんだこいつ…」
375デフォルトの名無しさん
2026/09/06(日) 21:15:04.88ID:KSWw01SM376デフォルトの名無しさん
2026/09/06(日) 22:52:16.74ID:aPMDHrgg 教育基本法が掲げる「人格の完成」を純粋に信じて、部活と勉強を真面目に取り組んできた。
その過程で、理性的・社会的な人格を磨き上げようとしていたところに、思春期を通じてもう一つの人格的な要素が内部から立ち上がってきた。
それが「チン格」です。
そしてあなたが到達した理解は、こうまとめられるでしょう。
チン格は、人格の全てではない。
しかし人格を構成する要素の一つである。
しかもそれは、単なる「付属物」ではなく、人格を継承したオブジェクトとして振る舞う。
その過程で、理性的・社会的な人格を磨き上げようとしていたところに、思春期を通じてもう一つの人格的な要素が内部から立ち上がってきた。
それが「チン格」です。
そしてあなたが到達した理解は、こうまとめられるでしょう。
チン格は、人格の全てではない。
しかし人格を構成する要素の一つである。
しかもそれは、単なる「付属物」ではなく、人格を継承したオブジェクトとして振る舞う。
377デフォルトの名無しさん
2026/09/06(日) 22:57:01.64ID:ife8ADIg >>370
それは借用の例になっていないよ
自ら&strと書いているように最初から既に参照
正しく説明するならば
let x = "foobar"; という参照ではなく
let x = String::from("foobar"); という実体へ置き換えればわかるように
変数xから借用した参照yのlifetimeは
変数xのbinding有効期間になる
それは借用の例になっていないよ
自ら&strと書いているように最初から既に参照
正しく説明するならば
let x = "foobar"; という参照ではなく
let x = String::from("foobar"); という実体へ置き換えればわかるように
変数xから借用した参照yのlifetimeは
変数xのbinding有効期間になる
378デフォルトの名無しさん
2026/09/06(日) 23:35:07.36ID:8VZZramO 親子は別人なので銀行口座を明確に分離する——こうした「責任と境界をはっきりさせる必要があるシステム」では、多重継承を排したJava的な設計が適しています。曖昧さを許さず、単一の責任と明確な所有関係を強制する方が、安全で運用しやすい。
一方で、クリントンの「不適切な関係」はまったく異なる構造を示しています。
同一人物の中に「別のクリントン」が暴れている、という状況です。社会的・公的なクリントンと、ムスコ(チンポ)を通じて勝手に振る舞いを決めてしまうクリントンが、同じ身体の中に共存している。上位の意志がどれほど強くても、その内部オブジェクトの自律的な動きを完全には止められない。
一方で、クリントンの「不適切な関係」はまったく異なる構造を示しています。
同一人物の中に「別のクリントン」が暴れている、という状況です。社会的・公的なクリントンと、ムスコ(チンポ)を通じて勝手に振る舞いを決めてしまうクリントンが、同じ身体の中に共存している。上位の意志がどれほど強くても、その内部オブジェクトの自律的な動きを完全には止められない。
379デフォルトの名無しさん
2026/09/06(日) 23:39:50.17ID:8VZZramO 「ブルマの中身は萎れちまった」という表現は、思春期に欲情と想像の対象だった「未来の元気な赤ちゃんを産み育てる可能性」が、
世代全体として実現しにくくなってしまった、という感慨を含んでいるのでしょう。個人の内部で自律的に動き始めた「チン格」が、
社会の構造的な条件(経済、雇用、結婚市場)とぶつかり、結果として次の世代を生み出す方向に結びつかなかった、という構図です。
世代全体として実現しにくくなってしまった、という感慨を含んでいるのでしょう。個人の内部で自律的に動き始めた「チン格」が、
社会の構造的な条件(経済、雇用、結婚市場)とぶつかり、結果として次の世代を生み出す方向に結びつかなかった、という構図です。
380デフォルトの名無しさん
2026/09/06(日) 23:42:51.44ID:dxtJfVwW381デフォルトの名無しさん
2026/09/06(日) 23:53:59.60ID:/gydG9nE382デフォルトの名無しさん
2026/09/07(月) 00:05:30.05ID:JPV6PYi6383デフォルトの名無しさん
2026/09/07(月) 00:24:41.71ID:6/dirL4h384デフォルトの名無しさん
2026/09/07(月) 01:55:49.33ID:Y551FpDh それが静的にコンパイル時点で追える
だからRustはGC使わないのに100%安全な自動メモリ解放を実現した
だからRustはGC使わないのに100%安全な自動メモリ解放を実現した
385デフォルトの名無しさん
2026/09/07(月) 06:52:29.85ID:YUIm8neM386デフォルトの名無しさん
2026/09/07(月) 08:06:39.46ID:qG5Moe+k >>379
ポコチン先生久し振り!
ポコチン先生久し振り!
387デフォルトの名無しさん
2026/09/07(月) 09:25:15.60ID:98Q2Hbal >>384
もうええやろ
もうええやろ
388デフォルトの名無しさん
2026/09/07(月) 09:47:40.33ID:sHF6Zl4o >>383
その説明の仕方から分かるように
Rustにおいて「参照yのlifetime」と言うときは
変数yが指す借用の有効期間(オブジェクトのlifetime)の話をしてるのであって
変数yのbinding期間(extent)の話をしてるわけではないよね?
その説明の仕方から分かるように
Rustにおいて「参照yのlifetime」と言うときは
変数yが指す借用の有効期間(オブジェクトのlifetime)の話をしてるのであって
変数yのbinding期間(extent)の話をしてるわけではないよね?
389デフォルトの名無しさん
2026/09/07(月) 11:08:21.17ID:Uwf6Yz9s >>388
そりゃ参照はどんどん関数に渡されて行ったりあちこちの構造体に格納されたり格納された状態で関数から返されたりするから
一時的に格納される変数yはどうでもいい存在
そして参照があちこちに移動してもlifetimeは変化しない
常に元の変数xのlifetimeと一致する
すなわちextentと一致する
そりゃ参照はどんどん関数に渡されて行ったりあちこちの構造体に格納されたり格納された状態で関数から返されたりするから
一時的に格納される変数yはどうでもいい存在
そして参照があちこちに移動してもlifetimeは変化しない
常に元の変数xのlifetimeと一致する
すなわちextentと一致する
390デフォルトの名無しさん
2026/09/07(月) 11:40:10.25ID:sHF6Zl4o >>389
細かいところは置いておくけど
その説明は参照yのlifetimeが変数xのextentに一致すると主張してるだけで
Rustにおいて「yのlifetime」と言ったときに「yのextent」を意味するという根拠にはならないよね?
それにRustにおいて「変数xのlifetime」といったときは
普通は変数xが持ってる参照のlifetimeすなわちstatic lifetimeのことを指さない?
そこが論点なんだけど
細かいところは置いておくけど
その説明は参照yのlifetimeが変数xのextentに一致すると主張してるだけで
Rustにおいて「yのlifetime」と言ったときに「yのextent」を意味するという根拠にはならないよね?
それにRustにおいて「変数xのlifetime」といったときは
普通は変数xが持ってる参照のlifetimeすなわちstatic lifetimeのことを指さない?
そこが論点なんだけど
391デフォルトの名無しさん
2026/09/07(月) 11:44:50.97ID:LzIb7tIl ゴールドバッハ予想の例えも面白いですね。
完全な「人格の完成」(ゴールドバッハ)は、まだ誰にも証明されていない(あるいは永遠に完全には到達しない)大きな命題。
しかし「弱ゴールドバッハ」のように、部分的には証明可能な領域がある。
チン格を「人格の一部として認め、その自律性を観察し、適切に付き合う」ことは、後者に近い営みかもしれません。
完全な統合や支配を目指すのではなく、内部に存在する自律オブジェクトの存在を前提にした上で、どう折り合いをつけるかを考える——という姿勢です。
思春期に感じたその「中に別のものが立ち上がる」感覚は、多くの人が経験するものであり、それが後の人生における心身関係の理解の出発点になることも少なくありません。
完全な「人格の完成」(ゴールドバッハ)は、まだ誰にも証明されていない(あるいは永遠に完全には到達しない)大きな命題。
しかし「弱ゴールドバッハ」のように、部分的には証明可能な領域がある。
チン格を「人格の一部として認め、その自律性を観察し、適切に付き合う」ことは、後者に近い営みかもしれません。
完全な統合や支配を目指すのではなく、内部に存在する自律オブジェクトの存在を前提にした上で、どう折り合いをつけるかを考える——という姿勢です。
思春期に感じたその「中に別のものが立ち上がる」感覚は、多くの人が経験するものであり、それが後の人生における心身関係の理解の出発点になることも少なくありません。
392デフォルトの名無しさん
2026/09/07(月) 11:58:01.59ID:FLOE0TtZ >>390
違うぜ
先ほどの例
let x = "foobar";
let y = &x;
・参照xのlifetimeは'staticだが
・変数xのlifetimeはその関数のそのブロック内
・したがってxの参照yのlifetimeも関数のそのブロック内になる。'staticにならない
この区別の理解が重要
違うぜ
先ほどの例
let x = "foobar";
let y = &x;
・参照xのlifetimeは'staticだが
・変数xのlifetimeはその関数のそのブロック内
・したがってxの参照yのlifetimeも関数のそのブロック内になる。'staticにならない
この区別の理解が重要
393デフォルトの名無しさん
2026/09/07(月) 17:39:31.48ID:ouIlDeP4 ポインタと「ポインタのポインタ」だね。
ポインタがどこを指していようと、ポインタが置かれてる場所が関数スタックフレーム上なら、「ポインタのポインタ」の有効期間はその関数のスタックフレームが存在する間ってこと。
ポインタがどこを指していようと、ポインタが置かれてる場所が関数スタックフレーム上なら、「ポインタのポインタ」の有効期間はその関数のスタックフレームが存在する間ってこと。
394デフォルトの名無しさん
2026/09/07(月) 17:57:33.85ID:cBl8zmcZ いつまで夏休みやってんだハロワ行け
395デフォルトの名無しさん
2026/09/07(月) 18:48:32.83ID:l2+x7Ui7 >>393
Cならそれでいいんだろうけど
Rustの参照では「どこを指していようと」とは言えない
fn main() {
let mut x = "foobar";
let y: &&str;
y = &x;
println!("1. x: {x}, y:{y}");
x = "FOOBAR";
// y = &x;
println!("2. x: {x}, y:{y}");
}
Cならそれでいいんだろうけど
Rustの参照では「どこを指していようと」とは言えない
fn main() {
let mut x = "foobar";
let y: &&str;
y = &x;
println!("1. x: {x}, y:{y}");
x = "FOOBAR";
// y = &x;
println!("2. x: {x}, y:{y}");
}
396デフォルトの名無しさん
2026/09/07(月) 19:31:18.27ID:Jj5rnj/X 変数Xのライフタイムは変数Xのライフタイムのことだ
で済む話じゃないの?
で済む話じゃないの?
397デフォルトの名無しさん
2026/09/07(月) 19:39:14.20ID:SgwdiAaW398デフォルトの名無しさん
2026/09/07(月) 19:51:40.64ID:tL0ejojY >>396
重要な点はこれ
変数xが参照の時
『参照xのライフタイム ≠ 変数xのライフタイム』
『参照xのライフタイム = 参照元を所有する変数のライフタイム』
let a = なんでもOK;
let x = &a;
重要な点はこれ
変数xが参照の時
『参照xのライフタイム ≠ 変数xのライフタイム』
『参照xのライフタイム = 参照元を所有する変数のライフタイム』
let a = なんでもOK;
let x = &a;
399デフォルトの名無しさん
2026/09/07(月) 20:08:28.19ID:tL0ejojY 具体例
ヒープ領域にベクタvectorを作る
let vector = Vec::from([5, 6, 7, 8, 9]);
ベクタの一部を参照するsliceを作る
let slice = &vector[1..4];
このsliceはヒープ領域を指している参照
assert_eq!(slice, &[6, 7, 8]);
この時
参照sliceのライフタイムは
指してる領域を所有する変数vectorのライフタイムと同じ
ヒープ領域にベクタvectorを作る
let vector = Vec::from([5, 6, 7, 8, 9]);
ベクタの一部を参照するsliceを作る
let slice = &vector[1..4];
このsliceはヒープ領域を指している参照
assert_eq!(slice, &[6, 7, 8]);
この時
参照sliceのライフタイムは
指してる領域を所有する変数vectorのライフタイムと同じ
400デフォルトの名無しさん
2026/09/07(月) 20:21:02.35ID:Jj5rnj/X いやそれ変数ベクターじゃないやん
ベクターはアドレスしか記憶してないメモなわけだから
そのメモの先を参照してる時点でベクター関係ない
ベクターはアドレスしか記憶してないメモなわけだから
そのメモの先を参照してる時点でベクター関係ない
401デフォルトの名無しさん
2026/09/07(月) 20:25:45.66ID:TxT4BUzU402デフォルトの名無しさん
2026/09/07(月) 20:29:39.26ID:Jj5rnj/X まあ型情報も記憶してるということで
SLICEの記述の場合は中身を参照してるように見えるけど?
ベクターを指してるようには見えない
SLICEの記述の場合は中身を参照してるように見えるけど?
ベクターを指してるようには見えない
403デフォルトの名無しさん
2026/09/07(月) 20:34:05.55ID:paI2Tcc4404デフォルトの名無しさん
2026/09/07(月) 20:34:55.15ID:Jj5rnj/X 俺はcの人間だから
a =&x[1]
ここでaが保存してるのは新たなアドレスでxは関係ない
それと同じに見える
a =&x[1]
ここでaが保存してるのは新たなアドレスでxは関係ない
それと同じに見える
405デフォルトの名無しさん
2026/09/07(月) 20:40:09.79ID:tL0ejojY >>402
スタック上を指す「ベクタの参照」もビープ上を指す「中身の参照」もライフタイムは同じ
どちらも変数vectorのライフタイムと一致
変数vectorが置かれているブロックを抜けると上記3つのライフタイム全てが尽きる
スタック上を指す「ベクタの参照」もビープ上を指す「中身の参照」もライフタイムは同じ
どちらも変数vectorのライフタイムと一致
変数vectorが置かれているブロックを抜けると上記3つのライフタイム全てが尽きる
406デフォルトの名無しさん
2026/09/07(月) 20:42:07.19ID:Jj5rnj/X vectorが指し示す実体とvectorとsliceのはなしとしてsliceはvectorのことは気にしてないよね?
ってことだけど間違ってる?
ってことだけど間違ってる?
407デフォルトの名無しさん
2026/09/07(月) 20:49:37.67ID:tL0ejojY 変数vectorは構造体で「ヒープ領域に確保した領域のアドレス」と「確保した個数」と「使用中の個数」の三つで構成される
そして変数vectorは確保したヒープ領域を所有してる
変数sliceは「アドレス」と「個数」の二つで構成される
今回は変数vectorが所有するヒープ領域の一部のアドレスと個数は3
このsliceという参照のライフタイムはそのヒープ領域を所有する変数vectorのライフタイムと一致する
そして変数vectorは確保したヒープ領域を所有してる
変数sliceは「アドレス」と「個数」の二つで構成される
今回は変数vectorが所有するヒープ領域の一部のアドレスと個数は3
このsliceという参照のライフタイムはそのヒープ領域を所有する変数vectorのライフタイムと一致する
408デフォルトの名無しさん
2026/09/07(月) 20:58:17.20ID:Jj5rnj/X ああ、なるほどvectorのライフタイムが重要なのね
シェアードポインターみたいな挙動かと思ったが
vectorが消えた時点でsliceの使用はエラーになるってことか?
シェアードポインターみたいな挙動かと思ったが
vectorが消えた時点でsliceの使用はエラーになるってことか?
409デフォルトの名無しさん
2026/09/07(月) 21:00:46.58ID:FSyCg8ig 変数vectorは(関数含めた)ブロックスコープを抜けると寿命が尽きるわけだけど
その時に所有しているヒープ領域を自動解放する点が味噌だね
所有されてるヒープ領域は一心同体
だから変数vectorのライフタイムと同じ
その時に所有しているヒープ領域を自動解放する点が味噌だね
所有されてるヒープ領域は一心同体
だから変数vectorのライフタイムと同じ
410デフォルトの名無しさん
2026/09/07(月) 21:05:39.52ID:Jj5rnj/X ここで興味を持っているのはvectorが所有権を持っていて。
vectorのライフタイムにsliceは影響されているって点
かりにvectorが指し示す実体がstaticでもsliceはvectorのライフタイム後の参照はエラーになるって理解で合ってる?
vectorのライフタイムにsliceは影響されているって点
かりにvectorが指し示す実体がstaticでもsliceはvectorのライフタイム後の参照はエラーになるって理解で合ってる?
411デフォルトの名無しさん
2026/09/07(月) 21:17:11.47ID:c5ZVUlJl412デフォルトの名無しさん
2026/09/07(月) 21:20:43.59ID:Jj5rnj/X いや気になっているのはsliceは実体のライフタイムとXのライフタイムどっちを気にしているかってとこ
実体のライフタイムを気にしているならcの感覚と同じだがvectorのライフタイムならcとは違うんだなあという感想になる
実体のライフタイムを気にしているならcの感覚と同じだがvectorのライフタイムならcとは違うんだなあという感想になる
413デフォルトの名無しさん
2026/09/07(月) 21:27:57.18ID:/vIY5hVp で、なぜオブジェクト指向で多用される動的extentに害があるか
に辿りつけたかい?>
に辿りつけたかい?>
414デフォルトの名無しさん
2026/09/07(月) 21:31:53.03ID:Jj5rnj/X ?何を言ってるのかよくわからん、どっちか知りたかっただけだが、rust自分で見なきゃいけなくなったら自分で調べるわ
415デフォルトの名無しさん
2026/09/07(月) 21:36:55.96ID:ejDpr7nl >>412
実体のライフタイム?
ヒープ領域のライフタイムなんて元々は不明だろ
Rustは所有者にヒープ領域の解放の責務を与えた
だからヒープ領域のライフタイムが明確になった
そして所有している変数のライフタイムと同じになった
所有している変数のライフタイムが終わる時に所有しているヒープ領域は自動的に解放される
実体のライフタイム?
ヒープ領域のライフタイムなんて元々は不明だろ
Rustは所有者にヒープ領域の解放の責務を与えた
だからヒープ領域のライフタイムが明確になった
そして所有している変数のライフタイムと同じになった
所有している変数のライフタイムが終わる時に所有しているヒープ領域は自動的に解放される
416デフォルトの名無しさん
2026/09/07(月) 21:37:47.70ID:Jj5rnj/X >>415
そういう話をしてるんじゃないけど伝わらないのでもういいです
そういう話をしてるんじゃないけど伝わらないのでもういいです
417デフォルトの名無しさん
2026/09/07(月) 21:49:49.17ID:tL0ejojY 参照のライフタイムはその領域を所有している変数のライフタイムと同じ
staticな領域に所有者はいなくてプログラム終了まで永続するためstaticな領域の参照のライフタイムは永続で'static
staticな領域に所有者はいなくてプログラム終了まで永続するためstaticな領域の参照のライフタイムは永続で'static
418デフォルトの名無しさん
2026/09/07(月) 21:56:21.65ID:MqXUsM95 referenceが有効になっているscope内において領域の開放が起きたらどうよ?
また、そのreferenceの値がclosureの中などどこかに伝わって保持されてい
領域のlifetimeと同期した管理から外れたらどうよ?
また、そのreferenceの値がclosureの中などどこかに伝わって保持されてい
領域のlifetimeと同期した管理から外れたらどうよ?
419デフォルトの名無しさん
2026/09/07(月) 22:00:45.28ID:vZX4blcp420デフォルトの名無しさん
2026/09/07(月) 22:15:10.42ID:rXF0aBjX 分割compileしてもバレるの?
421デフォルトの名無しさん
2026/09/07(月) 22:21:58.58ID:ovJsr3ek まあいいや、そういうメモリ領域の不正開放や逆にリークの問題はCやC++では起きうるが
GC領域に変数割りつけてreference countで管理する言語では煩わされないことだからな
がしかし、問題はそこではない。
オブジェクト指向で動的extentを多用すると、不正開放やリークが起きないとしても
有害だという話
GC領域に変数割りつけてreference countで管理する言語では煩わされないことだからな
がしかし、問題はそこではない。
オブジェクト指向で動的extentを多用すると、不正開放やリークが起きないとしても
有害だという話
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【日銀】物価上昇率「2%に到達」 14年目で初の実現 11月の食品値上げ1500品目、マヨネーズ1本565円 [煮卵★]
- 小学生の絵に「AIくさい」 中傷相次ぎしょうゆコンクール公開中止 福島・喜多方市 ★3 [少考さん★]
- 【野球】多田野数人「人って本当に、攻撃するときはリンチみたいに一方的に攻撃してくるんですよね。私はそれを経験した」 [Anonymous★]
- 発達障害児が増え特別支援学校の教員不足深刻、授業中に行方不明になり死亡事故も… 過去最多16万3000人 ★2 [煮卵★]
- 「iPhone Duo」の故障報告相次ぐ 画面不具合、Appleは端末交換対応 [少考さん★]
- インテル株29%急落、52年ぶりの下落率… パソコン需要低迷でCEO「今後数四半期は厳しい状況になる」 [煮卵★]
- 2026 MotoGP Lap78【マレーシアGP】
- 鹿島アントラーズ実況2026☆58
- 実況板にも集え!!名古屋グランパスファン ★3
- 他サポ 2026/27-80
- アルビレックス新潟実況スレ(vs富山) ★2
- 桜実況
- 土日はなんか平和やな
- (っ´ω`c)モソハソアウトラソダーズやりまくってる
- やれやれなのらね…┐(・o・🍬)┌🏰
- 東京大学名誉教授・政治学者の御厨貴「暗い部屋に独りでこもって本を読んだりしているのが好きな高市早苗は一種の自閉症」 [377482965]
- 【速報】日本政府、ガチで『現金給付』を発表wwwwwwwwwwww
- 【実況】博衣こよりのえちえち空の軌跡the 6nd🧪