くだすれPerl(超初心者用)2
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/03/03(月) 05:07:32ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Perl使いが優しくコメントを返しますが、
お礼はPerlの布教と初心者の救済をお願いします。
0685nobodyさん
2008/10/03(金) 17:22:11ID:???random てのが何を示すか分らんが…。
! ( $b >= random(100) ) は確実に0、1しか返さんから変に思えるが、
まあ、アリではあるので。
ポイントは、
1. 条件式「!($b >= random(100)) 」を式としてではなく値として利用。
2. 三項演算子の二段がさね。
my $res = COND ? TRUE_EXPR_1
: ( COND ? TRUE_EXPR_2
: FALSE_EXPR_2 ) # FALSE_EXPR_1
;
my $flag
= ! $a # CONDITION
? !($b >= random(100)) # TRUE_EXPRESSION
: # FALSE_EXPRESSION ( だかその中にさらに三項演算子)
(
($c <= $a) # CONDITION
? random(3) # TRUE_EXPRESSION
: random(11) # FALSE_EXPRESSION
)
;
分けると
my $pre_flag = ($c <= $a) ? random(3) : random(11) ;
myy $flag = ! $a ? !($b >= random(100)) : $pre_flag ;
0686Perlについて教えてください。
2008/10/03(金) 18:04:37ID:PunwVHG2コードがISO、西ヨーロッパなどとなってしまうのです。
そこで、headerの部分にcharset=を含めようとしてるのですが、
何度やっても、500エラーになってしまいます。
sub header {
print "Content-type: text/html\n\n";
print "<!--//HEAD//-->\n";
print "<html><head>\n";
print "<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">\n"
print "<title>CGI Control Panel</title>\n";
print "<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">\n"
↑
を追加して日本語になるように、お願い致します。
0687nobodyさん
2008/10/03(金) 18:06:50ID:???あと、Content-type: text/html; charset=云々
というのもあるよ。
0689684
2008/10/04(土) 09:25:08ID:S1uyMhw/なるほど、わかりました。
すいません。randomはrandの間違いでした。
my $flag = (!$a) ? !($b >= rand(100)) : (($c <= $a) ? rand(3) : rand(11));
つまり↑と↓は同じという理解で良い訳ですね。
my $flag;
if (!$a) {
$flag = !($b >= rand(100));
} elsif ($c <= $a) {
$flag = $rand(3);
} else {
$flag = $rand(11);
}
ありがとうございました。
0690nobodyさん
2008/10/04(土) 10:53:07ID:uZuIKJns↑これおすすめ!
"register_globals = on"
を推奨していることについて気をつければ・・・ですが
0691nobodyさん
2008/10/04(土) 18:05:45ID:???0693nobodyさん
2008/10/04(土) 18:16:28ID:???0694nobodyさん
2008/10/04(土) 19:36:37ID:???2
3 aaa
4
5 ******
上のようなテキスト(数字は行番号)で、任意の文字列(aaa)にマッ
チしたら、囲まれた範囲(2行目〜4行目)を別ファイルにコピーする
コードはどう書けばいいでしょうか?
自分でも調べますが、perlは全く知らないので教えてくれる人がい
ると助かります。
0695nobodyさん
2008/10/04(土) 19:50:09ID:???2: ところでaaa
3: aaa
4: aaa
5: これだと
6: aaa
7: どこからどこまでaaaが
8: aaa
9: aaa囲まれた
10: 範囲なんだ
0696nobodyさん
2008/10/04(土) 20:01:11ID:???簡単なのは「******」から次の「******」までをバッファリングして、
バッファの中に「aaa」があったらファイル開いて書き込む、とかかね。
0698nobodyさん
2008/10/04(土) 21:35:30ID:???perl -0777ne 'print grep /^aaa$/m, /^\*{6}\n(.*?)(?=^\*{6}\n)/gms ' hoge.txt >fuga.txt
正規表現一回だと結構めんど
perl -0777ne 'print /^\*{6}\n((?:(?!^\*{6}\n).)*?^aaa\n(?:(?!^\*{6}\n).)*?)(?=^\*{6}\n)/gms ' hoge.txt >fuga.txt
0700694
2008/10/05(日) 14:05:30ID:???次は一歩すすんで、↓のようなテキストの場合、2-4行目と9-11行
目を別ファイルに保存したいのです。
1 *start*
2
3 aaa
4
5 *end*
6
7
8 *start*
9
10 aaa
11
12 *end*
ファイルをオープンしてwhile文で繰り返し処理をしたら行けるの
かな、と思ったのだけど、よく考えたらwhileは1行ずつしか読み
込まないからこの方法だと駄目なのですね。
分かる人がいたらお願いします。
0701nobodyさん
2008/10/05(日) 14:13:01ID:???>かな、と思ったのだけど、よく考えたらwhileは1行ずつしか読み
>込まないからこの方法だと駄目なのですね。
なにがダメなんだ?
0702nobodyさん
2008/10/05(日) 14:19:41ID:???自分で何処まで書けたのか提示しないのも良くない。
この質問に答えた後に、「では…の様にするのはどうしたら良いでしょう?」
って来るのが目に見えてて答える気にはならん罠。
0703nobodyさん
2008/10/05(日) 14:21:12ID:???0704nobodyさん
2008/10/05(日) 14:56:18ID:???クッキーを発行しているページへ下記の様にしましたけどエラーです
どなたか手直しお願いします
やりたいことは新しいクッキーを100個くらい集めたいです
use HTTP::Request;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => 'http://hoge.jp');
while(1){
my $response = $ua->request($request);
print $response->header('Set-Cookie'),"\n";
sleep 1;
0706nobodyさん
2008/10/05(日) 15:07:27ID:???実在してたのかorz
この前、実在のアドレスは2chで晒すなと指摘を受けたので
気をつけたのに
>>705さんは私と多分どこかで遭遇してるね
いつも応援ありがとう
よろしく^^
0707nobodyさん
2008/10/05(日) 15:09:29ID:???あなたには非が無い。
0709nobodyさん
2008/10/05(日) 16:08:06ID:???0710nobodyさん
2008/10/05(日) 16:51:17ID:???全角スペースが含まれていて、}が閉じてないとか?
エラー内容が伏せられてるから、あてずっぽうで。
URLはhttp://example.com辺りを使えば被らない事がrfc2606保障されてる。
0711700
2008/10/05(日) 17:06:32ID:???Cは知っているのでその知識で強引に実現した感じ。
=========
#!/usr/bin/perl
$i = 1;
open IN, "hoge.txt";
while (<IN>) {
if (/.*start.*/) {
$flag = on;
$string = "";
} elsif (/.*end.*/) {
open OUT, ">file$i";
print OUT $string;
$i += 1;
$flag = off;
close OUT;
} else {
if ($flag eq on) {
$string .= $_;
}
}
}
close IN;
=========
perlの人からは腐ったコードに見えると思うので改良点が有ったら
教えてください。Cの人から見ても腐ってる、というのはこの際勘
弁。
0712700
2008/10/05(日) 17:38:53ID:???========
#!/usr/bin/perl
$i = 1;
open IN, "hoge.txt";
while (<IN>) {
if (/.*start.*/) {
$flag = on;
$string = "";
} elsif (/.*end.*/) {
$_ = $string;
if (!/.*aaa.*/gms) {
next;
}
open OUT, ">file$i";
print OUT $string;
$i += 1;
$flag = off;
close OUT;
} else {
if ($flag eq on) {
$string .= $_;
}
}
}
close IN;
=======
0713nobodyさん
2008/10/05(日) 19:23:20ID:???正規表現の.*はいらない。gmsもいらない
あと、状態遷移のアルゴリズムはシグナル判定(start,end文の検出)を
状態判定(flagの検出)の内側に持ってきた方がよいと思われ。
0715700
2008/10/05(日) 21:09:06ID:???「こんなのperlを最大限に使えば半分以下のコードで済む」といっ
た間違いで無ければ、さしあたってはそれでいいです。とりあえず
動くものを書いて、根本的なロジックがおかしくなければ後は修正
するだけなので。
そういった間違いではないようなので、後はこれをブラッシュアッ
プしていきます。どうもありがとうございました。
0716nobodyさん
2008/10/05(日) 21:42:03ID:???「C脳の自分」(表現が悪くて申し訳ない。悪意はないです)が不安で訊いてしまうのかな?
ループ制御できてフラグ使えてパターンマッチ使えてるんだし
指摘されてる bare word とかそんなもんじゃないすか。
> 「こんなのperlを最大限に使えば半分以下のコードで済む」
'on' or 'off' のフラグ変数でなく範囲演算子 .. でフリップフロップ(>>46の使い方)させたら便利とか
フラグ変数使うにしても文字列比較より 1 か 0 のほうが楽とかコマゴマしたのはあるけど、
動きゃいいんです。
0717nobodyさん
2008/10/05(日) 22:01:19ID:???0718nobodyさん
2008/10/05(日) 22:11:49ID:???シェバン行とuse strict; use warnings で11行。
そんなもん追求するには10年早い。
0719nobodyさん
2008/10/05(日) 23:59:23ID:???>>704です
ご指摘ありがとうございました
お陰さまで動くようになりました^^;
空行の全角スペースを削除して
最後の行に}を付け足しただけで
エラー無くなりました
ありがとうございました^^
0720nobodyさん
2008/10/06(月) 01:08:02ID:???0722nobodyさん
2008/10/06(月) 03:55:49ID:???テキスト保存できるようになったのですが
ファイル名をTES-YYYYMMDDHHMMSS.txtにする方法わかりません
どなたか教えてください
お願いします
0723nobodyさん
2008/10/06(月) 04:31:33ID:???それともファイルのタイムスタンプをファイル名にするってこと?
0724nobodyさん
2008/10/06(月) 04:41:45ID:???レスありがとうございます
>>720です
ダウンロードが完了した時刻をファイル名にしたいと思います
tes-08-10-06-04-41-50.txt
上記のようなファイル名が目標です
お時間のあるときにでも教えて頂けたら幸いです
0725nobodyさん
2008/10/06(月) 05:06:00ID:???$filename = DateTime->now(time_zone => "+0900")->strftime("tes-%y-%m-%d-%H-%M-%S.txt");
0726nobodyさん
2008/10/06(月) 06:00:00ID:???>>720です
教えて頂いたコードでテストしてみたところ
Can't locate DateTime.pm in @INC (INC contains: C:/Perl/lib .) at tes.pl line 6.
BEGIN failed--compilation aborted at tes.pl line 6.
とエラーになります
当方の環境でしょうか?
WindowsXp ActivePerl-5.8.8.822です
今日はオヤスミしますので、また明日にでも調べてみます
お疲れのところ本当にありがとうございました
0727nobodyさん
2008/10/06(月) 06:41:21ID:???use File::Slurp;
my $text = read_file('hoge.txt');
my @part = ($text =~ m|^\*start\*$((?:(?!^\*start\*$).)*?aaa.*?)^\*end\*$|gms);
for (my $i = 0; $i < @part; $i++) {
write_file('file' . ($i + 1), $part[$i]);
}
0728nobodyさん
2008/10/06(月) 06:46:14ID:???0729nobodyさん
2008/10/06(月) 07:29:33ID:???先人の残してくれたものを参考にさせて頂き
なんとか目標のものができました
みなさん本当にありがとうございました^^
use HTTP::Request;
use LWP::UserAgent;
use File::Find;
use File::Basename;
my $ua = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => 'ttp://www.ググル.co.jp/');
$i = 1;
while($n < 3){
$n++;
my $response = $ua->request($request);
print $response->header('Set-Cookie'),"\n";
sleep 1;
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
@a = split($i);
$i = sprintf("TES-%s%04d年%02d月%02d日%02d時%02d分%02d秒%s", $a[0], $year+1900, $mon+1, $mday, $hour, $min, $sec, $a[1]);
open(DATAFILE, ">> $i.txt") or die("Error:$!");
print DATAFILE $response->header('Set-Cookie'),"\n";}
0730nobodyさん
2008/10/06(月) 07:58:00ID:???まあいいかw
0731nobodyさん
2008/10/06(月) 08:02:00ID:???use POSIX qw(strftime) ;
print strftime "%y年%m月%d日%H時%M分%S秒\n", localtime ;
0732nobodyさん
2008/10/06(月) 08:02:45ID:???0734nobodyさん
2008/10/07(火) 18:53:36ID:???use warnings;
use LWP::UserAgent;
use Time::Piece;
use IO::File;
my $fname = localtime->strftime("%Y年%m月%d日%H時%M分%S秒.txt");
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET=>'http://www.google.co.jp/');
my $res = $ua->request($req);
if ($res->is_success) {
my $io = IO::File->new("$fname", ">");
$io->print($res->content);
$io->close;
}
0735nobodyさん
2008/10/08(水) 23:43:58ID:???レス遅くなり申し訳ないです
サンプル作ってくれたんだ^^
ありがとう
環境の違いなのか4行目のuse Time::Piece;の部分がキャントロケートなんとかってエラーが出るんです
use Time::Piece;が当方のパソコンにインストールされていないってことなんでしょうか?
せっかく>>734さんが作ってくれたのに使えなくってすいません
ありがとうございました
0736nobodyさん
2008/10/09(木) 00:43:23ID:???0737nobodyさん
2008/10/12(日) 14:00:31ID:???配列の勉強中で下のようなのを書いたんですが、実行するとエラーになります。
どこが悪いのか分からないので教えていただけないでしょうか?
#!/user/bin/perl
$. = ",";
$\ = "\n";
@data = (3,6,7);
print @data;
%data[1] = 'six';
print @data;
%data[5] = 9;
print @data;
@data = (1,2);
print @data;
0738nobodyさん
2008/10/12(日) 14:09:49ID:???0739nobodyさん
2008/10/12(日) 14:35:35ID:???あ、基本的なところが;;
直して実行してみましたが、まだエラーになります(ノд`)
他に変なところは無いでしょうか?
0740nobodyさん
2008/10/12(日) 14:47:38ID:???%data[5] => $data[5]
0741nobodyさん
2008/10/12(日) 15:16:41ID:???0742nobodyさん
2008/10/12(日) 15:25:44ID:???ありがとうございます;;;
0743nobodyさん
2008/10/12(日) 21:56:41ID:???なんで配列の要素にアクセスするのに、
%じゃなくて$なんだよと。
0744nobodyさん
2008/10/12(日) 22:56:30ID:???0746nobodyさん
2008/10/14(火) 12:12:13ID:???0747nobodyさん
2008/10/14(火) 12:28:13ID:???0748nobodyさん
2008/10/14(火) 14:49:26ID:W0wcfnrq今HP乗せてるブロバイダでperl4が対応しなくなるので、ソーすを変更しろと
いう通知が来ました。無料公開のCGIを拾ってきて掲示板や質問を埋めて
もらってメールを受けるのを使った程度の記憶しかありませんw
4から5に変更するにはどうしたらいいのでしょうか?
0749nobodyさん
2008/10/14(火) 15:25:39ID:???0750nobodyさん
2008/10/14(火) 15:47:00ID:???0751nobodyさん
2008/10/14(火) 15:47:24ID:CJyY9JPp0752nobodyさん
2008/10/14(火) 18:34:16ID:???ssh起動してターミナルでGo。
0753nobodyさん
2008/10/14(火) 19:19:11ID:CJyY9JPpありがとう!
0754nobodyさん
2008/10/18(土) 08:37:31ID:TpRddp7o追加中に
Apache source not found, enter path name or q to quit
といわれてしまいます。
Apacheのソースコードなどが必要ということでしょうか?
Apacheのバージョンが2.2.6なのですが、ソースコードが見当たらないです。
すいませんがご存知の方教えてほしいです。
0756nobodyさん
2008/10/18(土) 11:46:59ID:TpRddp7oApache2.2.6から2.2.10にアップグレードする場合、
古いApacheを消さず、そのままアップグレードってできますか?
環境はwindowsXPです。
0757nobodyさん
2008/10/18(土) 11:48:06ID:TpRddp7o0758nobodyさん
2008/10/18(土) 18:51:00ID:???0759nobodyさん
2008/10/18(土) 21:19:53ID:???lwpでhttpsサイトのソースをgetで取ると一部が抜けてしまう
状態になったのですが、Crypt-SSLeayを削除したところ
問題なく取得できるようになりました。
最近のバージョンではCrypt-SSLeayは使わなくなったのでしょうか?
0760759
2008/10/18(土) 21:31:03ID:???あれこれやってるうちにp5-Net-SSLeayの方も入れてました。
これも消したところ接続不能に…
一方ずつ試してみたところ、Crypt-SSLeayの方では>>759の状態になるのですが
Crypt-SSLeayを削除してNet-SSLeayを入れたところ正常になりました。
LWPではCrypt-SSLeayの方を使ってたと思うんですが、Net-SSLeayに変わったのかな・・
BASIC認証もおかしくなったしportupgradeでまとめてあげたのが悪かったのか…(´・ω・`)
0761nobodyさん
2008/10/24(金) 04:49:19ID:kVbR7JUN0762nobodyさん
2008/10/24(金) 12:59:37ID:???ここに書くには面倒だな
0763nobodyさん
2008/10/24(金) 13:48:31ID:???あるPerlスクリプトでMIME::Toolsを利用しているのですが
MIME::Tools内でFile::Tempをインクルード?しようとしているときに
File::Temp Vresion 0.18 Required--This only Version 0.12と表示され
スクリプトが動作しません。
CPANではFile::TempのVer 0.12の配布は終わったらしくインストールできません。
そこでtar.gzを探してインストールしてみたのですがエラーは改善しません。
CPANでインストールしたものを-Dオプションで削除しても同様でした。
CPANでインストールしたものとtarボールからインストールしたモジュールは
同居できないのでしょうか?
もしそうだとするとこのエラーは解決しないのでしょうか。
動作OSはDebian Etchです。
0764nobodyさん
2008/10/24(金) 14:02:11ID:???> File::Temp Vresion 0.18 Required--This only Version 0.12
File::Temp Vresion 0.18 が必要--これはたったの Version 0.12
0765763
2008/10/24(金) 14:33:43ID:???レスありがとうございます。
英語を誤読していましたか。お恥ずかしいです。
で、CPANでFile::Tempと念のためMIME::Toolsを最新にしてみました。
File::TempはVre 0.20、MIME::Toolsは5.427に上がりました。
ですが元のParlスクリプトを実行すると
全く同じエラーが表示されます。
バージョン番号を誤認しているようなのですが
そもそもParlやCPANはどこでバージョンを管理しているのでしょうか。
0766nobodyさん
2008/10/24(金) 14:48:26ID:???0767nobodyさん
2008/10/24(金) 14:57:09ID:???コンソールから、
perl -MFile::Temp -e "pritn $File::Temp::VERSION" (Unix系ならシングルクオートで)
やってみ。
これで0.12が出たら、多分、システムにもともと入ってた0.12と新しく入れた0.18が共存してる。
OSとか分からんからはっきりとは言えないけど、そのシステムに合ったやり方で
モジュールのバージョンアップしないと(ActivePerlならppm、RHEL系Linuxならrpmなど)
違うファイルパスに二つのバージョンが入ってしまう、ってことも起こり得る。
0768763
2008/10/24(金) 15:22:04ID:???レスありがとうございます。
教えていただいたコマンドを実行してみましたが何も表示されませんでした。
念のためsudoにてroot権限でも実行してみましたが同じでした。
(ちなみ動作環境はDebian Etchです)
とりあえず共存の可能性があるとのことご指摘があったので
Perlのモジュールが格納されてそうなディレクトリを
調べてみたいと思います。
0769nobodyさん
2008/10/24(金) 16:55:38ID:???大変失礼した。>>767の"pritn"は"print"のtypoだ。pritnてなんだよ(w)
あと、OSちゃんと書いてたの見落としてた。ごめん。
で、なにも表示されないってことだけど、それはおかしいと思う。
(モジュールが入ってなければなんらかのエラーが出るはず。bashからなら囲いの""を’’にしてみて)
Deb系のことは詳しく知らないからあくまでも参考だけど、RHEL系の場合/usr/lib/perl5 以下に、
5.8.8とかsite_perl、vendor_perlみたいなディレクトリがいくつかあって、例えばrpmから入れたらvendorに入るけど、
tarから手動でmakeとかするとsite_perlに入ったりする。(モジュールによって違う)
0770763
2008/10/24(金) 20:41:34ID:???フォローありがとうございます。
SSHクライアントの表示がおかしかったようです。
実行結果をリダイレクトしてviで覗いたら
0.20と記録されていました。
で、途中報告です。
実は動かそうとしているスクリプトは
後出しで申し訳ないのですがほかのサーバで動作していた
Movable Type関係のスクリプトなのです。
で、Movable Type内にもPerlのライブラリがあるらしく
そちらとバッティングしている可能性が大きくなってきました。
今回Debianに移行評価テストをしているのですが
ディストリビュートのディレクトリ構成やパーミッションの違いが
影響しているのもあるようです。
引き続き調べてみて、報告したいと思います。
0771nobodyさん
2008/10/24(金) 20:50:49ID:???0772763
2008/10/24(金) 23:18:20ID:???途中経過に書いた通りなのですが
Movable Type 内にextlibというディレクトリがあり
その中にFile::Tempの0.12がインストールされていました。
動作させようとしていたスクリプトが
Movable Typeで提供しているライブラリを優先させて
インクルードさせていたために
CPANでインストールしても有効にならないということでした。
で、Movable Type内のFile::Tempをリネームして
スクリプトを実行したところバージョンチェックに引っかかりませんでした。
ただその後jcode.pmの実行中にたくさんのエラーを吐いて
処理が止まっていました。
これ以上深追いしても私の手で解決するには時間がかかると判断し
今回の評価作業は打ち切りました。
ただ今回初めてPerlでの作業を行って勉強になりました。
コメントしてくだった方に感謝します。
0773nobodyさん
2008/11/11(火) 14:43:56ID:???<html><body>1</body></html>
と表示され、test.cgi?page=2 だと
<html><body>2</body></html>
…というふうに数字が増えていき、これをpage=10までやる。
という場合どうしたらいいですか?
0774nobodyさん
2008/11/11(火) 15:10:13ID:???Content-type: text/html
<html><body>%d</body></html>
HTML
0776nobodyさん
2008/11/11(火) 16:21:08ID:???先頭の #!/path/・・・/perl とか、パーミッションとかは問題ないな?
0777773
2008/11/11(火) 16:49:28ID:???で%dと表示されるので環境に問題はないと思うのですが…。
先頭の#!/path/・・・/perl の次の行から>>774を貼り付けてtest.cgiで保存し
ブラウザでアクセスしているのですが、何か根本的に間違えていますか?
0778nobodyさん
2008/11/11(火) 16:52:57ID:???まあ普通は CGI.pm 使うとこからやった方がいいが。
0779773
2008/11/11(火) 17:15:43ID:???文末にスペースが入っちゃってました。
ありがとうございます!
0780nobodyさん
2008/11/14(金) 01:53:06ID:???送り方は何でもいいのですが、例えばこんな感じで↓
$hyouji=表示件数
$cnt = 0;
for (@logdat) {
$cnt++;
next if ($cnt < $pageno + 1);
next if ($cnt > $pageno + $hyouji);
print "$logdat[$cnt-1]<hr>";
}
print "<form action=\"$script\" method=\"post\">\n";
$next = $pageno + $hyouji;
$back = $pageno - $hyouji;
if ($next < $cnt) {
print "<input type=\"submit\" name=\"page=$next\" value=\"次の$hyouji件\">\n";
}
ただ、元のCGIに以下のような記述があり、どうすればこれを保持したまま上のボタンが
機能するようになるのかがわかりません。
my($cl)=$ENV{'CONTENT_LENGTH'};
read(STDIN, $a, $cl);
foreach (split(/&/, $a)){
($arg, $val)=split(/=/, $_);
$val =~ s/\+/ /g;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/ego;
}
undef $a;
どうかご教授ください…
0781nobodyさん
2008/11/14(金) 02:08:39ID:???0782nobodyさん
2008/11/14(金) 02:18:37ID:???0783nobodyさん
2008/11/14(金) 02:45:52ID:???0784nobodyさん
2008/11/14(金) 02:53:52ID:???■ このスレッドは過去ログ倉庫に格納されています