[perldocjp-cvs 1261] CVS update: docs/modules/DBIx-Class-0.08127/lib/DBIx/Class/Manual

Back to archive index

ktats****@users***** ktats****@users*****
2011年 4月 29日 (金) 02:14:30 JST


Index: docs/modules/DBIx-Class-0.08127/lib/DBIx/Class/Manual/Cookbook.pod
diff -u docs/modules/DBIx-Class-0.08127/lib/DBIx/Class/Manual/Cookbook.pod:1.1 docs/modules/DBIx-Class-0.08127/lib/DBIx/Class/Manual/Cookbook.pod:1.2
--- docs/modules/DBIx-Class-0.08127/lib/DBIx/Class/Manual/Cookbook.pod:1.1	Fri Apr 29 01:44:57 2011
+++ docs/modules/DBIx-Class-0.08127/lib/DBIx/Class/Manual/Cookbook.pod	Fri Apr 29 02:14:29 2011
@@ -216,11 +216,15 @@
 
 =head2 特定のカラムを使う
 
+=begin original
+
 When you only want specific columns from a table, you can use
 C<columns> to specify which ones you need. This is useful to avoid
 loading columns with large amounts of data that you aren't about to
 use anyway:
 
+=end original
+
 テーブルから特定のカラムが欲しいだけのときには、C<columns>を使って、
 必要なものを指定できます。何にも使わない大量のデータを取り込むのを
 避けることができます。
@@ -235,20 +239,28 @@
   # Equivalent SQL:
   # SELECT artist.name FROM artist
 
+=begin original
+
 This is a shortcut for C<select> and C<as>, see below. C<columns>
 cannot be used together with C<select> and C<as>.
 
+=end original
+
 後でも見ますが、これは、C<select>とC<as>のショートカットです。
 C<columns>はC<select>とC<as>と一緒には使えません。
 
 =head2 データベースの関数やストアドプロシージャを使う
 
+=begin original
+
 The combination of C<select> and C<as> can be used to return the result of a
 database function or stored procedure as a column value. You use C<select> to
 specify the source for your column value (e.g. a column name, function, or
 stored procedure name). You then use C<as> to set the column name you will use
 to access the returned value:
 
+=end original
+
 C<select>とC<as>の組み合わせで、カラムの値としてデータベース関数やストアド
 プロシージャの結果を返すのに使うことが出来ます。C<select>を使って、カラムの
 値のためのソースを指定できます(例えば、カラム名、関数、ストアドプロシージャ名)。
@@ -289,11 +301,15 @@
   # GROUP BY me.artistid, me.name, me.rank, me.charfield
   # ORDER BY amount_of_cds DESC
 
+=begin original
+
 If your alias exists as a column in your base class (i.e. it was added with
 L<add_columns|DBIx::Class::ResultSource/add_columns>), you just access it as
 normal. Our C<Artist> class has a C<name> column, so we just use the C<name>
 accessor:
 
+=end original
+
 C< as >属性は、SQLのシンタックスC< SELECT foo AS bar>とまったく関係ないことに
 気をつけてください(L<DBIx::Class::ResultSet/ATTRIBUTES>のドキュメントを見てください)。
 ベースクラスにカラムとしてエイリアスがある(すなわち、C<add_columns>で追加されている)のなら、
@@ -303,17 +319,25 @@
   my $artist = $rs->first();
   my $name = $artist->name();
 
+=begin original
+
 If on the other hand the alias does not correspond to an existing column, you
 have to fetch the value using the C<get_column> accessor:
 
+=end original
+
 一方で、エイリアスが既存のカラムに一致しないなら、C<get_column>アクセサを使って、
 値を取得する必要があります:
 
   my $name_length = $artist->get_column('name_length');
 
+=begin original
+
 If you don't like using C<get_column>, you can always create an accessor for
 any of your aliases using either of these:
 
+=end original
+
 C<get_column>が気に入らなければ、いつでも、下記のいずれかを使ってどんな
 エイリアスにもアクセサを作れます:
 
@@ -392,10 +416,14 @@
   # LEFT JOIN cd ON artist.id = cd.artist
   # GROUP BY name
 
+=begin original
+
 Please see L<DBIx::Class::ResultSet/ATTRIBUTES> documentation if you
 are in any way unsure about the use of the attributes above (C< join
 >, C< select >, C< as > and C< group_by >).
 
+=end original
+
 上記の(C< join >、 C< select >、 C< as >、 C< group_by>)属性の使い方がわからなければ、
 L<DBIx::Class::ResultSet/ATTRIBUTES>ドキュメントをみてください。
 
@@ -449,9 +477,13 @@
 
 =head2 定義済み検索
 
