[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_Feed-Importing.xml
blobf2b9d537fc0f7ad04d917bedba8a9499099b2bc0
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 18274 -->
4 <sect1 id="zend.feed.importing">
5     <title>フィードの読み込み</title>
7     <para>
8         <classname>Zend_Feed</classname> を使用すると、フィードの取得が非常に簡単に行えます。
9         フィードの <acronym>URI</acronym> がわかれば、単に <methodname>Zend_Feed::import()</methodname>
10         メソッドを使用すればよいのです。
11     </para>
13     <programlisting language="php"><![CDATA[
14 $feed = Zend_Feed::import('http://feeds.example.com/feedName');
15 ]]></programlisting>
17     <para>
18         <classname>Zend_Feed</classname> を使用して、ファイルや <acronym>PHP</acronym>
19         文字列変数からフィードを読み込むこともできます。
20     </para>
22     <programlisting language="php"><![CDATA[
23 // テキストファイルからフィードを読み込みます
24 $feedFromFile = Zend_Feed::importFile('feed.xml');
26 // PHP の文字列変数からフィードを読み込みます
27 $feedFromPHP = Zend_Feed::importString($feedString);
28 ]]></programlisting>
30     <para>
31         上のすべての例では、成功した場合に返されるのは
32         <classname>Zend_Feed_Abstract</classname> を実装したクラスのオブジェクトで、
33         フィードの形式によって異なります。もし上のメソッドで <acronym>RSS</acronym> フィードを取得したのなら、
34         返されるオブジェクトは <classname>Zend_Feed_Rss</classname> です。一方、Atom
35         フィードを読み込んだのなら <classname>Zend_Feed_Atom</classname>
36         オブジェクトが返されます。読み込みに失敗したりフィードの形式がおかしかったりした場合は
37         <classname>Zend_Feed_Exception</classname> がスローされます。
38     </para>
40     <sect2 id="zend.feed.importing.custom">
41         <title>独自のフィード</title>
43         <para>
44             <classname>Zend_Feed</classname> を使用すると、独自のフィードを簡単に作成できます。
45             単に、配列を作成してそれを <classname>Zend_Feed</classname> で読み込むだけでいいのです。
46             配列を読み込むには <methodname>Zend_Feed::importArray()</methodname> あるいは
47             <methodname>Zend_Feed::importBuilder()</methodname> を使用します。
48             この場合、<classname>Zend_Feed_Builder_Interface</classname>
49             を実装した独自のデータソースによって配列がその場で算出されます。
50         </para>
52         <sect3 id="zend.feed.importing.custom.importarray">
53             <title>独自の配列の読み込み</title>
55             <programlisting language="php"><![CDATA[
56 // フィードを配列から読み込みます
57 $atomFeedFromArray = Zend_Feed::importArray($array);
59 // この行は、上と同じ意味です。
60 // デフォルトで Zend_Feed_Atom のインスタンスを返します
61 $atomFeedFromArray = Zend_Feed::importArray($array, 'atom');
63 // rss フィードを配列から読み込みます
64 $rssFeedFromArray = Zend_Feed::importArray($array, 'rss');
65 ]]></programlisting>
67             <para>
68                 配列の書式は、次のような構造になっていなければなりません。
69             </para>
71             <programlisting language="php"><![CDATA[
72 array(
73     // 必須
74     'title' => 'フィードのタイトル',
75     'link'  => 'フィードへの正式な url',
77     // 任意
78     'lastUpdate' => '更新日のタイムスタンプ',
79     'published'  => '公開日のタイムスタンプ',
81     // 必須
82     'charset' => 'テキストデータの文字セット',
84     // 任意
85     'description' => 'フィードについての短い説明',
86     'author'      => 'フィードの作者/公開者',
87     'email'       => '作者のメールアドレス',
89     // 任意、atom を使用している場合は無視されます
90     'webmaster' => '技術的な問題の担当者のメールアドレス',
92     // 任意
93     'copyright' => '著作権に関する情報',
94     'image'     => '画像への url',
95     'generator' => '作成したツール',
96     'language'  => 'フィードで使用している言語',
98     // 任意、atom を使用している場合は無視されます
99     'ttl'    => 'フィードを何分間キャッシュするか',
100     'rating' => 'チャネルの PICS レート',
102     // 任意、atom を使用している場合は無視されます
103     // 更新を通知するクラウド
104     'cloud'       => array(
105         // 必須
106         'domain' => 'クラウドのドメイン、たとえば rpc.sys.com',
108         // 任意、デフォルトは 80
109         'port' => '接続するポート',
111         // 必須
112         'path'              => 'クラウドのパス、たとえば /RPC2',
113         'registerProcedure' => 'コールするプロシージャ、たとえば myCloud.rssPleaseNotify',
114         'protocol'          => '使用するプロトコル、たとえば soap や xml-rpc'
115     ),
117     // 任意、atom を使用している場合は無視されます
118     // フィードとともに表示させるテキスト入力ボックス
119     'textInput'   => array(
120         // 必須
121         'title'       => 'テキスト入力欄の Submit ボタンのラベル',
122         'description' => 'テキスト入力欄についての説明',
123         'name'        => 'テキスト入力欄のテキストオブジェクトの名前',
124         'link'        => '入力内容を処理する CGI スクリプトの URL'
125     ),
127     // 任意、atom を使用している場合は無視されます
128     // アグリゲータに対して、特定の時間に処理を飛ばすように伝えるヒント
129     'skipHours' => array(
130         // 最大 24 行までで、値は 0 から 23 までの数値
131         // たとえば 13 (午後一時)
132         '24 時間形式の時間'
133     ),
135     // 任意、atom を使用している場合は無視されます
136     // アグリゲータに対して、特定の日に処理を飛ばすように伝えるヒント
137     'skipDays ' => array(
138         // 最大 7 行まで
139         // 値は Monday、Tuesday、Wednesday、Thursday、Friday、Saturday あるいは Sunday
140         // たとえば Monday
141         'スキップする曜日'
142     ),
144     // 任意、atom を使用している場合は無視されます
145     // Itunes 拡張データ
146     'itunes' => array(
147         // 任意、デフォルトは本体の author の値
148         'author' => 'Artist 列',
150         // 任意、デフォルトは本体の author の値
151         // ポッドキャストのオーナー
152         'owner' => array(
153             'name'  => 'オーナーの名前',
154             'email' => 'オーナーのメールアドレス'
155         ),
157         // 任意、デフォルトは本体の image の値
158         'image' => 'アルバム/ポッドキャストの画像',
160         // 任意、デフォルトは本体の description の値
161         'subtitle' => '短い説明',
162         'summary'  => '長い説明',
164         // 任意
165         'block' => 'エピソードを表示しないようにする (yes|no)',
167         // 必須、Category 列および iTunes Music Store Browse での値
168         'category' => array(
169             // 最大 3 行まで
170             array(
171                 // 必須
172                 'main' => 'メインカテゴリ',
174                 // 任意
175                 'sub'  => 'サブカテゴリ'
176             )
177         ),
179         // 任意
180         'explicit'     => 'ペアレンタルコントロールの警告グラフィック (yes|no|clean)',
181         'keywords'     => '最大 12 件までのキーワードのカンマ区切りリスト',
182         'new-feed-url' => 'iTunes に対して新しいフィード URL の場所を通知するために使用する'
183     ),
185     'entries' => array(
186         array(
187             // 必須
188             'title' => 'フィードエントリのタイトル',
189             'link'  => 'フィードエントリへの url',
191             // 必須、テキストのみで html を含まない
192             'description' => 'フィードエントリの短いバージョン',
194             // 任意
195             'guid' => '記事の id。'
196                    .  '存在しない場合は link の値を使用します',
198             // 任意、html を含めることが可能
199             'content' => '長いバージョン',
201             // 任意
202             'lastUpdate' => '公開日のタイムスタンプ',
203             'comments'   => 'フィードエントリに対するコメントページ',
204             'commentRss' => '関連するコメントへのフィードの url',
206             // 任意、フィードエントリの元のソース
207             'source' => array(
208                 // 必須
209                 'title' => '元ソースのタイトル',
210                 'url'   => '元ソースへの url'
211             ),
213             // 任意、関連付けるカテゴリの一覧
214             'category' => array(
215                 array(
216                     // 必須
217                     'term' => '最初のカテゴリのラベル',
219                     // 任意
220                     'scheme' => 'カテゴリのスキームを表す url'
221                 ),
223                 array(
224                     // 二番目以降のカテゴリのデータ
225                 )
226             ),
228             // 任意、フィードエントリのエンクロージャの一覧
229             'enclosure'    => array(
230                 array(
231                     // 必須
232                     'url' => 'リンクされたエンクロージャの url',
234                     // 任意
235                     'type' => 'エンクロージャの mime タイプ',
236                     'length' => 'リンクされたコンテンツのサイズを表すオクテット数'
237                 ),
239                 array(
240                     // 二番目以降のエンクロージャのデータ
241                 )
242             )
243         ),
245         array(
246             // 二番目のエントリ以降のデータ
247         )
248     )
250 ]]></programlisting>
252             <para>
253                 参考
254             </para>
256             <itemizedlist>
257                 <listitem>
258                     <para>
259                         <acronym>RSS</acronym> 2.0 の仕様: <ulink url="http://blogs.law.harvard.edu/tech/rss">RSS 2.0</ulink>
260                     </para>
261                 </listitem>
263                 <listitem>
264                     <para>
265                         Atom の仕様: <ulink url="http://tools.ietf.org/html/rfc4287">RFC 4287</ulink>
266                     </para>
267                 </listitem>
269                 <listitem>
270                     <para>
271                         <acronym>WFW</acronym> の仕様: <ulink url="http://wellformedweb.org/news/wfw_namespace_elements">Well
272                             Formed Web</ulink>
273                     </para>
274                 </listitem>
276                 <listitem>
277                     <para>
278                         iTunes の仕様: <ulink
279                             url="http://www.apple.com/itunes/store/podcaststechspecs.html">iTunes
280                             Technical Specifications</ulink>
281                     </para>
282                 </listitem>
283             </itemizedlist>
284         </sect3>
286         <sect3 id="zend.feed.importing.custom.importbuilder">
287             <title>独自のデータソースの読み込み</title>
289             <para>
290                 <classname>Zend_Feed_Builder_Interface</classname> を実装した任意のデータソースから、
291                 <classname>Zend_Feed</classname> のインスタンスを作成できます。単に
292                 <methodname>getHeader()</methodname> メソッドおよび <methodname>getEntries()</methodname>
293                 メソッドを実装するだけで、自分で作成したオブジェクトが
294                 <methodname>Zend_Feed::importBuilder()</methodname> で使用できるようになります。
295                 <classname>Zend_Feed_Builder</classname> は、これを単純に実装したものです。
296                 コンストラクタで配列を受け取り、ちょっとした検証を行い、
297                 そして <methodname>importBuilder()</methodname> メソッドで使用できるようにします。
298                 <methodname>getHeader()</methodname> メソッドは <classname>Zend_Feed_Builder_Header</classname>
299                 のインスタンスを返さなければなりません。また <methodname>getEntries()</methodname> は
300                 <classname>Zend_Feed_Builder_Entry</classname> のインスタンスの配列を返さなければなりません。
301             </para>
303             <note>
304                 <para>
305                     <classname>Zend_Feed_Builder</classname> は、使用法を説明するための具体的な実装例です。
306                     実際に使用する際には、
307                     <classname>Zend_Feed_Builder_Interface</classname>
308                     を実装した独自のクラスを作成することを推奨します。
309                 </para>
310             </note>
312             <para>
313                 これが、<methodname>Zend_Feed::importBuilder()</methodname> の使用例です。
314             </para>
316             <programlisting language="php"><![CDATA[
317 // 独自のビルダソースからフィードを読み込みます
318 $atomFeedFromArray =
319     Zend_Feed::importBuilder(new Zend_Feed_Builder($array));
321 // この行は、上と同じ意味です。
322 // デフォルトで Zend_Feed_Atom のインスタンスを返します
323 $atomFeedFromArray =
324     Zend_Feed::importBuilder(new Zend_Feed_Builder($array), 'atom');
326 // 独自のビルダ配列から rss フィードを読み込みます
327 $rssFeedFromArray =
328     Zend_Feed::importBuilder(new Zend_Feed_Builder($array), 'rss');
329 ]]></programlisting>
331         </sect3>
333         <sect3 id="zend.feed.importing.custom.dump">
335             <title>フィードの内容の出力</title>
337             <para>
338                 <classname>Zend_Feed_Abstract</classname> インスタンスの内容を出力するには、
339                 <code>send()</code> メソッドあるいは <code>saveXml()</code> メソッドを使用します。
340             </para>
342             <programlisting language="php"><![CDATA[
343 assert($feed instanceof Zend_Feed_Abstract);
345 // フィードを標準出力に出力します
346 print $feed->saveXML();
348 // http ヘッダを送信し、フィードを出力します
349 $feed->send();
350 ]]></programlisting>
351         </sect3>
352     </sect2>
353 </sect1>
354 <!--
355 vim:se ts=4 sw=4 et: