トップページphp
995コメント290KB

【PHP】フレームワーク CakePHP 13ホール目【v2.0】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/11/09(水) 01:05:10.60ID:???
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※他フレームワークとの比較等はスレ違いです
テンプレは>>1-5くらい

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
github - cakephp
http://github.com/cakephp

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja

前スレ
【PHP】フレームワーク CakePHP 12ホール目【笑】
http://hibari.2ch.net/test/read.cgi/php/1309505626/
0396nobodyさん2012/01/02(月) 22:15:37.39ID:???
>>395
まぁ使う方が楽なんだろうけど、やんないならやんないで別にいいって部類ならスルーしちまおうかと思って。
0397nobodyさん2012/01/02(月) 22:19:15.79ID:???
てか、bakeやらなくても1回作った物をコピーすれば良いだけじゃん。
同じような箇所が結構あるだろ
0398nobodyさん2012/01/02(月) 23:08:17.97ID:???
>>394
cakeに用意されているサンプルデータでいいから、1回はbake体験した方がいい。
ひな形とはいえ、MVC全部を作ってくれるのは助かる。
0399nobodyさん2012/01/03(火) 00:17:03.05ID:???
bakeやった方が良さそうという事がわかった。サンクス。
0400nobodyさん2012/01/03(火) 03:59:04.88ID:???
フォームヘルパーをカスタマイズしたいときって多いと思うんだけど、どうやってる?
1.helpers/form.phpをapp以下にコピーして改造
2.FormHelperを継承したMyFormHelperを作成
1→Cakeのバージョンアップ時に問題
2→ビューでの変数名がFormじゃなくなるのが嫌
0401nobodyさん2012/01/03(火) 08:57:05.67ID:???
>>400
半角スペースは投稿時に省略される。

>.2.FormHelperを継承したMyFormHelperを作成
今回はこっちを採用した。html5の input email を使いたくて、FormHelperを継承した。
0402nobodyさん2012/01/03(火) 13:58:48.66ID:???
JavaScript系のヘルパー使うのって普通にjQueryのコード埋め込むのと比べてメリットありますか?
0403nobodyさん2012/01/03(火) 15:17:25.79ID:???
PHPファイルで使える
0404nobodyさん2012/01/04(水) 00:34:45.46ID:???
結局MyFormHelperをビューで$this->Formという変数名で使うことはできないの?
0405nobodyさん2012/01/04(水) 00:43:36.30ID:???
>>404
namespaceでも使えば出来るんじゃないの?
0406nobodyさん2012/01/04(水) 09:38:54.30ID:???

>>404
https://github.com/joebeeson/analogue
0407nobodyさん2012/01/04(水) 20:46:12.62ID:???
誰かAppModelをオーバーライドして
複合主キーにも対応させてくれないか?
0408nobodyさん2012/01/04(水) 22:17:55.77ID:???
断る
0409nobodyさん2012/01/04(水) 23:27:58.25ID:???
みんなfunctionの頭にpublicってつけてる?
2.0のブログチュートリアルを見るとつけてたりつけてなかったりだけど、
何も書かなければデフォでpublicだから省略していい気がするんだけど、
書いた方が(見栄え的に)お行儀のいいコードだったりする?
http://book.cakephp.org/2.0/en/tutorials-and-examples/blog/part-two.html
0410nobodyさん2012/01/05(木) 00:24:31.76ID:???
>>409
一応CakepPHPのコーディング規則ではそこまで書いてないので、好きにすればOKかと。
ただし、メソッド名の方に規則があって、protectedの場合はメソッド名の先頭をアンダーバー、
privateの場合はメソッド名の先頭をアンダーバー2つ。