+=begin original
+
 You can define frequently used searches as methods by subclassing
 L<DBIx::Class::ResultSet>:
 
+=end original
+
 L<DBIx::Class::ResultSet>クラスを継承して、自分自身のクラスを書き、よく使う
 検索をメソッドとして定義できます:
 
@@ -475,10 +507,14 @@
 into the C<ResultSet> directory next to your C<Result> directory, and it will
 be automatically loaded.
 
+=begin original
+
 If however you are still using L<DBIx::Class::Schema/load_classes>, first tell
 DBIx::Class to create an instance of the ResultSet class for you, in your
 My::DBIC::Schema::CD class:
 
+=end original
+
 自分の結果セット使うには、最初に、自分のMy::DBIC::Schema::CDクラスの中で、
 DBIx::Classにそのインスタンスを作るように教えます。
 
@@ -491,8 +527,12 @@
 
 Note that C<resultset_class> must be called after C<load_components> and C<table>, or you will get errors about missing methods.
 
+=begin original
+
 Then call your new method in your code:
 
+=end original
+
 それから、コードの中で、新しいメソッドを呼びます:
 
    my $ordered_cds = $schema->resultset('CD')->search_cds_ordered();
@@ -535,9 +575,13 @@
 
 =head2 joins と prefetch を使う
 
+=begin original
+
 You can use the C<join> attribute to allow searching on, or sorting your
 results by, one or more columns in a related table.
 
+=end original
+
 C<join>属性を使って、関連するテーブルの1つ以上のカラムを使って、
 検索や、結果のソートができます。
 
@@ -547,8 +591,12 @@
 
   My::Schema::CD->has_many( artists => 'My::Schema::Artist', 'artist_id');
 
+=begin original
+
 To return all CDs matching a particular artist name, you specify the name of the relationship ('artists'):
 
+=end original
+
 特定のアーティスト名の全てのCDを返すためには:
 
 
@@ -569,9 +617,13 @@
 In that example both the join, and the condition use the relationship name rather than the table name
 (see L<DBIx::Class::Manual::Joining> for more details on aliasing ).
 
+=begin original
+
 If required, you can now sort on any column in the related tables by including
 it in your C<order_by> attribute, (again using the aliased relation name rather than table name) :
 
+=end original
+
 必要なら、C<order_by>属性にそれを含めて、関連するテーブルのいずれかのカラムで
 ソートすることも出来ます(テーブル名ではなくエイリアスのリレーション名を再度使って):
 
@@ -591,18 +643,26 @@
   # WHERE artist.name = 'Bob Marley'
   # ORDER BY artist.name
 
+=begin original
+
 Note that the C<join> attribute should only be used when you need to search or
 sort using columns in a related table. Joining related tables when you only
 need columns from the main table will make performance worse!
 
+=end original
+
 C<join>属性は関連するテーブルのカラムを使って検索やソートをする必要があるときにのみ
 使われるべきだということに注意してください。
 メインのテーブルからカラムが必要なときに、関連するテーブルを結合するのは、
 パフォーマンスが悪いです!
 
+=begin original
+
 Now let's say you want to display a list of CDs, each with the name of the
 artist. The following will work fine:
 
+=end original
+
 で、、CDのリストを、それぞれのアーティストの名前と一緒に表示したいとしましょう。
 下記のやりかたでうまくいきます:
 
@@ -610,28 +670,40 @@
     print "CD: " . $cd->title . ", Artist: " . $cd->artist->name;
   }
 
+=begin original
+
 There is a problem however. We have searched both the C<cd> and C<artist> tables
 in our main query, but we have only returned data from the C<cd> table. To get
 the artist name for any of the CD objects returned, L<DBIx::Class> will go back
 to the database:
 
+=end original
+
 ですが、一つ問題があります。このメインクエリで、C<cd>とC<artist>テーブルの両方を
 検索していますが、C<cd>からのみデータが返されています。返されたCDオブジェクトの一部で、
 アーティスト名を得るために、L<DBIx::Class>は、データベースに戻ります:
 
   SELECT artist.* FROM artist WHERE artist.id = ?
 
+=begin original
+
 A statement like the one above will run for each and every CD returned by our
 main query. Five CDs, five extra queries. A hundred CDs, one hundred extra
 queries!
 
+=end original
+
 上記のようなステートメントが、メインクエリによって返された、それぞれの、全ての
 CDで走ります。5つのCDであれば、5つの別のクエリです。100のCDであれば、100の別の
 クエリ!
 
+=begin original
+
 Thankfully, L<DBIx::Class> has a C<prefetch> attribute to solve this problem.
 This allows you to fetch results from related tables in advance:
 
