クラスについて、教えて
■ このスレッドは過去ログ倉庫に格納されています
0001cobol
NGNGC++なんか勉強中、Javaも。
そこで、クラス継承の概念が理解できず、困っています。
市販の本を読んでも今一つ。
たとえば、車のクラスを作り、F1カーに継承みたいな説明が
書いてあって、何のことか解りません。
どうか、ドキュソのCobolerに理解できるよう
ご教授下さい。
夜までに頼みまそ。
0002名無しさん@お腹いっぱい。
NGNG0003名無しさん@お腹いっぱい。
NGNG車って非常に一般的だね。まず、車を親と置き、そいつ(車)の子供をF1カーとしようではないか。
詰まり、このF1カーは親(車)の遺伝子を一部、或いは全て受け次ぐとしよう(伝承)
そして、その共通する遺伝子は両方とも車と言う種類であり、タイヤやガソリンを必要をしてする。
F1カーにあって車にない遺伝子は・・・例えば後部にあるでっかいウイングとか諸々、そのウィングを
記述するファンクッションをWingFnc()とし、そして、
F1カーのクラスだけに採用する。つーか、長くなるので京は此処まで。
0004名無しさん@お腹いっぱい。
NGNG0005名無しさん@お腹いっぱい。
NGNGhttp://hp.vector.co.jp/authors/VA000092/jokes/strup.html
0006名無しさん@お腹いっぱい。
NGNGその調子で1年位やってくれ。
0007>5
NGNG0008名無しさん@お腹いっぱい。
NGNG0009名無しさん@お腹いっぱい。
NGNGはじめて見た時はある種の switch - case を置き換えられて便利なのかと思った。
0010cobol
NGNG2.マクロを作る
3.全てを包含したモジュールを最初に作る
等との決定的な違いは何でせう。
0011名無しさん@お腹いっぱい。
NGNGF1カーにはエアコンやカーステ付いてないから
機能下がってるじゃん。
(エンジン性能だけな。上がってるの。
誰が書いたんじゃ。
そんな下らん例え話より実際の開発のシチュエーション
書いたほうがええじゃん。
Aという既存のロジックがあってそれをベースに
B@` C@` Dという処理をそれぞれ別の人が作らなければ
ならないとする。
継承のメカニズムがない言語ならここでB@` C@` DはAを
元にその処理用に書き加えて使うだろう。
ところが処理要件が変わってAを書き換えなければ
ならなくなった。当然、B、 C、 Dも同様。
継承メカニズムのない言語ならAの変更箇所をチェック
してB@` C@` Dにも全て漏らさず適用しなければならない。
何人かで分担して作業するにしろ、一人でするにしろ、
結構大変な作業。
これが継承のメカニズムを持った言語なら、Aをコンパイル
したものを再リンクするだけで事は済む。
ここでリンクライブラリとの決定的な違いは、B@` C@` Dもまた
拡張のベースとなれること。多態(ポリモーフィズム)で
同じメッセージを共有し、別の動作を行わせることが出来ること。
1.コピペじゃ抜けが発生するかも知れないし、テストも
大変。元が簡単な変更ならまだしも、大幅に改変された場合、
それを元にして作ったのが100本ぐらいあったらどうします?
2.マクロって何?#define?ライブラリの部品?テンプレート?
3.の方法だとそのモジュールの実装者に相当負荷がかかるし、
そのモジュールだけ複雑になりすぎるだろ?
まあ、ここらへんの話って開発技法を解説した本に結構書か
れてるんだけど・・・
0012>10
NGNGコピペはやめろ。
今すぐやめ呂
絶対やめろ
もとのコードがバグっていたらどうするつもりだ?
ペーストした所をゼンブ覚えておくつもりか?
0013>10,12
NGNG10の答え3も却下
0014>10
NGNGこれはクラスを知ってる人の質問では?どっかからのコピペ?
>1.モジュール化したものを、コピペする
>2.マクロを作る
>3.全てを包含したモジュールを最初に作る
1.クラスを派生すると、追加・変更したいメソッドとプロパティを実装するだけなので、
劇的にステップが減る。派生元にバグがあった場合、それを直すだけで全て直る。
2.マクロは関数のみで手続き抽象。クラスはデータ抽象+手続き抽象。
これにより飛躍的に記述性があがる。
3.全ての機能を持ったものに新しい機能を追加することが難しい。
仕様上の矛盾、実装時にステップが大きくなりすぎる、既存システムのテストが必要。
クラスを派生させる場合、機能の少ないクラスを派生させれば仕様上の矛盾を避けられる、
実装時のステップは差分のみ、既存システムに全く影響が無い。
0015名無しさん@お腹いっぱい。
NGNGint field = 10;
void method(){
System.out.println("てきとう");
}
}
class B extends A{
public static void main(String args[]){
//クラスBにmethod()はないが・・・
method();
//呼び出せるよん。
//ついでにfieldも・・・
System.out.println(field);
}
}
001615
NGNGclass B extends A{
public static void main(String args[]){
new B();
}
B(){
//クラスBにmethod()はないが・・・
method();
//呼び出せるよん。
//ついでにfieldも・・・
System.out.println(field);
}
}
0017>15@`16
NGNG0018名無しさん@お腹いっぱい。
NGNGいいたいことは分かるが、嘘つかないで。
classBのインスタンスがどこにも無いのに
アクセスできるのか?
その程度のソースくらい、動作確認してよ。
Java使えねえ!とか言い出すやついたら困る。
0019名無しさん@お腹いっぱい。
NGNGいいけど。
002019
NGNGnew B();
でインスタンスは作られるんじゃない?
0021>15〜
NGNG読んでも意味無いのに、そういうやり取りって気になるんだよね。
0022名無しさん@お腹いっぱい。
NGNGごめん。16の前の時点で出したのよ。
>21
その通りだね。ごめんなさい。
0023>21
NGNG0024名無しさん@LV1
NGNG0025>12@`13
NGNG1.夜間バッチでタスクが落ちたとき原因がスーパークラスにあった日にゃ
夜中にまごこの代までコンパイルしなおせっての?C++じゃmakeがあったってつらかろう
javaならって??なにをどこまでテストすればいいんじゃ!!
Onlineだっておんなじで、汎用じゃトラブルが局所化してくれないと運用できんよ。
2.#defineは問題点製造機って意見は賛成だけど、関数ライブラリみたいな
だめClassの単なる手続き=メソッドならドッコいですね。s/370アセンブラのspマクロって
ありゃレジスタの使えるCですぜ。
3.Classったってモジュール感覚の肥満児はよくあるお話。
この辺があって汎用世界にはOOP特に継承を進めない自分です。
個人的・井戸的世界ではべつだが@`汎用ならCORBAでつないでidl書いて
そしてその向はすべて何で書いてもClassじゃって言いたい。
0026>25
NGNG0027名無しさん@お腹いっぱい。
NGNG方がまたいいな。
0028>26
NGNG002925>28
NGNGその後、内容を議論してやろう。
003029
NGNG0031名無しさん@お腹いっぱい。
NGNGこういう文章がcoboler(っていうか初心者)を惑わすんだよ。害しか無いよ。
「クラスライブラリを派生させて差分コーディングすれば楽なんだよ」って何で素直に教えてあげない?
0032>30
NGNGラッピング/インターフェースの確立がいるならコンポーネント指向で行くべき。
するとClassは継承から離れちゃう。
誰かが誰かにお願いしてなんかやっていただく。その誰かがClassじゃでなんでいかんの?
なんでClassと継承がへばりつかにゃいかんのだ。>27うまい賛成。
003325=31>32
NGNG規模が大きいものをコピペ開発されると、変更が出来ない。
派生元を作っといて、他の人にそれを派生させて作らせると、
派生後のステップが少なくなる&変更すべき箇所が集約させるんだよ。
後、クラスライブラリを派生させることを否定する人は、
歴史上存在しないと思うんだが、あなたは何者?
一行目から内容が変なので、二行目以降も同じく逝って良し。
003425=31>32
NGNGこれどういう意味?
例えば、JavaやDelphiなら、クラスを作ってコンポーネントに登録するかどうかって話だけど。
害基地?
003525=31>32
NGNG「オブジェクト指向言語=クラス」です。何でこのスレに入って来たの?
0036名無しさん@お腹いっぱい。
NGNG憂鬱なプログラマのためのオブジェクト指向開発講座―C++による実践的ソフトウェア構築入門
翔泳社
ISBN:4881356194
とゆう本が、OOP厨房の頃とても役に立ちました。
クラスとインスタンス、継承、...などなど、オブジェクト指向の断片についての知識はあるが、
インスタンスどうしがどうやって連携しているか、イメージがつかめない
したがって、OOP(C++)で組まれたプログラムの全体像がみえない
という状態の人が、OOP(C++)で組まれたプログラムの全体像を理解できるようになり、次の
ステップの勉強にすすむには、良い本だと思います。
(自分の場合は、先輩のコードを解析させてもらいながらこの本を読んだから良かったのかもしれません)
003735補足
NGNGもしBooch定義が気に入らないなら、自分で条件を作って啓蒙&流行らせて下さい。
003836
NGNG0039>34@`35
NGNG1.オブジェクト指向における再利用のデザインパターン(Gofですね)。
2.オブジェクト指向開発の落とし穴。
3.アンチパターンソフトウェア危篤患者の救出。
手元にある超有名どころを選びました。
1.はUMLじゃないけど読んで損はありません。
>1はClassってなにってきいて継承でこんがらかってるわけ。
無理もないよ。このアプローチが落とし穴なんだから。
後”実践UML”をお勧めします。ともかく継承はどっかへほっときなさい。
いまどきooって単なるコーディングテクニックだと思ってる人いる。?
やれやれ厨房だらけだ。
0040>37
NGNGあたしゃオブジェクトコンポジション派でブラックボックス派ですから。
汎用で大規模にooやる気ならこれっきゃないもん。
>1が本職Cobolerとみて同業者がだめソース書いて自分が偉い気になってる
連中にいじめられてルーって気分でつついたってわけ。自分はCOBOL書けないけどね。
C++やJavaはWin以外で使うけど、このときは継承使うよ。だからこそVC++が嫌いでかつ
Unixにデル坊来るなって思っちゃうんだろーなー。
でもサブクラス至上派でホワイトボックス派の立場での意見は歓迎します。
004114=26>39
NGNG>いまどきooって単なるコーディングテクニックだと思ってる人いる。?
>やれやれ厨房だらけだ。
ooa=oop=ooとしてますね。基礎が出来て無いですね。
「継承が無ければクラスで無い」はoopの定義です。間違った理解を他人に勧めるのはやめて下さい。
004214=26>40
NGNG0043横レス
NGNGあるクラスのインスタンス変数に別のクラスのインスタンスを持たせる
やり方。結果、クラスのパブリックメソッドしか弄らない。
実際、これで必要十分なように設計されていないクラスがあったらそれは
アホかも。
サブクラス→派生クラス作って、そこでprotected属性のメソッドや変数を
弄ったり、メソッドオーバーライドしたりしてクラスの性質を変質させて
使うやり方。
コレクションとか使うときに、どうしてもオブジェクトポリモルフィズム
を利用する必要があるので、全く継承しないでOOPはできないとおもうん
だけどなあ。
0044名無しさん@お腹いっぱい。
NGNG分からないと言うのは皮肉だがプログラミングというのは
そういうものだ。
アセンブラからやりたまえ諸君。
0045横レス
NGNGclass A{
public void func(){...};
}
class B{
private A a;//これ
public B(){
a= new A();
}
public void runFunc(){//Aのfunc()を起動したい場合こうする
a.func();
}
public static void main(String args[]){
B obj = new B();
obj.runFunc();
}
}
よく出来たライブラリなら、これで事足りる事が多いので、
なんでもかんでも継承してバグ埋め込まないようにしよーね。
0046横レス
NGNGinterface TestInterface {
public void Say();
}
class TestClassA implements TestInterface{
public void Say(){System.out.println("I am A!");}
}
class TestClassB implements TestInterface{
public void Say(){System.out.println("I am B!");}
}
public class TestMain{
private static List list = new LinkedList();
public TestMain(){
list.add(new TestClassA());
list.add(new TestClassA());
list.add(new TestClassB());
list.add(new TestClassB());
list.add(new TestClassA());
list.add(new TestClassB());
}
public void SayAll(){
TestInterface instance;
for(int i = 0 ; i < list.size() ; i++ ){
instance = (TestInterface)list.get(i);
instance.Say();
}
}
public static void main(String args[]) {
TestMain obj = new TestMain();
obj.SayAll();
}
}
極端だけどね。
004727
NGNG>「クラスライブラリを派生させて差分コーディングすれば楽なんだよ」って何で素直に教えてあげない
質問と思うので答えましょう。下手な人はそれが理解できないから。
004836
NGNG> そこで、クラス継承の概念が理解できず、困っています。
とくに継承について、ハマっておられるわけですね。わしの36の回答は、
質問にちゃんと答えてませんね、すんまそ。
さて、
たんに「継承をするとなにが起こるか」ということについては、そのへんの
教科書に書いてあること以上でも以下でもないと思います。とくに、既出の
> 憂鬱なプログラマのための...
では、うまく説明されていると思います。
しかし、1の方は、ひょっとすると、継承をするとなにが起こるか、が
理解できないのではなくて、
●どうゆう局面で(なにがやりたくて)継承をつかうのかイメージがわかない
●だから継承を効果的につかう自信がない
●たんに差分コーディングをするだけならコピペで良いのではないか
とゆうことで、不安になっておられるのではないですか?
もしそうなら、
Effective C++―C++の50の急所
ISBN:4890524010
とゆう本の「44項:あなたの意図することを言おう、自分が言っていることの意味を
理解しよう」とゆうところが、たいへん役に立ちます。
(てゆうか、たいへん役に立ちました。俺的には^^)
継承は、差分コーディングをして楽をする以外の局面でも威力を発揮します。
004936
NGNGC++するにあっては、
「自分は、なにがやりたくてこのようなコードを書いているのだろう」
とゆうことを、つねに頭のなかで明確に言語化して認識しているかどうかは、
けっこうキーになると思います。
005036
NGNGEffective C++ の現行版は改訂2版です。
48は古いやつです。すんまそ。
005127
NGNGなるかを認識するまでは&人間全般が認識できる範囲がどれくらい狭く浅いかが
認識できるまでは、控えめに使ってほしい。。
0052名無しさん@お腹いっぱい。
NGNGちょっと暴論吐いたみたいね。頭冷えるとよくわかるスマソ。
確かに自分も継承使うよ、ただclassを理解するのに
is-a@`has-a@`is-implemented-usingと実装/インターフェースの泥沼
でおぼれたらかわいそうだと思ったわけ。モナーって言われりゃそれまでだけど。
で>1がせっかくoo世界に来たいならユースケース/協調図から入ったらと思っただけ。
C++&継承後回しでいいじゃん。後はもっといいレスがついてるからそこにゆずります。
実装依存のooドキュンにだけはなるなよーって思うこのごろ。
0053名無しさん@お腹いっぱい。
NGNGコンポーネント指向で最初に楽するのはマズイ?
(ってゆーかその方が継承のありがたみ実感できると思うけど。)
0054横レス
NGNGおいらの場合Cしか知らなかった頃に、GUIフレームワーククラス
ライブラリ(もちろんMFCじゃ無いやつ)使うことで、クラス
継承階層構造(特に派生クラスによるメソッドオーバーライド)
がどんだけ便利なものか悟りました。
実装からその意義を知るというアプローチも、無くは無いと思うよ。
というか継承ってOOでの「便利なテクニック」というレベルのもの
であって、OOの概念とは直接関係ない気がするが…
0055>54
NGNG>であって、OOの概念とは直接関係ない気がするが…
継承はテクニックじゃなくて、クラスの定義、必要条件です。
”気がする”位で間違った事を人に教えるのはヤメレ。(雑談スレなら良いが、このスレは教えてスレ)
0056名無しさん@お腹いっぱい。
NGNG算数を学ぶのに整数論から始めたわけじゃないし。。
0057名無しさん@お腹いっぱい。
NGNG0058>56
NGNGそれを間違って理解していると学んだことになりません。
小学生でも整数論を学びます。大学でさらに代数(群論)として一般化されます。
0059>56
NGNGOOの議論に置き換えると、どうなるの?
たとえばπとiの違いを小中学生が厳密に知る必要があるのだろうか。
006059
NGNG0061名無しさん@お腹いっぱい。
NGNG若干賛成。
カプセル化と継承はある意味相反する。委譲はそうではない。その分
コードの再利用性は劣るが、これはOOの本質ではないので。
0062横レス
NGNGあう、そーですか。
じゃあ、下2行は”実装経験者が語る個人的な感想”
っつーことでどうでしょ。
0063>61
NGNG0064名無しさん@お腹いっぱい。
NGNG「大学で一般化された群論」の方が良いと思いますが、系(システム)の記法が加わります。本質は変わりません。
定義した系を満たすものの一つが整数になります。整数は系の一つであり特に整数を特別視しません。
>たとえばπとiの違いを小中学生が厳密に知る必要があるのだろうか。
整数と整数以外を知るために定義を知らなければなりません。πとiを知る必要は無いでしょうが。
0065名無しさん@お腹いっぱい。
NGNGクラスは概念またはタイプのソフトウェアでの実装であり、オブジェクト指向プログラミング言語では、
サブクラスはクラス階層(class hierarchy)の作成によって、そのスーパークラスの属性及び操作の定義を継承します。
継承(inheritance)は、スーパータイプの定義に一致するサブタイプを実装するためのソフトウェアメカニズムです。
したがって、継承は、設計フェーズに進んだときは多くの場合に重要な役割を果たしますが、
概念モデルの考察には含まれません。
この文章から以下が考えられます。
1.著者Creg Larmanはooの基礎ができていない。
2.ooaの概念モデルはooではない。
3.概念モデルのclassはooのclassじゃない。
>41のかた教えてください。
0066>62
NGNGなぜキツク書いたかと逝いますと、「クラスについて、教えて 」の前スレが、
同じように拡散して、cobolerさんが混乱してたからです。
006741>65
NGNGooa・・・トップダウンアプローチ・・・クラス間の関係を注目
oop・・・ボトムアップアプローチ・・・クラスの継承を注目
0068横レス
NGNG自己満足してる専門馬鹿がいる模様。
0069>横レス
NGNG0070横レス
NGNG人のHNつかってあおんないでちょ。
007169>70
NGNG007259>64
NGNGと暗に述べているんだが。。。それについてのコメントはいかに?
0073名無しさん@お腹いっぱい。
NGNGまったく同感です。おなじく私と同じHNを使っているものは慎むように!
007464>72
NGNG逝ってることが非常に分からない。
is-aをあらわすには継承は不可欠。委託は、継承の実装時にintefaceを挟むかどうか。
i・・・「演算*」を満たさない
π・・・?忘れた
007565>67
NGNGまーでも面白い。>67結論には同意。でそれなら継承なくてもクラスジャン。
>68概念モデルが概念論だって???激しく逝ってくれ。
俺が専門馬鹿??信じられんよブラックボックス派だっていってるのに。
分析>その後コンポーネント利用で楽チンが理想なのに。
分析して見つかったclassにコンポーネントがきれいにはまっておしまい。
なんて仕事あるはケネーよな。
007674=67>75=65
NGNG0077通りすがり
NGNG007874=67>77
NGNG007972>64
NGNG確かにそのようだ。。
>>たとえばπとiの違いを小中学生が厳密に知る必要があるのだろうか。
>整数と整数以外を知るために定義を知らなければなりません。πとiを知る必要は無いでしょうが。
を踏まえて
>OOに継承が含まれるか、委譲はどうかというのはiとπの違いと変わらないじゃない?
とのべている。私は
「整数」->「OO」、「πとiを知る必要」->「継承があるかないか」と対応付けて、
「OO」か否かをしるのに「継承があるかないか」は必要ない
と述べている。これに対する反論は、
「整数か整数でないか」->「(継承の有無こそが)OOかOOでないか」と対応付けるべき、
というものを期待した。
アプローチをちょっとかえると、継承の有無はOOかOOでないかの定義にどれくらいの
重要度をもっているだろう?まさか必要条件と主張しているのはわかったが、十分条件で
はさすがにないよね。
008072
NGNGなので79へのレスは適当に。
008174=67=14>79
NGNGOOについては余り断言したくない(考察はしたいが)。十分条件ではないよね。
0082名無しさん@お腹いっぱい。
NGNG自分もなっとくしちゃった。
前スレの構造体話みたら、なんでこんなコードが自分のとこに回ってきたか
なんとなくわかった気がする。
確かに継承=差分コーデングじゃないのに、インターフェースのある言語を進めるべきか?。
だけどJavaの真似してC++書いてこのClassはあのClassと違うのよ
わかったxxチャンなんて言えんし。頭痛いよ。
それともアセンブラか?ちぇMSのCOM解説で一番よくわかったのがjmpテーブルみたいな
アセンブラリストのあるやつだもんナー。自分も実装ドキュンか...情けネー。
0083名無しさん@お腹いっぱい。
NGNG0084名無しさん@お腹いっぱい。
NGNG日経ソフトウエア9月号のオブジェクト指向プログラミングなんてどうでしょ?
車うんぬんより、オブジェクト指向でかかれたソースを
写してコンパイルして、考えて
これを繰り返すとなんとなくわかるもんだと思うのですが
0085名無しさん@お腹いっぱい。
NGNGたとえがいいんじゃないかな。丸も四角も図形を描画する、といった同一の形式で
管理できるよ、っての
どっかのスレでやってたが^^;
0086どっかのスレの261
NGNG0087クラスとインスタンスの例え話でこんなの考えてみました。
NGNG#COBOLERの人のために一応言っとくと
#Windowsのおまけについてくる単純なエディタっす
#べつにメモ帳であることが本質ではないので
#マカーの人とかはナニかよく知ってるアプリでもいいっす
で、オブジェクト指向用語でいうところの
「クラス」っていうのはずばりメモ帳の実行ファイル
(のバイナリイメージ)。
実行ファイルを起動したときの
メモリ上の実行イメージがいわゆる「インスタンス」とか
ただ単に「オブジェクト」とか呼ばれるものなわけです。
で、メモ帳は
いくつも起動できますよね?
でもそれらすべてのメモ帳の見た目や動きを規定しているのは
NOTEPAD.EXEっていう1つの実行ファイルなわけです。
よく入門書で「クラスはオブジェクトの鋳型である」とか
「クラスはオブジェクトの設計図である」とか例えられますが
要するにそういうことです。
#実際のOOP言語でもコンパイラなら
#クラスは最終的に実行バイナリに
#組み込まれるわけです。
#Javaなんかクラス=classファイルで
#1対1対応してるし。
0088超電波厨房発見!>87
NGNGメモリ上の実行イメージがオブジェクトだから、とか分かんないこと逝うなよ。
誰も、メモリ上の実行イメージをオブジェクトと逝ってないんだから。
008988
NGNG0090>89
NGNG009189>90
NGNG0092バッカーです
NGNGワケわかんねーなぁ
0093名無しさん@お腹いっぱい。
NGNGhttp://www.asahi-net.or.jp/~um5m-isd/
0094名無しさん@お腹いっぱい。
NGNG0095名無しさん@お腹いっぱい。
NGNG察してつっこむもヨシ。理解できずに煽るもヨシ。
0096名無しさん@お腹いっぱい。
NGNG友達ではないが、洞察力の無いイタイ厨房はもっと嫌い。
0097>88
NGNG0098名無しさん@お腹いっぱい。
NGNG0099名無しさん@お腹いっぱい。
NGNGほとんど仮想クラス化してるけど。(実物はみたことない)
で、サウンドカードもいまだにサウンドブラスター継承してるのあるし。
アダプテックもNE2000も以下同文
んで多重継承をつかえば一枚のPCカードでLANにも外付けDVDにも繋げて
あら便利。
調子にのってミレニアムの発色とGeForceの3Dを多重継承しようとしたら
レジスタアドレスやらなんやらバッティングしまくりであら大変。
菱形継承は気おつけましょうってか?(く、苦しい)
空冷ファンはミキシンか?
0100名無しさん@お腹いっぱい。
NGNG(概念はそうなんだろうが、それがわからんから継承がわからん)
フォードもセダンも2トントラックも「車」だよね、辺りから始める。
あまり変わらんか:-)
といいながら、「継承」より「バリエーション」の方が通りが良いかもと思った。
0101100
NGNG「継承」と「バリエーション」が違う次元のことをいっているのは判っている。
概念を説明するよりも、それを行った結果と元の関係から攻めたほうが
判りやすいんじゃないかって話。
010288
NGNG>OLEとかOpenDOC(笑)とかって発想がもろそうじゃん。
VC++付属のnotepadのC言語ソース拡張してOpenDocやってなさい。
>そもそもウインドウズってロードされた実行イメージをインスタンスって言うしね。
MSがWindowsをオブジェクト指向と逝っているだけで誰も認めん。
■ このスレッドは過去ログ倉庫に格納されています