http://book.cakephp.org/2.0/en/contributing/cakephp-coding-conventions.html#method-definition
0411nobodyさん2012/01/05(木) 01:57:28.20ID:???
変数は必ずpublic/privateつけて、メソッドはpublicなら省略するのが俺ルール。
つけたほうが一貫性があっていいとは思うんだけど、
public function 関数名
と書くと、public functionが長すぎて、ぱっと見たとき関数名に目が
行きにくいんだよな。変数は常にpublic/private意識しておくけど、
メソッドはほぼpublicで問題ないし。
0412nobodyさん2012/01/05(木) 02:06:02.96ID:???
>>410 >>411
サンクス
見た目すっきりさせたいしpublicは無しで統一するわ
0413nobodyさん2012/01/05(木) 02:32:44.05ID:???
public付けないと気持ち悪くね?
1.3時代からpublic付けてたんだが。
0414nobodyさん2012/01/05(木) 12:39:38.01ID:6HbHp9Xn
CakePHPを勉強し、自前のウェブサイトを構築したおかげで、ウェブサービスの企画があっという間できるようになった。
頭の中に、ウェブサービス構築のための常套手段が植え付けられたからだと思う。
CakePHPというよりもフレームワークを使用するメリットと言った方が適切かな。
0415nobodyさん2012/01/05(木) 17:48:11.25ID:???
2.0になって、404吐かせるのがcakeErrorからthrow new NotFoundException()に変わったせいか、
AppControllerのbeforeFilterでsetした値が404の時にビューに反映されないようになった?
全ページでヘッダー部分に表示させてる共通データの部分が、404の時だけundefined variableになってしまう
SQLログ見るとデータ自体は取ってきてるみたいだけどsetしたはずのデータがビューに反映されない
0416nobodyさん2012/01/05(木) 17:52:46.12ID:???
>>413
コア見るとpublicつけてるみたいね
コアと共通表記にしたいのならpublicつけるべきだと思う
0417nobodyさん2012/01/05(木) 21:37:19.55ID:???
>>415
ビューがClassRegistyに登録されなくなったから、ビューの別インスンタンスが生成されて
それが使われる。
あとデフォルトのExceptionRenderer(というか、CakeErrorController)はbeforeFilter()まで実行しない。
beforeFilterで例外飛ばすときもあるじゃん?
というわけでExceptionRendererを継承したクラスを作ってそれを使うのがお勧め。
_getController()でもオーバーライドすればいいじゃないの。
0418nobodyさん2012/01/05(木) 22:25:09.07ID:???
>>417
ありがとう
なんか取り回しが悪くなった気がして仕方ないがw
0419nobodyさん2012/01/06(金) 01:07:10.01ID:yz+Wi1W6
Model::find('all')のfieldsにサブクエリを使いたいんだけど
どうすればいいですか?
0420nobodyさん2012/01/06(金) 06:11:17.85ID:???
セッションファイルってどれだけ溜めてもいいもん?
云万になるとlsが遅くなる気がするけど、
PHPがセッションファイルを直接取ってくるんならとくに大丈夫なのかな
0421nobodyさん2012/01/06(金) 07:36:47.81ID:???
>>420
全列挙する必要がある ls には O(N) 必要
それに対して目的のファイルが判っている場合は O(log N) に収まる
古いファイルシステムだとまた話が変わってくるが
0422nobodyさん2012/01/06(金) 07:42:05.08ID:???
>>421
100万あっても無視できる程度になりそうですね
0423nobodyさん2012/01/06(金) 09:12:24.69ID:???
ファイルってインデックス化されるん?
そらされるか…
0424nobodyさん2012/01/06(金) 10:03:42.70ID:???
インデントはスペース派なんだけど、
Cakeはタブだよね?

スペース派の人どうしてる?
Cakeに合わせてる?
0425nobodyさん2012/01/06(金) 11:54:55.28ID:???
プロジェクトや会社によってはPEAR規約(っぽいもの)で開発してたりするよ
0426nobodyさん2012/01/06(金) 14:42:53.01ID:???
cakephp2.0を置いてHelloコントローラとindexアクションとhelloビューを作って
http://localhost/helloにアクセスするとhelloビューの内容が読み込まれましたが
http://localhost/にアクセスするとcakephpのreadme見たいな感じのページがでてしまいます
http://localhost/にアクセスした場合のデフォルトのコントローラをhelloにしたいのですがこれはどこのファイルに設定するのでしょうか?
0427nobodyさん2012/01/06(金) 15:56:30.42ID:???
routes.php
0428nobodyさん2012/01/06(金) 23:03:59.16ID:???
>>424
自分で書いたコードはスペースインデント
routes.phpとか既に用意されているファイルはタブインデント
一人プロジェクトだから細かいことは(゚ε゚)キニシナイ!!
0429nobodyさん2012/01/07(土) 08:27:20.92ID:???
携帯からアクセスがあったときは、
app_controller の before_filter で