+=end original
+
 ありがたいことに、L<DBIx::Class>は、C<prefetch>属性があり、この問題を解決できます。
 この属性を使うと、先に関連するテーブルから結果をとってこれます:
 
@@ -653,25 +725,37 @@
   # WHERE artist.name = 'Bob Marley'
   # ORDER BY artist.name
 
+=begin original
+
 The code to print the CD list remains the same:
 
+=end original
+
 CDのリストを表示するコードは同じ物が使えます:
 
   while (my $cd = $rs->next) {
     print "CD: " . $cd->title . ", Artist: " . $cd->artist->name;
   }
 
+=begin original
+
 L<DBIx::Class> has now prefetched all matching data from the C<artist> table,
 so no additional SQL statements are executed. You now have a much more
 efficient query.
 
+=end original
+
 L<DBIx::Class>はC<artist>テーブルからすべてのマッチするデータを先にとってきています。
 そのため、余分なSQLステートメントは実行されません。より効率的なクエリになりました。
 
+=begin original
+
 Also note that C<prefetch> should only be used when you know you will
 definitely use data from a related table. Pre-fetching related tables when you
 only need columns from the main table will make performance worse!
 
+=end original
+
 また、C<prefetch>は、関連するテーブルからデータを必ず使うとわかっているときのみに、
 使うべきです。メインテーブルからのカラムしか必要としないなら、
 関連するテーブルから先に取得するのは、パフォーマンスを悪くします!
@@ -706,10 +790,14 @@
 
 =head2 マルチステップの結合(join)
 
+=begin original
+
 Sometimes you want to join more than one relationship deep. In this example,
 we want to find all C<Artist> objects who have C<CD>s whose C<LinerNotes>
 contain a specific string:
 
+=end original
+
 2つ以上の深いリレーションシップでjoinしたいときもあるでしょう。
 この例では、C<LinerNotes>に特定の文字が含まれるC<CD>を持っている、
 C<Artist>オブジェクトを探したいとします:
@@ -735,10 +823,14 @@
   # LEFT JOIN liner_notes ON cd.id = liner_notes.cd
   # WHERE liner_notes.notes LIKE '%some text%'
 
+=begin original
+
 Joins can be nested to an arbitrary level. So if we decide later that we
 want to reduce the number of Artists returned based on who wrote the liner
 notes:
 
+=end original
+
 結合は任意のレベルでネストできます。ですので、後から、ライナーノーツを
 誰が書いたかを元に、返されるアーティストの数を減らしたいと決めたとしたら:
 
@@ -796,9 +888,13 @@
 
 =head2 Multi-step prefetch
 
+=begin original
+
 C<prefetch> can be nested more than one relationship
 deep using the same syntax as a multi-step join:
 
+=end original
+
 C<prefetch>は、マルチステップの結合と同じシンタックスで、
 2つ以上の深いリレーションシップでネストできました:
 
@@ -816,9 +912,13 @@
   # JOIN cd ON tag.cd = cd.id
   # JOIN artist ON cd.artist = artist.id
 
+=begin original
+
 Now accessing our C<cd> and C<artist> relationships does not need additional
 SQL statements:
 
+=end original
+
 
 これで、C<cd>とC<artist>のリレーションシップにアクセスするのに、
 追加のSQLステートメントは必要ありません:
@@ -830,56 +930,88 @@
 
 =head2 列オブジェクトのスキーマを得る
 
+=begin original
+
 It is possible to get a Schema object from a row object like so:
 
+=end original
+
 次のようにして、列のオブジェクトからスキーマを得ることができます:
 
   my $schema = $cd->result_source->schema;
   # use the schema as normal:
   my $artist_rs = $schema->resultset('Artist');
 
+=begin original
+
 This can be useful when you don't want to pass around a Schema object to every
 method.
 
+=end original
+
 全てのメソッドで、スキーマオブジェクトを順に回したくなければ、便利でしょう。
 
 =head2 最後にデータベースにインサートしたプライマリキーの値を取りたい
 
+=begin original
+
 AKA getting last_insert_id
 
+=end original
+
 last_insert_id を取るともいいます。
 
+=begin original
+
 Thanks to the core component PK::Auto, this is straightforward:
 
+=end original
+
 コアコンポーネントのPK::Autoに感謝して、直接:
 
   my $foo = $rs->create(\%blah);
   # do more stuff
   my $id = $foo->id; # foo->my_primary_key_field will also work.
 
+=begin original
+
 If you are not using autoincrementing primary keys, this will probably
 not work, but then you already know the value of the last primary key anyway.
 
+=end original
+
 オートインクリメントのプライマリキーを使っていないのなら、おそらく動きません。
 ですが、その場合は、すでに、プライマリキーの値を知っていることでしょう。
 
 =head2 Stringification
 
