1 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:54:12 ] "The duct tape of the Internet" こと、Perlについての質問箱です。 "There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。 CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。 (WEBプログラミング板 pc8.2ch.net/php/ ) CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。 このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。 スレ違いの質問にはスルーか、速やかな誘導をお願いします。 www.perl.org/get.html ● 2006/12/21現在の最新版: 5.8.8 ● 2006/12/21現在の開発版: 5.9.3 前スレ Perlについての質問箱 29箱目 pc11.2ch.net/test/read.cgi/tech/1166708139/ リンク集は>>2-3 過去スレは>>4
491 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 14:20:02 ] cpanなしでHTML::Entitiesをインストールする方法を教えていただけませんか。 「Perl "HTML::Entities" インストール」でぐぐってもヒットせず困ってます。
492 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 14:58:35 ] >>491 OSは?
493 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 15:06:48 ] ActivePerl(Win)だと初めから入ってるし、Unix系で「CPANなしで」ってのも ピンと来ないし何だろう。「レン鯖で使いたい」なのかな。
494 名前:491 mailto:sage [2007/05/10(木) 15:50:52 ] >>492 Linuxです。Perl5.8。 >>493 その通り、海外のレンタルサーバーです。 ただ今はロ−カルのMacでやってるんで、CPANにトライしてみたんですが、最初にいろいろ英語できいてきて、適当に答えてたら設定がおかしくなったのか、 cpan install HTML::Entities がfetchできないとかでインストールできませんでした。 CPANむずい・・・
495 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 16:01:10 ] >>494 要するに、ロ−カルのMacにインストールできずに > CPANむずい・・・ と言ってるわけだ。 こんなこと言っている人がCPANなしでレンタルサーバにインストール しようってわけね。考えるだけ時間の無駄というものでしょう。
496 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 16:04:37 ] >>491 READMEに書いてあるじゃん
497 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 16:18:17 ] HTML-Parser-*.tar.gz ひろってきて展開して perl Makefile.PL && make && make install だけどcpanの英語がわからんとか言ってるレベルじゃもっと無理じゃね?
498 名前:491 mailto:sage [2007/05/10(木) 18:34:51 ] >>497 HTML::EntitiesはHTML::Parserの一部ということでしょうか。 試しにHTML::Parserをインストールしてみると・・・たしかにHTML::Entitiesも印ストールされました。 貴重なヒントをありがとうございました。 #こんな情報どこにあるんですか。www.xav.com/perl/site/lib/HTML/Entities.html とか見ても書いてないし。 ちなみにHTML::ParserはMacPortsをつかって sudo port install p5-html-parser でいけました。CPANは難しくて分からなかった人でもMacPortsなら楽勝!MacPorts万歳!
499 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 18:37:45 ] そ、それはよかった
500 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 19:02:37 ] >>498 search.cpan.org/dist/HTML-Parser/lib/HTML/Entities.pm
501 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 19:08:36 ] >>498 search.cpan.org/ をブックマークしておくといいね。
502 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 19:08:43 ] >>498 cpanモジュールなんだからcpanで調べろよ。 search.cpan.orgでHTML::Entitiesをサーチすれば一番上に出てくる ttp://search.cpan.org/~gaas/HTML-Parser-3.56/lib/HTML/Entities.pm を見れば一発でわかるだろ。
503 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 22:17:13 ] Tkを使用して、GUIアプリを作成しています。 大きく二つのフレームから構成しています。 1.左フレーム 2.右フレーム この二つのフレームにそれぞれScrollbarを設けたいのですが、 Frameウィジェットには何故か-yscrollbarオプション等が無く Scrollbarウィジェットを動作させることができません。 Scrolledで強引に取り付けると、レイアウトがおかしくなります。 どうおかしくなるかというと、 1.Frame内部のウィジェットの配置が決まらない (HTMLでいう、alignやvalignが効かない) 2.そもそも、実行時にワーニングのような表示が出る(実行はできる) 1.に関しては、スクロールバーを外せば正常に(期待通りに)配置されます。 Tkを使用される方は、こういうフレーム分けしたレイアウトで、 かつ各フレームにスクロールバーを表示させたい場合、どのような ウィジェットの使い方をされるのか、教えていただけないでしょうか。
504 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 22:51:49 ] Paneというものを見つけました。 Tk::Pane provides a scrollable frame widget. Once created it can be treated as a frame, except it is scrollable. 自己解決です。 スレ汚し申し訳ありません。
505 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 23:08:52 ] Tkのことは分からんけど、そういうときはコンテナにしたフレームの中に それぞれウィジェットを作って、その中で更にスクロールバーを設けるんでないかい
506 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 23:09:22 ] ずこー リロードしときゃよかった
507 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 02:34:36 ] ($1, $2, $3, $4 ...) に相当するような配列の表現はありますか?
508 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 02:56:54 ] もっと詳しく できるならやろうと思ってることも
509 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 03:40:44 ] ($name, $age, $sex) = ($1, $2, $3); みたいな部分を、 ($name, $age, $sex) = @foo; とかで済ませられないかと
510 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 05:02:32 ] これじゃ駄目? my $str = 'name=名前,age=年齢,sex=性別'; my ($name, $age, $sex) = $str =~ /name=(.*),age=(.*),sex=(.*)/; 正規表現がアホなのは見逃して。
511 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 08:22:51 ] おお パターンマッチってリストで評価するとそれが返ってくるんだ よくできてるなあ でも、 my ($name, $age, $sex) = $str =~ /name=(.*),age=(.*),sex=(.*)/ || next; という使い方はさすがに無理だった
512 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 09:18:49 ] >>511 ヒントは演算子の優先順位 (my ($name, $age, $sex) = $str =~ /name=(.*),age=(.*),sex=(.*)/) || next; または my ($name, $age, $sex) = $str =~ /name=(.*),age=(.*),sex=(.*)/ or next;
513 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 09:34:40 ] 括弧の方にします 普通にパターンマッチをスカラーで評価した時は、 マッチしたかどうかを返すのに対して、 パターンマッチのリストでの評価の代入の評価は、 リストの要素数だから、動作は同じでも意味は違いますよね
514 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 09:47:23 ] 从*・ 。.・)<SEXよりかはGENDERまたはGENの方がいいかなと思うの
515 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 11:34:00 ] ふつう、sex。
516 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 11:37:09 ] >>514 入会申込書とかの該当欄に「週2回」って書いたたちか?
517 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 11:54:30 ] なにそのゆとりんぐ回答
518 名前:Aransk [2007/05/11(金) 13:09:15 ] >509 何かこちらが勘違いしていたら、ゴメン。 でも、 my @foo=qw(joe 25 male); my ($name, $age, $sex) = @foo; print $name,"\n"; print $age,"\n"; print $sex,"\n"; って普通に出来るけど?
519 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 13:12:30 ] じゃなくて、マッチングの結果のリストの表現方法のことです
520 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 13:19:37 ] ここまで回答出て勘違いするってどういうことだよw
521 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 17:13:50 ] >>511 木の実の問題だが、next / last を絡めると途端に可読性が低くなる 気がする。next を絡める予定なら普通に next if $str !~ /name=(.*),age=(.*),sex=(.*)/ ; my ($name, $age, $sex) = ( $1, $2, $3 ); でいいじゃんと遅レス。
522 名前:デフォルトの名無しさん [2007/05/11(金) 17:41:10 ] 質問です。 Webで拾った以下の数値切り上げ関数を使用しています。 ---------------------------------------- $one = ceil(19.1); # $one = 20 sub ceil { my $var = shift; my $a = 0; $a = 1 if($var > 0 and $var != int($var)); return int($var + $a); } ---------------------------------------- しかし、このceil関数に、(4.4 * 6000)という数値(26400)を引数として計算すると、26401が帰ってきます。 perl -e 'print sprintf("%.50f", (4.4 * 6000));'; を実行すると、 26400.00000000000363797880709171295166015625000000000000 という結果が返ってきました。 これを回避して、期待したとおりの切り上げ結果を返すにはどうすればいいでしょうか?
523 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 17:54:28 ] なにを期待してるんだ? そのceil関数は整数じゃなければ1足すってだけだろ
524 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 17:56:06 ] >>522 丸め誤差でググっとけ。 perl -e 'print sprintf("%.50f", int((4.4 * 6000) * 1e6) / 1e6);'
525 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:02:20 ] 丸めには銀行方式が絡むか絡まないかがあるから気をつけろ 銀行の丸めは1桁が偶数のときに小数点以下があれば繰り上げだったっけ? 詳細忘れた
526 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:05:36 ] 銀行は四捨六入で0.5のときは一の位を見て切上げか切捨てを行う。 今回は全く関係ない。
527 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:27:48 ] まず「期待したとおりの切り上げ結果」ってのがわからんのだが。
528 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:34:21 ] >>522 > これを回避して、期待したとおりの切り上げ結果を返すにはどうすればいいでしょうか? そんなどこの馬の骨ともわからないサブルーチンを使わずに、CPANで Math-RoundとかMath-Round-Varとか拾ってきて見てみる。 実地の科学技術計算で使われている、充分な仕様のものがあるはず。
529 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 19:10:59 ] 付け焼刃的だが $a = 1 if($var > 0 and $var != int($var)); ここの後半の比較式を int($var) != int($var+0.9999・・・) にするとか
530 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:54:42 ] CPANに落ちてるのも作者が有名人なのを除くと どこの馬の骨かわからないきがしなくもない
531 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:10:46 ] >>530 有名な馬の骨もいるから気をつけな。
532 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:20:42 ] 麻雀の丸めは四捨六入
533 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:24:12 ] >>521 現状はまさにそんな感じなんだけど、 ($1, $2, $3) っていちいち書くのがなんか気持ち悪くて どうせ内部で持ってそうなデータなのに というのが質問の発端
534 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:25:39 ] そういえばINT関数って、負の数について、 数直線の右に丸めるか左に丸めるかが 言語によって違うよね
535 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:26:44 ] それで?
536 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 22:07:13 ] あるフォルダ内のファイル(個数や名前は分からない)を一つずつ読んでいくにはどうしたいいでしょうか?
537 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 22:10:48 ] ディレクトリを読んで、ファイル名を配列に入れて、 ループで回したら?
538 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 22:13:24 ] >>536 use File::Slurp; してread_dir
539 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 22:13:51 ] opendir して、リストに対して readdir するか、readdir を while の中でぶん回して下さい で、処理後は closedir で後始末を。 サブディレクトリも探したいなら再帰でググればヒントは見つかるかと思います
540 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 22:16:59 ] 実は glob で>>537 の1行めまで片づく要件なのかもしれない。
541 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 22:25:07 ] リストに入れないで済むならぶん回した方がいい
542 名前:536 mailto:sage [2007/05/11(金) 23:47:01 ] 皆さんありがとうございました。 readdirをwhileでぶん回す方法でやってみます
543 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 00:51:52 ] サブディレクトリまで検索するならFile::Findを使うのが簡単。 Unixのfindを使ったことがあるならfind2perlでPerlのコードを生成できるよ。 File::Find search.cpan.org/~nwclark/perl-5.8.8/lib/File/Find.pm
544 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 02:54:05 ] 深さのある配列を左から順番に呼んでフラットな配列を作りたいんですが、 よい方法ご存知の方いませんか @a = ([1,2,3], [4,5,6], [[7,8],[9,0]]); @b = flatten(@a); # 1,2,3,4,5,6,7,8,9,0
545 名前:デフォルトの名無しさん [2007/05/12(土) 02:58:46 ] nkfと似たような動作するプログラムってPerlについてなかったっけ?
546 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 03:16:52 ] >>544 sub flatten(@) { map { ref $_ eq "ARRAY" ? flatten(@$_) : $_ } @_ } こんなんどうよ。
547 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 03:25:10 ] 回答しようとして>>546 とほぼ同じ定義を書いていたが、 うごかなくて悩んでた。 eqじゃなくて==を使っていたぜorz
548 名前:544 mailto:sage [2007/05/12(土) 03:50:18 ] >>546-547 おお、ありがとうございます。 再帰を使うと意外とすっきり書けるもんですね。 頭が硬直化して思いつきませんでした。 ありがたく使わせていただきます。
549 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 04:16:20 ] ActivePerlの時は、File::Findは使わずに自前で書いた方がいいよ。 パスのダメ文字が不完全だから、想定外の動作をする。
550 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 04:17:18 ] ×パスのダメ文字が不完全だから ○パスのダメ文字への対応が不完全だから
551 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 02:20:04 ] 例えば「__LINE__ ってどういう意味だったかな?」とかと思ったとき それをperldocで調べようとすると、どういう風にコマンド叩けばいい? そういう調べものにはperldocは向かない?
552 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 03:04:18 ] podのディレクトリに移動してgrep
553 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 12:02:01 ] $perldoc perl して Reference Manualのカテゴリーからあたりを見つけられるぐらいには慣れておいても損はないかも
554 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 14:26:50 ] my $obj = new Foo::Bar::Baz($arg); というコードで、クラス名を動的に指定するにはどうしたらいいですか。 $klass = 'Foo::Bar::Baz'; my $obj = eval "new $klass(¥$arg)"; $@ and die($@); のようにevalを使うしかないのでしょうか。なんかもっとスマートな方法があるような気がします。
555 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:22:37 BE:264938764-PLT(13092)] newする時にevalしなくてもおk むしろパッケージが別ファイルならロード時にevalしる my $class = "Foo::Bar"; eval "require $class;" die $@ if $@; $class->new; イマドキはUNIVERSAL::requireなんでしょうけど
556 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:45:48 ] 普通に、こんなんでいいでしょ。 ---- package Foo::Bar::Baz; sub new{ bless [] } sub qux{ print "qux!!" } package main; eval{ my $klass = "Foo::Bar::Baz"; my $obj = new $klass; $obj->qux; };
557 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:49:53 ] eval EXPR はインジェクションの可能性があるからなるだけ使わんほうがよいね。
558 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 19:08:29 ] >>557 この一連のコードで具体的にどうやって?w
559 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 19:20:02 ] そりゃサンプルコードなんだから汚染された文字列が紛れ込む分けなかろう
560 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 19:59:57 ] やはり妄想で危険を煽っただけか。その妄想を極めればプールに入っただけで受精するとか言い出す外基地になれるよ。
561 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:49:22 ] もうゴールデンウィークはおわったよ?
562 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 06:21:05 ] 影さん「evalがあればどんなプログラムでも書けるぜ!」
563 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 13:44:05 ] 文字列eval使わなくてもいいところで使うのはあんまり美しくないと思うけどな。 >>555 のも eval { require $class }; のほうが綺麗だと俺は思う。
564 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:48:00 ] NET::POP3とMIME::Parserを使ってメールの送信元で振り分けて処理をするプログラムを 作りたいんだけど、headのfromってメルアドが入ってなかったりしてどこをみたらいいかわかりません。 送信元メルアドを参照するにはどこをみたらいいんでしょうか?
565 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:44:40 ] >>564 rfc2822を読め
566 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 00:07:34 ] >>563 それを実行したことある?
567 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 10:45:02 ] >>565 それじゃ何の答えにもなってないだろ馬鹿 >>564 ヘッダに送信元が正しく入っているかは保証されてないから入ってないときは取りようがないよ
568 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 11:15:16 ] >>565 これからは全ての質問に「仕様書読め」「解説書読め」で解決していくんですか?
569 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 11:26:10 ] Perlの質問じゃなくてメールの仕様に関する質問だからしゃあないのでは。 確かに不親切だけどね・・・
570 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 13:35:28 ] >>568 なぜそうしたいの?
571 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:19:50 ] 570は小学校の国語をやり直した方がいいと思うの
572 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:34:27 ] いま算数やってるの
573 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:38:52 ] >>565 にレスしてる奴って全部 >>564 の自演だろ。 メールの仕様に関してはスレ違い。
574 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:45:29 ] おお、帰ってきた。>>565 が黄泉の国から帰ってきた。
575 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 15:22:10 ] >>573 なんで>>564 に>>567 が自分で回答すんだよw まあみんなやさしめに行こうよ。
576 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 15:37:37 ] 英語こわいからヤダヤダ だからRFCなんか読むのもヤダヤダ
577 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 15:51:24 ] もしかして「RFC」という文字列が荒しを板中から集めてる?
578 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 15:55:46 ] 全然荒れてねえだろwww
579 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 16:17:56 ] >>565 は、RFCを読んだことがあるのを自慢したいだけ。
580 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 16:19:50 ] 自慢てwwwゆとり乙www
581 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 16:52:34 ] >>575 他人を装って自分を擁護するのって結構あるからな。 別に珍しくもないから、一応そう書いただけ。
582 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 17:18:06 ] 標準規格の類を挙げると必ず変な流れになるな。
583 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 17:28:10 ] めんどくせぇから書きたいように書けよ
584 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 21:53:54 ] 昼間子供が書き散らしたようだな
585 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 22:52:22 ] >>584 やっと起きたか、ひきこもり君
586 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 23:36:02 ] どこを読めばわかるよってのも教え方の一つだと思うんだ
587 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 00:07:36 ] >>579 RFCを読んだことが自慢になると思っている時点で(ry >>586 ざっとでも一通り目を通しておかないと他の部分の実装ですぐに詰まってまたスレ違いの質問してくるでしょ。 スタンドアローンアプリなら好きなように実装汁だけど そもそもネットワークアプリは相互に協調するものなんだから 「とりあえず動いている」「自分だけよければいい」という存在は迷惑だろ。
588 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 00:17:48 ] どうせただのメールフィルタなんだからどうだってかまわんだろう
589 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 05:26:48 ] まぁ、仕様書は基本としても、それを守ってない場合も多々あるわけでw
590 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 07:24:45 ] そうそう、RFC読まなくていい言い訳は 探せば結構見つかるよねw
591 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 10:32:13 ] でもまぁ読むのだるいじゃん。 遠回りすぎるし。 必要だとは思うが。