header('Content-Type: application/xhtml+xml; charset=Shift_JIS');
という風にHTTPヘッダの content-type と charset を設定して、本来

Content-Type: application/xhtml+xml; charset=Shift_JIS
このヘッダが送られるはずが、

Configure::write('debug', N);
この設定を、0(デバッグ無し)に変更すると、

Content-Type: text/html
と、出力されてしまう。
(3 にするとちゃんとxml用のヘッダが送られるのは確認済み)

このケースが逆なら、手動でヘッダを送る前にデバッグ情報が送られているのかなと思うのですが、
デバッグ無しにすると、別のヘッダが送られているのが不思議です・・・。

どのファイルのどこでHTTPヘッダが送られているかって確認できましたっけ?
04304292012/01/07(土) 08:33:08.99ID:???
大事なことを言い忘れていました。
>>429の現象はさくらの本番サーバにアップしたときにのみ起こります。
開発環境のlocalhostではdebugの値に関係なく、
意図したHTTPヘッダが送られています。

アドバイスいただければ幸いです
0431nobodyさん2012/01/07(土) 12:27:32.35ID:???
一部のアクションでしか使わないコンポーネントを全部ロードするのは無駄ですが
アクションに応じて、ロードするコンポーネントを変更することはできないのでしょうか?
0432nobodyさん2012/01/07(土) 13:24:04.51ID:???
>>431
App::importは?

http://book.cakephp.org/1.3/ja/view/876/%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB#!/1.3/ja/view/936/%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9-%E3%83%A2%E3%83%87%E3%83%AB-%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88
0433nobodyさん2012/01/07(土) 13:52:12.56ID:???
>>432
リンク先は違う情報だったけど要は
App::import('Component', 'Mailer');
$Mailer = new MailerComponent();
$Mailer->initialize( $this );
$Mailer->startup( $this );
ってやればいいのかな?
0434ひろみちゃん2012/01/07(土) 17:28:25.09ID:???
>>431
2.0からコアの機能で動的に読めますが、1,x系は拙作のHackプラグインを使うことによって
期待する機能が提供されます。
https://github.com/hiromi2424/hack_plugin
Alias->loadComponent('Mailer');
startupするかは第3引数にtrueを指定すればOKです。
ドキュメントが整備されてないのですが需要があればします。
あとプラグイン名が厨二病臭いですが厨二病なので諦めてください。
0435nobodyさん2012/01/07(土) 17:52:24.37ID:???
>>434
ありがとうございます
拝見しましたが、思ったより長いですね
>>433のやり方じゃ駄目で、このようにきっちりやるべきなんでしょうか
0436ひろみちゃん2012/01/07(土) 18:00:20.89ID:???
>>435
短期的には>>433のやり方でも問題ないです。
メールのマネージャー程度のコンポーネントならまず大きな問題は起こりえないでしょう。
長期的に見れば、2.0で導入されるやり方に近いほうがより良いと思います。
0437nobodyさん2012/01/07(土) 18:15:00.53ID:???
わかりました、ありがとうございます
コードはありがたくいただきます
0438nobodyさん2012/01/07(土) 21:17:09.01ID:???
2.0でこのAdminAuthComponentがちゃんと動いている人いる?
http://www.1x1.jp/blog/2008/01/cakephp_adminauthcomponent.html

開発環境では問題なかったんだけれども、レンタルサーバーに上げてみたら
> header("WWW-Authenticate: Basic realm=\"Please Enter Your Password\"");
のところが効いてないのか、Basic認証のダイヤログが出ずにAuthorization Requiredと表示されてしまう。

HTTPヘッダーを見てみたところ、開発環境(正しく動いている環境)では
>HTTP/1.1 401 Authorization Required
となっているのが、本番(正しく動かない環境)では
>HTTP/1.1 200 OK
が出てしまっている。