+=begin original
+
 Employ the standard stringification technique by using the L<overload>
 module.
 
+=end original
+
 C<overload> モジュールで標準的な文字列化のテクニックを使えます。
 
+=begin original
+
 To make an object stringify itself as a single column, use something
 like this (replace C<name> with the column/method of your choice):
 
+=end original
+
 ひとつのカラムについて、オブジェクト自身を文字列化するには、
 次のようにします。(カラム/メソッドでC<name>を置き換えてください)
 
   use overload '""' => sub { shift->name}, fallback => 1;
 
+=begin original
+
 For more complex stringification, you can use an anonymous subroutine:
 
+=end original
+
 より複雑な文字列化では、無名サブルーチンを使えます:
 
   use overload '""' => sub { $_[0]->name . ", " .
@@ -887,32 +1019,52 @@
 
 =head3 文字列化の例
 
+=begin original
+
 Suppose we have two tables: C<Product> and C<Category>. The table
 specifications are:
 
+=end original
+
 二つのテーブルがあるとします:C<Product>とC<Cateogry>。
 テーブルの定義は次の通り:
 
   Product(id, Description, category)
   Category(id, Description)
 
+=begin original
+
 C<category> is a foreign key into the Category table.
 
+=end original
+
 C<category>はCategoryテーブルの外部キーです。
 
+=begin original
+
 If you have a Product object C<$obj> and write something like
 
+=end original
+
 ProductオブジェクトC<$obj>があり、次のように書いたとすると、
 
   print $obj->category
 
+=begin original
+
 things will not work as expected.
 
+=end original
+
 期待どおりには動きません。
 
+=begin original
+
 To obtain, for example, the category description, you should add this
 method to the class defining the Category table:
 
+=end original
+
 カテゴリの内容を得たいなら、例えば、Categoryテーブルのクラス定義に次の
 メソッドを追加すべきです:
 
@@ -924,8 +1076,12 @@
 
 =head2 find_or_create が見付けたのか、列を作ったのかを知りたい?
 
+=begin original
+
 Just use C<find_or_new> instead, then check C<in_storage>:
 
+=end original
+
 C<find_or_new>を代わりに使ってください。それから、C<in_storage>をチェックします:
 
   my $obj = $rs->find_or_new({ blah => 'blarg' });
@@ -978,10 +1134,16 @@
 
 =head2 DBIx::Classのプロキシクラスを動的にサブクラス化する
 
+=begin original
+
 AKA multi-class object inflation from one table
 
+=end original
+
 AKA 1つのテーブルからマルチクラスのオブジェクトに展開する
 
+=begin original
+
 L<DBIx::Class> classes are proxy classes, therefore some different
 techniques need to be employed for more than basic subclassing.  In
 this example we have a single user table that carries a boolean bit
@@ -992,6 +1154,8 @@
 methods into the Admin class.  There is a cleaner way to accomplish
 this.
 
+=end original
+
 L<DBIx::Class>クラスはプロキシクラスです。そのため、基本的なサブクラス化以上に、
 いくつかの違ったテクニックが必要とされます。
 この例では、管理者用に真偽値を持っているユーザーテーブルがあります。
@@ -1001,6 +1165,8 @@
 理にかないません。Adminクラスに全てのユーザークラスのメソッドをコピー
 することになります。これをするために、よりすっきりした方法があります。
 
+=begin original
+
 Overriding the C<inflate_result> method within the User proxy-class
 gives us the effect we want.  This method is called by
 L<DBIx::Class::ResultSet> when inflating a result from storage.  So we
@@ -1008,6 +1174,8 @@
 bless it if it's an admin object, and then return it.  See the example
 below:
 
+=end original
+
 ユーザーのプロキシクラス内でC<inflate_result>メソッドをオーバーライドすることで、
 望んでいる効果が得られます。このメソッドは、ストレージから結果が展開されるときに、
 L<DBIx::Class::ResultSet>によって呼ばれます。
@@ -1126,10 +1294,14 @@
 
 =head2 高速に結果を得るために、オブジェクトの作成をスキップしたい
 
+=begin original
+
 DBIx::Class is not built for speed, it's built for convenience and
 ease of use, but sometimes you just need to get the data, and skip the
 fancy objects.
 
+=end original
+
 DBIx::Class はスピードのためには作られておらず、DBIx::Classは、
 利便性と使い易さのために作られました。ですが、時には、データをただ
 取得しなければいけないだけの時があり、素敵なオブジェクトはスキップ
@@ -1181,9 +1353,13 @@
 
 AKA Aggregating Data
 
+=begin original
+
 If you want to find the sum of a particular column there are several
 ways, the obvious one is to use search:
 
+=end original
+
 特定のカラムの合計を探したければ、いくつもの方法があります。自明のものとしては、
 searchを使うものです:
 
@@ -1196,10 +1372,14 @@
   );
   my $tc = $rs->first->get_column('total_cost');
 
