1 名前:デフォルトの名無しさん [2008/04/14(月) 15:16:22 ] プログラミング言語 D (D Programming Language) について語るスレッドです。 過去スレは >>2 ■本家 ttp://www.digitalmars.com/d/ ttp://www.kmonos.net/alang/d/ (和訳) ■コンパイラ ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家) ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド) ■参考URL ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究) ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF) ttp://dsource.org/ (dsource) ttp://tinyurl.com/3da5oa (C/C++に疲れた人のD言語) ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語) ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか) ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座) ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画) ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games) ■ IDE ttp://dronten.googlepages.com/dscite (DSciTE) ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks) ttp://www.dprogramming.com/entice.php (Entice Designer) ttp://www.dsource.org/projects/descent (Descent) ttp://www.dsource.org/projects/poseidon (Poseidon)
116 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 02:28:55 ] >>115 dHellってdHell2じゃなくて? 無印の方はSDLとほぼ同等だと思ってたが システムハンガリアンだったらダメ絶対 アプリケーションハンガリアンだったら推奨 ameblo.jp/argv/entry-10031517216.html
117 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 03:01:33 ] アプリケーションハンガリアンもtypedefがあるからあまり必要無いんじゃない?
118 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 11:48:18 ] >>117 え?
119 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 12:21:11 ] >>118 Cとかと違って,違う型として扱ってくれるからじゃない? 全て上手く行くかどうか分からないけども
120 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 14:57:22 ] データの目的を変数名に入れなくても、typedefで型のほうを目的固有にできるって話じゃね。 ttp://www.radiumsoftware.com/hungarian_notation.html この例なんかは、安全な文字列型と危険な文字列型を用意すれば解決するようにも思える。
121 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 17:29:48 ] >>120 のリンク先では「(C++で)いちいちウィンドウ座標とレイアウト座標を 別のクラスにするのは大仰すぎて非現実的だからアプリハンガリアンがいいよね」 と言いたいようだけど,ただ視覚に訴えかけるだけじゃなくて それぞれを暗黙的に変換されないようにするべきだと思う. typedefがあるD言語では仕組みは簡単だし 実は同じ型だから変換のコストは安いからもってこい typedef Point LayoutPoint; typedef Point WindowPoint; とか typedef /*unsafe*/string safeString; とか. D言語ではアプリハンガリアンでさえいらず型システムに任せられる気がしてきた
122 名前:117 mailto:sage [2008/04/30(水) 17:31:07 ] >>118 すまん言葉足らずだった >>119-120 が言っている通り なるべくならコンパイルエラーで検出できるようにした方が間違いが無いだろうし オーバーロードが出来るから処理も分けやすい 全てのケースで置き換えられるとは言わないけど 大体はtypedefが使えると思う
123 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 17:40:46 ] 文字コード別に文字列型を定義してしまっても良い気がする。
124 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 18:29:26 ] >>123 こんなのはしてみたけど typedef char mbchar; alias invariant(mbchar)[] mbstring; 文字列同士の連結に ~ じゃなくて連結関数を使わないといけないのがネックだった
125 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 19:42:24 ] ただの配列だから~演算子で連結できるだろ
126 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 19:44:23 ] >>124 charは既にUTF8って意味を持ってるから、ubyteを基底にするべきだろうね。
127 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 20:04:38 ] 配列でptrを使わずに&演算子で出てくるのは配列の最初の要素へのポインタと配列の長さを格納した8バイトのデータ?
128 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 20:21:27 ] >>125 あ,ゼロ終端の配列にするからいけないのか thx >>126 間違えた.元々 ubyte にしてました
129 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 20:25:35 ] >>127 &演算子が返すのは、配列の参照が保持されている場所のアドレスか、 配列の先頭の要素のアドレス。動的か静的かで挙動が異なる。
130 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 21:15:10 ] >>116 すまん、dHell2の方だった アプリケーションハンガリアンってあるのか・・・ システムハンガリアンしか知らなかった・・・thx!!
131 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 21:59:30 ] >>114 なるほど
132 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 22:43:31 ] >>122 なるほど、得心しました。 単純にアプリケーションハンガリアンはレビュアーの為でもあるんでそっちまで否定されてるのかと思い込んでました。
133 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 07:09:09 ] >>124 文字列型はinvariant(char)[]でもう確定なのかな せめて一段aliasがあればな… ていうかWindowsでUTF8が(ry
134 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 10:37:10 ] ところで、charがUTF-8の文字という意味を持っているなら、 なんで、toMBSzとかはchar*を返すんだ? ubyte*を返すべきなんじゃないか?
135 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 13:11:56 ] まったくその通りだと思います
136 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 15:05:51 ] D はじめますた。 winxp で eclipse + descent + dmd 1.028 + dsss 最新版 + ddbg 最新版で なんとかコーディング → ビルド → デバッガが走るという、IDE の最低限要素を実現出来たばっかり。 で、 import std.stdio; void main() { printf("test"); printf("hello, D"); // この行にブレークポイント } このコードでブレークポイントの部分で止まったときに eclipse のコンソールに、標準出力に出力されたであろう test って文字列が出てこない。 出てこさせる方法は無いですか?
137 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 15:22:47 ] fflush(stdout);
138 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 15:26:06 ] >>136-137 std.stdio.flushall(); てのなかったっけ
139 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 15:32:06 ] >137 >138 出てこないみたいです。
140 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 16:49:44 ] あーーーわかりますた。 標準出力用のコンソールが、eclipse の外のウィンドウで出てたです。 気がつかなかったー。
141 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 17:36:59 ] ワラタ
142 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 20:25:08 ] >>136 その実現する過程をぜひ教えてほしい・・・
143 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:28:47 ] eclipse は元から入ってました。 で、descent を入れました。 eclipsewiki.net/eclipse/?D%B8%C0%B8%EC%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3 コンパイラが別途必要なのを気がつかなくて入れてなかったので、 あとから dmd と dmc をいれました。ふつうはルートに展開するらしいけど、ルートが嫌だったので、c:\d に展開。 ->c:\d\dmd ->c:\d\dm dsss を入れます。 ->c:\d\dsss ddbg を入れます。 ->c:\d\ddbg パスを設定します。 DMD_HOME=c:\d PATH=〜〜〜〜;%DMD_HOME%\dmd\bin;%DMD_HOME%\dm\bin;%DMD_HOME%\dsss\bin;%DMD_HOME%ddbg\bin; コンパイラの設定。 eclipse で ウィンドウ>設定 を開いて、ツリーから、D -> Installed Compilers を選択 追加を押して、Compiler home directory に、dmd を展開したディレクトリ(c:\d\dmd) を設定 すると、他の情報もなんだか良い感じに設定されているので、おもむろに OK デバッガの設定 www.dsource.org/projects/descent/wiki/DebuggingPrograms
144 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:38:59 ] ビルダーの設定 D のプロジェクトのプロパティを開いて、ツリーから ビルダーを選択 新規ボタンを押して、プログラムを選択して、OK メインタブーーーーーーーーーーーー ロケーション:c:\d\dsss\bin\dsss.exe 作業ディレクトリ:${project_loc} 引数: build 更新タブーーーーーーーーー 完了時にリソースを更新をチェック 選択されたりソースを含むプロジェクトを選択 再帰的にサブフォルダーを組み込むをチェック おもむろに OK dsss のコンフィグ D のプロジェクトのディレクトリに、dsss.conf を作成。 [main.d] // ← main() を含むソースファイル buildflags=-g -Isrc\\ // ← コンパイラに渡すオプション だいたい、こんなかんじです。
145 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 23:44:39 ] 乙です
146 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 06:26:21 ] >>143-144 うわ、ありがとう!!
147 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 18:23:04 ] Descent ver あがってるね。
148 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 19:33:18 ] 型タプルの各型の文字列表現が欲しいんだが可能でしたっけ?
149 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 20:10:02 ] stringof プロパティを使えば出来るかと ttp://www.kmonos.net/alang/d/2.0/property.html 動作例 これでいいのかな? ttp://codepad.org/7jPFcZXj
150 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 21:44:48 ] >>148 じゃないけど…おれもちょっとそれは悩んでたことがある。結局あきらめたけど。 >>149 ttp://codepad.org/JLIVZDYF こんな感じに、モジュール名まで考えたときに stringof だと都合が悪いんだよね… mangleof と demangle でいけないかと思ったけど、これもなんかうまくいかないし… どうすればいいんだろう?
151 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:24:11 ] 1.0から0.2を5回引いても0にならないのはどうにかならないんでしょうか・・・。
152 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:37:42 ] 面倒でも整数で
153 名前:149 mailto:sage [2008/05/02(金) 23:40:14 ] >>150 うーん、確かに半端だ… .NET Framework の Type.Fullname プロパティ相当のものが 現在のD言語には用意されていないようなのが不味いのかな。
154 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:19:06 ] >>151 浮動小数点数がどういうものかを勉強しろ。
155 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:33:29 ] Dの浮動小数点数ってずいぶん貧弱なんですね
156 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:37:58 ] >>148 stringof はタプルに対しても使える。 モジュール名は実行時でも良いなら typeid で取れるね。
157 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:16:37 ] >>155 Dの・・・?
158 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:24:55 ] あちこちで春ですよ
159 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:36:59 ] さすがに>>155 には失笑した
160 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:48:20 ] >>155 はとりあえず基本情報処理技術者の資格を取ってきなさい
161 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:51:09 ] >>155 今まで使ってきた言語を示すべし
162 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 02:25:19 ] PythonのDecimalみたいなのがあれば良いんじゃない
163 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 02:51:49 ] >>162 Decimalはライブラリ(というかモジュール?)だから組み込みどうしではPythonも同じじゃない? 標準で入れるべき,となるとまた別な問題な気がするけど,dsourceとかにあるのかなぁ
164 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 10:30:41 ] Dの10進浮動小数点数ライブラリはまだ見たことはないな まあ、欲しい奴が移植すればいいだろう
165 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 15:22:40 ] >>155 はMatlabとかMathematicaとか使ってたんだろ。
166 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 15:37:18 ] C#は1.0から128bitDecimal型標準装備だな
167 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 09:46:12 ] >>143-144 に刺激されて、Eclipse&Dscentいれてみたが、 VSのMakeプロジェクト、asm{ int 3;} に慣れすぎていた自分がいた・・・
168 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:02:20 ] 仕様で見つけられないので質問です。(1.0 の仕様しか見てませんけど) クラスメンバーのアクセス制限属性(private とか protected とか)は、 記述したらそのアクセス制限が適用されるのはわかるのですが 記述しなかった場合、どのアクセス制限が適用されるのかご存じのかた居ませんか? とりあえず試した限りでは public っぽいのですが・・・。
169 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:23:20 ] www.kmonos.net/alang/d/2.0/struct.html デフォルト publicだよ
170 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:25:48 ] あ、ごめん2.0のURL出しちゃったけど1.0系でも同じだよ
171 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:43:51 ] ・・・これで判れというのもなかなかシビアなものがある。>DigitalMars どもありがとうございました〜
172 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 08:12:45 ] >>これで判れ Dは初心者向けじゃなくて今までの言語との比較が基本だから仕方ない気もしてたり
173 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 00:46:47 ] poseidonがなんか少し新しくなってる
174 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 01:35:34 ] >>171 ttp://rayerd.ddo.jp/pukiwiki/ingwiki/index.php?C%2FC%2B%2B%A4%CB%C8%E8%A4%EC%A4%BF%BF%CD%A4%CED%B8%C0%B8%EC#ba92f204 比較したいならこっちをどうぞ
175 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 01:38:46 ] [poseidon diff] www.dsource.org/projects/poseidon/wiki/WikiStart?action=diff&version=31 [descent diff] www.dsource.org/projects/descent/wiki/WikiStart?action=diff&version=65
176 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 04:51:01 ] >>149 ありがとうございました。 おかげさまで>106もどきができたのですが、 長いのでここに貼るのはどうかなという感じのものです。 codepadはたぶんコンパイラのバージョンの違いで通りませんでした。
177 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 20:37:53 ] dflのListViewってハンドル取れないようになってないかい?
178 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 09:39:00 ] ハンドルって何のこと
179 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 12:09:55 ] キャンドル♪ハンドル♪ペダルにサドルに自♪転♪車♪漕いどる♪
180 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 17:44:31 ] Windows的にいえば、Windowハンドルじゃないかい? しかし、懐かしいもんひっぱってきたねぇ。>>自転車 意味的にはハンドルはどっちも同じだったと思うけど。
181 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 18:50:38 ] デバイスコンテキストハンドル
182 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 19:10:34 ] 久しぶりにdflのサイト覗いてみたけど、3月中旬にD2対応してたんだね。 そろそろD2に移行しようかな ttp://wiki.dprogramming.com/Dfl/Snapshots
183 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 21:04:49 ] >>182 あれ?どうやったらD2で使えるんですか?
184 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 21:26:32 ] ttp://wiki.dprogramming.com/Dfl/D2-0 まだ対応してないとも書いてるけど
185 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 22:01:43 ] うちの環境がおかしいだけでできるみたいです
186 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 22:32:15 ] インストールして普通に動いたよ@v2.013 >>184 スナップショットのほうで対応してるってことかと。
187 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 23:09:11 ] なんでpathが通ってないのにdfl.exeは c:\d2\dmd\bin\dmd.exeじゃなくて c:\d\dmd\bin\dmd.exeの方を使おうとしてくれるのだろうか orz c:\d を c:\_d に改名したら普通に動くのに・・・ どこかに設定が残っているのでしょう?
188 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 23:15:56 ] 多分わかった 両方のバージョンを入れていて競合する人はdfl.exeを使う前に dfl -i を実行してやればいいみたいだ
189 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 00:29:43 ] >>179 会いに来て荒♪井♪注♪
190 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 07:28:43 ] DFLでつかえるコントロール一覧のスクリーンショットってなかったっけ
191 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 16:24:34 ] ttp://www.dprogramming.com/dflscreenshots.php
192 名前:デフォルトの名無しさん [2008/05/09(金) 22:01:09 ] dmd1.029 class Test { int[string] x; void a(Test* t){assert("hello" in t.x);} Test* b(){return &this;} } void main() { Test t = new Test(); t.x["hello"]=1; t.a(t.b); // Error: Access Violation } ナゼ?
193 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 00:48:28 ] Test#b はローカル変数のアドレスを返してるようなもんだと思うんだけど
194 名前:192 [2008/05/10(土) 01:38:42 ] >>193 確かにTest#bを Test* b() { static Test c; c = this; return &c; } にすると解決 ただ、なんとなくいまいち泣希ガス 意図としては関数bには&tを返してほしいんだが、そういうのはワガママ?
195 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 01:49:12 ] そんなの無理だろ。 オブジェクトを値渡ししてるのに
196 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 01:54:47 ] もともと参照だしそれって意味あるの?
197 名前:192 [2008/05/10(土) 02:18:39 ] ああ、そういえばそうか。 根本的なことわすれてるなおれ。 別方法で打開しました。おさわがせ。
198 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 02:55:09 ] class Test { int[string] x; void a(Test t){assert("hello" in t.x);} Test b(){return this;} } void main() { Test t = new Test(); t.x["hello"]=1; t.a(t.b); } これじゃ駄目だったの?
199 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 03:51:49 ] C++使ってたから俺も混乱した
200 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:35:18 ] Dも、C#みたいに型省略宣言入れてくれよ。
201 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:36:25 ] autoで我慢しなせぇ。
202 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:11:02 ] >>200 どんなの?
203 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:19:29 ] 匿名型のことかな
204 名前:202 mailto:sage [2008/05/10(土) 22:45:05 ] これか? void main(){ auto x = new class {int a; string b;}; x.a = 1; x.b = "hoge"; }
205 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:56:52 ] auto x = new class {int a; string b;}; auto y = new class {int a; string b;}; Dだとxとyが同じ型にならないのがだめだな。
206 名前:202 mailto:sage [2008/05/10(土) 22:59:05 ] まあそういう仕様だわなあ 同じ型がいい理由ってどんなんがあるの?
207 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:00:45 ] ん・・・あれ? 行頭のスペースが残ってる for(;;){ writefln(); }
208 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:05:14 ] >>206 配列に突っ込みたいときとか
209 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:31:08 ] てs
210 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 05:34:08 ] だろ?
211 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 08:00:40 ] うーんLINQみたいな応用があれば 匿名型は有意義なんだろうけど今のままならあんまりかなあ 匿名型のTupleを可変長テンプレートの引数に与えるとかで代用できないのか
212 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 11:00:31 ] >>191 ありがとう〜
213 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 08:33:31 ] 連想配列asにキーkeyのものがあるかどうかを調べて、 なければ作成する auto p= key in as; if( p is null ) { as[key]= A() p= key in as; } っていうのがめんどくさいので、過去スレ参考にして以下みたいなのを つくってみた template key_type(T) { static if(is(T A:U[A],U)) { alias A key_type;} } template return_type(T) { static if(is(T A:U[A],U)) { alias U return_type; } } return_type!(T)* has(T)( ref T as, key_type!(T) key) { auto p= key in as; if( p !is null ) return p; static if( is(return_type!(T):Object) ) { as[key]= new return_type!(T)(); } else { as[key]= return_type!(T)(); } return key in as; }
214 名前:213 mailto:sage [2008/05/12(月) 20:41:00 ] auto p= has( as, key) p.MEMBER= VALUE; って感じです。 こうやったほうがいいぜ、とかご意見ありましたらm(_ _)m
215 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:42:16 ] V* has(K, V)( ref V[k] as, K key) とかじゃあかんの。
216 名前:213 mailto:sage [2008/05/12(月) 23:46:32 ] がーーーーん