ちょっと>>429の状況に近いかも知れないけど、自分の方はdebugの値に関係なくheaderがちゃんと送信されてない感じ
04394382012/01/07(土) 21:49:27.70ID:???
すまん、自己解決
CGI版のPHPだとBasic認証効かないのね
0440nobodyさん2012/01/07(土) 22:13:13.36ID:???
2になってからちょっと軽くなった?
1.xと比べてシャキシャキ動いてる気がする
0441nobodyさん2012/01/07(土) 22:51:46.73ID:???
2.0.5ぐらいになってるけど、バグは減った?
0442nobodyさん2012/01/07(土) 23:02:34.52ID:???
なに、動きが軽くなるなら乗り換えたいが
0443nobodyさん2012/01/08(日) 01:17:09.40ID:???
何となく軽いと言うだけでベンチを取ったわけじゃないので話半分に聞いてくれ
0444nobodyさん2012/01/08(日) 03:29:35.66ID:???
そうか、ベンチ取った人とかいないのかな
0445nobodyさん2012/01/08(日) 14:39:21.96ID:???
http://doophp.com/files/benchmark.png
dev版だけど、多少軽くなってるみたいだな
0446nobodyさん2012/01/09(月) 00:29:39.74ID:pfm1AGOc
controllerでfindするときのorderを
'order' => array('Person.secondname ASC')
のようにしているんですが、複数のorder条件をつけるのはどうしたらいいですか?

