【PHPフレームワーク】Ethna【スケルトン自動作成】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/08/03(水) 21:00:39ID:TuHx69hTEthna -PHPウェブアプリケーションフレームワーク-
http://ethna.jp/
SourceForge.jp: Project Info - Ethna
http://sourceforge.jp/projects/ethna/
0628626
2006/11/09(木) 00:28:07ID:???きちんと動きました!
参考にしたサイトの記事が古かったようです。
ソース読んでみて、定数が使われているなぁとは思っていたんですが、食い違いに混乱していました。
ありがとうございました。
0629nobodyさん
2006/11/17(金) 16:31:00ID:???環境は、FreeBSD6.1-RELEASE、PHP5.2.0、Ethna2.3.0 beta か preview1
だと思います。
# ethna -v
Ethna 2.3.0-dev
# pear list-channels で、
Registered Channels:
====================
Channel Summary
pear.ethna.jp Ethna PEAR Channel
pear.php.net PHP Extension and Application Repository
pecl.php.net PHP Extension Community Library
__uri Pseudo-channel for static packages
の状態で、
# pear upgrade http://ethna.jp/pear/Ethna-2.3.0-preview2.tgz を実行したのですが、
downloading Ethna-2.3.0-preview2.tgz ...
Starting to download Ethna-2.3.0-preview2.tgz (120,756 bytes)
..........................done: 120,756 bytes
ERROR: pear.php.net/Ethna: conflicting files found:
Ethna/bin/ethna_handle.php (pear.ethna.jp/ethna)
:
:
というエラーでアップデートに失敗します。
手順がおかしいでしょうか?何かヒントをいただければと思います。
0630nobodyさん
2006/11/17(金) 19:57:14ID:???0631629
2006/11/17(金) 20:33:17ID:???アンインストールしても同じエラーでした。
展開して適当なところに置けばよいはずだと思いファイルを手動で消して
展開したところ、こんどは ethna コマンドで、
# ethna -v
Could not open input file: @PEAR-DIR@/Ethna/bin/ethna_handle.php
置き換えた ethna コマンドをみると確かに、
ETHNA_HOME="@PEAR-DIR@/Ethna"
となっていたので、@PEAR-DIR@ を FreeBSD の /usr/local/share/pear/ に
書き換えたところ、無事アップグレードできたみたいです。
上記の箇所は pear install したときに書き換えられるんですかね?
とにかく何とか解決しました。
お騒がせしました。
0632nobodyさん
2006/11/20(月) 11:17:31ID:???PHP 5.2.0/Ethna 2.3.0 preview 2
参考:いつもながら初心者には簡素すぎるマニュアル・・orz
ttp://ethna.jp/ethna-document-dev_guide-misc-smarty_register_function.html
これは、
class foo {
function bar($vl) {
return number_format($vl);
}
}
というfoo.phpを用意して、 {ProjectID}_Contlor.phpの$smarty_prefilter_pluginに
array('foo', 'bar'),
を追加してやればhoge.tplにおいて{$app.hage|bar}のように使えるという理解で
あってますか?その場合、foo.phpはどこに置くのでしょうか?
appディレクトリやSmartyのpluginsディレクトリにおいても動作しませんでした。
error messageは以下のとおりです。
Fatal error: Smarty error: [in index.tpl line 22]: [plugin] modifier 'bar' is not implemented (core.load_plugins.php, line 118) in /usr/local/lib/php/Smarty/Smarty.class.php on line 1095
Fatal error: Call to undefined function smarty_modifier_bar() in ・・・
0633nobodyさん
2006/11/20(月) 21:38:33ID:???汎用性があるならlib/の下とかでもいいのでわ?
0634nobodyさん
2006/11/21(火) 00:42:33ID:???どうもです。
>>632を投稿した後にすぐ気がついて、include_onceしたのですが
エラーは変わりませんでした。
あ、ひょっとしてpreview 2には含まれてなくて、cvs版のみで有効な
機能だったりしますか?
明日試してみます>cvs版
0635nobodyさん
2006/11/21(火) 00:44:53ID:l75La6qCというクラスファイルを置いてます。
このクラスファイルの中でActionClass内で使用している
変数などを取得するためには引数として渡す以外にどんな方法があるでしょうか?
たとえば、ActionClassで $this->session->set("hoge", "ほげ") としている場合、
Project_HogeClass.php で hogeセッション値である「ほげ」を
取得するためにはどうすればいいでしょうか?
$ethna->session->get('hoge') では間違ってるでしょうか?
(ちなみにこれではうまく行きませんでした)
0636nobodyさん
2006/11/21(火) 01:13:01ID:???そういうことしようと思ったことないから想像だけど、
$this->session->set('hage', 'hoge');
って登録したんなら、それを取り出すのは、
$this->session->get('hage');
なんじゃないの?
どこから$ethnaは出てきたの?
0637nobodyさん
2006/11/21(火) 02:06:11ID:???preview2でも使えると思いますよ。
えと、class foo {} じゃなくて functionだけ書いておくのです。
0638nobodyさん
2006/11/21(火) 02:52:20ID:???あんまし美しくないかもだけど、こんな感じかな?
$c =& Project_Controller::getInstance();
$b =& $c->getBackend();
$b->session->get('hoge');
個人的にはHogeClassのメンバに$backendを持っておいて
コンストラクタで参照を渡すと思う。他にも使えるからね。
$this->backend->session->get('hoge');
HogeClassのメソッドでは、こういう風に呼び出すような。
0639nobodyさん
2006/11/21(火) 09:18:10ID:???上手くいきました。感謝!
/**
*@vararraysmarty prefilter定義
*/
var $smarty_prefilter_plugin = array(/*
*TODO: ここにユーザ定義のsmarty prefilter一覧を記述してください
*
*記述例:
*
*'smarty_prefilter_foo_bar',
*/
array('foo', 'bar'), (1)
'bar', (2)
);
(1)のように書きましたが、コメントどおり書いて(2)もo.k.でした。
(1)の方が後でメンテするときによさそうですね。
0640635
2006/11/21(火) 10:04:22ID:???>>636
$thisは自身参照の場合ですよね
>>638
前者はなんとなくは理解できましたが、
後者はあまり把握できてません、、、
ちょっと試したりしてみます、
ありがとうございました。
0641nobodyさん
2006/11/21(火) 16:13:24ID:???そのまま載ってたこと。中の人も見てるんだ。
開発がんばってください。
マニュアル作成ももうちょっとだけがんばってください。ノシ
0643nobodyさん
2006/11/23(木) 00:49:18ID:???javascriptでも確認するようにできませんかね?
アクションフォームあたりを継承して、そうしてる人いないでしょうか。
わざわざ確認用のアクション作成するのも面倒ですが、
javascriptで確認動作してくれれば、結構省けると思うんですよね
0644nobodyさん
2006/11/23(木) 02:29:38ID:???SQL文を自動的にエスケープするようにしたいんですが、
良い方法ないでしょうか?
$db->DB を継承しようかと考えたんですが、
ethnaクラスを完全に理解していないもので、
どこで記述するかなど$db->DBの継承の仕方がよくわからんとです
0646nobodyさん
2006/11/23(木) 09:55:15ID:???マニュアル作成はもうちょっとどころか、もっと力入れて欲しいな。
正直使い始めの漏れにはどういったことができるのか公式サイトを見ただけではよくわかりません。
公式サイトの解説は適当すぎる気がする。
アクション名の取得のやり方などの公式には掲載されておらず、
他のサイトには掲載されているとかいう内容が多すぎるのもどうかと思われ。
で、ここのリンク切れはいつになったら直すんだろう?
http://labs.gree.jp/Top/Document/20060707.html
0647nobodyさん
2006/11/23(木) 10:14:04ID:???まあ確かに楽をするためにフレームワークを導入するのに、
そのフレームワークの使い方に苦労する現状は本末転倒だわなw
でもversion 2.1.2でよければ、チュートリアルを読んで順に実行していけば
一通り作れるように書いてあるよ。
version 2.3.0の新機能については同意。まだ開発中だからしょうがないけどね。
0648nobodyさん
2006/11/23(木) 13:00:12ID:???0649nobodyさん
2006/11/23(木) 14:47:54ID:???機能知るにはコード追っかけるしかないけどさ、たいした量があるわけじゃないし、
全然「見て分かる」範囲じゃね?
0652nobodyさん
2006/11/24(金) 01:11:10ID:???個人的にはUnittest関係のドキュメントをお願いしたいな。
PHP5に移行してからエラーは全てthrow exceptionするようにしてるので
その辺も考慮した解説になるとうれしいな。
0653nobodyさん
2006/11/27(月) 13:27:13ID:???{
var $hoge = $this->config->get('hoge');
function abc()
{
echo $hoge;
}
}
$this->Hoge->abc();
とすれば $this->config->get('hoge') の値が表示されるはずかと
思いますが、上手くいきません。
どこか根本的に間違ってますでしょうか?
0655nobodyさん
2006/11/27(月) 22:25:04ID:???これでどう?
class Test_HogeManager extends Ethna_AppManager
{
var $hoge;
function Test_HogeManager(&$backend){
parent::Ethna_AppManager(&$backend);
$this->hoge = $this->config->get('hoge');
}
function abc()
{
echo $hoge;
}
}
0656nobodyさん
2006/11/28(火) 01:56:02ID:???var $hoge = $this->config->get('hoge');
が、PHPとして間違ってない?それとも俺が知らないだけ?
いつこの$hogeメンバはconfigのgetを実行するの?
0657nobodyさん
2006/11/29(水) 11:53:08ID:???で、なんとなく上手く動いているようなのだけど、
Notice: Only variable references should be returned by reference in /usr/local/share/pear/simpletest/simple_test.php on line 74
Notice: Only variable references should be returned by reference in /usr/local/share/pear/simpletest/simple_test.php on line 62
なる notice がでます(php.ini では error_reporting = E_ALL にしてます)。
エラーの意味はそのまんまですが、皆様の環境でも同様の notice が
でますでしょうか?
0658657
2006/11/29(水) 13:55:00ID:???authenticateを使わないprepareとperformだけのaction formで
$forward_name = $this->ac->prepare();
$this->assertNull($forward_name);
$forward_name = $this->ac->perform();
$this->assertEqual($forward_name, 'hage');
と記入すると両ケースともpassするけど>>657のnoticeとExceptionが4つでる。
エラー処理を全てthrow exceptionしてるのがいけないのかな?
0659657
2006/11/29(水) 17:29:08ID:???使わないようにしたらnoticeやExceptionは出ませんね。
SimpleTestとEthnaのどちらに原因があるのか分からないけど、
これらを改造するスキルは無いのであきらめるしかなさそうです。
0660nobodyさん
2006/11/29(水) 20:31:18ID:???Exceptionはcatchしてないだけじゃないの?
0661nobodyさん
2006/11/29(水) 22:21:59ID:???> NoticeはSimpleTestでしょう。
ですかね。
> Exceptionはcatchしてないだけじゃないの?
それは無いです(たぶん)。
テスト自体は成功するのですが余分なExceptionがでます。
今、例外をraiseErrorに書き換えようか激しく思案中・・・。
0662661=657
2006/11/29(水) 23:29:07ID:???任意のApplicationManager(仮にProject_FooManager.php)に
例外をthrowするだけのfunctionを追加
function thex() { thrown new exception ('exception test'); }
コントローラに追加(include & 'foo' => 'Foo',)
app/action/bar.phpのperformに
try {
$this->foo = $this->backend->getManager('foo');
$this->foo->thex();
} catch (exception $e) {
$this->ae->addObject(null, $e);
return 'error';
}
return 'bar';
これでちゃんとerror.tplが表示されます。
次にethna add-action-test bar
としてBarTest.phpに
// barアクションの実装
$forward_name = $this->ac->perform();
$this->assertNotEqual($forward_name, 'error');
と書くとテストにはパスするが他に4つほどEceptionが表示されます。
こんな感じです。
0663nobodyさん
2006/12/02(土) 13:29:39ID:???0664nobodyさん
2006/12/02(土) 13:34:12ID:???俺も同じくアクセスできないです
pear install http://ethna.jp/pear/Ethna-2.3.0.tgz
しても
Connection to `ethna.jp:80' failed: Success
サイトは見れるんですけどね
0665663
2006/12/02(土) 14:36:09ID:???0666nobodyさん
2006/12/04(月) 15:06:04ID:???ethna_renderer_smarty.setplugin(class/Ethna_Controller.php:1624): Does not exists. [ERROR CODE(1)]
というエラーが表示されます。
http://ethna.jp/ethna-document-dev_guide-misc-migrate_project.html
を見てやってますが、
依然としてこのエラーメッセージだけ解決できません。
ご助言プリーズ
0667nobodyさん
2006/12/04(月) 20:47:07ID:???renderer関連を見直しましょう。
0668nobodyさん
2006/12/05(火) 03:58:07ID:???0669657
2006/12/05(火) 19:37:00ID:???でなくなりました。テスト項目以外のExceptionが出るのは変わりませんが。
とにかく例外は利用できそうなのでほっとしました。
0670nobodyさん
2006/12/05(火) 23:11:23ID:???作り方次第では非常に簡単にできそうなのですが。
ちなみに確認画面とは、アクションを実行する前の、
一度本当に〜〜してもいいですか?みたいな感じの画面のことです。
自分が思いついた一番楽そうな方法は
・prepare()内で確認フラグがたってたら、returnで確認画面表示、
確認フラグがたってなかったら、アクション実行。
です。もっと楽そうな方法ってあるでしょうか?
0671nobodyさん
2006/12/07(木) 16:51:48ID:???値を取得するには、いちいち controller のインスタンスを取得して、Backendを
読み出して、getConfig()して…とやっていかなくてはいけないんでしょうか?
なんだかどんどんめんどくさくなっていきますね…。
0672nobodyさん
2006/12/07(木) 22:21:58ID:???0675nobodyさん
2006/12/08(金) 10:05:51ID:???自分で登録したキーぐらい覚えとけよと言われたらそれまでなんですが。
セッションに関するメソッドにはそれらしいのがなさそうですね。
[Ethna_Session] => Array
(
[0] => ethna_session
[1] => restore
[2] => isvalid
[3] => start
[4] => destroy
[5] => regenerateid
[6] => get
[7] => set
[8] => remove
[9] => isstart
[10] => isanonymous
[11] => _validateremoteaddr
)
0676nobodyさん
2006/12/08(金) 12:04:06ID:???0678nobodyさん
2006/12/09(土) 15:19:40ID:???ココを参考に
ファイルのアップロードプログラムを作っています。
単体ファイルなら上手く成功したのですが、
複数ファイル(配列)をアップロードしようとすると、
どうもform値としてわたっていないようです。
フォーム側では
<INPUT type="file" name="up_file[]">
ActionFormクラスで 'up_file'に
'type' => array(VAR_TYPE_FILE),
という指定を行ってます。
どこか誤りはあるでしょうか?
0679nobodyさん
2006/12/10(日) 15:03:52ID:???私もそれ知りたいですね、
今は$_FILEを直接使って逃げようかと思案中・・・
ethnaのメリットが下がりますが。
0680nobodyさん
2006/12/10(日) 21:35:54ID:???間違ってないと思う。
とりあえず、ActionClassで、
var_dump($this->af->get('up_file'));
ってしたらどうなる?
0681nobodyさん
2006/12/11(月) 18:58:01ID:???当然だよな
0683nobodyさん
2006/12/12(火) 04:16:06ID:???FILEはそもそもが配列なので、そこんとこでethnaがなんか変なことになっていた気がする
オレはethnaに適当にパッチ書いて動くようにしてしまった
0685nobodyさん
2006/12/12(火) 09:29:08ID:???683じゃないけど。
Ethna_ActionForm.phpの533行目辺り
foreach (array_keys($form_vars) as $key) {
// 値が空かチェック
if ($type == VAR_TYPE_FILE) {
if ($form_vars[$key]['size'] == 0
|| is_uploaded_file($form_vars[$key]['tmp_name']) == false) {
この辺やね。
$form_vars[$key]['size']しか使って判定してないんで、Arrayの時はこけるね。確かに。
0686nobodyさん
2006/12/12(火) 14:04:54ID:???>>685 もその前にis_arrayしてるから問題ないし。
0687nobodyさん
2006/12/12(火) 17:06:29ID:???かけることが可能ですが、この関数をひとつのファイルに収めて各フォーム
で共有することは可能でしょうか?
function _filter_str2upper($value)
{
return strtoupper($value);
}
こういう細かい関数をいっぱい定義しているのですが、各ページに書くのも
手間なので・・・
0688nobodyさん
2006/12/12(火) 17:57:01ID:???0689nobodyさん
2006/12/12(火) 18:00:26ID:ymrP8Ip7俺が問題に対処してたバージョンは2以前だったけど、
さすがに678さんがそんな古いバージョンを使っているとは思えんし、
なんか別原因と考えたほうがよさそーね
0690687
2006/12/12(火) 19:35:37ID:???なるほど。
{Project_ID}_ActionForm.php に書いておけば良いのですね。
ありがとうございました。
0691nobodyさん
2006/12/14(木) 22:19:50ID:???0692nobodyさん
2006/12/15(金) 01:52:12ID:???0693nobodyさん
2006/12/15(金) 09:19:35ID:???・新規(new new_do)
・更新(update update_do)
・削除(delete delete_do)
の6画面が1テーブル毎に毎回必要になります。
importform() exportform()があるので
コーディング自体はそれほど苦ではないのですが
テンプレートの枚数が多くなって鬱になってきます。
上手くまとめる方法ないのでしょうか・・
0694nobodyさん
2006/12/15(金) 10:03:40ID:???ねーなw
0695nobodyさん
2006/12/15(金) 10:44:48ID:???0696nobodyさん
2006/12/15(金) 14:25:35ID:dxQfzRiehttp://blog.as-roma.com/BoBlog/index.php?itemid=1267
0697nobodyさん
2006/12/16(土) 00:15:34ID:???ethnaを使おうと思うのですが、
CGIでPHPを動作させたい場合、
プロジェクト名/www 内を.cgiにするだけでいけます?
0700nobodyさん
2006/12/16(土) 03:22:58ID:???0701nobodyさん
2006/12/16(土) 03:25:51ID:???Actionだけ作成して、みたいな感じですかね。
ethnaでやるメリットが少なそうですが。
0703nobodyさん
2006/12/16(土) 11:46:54ID:???バッチ処理とかに使ってる人もいるんじゃないかな。
>>699
揚げ足取ってないで、自分は理論上どうなると思ってるのか書きなよ。
700の言うとおり、理論上ならどうにでもなる。
0705nobodyさん
2006/12/16(土) 12:48:08ID:???Webの方でAppManager類が充実してきてて、CLIでもDB処理したいなーと
思う時は使います。あと、メールの送信とか楽だし。もちろん、Viewレスの
ActionClass::perform()のみね。
>>699
理論上でできないと思ったらそのワケを。
実践してできなかったら、どこで詰まったかを書けばいいんじゃないの?
0706nobodyさん
2006/12/16(土) 15:32:44ID:???似たような種類のデータを扱うとき、
そのデータ名のID(?)って変えますか?
例えば、苗字データと名前データを表示するアクション、テンプレをそれぞれ作る場合、
それぞれのアクションで
$this->af->setApp('myouji_data', $myouji)
$this->af->setApp('namae_data', $namae)
と名前を分けますか?
私はそのつど対象のデータによって分けているんですが、
テンプレが似通ってる場合、.tplの{$app.***}の***の部分をいちいち
変更するのが非常に手間に感じます。
$this->af->setApp('data', $myouji)
$this->af->setApp('data', $namae)
としておけばほぼテンプレの変更は必要なくなるわけで。
一方で、分けておくと、ミスなどに気づきやすくなります。
普通の人はどうしてますでしょうか?
自分は完全独学なのでこういうコードデザインなどにひどく悩みます。
0707nobodyさん
2006/12/16(土) 21:01:30ID:???内容にまとまりがある部分は
配列でまとめて渡すのが良いんだろうけど。
0708nobodyさん
2006/12/17(日) 01:34:22ID:???テンプレート内で呼び出されるテンプレートにしちゃって
$this->af->setApp('myouji_data', $myouji);として
smartyなら{include file="hoge.tpl" data=$app.myouji_data}で
{$data}とかするのは?と言おうとしたけど
EthnaはテンプレートにViewクラスが個別に作れるんだから
$this->af->setApp('data', $myouji);
で良いと思った。
個人的には、dataは名前が不意に衝突しそうでいやだ
$person = array('myouji' => $myouji, 'namae' => $namae);
$this->af->setApp('person', $person);
とか、他のViewでも使う時に名前変えないですむ意味のある名前つけたいところ
0709nobodyさん
2006/12/23(土) 19:38:14ID:???0710nobodyさん
2006/12/23(土) 23:49:18ID:gjDqizfh0711nobodyさん
2006/12/24(日) 00:37:30ID:???0712nobodyさん
2006/12/24(日) 01:05:05ID:???0713nobodyさん
2006/12/24(日) 14:19:52ID:???0714nobodyさん
2006/12/25(月) 11:12:56ID:???ActionClassのperformメソッドにはあまり処理内容を書かず、AppManagerに
ロジックを書くことを推奨していたと思います。
しかし、ビジネスロジックの中にはサイトの中で一度しか呼ばれない
処理が多く、AppManagerがどんどん膨らんでいきます。
こういう場合もperformにビジネスロジックを書くのってやはり推奨されないんでしょうか?
一度しか呼ばれない処理なのにいちいちAppManagerクラスを見に行かねば
ならないのは、返って可読性を落とすような気がするのですが・・・。
0715nobodyさん
2006/12/25(月) 11:38:53ID:???程度問題かな。ActionForm値に依存しすぎる場合はAppManagerじゃなくて、
基本のActionClassに記述してそれを継承。
それでも自分はAppManagerに書くことのほうが多いです。
後で別どころで使う可能性もあるので。
または、「とりあえず」performに記述しておいて、後で「あ、前のを使う」と思えば、
その時にAppManagerに移植とかも結構やる。
ただ、一人ならいいけど複数人開発の場合は基本設計をちゃんとしないと混乱するよね。
0716nobodyさん
2006/12/25(月) 11:55:23ID:???どうもです。
現在一人で開発してまして、引き継ぐ人があらわれたとしても複数人での開発には
ならない規模の社内アプリです。
現在は極力AppManagerに書いてますが、ツール的なものはいいとして、ビジネス
ロジックは共通化できそうなのが少ないので迷ってきました。
「とりあえず」performに書いて汎用的に使えそうなのは抽出していくって言うのも
よさそうですね。
ちょっとこの路線でやってみます。
0717nobodyさん
2006/12/27(水) 19:43:12ID:???結局、
header(Location: /?action_hoge=true);
とかしてるけど。
UrlHandlerの使い方がまだよくわからん。
0718nobodyさん
2006/12/27(水) 20:24:34ID:???呼びたくなっちゃう事自体が設計ミスらしいですよ。
処理を別クラスに作成して、それを共通で呼び出すようにした
方が良いかと。
0720nobodyさん
2006/12/28(木) 00:33:39ID:???ttp://dozo.matrix.jp/pear/index.php?Framework%2FEthna%2Faction
こんなのも見つけてまいりました。
0721nobodyさん
2006/12/28(木) 01:07:43ID:???>アクション内で別のアクションに飛ばしたいときはどうしたらいいんでしょ...
すません。これ、私はこういうことを思ったことは無いんですが、
具体的にどうゆう場合にこういうことをしたい!!と思うんでしょうか?
なるだけ具体的に書いてくださると、
「その場合は、***をViewに集めれば良いじゃん」
とかレスしますんで、よろしく。
0722721
2006/12/28(木) 01:09:30ID:???ということなんで、ActionClassも自動的に似通ったものになり、やっぱり
ActionClassの継承を使って
parent::perform();
をくし島t食っています。
0723717
2006/12/28(木) 12:14:25ID:???ありがとうございます。
0724nobodyさん
2006/12/28(木) 14:52:35ID:???持たす方法は無いでしょうか。
0725nobodyさん
2006/12/28(木) 16:24:21ID:2NQtv/LQ実行するようなものも作れます?
フレームワークのイメージ自体がちょっとできてないんですが…
0726nobodyさん
2006/12/28(木) 18:21:33ID:???出来るみたいです。
http://labs.gree.jp/Top/Document/20060707.html#h3954b09
ゲートウェイシステム
ゲートウェイシステムとは,単純にいうとコントローラをゲートウェイとして利用して,
通常のブラウザからのリクエスト,コマンドラインからの実行,XMLRPCなど
(現バージョンでサポートされているのはこの3つです)のリクエストを全て「アクション」として
処理するための機構です
index.phpじゃなくて、コマンドライン用のヤツを作ればいいのかな?
0727nobodyさん
2006/12/29(金) 00:16:43ID:???または
ethna add-action -g=cli
■ このスレッドは過去ログ倉庫に格納されています