Ruby 初心者スレッド Part 40
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/12/11(土) 15:46:15★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
迷う点の少ない1.8.7に習熟→おもむろに1.9.2の変更点のみ重点学習、とすればスムーズに移行できるでしょう。
関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・エラーメッセージの共通そうな部分やエラーの出るモジュール名でググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0367デフォルトの名無しさん
2010/12/27(月) 22:45:560368デフォルトの名無しさん
2010/12/27(月) 22:51:36途中でgem名を変更されるよりはマシだ
ActiveSupportは物凄く古いgemライブラリで、
これができた頃はまだgemライブラリの命名規則(規則というか、傾向)すらなかったのだ
ActiveSupport式の命名法(AaaBbbCcc→aaabbbccc)は aaa_bbb_ccc 式の淘汰圧に負けたのよ
0369デフォルトの名無しさん
2010/12/28(火) 10:42:090370デフォルトの名無しさん
2010/12/28(火) 19:37:12def mes
puts "mes!"
end
end
と、自作ではなく既存のライブラリで定義されてるmesメソッドを
includeやextendで「オブジェクトを汚染する」ことなく一発で利用することはできますか?
M.mes みたいに使えるといいんですけど
事前に module M; module_function :mes; end するというのは今回不可です
0371デフォルトの名無しさん
2010/12/28(火) 19:43:59Ruby1.8.6とかでどうすればいいのかは知らんw
0372デフォルトの名無しさん
2010/12/29(水) 01:00:39extconf.rbのオプションに--prefixを取らせたいのですが、どうやったら出来るでしょうか?
0373デフォルトの名無しさん
2010/12/29(水) 01:51:52デザインパターンのどれかをつかう。
0374デフォルトの名無しさん
2010/12/29(水) 06:18:06モジュールに定義されたメソッドを呼べないのはRubyの制限だ
0375デフォルトの名無しさん
2010/12/29(水) 06:41:140376デフォルトの名無しさん
2010/12/29(水) 08:00:120377デフォルトの名無しさん
2010/12/29(水) 08:39:45現在インストールされているRubyの環境を使う、
拡張ライブラリ生成用autoconfという感じではないだろうか。
インストールされているRubyとは異なる場所に拡張ライブラリ
を入れたいということ?
0378デフォルトの名無しさん
2010/12/29(水) 12:49:16では事前が駄目なら事後で
module M
def mes
puts "mes!"
end
end
module M; module_function :mes; end
M.mes
もしくは、
module N; extend M; module_function :mes; end
N.mes
0379デフォルトの名無しさん
2010/12/29(水) 12:49:570380デフォルトの名無しさん
2010/12/29(水) 13:27:45なかなか辛い制限だが、ありえないことでもない
一応>>371みたいなミニなオブジェクト作らざるを得ないというのが回答になるのかね
o = Object.new; o.extend(M); o.mes
汎用にはこうか
mes は __send__ とかでは呼べないんだな
0381デフォルトの名無しさん
2010/12/29(水) 18:38:14b = {bc => 15, bt => 20, bh => 1}
c = {cc => 13, cm => 304, ca12}
d = [a, b, c]
こういう風に配列に入ってるハッシュの中身をソートしながらaから順番に出力したいのですが、どうしたらいいでしょうか?
解答お願いします。
0382デフォルトの名無しさん
2010/12/29(水) 18:53:41というか例が無茶苦茶すぎ
0383デフォルトの名無しさん
2010/12/29(水) 18:55:40d.inject(&:merge).sort
出力は好きなように。
0384デフォルトの名無しさん
2010/12/29(水) 18:56:18ハッシュのvalueをソートして、keyとvalueを出力したいです
0385デフォルトの名無しさん
2010/12/29(水) 18:57:30ソート基準が不明なのはよろしくないな。
0386デフォルトの名無しさん
2010/12/29(水) 18:58:57昇順降順のどっちかわからんが必要ならreverseせい。
0387デフォルトの名無しさん
2010/12/29(水) 19:12:050388デフォルトの名無しさん
2010/12/29(水) 19:15:48ゴルファー御用達
他人に見せる説明や公開するコードでこれを使う人間は周りから避けやすくなるので便利
0389デフォルトの名無しさん
2010/12/29(水) 19:19:17irb > h1.sort_by{|pair| pair.last}
[["ac", 10], ["aa", 12], ["ab", 15]]
irb > h1.sort_by{|pair| pair.last}.each{|k,v| puts "#{k} => #{v}"}
ac => 10
aa => 12
ab => 15
irb>
0390デフォルトの名無しさん
2010/12/29(水) 19:20:19ありがとうございます
0391デフォルトの名無しさん
2010/12/29(水) 19:39:44ググってもHash#mergeしか見つからなかったorz
0392デフォルトの名無しさん
2010/12/29(水) 20:24:40つ Symbol#to_proc
知らないとググりにくいよねこれ。
0393デフォルトの名無しさん
2010/12/29(水) 21:41:38イディオム化して覚えているせいで、>>383にいたる経緯パッと説明できないんだが誰か頼む
こういうようなことを初心者向けに
Enumerable#inject の詳細と結合法則 - 今日調べたことまとめ
http://d.hatena.ne.jp/tks_period/20081207/p1
ruby-1.8.7-p302 > d.inject{|result, item| result.merge(item)}
↓
ruby-1.8.7-p302 > d.inject{|result, item| result.send(:merge, item)}
↓
(特にこの間)
↓
ruby-1.8.7-p302 > d.inject(&:merge.to_proc)
↓
ruby-1.8.7-p302 > d.inject(&:merge)
0394デフォルトの名無しさん
2010/12/29(水) 21:47:32あーそうかブロックか。
助かりました。
0395デフォルトの名無しさん
2010/12/29(水) 21:49:33Symbol#to_procでググって見つけたこれとかですかね?
ttp://d.hatena.ne.jp/keyesberry/20080917/p1
0396デフォルトの名無しさん
2010/12/29(水) 22:17:40そのページ自体はいいんだが、
> そうか暗黙の型変換だよ
> &を前置したからRubyは
> それが手続きオブジェクトであると期待したんだ
> でもその期待に反して&を伴っていたのはシンボルだったので
> そのオブジェクトに手続きオブジェクトへの変換を要求
> つまりto_procメソッドを自動で送信したんだ
ここが>>393の
> (特にこの間)
にあたるのだろうが説明出来ていない気がするw
0397デフォルトの名無しさん
2010/12/30(木) 10:12:49Proc.new { |obj, *args| obj.send(self, *args) }
end
0398デフォルトの名無しさん
2010/12/30(木) 10:15:121.9で直ったから別にいらないな>to_proc
0399デフォルトの名無しさん
2010/12/30(木) 13:15:52引数のように受け取った受け取り側のメソッドが
その受け取ったメソッド自身で、受け取ったブロックを実行する命令のことか。
0400デフォルトの名無しさん
2010/12/30(木) 13:35:020401デフォルトの名無しさん
2010/12/30(木) 15:59:10るびまんのリファレンスのSymbol#to_proc 読んでもわからんから、それ書いておいて欲しす
http://rurema.clear-code.com/1.8.7/method/Symbol/i/to_proc.html
http://rurema.clear-code.com/1.9.2/method/Symbol/i/to_proc.html
実装そのまま書くのアレなら、こんな感じに動作しますというような擬似コードでいいから
それとto_procの説明なのにto_procがないしこれも書くかリンク貼っといておいて欲しい
841 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/30(木) 11:18:18
リファレンス嫁
http://www.ruby-lang.org/ja/man/html/_A5E1A5BDA5C3A5C9B8C6A4D3BDD0A4B7.html
> ruby 1.7 feature: version 1.7 では、to_proc メソッドを持つオブジェクトならば、`&' 修飾した引数として渡すことができます
> (デフォルトで Proc、Method オブジェクトは共に to_proc メソッドを持ちます)。to_proc はメソッド呼び出し時に実行され、
> Proc オブジェクトを返すことが期待されます。
scrAPIって1.9に対応してる?
0402デフォルトの名無しさん
2010/12/30(木) 16:00:24るびまんのリファンレンスってなんだw
0403デフォルトの名無しさん
2010/12/30(木) 17:25:290404デフォルトの名無しさん
2010/12/30(木) 20:43:04WindowsとLinuxってデフォルトの文字コードが違いますよね…?
そいで、ソースコードはUTF-8で書いて、OSを調べてkconvで適切な文字コードに変換して出力しないといけないんですけど、
putsのたびに文字コードを変換するの面倒ですよね?
そいで、String#to_sをオーバーライドして文字コード変換するようにしたらいっかなー?なんて思ったんですけど、
なんかほかにいいやり方ありますか?
0405デフォルトの名無しさん
2010/12/30(木) 20:59:290406デフォルトの名無しさん
2010/12/30(木) 21:50:46まず開発者に要望を出す
・ruby cygwinでLANG=ja_JP.UTF-8してUTF-8で使う
・出力、入力でCodePageに合わせて文字コードを変換
https://github.com/jugyo/termtter/blob/master/lib/termtter/system_extensions/windows.rb
この例ではprintとputsを置換してる
0407デフォルトの名無しさん
2010/12/30(木) 23:56:170408デフォルトの名無しさん
2010/12/31(金) 00:01:54どう混同しているの?
0409デフォルトの名無しさん
2010/12/31(金) 03:01:15継承させたい場合はクラス変数、
継承させたくない場合はクラスインスタンス変数
程度の認識で良いのかな?
あとはクラス変数はトップレベルのスコープから影響受けるとか。
他には何か違いがあるのでしょうか?
0410デフォルトの名無しさん
2010/12/31(金) 03:05:51誰かが自分のタイ焼きのアンコを食べたら、なぜかおまいのタイ焼きのアンコもなくなってもいいならクラス変数を使えばいい。
0411409
2010/12/31(金) 03:20:02他の言語(Javaとか)ではそれが通常の動作だと思います。
クラスインスタンス変数の場合、
同じクラスの異なるオブジェクトで共有することすら出来ないので
使い道があるのかさえ分かりません。
Javaでいうクラス変数の役割を期待する場合は、クセがあってもクラス変数を使わざるを得ないと思うのです。
私の頭が固いだけなのでしょうか。
0412デフォルトの名無しさん
2010/12/31(金) 03:24:080413409
2010/12/31(金) 03:43:28>同じクラスの異なるオブジェクトで共有することすら出来ないので
これは、インスタンスメソッドの中からクラスメソッドを呼べば、一応共有出来ますね。
class A
@a = 1
def self.read
@a
end
def read
self.class.read
end
end
a = new.A
a.read
でもこんなのは美しくないと思います。
class B
@@b
def read
@@b
end
end
b = B.new
b.read
やはりこちらが自然だと思います。
0414デフォルトの名無しさん
2010/12/31(金) 06:19:360415デフォルトの名無しさん
2010/12/31(金) 07:46:52>>410
0416デフォルトの名無しさん
2010/12/31(金) 08:04:49悪いけど、何を言いたいのかよく分かりません。
Javaが得意だというなら、やりたい事をJavaのコードで書いてみて。
0417デフォルトの名無しさん
2010/12/31(金) 08:48:34実は昔のBasicとかCOBOLあたりの経験があるんじゃないだろうか
Javaというキーワードが出てはいるが、
オブジェクト指向という言葉からはかなり遠いコードを書いているように思う
0418デフォルトの名無しさん
2010/12/31(金) 10:16:53実際そうじゃん^^
0419デフォルトの名無しさん
2010/12/31(金) 10:19:05まず「1つのクラスからはいくつもオブジェクトを生成できる」ということは解る?
組み込みのクラスで言えば、数値クラスとか文字列クラスとか、作れるオブジェクトが1つじゃ絶対困るよね。
そして、1つのクラス(仮にMyClassとしよう)から生成したオブジェクトがa,b,cと3つあるとする。
その際、a,b,cの間で異なる値を持つのがインスタンス変数。
逆に、クラス自体に値を持たせたい、同じクラスから生成したオブジェクト同士で共有させたい
という時に使うのがクラス変数。
たぶんこの使い分け自体はJavaでも同じだと思うから
使い慣れてるJavaで、もう一度OOPを勉強し直すと良いよ。
0420デフォルトの名無しさん
2010/12/31(金) 10:25:220421デフォルトの名無しさん
2010/12/31(金) 10:59:58馬鹿確定
0422デフォルトの名無しさん
2010/12/31(金) 11:03:23インスタンス変数とクラス変数の違いを答えるのか
0423デフォルトの名無しさん
2010/12/31(金) 11:38:22>>411と>>413は言いたいことが分からない
>>411と>>419はクラスインスタンス変数を理解していないか存在自体知らないみたいなので虫でおk
0424デフォルトの名無しさん
2010/12/31(金) 11:40:01>>409の認識は正しい
>>411と>>413は言いたいことが分からない
>>410と>>419はクラスインスタンス変数を理解していないか存在自体知らないみたいなので虫でおk
0425デフォルトの名無しさん
2010/12/31(金) 11:48:21すまん、本気で読み間違えたwww
0426デフォルトの名無しさん
2010/12/31(金) 14:30:37>>413の言うことは結構最もなことで、他言語の実装を理解してる人が初めて見れば相当キモイ。
変数宣言の要らない(できない)Rubyではクラス変数を実装するのが難しいからクラスインスタンス変数で誤魔化すしかない。
クラスも所詮ただのオブジェクトなので、クラスインスタンス変数を持った所で他のオブジェクトに影響を与えることは無い。
同じクラスオブジェクトに対するアクセサを各インスタンスが持っているだけ。
なので>>413に対する回答としては、
クラスインスタンス変数は確かに誤魔化しの機能だが、Rubyではそれしか方法が無いので仕方ない。
0427デフォルトの名無しさん
2010/12/31(金) 18:21:44以下の実行結果に問題を感じないのか?
class Animal
attr_accessor :species
@@count_of_species = 0
def self.count_of_species
@@count_of_species
end
def initialize(species)
@@count_of_species += 1
@species = species
end
end
class Dog < Animal
end
class Cat < Animal
end
dog = Dog.new('shibainu')
cat = Cat.new('mikeneko')
puts Animal.count_of_species
puts Dog.count_of_species
puts Cat.count_of_species
0428デフォルトの名無しさん
2010/12/31(金) 18:56:211.9で直ったぞそれ
0429デフォルトの名無しさん
2010/12/31(金) 19:19:53検討中なんじゃなくて?おれの環境は1.9.2p0だよ
0430デフォルトの名無しさん
2010/12/31(金) 23:45:35該当コミットくれ
0431デフォルトの名無しさん
2010/12/31(金) 23:58:54それは助かるわ。1.9に移行する利用がまたひとつ増えた
コマンドプロンプトで 1.9.2-p0 mingw32
irb -U起動後、日本語含むファイル名があるディレクトリで
puts Dir["*"]で文字化けする
あれ?何が悪い?
0432デフォルトの名無しさん
2011/01/01(土) 03:02:520433sage
2011/01/01(土) 03:46:43だめだった・・・
# -*- encoding: utf-8 -*-
puts "尾骶骨"
ruby 1.9.2p136 (2010-12-25) [i386-mingw32]
win32_utf-8_failed.rb:2:in `write': U+9AB6 from UTF-8 to Windows-31J (Encoding::
UndefinedConversionError)
from win32_utf-8_failed.rb:2:in `puts'
from win32_utf-8_failed.rb:2:in `puts'
from win32_utf-8_failed.rb:2:in `<main>'
0434デフォルトの名無しさん
2011/01/01(土) 21:54:32when n < 0
when n < 10
when n < 50
when n < 100
else
end
というようなことをやりたいときにもっといい書き方がありそうな気がするんだけどまったくたどり着けない
誰か知らない?
0435デフォルトの名無しさん
2011/01/01(土) 22:08:59lesser_than = lambda {|a| lambda {|b| b < a } }
{ 'Taro' => 90, 'Jiro' => 50, 'Saburo' => 30 }.each do |name, score|
rank =
case score
when lesser_than[40]; "D"
when lesser_than[60]; "C"
when lesser_than[80]; "B"
else "A"
end
puts "%s:%d:%s" % [ name, score, rank ]
end
Taro:90:A
Jiro:50:C
Saburo:30:D
なんていう方法があるけど…いいと言えるかどうかは迷うところ。
0436デフォルトの名無しさん
2011/01/01(土) 22:29:01Procを使うのは思いつかなかった
caseに式がついてるほうが好みだからこれはありがたい
0437デフォルトの名無しさん
2011/01/01(土) 23:27:250438デフォルトの名無しさん
2011/01/02(日) 00:31:250439デフォルトの名無しさん
2011/01/02(日) 00:54:03/ , 、ヽ
({{ o⌒o}})
彡<_●_>ミ
/ ヽ
|| ||
U U
ノ| /ヽ|
(_ノU U
0440デフォルトの名無しさん
2011/01/02(日) 01:26:180441デフォルトの名無しさん
2011/01/02(日) 07:40:520442デフォルトの名無しさん
2011/01/02(日) 10:05:15irb は -U オプションで default_external まで UTF-8 になるせいかな。
-Ecp932:utf-8 とかならいけるかも。
0443デフォルトの名無しさん
2011/01/02(日) 13:32:030444デフォルトの名無しさん
2011/01/02(日) 13:37:38趣味でRubyを使ってる人や、仕事で自分のツールとしてRubyを使っている人はログを検索するだけで十分だと思う。
0445デフォルトの名無しさん
2011/01/02(日) 18:42:150446デフォルトの名無しさん
2011/01/02(日) 20:00:420447デフォルトの名無しさん
2011/01/03(月) 00:23:251. インスタンスメソッド定義内に書かれた @foo はインスタンス変数
2. インスタンスメソッド定義外のクラス定義内に書かれた @foo はクラスインスタンス変数
3. クラス定義内に書かれた @@foo という表記は常にクラス変数
別の言い方をすると
A. def f ... end 内では self はクラスKのインスタンス
B. class K ... end 内では self はクラスK(ClassクラスのインスタンスK)
C. def self.f ... end 内では self はクラスK(これはBに吸収すべきか)
で常に @foo は self のインスタンス変数で @@foo は self のクラス変数
というかんじの理解でよいの?
それから 1.9 からクラス変数は継承しないという仕様になったそうですが、そうなると
クラスインスタンス変数しか存在しなくなった(従来のサブクラスに継承されるクラス変数
はサポートされない)、ということ?
0448デフォルトの名無しさん
2011/01/03(月) 04:09:14>クラスインスタンス変数の場合、
>同じクラスの異なるオブジェクトで共有することすら出来ないので
>使い道があるのかさえ分かりません。
>
そうかなあ。
・子クラスでも共有したい場合はクラス変数を使う
・子クラスとは共有したくない場合はクラスインスタンス変数を使う
でいいじゃん。
class Model
def self.table_name; @table_name; end
end
class Person < Model
@table_name = 'people' # 親クラスのデータは 'people'
end
class Student < Person
@table_name = 'students' # 子クラスのデータは 'students'
end
p Student.table_name #=> "students"
もしクラスインスタンス変数ではなくクラス変数を使ったら、PersonとStudentが同じテーブル名になってしまう。
0449デフォルトの名無しさん
2011/01/03(月) 07:31:07クラス変数もクラスインスタンス変数も断じて使わん!
0450デフォルトの名無しさん
2011/01/03(月) 08:40:030451デフォルトの名無しさん
2011/01/03(月) 09:38:26ライブラリを使えればいいのか、
外部プログラムとして実行できればいいのか。
0452デフォルトの名無しさん
2011/01/03(月) 13:07:08attr_accessor :uses_proxy
# (ry
end
BBSReader.new.tap{|bbs| bbs.uses_proxy = true; p bbs.uses_proxy }
# boolな値の属性の名前を付けるときのruby風プラクティスを教えてください
# こういうときはどう名前つけるものなのでしょうか
#
# bbs.uses_proxy = trueだと、(proxyを使うという意図の)bbs.use_proxyと混同しないのか?とか
#
# boolを返すときはbbs.uses_proxy?のだとわかりやすいですが、
# attr_accessor, mattr_accessorのようなものを使う場合そこまでやってくれとはいえ
# uses_proxy?にaliasするのもなんだかな、と思っています
0453デフォルトの名無しさん
2011/01/03(月) 13:09:270454デフォルトの名無しさん
2011/01/03(月) 16:27:55BBSReader.new.tap{|bbs| bbs.use_proxy = true; p bbs.use_proxy }
rails的
BBSReader.new(:use_proxy => true).tap{|bbs| p bbs.use_proxy }
0455デフォルトの名無しさん
2011/01/03(月) 17:03:32># boolを返すときはbbs.uses_proxy?のだとわかりやすいですが、
># attr_accessor, mattr_accessorのようなものを使う場合そこまでやってくれとはいえ
># uses_proxy?にaliasするのもなんだかな、と思っています
def use_proxy?
@use_proxy
end
でattrいらない。
0456デフォルトの名無しさん
2011/01/03(月) 17:13:30「クラス変数は使用禁止」
だぞ。
理由は簡単で、クラス変数を利用しなければ不可能であるような実装はあり得ないからだ。
0457デフォルトの名無しさん
2011/01/03(月) 17:21:52じゃぁクラスも使用禁止だぞ。理由は簡単で(ry
0458デフォルトの名無しさん
2011/01/03(月) 17:24:290459デフォルトの名無しさん
2011/01/03(月) 17:25:340460デフォルトの名無しさん
2011/01/03(月) 17:26:27各所に余計な手間をばら撒いてまでクラス変数を禁止するメリットはないよね
0461デフォルトの名無しさん
2011/01/03(月) 17:27:34初心者だから言ってみるんだけどさ、
スコープ共有としても、
触らなければ関係ないんじゃ?
0462デフォルトの名無しさん
2011/01/03(月) 17:42:140463デフォルトの名無しさん
2011/01/03(月) 18:09:17継承はされるがスコープは共有しない。
しかしRubyでは
@継承してスコープまで共有する
A継承すらしない
のどちらかの方法でしか実装できない。
っていう認識で合ってるのかな?
このジレンマの末、1.8では@を取り、1.9ではAを取る選択をしたということ?
なぜか1.9でも継承されてるみたいだけど。
0464デフォルトの名無しさん
2011/01/03(月) 23:51:10ありがとう
uses_proxyじゃなくてuse_proxyですか
Rails…w
>>455
setterというかattr_writerなしな前提でしょうか?
Rubyでboolだと
class BBSReader
def use_proxy=(value)
@use_proxy = value
end
def use_proxy?
@use_proxy
end
# (ry
end
とするのかなと思ってまして、attr_accessorなどを使って楽すると
class BBSReader
attr_accessor :use_proxy
alias :use_proxy? :use_proxy
# (ry
end
とするものかなと >>452でいいたくて
0465455
2011/01/04(火) 00:34:03ごめん。
実は俺自身も初心者に産毛が生えた程度だからあまり偉そうに言えなかったりする。
でもRubyらしくってことならやっぱりboolはクエスチョンマークの付いたメソッドで得るものだと思う。
んで、セッタのメソッドを作るんじゃなくて、
def use_proxy
@use_proxy = true
end
def unuse_proxy
@use_proxy = false
end
みたいにする。
変数とメソッドの名前を今までの話を引き継いだものにしたから、このままじゃちょっと違和感あるけど。
attr_は極力使わないほうがいいはず。
0466デフォルトの名無しさん
2011/01/04(火) 08:57:38■ このスレッドは過去ログ倉庫に格納されています