具体的には苗字順に並べるようにしてるんですが、苗字がない人は下の名前(Person.firstname)を参照して五十音で並べたいです
0447nobodyさん2012/01/09(月) 00:37:51.69ID:???
自己解決しました
$options['order'] = array(
'Person.secondname, Person.firstname ASC'
);
で$optionsをうしろにくっつければいけました
0448nobodyさん2012/01/09(月) 00:53:14.64ID:???
>>446です>>447では解決してませんでした。。
0449nobodyさん2012/01/09(月) 01:58:03.73ID:???
orderがarrayになってるんだから分かるだろ?
0450nobodyさん2012/01/09(月) 06:19:15.24ID:???
コントローラーで
function index($param){
とアクションを作っていて、URLで
コントローラー名/index/パラメータ
と呼ばすに
コントローラー名/パラメータ
とやっても動くようにするにはどうすればよいでしょうか
ぐぐるとRoutesを使う例が出てきましたが、それだと他のアクションが使えなくなるようでした
アクションとして存在しない時のみ、indexのパラメータとして扱うことはできないでしょうか
0451nobodyさん2012/01/09(月) 08:57:47.96ID:???
>>450
$paramが数値なら、ルーティング規則でその部分に(数値であることの)正規表現を書けば
いける。詳しくはぐぐって。
だめだったらカスタムルートオブジェクトを作成してひーこらするしかない。頑張って。
0452nobodyさん2012/01/09(月) 08:58:56.35ID:???
その部分にってのは紛らわしいなごめん
Router::connect()の第3引数で指定するってこと。
0453nobodyさん2012/01/09(月) 09:04:31.25ID:???
調べ中ですがまだうまくいっていません
ちなみに$paramは文字列で、複数ある場合もありますが大丈夫でしょうか
0454nobodyさん2012/01/09(月) 09:46:49.44ID:???
数値ならってわざわざ書いたのはなんでだと思う?
0455nobodyさん2012/01/09(月) 23:29:06.48ID:???
cakephpのサイトだけ紹介してるサイトないかな
0456nobodyさん2012/01/09(月) 23:34:27.49ID:SU3KFcHv
2になって、AuthComponentがかなり洗練されたね
0457nobodyさん2012/01/09(月) 23:37:13.69ID:???
CakePHPでページを表示すると下の方にsqlを200件だしているような表示になります
これは実際に200件実行してるということでしょうか
すると問題ありますかね
0458nobodyさん2012/01/09(月) 23:43:44.32ID:???
件数取得してるだけじゃないのか?
sqlを200回実行してるわけねーだろ
0459nobodyさん2012/01/09(月) 23:49:11.21ID:???
>>458
ありがとうございます。
(default) 262 queries took 46 ms こう表示されてました。
0460nobodyさん2012/01/09(月) 23:55:34.73ID:???
>>459
262回クエリ投げてるな
どんなページだか知らないがさすがに多すぎると思う
っていうか、自分で実装したコードなんだろうからクエリ回数くらい検討つくだろう
アソシエーションで勝手にいっぱい持ってきているのならcontainableで引っ張ってくるデータを厳選すればいいぞ
0461nobodyさん2012/01/09(月) 23:58:51.05ID:???
>>460
ありがとうございます。
containable調べてみます
0462nobodyさん2012/01/10(火) 01:48:35.15ID:???
containつかったら88 queriesまで減らせませした
0463nobodyさん2012/01/10(火) 03:05:48.92ID:Rzgwr3Tg
CakePHP2.1alpha を早速いれて試してみたが、エラーメッセージ(スタックトレース)がかなり見やすくなってる
0464nobodyさん2012/01/10(火) 05:46:55.61ID:???
Cakeって気付くとめちゃめちゃクエリ投げてるよね
遅い原因の一つはこれか?
0465nobodyさん2012/01/10(火) 10:19:59.29ID:???
今頃気づいたのか
Yiiにしとけ
CakePHPはオワコン
0466nobodyさん2012/01/10(火) 12:07:44.08ID:+4VQFJJn
v1.2の話なんだけど
aテーブル
bテーブル
a_bテーブル
があるとして
a にhasAndBelongsToManyを設定して
a_b にbelongsToを設定したら、このbelongsToがスルーされる。なぜだかわかる?
削除用に設定したいんだけど、毎回bindModelするしかないのかな。
0467nobodyさん2012/01/10(火) 12:11:35.74ID:???
Yiiってほとんどのレンタルサーバーで使えないじゃんw
0468nobodyさん2012/01/10(火) 13:05:20.54ID:???
PDO使うからか?
0469nobodyさん2012/01/10(火) 13:14:52.36ID:???
Yiiっていいの?
0470nobodyさん2012/01/10(火) 13:32:02.30ID:???
>>466
recursive設定するのはどうかな
0471nobodyさん2012/01/10(火) 19:50:56.57ID:???
最近2.0使ってるんだけど、本番環境時に/foos/barとか適当なURLにアクセスすると
表向きは404返してくれるんだけど、error.logにmissing controllerが記録されるようになった気がする
テスト環境時はmissing controllerエラーを表示してくれてOKだけど、本番でそれがerror.logに記録されるのはなんか変じゃないか?
/robots.txtとか/favicon.icoとかにアクセスがあったら、ひたすらerror.logに記録されちゃってるし(ファイルがない場合)
0472nobodyさん2012/01/10(火) 21:31:38.90ID:???
それ、php.iniの設定では?
04734712012/01/10(火) 22:52:12.56ID:???
>>471
説明不足ですまぬ
/app/tmp/error.logに記録されまくって困っている
0474nobodyさん2012/01/11(水) 09:07:32.93ID:???
>>471
.htaccessでなんでもかんでもCakePHPに渡すようになってる事が問題
0475nobodyさん2012/01/11(水) 16:35:42.80ID:???
設定でExceptionHandlerがログを取るかどうかが指定できたような気がする
今再インストール中で確認できないが
04764712012/01/11(水) 19:36:53.02ID:???
>>474
1.3の頃はそんなことなかったんだけどなあ

>>475
サンクス
ちょいと調べてみる
0477nobodyさん2012/01/12(木) 06:51:34.68ID:???
2.0ではController::cakeError()の代わりにどうやってエラー画面出すの?
0478nobodyさん2012/01/12(木) 13:41:50.62ID:???
>>477
http://c-brains.jp/blog/wsg/11/12/08-114554.php
0479nobodyさん2012/01/12(木) 20:06:56.05ID:srRhUW1K
>>470
返信サンクス
解決方法探し当てた。
http://d.hatena.ne.jp/cakephper/20100826/1282798441
0480nobodyさん2012/01/13(金) 01:39:04.98ID:ayVGOPQu
通常セッションの有効期限はcore.phpで設定すると思いますが、
コントローラーの中で動的に変更したい場合どうすればいいですか?
0481nobodyさん2012/01/13(金) 17:22:59.89ID:???
Cakeで作られたサイトのフォーム見ると、

<input name="data[Post][title]"
じゃなくて
<input name="title"

になっている場合があるのですが、
これって単にフォームヘルパーを使ってないだけですかね?
それともフォームヘルパーでnameを配列にしない方法があるのでしょうか?
0482nobodyさん2012/01/13(金) 18:28:21.82ID:???
Cakeのヘルパーは使えないことで有名だからな
0483nobodyさん2012/01/14(土) 21:18:17.06ID:???
関数で帰ってきた配列を代入せずに、
そのまま添字付けることって可能?

test()['test']

みたいな
0484nobodyさん2012/01/14(土) 21:28:07.86ID:???
やってみりゃいいじゃん
0485nobodyさん2012/01/14(土) 21:47:35.89ID:???
できなかったから他の方法ないかなぁと思って
内部的に戻ってきた配列に添字つけて参照するだけだし、
難しそうではないんだけどなぁ
0486nobodyさん2012/01/14(土) 21:55:23.06ID:???
あーよく俺もそれできたらいいなと思う
つーかCake関係ないやんそれ
0487nobodyさん2012/01/15(日) 00:09:42.08ID:???
function getValueFromFunc($func,$key) {
$a = $func();
return $a[$key];
}
0488nobodyさん2012/01/15(日) 15:39:15.61ID:???
http://blog.s21g.com/articles/20
こんな感じでURLを丸ごとパラメータとして渡したいんですが
Cakeでやる方法があったら教えてほしいです
0489nobodyさん2012/01/15(日) 16:40:34.32ID:???
cakeってパラメータにメタ文字使えないんじゃ
0490nobodyさん2012/01/16(月) 17:55:18.55ID:l7Fd5fgU
.NET interoperability overview of Phalanger 3.0
http://www.php-compiler.net/blog/2012/net-interoperability-overview-of-phalanger-3-0
0491nobodyさん2012/01/16(月) 19:49:38.62ID:???
>>485
PHPの公式コミュニティ行って頼んでこいよハゲ
0492nobodyさん2012/01/17(火) 00:47:37.68ID:???
1.3.10使ってるんだけど、cccが3のレコードのaaaとbbbを更新したくて

$this->updateAll(array('aaa' => 1, 'bbb' => 2), array('ccc' => 3));

だと失敗して

$data = $this->find('first', array('conditions' => array('ccc' => 3), 'field' => array('id')));
$data['ModelName']['aaa'] = 1;
$data['ModelName']['bbb'] = 2;
$this->save($data);

だと成功する。今まで2年ぐらいCake使っててこういうの初めてで、何故だかわからないんだけど
わかる人いる?
0493nobodyさん2012/01/17(火) 01:07:49.33ID:???
>>492
1個目の例で失敗しそうにないけど、何て出て失敗するの?
0494nobodyさん2012/01/17(火) 01:37:40.29ID:???
事故解決。これでした
http://stackoverflow.com/questions/4488945/cakephp-updateall-not-working
0495nobodyさん2012/01/17(火) 02:50:02.37ID:???
Cake2.0を使ってます。モデル内でコンポーネントを使っていて
PHPUnitでそのモデルをテストすると
Fatal error: Class 'Component' not found in /path/to/Controller/Component/HogeComponent.php on line xx
と怒られる。

ちなみにモデル内でのコンポーネントの呼出はこんな感じ。
App::uses('HogeComponent', 'Controller/Component');
$hoge = new HogeComponent(new ComponentCollection());

Call Stackの最後にはinclude( '/path/to/Controller/Component/HogeComponent.php' )とあるんだけど
これはコンポーネントのインクルードでなにか問題があったということかな?

コンポーネントが見つかりませんというエラーメッセージについて分かる人いたら教えてください。
■ このスレッドは過去ログ倉庫に格納されています