+=begin original
+
 Or, you can use the L<DBIx::Class::ResultSetColumn>, which gets
 returned when you ask the C<ResultSet> for a column using
 C<get_column>:
 
+=end original
+
 もしくは、L<DBIx::Class::ResultSetColumn>を使うことも出来ます。
 これは、C<ResultSet>でC<get_column>を使ってカラムを取るときに
 返されるものが取れます。
@@ -1207,15 +1387,23 @@
   my $cost = $schema->resultset('Items')->get_column('Cost');
   my $tc = $cost->sum;
 
+=begin original
+
 With this you can also do:
 
+=end original
+
 これを、次のようにできます:
 
   my $minvalue = $cost->min;
   my $maxvalue = $cost->max;
 
+=begin original
+
 Or just iterate through the values of this column only:
 
+=end original
+
 または、このカラムの値のみを通してイテレートします:
 
   while ( my $c = $cost->next ) {
@@ -1226,24 +1414,36 @@
     print $c;
   }
 
+=begin original
+
 C<ResultSetColumn> only has a limited number of built-in functions. If
 you need one that it doesn't have, then you can use the C<func> method
 instead:
 
+=end original
+
 C<ResultSetColumn>は少しだけビルトインの関数があります。
 これにないものが必要なら、C<func>メソッドを代わりに使うことができます:
 
   my $avg = $cost->func('AVERAGE');
 
+=begin original
+
 This will cause the following SQL statement to be run:
 
+=end original
+
 こうすると、下記のSQLステートメントが走ります:
 
   SELECT AVERAGE(Cost) FROM Items me
 
+=begin original
+
 Which will of course only work if your database supports this function.
 See L<DBIx::Class::ResultSetColumn> for more documentation.
 
+=end original
+
 もちろん、使っているデータベースがこの関数をサポートしていなければいけません。
 より詳しくは、L<DBIx::Class::ResultSetColumn>をみてください。
 
@@ -1271,30 +1471,46 @@
 
 =head2 関連するテーブルを検索する
 
+=begin original
+
 Only searches for books named 'Titanic' by the author in $author.
 
+=end original
+
 $autorの著者で、'Titanic'という名前の本だけを検索したい。
 
   my $books_rs = $author->search_related('books', { name => 'Titanic' });
 
 =head2 関連するテーブルのデータを削除する
 
+=begin original
+
 Deletes only the book named Titanic by the author in $author.
 
+=end original
+
 $autorの著者で、Titanicという名前の本だけを削除したい。
 
   $author->delete_related('books', { name => 'Titanic' });
 
 =head2 関係する結果セットの順序付け
 
+=begin original
+
 If you always want a relation to be ordered, you can specify this when you
 create the relationship.
 
+=end original
+
 順序付けられた関係が常にほしいなら、リレーションシップを作るときに、次の指定をできます。
 
+=begin original
+
 To order C<< $book->pages >> by descending page_number, create the relation
 as follows:
 
+=end original
+
 page_numberを降順で、C<< $book->pages >>を並び変えたいなら。次のように
 リレーションを作ります:
 
@@ -1309,8 +1525,12 @@
 
 =head2 Many-to-many のリレーションシップ
 
+=begin original
+
 This is straightforward using L<ManyToMany|DBIx::Class::Relationship/many_to_many>:
 
+=end original
+
 これは、単純にL<ManyToMany|DBIx::Class::Relationship/many_to_many>を使います:
 
   package My::User;
@@ -1482,10 +1702,14 @@
 You need to make sure that your coderef can be invoked multiple times
 without terrible side effects.
 
+=begin original
+
 Nested transactions will work as expected. That is, only the outermost
 transaction will actually issue a commit to the $dbh, and a rollback
 at any level of any transaction will cause the entire nested
 transaction to fail.
+
+=end original
  
 ネストされたトランザクションは期待どおりに動きます。
 一番外側のトランザクションだけが実際に$dbhにコミットを発行します。
@@ -1808,9 +2032,13 @@
 
 =head2 スキーマのバージョニング
 
+=begin original
+
 The following example shows simplistically how you might use DBIx::Class to
 deploy versioned schemas to your customers. The basic process is as follows:
 
+=end original
+
 下記の例では、DBIx::Classを使って、顧客向けにバージョン付きのスキーマをどうやって
 デプロイするかをお見せします。基本的なプロセスは下記のようになります:
 
@@ -1818,59 +2046,99 @@
 
 =item 1.
 
+=begin original
+
 Create a DBIx::Class schema
 
+=end original
+
 DBIx::Classスキーマを作ります
 
 =item 2.
 
+=begin original
+
 Save the schema
 
+=end original
+
 スキーマを保存します
 
 =item 3.
 
+=begin original
+
 Deploy to customers
 
+=end original
+
 顧客にデプロイします
 
 =item 4.
 
+=begin original
+
 Modify schema to change functionality
 
+=end original
+
 スキーマを変更して、 functionality を変更します
 
 =item 5.
 
+=begin original
+
 Deploy update to customers
 
+=end original
+
 顧客に更新をデプロイします
 
 =back
 
+=begin original
+
 B<Create a DBIx::Class schema>
 
+=end original
+
 B<DBIx::Calssスキーマを作る>
 
+=begin original
+
 This can either be done manually, or generated from an existing database as
 described under L</Creating Schemas From An Existing Database>
 
+=end original
+
 これは、手で行うことも、C<既存のデータベースからスキーマを作る>で説明しますが、
 既存のデータベースから生成することもできます。
 
+=begin original
+
 B<Save the schema>
 
+=end original
+
 B<スキーマを保存する>
 
 Call L<DBIx::Class::Schema/create_ddl_dir> as above under L</Creating DDL SQL>.
 
+=begin original
+
 B<Deploy to customers>
 
+=end original
+
 B<顧客にデプロイする>
 
+=begin original
+
 There are several ways you could deploy your schema. These are probably
 beyond the scope of this recipe, but might include:
 
+=end original
+
 スキーマをデプロイするのには複数の方法があります。
 このレシピの範疇を越えそうですが、含めておきます:
 
@@ -1878,29 +2146,45 @@
 
 =item 1.
 
+=begin original
+
 Require customer to apply manually using their RDBMS.
 
+=end original
+
 顧客にRDBMSを使って、手で適用するように求める
 
 =item 2.
 
+=begin original
+
 Package along with your app, making database dump/schema update/tests
 all part of your install.
 
+=end original
+
 アプリケーションと一緒に、データベースのダンプ、スキーマのアップデート、
 インストールの全パートのテストを作るように、パッケージする
 
 =back
 
+=begin original
+
 B<Modify the schema to change functionality>
 
+=end original
+
 B<機能性を変更するために、スキーマを変更する>
 
+=begin original
+
 As your application evolves, it may be necessary to modify your schema
 to change functionality. Once the changes are made to your schema in
 DBIx::Class, export the modified schema and the conversion scripts as
 in L</Creating DDL SQL>.
 
+=end original
+
 アプリケーションが進化するにつれ、機能性を変更するために、スキーマを修正する必要があるでしょう。
 DBIx::Classでスキーマを変更したら、以前のように修正されたスキーマをエクスポートし、
 L</Creating DDL SQL>にあるような変換スクリプトを使います
@@ -1920,27 +2204,39 @@
 
 =head2 生成されたSQLをクォートする
 
+=begin original
+
 If the database contains column names with spaces and/or reserved words, they
 need to be quoted in the SQL queries. This is done using:
 
+=end original
+
 データベースにスペースおよび/または予約語のついたカラム名がある場合、
 SQLクエリ内で、クォートされる必要があります。次のようにします:
 
  $schema->storage->sql_maker->quote_char([ qw/[ ]/] );
  $schema->storage->sql_maker->name_sep('.');
 
+=begin original
+
 The first sets the quote characters. Either a pair of matching
 brackets, or a C<"> or C<'>:
 
+=end original
+
 1行目は、クォート文字をセットしています。ブラケットのペアか、C<">, C<'>です。
 
  $schema->storage->sql_maker->quote_char('"');
 
+=begin original
+
 Check the documentation of your database for the correct quote
 characters to use. C<name_sep> needs to be set to allow the SQL
 generator to put the quotes the correct place, and defaults to
 C<.> if not supplied.
 
+=end original
+
 正しいクォート文字を使うために、データベースのドキュメントをチェックしてください。
 C<name_sep>は、SQLジェネレーターが正しい場所にクォートを置くために、
 セットしなければいけません。デフォルトではC<.>になります。
@@ -2113,11 +2409,15 @@
 
 =head2 クラスベースからスキーマベースセットアップへの簡単な移行
 
+=begin original
+
 You want to start using the schema-based approach to L<DBIx::Class>
 (see L<DBIx::Class::Manual::Intro/Setting it up manually>), but have an
 established class-based setup with lots of existing classes that you don't
 want to move by hand. Try this nifty script instead:
 
+=end original
+
 L<DBIx::Class>へのスキーマベースのアプローチを使いたい(L<SchemaIntro.pod>をみてください)、
 でも、既存の大量のクラスで、従来のクラスベースのセットアップがあり、
 手でそれらを動かしたくはないとします。手で動かす変わりに、下記の気の利いたスクリプトを
