<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>ECWorks Blog &#187; ライブラリ</title>
	<atom:link href="http://blog.ecworks.jp/archives/tag/%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.ecworks.jp</link>
	<description>CakePHPを中心としたサイト開発情報をメインに公開。新しもの好きなので時々製品レポートなんかも。</description>
	<lastBuildDate>Sun, 22 Aug 2010 01:28:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/tag/%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa/feed" />
		<item>
		<title>【CakePHP】「Media Plugin」の概要と構成</title>
		<link>http://blog.ecworks.jp/archives/780</link>
		<comments>http://blog.ecworks.jp/archives/780#comments</comments>
		<pubDate>Tue, 14 Jul 2009 23:09:49 +0000</pubDate>
		<dc:creator>MASA-P</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Media Plugin]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[ライブラリ]]></category>

		<guid isPermaLink="false">http://blog.ecworks.jp/?p=780</guid>
		<description><![CDATA[先の記事で「Media Plugin for CakePHP」のセッションスライドを紹介させていただいたのですが、実際にソースを調べたりして分かったことをまとめてみることにしました。

まずは序章ということで、概要とプラグインの構成を紹介させていただきます。
そして、実際に利用する手順などを後の記事で紹介させていただく予定です。]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.ecworks.jp/wp-content/uploads/2009/02/cake-logo.jpg"><img class="size-full wp-image-336 alignleft" style="margin: 5px;" title="cake-logo" src="http://blog.ecworks.jp/wp-content/uploads/2009/02/cake-logo.jpg" alt="cake-logo" width="180" height="180" /></a>先の記事で「Media Plugin for CakePHP」のセッションスライドを紹介させていただいたのですが、実際にソースを調べたりして分かったことをまとめてみることにしました。</p>
<p>まずは序章ということで、概要とプラグインの構成を紹介させていただきます。<br />
そして、実際に利用する手順などを後の記事で紹介させていただく予定です。</p>
<h2 style="clear: both;">概要</h2>
<p>｢Media Plugin for CakePHP｣は、画像や動画などのいわゆる「メディアファイル」を始めとした、ファイルアップロード及びそれらの管理を簡単かつ安全にに行うためのプログラム群です。プラグイン形式で提供されているため、プログラム管理がしやすく、またこれらを部品として利用することが出来るため、カスタマイズ性に優れています。</p>
<h2>構成</h2>
<p>Media Pluginは、大きく分けて次のパートから構成されています。</p>
<p><strong>■Transfer Behavior</strong><br />
ファイルを「外部から持ってくる」ためのビヘイビアで、「ファイルバリデーション」と指定ディレクトリへの「ファイル転送」を担当します。<br />
「ファイルバリデーション」は、一般的な「容量」「ファイル形式」といったチェックだけでなく、不正ファイルを検査するための強力なチェック機能を提供します。MIME Typeと拡張子、ファイル内容を相互的にチェックすることで、そのファイルが信頼性あるものかを調べます。また、画像サイズや送信元の場所（ディレクトリやURL)、パーミッションなども調べます。<br />
「ファイル転送」は、実際にファイルを読み込んで指定ディレクトリへ保存します。転送はには、PHPのアップロード関数ではなく、Cake標準のソケット機能を使用しているようです。</p>
<p><strong>■Media Behavior<br />
</strong>Transfer Behaviorはファイルそのものを「持ってくる」動作を担当していますが、Media Behaviorではそれ以降の「持ってきたファイルの取り扱い」を担当します。<br />
中でも興味深いのは「バージョン」という概念です。一つのアップロードファイルからいろいろな加工を行い、それを一元管理する機能を有しています。例えば、画像ファイルを1つアップロードしただけで大中小の画像を作り、それを実際のサイトで扱うことが出来ます。画像だけでなく、他のファイルでも面白い機能を持っています。例えば、JavaScriptやCSSでは、ソースの中身を圧縮して難読化することも出来たり、ビデオ映像からサムネイル画像を作りだすことも出来るようです(未確認)。</p>
<p><strong>■Polymorphic Behavior</strong>(2009/07/18追記)<br />
このビヘイビアは、メディア関連に限らず、いろいろなモデルに適用できる大変に便利なものです。<br />
取り付けたモデルのフィールドに、関連づけたいモデルとそのIDを用意すると、自動でその記述モデルのアソシエーションを設定し、データを引っ張ってきて検索結果に取り付けます。<br />
唯一残念な点は、このビヘイビアは「belongsTo」として他のモデルを取ってくる点です。つまり、１つのデータしか関連づけできません。このビヘイビアは、拡張してhasManyでも適用できるようにすると、更に便利なビヘイビアになりそうです。<br />
一応、このビヘイビアを使う問題点もあります。データレベルで付け替えが出来てしまうため、セキュリティ的に不安な点があります(ぶっちゃけ、Userモデルを引っ張ってくる悪用が出来てしまう)。柔軟に対処するために、このビヘイビアで入手したデータを丸ごと表示するような利用は危険ですが、データを限定して利用するような方法なら便利に活用できることでしょう。</p>
<p><span style="color: #ff0000;">[200/907/19追記]<br />
このビヘイビアが「belongsTo」である理由は、純粋に「Attachmentモデル(もしくはそれに相当するモデル)から動的に親モデルをたどるため」に作ったようで、まあつまり汎用的な設計ではないのでしょう。<br />
</span></p>
<p><strong>■Attachment Model</strong><br />
上記3つのビヘイビアの導入をテンプレート化したモデルです。<br />
特にこだわりが無いのであれば、このモデルを利用すれば簡単にファイル管理が行えます。<br />
もしくは、このモデルを加工して自分のモデルを作成するのも良いかもしれません。</p>
<p><strong>■Medium Helper<br />
</strong>管理しているファイルを実際にサイト上で表示したりリンクを生成したりするヘルパーです。<br />
例えばフラッシュやムービー、オーディオ、PDF等の埋め込みHTMLの生成を行ったり、リンクをつけたりすることが出来ます。<br />
また、「バージョン」管理をしている場合でも適切な画像を呼び出します。</p>
<p><strong>■Medium</strong><br />
メディアファイル管理の実体要素、オブジェクトクラスです。実際には、各ファイルタイプ別にオブジェクトクラスがあります。</p>
<p><strong>■Adapter</strong><br />
各ファイルの固有の操作を統一化して扱うためのカプセルで、datasourceのような働きをします。例えばgdを用いて物理的に画像情報を入手したり、画像のフィッティングを行ったりするのはアダプター(gdアダプター)で行います。</p>
<p><strong>■その他</strong><br />
その他、ファイルの格納場所を生成・管理するするコンソールがあります。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ecworks.jp/archives/780/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/780" />
	</item>
		<item>
		<title>【Ktai】重要度の高いバグのお知らせと対処方法</title>
		<link>http://blog.ecworks.jp/archives/448</link>
		<comments>http://blog.ecworks.jp/archives/448#comments</comments>
		<pubDate>Tue, 24 Mar 2009 19:24:17 +0000</pubDate>
		<dc:creator>MASA-P</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[携帯ライブラリ]]></category>
		<category><![CDATA[ライブラリ]]></category>

		<guid isPermaLink="false">http://blog.ecworks.jp/?p=448</guid>
		<description><![CDATA[バージョンアップ版をなかなか更新できなくて申し訳ございません。
仕事の方が緊急で忙しくなってしまい、現在また徹夜です(大汗
本日がとりあえずの山場になりそうなので、もう少しお待ちください。
お待ちいただく間に、一つ重要度の高いバグを見つけました。
ご報告と共に、対処方法をお知らせいたします。]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-433" style="margin: 5px;" title="icon_ktai" src="http://blog.ecworks.jp/wp-content/uploads/2009/03/icon_ktai.png" alt="icon_ktai" width="180" height="180" />バージョンアップ版をなかなか更新できなくて申し訳ございません。仕事の方が緊急で忙しくなってしまい、現在また徹夜です(大汗)。本日がとりあえずの山場になりそうなので、もう少しお待ちください。</p>
<p>お待ちいただく間に、一つ重要度の高いバグを見つけました。ご報告と共に、対処方法をお知らせいたします。</p>
<p style="clear: both;"><strong>【現象】</strong><br />
リダイレクトを行うと、予定していた場所に飛ばない、もしくはループする。</p>
<p><strong>【理由】</strong><br />
Ktaiコンポーネントのextendsが「Object」ではなく「Component」になっていたため</p>
<p><strong>【対処方法】</strong><br />
１：extendsを修正<br />
<code>class KtaiComponent extends Component {</code></p>
<p>↓↓↓</p>
<p><code>class KtaiComponent extends Object {</code></p>
<p>２：initialize()とshutdown()内に含まれている「parent::～」を削除</p>
<p>以上で正常動作をすると思います。<br />
完全に私のポカミスです。<br />
申し訳ございません。</p>
<p>kenji0302さんが<a href="http://blog.firstlife.jp/2009/03/23/%E6%97%A9%E9%80%9F/" target="_blank">指摘されていました</a>が、上記の対処が正式だと思います。<br />
いつもありがとうございます。</p>
<p>なお、かる～い進捗ですが、「UTF-8絵文字の報告終了後の文字化け」は、どうやらサイト側の問題でした。文字エンコーディングの設定がされていない部分を見つけましたので、おそらくSJISコードをUTF-8内で表示しているだけだと思います。一応念のために対策をしたコードが用意できましたが、まだサイト等には上げていません。<br />
そしてmailtoの不具合ですが、こちらはまだ未解決です。仕事が忙しくて実際に検証が出来ていません。<br />
他には特に問題が出ていなそうなので、こちらの方を解決した後にとりあえず公開しようかと考えています。一つ厄介な問題を見つけたのですが、こちらは根が深くて考え中が、実害はないとは思います。簡単に書くと「直接emoji()で作った絵文字をさらに全体変換してしまう…つまり二重変換の可能性が出ているのですが、docomoとAUはかぶっているコードがないので、とりあえずは大丈夫ではないか…という感じですね。</p>
<p>げーもう４時過ぎか…<br />
とりあえず仕事に戻ります。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ecworks.jp/archives/448/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/448" />
	</item>
		<item>
		<title>【Ktai】Ktai Libraryが海外サイトでも捕捉されたみたいです…が</title>
		<link>http://blog.ecworks.jp/archives/418</link>
		<comments>http://blog.ecworks.jp/archives/418#comments</comments>
		<pubDate>Mon, 16 Mar 2009 05:13:33 +0000</pubDate>
		<dc:creator>MASA-P</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[携帯ライブラリ]]></category>
		<category><![CDATA[ライブラリ]]></category>
		<category><![CDATA[携帯]]></category>
		<category><![CDATA[紹介記事]]></category>

		<guid isPermaLink="false">http://blog.ecworks.jp/?p=418</guid>
		<description><![CDATA[Ktai Libraryですが、なんか知らない間に海外サイトに取り上げられたようです。
何かいろいろと書かれているみたいですが…(大汗)]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-433" style="margin: 5px;" title="icon_ktai" src="http://blog.ecworks.jp/wp-content/uploads/2009/03/icon_ktai.png" alt="icon_ktai" width="180" height="180" />Ktai Libraryですが、なんか知らない間に海外サイトに取り上げられたようです。</p>
<p>▼Japanese Mobile Support for Cake PHP<br />
<a href="http://blog.mobalean.com/2009/03/16/japanese-mobile-support-for-cake-php" target="_blank">http://blog.mobalean.com/2009/03/16/japanese-mobile-support-for-cake-php</a></p>
<p>何かいろいろと書かれているみたいですが…(大汗)<br />
「オブジェクト指向に従っていない」「ヘルパー・コンポーネントで同じ関数を複製している(Railsで言うFowardable moduleのようになっていない)」みたいなことが書かれていますが、言い分は何となく分かるのですが、それをあえてやっていない理由をくみ取っていただけなかったのは残念だなぁ…<br />
「キャリアコード」云々と言っている部分は意味が良く分からなかったんですが、要は「もっとシンプルに書ける」って事でしょうか。まあ「キャリアコード」というのは後から書いた部分なので、無駄があるのは承知してますので、今後の対応ですかね。</p>
<p>ちょっと大人げなく反論してみました(^^;;;<br />
というか、海外でダウンロードされることはまったく予期していなくて、しかも国内よりも早く、具体的にソースの感想が述べられていたのは驚きでした。そういった意味で感謝。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ecworks.jp/archives/418/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/418" />
	</item>
		<item>
		<title>【Ktai】「Ktai Library」のちょっとしたTipsとか</title>
		<link>http://blog.ecworks.jp/archives/409</link>
		<comments>http://blog.ecworks.jp/archives/409#comments</comments>
		<pubDate>Mon, 16 Mar 2009 02:54:02 +0000</pubDate>
		<dc:creator>MASA-P</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[携帯ライブラリ]]></category>
		<category><![CDATA[ライブラリ]]></category>
		<category><![CDATA[予定]]></category>
		<category><![CDATA[携帯]]></category>
		<category><![CDATA[文字コード]]></category>
		<category><![CDATA[機種判別]]></category>

		<guid isPermaLink="false">http://blog.ecworks.jp/?p=409</guid>
		<description><![CDATA[とりあえず版ということで、Ktai Library を公開したわけですが、思った以上に反響があり嬉しく思います。特に ktai.org さんに取り上げていただいたことでかなりのアクセス数があります(現在進行形です)。本当にありがとうございます。CakePHPフォーラムの方は、後で自作自演しようかと思いましたが、newsに先を越されてしまいました(笑)。こちらもありがとうございます。
とにかく急いで上げたためにいろいろと落ち度がありますが、そのフォローも含めていくつか情報を書きたいと思います。]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-433" style="margin: 5px;" title="icon_ktai" src="http://blog.ecworks.jp/wp-content/uploads/2009/03/icon_ktai.png" alt="icon_ktai" width="180" height="180" />とりあえず版ということで、Ktai Library を公開したわけですが、思った以上に反響があり嬉しく思います。特に <a href="http://ke-tai.org/" target="_blank">ktai.org</a> さんに取り上げていただいたことでかなりのアクセス数があります(現在進行形です)。本当にありがとうございます。<a href="http://cakephp.jp/modules/newbb/" target="_blank">CakePHPフォーラム</a>の方は、後で自作自演しようかと思いましたが、newsに先を越されてしまいました(笑)。こちらもありがとうございます。</p>
<p>とにかく急いで上げたためにいろいろと落ち度がありますが、そのフォローも含めていくつか情報を書きたいと思います。</p>
<h3 style="clear: both;">■UTF-8で製作したページを無理矢理利用する方法</h3>
<p>Ktai Libraryでは、今のところUTF-8での利用を推奨しておりませんが、（たぶん)使えないわけではないと思いますので、一応やり方を記載しておきます。試していないので、出来ない場合はご容赦を。</p>
<p>CakePHP1.1等古いバージョンでは、afterRender()内でob_get_clean()でアウトプットをゲットしてコンバートする手法が一般的ですが、最近のバージョンはこのやり方では出来ません。何故かというと、バッファにはまだ書かれていなくて、コントローラ内の$this-&gt;output内に格納されているからです。なので、afterRender()内で、$this-&gt;outputを、mb_convert_encoding()でコンバートします。</p>
<p>しかし、これだけでは「絵文字が化けてしまう」問題が発生する場合があります。化けるのは「文字コードを直接指定した場合」です。つまり数値指定(&amp;#xxxxx;)の場合は大丈夫なはずので、これを利用すれば実現が可能だと思います(数値はShiftJISのもので)。ちなみに、Ktai Libraryを通すと、これらは全て文字コード等に変換されます。</p>
<h3>■「機種判別」について</h3>
<p>公開サイト内で「機種判別」と書いてしまって大変に申し訳なかったのですが、現時点で「キャリア判別」は出来ますが、「機種を特定する」ことはできません。<br />
これについては、現在機種情報を調べる仕組みを準備しております。機種(AUはデバイスID)だけでなく、画面サイズなどの情報も入手出来ます。Ver0.0.2で搭載予定です。データは既に準備しましたので、あとは関数部作成と他の機能の作成待ちです。おかげでファイルサイズは５倍になりました(笑)。</p>
<h3>■次バージョンの話</h3>
<p>上記の機種判別の件もそうですが、次バージョン(Ver0.0.2)は次の機能がつく予定です。</p>
<ul>
<li>機種情報の入手(上記の通り)</li>
<li>PHS対応</li>
<li>機種毎の表示画像のフィッティング</li>
</ul>
<p>上から２つは確実ですが、最後のはもしかしたら落ちるかもしれません。<br />
PHSとEMOBILEについては一部情報が不正確かも知れません(正確なデータが公開されていないため)。</p>
<h3>■その他(言い訳とか)</h3>
<p>なんか「Ktai Library」をインストールさえすれば、携帯サイトが出来てしまう…と思われがちなのですが、言い訳しますと、あくまでも「サポート」はしますが、実際には他にも自前でケアしないと出来ないと思います。例えばiMODEでは未だにPNG画像は表示できませんので、自前でファイルを選択するような記述は必要ですし、ページ構成の都合上、実質PCサイトとの振り分けは必要だと思います。<br />
本ライブラリは、現時点では「毎度書いていた携帯関連の関数をライブラリ化した」程度のものですので、そのつもりでいただけると。もし「こんなのがあったら」というようなものは、コメント欄などで書いていただければ、頑張ってみたいと思います。</p>
<p>なお、「iMODE時のセッション対応」について、本来なら「これこそ」ライブラリーに搭載するべきなのですが、環境に依存する部分もあり、ライブラリとしての提供は少々難しいかと感じます。うまいやり方が思いついたら搭載します(もしくは、その部分部分をライブラリ化するのは有りなんじゃないかとも考えています)。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ecworks.jp/archives/409/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/409" />
	</item>
		<item>
		<title>【Ktai】携帯ライブラリ for CakePHP1.2公開</title>
		<link>http://blog.ecworks.jp/archives/396</link>
		<comments>http://blog.ecworks.jp/archives/396#comments</comments>
		<pubDate>Thu, 12 Mar 2009 03:42:25 +0000</pubDate>
		<dc:creator>MASA-P</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[携帯ライブラリ]]></category>
		<category><![CDATA[ライブラリ]]></category>
		<category><![CDATA[携帯]]></category>

		<guid isPermaLink="false">http://blog.ecworks.jp/?p=396</guid>
		<description><![CDATA[お待たせしました！
CakePHP1.2用の携帯ライブラリを公開いたします。]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-433" style="margin: 5px;" title="icon_ktai" src="http://blog.ecworks.jp/wp-content/uploads/2009/03/icon_ktai.png" alt="icon_ktai" width="180" height="180" />お待たせしました！<br />
CakePHP1.2用の携帯ライブラリを公開いたします。<br />
上記のリンクをたどっていただくか、<a href="http://blog.ecworks.jp/ktai" target="_self">こちら</a> からどうぞ！</p>
<p style="clear: both;">昨日公開のつもりでいましたが、アーカイブ一式を自宅に忘れてしまい、昼アップが出来ませんでした。しかし、ソースの手直しできる時間が出来たため、昨晩改良を行い、コンポーネントも作成したりと若干パワーアップしました。<br />
まあでも、現時点でぶっちゃけ機種判定・絵文字・メアドチェックの3種類しかできないのですが、少しずつバージョンアップしていきますので、宜しくお願いいたします。</p>
<p>ちなみに、開発中にいくつか有用なTipsが見つかりましたので、後日ご紹介したいと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ecworks.jp/archives/396/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/396" />
	</item>
		<item>
		<title>【ktai】携帯ライブラリ＆CakePHP1.2用ヘルパーの公開(予定)</title>
		<link>http://blog.ecworks.jp/archives/390</link>
		<comments>http://blog.ecworks.jp/archives/390#comments</comments>
		<pubDate>Wed, 11 Mar 2009 07:35:35 +0000</pubDate>
		<dc:creator>MASA-P</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[携帯ライブラリ]]></category>
		<category><![CDATA[ライブラリ]]></category>
		<category><![CDATA[携帯]]></category>

		<guid isPermaLink="false">http://blog.ecworks.jp/?p=390</guid>
		<description><![CDATA[サイトの方が準備できてしまったので、先にサイトを公開いたします。
表題の通り、CakePHP用の携帯サイトヘルパーです。]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-433" style="margin: 5px;" title="icon_ktai" src="http://blog.ecworks.jp/wp-content/uploads/2009/03/icon_ktai.png" alt="icon_ktai" width="180" height="180" />サイトの方が準備できてしまったので、先にサイトを公開いたします。表題の通り、CakePHP用の携帯サイトヘルパーです。</p>
<p>詳しくは上記メニューをたどっていただくか、 <a href="http://blog.ecworks.jp/ktai">こちら</a> をご覧ください。<br />
ダウンロードは明日(12日)昼までには出来るようにします。</p>
<p><strong>【追記】<br />
</strong>公開しました。上のリンクか <a href="http://blog.ecworks.jp/ktai" target="_self">こちら</a> からどうぞ！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ecworks.jp/archives/390/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/390" />
	</item>
	</channel>
</rss>
