<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10japanesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://dxd8.com/wp-atom.php">
	<title type="text">(DxD)∞</title>
	<subtitle type="text">Day by Day Infinity - Webな日々(HTML/XHTML/CSS/JavaScript/PHP/CMS)</subtitle>

	<updated>2010-07-23T16:23:44Z</updated>
	<generator uri="http://wordpress.org/" version="2.9.2">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://dxd8.com" />
	<id>http://dxd8.com/feed/atom/</id>
	

			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/dxd8" /><feedburner:info uri="dxd8" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><logo>http://dxd8.com/wp-content/themes/dxd8.com/image/logo.png</logo><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fdxd8" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://add.my.yahoo.co.jp/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fdxd8" src="http://img.yahoo.co.jp/i/jp/my/addtomy1.gif">myyahoo???</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/dxd8" src="http://www.bloglines.com/images/sub_modern11.gif">Bloglines???</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fdxd8" src="http://buttons.googlesyndication.com/fusion/add.gif">Google???</feedburner:feedFlare><feedburner:feedFlare href="http://r.hatena.ne.jp/append/http://feeds.feedburner.com/dxd8" src="http://r.hatena.ne.jp/images/addto_w.gif">???RSS???</feedburner:feedFlare><feedburner:feedFlare href="http://reader.livedoor.com/subscribe/http://feeds.feedburner.com/dxd8" src="http://image.reader.livedoor.com/img/banner/91_17_1.gif">Livedoor???????</feedburner:feedFlare><feedburner:feedFlare href="http://reader.goo.ne.jp/web/bookmarklet.html?,,http%3A%2F%2Ffeeds.feedburner.com%2Fdxd8" src="http://reader.goo.ne.jp/web/img/addwebrss.gif">goo RSS???????</feedburner:feedFlare><entry>
		<author>
			<name>Phize</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[最強のマーケティング(SEO / SEM)ツール「マーケットサムライ (Market Samurai)」]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dxd8/~3/xeNgoKycn2U/" />
		<id>http://dxd8.com/?p=1554</id>
		<updated>2010-07-22T05:21:30Z</updated>
		<published>2010-07-19T13:49:54Z</published>
		<category scheme="http://dxd8.com" term="ソフトウェア" /><category scheme="http://dxd8.com" term="マーケティング" /><category scheme="http://dxd8.com" term="AdWords" /><category scheme="http://dxd8.com" term="Bing" /><category scheme="http://dxd8.com" term="Google" /><category scheme="http://dxd8.com" term="Market Samurai" /><category scheme="http://dxd8.com" term="SEM" /><category scheme="http://dxd8.com" term="SEO" /><category scheme="http://dxd8.com" term="Yahoo" /><category scheme="http://dxd8.com" term="ツール" /><category scheme="http://dxd8.com" term="マーケットサムライ" />		<summary type="html"><![CDATA[インターネットマーケティングにおいて最大限の効果を発揮する、高機能・多機能マーケティングツール「マーケットサムライ (Market Samurai)」を紹介します。キーワード調査や競合調査、順位調査などのSEOやSEMを [...]]]></summary>
		<content type="html" xml:base="http://dxd8.com/archives/213/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AnktQvFeCrTrYHLPgRI6GOT1QmM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AnktQvFeCrTrYHLPgRI6GOT1QmM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AnktQvFeCrTrYHLPgRI6GOT1QmM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AnktQvFeCrTrYHLPgRI6GOT1QmM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;インターネットマーケティングにおいて最大限の効果を発揮する、高機能・多機能マーケティングツール「&lt;a href="http://www.marketsamurai.com/c/eWvC3fxt" rel="nofollow" class="external"&gt;マーケットサムライ (Market Samurai)&lt;/a&gt;」を紹介します。キーワード調査や競合調査、順位調査などの&lt;abbr title="Search Engine Optimization"&gt;SEO&lt;/abbr&gt;や&lt;abbr title="Search Engine Marketing"&gt;SEM&lt;/abbr&gt;を含め、&lt;em&gt;これ1本ありさえすれば、他には何も必要ない&lt;/em&gt;というくらいに愛用しているツールです。&lt;/p&gt;

&lt;span id="more-1554"&gt;&lt;/span&gt;

&lt;p&gt;「マーケットサムライ (Market Samurai)」を利用すると、今まで時間をかけていた&lt;strong&gt;マーケティングのための調査、分析等の時間を大幅に短縮&lt;/strong&gt;できます。高機能・多機能なツールで、非常に質の高いサポートが提供されています。既に同種のツール・サービスを利用している場合でも、&lt;strong&gt;大幅なコスト削減&lt;/strong&gt;を行える&lt;strong&gt;高いコストパフォーマンス&lt;/strong&gt;を持ったツールがマーケットサムライです。&lt;/p&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;目次&lt;/h2&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="#price"&gt;マーケットサムライの価格&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#feature"&gt;マーケットサムライの機能&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#support"&gt;マーケットサムライのサポート&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#japanese"&gt;マーケットサムライの日本語対応&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#purchase"&gt;マーケットサムライを特別価格で購入する方法&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div id="price" class="section"&gt;
  &lt;h2&gt;マーケットサムライ (Market Samurai)の価格&lt;/h2&gt;
  &lt;p&gt;マーケットサムライ (Market Samurai)には&lt;em&gt;無料版もあります&lt;/em&gt;が、うれしいことに完全版は有償のソフトウェアです。何故うれしいのか、&lt;em&gt;あまりにも強力なマーケティングツール&lt;/em&gt;だからです。「人には教えたくない」とまで思わせる魅力が「マーケットサムライ」にはあります。特に、インターネットマーケティングを行う上で競合がいるのであれば(間違いなくいるでしょう)、競合には絶対に教えたくないツールになるでしょう。&lt;/p&gt;

  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/market_samurai_1.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/market_samurai_1-300x228.png" alt="マーケットサムライ (Market Samurai) - 起動画面" width="300" height="228" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;「マーケットサムライ 完全版」の価格は$149です。&lt;/p&gt;
  &lt;p&gt;安いです。「&lt;a href="http://www.marketsamurai.com/c/eWvC3fxt" rel="nofollow" class="external"&gt;マーケットサムライ (Market Samurai) 無料版&lt;/a&gt;」を利用してみると、安いと言い切れてしまう理由がわかります。&lt;/p&gt;
  &lt;p&gt;今なら、「マーケットサムライ 完全版」を&lt;strong&gt;さらに安い特別価格で手に入れる方法があります&lt;/strong&gt;。無料版を申請する前に、必ず、この記事を最後まで一読してください。&lt;/p&gt;
&lt;/div&gt;

&lt;div id="feature" class="section"&gt;
  &lt;h2&gt;マーケットサムライ (Market Samurai)の機能&lt;/h2&gt;
  &lt;p&gt;マーケットサムライ (Market Samurai)は発売から2年近くが経つにも関わらず、未だにベータ版です。不具合があるからベータ版というわけではありません。&lt;em&gt;常に最新のインターネット環境に対応&lt;/em&gt;し、&lt;em&gt;常に新しい機能が追加され続けている&lt;/em&gt;からです。&lt;/p&gt;
  &lt;p&gt;以下はマーケットサムライ (Market Samurai)の機能の一部です。&lt;em&gt;今後も新しい機能が追加されていきます&lt;/em&gt;。いずれも一言では説明仕切れないほどボリュームがある機能ばかりです。ここでは簡単に概要を紹介します。&lt;/p&gt;

  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/market_samurai_2.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/market_samurai_2-300x228.png" alt="マーケットサムライ (Market Samurai) - キーワード (Keyword)" width="300" height="228" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;ul&gt;
    &lt;dt&gt;検索順位の調査 (Rank Tracker)&lt;/dt&gt;
    &lt;dd&gt;Google、Yahoo、Bingの検索順位をドメイン・ページ別に詳細調査・監視。部分一致にも対応。&lt;/dd&gt;
    &lt;dt&gt;キーワードの調査 (Keyword Research)&lt;/dt&gt;
    &lt;dd&gt;詳細な条件によるキーワードの検索・調査・抽出・分析・管理。Googleキーワードツールを高機能化。&lt;/dd&gt;
    &lt;dt&gt;競合サイトの&lt;abbr title="Search Engine Optimization"&gt;SEO&lt;/abbr&gt;調査(SEO Competition)&lt;/dt&gt;
    &lt;dd&gt;競合サイトの詳細な検索・調査・抽出・分析・監視。競合サイトの強さや動きが一目瞭然。&lt;/dd&gt;
    &lt;dt&gt;新規・中古ドメインの調査 (Domains)&lt;/dt&gt;
    &lt;dd&gt;新規ドメイン取得時のドメイン検索・調査。詳細な条件によるオールドドメイン(中古ドメイン)の検索・調査・監視。&lt;/dd&gt;
    &lt;dt&gt;収益化(マネタイゼーション)の補助 (Monetization)&lt;/dt&gt;
    &lt;dd&gt;Google AdSense、Amazon等々、アフィリエイト広告の作成・管理。コンバージョン・収益の計算。&lt;/dd&gt;
    &lt;dt&gt;関連コンテンツの検索 (Find Content)&lt;/dt&gt;
    &lt;dd&gt;YouTube、Flickr、Google News等々、関連コンテンツの検索・調査・分析。ブログへの投稿が可能。&lt;/dd&gt;
    &lt;dt&gt;ブログへの投稿 (Publish Content)&lt;/dt&gt;
    &lt;dd&gt;WordPressブログの投稿・ページ作成・投稿・編集・管理。過去の投稿・ページ取得、下書きにも対応。&lt;/dd&gt;
    &lt;dt&gt;告知・プレスリリース配信先の検索 (Promotion)&lt;/dt&gt;
    &lt;dd&gt;DMOZ等への申請、Google Blog、Google Forum、phpBB、vBulletin等々、プロモーション先の検索・調査・分析。&lt;/dd&gt;
    &lt;dt&gt;AdWords配信先の検索? (AdWords)&lt;/dt&gt;
    &lt;dd&gt;Google AdWordsに関する追加予定の機能。詳細は不明。&lt;/dd&gt;
  &lt;/ul&gt;

  &lt;p&gt;追加が予告されていた機能は既にほぼ追加されています。これまでに、購入者向けに&lt;em&gt;予定外の機能追加&lt;/em&gt;や&lt;em&gt;予定外の無償ツールの提供&lt;/em&gt;もありました。&lt;/p&gt;
  &lt;p&gt;現在は、&lt;strong&gt;残りのAdWords機能の追加後に値上げ&lt;/strong&gt;と書かれています。「マーケットサムライ 完全版」を&lt;strong&gt;今なら特別価格で手に入れることができます&lt;/strong&gt;。無料版を申請する前に、必ず、この記事を最後まで読んでください。そして、購入の際には早めに購入されることをおすすめします。&lt;/p&gt;
&lt;/div&gt;

&lt;div id="support" class="section"&gt;
  &lt;h2&gt;マーケットサムライ (Market Samurai)のサポート&lt;/h2&gt;
  &lt;p&gt;マーケットサムライ (Market Samurai)には、このツールを「もっと多くの人に教えたい」と思わせる魅力があります。始めに書いたことと矛盾していますが事実です。&lt;/p&gt;
  &lt;p&gt;マーケットサムライは、世界中で愛用されている優れたマーケティングツールですが完璧ではありません。不具合が見つかったり、GoogleやYahoo、Bing(旧MSN)等々の仕様変更で正しい調査が行えなくなることも過去にありました。&lt;/p&gt;
  &lt;p&gt;しかし、マーケットサムライを提供するノーブルサムライ(Noble Samurai)の&lt;em&gt;サポートの質が非常に高い&lt;/em&gt;のです。その一端は&lt;a href="http://www.marketsamurai.com/c/eWvC3fxt" rel="nofollow" class="external"&gt;マーケットサムライ (Market Samurai)&lt;/a&gt;の「Dojo (チュートリアル)」、「Support (サポート)」、「Blog (ブログ)」にも表れています。&lt;/p&gt;

  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/noble_samurai_1.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/noble_samurai_1-300x280.png" alt="マーケットサムライ (Market Samurai) - チュートリアル (Dojo)" width="300" height="280" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;過去に、マーケットサムライと比較すると貧弱にすら思える同種のツール・サービスを利用していたことがあります。検索エンジンの仕様が変更された時の対応が遅く、サービス自体も1年足らずで終了してしまったという経験がありました。&lt;/p&gt;
  &lt;p&gt;マーケットサムライは世界中にユーザーがいるため、不具合の発見が早く、&lt;em&gt;不具合が見つかれば即座に自動でアップデート&lt;/em&gt;されます。アップデートの頻度もかなり高く、&lt;em&gt;精力的・継続的にアップデート&lt;/em&gt;が行われています。&lt;/p&gt;
  &lt;p&gt;&lt;em&gt;必要以上にしつこくメールが来ることもありません&lt;/em&gt;。たまにお知らせや新ツール、サービスのお知らせが来るくらいです。しかも、新しいチュートリアルや無償ツール・サービスのお知らせなどワクワクするものばかりです。ノーブルサムライは、マーケットサムライという製品に自信を持っており、&lt;em&gt;行きすぎたマーケティングが逆効果であることをよく理解しています&lt;/em&gt;。&lt;/p&gt;
  &lt;p&gt;マーケットサムライは末永く、最新の機能が利用でき、無償で利用できる新しいツール・サービスもあるため、驚くほど高いコストパフォーマンスを持っています。ノーブルサムライのサポート、マーケティングに対する姿勢は、貪欲でありながら非常に真摯です。マーケットサムライが長い間、多くの人に支持されている理由の一つであり、マーケティングのお手本ともなるものです。この質の高いツール・サービスを通じた体験は、マーケットサムライを「もっと多くの人に教えたい」と思わせるほどのものです。&lt;/p&gt;
  &lt;p&gt;初めてマーケットサムライを利用する人は、最初に「マーケットサムライ 完全版」を&lt;strong&gt;(今だけ)特別価格で手に入れることができる&lt;/strong&gt;、という体験をすることができます。&lt;a href="http://www.marketsamurai.com/c/eWvC3fxt" rel="nofollow" class="external"&gt;無料版&lt;/a&gt;を申請する前には、必ず、この記事を最後まで読み終えてください。&lt;/p&gt;
&lt;/div&gt;