@@ -2151,20 +2451,28 @@
 
   print $output;
 
+=begin original
+
 You could use L<Module::Find> to search for all subclasses in the MyDB::*
 namespace, which is currently left as an exercise for the reader.
 
+=end original
+
 L<Module::Find>を使って、MyDB::*名前空間にある全てのサブクラスを探すことが出来ますが、
 これは、今のところ、読者への課題としておきます。
 
 =head1 メソッドのオーバーロード
 
+=begin original
+
 L<DBIx::Class> uses the L<Class::C3> package, which provides for redispatch of
 method calls, useful for things like default values and triggers. You have to
 use calls to C<next::method> to overload methods. More information on using
 L<Class::C3> with L<DBIx::Class> can be found in
 L<DBIx::Class::Manual::Component>.
 
+=end original
+
 L<DBIx::Class>はL<Class::C3>パッケージを使っています。L<Class::C3>はメソッドコールを
 再分岐させるために使われています。メソッドをオーバーロードするために、
 C<next::method>の呼び出しを使わなければいけません。
@@ -2173,9 +2481,13 @@
 
 =head2 列のデフォルトの値を用意する
 
+=begin original
+
 It's as simple as overriding the C<new> method.  Note the use of
 C<next::method>.
 
+=end original
+
 単純に、C<new>メソッドをオーバーライドします。
 C<next::method>の使いかたに注意してください。
 
@@ -2189,27 +2501,39 @@
     return $new;
   }
 
+=begin original
+
 For more information about C<next::method>, look in the L<Class::C3>
 documentation. See also L<DBIx::Class::Manual::Component> for more
 ways to write your own base classes to do this.
 
+=end original
+
 C<next::method>についてより詳しくは、L<Class::C3>のドキュメントを参照してください。
 これをするための、自分自身のベースクラスを書くための、より多くの方法については、
 L<DBIx::CLass::Manual::Component>を見てください。
 
+=begin original
+
 People looking for ways to do "triggers" with DBIx::Class are probably
 just looking for this.
 
+=end original
+
 DBIx::Classで"triggers"をする方法を探している人も、これを探しているでしょう。
 
 =head3 他が変更されたらいつでもあるフィールドを変更する
 
+=begin original
+
 For example, say that you have three columns, C<id>, C<number>, and
 C<squared>.  You would like to make changes to C<number> and have
 C<squared> be automagically set to the value of C<number> squared.
 You can accomplish this by wrapping the C<number> accessor with
 L<Class::Method::Modifiers>:
 
+=end original
+
 例えば、3つのカラムがあったとします。C<id>、C<number>、C<squared>。
 C<number>に変更を加え、C<squared>は自動的に、C<number>の二乗の値を
 セットしたいとします。C<number>アクセサをL<Class::Method::Modifiers>で
@@ -2226,9 +2550,13 @@
     $self->next::method(@_);
   }
 
+=begin original
+
 Note that the hard work is done by the call to C<next::method>, which
 redispatches your call to store_column in the superclass(es).
 
+=end original
+
 C<next::method>を呼び出すことで、大変な仕事がされていることに注意しましょう。
 呼び出しが、(複数の)スーパークラスのstore_columnに再分岐されてます:
 
@@ -2238,10 +2566,14 @@
 
 =head2 関連するオブジェクトを自動的に作る
 
+=begin original
+
 You might have a class C<Artist> which has many C<CD>s.  Further, you
 want to create a C<CD> object every time you insert an C<Artist> object.
 You can accomplish this by overriding C<insert> on your objects:
 
+=end original
+
 多くのC<CD>を持ったC<Artist>クラスがあるとします。
 さらに、C<Artist>オブジェクトをインサートする度毎にC<CD>オブジェクトを
 作りたいとします。これは、オブジェクトのC<insert>をオーバロードすればできます:
@@ -2276,11 +2608,15 @@
 
 B<問題:>
 
+=begin original
+
 Say you have a table "Camera" and want to associate a description
 with each camera. For most cameras, you'll be able to generate the description from
 the other columns. However, in a few special cases you may want to associate a
 custom description with a camera.
 
+=end original
+
  "Camera"テーブルがあったとして、それぞれのカメラについて、
 説明を関連付けたいとします。ほとんどのカメラでは、他のカラムから説明を生成できるでしょう。
 しかし、特別な数ケースでは、カメラのカスタムの説明を関連付けたいとします。
@@ -2289,28 +2625,44 @@
 
 B<解:>
 
+=begin original
+
 In your database schema, define a description field in the "Camera" table that
 can contain text and null values.
 
