<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 16443 -->
<sect1 id="zend.service.slideshare">

    <title>導入</title>

    <para>
        <classname>Zend_Service_SlideShare</classname> コンポーネントは、
        <ulink url="http://www.slideshare.net/">slideshare.net</ulink>
        ウェブサービスを操作するためのものです。
        これは、スライドショーをオンラインで公開するためのサービスです。
        このコンポーネントを使用すると、
        公開されているスライドをウェブサイトに埋め込んだり
        新しいスライドショーを自分のアカウントにアップロードしたりすることができます。
    </para>

    <sect2 id="zend.service.slideshare.basicusage">

        <title>Zend_Service_SlideShare の使い方</title>

        <para>
            <classname>Zend_Service_SlideShare</classname> コンポーネントを使うには、まず
            slideshare.net のアカウントを作成して (詳細は
            <ulink url="http://www.slideshare.net/developers/">こちら</ulink> を参照ください)
            API キーやユーザ名、パスワード、そして共有する秘密の値を取得しなければなりません。
            <classname>Zend_Service_SlideShare</classname> コンポーネントを使用するには、これらすべてが必要です。
        </para>

        <para>
            アカウントを取得したら、<classname>Zend_Service_SlideShare</classname>
            を使い始めることができます。<classname>Zend_Service_SlideShare</classname>
            オブジェクトのインスタンスを作成し、それぞれの値を次のように指定しましょう。
        </para>

        <programlisting language="php"><![CDATA[
// このコンポーネントの新しいインスタンスを作成します
$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');
]]></programlisting>

    </sect2>

    <sect2 id="zend.service.slideshare.slideshowobj">

        <title>SlideShow オブジェクト</title>

        <para>
            <classname>Zend_Service_SlideShare</classname> コンポーネントのすべてのスライドショーは
            <classname>Zend_Service_SlideShare_SlideShow</classname> オブジェクトで表されます
            (取得する際も新規スライドショーのアップロードの際も同じです)。
            このクラスの構造を擬似コードで表すと次のようになります。
        </para>

        <programlisting language="php"><![CDATA[
class Zend_Service_SlideShare_SlideShow {

    /**
     * スライドショーの場所を取得します
     */
    public function getLocation() {
        return $this->_location;
    }

    /**
     * スライドショーのトランスクリプトを取得します
     */
    public function getTranscript() {
        return $this->_transcript;
    }

    /**
     * スライドショーにタグを追加します
     */
    public function addTag($tag) {
        $this->_tags[] = (string)$tag;
        return $this;
    }

    /**
     * スライドショーにタグを設定します
     */
    public function setTags(Array $tags) {
        $this->_tags = $tags;
        return $this;
    }

    /**
     * スライドショーに関連付けられているすべてのタグを取得します
     */
    public function getTags() {
        return $this->_tags;
    }

    /**
     * ローカルファイルシステム上でのスライドショーのファイル名を設定します
     * (新規スライドショーのアップロード用)
     */
    public function setFilename($file) {
        $this->_slideShowFilename = (string)$file;
        return $this;
    }

    /**
     * アップロードしようとしているスライドショーの
     * ローカルファイルシステム上でのファイル名を取得します
     */
    public function getFilename() {
        return $this->_slideShowFilename;
    }

    /**
     * スライドショーの ID を取得します
     */
    public function getId() {
        return $this->_slideShowId;
    }

    /**
     * スライドショーの HTML 埋め込み用のコードを取得します
     */
    public function getEmbedCode() {
        return $this->_embedCode;
    }

    /**
     * スライドショーのサムネイルの URL を取得します
     */
    public function getThumbnailUrl() {
        return $this->_thumbnailUrl;
    }

    /**
     * スライドショーのタイトルを設定します
     */
    public function setTitle($title) {
        $this->_title = (string)$title;
        return $this;
    }

    /**
     * スライドショーのタイトルを取得します
     */
    public function getTitle() {
        return $this->_title;
    }

    /**
     * スライドショーの説明を設定します
     */
    public function setDescription($desc) {
        $this->_description = (string)$desc;
        return $this;
    }

    /**
     * スライドショーの説明を取得します
     */
    public function getDescription() {
        return $this->_description;
    }

    /**
     * サーバ上でのスライドショーの状態を表す数値を取得します
     */
    public function getStatus() {
        return $this->_status;
    }

    /**
     * サーバ上でのスライドショーの状態を表す説明テキストを取得します
     */
    public function getStatusDescription() {
        return $this->_statusDescription;
    }

    /**
     * スライドショーのパーマネントリンクを取得します
     */
    public function getPermaLink() {
        return $this->_permalink;
    }

    /**
     * スライドショーの閲覧回数を取得します
     */
    public function getNumViews() {
        return $this->_numViews;
    }
}
]]></programlisting>

        <note>

            <para>
                上の擬似クラスは、開発者がどんなメソッドを使えるのかを示すためだけのものです。
                それ以外に、内部で用いられているメソッドもあります。
            </para>

        </note>

        <para>
            <classname>Zend_Service_SlideShare</classname> コンポーネントを使う際には、
            このデータクラスを使用してスライドショーの閲覧や追加を行うことになります。
        </para>

    </sect2>

    <sect2 id="zend.service.slideshare.getslideshow">

        <title>単一のスライドショーの取得</title>

        <para>
            <classname>Zend_Service_SlideShare</classname> コンポーネントのもっともシンプルな使用法は、
            slideshare.net が提供するスライドショー ID を指定して単一のスライドショーを取得することです。
            これは、<classname>Zend_Service_SlideShare</classname> オブジェクトの
            <code>getSlideShow()</code> メソッドで行います。
            そして、返された <classname>Zend_Service_SlideShare_SlideShow</classname>
            オブジェクトをこのように使用します。
        </para>

        <programlisting language="php"><![CDATA[
// このコンポーネントの新しいインスタンスを作成します
$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');

$slideshow = $ss->getSlideShow(123456);

print "スライドショーのタイトル: {$slideshow->getTitle()}<br/>\n";
print "閲覧回数: {$slideshow->getNumViews()}<br/>\n";
]]></programlisting>

    </sect2>

    <sect2 id="zend.service.slideshare.getslideshowlist">

        <title>スライドショーのグループの取得</title>

        <para>
            取得したいスライドショーの ID がわからない場合は、
            以下の 3 つのうちのいずれかの方法でスライドショーのグループを取得します。
        </para>

        <itemizedlist mark="opencircle">
            <listitem>
                <para>
                    <emphasis>特定のアカウントでアップロードしたスライドショー</emphasis>
                </para>

                <para>
                    特定のアカウントのスライドショーを取得するには
                    <code>getSlideShowsByUsername()</code> メソッドを使用します。
                    スライドショーを取得したいユーザ名を指定します。
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>特定のタグを含むスライドショー</emphasis>
                </para>

                <para>
                    特定の (ひとつあるいは複数の) タグを含むスライドショーを取得するには
                    <code>getSlideShowsByTag</code> メソッドを使用します。
                    スライドショーを取得したい (ひとつあるいは複数の) タグを指定します。
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>特定のグループに属するスライドショー</emphasis>
                </para>

                <para>
                    特定のグループに属するスライドショーを取得するには
                    <code>getSlideShowsByGroup</code> メソッドを使用します。
                    取得したいスライドショーが属しているグループの名前を指定します。
                </para>
            </listitem>
        </itemizedlist>

        <para>
            これらの方法で複数のスライドショーを取得するやりかたは、どれもよく似ています。
            各メソッドの使用例を以下に示します。
        </para>

        <programlisting language="php"><![CDATA[
// このコンポーネントの新しいインスタンスを作成します
$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');

$starting_offset = 0;
$limit = 10;

// それぞれの方法で最初の 10 件を取得します
$ss_user = $ss->getSlideShowsByUser('username', $starting_offset, $limit);
$ss_tags = $ss->getSlideShowsByTag('zend', $starting_offset, $limit);
$ss_group = $ss->getSlideShowsByGroup('mygroup', $starting_offset, $limit);

// 個々のスライドショーを処理します
foreach($ss_user as $slideshow) {
   print "スライドショーのタイトル: {$slideshow->getTitle}<br/>\n";
}
]]></programlisting>

    </sect2>

    <sect2 id="zend.service.slideshare.caching">

        <title>Zend_Service_SlideShare のキャッシュ処理のポリシー</title>

        <para>
            デフォルトでは、<classname>Zend_Service_SlideShare</classname>
            はウェブサービスに対する任意のリクエストを自動的にキャッシュします。
            キャッシュは、ファイルシステム上 (デフォルトのパスは <code>/tmp</code>)
            に 12 時間保存されます。この振る舞いを変更したい場合は、独自の
            <xref linkend="zend.cache" /> オブジェクトを作成してそれを
            <code>setCacheObject</code> メソッドでこのように指定します。
        </para>

        <programlisting language="php"><![CDATA[
$frontendOptions = array(
                        'lifetime' => 7200,
                        'automatic_serialization' => true);
$backendOptions  = array(
                        'cache_dir' => '/webtmp/');

$cache = Zend_Cache::factory('Core',
                             'File',
                             $frontendOptions,
                             $backendOptions);

$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');
$ss->setCacheObject($cache);

$ss_user = $ss->getSlideShowsByUser('username', $starting_offset, $limit);
]]></programlisting>

    </sect2>

    <sect2 id="zend.service.slideshare.httpclient">

        <title>HTTP クライアントの振る舞いの変更</title>

        <para>
            何らかの理由でウェブサービスにリクエストを送る
            HTTP クライアントの振る舞いを変更したくなったとしましょう。
            そんな場合は、独自の <classname>Zend_Http_Client</classname> オブジェクトのインスタンスを作成します
            (<xref linkend="zend.http" /> を参照ください)。これは、
            たとえば接続のタイムアウト秒数をデフォルトから変更したい場合などに便利です。
        </para>

        <programlisting language="php"><![CDATA[
$client = new Zend_Http_Client();
$client->setConfig(array('timeout' => 5));

$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');
$ss->setHttpClient($client);
$ss_user = $ss->getSlideShowsByUser('username', $starting_offset, $limit);
]]></programlisting>

    </sect2>

</sect1>