&lt;div id="japanese" class="section"&gt;
  &lt;h2&gt;マーケットサムライ (Market Samurai)の日本語対応&lt;/h2&gt;
  &lt;p&gt;マーケットサムライ (Market Samurai)にとって、&lt;em&gt;日本語への対応は当たり前&lt;/em&gt;のことです。日本語だけでなく、プロジェクトごとに国と言語の設定が行えます。マーケットサムライ1つで&lt;em&gt;各国・各言語での調査等が行えます&lt;/em&gt;。&lt;/p&gt;
  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/market_samurai_3.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/market_samurai_3-300x228.png" alt="マーケットサムライ (Market Samurai) - プロジェクトの設定 (Project Settings)" width="300" height="228" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;一部の機能については英語圏での利用に特化しています。例えば、アフィリエイトサービスプロバイダー(&lt;abbr title="Affiliate Service Provider"&gt;ASP&lt;/abbr&gt;)、関連コンテンツやプロモーション先の取得先です。日本語圏では馴染みのないサービスも含まれているので、これらを利用する機会は少ないかもしれません。日本語圏に特化したい場合は、他のツール・サービスを組み合わせて利用する場合も出てくるかもしれません。あるいは、日本人ユーザーからの要望が多ければ追加してくれるかもしれません。&lt;/p&gt;
  &lt;p&gt;日本語では一部の機能が利用できないということではありません。&lt;em&gt;日本語でも全ての機能が利用できます&lt;/em&gt;。日本語圏で馴染みのないサービスを利用することで、マーケットサムライの威力が最大限に発揮されるというだけです。事実、マーケットサムライのみで十分なマーケティング活動が行えます。馴染みのないサービスも、積極的に利用してみることで新しい道が開けるかもしれませんよ。&lt;/p&gt;
  &lt;p&gt;どちらにしても、メインのマーケティングツールは「マーケットサムライ」になるはずです。コストパフォーマンスを最大化する意味でも、この記事を最後まで読み、「マーケットサムライ 完全版」を&lt;strong&gt;今だけの特別価格で手に入れてください&lt;/strong&gt;(次の章でついに最後です)。&lt;/p&gt;
&lt;/div&gt;

&lt;div id="purchase" class="section"&gt;
  &lt;h2&gt;マーケットサムライ (Market Samurai)を特別価格で購入する方法&lt;/h2&gt;
  &lt;p&gt;マーケットサムライ (Market Samurai)の現在の価格は$149です。無料版を利用すれば、コストパフォーマンスが非常に高く、安い価格設定であることがすぐにわかります。&lt;strong&gt;AdWords機能の追加後に値上げ&lt;/strong&gt;の予定があり、以降は全ての機能を含んだ適正価格での販売になります。&lt;/p&gt;
  &lt;p&gt;ある条件を満たすと、&lt;strong&gt;今なら、$149(さらに値上げ予定)のところを$97&lt;/strong&gt;で購入できます。その条件とは、&lt;strong&gt;無料版の入手後、7日間の内に完全版を購入するだけ&lt;/strong&gt;です。&lt;/p&gt;
  &lt;p&gt;&lt;em&gt;一度の購入のみで、継続的に、新しい機能が追加された場合はその機能も含めて利用できます&lt;/em&gt;。特別価格だからといって機能制限も、追加の費用もありません。2年間もの間、世界中の利用者たちがこっそりと愛用し続けてきた最強の&lt;abbr title="Search Engine Optimization"&gt;SEO&lt;/abbr&gt; / &lt;abbr title="Search Engine Marketing"&gt;SEM&lt;/abbr&gt;ツールを&lt;strong&gt;特別価格で手に入れる最後のチャンス&lt;/strong&gt;です。&lt;/p&gt;

  &lt;p&gt;以下が特別価格での提供を受ける手順になります。&lt;/p&gt;

  &lt;ol&gt;
  &lt;li&gt;&lt;a href="http://www.marketsamurai.com/c/eWvC3fxt" rel="nofollow" class="external"&gt;マーケットサムライ (Market Samurai)&lt;/a&gt;のページから、&lt;strong&gt;特別価格の提供を確実に受けるために、必ず正しい氏名(Name)とメールアドレス(Email)を入力&lt;/strong&gt;し、「Yes! Send me my FREE Stuff」をクリックします。必要以上のメールが届くことはありませんし、いつでも配信を解除できます。&lt;/li&gt;
  &lt;li&gt;「マーケットサムライ 無料版」のダウンロードページがメールで届きます。&lt;/li&gt;
  &lt;li&gt;ダウンロードページの下部に以下のような表示が出ていれば、特別価格での提供を受けることができます。&lt;/li&gt;
  &lt;/ol&gt;

  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/market_samurai_4.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/market_samurai_4-300x57.png" alt="マーケットサムライ (Market Samurai) - 特別価格で購入" title="market_samurai_4" width="300" height="57" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;上記のリンクをクリックすると、「マーケットサムライ 完全版」を&lt;strong&gt;7日間だけ$97&lt;/strong&gt;で購入することができます。支払いはPayPalになります。PayPalのアカウントを持っていない場合は、早めに作っておいてください。&lt;/p&gt;
  &lt;p&gt;マーケットサムライの利用にあたってはAdobe AIRが必要になります。導入していない場合は、&lt;a href="http://get.adobe.com/air" rel="nofollow" class="external"&gt;Adobe AIRのダウンロード・インストール&lt;/a&gt;後にマーケットサムライを導入してください。&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;無料版は12日後に利用できなくなります&lt;/strong&gt;。円高のため、「マーケットサムライ 完全版」の価格は&lt;em&gt;実質、約8,439円&lt;/em&gt; ($1=87円換算)です。発売当初に購入した人たちは、1日当たりわずか$0.13 (2年間)という非常に高いコストパフォーマンスで利用しています。期限後は$149(AdWords機能が追加された場合は値上げ)での購入になるため、無料版を利用して気に入った場合は、&lt;strong&gt;特別価格の期限が切れる7日以内に購入してください&lt;/strong&gt;。&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;以上、愛着があるだけに非常に長い紹介となってしまいました。個々の機能を語るには、まだまだ文字数が足りません。おおげさに感じるかもしれませんが、無料版を利用してみれば、決しておおげさではないということがわかります。自分自身、無料版で機能を確認した直後に迷うことなく購入したほどです(当時は現在より機能が少なかったにも関わらず)。&lt;/p&gt;
&lt;p&gt;総合マーケティングツールで今も使い続けているのは「マーケットサムライ (Market Samurai)」だけです。国内の中途半端な&lt;abbr title="Search Engine Optimization"&gt;SEO&lt;/abbr&gt;、&lt;abbr title="Search Engine Marketing"&gt;SEM&lt;/abbr&gt;のツール・サービスにコストをかけるのであれば、一刻も早く「&lt;a href="http://www.marketsamurai.com/c/eWvC3fxt" rel="nofollow" class="external"&gt;マーケットサムライ&lt;/a&gt;」への乗り換えをおすすめします。&lt;/p&gt;
&lt;p&gt;最後に、「英語は苦手だけど利用してみたい」「使い方がわからない」という場合には可能な範囲でサポートさせていただきますので、コメントまたは&lt;a href="/contact/"&gt;お問い合わせ&lt;/a&gt;よりご連絡ください。&lt;/p&gt;

	タグ: &lt;a href="http://dxd8.com/archives/tag/adwords/" title="AdWords" rel="tag"&gt;AdWords&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/bing/" title="Bing" rel="tag"&gt;Bing&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/google/" title="Google" rel="tag"&gt;Google&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/market-samurai/" title="Market Samurai" rel="tag"&gt;Market Samurai&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/sem/" title="SEM" rel="tag"&gt;SEM&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/seo/" title="SEO" rel="tag"&gt;SEO&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/yahoo/" title="Yahoo" rel="tag"&gt;Yahoo&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/software/" title="ソフトウェア" rel="tag"&gt;ソフトウェア&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%83%84%e3%83%bc%e3%83%ab/" title="ツール" rel="tag"&gt;ツール&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%83%9e%e3%83%bc%e3%82%b1%e3%83%83%e3%83%88%e3%82%b5%e3%83%a0%e3%83%a9%e3%82%a4/" title="マーケットサムライ" rel="tag"&gt;マーケットサムライ&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%83%9e%e3%83%bc%e3%82%b1%e3%83%86%e3%82%a3%e3%83%b3%e3%82%b0/" title="マーケティング" rel="tag"&gt;マーケティング&lt;/a&gt;&lt;br /&gt;

	&lt;h2&gt;関連する記事&lt;/h2&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/139/" title="商標キーワードで広告表示されるOverture (2008年7月2日)"&gt;商標キーワードで広告表示されるOverture&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/196/" title="FirefoxのSQLiteデータベースをVACUUMしてみた (2009年8月1日)"&gt;FirefoxのSQLiteデータベースをVACUUMしてみた&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/174/" title="Windowsで文字化けが発生した場合の直し方 (2008年12月10日)"&gt;Windowsで文字化けが発生した場合の直し方&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/124/" title="もしもドロップシッピングの実験を開始 (2008年6月12日)"&gt;もしもドロップシッピングの実験を開始&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/34/" title="高性能Flash作成ソフト、Free Motion 2を買ってみました (2008年1月21日)"&gt;高性能Flash作成ソフト、Free Motion 2を買ってみました&lt;/a&gt; (3)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=xeNgoKycn2U:FK8H6IZvOZQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=xeNgoKycn2U:FK8H6IZvOZQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?i=xeNgoKycn2U:FK8H6IZvOZQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dxd8/~4/xeNgoKycn2U" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://dxd8.com/archives/213/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://dxd8.com/archives/213/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://dxd8.com/archives/213/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Phize</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[CakePHPで複合ユニークキーのバリデーションを行う方法]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dxd8/~3/gsue4U8SNw0/" />
		<id>http://dxd8.com/?p=1510</id>
		<updated>2010-07-10T09:58:00Z</updated>
		<published>2010-07-10T04:12:31Z</published>
		<category scheme="http://dxd8.com" term="CakePHP" /><category scheme="http://dxd8.com" term="PHP" /><category scheme="http://dxd8.com" term="isUnique" /><category scheme="http://dxd8.com" term="バリデーション" /><category scheme="http://dxd8.com" term="ユニークキー" />		<summary type="html"><![CDATA[CakePHPで複合ユニークキーのバリデーションを行う方法と注意点をメモしておきます。




  データベースのユニークキー制約
  データベースにおいて、複数のフィールド(カラム)値の組み合わせがユニーク [...]]]></summary>
		<content type="html" xml:base="http://dxd8.com/archives/212/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xgGEXJrFMzoWNv5dHa5L4yoqYLA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xgGEXJrFMzoWNv5dHa5L4yoqYLA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xgGEXJrFMzoWNv5dHa5L4yoqYLA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xgGEXJrFMzoWNv5dHa5L4yoqYLA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;CakePHPで複合ユニークキーのバリデーションを行う方法と注意点をメモしておきます。&lt;/p&gt;

&lt;span id="more-1510"&gt;&lt;/span&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;データベースのユニークキー制約&lt;/h2&gt;
  &lt;p&gt;データベースにおいて、複数のフィールド(カラム)値の組み合わせがユニークであることを保証するためには、データベーステーブルのカラムにユニークキー制約を定義します。&lt;/p&gt;