+=end original
+
 データベーススキーマで、"Camera"にdescriptionフィールドが定義し、
 textとnullの値を含むことをできるようにします。
 
+=begin original
+
 In DBIC, we'll overload the column accessor to provide a sane default if no
 custom description is defined. The accessor will either return or generate the
 description, depending on whether the field is null or not.
 
+=end original
+
 DBICは、カスタムの description が定義されていなければ、
 提供されているまともなデフォルトのカラムアクセサをオーバーロードできます。
 フィールドがnullかnullでないかに依存して、アクセサはdescriptionを返すか生成します。
 
+=begin original
+
 First, in your "Camera" schema class, define the description field as follows:
 
+=end original
+
 まず、"Camera"スキーマクラスで、下記のようにdescriptionフィールドを定義します:
 
   __PACKAGE__->add_columns(description => { accessor => '_description' });
 
+=begin original
+
 Next, we'll define the accessor-wrapper subroutine:
 
+=end original
+
 次に、アクセサラッパーサブルーチンを定義します:
 
   sub description {
@@ -2334,10 +2686,14 @@
 
 =head2 Data::Dumperと、DBIx::Classオブジェクト
 
+=begin original
+
 L<Data::Dumper> can be a very useful tool for debugging, but sometimes it can
 be hard to find the pertinent data in all the data it can generate.
 Specifically, if one naively tries to use it like so,
 
+=end original
+
 L<Data::Dumper> はデバッグにとても便利なツールです。ですが、
 生成された全てのデータの中の、該当のデータを見付けるのが難しい時があります。
 特に、次のように単純に使おうとしたら、
@@ -2347,19 +2703,27 @@
   my $cd = $schema->resultset('CD')->find(1);
   print Dumper($cd);
 
+=begin original
+
 several pages worth of data from the CD object's schema and result source will
 be dumped to the screen. Since usually one is only interested in a few column
 values of the object, this is not very helpful.
 
+=end original
+
 複数ページにわたり、CDオブジェクトのスキーマと結果のソースが、複数
 ページにわたるデータとなってスクリーンにダンプされます。ですが、
 普通はオブジェクトの数カラムの値の1つのみに興味があるので、これでは、
 あまり便利ではありません。
 
+=begin original
+
 Luckily, it is possible to modify the data before L<Data::Dumper> outputs
 it. Simply define a hook that L<Data::Dumper> will call on the object before
 dumping it. For example,
 
+=end original
+
 幸運にも、L<Data::Dumper>が出力する前にデータを加工することが出来ます。
 簡単にフックを定義すると、L<Data::Dumper>がダンプする前に、オブジェクトで
 それを呼び出します。
@@ -2383,12 +2747,16 @@
   print Dumper($cd);
          # dumps $cd without its ResultSource
 
+=begin original
+
 If the structure of your schema is such that there is a common base class for
 all your table classes, simply put a method similar to C<_dumper_hook> in the
 base class and set C<$Data::Dumper::Freezer> to its name and L<Data::Dumper>
 will automagically clean up your data before printing it. See
 L<Data::Dumper/EXAMPLES> for more information.
 
+=end original
+
 スキーマの構造が、全てのテーブルクラスのための共通のベースクラスがあるような
 ものであれば、単純に、ベースクラスに、C<_dumper_hook>と同じようなメソッドを作り、
 C<$Data::Dumper::Freezer>にその名前をセットします。
@@ -2397,12 +2765,16 @@
 
 =head2 プロファイリング
 
+=begin original
+
 When you enable L<DBIx::Class::Storage>'s debugging it prints the SQL
 executed as well as notifications of query completion and transaction
 begin/commit.  If you'd like to profile the SQL you can subclass the
 L<DBIx::Class::Storage::Statistics> class and write your own profiling
 mechanism:
 
+=end original
+
 L<DBIx::Class::Storage>のデバッギングを有効にすれば、
 実行されたSQLだけでなく、クエリの完了や、トランザクションの開始/コミット
 も、出力します。SQLを分析したければ、 L<DBIx::Class::Storage::Statistics>
@@ -2462,10 +2834,14 @@
     });
   }
 
+=begin original
+
 You could then create average, high and low execution times for an SQL
 statement and dig down to see if certain parameters cause aberrant behavior.
 You might want to check out L<DBIx::Class::QueryLog> as well.
 
+=end original
+
 それから、SQLステートメントの平均、最長、最短実行時間を取れますし、ある
 パラメータが異常な振る舞いを引き起こしていれば、掘り下げることも出来るでしょう。
 L<DBIx::Class::QueryLog>もチェックしたいいかもしれません。



perldocjp-cvs メーリングリストの案内
Back to archive index