&lt;pre class="code"&gt;&lt;code class="sql"&gt;CREATE TABLE IF NOT EXISTS `users` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `first_name` varchar(255) NOT NULL,
  `last_name` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `first_name_last_name` (`first_name`,`last_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これで「first_name」と「last_name」の組み合わせが同じレコードは1つのみ追加できるようになります(あくまで説明用の一例です)。&lt;/p&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;CakePHPで複合ユニークキーのバリデーション&lt;/h2&gt;
  &lt;p&gt;ただ、フォームを利用してレコードの追加を行うような場合は、重複する組み合わせがあった場合にエラーメッセージを表示したいことが多いと思います。こういった場合、CakePHPのModel::isUnique()を利用すれば、複合ユニークキーのバリデーションを行うことができます。&lt;/p&gt;

&lt;dl class="code"&gt;
  &lt;dt&gt;/cake/libs/model/model.php&lt;/dt&gt;
  &lt;dd&gt;&lt;pre class="code"&gt;&lt;code class="php"&gt;/**
 * Returns false if any fields passed match any (by default, all if $or = false) of their matching values.
 *
 * @param array $fields Field/value pairs to search (if no values specified, they are pulled from $this-&gt;data)
 * @param boolean $or If false, all fields specified must match in order for a false return value
 * @return boolean False if any records matching any fields are found
 * @access public
 */
    function isUnique($fields, $or = true) {
    &lt;var&gt;...&lt;/var&gt;
    }&lt;/code&gt;&lt;/pre&gt;&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;第一引数にフィールド名をキー、フィールド値を値とした&lt;code class="php"&gt;array(&lt;var&gt;フィールド名&lt;/var&gt; =&amp;gt; &lt;var&gt;フィールド値&lt;/var&gt;)&lt;/code&gt;のような配列、あるいはフィールド名のみの&lt;code class="php"&gt;array(&lt;var&gt;フィールド名&lt;/var&gt;)&lt;/code&gt;のような配列を渡します。第二引数に比較演算子にORを使うかどうかを渡します。&lt;/p&gt;

&lt;p&gt;第一引数にフィールド名のみの配列を渡した場合は、$this-&gt;dataからフィールド値が取得されます。第二引数にfalseを渡した場合は、指定したフィールド値の組み合わせがユニークかどうかを検証します。trueの場合は、いずれかのフィールド値がユニークであればtrueを返します。&lt;/p&gt;

&lt;p&gt;通常は&lt;a href="http://book.cakephp.org/ja/view/1166/isUnique"&gt;Cookbook&lt;/a&gt;で説明されているように、一つのフィールド値がユニークかどうかを検証するのに使われます。これを次のようにパラメーターを指定することで、複数のフィールド値の組み合わせがユニークかどうかを検証することができるようになります。&lt;/p&gt;

&lt;pre class="code"&gt;&lt;code class="php"&gt;class User extends AppModel {
    &lt;var&gt;...&lt;/var&gt;
    public $validate = array(
        'first_name' =&gt; array(
            'rule' =&amp;gt; array('isUnique', array('first_name', 'last_name'), false)
        ),
        'last_name' =&gt; array(
            'rule' =&amp;gt; array('isUnique', array('first_name', 'last_name'), false)
        )
    );
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;div class="section"&gt;
  &lt;h2&gt;もっと簡単に複合ユニークキーのバリデーション&lt;/h2&gt;
  &lt;p&gt;同じフィールド名を何回も書くのは面倒なので、モデルに新しいメソッドを追加します。&lt;/p&gt;
  &lt;dl class="code"&gt;
    &lt;dt&gt;/app/models/app_model.php&lt;/dt&gt;
    &lt;dd&gt;&lt;pre class="code"&gt;&lt;code class="php"&gt;class AppModel extends Model {
    &lt;var&gt;...&lt;/var&gt;
    public function isUniqueWith($data, $fields) {
        if (!is_array($fields)) $fields = array($fields);
        $fields = Set::merge($data, $fields);
        return $this-&amp;gt;isUnique($fields, false);
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;/dd&gt;
  &lt;/dl&gt;

&lt;pre class="code"&gt;&lt;code class="php"&gt;class User extends AppModel {
    &lt;var&gt;...&lt;/var&gt;
    public $validate = array(
        'first_name' =&amp;gt; array(
            'rule' =&amp;gt; array('isUniqueWith', 'last_name')
        ),
        'last_name' =&amp;gt; array(
            'rule' =&amp;gt; array('isUniqueWith', 'first_name')
        )
    );
}&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;これで簡単に複合ユニークキーのバリデーションが行えるようになりました。&lt;/p&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;複合ユニークキーのバリデーションでの注意点&lt;/h2&gt;
  &lt;p&gt;Model::isUnique()で複数のフィールドを検証する場合や、上記のisUniqueWith()を利用する場合に注意しておくべき点があります。&lt;strong&gt;指定したフィールド全てのデータが必ず存在している必要がある&lt;/strong&gt;という点です。検証するフィールドを&lt;code class="php"&gt;array(&lt;var&gt;フィールド名&lt;/var&gt;)&lt;/code&gt;のように指定した場合、Model::dataにそのフィールドのデータが存在していなければなりません。&lt;strong&gt;指定したフィールドのデータが存在しない場合、そのフィールド値はnullとして扱われます。&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;例えば、「first_name」のみの更新を行うための以下の様なコードでは、User::dataに「last_name」のデータがセットされないため正しいバリデーション結果が得られず、常にバリデーションが成功したものとして扱われます(カラムにユニークキー制約を定義しているので、組み合わせが重複する場合にはレコードは更新されません)。&lt;/p&gt;
  &lt;pre class="code"&gt;&lt;code class="php"&gt;class UsersController extends AppController {
    &lt;var&gt;...&lt;/var&gt;
    public function editFirstName($id) {
        &lt;var&gt;...&lt;/var&gt;
        $data = array(
            $this-&amp;gt;User-&amp;gt;alias =&amp;gt; array(
                $this-&amp;gt;User-&amp;gt;primaryKey =&amp;gt; $id,
                'first_name' =&amp;gt; 'hoge'
            )
        );
        $this-&amp;gt;User-&amp;gt;create(null);
        $this-&amp;gt;User-&amp;gt;set($data);
        if ($this-&amp;gt;User-&amp;gt;validates()) {
            $this-&amp;gt;User-&amp;gt;save(null, false);
            &lt;var&gt;更新処理&lt;/var&gt;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;ins datetime="2010-07-10T18:55:55+09:00"&gt;&lt;p&gt;説明とコードの実際の挙動が異なっていたため、コードを修正しました。&lt;/p&gt;&lt;/ins&gt;

  &lt;p&gt;正しいバリデーション結果を得るには、「last_name」とともにバリデーションを行う必要があります。&lt;/p&gt;
  &lt;p&gt;ただし、組み合わせを検証するフィールドが外部キーの場合で、かつModel::saveAll()で関連するモデルとともにレコードを作成・更新する場合には、外部キーのフィールドについては省略できます。saveAll()が、自動的にModel::dataへ外部キーのフィールドを追加してくれるためです。&lt;/p&gt;
&lt;/div&gt;

	タグ: &lt;a href="http://dxd8.com/archives/tag/cakephp/" title="CakePHP" rel="tag"&gt;CakePHP&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/isunique/" title="isUnique" rel="tag"&gt;isUnique&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%83%90%e3%83%aa%e3%83%87%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3/" title="バリデーション" rel="tag"&gt;バリデーション&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%83%a6%e3%83%8b%e3%83%bc%e3%82%af%e3%82%ad%e3%83%bc/" title="ユニークキー" rel="tag"&gt;ユニークキー&lt;/a&gt;&lt;br /&gt;

	&lt;h2&gt;関連する記事&lt;/h2&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/11/" title="CakePHPでアプリケーションの設定をデータベースに保存する (2007年12月31日)"&gt;CakePHPでアプリケーションの設定をデータベースに保存する&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/25/" title="CakePHPで一つの編集ページから複数のレコードを更新する (2008年1月12日)"&gt;CakePHPで一つの編集ページから複数のレコードを更新する&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/7/" title="CakePHPで外部からのデータ改竄を防止する (2007年12月29日)"&gt;CakePHPで外部からのデータ改竄を防止する&lt;/a&gt; (2)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/22/" title="LLフレームワークBOOKSシリーズ Fast CakePHPが発売 (2008年1月9日)"&gt;LLフレームワークBOOKSシリーズ Fast CakePHPが発売&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/24/" title="CakePHPでgenerateList()の結果からモデルデータ形式の配列に戻す (2008年1月11日)"&gt;CakePHPでgenerateList()の結果からモデルデータ形式の配列に戻す&lt;/a&gt; (0)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=gsue4U8SNw0:R_3fxp9Hcwk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=gsue4U8SNw0:R_3fxp9Hcwk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?i=gsue4U8SNw0:R_3fxp9Hcwk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dxd8/~4/gsue4U8SNw0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://dxd8.com/archives/212/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://dxd8.com/archives/212/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://dxd8.com/archives/212/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Phize</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[CakePHP 1.3でのトランザクション処理の方法と注意点]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dxd8/~3/zVElSgktVy0/" />
		<id>http://dxd8.com/?p=1480</id>
		<updated>2010-06-23T11:00:10Z</updated>
		<published>2010-06-22T15:47:33Z</published>
		<category scheme="http://dxd8.com" term="CakePHP" /><category scheme="http://dxd8.com" term="PHP" /><category scheme="http://dxd8.com" term="InnoDB" /><category scheme="http://dxd8.com" term="トランザクション" />		<summary type="html"><![CDATA[CakePHP 1.3でのModel::saveAll()を利用したトランザクション処理において、保存しているはずのデータが上手く保存されず、かなりハマってしまったのでメモしておきます。




  環境
  [...]]]></summary>
		<content type="html" xml:base="http://dxd8.com/archives/211/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/G_lV1-dZES1sSB-ER-UJ6-KK87c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G_lV1-dZES1sSB-ER-UJ6-KK87c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/G_lV1-dZES1sSB-ER-UJ6-KK87c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G_lV1-dZES1sSB-ER-UJ6-KK87c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;CakePHP 1.3でのModel::saveAll()を利用したトランザクション処理において、保存しているはずのデータが上手く保存されず、かなりハマってしまったのでメモしておきます。&lt;/p&gt;

&lt;span id="more-1480"&gt;&lt;/span&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;環境&lt;/h2&gt;
  &lt;ul&gt;
    &lt;li&gt;CakePHP 1.3.2を使用。&lt;/li&gt;
    &lt;li&gt;データベースはMySQL。ストレージエンジンはInnoDB。&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;処理内容&lt;/h2&gt;
  &lt;ol&gt;
    &lt;li&gt;モデル「ModelA」のデータをModelA::save()で更新。&lt;/li&gt;
    &lt;li&gt;モデル「ModelB」のデータをhasManyの関連を持つデータとともにModelB::saveAll()で作成(トランザクション処理)。&lt;/li&gt;
    &lt;li&gt;(モデル「ModelB」のデータの作成に失敗した場合はエラー処理後に処理を継続。)&lt;/li&gt;
    &lt;li&gt;モデル「ModelA」のデータをModelA::save()で更新。&lt;/li&gt;
  &lt;/ol&gt;
  &lt;pre class="code"&gt;&lt;code class="php"&gt;$data = array(&lt;var&gt;...&lt;/var&gt;);
$this-&gt;ModelA-&gt;create(null); $this-&gt;ModelA-&gt;set($data);
$this-&gt;ModelA-&gt;save();
&lt;var&gt;...&lt;/var&gt;
$data = array(&lt;var&gt;...&lt;/var&gt;);
if (!$this-&gt;ModelB-&gt;saveAll($data)) {
    &lt;var&gt;エラー処理&lt;/var&gt;
}
&lt;var&gt;...&lt;/var&gt;
$data = array(&lt;var&gt;...&lt;/var&gt;);
$this-&gt;ModelA-&gt;create(null); $this-&gt;ModelA-&gt;set($data);
$this-&gt;ModelA-&gt;save();&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;期待した結果&lt;/h2&gt;
  &lt;p&gt;ModelB::saveAll()の成否に関わらず、前後のModelA::save()でModelAのデータが更新される。&lt;/p&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;実際の結果&lt;/h2&gt;
  &lt;p&gt;ModelB::saveAll()のバリデーションに失敗すると、ModelA::save()がSQLステートメントを実行し、戻り値として配列(更新に成功)を返すにも関わらず、最後のModelA::save()で更新したデータのみが反映されない。&lt;/p&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;原因&lt;/h2&gt;
  &lt;p&gt;Model::saveAll()の第2引数を指定しない場合、Model::saveAll()は以下のような処理を行っています。&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;トランザクションを開始(データソースがトランザクションに対応している場合)。&lt;/li&gt;
    &lt;li&gt;データの検証(バリデーション)。&lt;/li&gt;
    &lt;li&gt;データの保存。&lt;/li&gt;
    &lt;li&gt;トランザクションをコミット、あるいはロールバック(データソースがトランザクションに対応している場合)。&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt;バリデーションに成功した場合は問題ないものの、&lt;em&gt;バリデーションに失敗した場合はコミットもロールバックもされず、トランザクションが開始された状態のままになるようです。&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;今回の例では、ModelB::saveAll()でのバリデーションを失敗させるケースがあり、その場合にModelA::save()の処理がトランザクションの一部として扱われ、その結果、更新しているはずのデータが反映されなかったようです。&lt;/p&gt;
&lt;/div&gt;


&lt;div class="section"&gt;
  &lt;h2&gt;解決策&lt;/h2&gt;
  &lt;p&gt;色々と調査してみた範囲では以下の解決策が取れそうです。&lt;/p&gt;
  &lt;div class="section"&gt;
    &lt;h3&gt;Model::saveAll()の第2引数でarray('validate' =&gt; &lt;var&gt;...&lt;/var&gt;)を指定&lt;/h3&gt;
    &lt;p&gt;Model::saveAll()の処理をバリデーションと作成に分ける方法です。バリデーションに成功した場合のみデータを保存するようにします。&lt;/p&gt;
    &lt;pre class="code"&gt;&lt;code class="php"&gt;$data = array(&lt;var&gt;...&lt;/var&gt;);
if ($this-&gt;ModelB-&gt;saveAll($data, array('validate' =&gt; 'only'))) {
    $this-&gt;ModelB-&gt;saveAll($data, array('validate' =&gt; false));
} else {
    &lt;var&gt;エラー処理&lt;/var&gt;
}&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;array('validate' =&gt; 'only')の場合、Model::saveAll()はバリデーションのみを行います。array('validate' =&gt; false)の場合は、Model::saveAll()はバリデーションなしにデータを保存しようとします。デフォルト値はarray('validate' =&gt; 'first')でバリデーション後にデータを保存しようとします。&lt;/p&gt;
    &lt;p&gt;成否は真偽値で返ります。ただし、array('validate' =&gt; false)で失敗した場合はNULLが返る？？？&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class="section"&gt;
    &lt;h3&gt;Model::saveAll()の第2引数でarray('atomic' =&gt; false)を指定&lt;/h3&gt;
    &lt;p&gt;Model::saveAll()でのトランザクション処理を無効化して、自前でトランザクションの開始・コミット・ロールバックを行う方法です。モデルを拡張して、begin()、commit()、rollback()を利用できるようにします。&lt;/p&gt;
    &lt;dl class="code"&gt;
      &lt;dt&gt;/app/models/app_model.php&lt;/dt&gt;
      &lt;dd&gt;
        &lt;pre class="code"&gt;&lt;code class="php"&gt;class AppModel extends Model {
    public function begin() {
        return $this-&gt;getDataSource()-&gt;begin($this);
    }

    public function commit() {
        return $this-&gt;getDataSource()-&gt;commit($this);
    }

    public function rollback() {
        return $this-&gt;getDataSource()-&gt;rollback($this);
    }
}&lt;/code&gt;&lt;/pre&gt;
      &lt;dd&gt;
    &lt;/dl&gt;
    &lt;pre class="code"&gt;&lt;code class="php"&gt;$data = array(&lt;var&gt;...&lt;/var&gt;);
$this-&gt;ModelB-&gt;begin();
$results = $this-&gt;ModelB-&gt;saveAll($data, array('atomic' =&gt; false));
&lt;var&gt;戻り値の処理&lt;/var&gt;
if (&lt;var&gt;保存に成功&lt;/var&gt;) {
    $this-&gt;ModelB-&gt;commit();
} else {
    &lt;var&gt;エラー処理&lt;/var&gt;
    $this-&gt;ModelB-&gt;rollback();
}&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;array('atomic' =&gt; false)の場合、Model::saveAll()はレコードごとに保存を行おうとします。成否は、モデルのエイリアス(モデル名ではない)をキー、真偽値を値とした以下のような配列で返ります。ただし、失敗した場合はNULLが返る？？？&lt;/p&gt;
    &lt;pre class="code"&gt;&lt;code class="php"&gt;array(2) {
  ["ModelA"] =&gt;
  bool(true)
  ["ModelB"] =&gt;
  bool(true)
}&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;hasManyの関連があるモデルなどをarray('atomic' =&gt; false)を指定して保存しようとした場合、戻り値は以下のような配列になります。&lt;/p&gt;
    &lt;pre class="code"&gt;&lt;code class="php"&gt;array(2) {
  ["ModelA"] =&gt;
  bool(true)
  ["ModelB"] =&gt;
  array(2) {
    [0]=&gt;
    bool(true)
    [1]=&gt;
    bool(true)
  }
}&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;デフォルト値はarray('atomic' =&gt; true)で、Model::saveAll()は複数レコードの保存を単一のトランザクションとして行おうとします(トランザクションに対応している場合)。成否は真偽値で返ります。ただし、失敗した場合はNULLが返る？？？&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;今回は、他にトランザクション処理が必要な箇所もなく、処理が簡単ということもあり、バリデーションと保存を分ける方法で対処しました。トランザクション処理が多い場合には、モデルクラスを拡張するなり、その都度、自前で処理したほうがわかりやすく、変にハマってしまうこともないかもしれません。&lt;/p&gt;

&lt;p&gt;Model::saveAll()の戻り値は&lt;a href="http://api13.cakephp.org/class/model#method-ModelsaveAll"&gt;APIドキュメント&lt;/a&gt;を参考にしましたが、&lt;em&gt;第2引数の組み合わせによって、実際の戻り値の形式が変わってくるようです。&lt;/em&gt;戻り値のパターンが複雑なようなので、Model::saveAll()を利用する場合には戻り値にも注意しておいた方が良さそうです。&lt;/p&gt;

	タグ: &lt;a href="http://dxd8.com/archives/tag/cakephp/" title="CakePHP" rel="tag"&gt;CakePHP&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/innodb/" title="InnoDB" rel="tag"&gt;InnoDB&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/php/" title="PHP" rel="tag"&gt;PHP&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%83%88%e3%83%a9%e3%83%b3%e3%82%b6%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3/" title="トランザクション" rel="tag"&gt;トランザクション&lt;/a&gt;&lt;br /&gt;

	&lt;h2&gt;関連する記事&lt;/h2&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/25/" title="CakePHPで一つの編集ページから複数のレコードを更新する (2008年1月12日)"&gt;CakePHPで一つの編集ページから複数のレコードを更新する&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/109/" title="PHP5のコンストラクタ関数は__construct() (2008年4月12日)"&gt;PHP5のコンストラクタ関数は__construct()&lt;/a&gt; (1)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/11/" title="CakePHPでアプリケーションの設定をデータベースに保存する (2007年12月31日)"&gt;CakePHPでアプリケーションの設定をデータベースに保存する&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/110/" title="PHPで変数のクラス名からインスタンスを生成する (2008年4月13日)"&gt;PHPで変数のクラス名からインスタンスを生成する&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/76/" title="PHPマニュアルの検索を簡単にしてくれるブックマークレット (2008年3月3日)"&gt;PHPマニュアルの検索を簡単にしてくれるブックマークレット&lt;/a&gt; (0)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=zVElSgktVy0:s7rYp2bzgXQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=zVElSgktVy0:s7rYp2bzgXQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?i=zVElSgktVy0:s7rYp2bzgXQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dxd8/~4/zVElSgktVy0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://dxd8.com/archives/211/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://dxd8.com/archives/211/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://dxd8.com/archives/211/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Phize</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[無料で使える非公開Subversion/Gitリポジトリ「Assembla」]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dxd8/~3/lje8_win1-4/" />
		<id>http://dxd8.com/?p=1468</id>
		<updated>2010-05-28T23:32:50Z</updated>
		<published>2010-05-28T23:13:39Z</published>
		<category scheme="http://dxd8.com" term="Webサービス" /><category scheme="http://dxd8.com" term="Assembla" /><category scheme="http://dxd8.com" term="Git" /><category scheme="http://dxd8.com" term="Github" /><category scheme="http://dxd8.com" term="Mercurial" /><category scheme="http://dxd8.com" term="subversion" /><category scheme="http://dxd8.com" term="SVN" /><category scheme="http://dxd8.com" term="Trac" /><category scheme="http://dxd8.com" term="プロジェクト管理" />		<summary type="html"><![CDATA[プロジェクト管理サービスの「Assembla」を久しぶりに見てみたら、非公開で2GBまでのリポジトリを持てるようになっていました。



以前は、無料で使えるのは200MBまでで、その後、500MBまで拡張されて [...]]]></summary>
		<content type="html" xml:base="http://dxd8.com/archives/210/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ps1mEqHk6vmMt-SFrsBdhBWbfMs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ps1mEqHk6vmMt-SFrsBdhBWbfMs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ps1mEqHk6vmMt-SFrsBdhBWbfMs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ps1mEqHk6vmMt-SFrsBdhBWbfMs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;プロジェクト管理サービスの「Assembla」を久しぶりに見てみたら、非公開で2GBまでのリポジトリを持てるようになっていました。&lt;/p&gt;

&lt;span id="more-1468"&gt;&lt;/span&gt;

&lt;p&gt;以前は、無料で使えるのは200MBまでで、その後、500MBまで拡張されていたらしいのですが、いつの間にかさらに2GBに拡張、非公開のリポジトリも無料で持てるようになったようです(「&lt;a href="http://www.assembla.com?affiliate=phize"&gt;Assembla free trial&lt;/a&gt;」から無料アカウントの申請ができます)。&lt;/p&gt;

&lt;p&gt;現在、無料で利用できるプランは「Repository Only」プランと「Free Public」プランで、両者の違いは以下のようになっています。&lt;/p&gt;

&lt;table&gt;
  &lt;caption&gt;プロジェクト管理サービス「Assembla」の無料プラン比較&lt;/caption&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope="col"&gt;項目&lt;/th&gt;
      &lt;th scope="col"&gt;Repository Only&lt;/th&gt;
      &lt;th scope="col"&gt;Free Public&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;価格&lt;/th&gt;
      &lt;td&gt;無料&lt;/td&gt;
      &lt;td&gt;無料&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;ユーザー数&lt;/th&gt;
      &lt;td&gt;無制限&lt;/td&gt;
      &lt;td&gt;無制限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;スペース数&lt;/th&gt;
      &lt;td&gt;無制限&lt;/td&gt;
      &lt;td&gt;無制限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;容量&lt;/th&gt;
      &lt;td&gt;2GB&lt;/td&gt;
      &lt;td&gt;2GB&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;非公開&lt;/th&gt;
      &lt;td&gt;○&lt;/td&gt;
      &lt;td&gt;×&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;S3アカウントへのバックアップ&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="col" colspan="3"&gt;チケッティングツール&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;チケットツール&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;マイルストーンツール&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;サポートツール&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;Tracプロジェクト&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="col" colspan="3"&gt;リポジトリツール&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;Mercurial(Trac)&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;Githubツール&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;外部SVN&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="col" colspan="3"&gt;コラボレーションツール&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;Wiki&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;メッセージ&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;ファイルツール&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;チャットツール&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;画像ツール&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;Skypeツール&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;Webhookツール&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="col" colspan="3"&gt;管理ツール&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;ダッシュボードツール&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="col" colspan="3"&gt;構築・デプロイツール&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;Buildツール&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th scope="row"&gt;FTPツール&lt;/th&gt;
      &lt;td&gt;×&lt;/td&gt;
      &lt;td&gt;○&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;「Free Public」プランが、スペースを公開する代わりにProプラン(有料)のほとんどの機能が利用できるのに対して、「Repository Only」プランは、その名の通り、非公開で利用できる代わりにリポジトリ機能のみが利用できます。&lt;/p&gt;

&lt;p&gt;どちらのプランでもSubversionとGitのリポジトリを管理できますし、2GBという容量は魅力的ですね。スペースを非公開にしたい場合でも、個人で利用する分には「Repository Only」プランで十分な気がします。自分もこれを機会に、あちこちに散らばっているリポジトリをAssemblaにまとめてみようかと思います。&lt;/p&gt;

&lt;p&gt;「非公開で各種ツールも使いたい！」という場合には、今なら、「&lt;a href="http://www.assembla.com?affiliate=phize"&gt;Assembla free trial&lt;/a&gt;」からの申し込みで全プラン$5引きになるようです。&lt;/p&gt;

	タグ: &lt;a href="http://dxd8.com/archives/tag/assembla/" title="Assembla" rel="tag"&gt;Assembla&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/git/" title="Git" rel="tag"&gt;Git&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/github/" title="Github" rel="tag"&gt;Github&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/mercurial/" title="Mercurial" rel="tag"&gt;Mercurial&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/subversion/" title="subversion" rel="tag"&gt;subversion&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/svn/" title="SVN" rel="tag"&gt;SVN&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/trac/" title="Trac" rel="tag"&gt;Trac&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/web%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9/" title="Webサービス" rel="tag"&gt;Webサービス&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e7%ae%a1%e7%90%86/" title="プロジェクト管理" rel="tag"&gt;プロジェクト管理&lt;/a&gt;&lt;br /&gt;

	&lt;h2&gt;関連する記事&lt;/h2&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/175/" title="個人間の匿名仕事取引マーケットプレイス「Lancers」がオープン (2008年12月16日)"&gt;個人間の匿名仕事取引マーケットプレイス「Lancers」がオープン&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/200/" title="ニコニコ生放送の配信方法 - 3.アカウントの登録 (2009年10月15日)"&gt;ニコニコ生放送の配信方法 - 3.アカウントの登録&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/198/" title="ニコニコ生放送の配信方法 - 1.はじめに (2009年10月1日)"&gt;ニコニコ生放送の配信方法 - 1.はじめに&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/77/" title="無料で口コミ・レビューサイトが作れるサービス、Revdish (2008年3月4日)"&gt;無料で口コミ・レビューサイトが作れるサービス、Revdish&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/70/" title="アクセス解析サービス、Google Analyticsから特定のユーザを除外する方法 (2008年2月26日)"&gt;アクセス解析サービス、Google Analyticsから特定のユーザを除外する方法&lt;/a&gt; (0)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=lje8_win1-4:UyCLeYGohD8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=lje8_win1-4:UyCLeYGohD8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?i=lje8_win1-4:UyCLeYGohD8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dxd8/~4/lje8_win1-4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://dxd8.com/archives/210/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://dxd8.com/archives/210/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://dxd8.com/archives/210/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Phize</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[CakePHP 1.3のキャッシュやスラッグ(Inflector::slug)に要注意]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dxd8/~3/jInMr6PBPsw/" />
		<id>http://dxd8.com/?p=1449</id>
		<updated>2010-05-20T14:19:16Z</updated>
		<published>2010-05-09T13:05:50Z</published>
		<category scheme="http://dxd8.com" term="CakePHP" /><category scheme="http://dxd8.com" term="PHP" /><category scheme="http://dxd8.com" term="Inflector::slug" /><category scheme="http://dxd8.com" term="キャッシュ" /><category scheme="http://dxd8.com" term="スラッグ" />		<summary type="html"><![CDATA[CakePHPの最新版1.3を導入してみたところ、キャッシュがおかしな挙動をすることに気づきました。CakePHP 1.3を利用する場合には、Cacheヘルパーや(Cacheヘルパーなどが利用する)Inflector:: [...]]]></summary>
		<content type="html" xml:base="http://dxd8.com/archives/209/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-T5gvrg1Sr7UJyLtADugSgo3TOg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-T5gvrg1Sr7UJyLtADugSgo3TOg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-T5gvrg1Sr7UJyLtADugSgo3TOg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-T5gvrg1Sr7UJyLtADugSgo3TOg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;CakePHPの最新版1.3を導入してみたところ、キャッシュがおかしな挙動をすることに気づきました。CakePHP 1.3を利用する場合には、Cacheヘルパーや(Cacheヘルパーなどが利用する)Inflector::slug()に注意が必要なようです。&lt;/p&gt;

&lt;span id="more-1449"&gt;&lt;/span&gt;

&lt;div class="section"&gt;
&lt;h2&gt;事例&lt;/h2&gt;
&lt;p&gt;例えば、以下のような場面を想定してみます。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ビューから「element」というエレメントを複数箇所で呼び出す(あるいは、複数のビューから同じエレメントを呼び出す)。&lt;/li&gt;
  &lt;li&gt;一方では「$vars1」を渡し、もう一方では「$vars2」を渡す(呼び出し箇所ごとに異なる値を渡す)。&lt;/li&gt;
  &lt;li&gt;エレメントの出力をそれぞれ別々にキャッシュする。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;このような場合、エレメントの呼び出し時に、キャッシュのキーとしてそれぞれにユニークな文字列を指定することになっています。&lt;/p&gt;

&lt;pre class="code"&gt;&lt;code class="php"&gt;&amp;lt;?php e($this-&gt;element('element', array('cache' =&amp;gt; array('time' =&amp;gt; '+1 hour', 'key' =&amp;gt; 'element_1', 'vars' =&amp;gt; $vars1))); ?&amp;gt;
&amp;lt;?php e($this-&gt;element('element', array('cache' =&amp;gt; array('time' =&amp;gt; '+1 hour', 'key' =&amp;gt; 'element_2', 'vars' =&amp;gt; $vars2))); ?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ところが、&lt;em&gt;CakePHP1.3では、どちらのエレメントも同じ内容が出力されてしまいます&lt;/em&gt;。&lt;/p&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2&gt;原因&lt;/h2&gt;
&lt;p&gt;キャッシュファイルのファイル名を調べたところ、キャッシュファイル名がどちらも「element_l_m_t」と同じものになっていました。さらに調べてみると、&lt;em&gt;文字列からいわゆるスラッグを生成するInflector::slug()が正しく機能していない&lt;/em&gt;ことがわかりました。&lt;/p&gt;
&lt;p&gt;本来、Inflector::slug()に「CakePHP 1.3」という文字列を与えた場合、「CakePHP_1_3」のように英数字と区切り文字のみで構成された文字列が返されます。ところが、&lt;em&gt;CakePHP 1.3ではスラッグが正しく返されなかったり、空文字が返されてしまいます&lt;/em&gt;。&lt;/p&gt;

&lt;p&gt;同様の現象が&lt;a href="http://cakephp.lighthouseapp.com/projects/42648/tickets/582-function-slug-in-inflectorphp"&gt;#582 function slug in inflector.php - CakePHP&lt;/a&gt;で報告されていました。これによると、正規表現ライブラリである&lt;em&gt;&lt;abbr title="Perl Compatible Regular Expressions"&gt;PCRE&lt;/abbr&gt;ライブラリをコンパイルする際に、「--enable-utf8」オプションが指定されている場合で「--enable-unicode-properties」オプションが指定されていない場合に発生&lt;/em&gt;するようです。&lt;/p&gt;

&lt;p&gt;CakePHP 1.3からは、マルチバイト文字を含む文字列からスラッグを生成できるようになりましたが、この変更と&lt;abbr title="Perl Compatible Regular Expressions"&gt;PCRE&lt;/abbr&gt;ライブラリの問題が原因で、環境によっては正しくスラッグが生成できないようです。&lt;/p&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2&gt;解決策&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;abbr title="Perl Compatible Regular Expressions"&gt;PCRE&lt;/abbr&gt;ライブラリをコンパイルする際に、「--enable-utf8」オプションと「--enable-unicode-properties」オプションの両方を指定すれば解決&lt;/em&gt;するようです。&lt;/p&gt;
&lt;p&gt;今回は、&lt;em&gt;Inflector::slug()をCakePHP 1.2のものに置き換えることで解決&lt;/em&gt;しました(CakePHP 1.2.7のInflector::slug()は&lt;a href="http://github.com/cakephp/cakephp1x/blob/1.2.7/cake/libs/inflector.php"&gt;github&lt;/a&gt;などから参照できます)。&lt;/p&gt;
&lt;p&gt;Inflector::slug()を1.2.7のものに置き換えた場合、生成されるスラッグからはマルチバイト文字が削除されてしまいますが、CakePHPを1.2から利用してきたのであれば手軽な解決策かと思います。&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;一見正しく動作しているようでも問題が発生する可能性もあるので、CakePHP 1.3を利用する場合には、&lt;code class=""&gt;&amp;lt;?php echo Inflector::slug('CakePHP 1.3'); ?&amp;gt;&lt;/code&gt;の出力内容を確認しておいたほうがよいでしょう。&lt;/p&gt;

	タグ: &lt;a href="http://dxd8.com/archives/tag/cakephp/" title="CakePHP" rel="tag"&gt;CakePHP&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/inflectorslug/" title="Inflector::slug" rel="tag"&gt;Inflector::slug&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/php/" title="PHP" rel="tag"&gt;PHP&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%82%ad%e3%83%a3%e3%83%83%e3%82%b7%e3%83%a5/" title="キャッシュ" rel="tag"&gt;キャッシュ&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%82%b9%e3%83%a9%e3%83%83%e3%82%b0/" title="スラッグ" rel="tag"&gt;スラッグ&lt;/a&gt;&lt;br /&gt;

	&lt;h2&gt;関連する記事&lt;/h2&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/208/" title="CakePHPのシェルを簡単に起動&amp;#038;多重起動を禁止するスクリプト (2010年4月29日)"&gt;CakePHPのシェルを簡単に起動&amp;#038;多重起動を禁止するスクリプト&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/150/" title="DreamHostでPHPのエラーログを出力 (2008年8月5日)"&gt;DreamHostでPHPのエラーログを出力&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/123/" title="CodeIgniter徹底入門が発売&amp;#038;出版キャンペーン実施中 (2008年6月10日)"&gt;CodeIgniter徹底入門が発売&amp;#038;出版キャンペーン実施中&lt;/a&gt; (2)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/142/" title="CodeIgniterで管理ページを作成する (2008年7月5日)"&gt;CodeIgniterで管理ページを作成する&lt;/a&gt; (1)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/6/" title="PHPの関数でコールバック関数を引数にする (2007年12月28日)"&gt;PHPの関数でコールバック関数を引数にする&lt;/a&gt; (0)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=jInMr6PBPsw:iUsD7qARSGs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=jInMr6PBPsw:iUsD7qARSGs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?i=jInMr6PBPsw:iUsD7qARSGs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dxd8/~4/jInMr6PBPsw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://dxd8.com/archives/209/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://dxd8.com/archives/209/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://dxd8.com/archives/209/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Phize</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[CakePHPのシェルを簡単に起動&amp;多重起動を禁止するスクリプト]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dxd8/~3/RpqQSYOtT0c/" />
		<id>http://dxd8.com/?p=1408</id>
		<updated>2010-04-29T07:01:13Z</updated>
		<published>2010-04-29T06:42:11Z</published>
		<category scheme="http://dxd8.com" term="CakePHP" /><category scheme="http://dxd8.com" term="PHP" /><category scheme="http://dxd8.com" term="サーバ" /><category scheme="http://dxd8.com" term="cron" /><category scheme="http://dxd8.com" term="Linux" /><category scheme="http://dxd8.com" term="シェルスクリプト" />		<summary type="html"><![CDATA[CakePHPをコマンドラインから簡単に起動&#38;多重起動を禁止するシェルスクリプトを作成してみました。




このシェルスクリプトの利点
今回のシェルスクリプトを利用すると、CakePHPのコマンドラ [...]]]></summary>
		<content type="html" xml:base="http://dxd8.com/archives/208/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yS-hj5cAm7hbIu4qgd6QQSQ_Xn8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yS-hj5cAm7hbIu4qgd6QQSQ_Xn8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yS-hj5cAm7hbIu4qgd6QQSQ_Xn8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yS-hj5cAm7hbIu4qgd6QQSQ_Xn8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;CakePHPをコマンドラインから簡単に起動&amp;amp;多重起動を禁止するシェルスクリプトを作成してみました。&lt;/p&gt;

&lt;span id="more-1408"&gt;&lt;/span&gt;

&lt;div class="section"&gt;
&lt;h2&gt;このシェルスクリプトの利点&lt;/h2&gt;
&lt;p&gt;今回のシェルスクリプトを利用すると、&lt;em&gt;CakePHPのコマンドラインからの起動が以下の点で便利になります&lt;/em&gt;。(&lt;a href="http://book.cakephp.org/ja/view/1106/The-CakePHP-Console"&gt;CakePHPのシェルやタスク機能&lt;/a&gt;は、cronやコマンドラインからCakePHPを利用したいときに便利な機能です。)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;アプリケーションディレクトリのパス(-appオプション)を指定する必要がない。&lt;/li&gt;
  &lt;li&gt;どこからシェルスクリプトを実行しても動作する。&lt;/li&gt;
  &lt;li&gt;ディレクトリ構成の異なるサーバーでも同じシェルスクリプトで動作する(CakePHPのディレクトリ構成が同じ場合)。&lt;/li&gt;
  &lt;li&gt;cronなどを利用している場合に多重起動を防止できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2&gt;参考資料&lt;/h2&gt;
&lt;p&gt;シェルスクリプトの作成に当たっては、はてなの&lt;a href="http://q.hatena.ne.jp/1134826784"&gt;シェルスクリプトで正しい二重起動チェックを解説しているページ、もしくは方法を教えてください。&lt;/a&gt;を参考にしました。シンボリックリンクを排他処理用のロックファイルとして利用する方法になります。&lt;/p&gt;

&lt;p&gt;CakePHP用に修正したほか、主に以下の点を変更しています。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;同名のシェルスクリプトが実行できるように、絶対パスを基にシンボリックリンクを作成するようにした。&lt;/li&gt;
  &lt;li&gt;サーバーの再起動時にシンボリックリンクが残らないようにした。&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2&gt;CakePHPのディレクトリ構成&lt;/h2&gt;
&lt;p&gt;CakePHPのディレクトリ構成は以下のようなものを想定しています。構成が異なる場合でも、シェルスクリプト内の設定箇所をCakePHPウェブルート内のindex.phpの設定に合わせて変更すれば動作します。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;/virtual/user/ (サーバールート)
    &lt;ul&gt;
      &lt;li&gt;cakephp/
        &lt;ul&gt;
          &lt;li&gt;1.3/
            &lt;ul&gt;
              &lt;li&gt;cake/ (CakePHPコア)&lt;/li&gt;
              &lt;li&gt;plugins/&lt;/li&gt;
              &lt;li&gt;vendors/&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;apps/
            &lt;ul&gt;
              &lt;li&gt;app/ (CakePHPアプリケーション)
                &lt;ul&gt;
                  &lt;li&gt;vendors/
                    &lt;ul&gt;
                      &lt;li&gt;shells/
                        &lt;ul&gt;
                          &lt;li&gt;shell_task.sh (シェルスクリプト)&lt;/li&gt;
                        &lt;/ul&gt;
                      &lt;/li&gt;
                    &lt;/ul&gt;
                  &lt;/li&gt;
                &lt;/ul&gt;
              &lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;public_html/
        &lt;ul&gt;
          &lt;li&gt;example.com/ (CakePHPウェブルート)
            &lt;ul&gt;
              &lt;li&gt;index.php (CakePHPのディレクトリ構成を定義)&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2&gt;シェルスクリプト&lt;/h2&gt;
&lt;dl class="code"&gt;
  &lt;dt&gt;/virtual/user/cakephp/apps/app/vendors/shells/shell_task.sh&lt;/dt&gt;
  &lt;dd&gt;&lt;pre class="code"&gt;&lt;code class="shell"&gt;#!/bin/sh

########################################
# 設定 (ここから環境に合わせて変更)
########################################
# CakePHP(コアとアプリケーション)を含むディレクトリへ移動
# `dirname $0` で、このシェルスクリプトがあるディレクトリへの相対パスが返る
#
# この例の場合は /virtual/user/cakephp へ移動する
cd `dirname $0`/../../../../ || exit 1

# CakePHPのアプリケーションディレクトリ(app)を含むディレクトリの絶対パス
# CakePHPの定数 ROOT に合わせる
# `pwd` でカレントディレクトリが返る
CAKE_ROOT="`pwd`/apps"

# CakePHPのアプリケーション(app)のディレクトリ名
# CakePHPの定数 APP_DIR に合わせる
CAKE_APP_DIR="app"

# CakePHPのcakeディレクトリを含むディレクトリの絶対パス
# CakePHPの定数 CAKE_CORE_INCLUDE_PATH に合わせる
CAKE_CORE_INCLUDE_PATH="`pwd`/1.3"

# Cakeコマンドのシェル名
CAKE_SHELL="shell"

# Cakeコマンドのタスク名
# シェルのみの場合は空文字にする
CAKE_TASK="task"
########################################
# 設定 (ここまで環境に合わせて変更)
########################################

########################################
# Cakeコマンドの実行 (ここから変更不要)
########################################

# 排他処理用のシンボリックリンクの名前
# `echo $CAKE_ROOT/$CAKE_APP_DIR | sed -e 's/\//_/g'` でパス中の / を _ に置換
# `basename $0` でこのシェルスクリプトのファイル名が返る
#
#   CAKE_ROOT="/virtual/user/cakephp/apps"
#   CAKE_APP_DIR="app"
#
# の場合で、このシェルスクリプトのファイル名が shell_task.sh の場合、シンボリックリンクは、
#
#   /tmp/_virtual_user_cakephp_apps_app_shell_task.sh
#
# となる
LOCK_NAME="/tmp/`echo $CAKE_ROOT/$CAKE_APP_DIR | sed -e 's/\//_/g'`_`basename $0`"

# シンボリックリンクを作成
# シンボリックリンクが既に存在している場合(=シェルスクリプトを実行中)は終了
ln -s /dummy $LOCK_NAME || exit 1

# シグナル受信時にシンボリックリンクを削除
# 1=HUP(再起動), 2=INT(割り込み), 3=QUIT(終了), 15=TERM(終了)
trap "rm $LOCK_NAME; exit 1" 1 2 3 15

# Cakeコマンドを実行
php $CAKE_CORE_INCLUDE_PATH/cake/console/cake.php $CAKE_SHELL $CAKE_TASK -app $CAKE_ROOT/$CAKE_APP_DIR

# シンボリックリンクを削除
rm $LOCK_NAME || exit 1

# 終了
exit 0&lt;/code&gt;&lt;/pre&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;

	タグ: &lt;a href="http://dxd8.com/archives/tag/cakephp/" title="CakePHP" rel="tag"&gt;CakePHP&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/cron/" title="cron" rel="tag"&gt;cron&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/linux/" title="Linux" rel="tag"&gt;Linux&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/php/" title="PHP" rel="tag"&gt;PHP&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%82%b5%e3%83%bc%e3%83%90/" title="サーバ" rel="tag"&gt;サーバ&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%82%b7%e3%82%a7%e3%83%ab%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%83%88/" title="シェルスクリプト" rel="tag"&gt;シェルスクリプト&lt;/a&gt;&lt;br /&gt;

	&lt;h2&gt;関連する記事&lt;/h2&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/159/" title="DreamHostの11周年記念キャンペーン枠が残りわずか！ (2008年10月5日)"&gt;DreamHostの11周年記念キャンペーン枠が残りわずか！&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/170/" title="海外共用サーバー「DreamHost」の申し込み・契約方法 (2008年11月13日)"&gt;海外共用サーバー「DreamHost」の申し込み・契約方法&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/5/" title="PHPでコールバック関数にオブジェクトのメソッドを指定する (2007年12月27日)"&gt;PHPでコールバック関数にオブジェクトのメソッドを指定する&lt;/a&gt; (1)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/141/" title="CodeIgniterでURIの形式を統一する (2008年7月4日)"&gt;CodeIgniterでURIの形式を統一する&lt;/a&gt; (3)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/152/" title="Dreamweaver 8でDreamHostのファイルが表示された (2008年8月7日)"&gt;Dreamweaver 8でDreamHostのファイルが表示された&lt;/a&gt; (0)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=RpqQSYOtT0c:4SW1LZw0vbk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=RpqQSYOtT0c:4SW1LZw0vbk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?i=RpqQSYOtT0c:4SW1LZw0vbk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dxd8/~4/RpqQSYOtT0c" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://dxd8.com/archives/208/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://dxd8.com/archives/208/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://dxd8.com/archives/208/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Phize</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[EclipseベースのスクレイピングIDE「WebSundew」]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dxd8/~3/HQG-NXF0A10/" />
		<id>http://dxd8.com/?p=1376</id>
		<updated>2010-03-09T14:36:10Z</updated>
		<published>2010-03-09T14:14:47Z</published>
		<category scheme="http://dxd8.com" term="ソフトウェア" /><category scheme="http://dxd8.com" term="Eclipse" /><category scheme="http://dxd8.com" term="WebSundew" /><category scheme="http://dxd8.com" term="インデクサｰ" /><category scheme="http://dxd8.com" term="クローラー" /><category scheme="http://dxd8.com" term="スクレイピング" /><category scheme="http://dxd8.com" term="スパイダリング" /><category scheme="http://dxd8.com" term="スパイダー" />		<summary type="html"><![CDATA[Webスクレイピング(スクリーンスクレイピング)に便利なソフトウェア「WebSundew」を紹介します。



マッシュアップサイトの構築やデータマイニングを行う際に、インターネット上のWebサイトやブログから特 [...]]]></summary>
		<content type="html" xml:base="http://dxd8.com/archives/207/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5qqsQevv4VuGp-WeB-I5jJA0SeE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5qqsQevv4VuGp-WeB-I5jJA0SeE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5qqsQevv4VuGp-WeB-I5jJA0SeE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5qqsQevv4VuGp-WeB-I5jJA0SeE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Webスクレイピング(スクリーンスクレイピング)に便利なソフトウェア「WebSundew」を紹介します。&lt;/p&gt;

&lt;span id="more-1376"&gt;&lt;/span&gt;

&lt;p&gt;マッシュアップサイトの構築やデータマイニングを行う際に、インターネット上のWebサイトやブログから特定のデータを取り出して利用したいということはよくあると思います。公式に&lt;abbr title="Application Programming Interface"&gt;API&lt;/abbr&gt;などが用意されていない場合に、広く利用されているのがスクレイピングと呼ばれる技術です。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.websundew.com/"&gt;WebSundew&lt;/a&gt;はEclipseをベースとしたスクレイピング&lt;abbr title="Integrated Development Environment"&gt;IDE&lt;/abbr&gt;で、スクレイピングに関する処理を全て&lt;abbr title="Graphical User Interface"&gt;GUI&lt;/abbr&gt;上で行うことができるソフトウェア(有償)です。実際に試用版を利用してみたので、スクリーンショットとともに紹介します。&lt;/p&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;WebSundewの構成要素&lt;/h2&gt;
  &lt;p&gt;WebSundewによるスクレイピング処理の構成要素として、「Webマクロ」、「ページパターン」、「データパターン」、「データビュー」、「データソース」、「エクストラクション」があります。それぞれ、「ページ遷移などの処理を行うマクロ」、「ページ送りのリンクを抽出するためのパターン」、「データ項目を抽出するためのパターン」、「抽出データの書式」、「抽出データの出力形式」、「抽出処理の定義」となっています。&lt;/p&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;Webマクロの定義&lt;/h2&gt;
  &lt;p&gt;Googleの検索結果のページを対象とした簡単な利用例になります。今回はサイトのタイトルと概要を1組として、検索結果1ページから複数のデータを抽出してみます。&lt;/p&gt;
  &lt;p&gt;まず、アドレスバーにアドレスを入力して対象のページを開きます。「Record」ボタンをクリックし、すぐに「Stop」ボタンをクリックしてWebマクロを記録します。ウィンドウが開くので必要な設定をして閉じます。&lt;/p&gt;
  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_1.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_1-150x89.png" alt="画像: Webマクロの定義 - WebSundew" width="150" height="89" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;データパターンの定義&lt;/h2&gt;
  &lt;p&gt;「New Data Pattern」ボタンから「Data Iterators」→「Simple Iterator」をクリックします。ページ上をクリックして、抽出したい複数のデータ全体を囲んでいる要素を選択して「Next」ボタンをクリックします。抽出したい項目を1組分のみ「Add」ボタンで追加していきます。「Next」ボタンを押すと、自動的に複数のデータが選択されるので、確認して「Nextボタン」をクリックします。その後も必要な設定をしてウィンドウを閉じます。&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_2.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_2-150x67.png" alt="画像: データパターンの定義 - WebSundew" width="150" height="67" /&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_3.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_3-150x108.png" alt="画像: ルートノードの選択 - WebSundew" width="150" height="108" /&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_4.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_4-150x106.png" alt="画像: パターンノードの定義 - WebSundew" width="150" height="106" /&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_5.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_5-150x108.png" alt="画像: パターンの選択 - WebSundew" width="150" height="108" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;データビューの定義&lt;/h2&gt;
  &lt;p&gt;「New Data View」ボタンをクリックし、「Data Pattern」から先ほどのデータパターンを選択します。その後も必要な設定をしてウィンドウを閉じます。&lt;/p&gt;
  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_6.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_6-150x71.png" alt="画像: データビューの定義- WebSundew" width="150" height="71" /&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_7.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_7-150x112.png" alt="画像: データパターンの選択 - WebSundew" width="150" height="112" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;データソースの定義&lt;/h2&gt;
  &lt;p&gt;「New Data View」ボタンから出力形式を選択します(Excelにしました)。「Data View」から先ほどのデータビューを選択します。その後も必要な設定をしてウィンドウを閉じます。&lt;/p&gt;
  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_8.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_8-150x69.png" alt="画像: データソースの定義 - WebSundew" width="150" height="69" /&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_9.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_9-150x137.png" alt="画像: データビューの選択 - WebSundew" width="150" height="137" /&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_10.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_10-150x137.png" alt="画像: データソースの設定 - WebSundew" width="150" height="137" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;エクストラクションの定義&lt;/h2&gt;
  &lt;p&gt;「New Extraction」ボタンをクリックします。最初に記録したWebマクロを選択して「Next」ボタンをクリックします。「Data Source」の「Add」ボタンをクリックし、先ほどのデータソースを選択します。その後も必要な設定をしてウィンドウを閉じます。&lt;/p&gt;
  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_11.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_11-150x115.png" alt="画像: エクストラクションの定義 - WebSundew" width="150" height="115" /&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_12.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_12-150x132.png" alt="画像: Webマクロの選択 - WebSundew" width="150" height="132" /&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_13.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_13-150x111.png" alt="画像: エクストラクションの設定 - WebSundew" width="150" height="111" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;データの抽出&lt;/h2&gt;
  &lt;p&gt;「Start Extraction」ボタンから先ほどのエクストラクションを選択すると、実際の抽出処理が開始されます。&lt;/p&gt;
  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_14.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_14-150x38.png" alt="画像: エクストラクションの選択 - WebSundew" width="150" height="38" /&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_15.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_15-150x107.png" alt="画像: エクストラクションの実行 - WebSundew" width="150" height="107" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;日本語も問題なく抽出できました。&lt;/p&gt;
  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/websundew_16.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/websundew_16-150x106.png" alt="画像: 抽出されたデータ(Excel) - WebSundew" width="150" height="106" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;p&gt;利用例では触れませんでしたが、XPathを始めとした設定項目も色々とあり、かなり柔軟なスクレイピング処理ができるようになっています。自分でプログラムを製作する場合でも、XPathを利用すれば柔軟性のある処理ができますが、&lt;abbr title="Graphical User Interface"&gt;GUI&lt;/abbr&gt;上で全て完結してしまうのは便利ですね。&lt;/p&gt;

&lt;p&gt;WebSundewには3種類のエディションがあり、Standard Edition(今回試用したエディション)以上では、いわゆる一覧ページと詳細ページが別れているようなサイトの場合でも再帰的なスクレイピングが行えます。Professionalでは、スケジューリング機能やコマンドライン版、JavaScriptへの対応などがあるようです。Liteは実用性を考えると物足りないかもしれませんね。&lt;/p&gt;

&lt;p&gt;自分の場合はPHPを利用しているため、購入には至りませんでしたが、プログラミングはできないけれどスクレイピングはしてみたい、という人にとっては便利なソフトウェアなのではないでしょうか。&lt;/p&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;フリーのスクレイピングIDE「Web-Hervest」&lt;/h2&gt;
  &lt;p&gt;同種のソフトウェアに、フリーで利用できる&lt;a href="http://web-harvest.sourceforge.net/"&gt;Web-Hervest&lt;/a&gt;というものもあります〈こちらもEclipseがベースのようです)。&lt;abbr title="Extensible Markup Language"&gt;XML&lt;/abbr&gt;を書くことによって、こちらもプログラムを製作するよりは簡単にスクレイピング処理が行えます(再帰的なスクレイピングを行うための関数も同梱されています)。ただし、整形・出力処理はJavaの知識がないと難しいかと思います。&lt;/p&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
  &lt;h2&gt;PHP製のスクレイピングライブラリ&lt;/h2&gt;
  &lt;p&gt;PHPを利用する場合には、「&lt;a href="http://dxd8.com/archives/85/"&gt;PHPでのスクレイピングに役立つライブラリ&lt;/a&gt;」で紹介しているライブラリ等が利用できます。PHPを利用してスパイダーやクローラーなどを製作する場合には、こちらも参考にしてみてください。&lt;/p&gt;
&lt;/div&gt;

	タグ: &lt;a href="http://dxd8.com/archives/tag/eclipse/" title="Eclipse" rel="tag"&gt;Eclipse&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/websundew/" title="WebSundew" rel="tag"&gt;WebSundew&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%82%a4%e3%83%b3%e3%83%87%e3%82%af%e3%82%b5%ef%bd%b0/" title="インデクサｰ" rel="tag"&gt;インデクサｰ&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%82%af%e3%83%ad%e3%83%bc%e3%83%a9%e3%83%bc/" title="クローラー" rel="tag"&gt;クローラー&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%82%b9%e3%82%af%e3%83%ac%e3%82%a4%e3%83%94%e3%83%b3%e3%82%b0/" title="スクレイピング" rel="tag"&gt;スクレイピング&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%82%b9%e3%83%91%e3%82%a4%e3%83%80%e3%83%aa%e3%83%b3%e3%82%b0/" title="スパイダリング" rel="tag"&gt;スパイダリング&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%82%b9%e3%83%91%e3%82%a4%e3%83%80%e3%83%bc/" title="スパイダー" rel="tag"&gt;スパイダー&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/software/" title="ソフトウェア" rel="tag"&gt;ソフトウェア&lt;/a&gt;&lt;br /&gt;

	&lt;h2&gt;関連する記事&lt;/h2&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/196/" title="FirefoxのSQLiteデータベースをVACUUMしてみた (2009年8月1日)"&gt;FirefoxのSQLiteデータベースをVACUUMしてみた&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/53/" title="日本語入力システム、ATOK 2008が発売 (2008年2月9日)"&gt;日本語入力システム、ATOK 2008が発売&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/182/" title="XAMPPの設定(バーチャルホストなど)を別フォルダに分ける方法 (2009年1月24日)"&gt;XAMPPの設定(バーチャルホストなど)を別フォルダに分ける方法&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/180/" title="TortoiseSVN(Subversion)でファイル・フォルダを除外する方法 (2009年1月10日)"&gt;TortoiseSVN(Subversion)でファイル・フォルダを除外する方法&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/195/" title="アニメーション制作ソフト「Anime Studio 5」が無料配布中 (2009年7月12日)"&gt;アニメーション制作ソフト「Anime Studio 5」が無料配布中&lt;/a&gt; (0)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=HQG-NXF0A10:bS4ozDfssLs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=HQG-NXF0A10:bS4ozDfssLs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?i=HQG-NXF0A10:bS4ozDfssLs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dxd8/~4/HQG-NXF0A10" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://dxd8.com/archives/207/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://dxd8.com/archives/207/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://dxd8.com/archives/207/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Phize</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[Remember The Milkのスマートリストで来月のタスクを表示]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dxd8/~3/rOVEKPXhlTY/" />
		<id>http://dxd8.com/?p=1350</id>
		<updated>2010-02-16T13:09:24Z</updated>
		<published>2010-02-16T13:00:11Z</published>
		<category scheme="http://dxd8.com" term="Webサービス" /><category scheme="http://dxd8.com" term="Remember The Milk" /><category scheme="http://dxd8.com" term="RTM" />		<summary type="html"><![CDATA[タスク管理の定番ツール「Remember The Milk」のスマートリストを整理しました。期限でタスクを抽出するリストを中心に整理したのですが、来月のタスクを検索する方法に少し悩んだので紹介しておきます。



 [...]]]></summary>
		<content type="html" xml:base="http://dxd8.com/archives/206/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ltbXouMyftq2nDZNGk5lreDm4wE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ltbXouMyftq2nDZNGk5lreDm4wE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ltbXouMyftq2nDZNGk5lreDm4wE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ltbXouMyftq2nDZNGk5lreDm4wE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;タスク管理の定番ツール「Remember The Milk」のスマートリストを整理しました。期限でタスクを抽出するリストを中心に整理したのですが、来月のタスクを検索する方法に少し悩んだので紹介しておきます。&lt;/p&gt;

&lt;span id="more-1350"&gt;&lt;/span&gt;

&lt;p&gt;Remember The Milkでのスマートリストの作成方法や利用できる検索条件については以下のページが参考になります。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://blog.rememberthemilk.jp/2007/10/10/61/"&gt;Tips ： スマートリストを使いこなそう&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.rememberthemilk.com/help/answers/search/advanced.rtm"&gt;How do I use the advanced search?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.rememberthemilk.com/2007/05/21-useful-searches-for-your-tasks/"&gt;21 useful searches for your tasks&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://d.hatena.ne.jp/hmiyaza1/20070228/1173373596"&gt;Remember The Milk 検索を極める&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://d.hatena.ne.jp/hmiyaza1/20070510/1178789499"&gt;Remember The Milk エキスパート検索を極めるための２１の例文&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="section"&gt;
&lt;h2&gt;来月中に期限が来るタスクを検索&lt;/h2&gt;
&lt;p&gt;始めは&lt;code&gt;"next month"&lt;/code&gt;のようなキーワードを使用してみたのですが認識されませんでした。そこで、利用できる別のキーワードを組み合わせた結果、来月中に期限が来るタスクを抽出する検索キーワードは以下のようになりました(もっと良い方法があるのかもしれませんが…)。&lt;/p&gt;

&lt;pre class="code"&gt;&lt;code&gt;dueWithin:"2 month of 1st" AND dueAfter:"end of month"&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;今月の1日から2ヶ月(&lt;code&gt;2 month of 1st&lt;/code&gt;)の間が期限(&lt;code&gt;dueWithin:&lt;/code&gt;)で、かつ今月末(&lt;code&gt;"end of month"&lt;/code&gt;)より期限が後(&lt;code&gt;dueAfter:&lt;/code&gt;)のタスクを検索しています。&lt;/p&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2&gt;来月以降に期限が来るタスクを検索&lt;/h2&gt;
&lt;p&gt;来月以降に期限が来るタスクを全て抽出する方法はもっと簡単です。&lt;/p&gt;
&lt;pre class="code"&gt;&lt;code&gt;dueAfter:"end of month"&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;今月末(&lt;code&gt;"end of month"&lt;/code&gt;)より期限が後(&lt;code&gt;dueAfter:&lt;/code&gt;)のタスクを検索しています。&lt;/p&gt;
&lt;p&gt;自分の場合は繰り返しタスクを除外したかったので、上記の検索キーワードの最後に&lt;code&gt; AND isRepeating:false&lt;/code&gt;(リピート設定がなし)も追加しました。&lt;/p&gt;
&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2&gt;その他&lt;/h2&gt;
&lt;p&gt;その他、今回の整理で以下のリストを(再)作成してみました。&lt;/p&gt;

&lt;dl class="code"&gt;
  &lt;dt&gt;今日中に期限が来るタスクを検索&lt;/dt&gt;
  &lt;dd&gt;
    &lt;pre class="code"&gt;&lt;code&gt;due:today&lt;/code&gt;&lt;/pre&gt;
  &lt;/dd&gt;
&lt;/dl&gt;

&lt;dl class="code"&gt;
  &lt;dt&gt;明日中に期限が来るタスクを検索&lt;/dt&gt;
  &lt;dd&gt;
    &lt;pre class="code"&gt;&lt;code&gt;due:tomorrow&lt;/code&gt;&lt;/pre&gt;
  &lt;/dd&gt;
&lt;/dl&gt;

&lt;dl class="code"&gt;
  &lt;dt&gt;今月中に期限が来るタスクを検索(繰り返しタスクは除外)&lt;/dt&gt;
  &lt;dd&gt;
    &lt;pre class="code"&gt;&lt;code&gt;dueWithin:"1 month of 1st" AND isRepeating:false&lt;/code&gt;&lt;/pre&gt;
  &lt;/dd&gt;
&lt;/dl&gt;

&lt;dl class="code"&gt;
  &lt;dt&gt;期限切れのタスクを検索&lt;/dt&gt;
  &lt;dd&gt;
    &lt;pre class="code"&gt;&lt;code&gt;dueBefore:today&lt;/code&gt;&lt;/pre&gt;
  &lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;

&lt;p&gt;タスクが整理されて確認がかなり楽になりました。&lt;/p&gt;

&lt;p&gt;ただし、リストタブの並び順は変えられないため、リストの作りすぎはかえってストレスになる可能性がありそうですね。そういった場合は、リスト名に連番を付けてやるとタブが整理されて少し見やすくなります。&lt;/p&gt;

	タグ: &lt;a href="http://dxd8.com/archives/tag/remember-the-milk/" title="Remember The Milk" rel="tag"&gt;Remember The Milk&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/rtm/" title="RTM" rel="tag"&gt;RTM&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/web%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9/" title="Webサービス" rel="tag"&gt;Webサービス&lt;/a&gt;&lt;br /&gt;

	&lt;h2&gt;関連する記事&lt;/h2&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/28/" title="XHTML文書にニコニコ動画のサムネイルを埋め込む方法 (2008年1月15日)"&gt;XHTML文書にニコニコ動画のサムネイルを埋め込む方法&lt;/a&gt; (2)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/77/" title="無料で口コミ・レビューサイトが作れるサービス、Revdish (2008年3月4日)"&gt;無料で口コミ・レビューサイトが作れるサービス、Revdish&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/145/" title="メガネが似合うかシミュレーションできるサイト (2008年7月19日)"&gt;メガネが似合うかシミュレーションできるサイト&lt;/a&gt; (2)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/10/" title="MyMiniCityを設置してみました (2007年12月30日)"&gt;MyMiniCityを設置してみました&lt;/a&gt; (7)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/154/" title="YouTubeにアノテーション機能と字幕機能が追加 (2008年8月29日)"&gt;YouTubeにアノテーション機能と字幕機能が追加&lt;/a&gt; (3)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=rOVEKPXhlTY:Yvk4cTZxaFg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=rOVEKPXhlTY:Yvk4cTZxaFg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?i=rOVEKPXhlTY:Yvk4cTZxaFg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dxd8/~4/rOVEKPXhlTY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://dxd8.com/archives/206/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://dxd8.com/archives/206/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://dxd8.com/archives/206/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Phize</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[Gumblarウイルス感染の防止・対策とチェック・駆除方法]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dxd8/~3/15nBpn3Ge40/" />
		<id>http://dxd8.com/?p=1304</id>
		<updated>2010-02-10T18:01:14Z</updated>
		<published>2010-01-09T14:00:19Z</published>
		<category scheme="http://dxd8.com" term="セキュリティ" /><category scheme="http://dxd8.com" term="8080" /><category scheme="http://dxd8.com" term="Gumblar" /><category scheme="http://dxd8.com" term="ウイルス" /><category scheme="http://dxd8.com" term="ガンブラー" /><category scheme="http://dxd8.com" term="マルウェア" />		<summary type="html"><![CDATA[「危険なGENOウイルス「Gumblar」「Martuz」が感染拡大中」でも取り上げたGumblar(ガンブラー)ウイルスが、昨年末から再び感染を拡大しているとして、JCERT/CCなどが注意喚起を行っています。Gumb [...]]]></summary>
		<content type="html" xml:base="http://dxd8.com/archives/205/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Wab0gArEuIkOYiEjUDwdaLBcwPE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wab0gArEuIkOYiEjUDwdaLBcwPE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Wab0gArEuIkOYiEjUDwdaLBcwPE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wab0gArEuIkOYiEjUDwdaLBcwPE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;「&lt;a href="http://dxd8.com/archives/192/"&gt;危険なGENOウイルス「Gumblar」「Martuz」が感染拡大中&lt;/a&gt;」でも取り上げた&lt;em&gt;Gumblar(ガンブラー)ウイルス&lt;/em&gt;が、昨年末から再び感染を拡大しているとして、JCERT/CCなどが注意喚起を行っています。&lt;em&gt;Gumblarウイルスへの感染の防止・対策とチェック・駆除方法をまとめました&lt;/em&gt;ので参考にしてください。&lt;/p&gt;

&lt;span id="more-1304"&gt;&lt;/span&gt;

&lt;div id="" class="section"&gt;
  &lt;h2&gt;目次&lt;/h2&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href="#gumblar-measure"&gt;Gumblarウイルスへの感染防止・対策&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#gumblar-check"&gt;Gumblarウイルスへの感染のチェック&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#gumblar-stampout"&gt;Gumblarウイルスの駆除&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

&lt;div id="gumblar-measure" class="section"&gt;
  &lt;h2&gt;1.Gumblarウイルスへの感染防止・対策&lt;/h2&gt;
  &lt;p&gt;Adobe Acrobat、Adobe Reader、Adobe Flash Player、Java(JRE)、Microsoft製品を利用している場合は、&lt;em&gt;ソフトウェアのアップデート&lt;/em&gt;を行ってください。Gumblarウイルスは、これらのソフトウェアの脆弱性を利用していることが確認されています。&lt;/p&gt;
  &lt;p&gt;また、&lt;em&gt;セキュリティソフトのアップデート&lt;/em&gt;や、&lt;em&gt;信用できるサイト以外でのスクリプトの無効化&lt;/em&gt;もおすすめします。&lt;/p&gt;

  &lt;div class="section"&gt;
    &lt;h3&gt;1-1.Adobe Acrobat / Adobe Readerのアップデート&lt;/h3&gt;
    &lt;del datetime="2010-01-21T23:33:06+09:00"&gt;&lt;p&gt;&lt;strong&gt;現時点では、Adobe Acrobat / Adobe Readerのアップデートは有効な対策ではありません。&lt;/strong&gt;2010年1月13日(日本時間)に修正プログラムが公開予定のため、公開後に改めてアップデートを行ってください(軽減策は&lt;a href="http://www.jpcert.or.jp/at/2010/at100001.txt"&gt;JCERT/CCによる注意喚起&lt;/a&gt;を参考)。&lt;/p&gt;&lt;/del&gt;
    &lt;ol&gt;
      &lt;li&gt;メニューから「ヘルプ」→「アップデートの有無をチェック」で最新バージョンを確認、アップデート。&lt;/li&gt;
    &lt;/ol&gt;
    &lt;p&gt;ソフトからのアップデートができない場合は、&lt;a href="http://www.adobe.com/downloads/"&gt;Adobe - Downloads&lt;/a&gt;から最新版をインストールしてください。&lt;/p&gt;
  &lt;/div&gt;

  &lt;div class="section"&gt;
    &lt;h3&gt;1-2.Adobe Flash Playerのアップデート&lt;/h3&gt;
    &lt;ol&gt;
      &lt;li&gt;&lt;a href="http://www.adobe.com/jp/software/flash/about/"&gt;Adobe Flash Player:Version Information&lt;/a&gt;から現在のバージョン(「Version Information」)と最新バージョンを確認。&lt;/li&gt;
      &lt;li&gt;バージョンが古い場合は、&lt;a href="http://get.adobe.com/jp/flashplayer/"&gt;Adobe Flash Playerのインストール&lt;/a&gt;から最新版をインストール。&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;

  &lt;div class="section"&gt;
    &lt;h3&gt;1-3.Javaのアップデート&lt;/h3&gt;
    &lt;ol&gt;
      &lt;li&gt;&lt;a href="http://www.java.com/ja/download/installed.jsp"&gt;Java ソフトウェアのインストール状況の確認&lt;/a&gt;から現在のバージョンを確認。&lt;/li&gt;
      &lt;li&gt;バージョンが古い場合は、&lt;a href="http://java.com/ja/download/manual.jsp?locale=ja&amp;amp;host=java.com"&gt;全オペレーティングシステムの Java のダウンロード一覧&lt;/a&gt;から最新版をインストール。&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;

  &lt;div class="section"&gt;
    &lt;h3&gt;1-4.Microsoft製品のアップデート&lt;/h3&gt;
    &lt;ol&gt;
      &lt;li&gt;Internet Explorer&lt;a href="https://www.update.microsoft.com/"&gt;Microsoft Update&lt;/a&gt;にアクセスし、最新のセキュリティ更新プログラムを適用。&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;

  &lt;div class="section"&gt;
    &lt;h3&gt;1-5.セキュリティソフトのアップデート&lt;/h3&gt;
    &lt;p&gt;利用しているセキュリティソフトのアップデートを行ってください。&lt;/p&gt;
  &lt;/div&gt;

  &lt;div class="section"&gt;
    &lt;h3&gt;1-6.スクリプトの無効化&lt;/h3&gt;
    &lt;p&gt;信用できるサイト以外では、スクリプト(JavaScript / Java / Flashなど)の動作を無効化することをおすすめします。&lt;em&gt;より簡単・便利に設定を変更できるFirefoxなどの利用がおすすめ&lt;/em&gt;です。&lt;/p&gt;
    &lt;p&gt;Internet Explorerを利用している場合は、「ツール」→「インターネットオプション」→「セキュリティ」タブ→「レベルのカスタマイズ」から設定を行います。&lt;/p&gt;
    &lt;p&gt;Firefox(Mozillaベースのブラウザ)の場合は、拡張機能の&lt;a href="https://addons.mozilla.org/ja/firefox/addon/722"&gt;NoScript&lt;/a&gt;を導入すると便利です。&lt;em&gt;サイト単位、スクリプト単位でスクリプトの有効化・無効化&lt;/em&gt;ができるようになります。&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;div id="gumblar-check" class="section"&gt;
  &lt;h2&gt;2.Gumblarウイルスへの感染のチェック&lt;/h2&gt;
  &lt;p&gt;セキュリティソフトや以下のオンラインスキャンなどを利用して、ウイルスやマルウェアに感染していないか確認してください。&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://security.symantec.com/sscv6/default.asp?langid=jp&amp;#038;venid=sym"&gt;Free Antivirus Protection - Free Anti-virus Software&lt;/a&gt; (Symantec)&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.mcafee.com/japan/mcafee/home/freescan.asp"&gt;無料ウイルス診断 フリースキャン&lt;/a&gt; (マカフィー)&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.trendflexsecurity.jp/housecall/index.php?Homeclick=threat_onlinescan"&gt;オンラインスキャン ｜ ウイルスバスター&lt;/a&gt; (トレンドマイクロ)&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.kaspersky.co.jp/virusscanner"&gt;オンラインウイルススキャン ・ファイルスキャナ&lt;/a&gt; (カスペルスキー)&lt;/li&gt;
  &lt;/ul&gt;

  &lt;div class="section"&gt;
    &lt;h3&gt;Webサイトの管理者・運営者の場合&lt;/h3&gt;
    &lt;p&gt;現時点で確認されているGumblarウイルスの被害は&lt;em&gt;Webサイトの改ざん&lt;/em&gt;、&lt;em&gt;Webサイトを通じた訪問者へのマルウェア・新型ウイルスの拡散&lt;/em&gt;です。Webサイトの管理者・運営者は以下の点も確認してください。また、&lt;em&gt;Webサイトの更新を行うコンピューターへのアクセスをIPアドレスで制限&lt;/em&gt;するなどの対策を行ってください。&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;Webサイトのコンテンツ・プログラムなどが改ざんされていないか確認。&lt;/li&gt;
      &lt;li&gt;Webサーバー、FTPサーバーなどのアクセスログに不審な点がないか確認。&lt;/li&gt;
    &lt;/ul&gt;

    &lt;p&gt;Webサイトの改ざんが行われた場合、HTMLファイルや外部JavaScriptファイルに「&lt;code&gt;/*GNU GPL*/ try&lt;/code&gt;」や「&lt;code&gt;&amp;lt;script&amp;gt;/*CODE1*/ try&lt;/code&gt;」、「&lt;code&gt;/*LGPL*/ try&lt;/code&gt;」などの文字が埋め込まれていることが多いようです。ただし、これまでにも亜種や新種が確認されているため、&lt;strong&gt;不審なコードが埋め込まれていないか目視で確認&lt;/strong&gt;してください。
  &lt;/div&gt;
&lt;/div&gt;



&lt;div id="gumblar-stampout" class="section"&gt;
  &lt;h2&gt;3.Gumblarウイルスの駆除&lt;/h2&gt;
  &lt;p&gt;Gumblarウイルスに感染してしまった場合、以下の手順でウイルスの駆除、復旧、対応を行ってください。&lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;コンピューターをネットワークから切り離す。&lt;/li&gt;
    &lt;li&gt;アンチウイルスソフトを利用して、全てのコンピューターをスキャン、ウイルスを駆除。&lt;/li&gt;
    &lt;li&gt;全てのID、パスワードなどのログイン情報を変更。&lt;/li&gt;
    &lt;li&gt;コンピューター、Webサイトの利用者に告知。&lt;/li&gt;
    &lt;li&gt;再感染の防止・対策を行い、完全にウイルスが駆除されたか経過を監視。&lt;/li&gt;
  &lt;/ol&gt;

  &lt;p&gt;完全な復旧を行うためには、アンチウイルスソフトによる駆除後に&lt;em&gt;&lt;abbr title="Operationg System"&gt;OS&lt;/abbr&gt;のクリーンインストールをおすすめ&lt;/em&gt;します。&lt;/p&gt;

  &lt;div class="section"&gt;
    &lt;h3&gt;主要なセキュリティソフト&lt;/h3&gt;
    &lt;p&gt;以下に主要な総合セキュリティソフトを紹介しておきます。無償のものや安価なものもありますが、対応の早さと幅広い対策が期待できる有償の総合セキュリティソフトをおすすめします。&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;Kaspersky Internet Security (&lt;a href="http://pt.afl.rakuten.co.jp/c/002a9ab6.cd97e4d6/?url=http%3a%2f%2fesearch.rakuten.co.jp%2frms%2fsd%2fesearch%2fvc%3fsv%3d2%26f%3dA%26g%3d408565%26v%3d2%26e%3d0%26p%3d0%26s%3d2%26oid%3d000%26k%3d0%26sf%3d0%26sitem%3dKaspersky%2bInternet%2bSecurity%26x%3d0"&gt;楽天市場&lt;/a&gt;) (&lt;a href="http://www.amazon.co.jp/gp/product/B002NH4LZS?ie=UTF8&amp;#038;tag=dxd8-22&amp;#038;linkCode=as2&amp;#038;camp=247&amp;#038;creative=1211&amp;#038;creativeASIN=B002NH4LZS"&gt;Amazon&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=dxd8-22&amp;#038;l=as2&amp;#038;o=9&amp;#038;a=B002NH4LZS" width="1" height="1" alt="" /&gt;)&lt;/li&gt;
      &lt;li&gt;ノートン インターネット セキュリティ (&lt;a href="http://pt.afl.rakuten.co.jp/c/002a9ab6.cd97e4d6/?url=http%3a%2f%2fesearch.rakuten.co.jp%2frms%2fsd%2fesearch%2fvc%3fsv%3d2%26v%3d2%26e%3d0%26s%3d2%26sub%3d0%26k%3d0%26oid%3d000%26ah%3d0%26uwd%3d1%26sitem%3d%25A5%25CE%25A1%25BC%25A5%25C8%25A5%25F3%2b%25A5%25A4%25A5%25F3%25A5%25BF%25A1%25BC%25A5%25CD%25A5%25C3%25A5%25C8%2b%25A5%25BB%25A5%25AD%25A5%25E5%25A5%25EA%25A5%25C6%25A5%25A3%26f%3dA%26nitem%3d%26g%3d408565%26min%3d%26max%3d%26p%3d0"&gt;楽天市場&lt;/a&gt;) (&lt;a href="http://www.amazon.co.jp/gp/product/B002MKOPES?ie=UTF8&amp;#038;tag=dxd8-22&amp;#038;linkCode=as2&amp;#038;camp=247&amp;#038;creative=1211&amp;#038;creativeASIN=B002MKOPES"&gt;Amazon&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=dxd8-22&amp;#038;l=as2&amp;#038;o=9&amp;#038;a=B002MKOPES" width="1" height="1" alt="" /&gt;)&lt;/li&gt;
      &lt;li&gt;マカフィー トータルプロテクション (&lt;a href="http://pt.afl.rakuten.co.jp/c/002a9ab6.cd97e4d6/?url=http%3a%2f%2fesearch.rakuten.co.jp%2frms%2fsd%2fesearch%2fvc%3fsv%3d2%26f%3dA%26g%3d408565%26v%3d2%26e%3d0%26p%3d0%26s%3d2%26oid%3d000%26k%3d0%26sf%3d0%26sitem%3d%25A5%25DE%25A5%25AB%25A5%25D5%25A5%25A3%25A1%25BC%2b%25A5%25C8%25A1%25BC%25A5%25BF%25A5%25EB%25A5%25D7%25A5%25ED%25A5%25C6%25A5%25AF%25A5%25B7%25A5%25E7%25A5%25F3%26x%3d0"&gt;楽天市場&lt;/a&gt;) (&lt;a href="http://www.amazon.co.jp/gp/product/B002TY14E6?ie=UTF8&amp;#038;tag=dxd8-22&amp;#038;linkCode=as2&amp;#038;camp=247&amp;#038;creative=1211&amp;#038;creativeASIN=B002TY14E6"&gt;Amazon&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=dxd8-22&amp;#038;l=as2&amp;#038;o=9&amp;#038;a=B002TY14E6" width="1" height="1" alt="" /&gt;)&lt;/li&gt;
      &lt;li&gt;ウイルスバスター (&lt;a href="http://pt.afl.rakuten.co.jp/c/002a9ab6.cd97e4d6/?url=http%3a%2f%2fesearch.rakuten.co.jp%2frms%2fsd%2fesearch%2fvc%3fsv%3d2%26v%3d2%26e%3d0%26s%3d2%26sub%3d0%26k%3d0%26oid%3d000%26ah%3d0%26uwd%3d1%26sitem%3d%25A5%25A6%25A5%25A4%25A5%25EB%25A5%25B9%25A5%25D0%25A5%25B9%25A5%25BF%25A1%25BC%26f%3dA%26nitem%3d%26g%3d408565%26min%3d%26max%3d%26p%3d0"&gt;楽天市場&lt;/a&gt;) (&lt;a href="http://www.amazon.co.jp/gp/product/B002MUBC5S?ie=UTF8&amp;#038;tag=dxd8-22&amp;#038;linkCode=as2&amp;#038;camp=247&amp;#038;creative=1211&amp;#038;creativeASIN=B002MUBC5S"&gt;Amazon&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=dxd8-22&amp;#038;l=as2&amp;#038;o=9&amp;#038;a=B002MUBC5S" width="1" height="1" alt="" /&gt;)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;ちなみに、個人的には細かな設定・監視が可能な&lt;a href="http://pt.afl.rakuten.co.jp/c/002a9ab6.cd97e4d6/?url=http%3a%2f%2fdl.rakuten.co.jp%2fattr%2f92193225%2fda30_1.html"&gt;Kaspersky Internet Security&lt;/a&gt;をおすすめします。&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;


	タグ: &lt;a href="http://dxd8.com/archives/tag/8080/" title="8080" rel="tag"&gt;8080&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/gumblar/" title="Gumblar" rel="tag"&gt;Gumblar&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%82%a6%e3%82%a4%e3%83%ab%e3%82%b9/" title="ウイルス" rel="tag"&gt;ウイルス&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%82%ac%e3%83%b3%e3%83%96%e3%83%a9%e3%83%bc/" title="ガンブラー" rel="tag"&gt;ガンブラー&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%82%bb%e3%82%ad%e3%83%a5%e3%83%aa%e3%83%86%e3%82%a3/" title="セキュリティ" rel="tag"&gt;セキュリティ&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%83%9e%e3%83%ab%e3%82%a6%e3%82%a7%e3%82%a2/" title="マルウェア" rel="tag"&gt;マルウェア&lt;/a&gt;&lt;br /&gt;

	&lt;h2&gt;関連する記事&lt;/h2&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/192/" title="危険なGENOウイルス「Gumblar」「Martuz」が感染拡大中 (2009年5月14日)"&gt;危険なGENOウイルス「Gumblar」「Martuz」が感染拡大中&lt;/a&gt; (2)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=15nBpn3Ge40:f1VB1vLHEwE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=15nBpn3Ge40:f1VB1vLHEwE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?i=15nBpn3Ge40:f1VB1vLHEwE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dxd8/~4/15nBpn3Ge40" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://dxd8.com/archives/205/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://dxd8.com/archives/205/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://dxd8.com/archives/205/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Phize</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[ニコニコ生放送の配信方法 - 7.便利なツール]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dxd8/~3/WZRzf7OJq-E/" />
		<id>http://dxd8.com/?p=1137</id>
		<updated>2010-01-03T18:17:05Z</updated>
		<published>2009-11-12T04:00:53Z</published>
		<category scheme="http://dxd8.com" term="Webサービス" /><category scheme="http://dxd8.com" term="ソフトウェア" /><category scheme="http://dxd8.com" term="ニコニコ動画" /><category scheme="http://dxd8.com" term="ニコニコ生放送" />		<summary type="html"><![CDATA[ニコニコ生放送で安全・効果的に生放送を配信する方法の第7回です。個人情報の保護など、セキュリティ的に問題になる点を中心に解説しています。なお、これまでの記事はニコニコ生放送の配信方法 - 1.はじめにに目次として掲載して [...]]]></summary>
		<content type="html" xml:base="http://dxd8.com/archives/204/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GnQj_dLfTAS2XCg2ODVqpwlSEVo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GnQj_dLfTAS2XCg2ODVqpwlSEVo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GnQj_dLfTAS2XCg2ODVqpwlSEVo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GnQj_dLfTAS2XCg2ODVqpwlSEVo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ニコニコ生放送で安全・効果的に生放送を配信する方法&lt;/strong&gt;の第7回です。個人情報の保護など、セキュリティ的に問題になる点を中心に解説しています。なお、これまでの記事は&lt;a href="http://dxd8.com/archives/198/"&gt;ニコニコ生放送の配信方法 - 1.はじめに&lt;/a&gt;に目次として掲載しています。&lt;/p&gt;

&lt;p&gt;今回は、最終回として、ニコニコ生放送(&lt;em&gt;ニコ生&lt;/em&gt;)で放送を行う際に便利なツールを紹介します。&lt;/p&gt;

&lt;span id="more-1137"&gt;&lt;/span&gt;

&lt;div class="section"&gt;
&lt;h2&gt;目次&lt;/h2&gt;
&lt;p&gt;ニコ生関連のツールは数多くありますが、その中から放送に役立つおすすめのツールを厳選しました。&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="#Nwhois"&gt;nwhois - コメントビューア&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#NicoPita"&gt;ニコPITA SE - 総合ツール&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#BouyomiChan"&gt;棒読みちゃん - コメントの音声読み上げ&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#Wakutori"&gt;枠鳥F - 枠取り&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#Logtori"&gt;ログ鳥 - 放送履歴の統計&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#Scfh"&gt;SCFH DSF - 画面キャプチャー&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#ManyCam"&gt;ManyCam - 映像加工・画面キャプチャー&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#CommunityKeeper"&gt;コミュニティキーパー - コミュニティ管理&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ins datetime="2009-12-16T09:09:52+09:00"&gt;&lt;p&gt;現在、放送枠の確保(枠取りに関して仕様が変更されています。&lt;em&gt;順番待ち機能&lt;/em&gt;が搭載され、混雑時には列の最後尾に並ぶことで、公平な枠取りが行えるようになりました。この変更によって、&lt;strong&gt;既存の枠取りツール等は正しく機能しない可能性があります。&lt;/strong&gt;&lt;/p&gt;&lt;/ins&gt;
&lt;/div&gt;

&lt;div id="Nwhois" class="section"&gt;
  &lt;h2&gt;&lt;a href="http://hal.fscs.jp/nwhois/"&gt;nwhois&lt;/a&gt;(&lt;a href="http://ch.nicovideo.jp/community/co23186"&gt;ニコニコミュニティ&lt;/a&gt;) - コメントビューア&lt;/h2&gt;
  &lt;p&gt;&lt;em&gt;コメントの閲覧・投稿&lt;/em&gt;、番組枠の確保(&lt;em&gt;枠取り&lt;/em&gt;)など、放送者(&lt;em&gt;生主&lt;/em&gt;)なら必ず導入しておきたい機能を備えた定番のツールです。&lt;/p&gt;
  &lt;p&gt;ユーザーのID(「&lt;a href="http://dxd8.com/archives/203/"&gt;6.本放送 - IDについて&lt;/a&gt;」を参照)を確認したり、ユーザーに名前を付けることができるため、過去ログの閲覧機能と合わせてリスナーの管理に役立ちます。また、ニコ生のアンケート機能やユーザーからの動画リクエストの管理などもツール上から行えます。&lt;/p&gt;
  &lt;p&gt;プラグインでの拡張に対応しており、プラグインの導入でさらに便利に使うことができます。&lt;/p&gt;

  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/nwhois.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/nwhois-150x70.png" alt="画像: nwhois - ニコニコ生放送に便利なツール" width="150" height="70" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div id="NicoPita" class="section"&gt;
  &lt;h2&gt;&lt;a href="http://ch.nicovideo.jp/community/co25623"&gt;ニコPITA SE&lt;/a&gt; - 総合ツール&lt;/h2&gt;
  &lt;p&gt;&lt;em&gt;コメントビューア&lt;/em&gt;を始め、ニコ生をサポートする機能が多数搭載された&lt;em&gt;総合的なツール&lt;/em&gt;です。機能ごとに細かい設定が可能な上級者向けのツールです。&lt;/p&gt;
  &lt;p&gt;特に、動画やユーザーからの動画リクエストの管理機能が強力で、ツール上から動画の検索、インポート、管理などが行えます。登録済みの動画データベースやユーザーからのリクエストを元に、動画の自動再生や運営コメントの自動表示も可能です。&lt;/p&gt;
  &lt;p&gt;現在も開発中のため、動作に多少不安定な部分もありますが、今後が楽しみなツールです。&lt;/p&gt;

  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/NicoPITA.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/NicoPITA-150x103.png" alt="画像: ニコPITA SE - ニコニコ生放送に便利なツール" width="150" height="103" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div id="BouyomiChan" class="section"&gt;
  &lt;h2&gt;&lt;a href="http://chi.usamimi.info/Program/Application/BouyomiChan/"&gt;棒読みちゃん&lt;/a&gt; - コメントの音声読み上げ&lt;/h2&gt;
  &lt;p&gt;テキスト音声合成ミドルウェアのAquesTalkを利用して、&lt;em&gt;ニコ生のコメントを音声で読み上げる&lt;/em&gt;ツールです。&lt;/p&gt;
  &lt;p&gt;ニコ生のほかに、SkypeやTwitter、2ch専用ブラウザなどの読み上げにも対応しており、読み上げの音声・音量・速度・音程は聞き取りやすいように調整が可能です。単語辞書と発音辞書の機能があり、読み間違いをその都度、辞書に登録することで、読み上げの精度を上げることができます。&lt;/p&gt;
  &lt;p&gt;単体での利用もできますが、プラグインを利用することでnwhoisと連携することができます。なお、ニコPITA SEではAquesTalkが同梱されているため、棒読みちゃんの導入は必要ありません。&lt;/p&gt;

  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/bouyomichan.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/bouyomichan-132x150.png" alt="画像: 棒読みちゃん - ニコニコ生放送に便利なツール" width="132" height="150" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div id="Wakutori" class="section"&gt;
  &lt;h2&gt;&lt;a href="http://oitake.jugem.jp/?eid=258"&gt;枠鳥F&lt;/a&gt; - 枠取り&lt;/h2&gt;
  &lt;p&gt;Firefox + Greasemonkeyで動作する&lt;em&gt;枠取りを半自動化&lt;/em&gt;するためのGreasemonkeyスクリプトです。&lt;/p&gt;
  &lt;p&gt;半自動で枠取りを行ってくれるため、ニコ生が混雑する時間帯でも番組枠の確保がしやすくなります。なお、nwhois、ニコPITA SEには枠取り機能が搭載されているため、このスクリプトを利用する必要はありません。&lt;/p&gt;

  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/wakutori_f.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/wakutori_f-150x127.png" alt="wakutori_f" title="wakutori_f" width="150" height="127" class="alignnone size-thumbnail wp-image-1276" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div id="Logtori" class="section"&gt;
  &lt;h2&gt;&lt;a href="http://oitake.jugem.jp/?eid=255"&gt;ログ鳥&lt;/a&gt; - 放送履歴の統計&lt;/h2&gt;
  &lt;p&gt;Firefox + Greasemonkeyで動作する&lt;em&gt;放送履歴の統計&lt;/em&gt;を表示するためのGreasemonkeyスクリプトです。&lt;/p&gt;
  &lt;p&gt;配信数や来場者数、コメント数などの統計表示、配信ごとの各種操作が行えます。生放送の反響や効果を確認するのに便利なスクリプトです。&lt;/p&gt;

  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/logtori.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/logtori-150x75.png" alt="logtori" title="logtori" width="150" height="75" class="alignnone size-thumbnail wp-image-1273" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div id="Scfh" class="section"&gt;
  &lt;h2&gt;&lt;a href="http://mosax.sakura.ne.jp/fswiki.cgi?page=SCFH+DSF"&gt;SCFH DSF&lt;/a&gt; - 画面キャプチャー&lt;/h2&gt;
  &lt;p&gt;デスクトップ配信に使える&lt;em&gt;画面キャプチャー&lt;/em&gt;用のDirectShowフィルターです。&lt;/p&gt;
  &lt;p&gt;複数のキャプチャー範囲に対応しており、擬似的なマルチスクリーン配信が可能です。導入後に、ニコ生放送画面の「映像ソース」から「SCFH DSF」を選択することでデスクトップ配信を行うことができます。&lt;/p&gt;

  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/scfh_dsf.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/scfh_dsf-96x150.png" alt="画像: SCFH DSF - ニコニコ生放送に便利なツール" width="96" height="150" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div id="ManyCam" class="section"&gt;
  &lt;h2&gt;&lt;a href="http://www.manycam.com/"&gt;ManyCam&lt;/a&gt; - 映像加工・画面キャプチャー&lt;/h2&gt;
  &lt;p&gt;カメラ・デスクトップ配信などに使える&lt;em&gt;映像加工・画面キャプチャー&lt;/em&gt;用のDirectShowフィルターです。&lt;/p&gt;
  &lt;p&gt;カメラやデスクトップ、動画ファイル、画像ファイルなどにリアルタイムでエフェクトをかけた映像配信が可能です。導入後に、ニコ生放送画面の「映像ソース」から「ManyCam Virtual」を選択することで配信を行うことができます。&lt;/p&gt;
  &lt;p&gt;パソコンのスペックによっては動作が重くなる可能性がありますが、SCFH DSFなどと組み合わせて利用することもできます。&lt;/p&gt;

  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/manycam.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/manycam-150x122.png" alt="画像: ManyCam - ニコニコ生放送に便利なツール" width="150" height="122" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div id="CommunityKeeper" class="section"&gt;
  &lt;h2&gt;&lt;a href="http://groups.google.co.jp/group/nwhois/web/communitykeeper"&gt;コミュニティキーパー&lt;/a&gt;(&lt;a href="http://ch.nicovideo.jp/community/co23186"&gt;ニコニコミュニティ&lt;/a&gt;) - コミュニティ管理&lt;/h2&gt;
  &lt;p&gt;コミュニティに参加している&lt;em&gt;ユーザーの権限を一括編集&lt;/em&gt;するツールです。&lt;/p&gt;
  &lt;p&gt;通常、コミュニティユーザーの権限を途中から変更する場合、手動で一人づつ再設定する必要があります(「&lt;a href="http://dxd8.com/archives/201/"&gt;4.コミュニティの作成&lt;/a&gt;」を参照)。このツールを利用することによって、面倒な権限の変更を一括で簡単に行うことができます。&lt;/p&gt;

  &lt;ul class="figure"&gt;
    &lt;li&gt;&lt;a href="http://dxd8.com/wp-content/uploads/community_keeper.png"&gt;&lt;img src="http://dxd8.com/wp-content/uploads/community_keeper-150x132.png" alt="画像: コミュニティキーパー - ニコニコ生放送に便利なツール" width="150" height="132" /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

	タグ: &lt;a href="http://dxd8.com/archives/tag/web%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9/" title="Webサービス" rel="tag"&gt;Webサービス&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/software/" title="ソフトウェア" rel="tag"&gt;ソフトウェア&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%83%8b%e3%82%b3%e3%83%8b%e3%82%b3%e5%8b%95%e7%94%bb/" title="ニコニコ動画" rel="tag"&gt;ニコニコ動画&lt;/a&gt;, &lt;a href="http://dxd8.com/archives/tag/%e3%83%8b%e3%82%b3%e3%83%8b%e3%82%b3%e7%94%9f%e6%94%be%e9%80%81/" title="ニコニコ生放送" rel="tag"&gt;ニコニコ生放送&lt;/a&gt;&lt;br /&gt;

	&lt;h2&gt;関連する記事&lt;/h2&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/50/" title="高性能音楽作成ソフトウェア、Music Maker Producer Editionの雑感 (2008年2月6日)"&gt;高性能音楽作成ソフトウェア、Music Maker Producer Editionの雑感&lt;/a&gt; (2)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/42/" title="ZBrush3&amp;#038;初音ミクのハニハニダンスがすごすぎる (2008年1月29日)"&gt;ZBrush3&amp;#038;初音ミクのハニハニダンスがすごすぎる&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/203/" title="ニコニコ生放送の配信方法 - 6.本放送 (2009年11月5日)"&gt;ニコニコ生放送の配信方法 - 6.本放送&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/32/" title="動画共有サイトの比較と選び方 (2008年1月19日)"&gt;動画共有サイトの比較と選び方&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://dxd8.com/archives/34/" title="高性能Flash作成ソフト、Free Motion 2を買ってみました (2008年1月21日)"&gt;高性能Flash作成ソフト、Free Motion 2を買ってみました&lt;/a&gt; (3)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=WZRzf7OJq-E:vTRDgdOS3iI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dxd8?a=WZRzf7OJq-E:vTRDgdOS3iI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dxd8?i=WZRzf7OJq-E:vTRDgdOS3iI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dxd8/~4/WZRzf7OJq-E" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://dxd8.com/archives/204/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://dxd8.com/archives/204/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://dxd8.com/archives/204/</feedburner:origLink></entry>
	</feed>
