<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Cherry Pie Weblog</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/" />
<link rel="self" type="application/atom+xml" href="http://www.cherrypieweb.com/weblog/atom.xml" />
<id>tag:www.cherrypieweb.com,2010-08-14:/weblog//2</id>
<updated>2012-01-29T16:30:15Z</updated>
<subtitle>さくらぎけいのイラストとWeb開発日記</subtitle>
<generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.04</generator>
<entry>
<title>知らない人は損してる、イラレでスーパーのチラシを作るときの7つのワザ</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/technical/20120128183317.php" />
<id>tag:www.cherrypieweb.com,2012:/weblog//2.315</id>
<published>2012-01-28T09:33:17Z</published>
<updated>2012-01-29T16:30:15Z</updated>
<summary>スーパーのチラシって超めんどくさい！　っていうのは昔の話。知らない人は損してると思う小技をまとめてみました。</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
<category term="dtp" label="DTP" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>昨年から、地元の印刷会社さんのお手伝いでスーパーのチラシを制作させていただいているんですが、最初に作業手順を聞いたときに、そのあまりの面倒さに閉口してしまいました。</p>
<p>スーパーのチラシって、何重もの文字フチとか、値段の数字が重なってて円だけ小さいとか、囲みとか、必ず文字が画像にかかってしまうから白フチもつけないといけないとか・・・<br />そんな手数のかかる作業を、長年チラシ制作をされている方は、イラスト―レーター5.5 でショートカット連打でバキバキ作ってたりするわけです。<br />しかし、短納期・安価を求められる今の時代、いつまでもイラストレーター5.5時代の作業を続けているのでは、相当な熟練者でないと時間にもお金にも見合う仕事ができないし、会社としては熟練者に単純作業に近いことに延々と時間を使ってほしくないのです。</p>
<p>でも、今のイラストレーターならできるんですよね。</p>
<p>そんな、知っている人は知っているけど、知らない人は知らないワザをまとめておきたいと思います。</p>
<p>今回は、以下について解説しています</p>
<ul>
<li><a href="#aki">文字組アキ量設定で、和文と欧文のアキを無くす</a></li>
<li><a href="#font">値段は、数字書体や合成フォントを使う</a></li>
<li><a href="#apperance">文字フチやずらしカゲはアピアランスで設定する</a></li>
<li><a href="#style">複数個所で使うアピアランスは、グラフィックスタイルに登録する</a></li>
<li><a href="#lineheight">自動行送りの行間を指定する</a></li>
<li><a href="#autobox">文字量に合わせて大きさが変わる囲みをつくる</a></li>
<li><a href="#group">グループ編集機能を使う（クリッピングマスク）</a></li>
</ul>
<p>&nbsp;</p>
<p>※動作確認バージョンは、CS4以降です。</p>
<h3 id="aki">文字組アキ量設定で、和文と欧文のアキを無くす</h3>
<p>CSシリーズを使い始めて最初に悩むのは、欧文（特に数字）と和文の間に空く微妙な文字間です。<br /> イラストレーター使いの人は「文字は詰める！」って感じだと思うので（笑）、この仕様は我慢ができないですよね？<br /> これは「文字組アキ量設定」で変えることができます。</p>
<p>「書式」メニューから「文字組アキ量設定」を選択します。<br /> 「文字組アキ量設定」ダイアログが開いたら、一番下の欧文の前後という項目を確認してみてください。<br /> ここに欧文と和文の空きが設定されています。最適25%、最小12.5%ということは、どう詰めても8分アキ（8分の1）になってしまうわけです。<br /> 初期設定されているものは変更することができません。変更するためには新規に設定を作ります。</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-01.gif" alt="20120129-01.gif" width="680" height="589" /></p>
<p>「新規」ボタンをクリックして新しい設定を作ります。「元となるセット」は、イラレ使いなら「約物半角」にしとくといいでしょう。この設定は、カッコや句読点などの約物を詰めてくれる設定です。<br /> 名前は自分がわかれば何でもよいのですが、ここでは「約物半角和欧間ベタ」と指定しておきます。</p>
<p>作成した新規設定で「欧文の前後」を、　最適：0%　最小：0%　最大：50%　に変更します。（先に最小を小さくしてから最適を設定してください）<br /> 最大を大きくしておくのは、ジャスティフィケーションで全体の文字間が広がった時に合わせて文字間が広がるようにしておくためです。<br /> 設定出来たら保存し、OKでダイアログを閉じます。</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-03.gif" alt="20120129-03.gif" width="591" height="182" /></p>
<p>次に「段落スタイル」で、「標準段落スタイル」ダイアログを開きます。<br /> 「日本語組版」タブを開き、文字組みで先ほど保存した設定を選択して保存します。</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-02.gif" alt="20120129-02.gif" width="680" height="461" /></p>
<h3 id="font">値段は、数字書体や合成フォントを使う</h3>
<p>スーパーのチラシの書体って、数字が大きくて「円」だけ小さいことが多いですよね。<br />こういうつくりにするとき、旧バージョンでは数字と「円」を別に作ってグループ化していたと思います。<br />さらに、重なった文字にフチをつけるために、アウトラインを取ってから効果をつけたりしていました。&nbsp;</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-11.gif" alt="20120129-11.gif" width="680" height="241" /></p>
<p>でも、書体を選べばそんな面倒なことをしなくてもいいんです。</p>
<p>書体は、日本語フォントに「おまけ」でついてくる数字書体を使います。<br />サンプルとして、モリサワパスポートとダイナフォントについてくる数字書体を見てみましょう。</p>
<p><a href="http://www.morisawa.co.jp/font/support/after/psvatl0000000flf-att/e16it10000002nl1.pdf" target="_blank">モリサワ数字書体リスト</a>（別ウィンドウが開きます）</p>
<p><a href="http://www.incunabula.co.jp/dtp-s/dyna_font/1.html" target="_blank">DynaFont数字書体インデックス</a>（別ウィンドウが開きます）</p>
<p>数字書体なのに「円」という文字が含まれています。<span style="line-height: 19px;">しかも、数字より小さなサイズが何パターンも用意されています。<br /></span>数字書体は欧文扱いなので「円」の文字はアルファベットに対応しています。たとえば、モリサワの場合は小文字の「f」を打つと小さい「円」になります。<br />他のメーカーの日本語フォントについてくる数字書体でも、小さなサイズの「円」が含まれていることが多いです。<br />具満タンなどの素材集についていることもあります。<br />つまり、小さい「円」を表示させるのに、わざわざ分けて作る必要なんてないのですね。</p>
<p>また、モリサワの数字書体には「くいこみ数字」というものが用意されています。</p>
<p><a href="http://www.morisawa.co.jp/font/fontlist/details/fontfamily090.html" target="_blank">くいこみ数字</a>（別ウィンドウが開きます）</p>
<p>これを使えば、ただ文字を打つだけで重ね数字になります。</p>
<p><img style="margin-right: auto; margin-bottom: 20px; margin-left: auto; border-style: initial; border-color: initial; line-height: 19px; text-align: center; display: block;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-12.gif" alt="20120129-12.gif" width="680" height="390" />ただし、OpenTypeの機能で重なりを実現しているので、「ウィンドウ」メニューから「書式」－「OpenType」パネルを出して、「前後関係に依存する字形」にチェックを入れないと重なりません。<br />これは、段落スタイルで設定しておくのがいいと思います。&nbsp;</p>
<p style="text-align: center;"><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-13.gif" alt="20120129-13.gif" width="680" height="344" /></p>
<p>数字書体に気に入ったものが見つからない場合もあります。<br /> そのときは、合成フォントを使います。<br /> 合成フォントは、文字の種類によって使用するフォントを変えることのできる機能ですが、フォントだけではなく、比率やベースラインを細かく設定することもできます。</p>
<p>「書式」メニューから「合成フォント」ダイアログを出し、新規をクリックします。<br />名前は何でも構いませんが、合成するフォント名ではなく、使う目的（特売用値段とか）にしておいたほうが後で使いやすいです。</p>
<p><span style="line-height: 19px;">合成フォントは、漢字をベースとして他の文字セットのフォントを指定していきます。</span><br style="line-height: 19px;" /><span style="line-height: 19px;">ということは、値段表記で「円」を小さくしようとすると数字を大きくすることになりますが、それでは感覚的にやりづらいですね。</span><br style="line-height: 19px;" /><span style="line-height: 19px;">そんなときは「特例文字セット」を使います。</span><br style="line-height: 19px;" /><span style="line-height: 19px;">直接入力で文字を指定して、その文字だけにフォントを変えたりサイズを変えたりできるのです。</span></p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-14.gif" alt="20120129-14.gif" width="680" height="603" /></p>
<p>また、合成フォントだからと言ってフォントを変えなければいけないわけではありません。<br />全部新ゴBに設定して、英数字だけ水平比率を小さく、円だけ30%の倍率にしてもいいのです。</p>
<h3 id="apperance">文字フチやずらしカゲはアピアランスで設定する</h3>
<p><span style="line-height: 19px;">スーパーのチラシと言えば、文字フチとずらしカゲですよね。</span></p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-11.gif" alt="20120129-11.gif" width="680" height="241" /></p>
<p><span style="line-height: 19px;">これを、イラストレーター5.5 で作ろうと思ったらどうなるかというと・・・&nbsp;</span></p>
<p>まず文字を打って、コピーして背面にペーストして線幅を指定して色をつけ、さらにコピーして背面にペーストし、線幅を太くして色を付け、さらにコピーして背面にペーストし、色をつけて右下にずらす・・・</p>
<p>といった作業を、値段の個数分、何十回と繰り返すわけです。<br />後から数字を打ち変えようとしたら4回打ちかえないといけません。<br />おのずとサイズ変更は拡大縮小に頼ることになるので、あとから文字サイズを揃えるのは目分量になります。</p>
<p>そんな面倒なことやってられませんよね？</p>
<p>旧バージョンをずっと使っている人が意外に知らないのが、文字フチとずらしカゲの作り方です。<br />特に、イラストレーターで文字に線をつけると塗りが細ると信じ込んでいる方がいまだにいらっしゃいますが、そんなことはありません。</p>
<p>試しに、文字を打って塗りと線を指定してみます。<br />「カラー」パネルで指定をすると、塗りが細くなります。</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-21.gif" alt="20120129-21.gif" width="680" height="241" /></p>
<p>ここで「アピアランス」パネルを開きます。<br /><span style="line-height: 19px;">アピアランスパネルの各項目は、ドラッグして順序を変えることができます。</span><br style="line-height: 19px;" /><span style="line-height: 19px;">線を選択して塗りの下へドラッグすれば、線を塗りの下へ移動させることができます。</span>&nbsp;</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-22.gif" alt="20120129-22.gif" width="680" height="227" /></p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-23.gif" alt="20120129-23.gif" width="680" height="227" /></p>
<p>通常の設定だと線は境界線を中心にした幅を持つので、線幅が2ptだと塗りから外にはみ出すのは1ptです。2ptの幅にしたいなら、線幅を4ptに設定します。</p>
<p><img class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-25.gif" alt="20120129-25.gif" width="480" height="239" /></p>
<p>文字に線を指定すると、書体によってはトゲみたいなのが出ることがあります。<br />これは、線のプロパティで「ラウンド結合」にするとなくなります。</p>
<p style="clear:both;"><img class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-24.gif" alt="20120129-24.gif" width="389" height="227" /></p>
<p>線や塗りはいくらでも追加することができます。<br />「新規線を追加」アイコンをクリックして線を追加し、さらに広い幅を指定してやれば、何重もの文字フチが簡単に作成できます。</p>
<p style="clear:both;">ずらしカゲを作るには、パスの変形を使います。<br />まず、カゲのための線を追加します。<br />その線を選択した状態で「新規効果を追加」アイコンをクリックし、「パスの変形」ー「変形」を選択します。</p>
<p style="clear:both;"><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-26.gif" alt="20120129-26.gif" width="480" height="228" />このパネルで水平位置と垂直位置を指定してやれば、ずらしカゲが簡単に作れます。</p>
<p style="clear:both;"><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-27.gif" alt="20120129-27.gif" width="636" height="340" /></p>
<p>もちろん、ドロップシャドウをつかってもいいです。<br />ドロップシャドウは「新規効果を追加」アイコンをクリックし、「スタイライズ」－「ドロップシャドウ」を選んでください。</p>
<p>こうして作った文字フチやカゲはアピアランスなので、値段が変わっても数字を打ちかえるだけで済みます。<br />また、複製して使いまわすこともできます。</p>
<p>ここでちょっと注意があります。<br />アピアランスで塗りを指定しても、カラーパネルの塗りの設定は残ったままになります。<br />これ、結構まぎらわしいので、あとで悩まないように注意してください。<br />カラーパネルでは「塗りなし」にしておくといいと思います。<br />（ちなみに、アピアランスパネルで「文字」を「テキスト」の上に持っていくと、カラーパネルの塗りが生きます）&nbsp;</p>
<p>アピアランスは、かける対象によって結果が変わります。<br /> 例えば、アウトラインのかかった文字や図形を含めてアピアランスをかけたい場合は、グループ化してからアピアランスを指定します。<br />実は、レイヤー自体にアピアランスをかけることもできるんですよ。（あんまり使うシーンがないけど）</p>
<h3 id="style">複数個所で使うアピアランスは、グラフィックスタイルに登録する</h3>
<p>値段など複数個所で使うアピアランスは、グラフィックスタイルに登録しておきます。</p>
<p><img class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-31.gif" alt="20120129-31.gif" width="432" height="259" /></p>
<p>アピアランスを適用したオブジェクトを、「グラフィックスタイル」パネルにドラッグ＆ドロップして登録をします。<br /><span style="line-height: 19px;">登録したら、同じアピアランスを持つすべてのオブジェクトにスタイルを適用しておくことを忘れないでください。</span></p>
<p>こうすると、もし文字フチの色を一斉に変えなければならないなどといったときに、一気に変更ができます。</p>
<p>まず、どれでもいいので一つ文字を選んで、「アピアランス」パネルで線の色を変更します。<br /> 次に、この文字を、MacならOptionキー、WindowsならAltキーを押しながら「グラフィックスタイル」パネルの変更したいスタイルにドラッグ＆ドロップすると、スタイルが上書きされ、そのスタイルが指定されているすべてのオブジェクトのアピアランスが変更されます。</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-32.gif" alt="20120129-32.gif" width="680" height="459" /></p>
<p>ただし、アピアランスには一つ問題があります。<br /> 元の文字を傾けたりすると、傾けたあとの文字に対してアピアランスが適用されます。<br />たとえば、右下にずらしカゲをつけた文字を回転させると、回転した後の文字の右下にカゲがつくのです。</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-33.gif" alt="20120129-33.gif" width="512" height="230" /></p>
<p>こういった場合は、アピアランスで回転をかけます。<br />回転させたい文字を選択して「アピアランス」パネルを開き、特定の線や塗りが選択されていない状態で、「新規効果を追加」アイコンから「パスの変形」ー「「変形」を選択し、ここで回転をかけます。<br />すると、期待通りの方向にアピアランスが適用されます。<br />（文字自体は回転していないので、文字選択がちょっと難しくなります）&nbsp;</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-34.gif" alt="20120129-34.gif" width="512" height="544" /></p>
<h3 id="lineheight">自動行送りの行間を指定する</h3>
<p>テキストが複数行になるとき、デフォルトの自動行送りでは行間が広すぎるので文字パネルで行間を指定していると思います。<br />このとき、後で文字サイズを変えると、行間も指定しなおさなければなりません。</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-41.gif" alt="20120129-41.gif" width="680" height="266" /></p>
<p>この自動行送りですが、段落スタイルで好きな割合に設定することができます。<br />&nbsp;「段落スタイル」パネルの、「ジャスティフィケーション」タブの「段落」ー「自動行送り」に、%で指定ができるのです。</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-42.gif" alt="20120129-42.gif" width="680" height="588" /></p>
<p>レイアウトに合わせてフォントサイズをいろいろ変えたいとき、事前に設定がしてあると、かなり便利だと思います。</p>
<h3 id="autobox">文字量に合わせて大きさが変わる囲みをつくる</h3>
<p>アピアランスで、文字量に合わせて大きさが自動で変わる囲み罫やバックの塗りを作ることができます。</p>
<p><img class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-51.gif" alt="20120129-51.gif" width="407" height="278" /><span style="line-height: 19px;">まず、「新規塗りを追加」アイコンをクリックし、背景の塗りの色を指定します。</span></p>
<p>この塗りを選択した状態で「新規効果を追加」アイコンをクリックし、「形状に変更」ー「長方形」を選択します。</p>
<p style="clear:both;">「形状に変換」ダイアログに値を設定すると、指定した塗りが指定した形状に変換されます。</p>
<p style="clear:both;"><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-52.gif" alt="20120129-52.gif" width="578" height="358" /></p>
<p style="clear:both;">「新規線を追加」で、同様に設定すると、囲み罫ができます。</p>
<p>この状態で文字を打ち直すと、文字量に合わせて背景色や囲み罫の大きさが変わります。</p>
<p>日本語の場合、ベースラインがずれていて天地が中央よりやや上になってしまうのが気になることがあります。<br />（文字のベースラインを動かすと、それにアピアランスがついてきてしまいます）<br /> このときは、形状に変換した塗りや線に対して、「パスの変形」－「変形」で、位置を微調整します。</p>
<p>なお、これはアピアランスなので、文字を回転させると回転させた文字に対してアピアランスが適用され、とんでもないことになります。</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-53.gif" alt="20120129-53.gif" width="512" height="225" /></p>
<p>文字を回転させたい場合は、文字フチの時と同じように「アピアランス」パネルを開いて、特定の塗りや線が選択されていない状態で「パスの変形」から回転をかけます。</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-54.gif" alt="20120129-54.gif" width="512" height="597" /></p>
<h3 id="group">グループ編集機能を使う（クリッピングマスク）</h3>
<p>旧バージョンを使っている方が意外に知らないのが、グループ編集機能です。<br /> 昔のイラストレーターは、グループ化されたオブジェクトの一部を修正するときは、一度グループ解除する必要がありました。<br /> しかし最近のイラストレーターは、グループ化されたオブジェクトをダブルクリックすると、グループ内だけで編集ができます。<br /> サブレイヤーのような形で使えて、とても便利です。</p>
<p>CSになってからは、クリッピングマスクを適用すると、自動でマスクのパスと画像がグループになります。<br /> これによって、クリッピングマスク内の画像の重ね順を入れ替えたり、マスクの形状を変えたり、画像を差し替えたりするときにグループ解除する必要がなくなりました。</p>
<p><img class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" src="http://www.cherrypieweb.com/weblog/img/technical/20120129-61.gif" alt="20120129-61.gif" width="544" height="464" /></p>
<p>さらに、クリッピングマスクのグループ編集機能を使用中に新しい画像をペーストすると、クリッピングマスク内にペーストされます。<br /> スーパーのチラシは、画像が後送だったり差し替えになったりすることが多いので、この機能はとても使えます。</p>
<p>&nbsp;</p>
<hr />
<p>&nbsp;</p>
<p><br />他にも小技はいっぱいありますが、キリがないのでこのへんにしておきます。</p>
<p>熟練した人は手が速いので昔の作業手順でそのままやってしまいがちですが、手を抜けるところは手を抜いて、もっとクリエイティブなことに時間を使うようにしてもらいたいですね。</p>
<p>そうそう、スーパーのチラシと言えば2色印刷だと思うので、こちらもぜひお読みくださいね。<br /><a href="http://www.cherrypieweb.com/weblog/technical/20110902010014.php">ディスプレイやPDFで特色再現できるなんて！</a></p>]]>
</content>
</entry>
<entry>
<title>Magento1.6の管理画面で商品を修正すると、SQLエラーが出る</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/technical/20120103225604.php" />
<id>tag:www.cherrypieweb.com,2012:/weblog//2.313</id>
<published>2012-01-03T13:56:04Z</published>
<updated>2012-01-03T14:39:40Z</updated>
<summary>1.4.2から1.6にバージョンアップしたら、管理画面で商品を修正するとSQLエラーが出るようになってしまいました。</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
<category term="magento" label="magento" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>1.4.2 で開発していた Magento を 1.6 に移行する作業を年末年始で行っていたのですが、だいたい完了したかなーと思った時に、困ったエラーに遭遇してしまいました。</p>
<p>カタログー商品管理で、商品を編集すると、編集は完了するのですが下記の警告が表示されます。</p>
<p><strong>SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'n-0-1' for key 1</strong><br />（n は、データベース上の商品ID）</p>
<p>意味としては、データベース上にエントリが重複しているということです。<br />放っておくと大変なことになりかねません。<br />移行作業で商品データをCSVでインポートしたり、データベース上でSQLで商品データを削除したりしているので、「何かやっちゃったかなー」と、かなり焦りました。</p>
<p>でも、どうやら私のせいではなかったようです。<br />警告メッセージの内容でググったら、こんな記事を見つけました。</p>
<p>Issues with Special Price and SQL error on product save (+ editing in cart?)<br /><a href="https://github.com/organicinternet/magento-configurable-simple/issues/52">https://github.com/organicinternet/magento-configurable-simple/issues/52</a>&nbsp;</p>
<p>URLを見てピンとくる方もいらっしゃるかもしれませんが、この記事はエクステンション「Simple Configurable Products」に関するものです。<br />このエクステンションは、Configurable Products の価格を割合ではなく価格で設定できるという、地味に便利なものです。<br />1.5 に対応していると明記してあるので、1.6 でも使えると思っていれていたのですが、どうやらダメだったようです。</p>
<p>対策としては、プログラムを1行書き換えるだけです。</p>
<p>（対象ファイル）<br />app/code/community/<br />&nbsp;&nbsp;OrganicInternet/SimpleConfigurableProducts/<br />&nbsp;&nbsp;&nbsp;&nbsp;Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price.php　の58行目</p>
<p>（旧）<br />
<pre class="prettyprint">$this-&gt;cloneIndexTable(true);</pre></p>
<p>（新）<br />
<pre class="prettyprint">$this-&gt;clearTemporaryIndexTable();</pre></p>
<p>いやー、新年早々、ビビリました。<br />何が起こったかと思って、データベースの内容をしらみつぶしに見ちゃいましたからねー。</p>
<p>でも、1.6 は、1.4にはない便利なエクステンションが多くて結構いいですよ。<br />良いところについては、また後ほど記事を書きたいと想います。</p>]]>
</content>
</entry>
<entry>
<title>2012年年賀状</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/illustration/20120101021031.php" />
<id>tag:www.cherrypieweb.com,2012:/weblog//2.312</id>
<published>2011-12-31T17:10:31Z</published>
<updated>2011-12-31T17:33:12Z</updated>
<summary>
そういえば、年賀状の画像ってブログにアップしたことなかったですね</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Illustration" scheme="http://www.sixapart.com/ns/types#category" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/illustration/NEWYEAR2012-mt.jpg" alt="NEWYEAR2012-mt.jpg" width="680" height="461" /></p>
<p>「そういえば、年賀状の画像ってブログにアップしたことがないなぁ」と思ったので、アップしてみました。</p>
<p>だいたい、毎年こんな絵柄です。<br />うちの場合、干支はトリとイヌしかありません（笑）</p>
<p>2011年は年末に急に忙しくなって、ブログの更新が滞ってしまいました。<br />まだその忙しさは続いているわけですが、なんとか更新していきたいと思います。<br />ちょうど、Magentoの案件をやっていますので、カスタマイズのこととか書けたらいいなぁ。</p>
<p>では、今年もよろしくお願いいたします。</p>]]>
</content>
</entry>
<entry>
<title>INFOBARを衝動買い</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/diary/20111013231652.php" />
<id>tag:www.cherrypieweb.com,2011:/weblog//2.311</id>
<published>2011-10-13T14:16:52Z</published>
<updated>2011-10-23T05:47:02Z</updated>
<summary>ガラケーに代えてわずか1年余りで、またスマホに変えました。iPhoneに見た目で対抗できる唯一のAndroid「INFOBAR」です！</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Diary" scheme="http://www.sixapart.com/ns/types#category" />
<category term="infobar" label="INFOBAR" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>先日、携帯のキャリアをdocomoからauに変えました。<br />もちろん、iPhone4Sにしたから・・・ではありません。</p>
<h3>ちょ・・・このPOP、間違ってるんじゃないの？</h3>
<p>auからiPhoneが発売されるというウワサが出始めた9月、ふらりと立ち寄ったショッピングセンターの携帯電話売り場で、私は不思議なPOPを目にしました。</p>
<p><strong>「INFOBAR A01　実質価格　－35,000円」</strong></p>
<p>Webで見た情報では、「スマートフォンは、実質0円じゃなく、一括0円を狙え！」と書かれていたので、そういうのを狙っていたのですが、「実質　<em>マイナス</em>35,000円」って・・・どういう意味？</p>
<p>POPが間違えているのかと思い、店員さんに聞いてみたところ、</p>
<p>「MNPで本体が5,000円、これに毎月のキャッシュバックが1,700円なので、24か月で、40,800円。差し引き35,000円お得になるということなんです」</p>
<p>おいおい、INFOBARって、本体価格65,000円でしょ？<br />それが、今では逆に35,000円つけてくれるって・・・<strong>マジっすか！！</strong></p>
<p>INFOBARは、以前からずっと気になっていた機種なので、もう、その場で購入決定。<br />昨年7月に、ウィルコムのAdvanced W-ZERO3からドコモのガラケーに変えて、たった1年余りで、またスマホ持ちになってしまいました。</p>
<h3>ホーム画面とフォントが秀逸</h3>
<p>INFOBARにしてしばらくたった感想ですが、やっぱり、見た目がいいですね。<br />iPhoneと比較するとオモチャっぽい感じがしますが、そういうところを狙っているので、これはこれでOKなんです。&nbsp;</p>
<p>前に使っていた携帯より軽いし、本体サイズも手が小さい私にピッタリ。丸みが持ちやすさにつながっているのかなと思います。</p>
<p>最も気に入っているのが、<strong>iida home</strong> というホーム画面です。<br />特に、アイコンと写真を、パズルのように並べて配置できたりするのが素敵！<br />これは、iPhoneと比べても、断然いいところなんじゃないかと思っています。</p>
<p>私は、柴犬の「かのこ」と、シロハラインコの「よもぎ」の写真をレイアウトしてみました。<br />（小桜インコの「すあま」は、待ち受け画面にいます）&nbsp;</p>
<p><img class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" src="http://www.cherrypieweb.com/weblog/img/diary/20111023-124607.jpg" alt="20111023-124607.jpg" width="300" height="533" /><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/diary/20111023-124722.jpg" alt="20111023-124722.jpg" width="300" height="533" /></p>
<p>&nbsp;</p>
<p>メニュー画面を1画面にしてしまったというのも、かなり使いやすいと思います。<br />適当な区切りを入れて、さっとジャンプもできるので、複数画面をペラペラめくるよりも使いやすいです。</p>
<p>INFOBARで使用されているフォントは、モリサワの「新ゴR」。<br />DTPをやっている人にはおなじみで、非常に視認性が良く、多分、日本で一番人気のあるフォントなのですが、個人で導入するにはあまりに高価なフォントなので、こうしてスマホで使ってくれるというのはとても嬉しいです。</p>
<h3>デフォルトのアプリもかなりいいぞ</h3>
<p>いろいろ使いづらいと言われているAndroidですが、INFOBARはこのあたり結構考えられているみたいで、デフォルトで入っているアプリも充実しています。</p>
<p>SkypeもTwitterもFacebookもすぐ使えるし（お知らせや未読件数表示もできるし、他のアプリと連動もできる）、PCメールもez webメールも読めるし、QRコードも読めるし、Task Cleanerという優秀な起動アプリ管理ツールもついています。<br />Documents To Go というソフトで、Office書類やPDFも見ることができます。<br />名刺リーダーもついているんですが、試しに手元の名刺を読ませてみたら、項目の振り分けまでばっちりアドレス帳に取り込めてびっくりしました。<br />スナップショットを撮る機能も標準でついているので、自分のホーム画面をFacebookに晒して自慢もできます（笑）。&nbsp;</p>
<p>あと一番びっくりしたのが、Android共通のことですが、PCからリモートでアプリをインストールできるところ。<br />PCでマーケットを開いて、登録端末にインストール！ってやると、INFOBARにアプリがインストールされちゃうんですね。ケーブルつないだりWiFi設定したりとか全然必要ないんですね。&nbsp;</p>
<p>また、PCのほうでGoogleを使いまくっている私にとっては、何も苦労しなくても、メールもスケジュールもアドレス帳もブックマークも写真も、簡単にPCと同期できてしまうんですから、超便利です。</p>
<p>いやぁ、W-ZERO3使ってた頃からは考えられませんね。</p>
<h3>多少、問題点もあるけど・・・</h3>
<p>残念ながら、タップ精度の悪さや、もっさり感は、iPhoneにかなわないところです。<br />（INFOBARというより、Androidの欠点かも）&nbsp;</p>
<p>あと、標準の文字の大きさを変えられないという、目の悪い方には決定的な弱点もあります。（実は、これは結構きついです）&nbsp;<br />ワンセグ見るのにUSBケーブルを繋げないといけないというのも、人によっては欠点かもしれません。（しかもUSBコネクタは充電を兼ねているので、ワンセグ見てるときは充電できない）<br />そのくせ、バッテリーの持ちは悪いです。（毎日充電しないと不安）<br />ストラップホールがないという、これも人によっては大きな欠点もあります。&nbsp;</p>
<p>とはいえ、そういうのも許せるくらい、こいつは可愛いです。<br />Android端末のCMを見てると、性能とか機能ばかり強調してるものが多いですが、ずっと身に着ける物ってそうじゃないと思うんですよね。</p>
<p>仕事のほうでも、本格的にスマートフォン対応を考えなければいけないようになってきたのですが、INFOBARのおかげで意欲もわいてきたし、もうちょっと頑張ろうかなと思います。&nbsp;</p>]]>
</content>
</entry>
<entry>
<title>Magento Cafe #4 に参加しました</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/diary/20111002230440.php" />
<id>tag:www.cherrypieweb.com,2011:/weblog//2.310</id>
<published>2011-10-02T14:04:40Z</published>
<updated>2011-10-02T15:50:52Z</updated>
<summary>神戸で行われた「Magento Cafe #4」 勉強会という感じで、フレンドリ...</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Diary" scheme="http://www.sixapart.com/ns/types#category" />
<category term="magento" label="magento" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>神戸で行われた「Magento Cafe #4」 <br />勉強会という感じで、フレンドリーな雰囲気の中、楽しく参加させていただきました。</p>
<p>内容は、日本におけるMagento第一人者の西さんのスライドを中心に、日本語化の話、エクステンション開発の話、運用で気を付けることなどの話題について、勉強させていただきました。</p>
<p>特に、実体験に基づいた運用Tipsは、明日からでも実践しないとまずいなと思うような内容もありました。<br />ログクリーニングだけは、すぐに設定しておかないと・・・（汗）&nbsp;</p>
<p>それにしても、やっぱりMagentoは、制作者にそれなりのスキルを要求するシステムなのだなということを再認識しましたね。<br />知識というよりも、ネット上に散りばめられた情報をパズルのごとく組み合わせていく力とか、人のコードを解析して自分のものにしていく力とか、そういうことができるスキルということです。</p>
<p>Eテレの「テストの花道」ではありませんが、「考え方を手に入れる」というのが、Magento制作の肝なのだろうなと思います。<br />ディレクトリ構造の考え方とか、XMLとPHPコードがどう関連づいているのかとか、DBとコードの関係とか。</p>
<p>現状では、残念ながら、そういった考え方を簡単に手に入れることはできません。<br />英語の書籍もありますが対応バージョンがちょっと古かったりするし、ブログの情報は断片的です。<br />また、そういった情報を見てわかった気になっても、実際にやろうとするとできないことが結構あるのです。<br />そのため、人のコードを解析したりしながら、試行錯誤していくしかないんです。&nbsp;</p>
<p>ただ、今回の勉強会は、そういった考え方の一端を手に入れることができたような気もします。</p>
<hr />
&nbsp;
<p>実感としては、日本でのMagentoの普及には、まだまだ壁があるように思います。</p>
<p>それを超えるためには、制作者が知識を自分の中に溜め込まず、オープンにして情報を交換し合うことが重要なのではないかと思っています。<br />特に、日本国内だけで必要になる情報、例えば、決済とか、配送とか、フリガナとか、のしとか、ガラケー対応とか、そういう情報をどんどんオープンにしていくことが必要ですよね。</p>
<p>EC CUBEは、システム自体はひどいですが、コミュニティでの情報交換は活発で、トラブルが起きても意外に何とかなることが多いのです。&nbsp;</p>
<p>というわけで、私もできる限り、情報は公開していこうと思っています。<br />今までの私の記事の中には、「おいおい待てよ」みたいな情報もあったわけですが（データベースを直接いじるなんて、良い子はやっちゃダメですよwww）、そういうのを見て「それはこうやったほうがいいんだよ」みたいな話が出てくればいいと思うんです。</p>
<p>どこかのブログで、「Magentoで、○○のエクステンションを作ったんだよなー」とか自慢げに書いているのを見かけたことがありますが、そういうのは、有償でも、出来が悪いならベータ版でもいいから公開して、日本国内の制作者のすそ野を広げていくべきなんじゃないでしょうか。&nbsp;</p>
<p>なんてことを、Magento Cafe に参加して強く思ったのでした。</p>]]>
</content>
</entry>
<entry>
<title>WordCamp2011神戸で刺激を受けました！</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/diary/20110911233751.php" />
<id>tag:www.cherrypieweb.com,2011:/weblog//2.309</id>
<published>2011-09-11T14:37:51Z</published>
<updated>2011-09-26T13:51:01Z</updated>
<summary>久々のイベントは、刺激うけまくりで、めちゃ楽しかったです！</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Diary" scheme="http://www.sixapart.com/ns/types#category" />
<category term="wordpress" label="WordPress" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>舞鶴に帰ってきて1年余り、久しぶりに、イベントに参加しました。<br />「WordCamp2011神戸」です。<br />WordPressは、1か月前に初めて触ったくらいの超初心者ですが、最近Twitterでお話しさせていただいている@HissyNCさんがスタッフということで、せめて名刺くらい交換したいなと、思い切って参加してみました。</p>
<p>実は、東京を離れて結構寂しかったのです。</p>
<p>東京では、F-siteとかAdobe関係のセミナーとか、クリエイターの集まりには結構参加してて、話のできる仲間もたくさんできました。<br />そういった場所で、仕事のこと、考え方、趣味など、同業の人たちといろんな話をしたりされたりして、刺激をうけていたんです。</p>
<p>もちろん、舞鶴にいてもその仲間とTwitterとかで話はできるんですが・・・何ていうんだろう、ライブ感が無いというか・・・また、地元にも同業者さんはいらっしゃいますが、スピード感が無いというか刺激がなくて、ちょっと落ち込んでいたのです。</p>
<p>でも今日、WordPressのコミュニティ主催のイベントに集まっている人たち、教室に収まりきれなくて立ち見で一生懸命セッションに参加している人たちを見て、久々に燃えるものを感じました。</p>
<p><strong>「そうだよ！　俺がやってることって、Webって、CMSって、すっげー今、盛り上がってるんじゃないか！<br />スマートフォンとHTML5という、とてつもない大きな波が<strong>Webに</strong>来ているこの時期に、盛り上がらないでどうするんだよ！」</strong></p>
<p>この感覚、Flashがブームになりつつあったころに近い感覚です。<br />「来てる！　来てる！」って感じ、&nbsp;</p>
<p>参加者の年齢層もこれまで参加してきたイベントの中ではかなり若いほうだし、女子率も高いし、服装がリア充っぽい人が多いし（笑）、イベントの微妙な手作り感がなんだか学園祭っぽいし。</p>
<p>そして、とにかくみんな楽しそう。<br />懇親会にも出たかったです。（でも、出ちゃうと家に帰れなくなるんだよね・・・）<br />F-siteに行ってた頃もほとんど二次会目的でしたが、そういうのって、明日からの仕事にハリが出るんですよね。</p>
<p>初心者向けのセッションに多く参加したからか、正直言って、知識的に得るものは多くはありませんでした。<br />しかし、その場にいることでしか味わえない盛り上がりを肌で感じたことは、今の私にとって、とてつもないパワーになりました。</p>
<p>多くの人に触れ合うことの重要性を、改めて思い知った1日でした。<br />スタッフのみなさん、参加者の皆さん、お疲れ様でした。<br />そして、ありがとうございました。<br />今日からはライバルですけど、仲間でもあります。一緒に頑張りましょうね！&nbsp;</p>]]>
</content>
</entry>
<entry>
<title>ディスプレイやPDFで特色再現できるなんて！</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/technical/20110902010014.php" />
<id>tag:www.cherrypieweb.com,2011:/weblog//2.307</id>
<published>2011-09-01T16:00:14Z</published>
<updated>2011-09-17T13:25:32Z</updated>
<summary>2色印刷のデータから特色再現でPDFを作れって言われたこと、ありますよね？　でも営業にキレなくてもいいんです。実は簡単に対応できちゃうんですよ。（方法をより簡単なものに修正しました）</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
<category term="dtp" label="DTP" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>（2010年9月10日　プロファイルの保存と設定方法を、よりやりやすい方法に書き直しました）</p>
<p>DTPデザイナーの永遠の悩み、2色印刷。<br />印刷のプロが相手なら、C+M版のプリントアウトと色チップで話ができるけど、クライアントに見せる時は特色再現したカラープリントを作成する必要があります。</p>
<p>また最近は、印刷物制作完了後に「Webに載せるので、特色再現でPDFが欲しい」と言われて、途方に暮れることも多いと思います。</p>
<p>「PDFなんて簡単にできるでしょ？」って営業に言われて、キレたデザイナーさんもいるでしょう・・・</p>
<p>2色印刷シミュレーションができるプリンタがあれば、画像にしてAcrobatのOCR機能で検索可能なPDFにするという手もありますが、あまり良い方法とは言えませんよね。</p>
<p>でも実は、割と簡単に特色を再現する方法があるんです。<br />この方法なら、出力で特色再現するだけでなく、ディスプレイ表示で特色再現ができるので、デザインの際にとてもイメージがつかみやすくなります。</p>
<p>それは、<strong>特色再現のカラー設定を作成して適用する</strong>という、言われてみれば当たり前の方法です。</p>
<p>カラー設定を作るなんて難しいのでは？　なんて思っているデザイナーさんも多いのではないかと思いますが（私も昨日までそう思っていました）、画面表示のための設定を作るだけなら簡単なので、今すぐやってみましょう！</p>
<p>使用アプリケーションは、Adobe CS4 です。<br />（もうちょっと前のバージョンでも大丈夫だと思います）</p>
<h3>まずはデータを作りましょう</h3>
<p>今回は、よくあるスーパーのチラシを例にとります。<br />データは、C版とM版の2版で作成してあります。</p>
<p>（データの色のまま）<br /><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/technical/spot_color-cm.jpg" alt="spot_color-cm.jpg" width="680" height="411" /></p>
<p>これを、C版を緑色、M版を朱色で印刷します。</p>
<p>（特色で印刷）<br /><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/technical/spot_color-conv.jpg" alt="spot_color-conv.jpg" width="680" height="411" /></p>
<p>データ制作にはIllustratorを使いました。<br />配置画像はPhotoshopで2色に加工してあります。<br />（CMYKをCMに振り分けるのは熟練のプロの技が必要でしたが、今回の方法を応用すれば、そこまでの熟練者でなくても、そこそこできるようになるかも）</p>
<h3>使用する特色を調べましょう</h3>
<p>Photoshopでカラー選択ボックスをクリックして、カラーピッカーを表示させます。</p>
<p>次に、特色の掛け合わせをCMYK値で入力し、その時に表示されるLab値をメモしておきます。</p>
<p><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/technical/ps-pre1.jpg" alt="ps-pre1.jpg" width="535" height="377" /></p>
<p>今回は、C版は、C100+Y100 の色で印刷するので、Lab値は、L:52, a:-82, b:29、<br />M版は、M100+Y100 の色で印刷するので、Lab値は、 L:49, a:75, b:59 となります。</p>
<p>なお、DICなどのカラーライブラリは、色を選ぶとLab値が表示されます。</p>
<p><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/technical/ps-pre3.jpg" alt="ps-pre3.jpg" width="492" height="343" /></p>
<h3>カラープロファイルを作りましょう</h3>
<p>Photoshopの「編集」－「カラー設定」のダイアログを開き、作業用スペースのCMYKで「カスタムCMYK」を選択します。</p>
<p><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/technical/ps-1.gif" alt="ps-1.gif" width="580" height="509" /></p>
<p>「カスタムCMYK」ダイアログが開くので、印刷インキ設定のインキの色特性で「カスタム」を選択します。</p>
<p><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/technical/ps-2.gif" alt="ps-2.gif" width="560" height="362" />。</p>
<p>「インキの色特性」ダイアログが開くので、下部のチェックボックスにチェックし、CとMのところに、先ほどメモしたLab値をそれぞれ入力します。<br />使用しない版は、Wの値を入れておきます。&nbsp;</p>
<p><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/technical/ps-3.gif" alt="ps-3.gif" width="526" height="384" /></p>
<p>OKをクリックすると、「カスタムCMYK」ダイアログに戻ります。<br />ここで、保存名にわかりやすい名前を付けます。<br />今回は「チラシ」としました。<br />色調変換に使用しないのであれば他の部分は特に変更する必要はありませんが、いちおう墨版生成を「なし」にしておきます。&nbsp;</p>
<p><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/technical/ps-4.gif" alt="ps-4.gif" width="560" height="362" />。</p>
<p>OKをクリックすると、「カラー設定」ダイアログに戻ります。</p>
<p>ここで再度、作業用スペースのCMYKをクリックし、今度は「CMYKプロファイルとして保存」を選択します。</p>
<p><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/technical/ps-6.gif" alt="ps-6.gif" width="595" height="796" /></p>
<p>保存先は、業務のことを考えると、物件ごとのフォルダに保存しておいたほうがいいと思います。<br />今回は「チラシ.icc」という名前を付けて保存しておきます。&nbsp;</p>
<h3>データに適用してみましょう</h3>
<p>先ほど保存したカラープロファイルは、インストールしないと、プロファイルとして使用できません。</p>
<p>Windowsの場合は、プロファイルを右クリックして、「プロファイルのインストール」でインストールします。<br />または、「WINDOWS&yen;system32&yen;spool&yen;drivers&yen;color」フォルダーにプロファイルをコピーします。</p>
<p>MacOSXの場合は、「/ユーザー/[<var style="font-size: 12px; line-height: 18px; font-family: 'MS P Gothic', Verdana, Arial, Helvetica, sans-serif; font-style: normal;">ユーザー名</var>]/ライブラリ/ColorSync/Profiles」フォルダーにプロファイルをコピーします。</p>
<p>※カラープロファイルをインストールした後は、Adobeのアプリケーションを再起動しないと認識してくれません。&nbsp;</p>
<p>では、Illustratorで、チラシデータを開きましょう。</p>
<p>データを開いたら、「編集」－「プロファイルの指定」を開きます。<br />プロファイルをクリックすると、先ほどインストールしたプロファイルが選べるようになっていますので、「チラシ」を選択します。</p>
<p><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/technical/ill-2b.gif" alt="ill-2b.gif" width="593" height="315" />。</p>
<p>すると・・・どうですか？　ちゃんと画面上のデータが特色再現されましたよね？</p>
<p>2色で出来ている画像も特色になっているし、色の掛け合わせも再現されていると思います。<br />データ自体は変更されていないので、緑ベタの部分の色はC100%のみ、Y成分はありません。</p>
<p>プロファイルの指定で元のプロファイルを選択すれば、C+M版の表示に戻ります。</p>
<p>印刷時は、印刷ダイアログの出力タブにプロファイルを選ぶところがありますので、「チラシ」プロファイルを使用すれば特色再現で印刷されます。</p>
<p>データを保存するときは、「ICCプロファイルを埋め込み」にチェックして保存します。<br />このデータを次に開くときは、「埋め込まれたプロファイルの不一致」ダイアログが開きますので、「埋め込みプロファイルを使用する」を選択すれば特色再現で開きます。</p>
<p><img style="border-style: initial; border-color: initial;" src="http://www.cherrypieweb.com/weblog/img/technical/ill-3.gif" alt="ill-3.gif" width="448" height="291" /></p>
<p>プロファイルを破棄、あるいは作業用プロファイルに変換を選択すれば、C+M版の表示で開きます。</p>
<h3>特色再現PDFを作って見ましょう</h3>
<p>では、いよいよWeb用PDFに書き出してみます。<br />「ファイル」－「別名で保存」から、ファイルの種類でPDFを選択します。</p>
<p>ダイアログが開いたら、プリセットで「最小ファイルサイズ」を選択します。<br />「出力」タブで「カラー」を下記のように設定して、PDFを保存します。&nbsp;</p>
<p><img class="mt-image-none" src="http://www.cherrypieweb.com/weblog/img/technical/pdf-1.gif" alt="pdf-1.gif" width="677" height="598" /></p>
<p>この設定で作成したPDFはカラーが「AdobeRGB」に変換されますので、シミュレーションではなく、色自体が特色の色になっている、普通のRGBカラーのPDFになっています。</p>
<p>出力先に、カラープロファイル「チラシ」を選択してもうまくいきそうに思えますが、私が試したところ、なんだか変な色になってしまいました。<br />クライアントが、カラープロファイルに対応しているような新しいビューワーで見てくれるとも限らないので、ここは色を変換してしまったほうが良いと思います。</p>
<p>カラー変換をしないと、C+M版のPDFが作成されます。<br />Acrobatがあれば、「ツール」－「印刷工程」－「出力プレビュー」でカラープロファイルを適用すると、シミュレーションすることができます。&nbsp;</p>
<p>今回はIllustratorで説明しましたが、InDesignなどでも同じ手順で特色再現ができます。<br />どちらかというと、InDesignで使うことのほうが多いんじゃないでしょうか。</p>
<hr />
<p><br />ここで示したプロファイル作成方法は、印刷や画像変換などに用いるには十分ではありませんが、特色再現したものを画面で見たいというニーズには、十分対応できるものだと思います。</p>
<p>ちなみに、Illustrator5.5 とかでは、この方法は使えません。<br />新しいバージョンのほうが、アピアランスとかスタイルとか使えて断然便利なんだから、早くバージョンアップしてくださいね。</p>
<p>&nbsp;</p>
<p>※本記事の作成には、下記記事を参考にさせていただきました。ありがとうございます。</p>
<p>プロファイル作って２色印刷<br /><a href="http://piyopiyoedit.blog93.fc2.com/blog-entry-53.html" target="_blank">http://piyopiyoedit.blog93.fc2.com/blog-entry-53.html</a>&nbsp;</p>]]>
</content>
</entry>
<entry>
<title>WordPressで携帯専用サイトを作るときに悩んだこと</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/technical/20110830121715.php" />
<id>tag:www.cherrypieweb.com,2011:/weblog//2.306</id>
<published>2011-08-30T03:17:15Z</published>
<updated>2011-09-11T15:47:28Z</updated>
<summary>WordPressで携帯サイトを作る場合の定番プラグイン「Ktai Style」の地味な凄さと、Google携帯検索の地味な凄さを体感しました。</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
<category term="wordpress" label="WordPress" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>安価で急いで携帯用CMSを作らなければいけなくなって、WordPress + <a href="http://wppluginsj.sourceforge.jp/ktai_style/" target="_blank">Ktai Style</a> でサイトを作りました。</p>
<p>その際に、PC向けの表示のやり方とSEOについて無駄に悩んでしまったのですが、とても簡単な解決方法を見つけたので書いておきたいと思います。</p>
<p>（さくらぎは、WordPress初心者ですので、間違いがあったら、コメント等でご指摘をお願いいたします）</p>
<h3>どんなサイトをつくったか</h3>
<ul>
<li>携帯電話向けに、不動産情報を発信するサイト。</li>
<li>コメントやトラックバックは無し。</li>
<li>PC向けサイトは不要。</li>
<li>PCからのアクセスには、QRコードを表示して携帯電話でアクセスするように案内する。</li>
</ul>
<p>&nbsp;</p>
<h4>今回のポイント</h4>
<p>携帯サイトの作成は、<a href="http://wppluginsj.sourceforge.jp/ktai_style/" target="_blank">Ktai Style </a>で行います。<br />独自テーマを作成しましたが、特に変わったことは行っていません。</p>
<p>問題は、PC用のテーマです。<br />通常は、PC用のサイトがあって、携帯用のサイトを作るという流れになると思います。<br />しかし今回は、PCからアクセスされた際に投稿を表示せず、案内ページを表示するという仕様です。</p>
<p>そして、案内ページを表示するということは、「PC用と携帯用のURLが同じで表示内容が異なる」ことになるので、検索エンジンのクローラーへの対応が問題になります。</p>
<h3>まずはFAQの方法を試してみる</h3>
<p>Ktai Style の<a href="http://wppluginsj.sourceforge.jp/ktai_style/qa/" target="_blank">FAQ</a>には、携帯専用ブログにする際の手順が書いてあります。<br />Ktai Style Reject PCプラグインを作成して有効化するやり方です。<br />ただ、書いてある通りにしただけだと、PCからアクセスした際には、画面が真っ白になります。</p>
<p>案内ページを表示するには、下記のように修正します。</p>
<ol>
<li>案内ページを別にHTMLで作ってFTPでアップしておく</li>
<li>Ktai Style Reject PCプラグインで、exit(); の前に、案内ページへのリダイレクトさせるようにする</li>
</ol>
<pre class="prettyprint">&lt;?php
/*
Plugin Name: Ktai Style Reject PC
Version: 1.0.0
*/
function ks_reject_pc() {
&nbsp;&nbsp;&nbsp;&nbsp;$url = parse_url(get_bloginfo('wpurl') . '/');
&nbsp;&nbsp;&nbsp;&nbsp;if (! preg_match('!^' . preg_quote($url['path'], '!')
&nbsp;&nbsp;&nbsp;&nbsp;. 'wp-(admin/|login|includes/)!', $_SERVER['REQUEST_URI'])) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header("HTTP/1.1 301 Moved Permanently");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header("Location: http://（案内ページのURL）");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit();
&nbsp;&nbsp;&nbsp;&nbsp;}
}
add_action('ktai_init_pc', 'ks_reject_pc');
・・・（後略）
?&gt;
</pre>
<p>これで、問題なく動作します。</p>
<h4>検索エンジン対策</h4>
<p>Ktai Style は、PC用サイトと携帯用サイトを同じURLで表示します。<br />これを聞いて、『PCでアクセスした際に、すべて案内ページに飛ばされてしまったら、全ページの検索結果が案内ページの内容になってしまうのではないか？』と心配される方がいらっしゃるかもしれません。</p>
<p>しかし、最近の検索ロボットは賢くて、携帯での検索ではちゃんと携帯用ページの内容を表示してくれるのです。</p>
<p>今回の例だと、PC検索では案内ページしか出てきませんが、携帯検索ではきちんと携帯用サイトの内容が出てきます。</p>
<p>つまり、下手に小細工しなくても、きちんとPC用と携帯用で別のコンテンツが表示されるのであれば、そのまま検索結果に反映されるのです。</p>
<p>TwitterでKtai Style作者の <a href="http://twitter.com/#!/lilyfanjp" target="_blank">lilyfanjp</a>さんに指摘していただいたのに、その場ではよくわかっていませんでした。すいませんでした。&nbsp;</p>
<h3>もっとわかりやすい方法を思いついた</h3>
<p>とりあえず、うまく行ったわけですが、制作途中で『こんな複雑なことしなくてもいいんじゃないの？』と思いつきました。（これのどこが複雑なんだと言われたら、それまでなんですけど）&nbsp;</p>
<p>それは、PC用に「案内ページを表示するだけ」のテーマを作成するという方法です。</p>
<p><strong>（１）新規テーマを作成</strong><br />wp-content/themesフォルダーに新しいフォルダーを作成し、適当な名前（例えば「guide4pc」とか）をつけます。</p>
<p><strong>（２）テーマに必要最小限の、2つのファイルを新規作成</strong></p>
<p>●style.css</p>
<p>内容は、テーマの説明のみでOKです。<br /> 例えば、次のようになります。</p>
<pre class="prettyprint">/*
Theme Name: PC案内用テーマ
Theme URI: http://www.cherrypieweb.com/wp/wp-content/themes/guide4pc/
Version: 1.0
Description: 本テーマは、携帯電話でのアクセスを促すメッセージを表示します。
Author: Sakuragi-Kei
Author URI: http://www.cherrypieweb.com/
*/
</pre>
<p>&nbsp;</p>
<p>●index.php</p>
<p>他のテンプレートが存在しない場合、すべてのページがこのテンプレートで処理されます。<br />今回は、PCからのアクセスはすべて案内ページになればいいわけですから、ここに案内ページのHTMLを書いてしまえばOKです。<br />携帯検索でPCページも表示されることを考慮して、meta description にサイトの説明などを設定しておいたほうが良いでしょう。<br />QRコードを表示させたい場合は、テーマフォルダーの中に「images」フォルダーを作って、QRコードの画像を入れておきましょう。</p>
<pre class="prettyprint">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;meta name="description" content="（PCサイトの概要を書いておきます）"&gt;
&lt;title&gt;&lt;?php wp_title('|', true, 'right'); ?&gt;&lt;?php bloginfo('name'); ?&gt;&lt;/title&gt;
&lt;link rel="stylesheet" type="text/css" media="all" href="&lt;?php bloginfo('stylesheet_url'); ?&gt;" /&gt;
&lt;?php wp_head(); ?&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;サイトのタイトル&lt;/h1&gt;
&lt;p&gt;本サイトは、携帯電話またはスマートフォンでのみ閲覧できます。&lt;/p&gt;
&lt;p&gt;下記のQRコードをご利用ください。&lt;/p&gt;
&lt;p&gt;&lt;img src="&lt;?php bloginfo('template_directory'); ?&gt;/images/qr.jpg" alt="トップページへ" /&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>なお私は、&lt;/body&gt;タグの前に、Google Analyticsのスクリプトを入れています。</p>
<p><strong>（３）外観メニューで、このテーマを有効にする</strong></p>
<p>これで、PCからのアクセスでは、常に案内ページが表示され、携帯からのアクセスでは、Ktai Styleのテーマが表示されるようになります。<br />もちろん、携帯検索では携帯用ページの内容が表示されます。&nbsp;</p>
<p>PCからのアクセスで表示されるものはPC用のテーマで管理され、携帯からのアクセスで表示されるものは Ktai Style のテーマで管理されるので、知識の少ない方にもわかりやすい構成になります。</p>
<h3>Mobile Link Discoveryについて</h3>
<p>「<a href="http://www.sixapart.jp/docs/tech/mobile_link_discovery_ja.html" target="_blank">Mobile Link Discovery</a>」という仕組みを用いると、PC用ページに携帯用のページのURLを明示することができます。</p>
<p>例えば、Google携帯検索では、検索結果にPC用ページと携帯用ページの両方が表示されます。<br />ここで、携帯電話で検索結果のPC用ページをクリックすると、通常はPC用ページがGoogleの携帯用表示変換機能で変換されて表示されます。<br />ところが、PC用ページに「Mobile Link Discovery」が設定してあると、PC用ページを表示せずに携帯用ページへ転送されるようになります。&nbsp;</p>
<p>これは、携帯用のページがPC用のページとは別のURLで存在する場合に、非常に有効な仕組みです。<br />また、PC用と携帯用が同じURLの場合は、PC用ページに携帯電話でアクセスしても携帯用ページとして同一URLに転送されることになるので、携帯用に変換される処理が入らずに表示されます。</p>
<p>では、これを index.php に組み込んでおきましょう。&nbsp;</p>
<p>・・・と思って頑張ってコードを書いていたんですが、実はKtai Styleを導入している場合は、wp_head(); に自動でMobile Link Discoveryが挿入されるようになっていました。<br />つまり、index.phpの&lt;/head&gt;の前に、&lt;?php wp_head(); ?&gt;を入れておけばOKなのです。&nbsp;</p>
<p>恐るべし。Ktai Style。&nbsp;</p>
<hr />
<p>&nbsp;</p>
<p>今回、初めてWordPressを触ったわけですが、PHPの初歩的なことさえ知っていれば、とても簡単に導入できました。<br />今後は、サイトの規模に合わせて、WordPress と MovableType を使い分けようかなと考えています。&nbsp;</p>
<p>そして、Twitterでの私のボヤキに素早く反応していただいた、<a href="http://twitter.com/#!/HissyNC" target="_blank">HissyNC</a>さんと、<a href="http://twitter.com/#!/lilyfanjp" target="_blank">lilyfanjp</a>さん、ありがとうございました。</p>
<p>（2011.9.1修正）<br /> PC案内用テーマの index.php で、QRコード用画像のURLを修正しました）&nbsp;</p>]]>
</content>
</entry>
<entry>
<title>メールが受信できないのは、さくらのせいじゃなかった</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/technical/20110721111438.php" />
<id>tag:www.cherrypieweb.com,2011:/weblog//2.305</id>
<published>2011-07-21T02:14:38Z</published>
<updated>2011-08-28T08:43:31Z</updated>
<summary>Magentoから自動送信されたメールが、さくらのメールサーバーにだけ届かないという問題が発生しました。でも、さくらのせいではなかったのです。</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
<category term="magento" label="magento" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>Magentoで制作したECサイトをテストしていたとき、クライアントの担当者に「受注通知メール」が届かないという問題が発生しました。</p>
<p>通常は、買い物を完了すると、購入者とMagentoの管理画面で設定した担当者宛にメールが届きます。<br />クライアントのテスト前に私が買い物をしたときは、購入者・担当者ともにメールが送信されてきたので、システム自体は動いていると思われます。</p>
<h3>まずは、状況の確認</h3>
<h5>担当者にメールが届く場合</h5>
<ul>
<li>ゲストで購入、メールアドレスは「アットニフティ」のものを使用　&rarr;　購入者にメールが届く</li>
<li>メンバー登録して購入、メールアドレスは「Hotmail」のものを使用　&rarr;　購入者にメールが届く</li>
<li>担当者のメールアドレスは「GMail」のものを使用　&rarr;　担当者にメールが届く</li>
<li>メールクライアントは使用せず、すべてウェブブラウザを使用</li>
</ul>
<p>&nbsp;</p>
<h5>担当者にメールが届かない場合</h5>
<ul>
<li>メンバー登録して購入、メールアドレスは「さくらインターネット」上の独自ドメインのものを使用　&rarr;　購入者にメールが届かない<br />（会社から割り当てられている個人用メールアドレス）&nbsp;</li>
<li>ゲストで購入、メールアドレスは「Hotmail」のものを使用　&rarr;　購入者にメールが届く</li>
<li>担当者のメールアドレスは「さくらインターネット」上の独自ドメインのものを使用　&rarr;　担当者にメールが届かない<br />（会社の営業用メールアドレスで、購入者と同じドメイン）</li>
<li>メールクライアントは、「Microsoft Outlook 2007」</li>
</ul>
<p>&nbsp;</p>
<h3>HTMLメールが原因か？</h3>
<p>まず疑われるのは、メールクライアントおよびメールサーバーのセキュリティ設定です。</p>
<p><span style="line-height: 19px;">Magentoから送信されるメールはHTMLメールなので、迷惑メールとして処理されている可能性があります。</span></p>
<p><span style="line-height: 19px;">ちょうど打ち合わせがありましたので、クライアントの事務所に伺って、設定を確認させていただきました。<br />メールサーバーは、ウィルスチェックを行わない設定になっています。<br />Outlookは、常識的な設定になっており、特にHTMLメールを弾くようにはなっていません。</span></p>
<p><span style="line-height: 19px;">ここで試しに、Hotmailで受信した私宛の受注確認メールを転送してみました。<br />すると、問題なく受信できます。<br />メールの内容自体が問題ではないようです。</span></p>
<h3><span style="line-height: 19px;">送信側のメールサーバーが問題か？</span></h3>
<p><span style="line-height: 19px;">ここで私はふと思い当たることがありました。<br /></span>現状のサーバー構成についてです。</p>
<p>クライアントは現在、「さくらインターネット」でWebサーバーおよびメールサーバーを運用しているのですが、さくらのレンタルサーバーでは、Magentoの動作環境を満たさない（MySQLでInnoDBが使えない）ため、 他のレンタルサーバーへ乗り換えることになっていました。</p>
<p>現在Magentoが動作しているサーバーは正式運用前なので、ネームサーバーの設定はされておらず、DNSの逆引きができません。<br />そのため、さくらのメールサーバーが拒否しているのではないかと考えました。</p>
<p>そこで確認のため、知り合いでさくらのメールサーバーを使用している方にお願いして、買い物をしてもらいました。<br />ところが・・・なんと、ちゃんと受注確認メールが届いてしまったのです。<br />許可を得て、コントロールパネルからメールのセキュリティ設定を確認させてもらいましたが、クライアントの設定と全く同じ。<br />元々、そんなに設定項目はないので、設定ミスのしようもありません。<br />・・・困りました。</p>
<h3>さくらのサポートに相談</h3>
<p>手詰まりになってきたので、さくらのサポートに相談をしてみました。<br />サポートからほどなく連絡があり、サーバーの履歴を確認してみるので、メールが送信された詳細の日時と送信したメールの内容を教えてほしいと言われました。</p>
<p>その後の調査の結果、<strong>「さくらには、そのメールが届いた形跡がない」</strong>という返事が返ってきました。</p>
<p>？？？　狐につつまれたような感じです。</p>
<p>ただ、消去法で問題のありかはわかってきました。<br />「Magentoから、クライアントのドメイン宛に<strong>だけ</strong>、メールが送信されていない」ということです。</p>
<h3>MagentoのSMTP設定を変える</h3>
<p>原因がよくわからないので、とにかく試行錯誤をしてみることにしました。<br />うまく行ったら、そこから逆に原因を探してみようという考えです。</p>
<p>まずは、SMTP設定を変更できるエクステンション「<a href="http://www.magentocommerce.com/magento-connect/ASchroder/extension/1865/aschroder.com-smtp-pro" target="_blank">SMTP Pro</a>」を導入してみました。<br />Magentoが使用する送信メールサーバーを、動作中のサーバー以外の任意のサーバーに指定できるエクステンションです。<br />これを使って他のメールサーバーからメールを送信し、問題がMagentoにあるのかメールサーバーにあるのかを切り分けます。&nbsp;</p>
<p>SMTP Pro を導入すると、管理画面の「システム－設定－高度な設定－システム」に、4つの新しい項目が現れます。</p>
<p>まず「SMTP Pro Email General Settings」&nbsp;でエクステンションを有効にします。<br />今回は一般のレンタルサーバーのメールサーバーを使いますので、「Choose extension option」を「SMTP」にします。</p>
<p>次に「SMTP Pro Email SMTP Settings」&nbsp;でメールサーバーの設定をします。<br />「Authentication」は「ログイン」<br />他の設定は、通常メールクライアントに設定するものと同じです。<img src="http://www.cherrypieweb.com/weblog/img/technical/smtppro.jpg" alt="" width="580" height="942" /></p>
<p>この設定で買い物を行ったところ、クライアント担当者で問題なく受注確認メールが受信できました。</p>
<p>となると、問題はいったいなんだったのでしょうか？</p>
<h3>原因はメールサーバーの高度な動き</h3>
<p>メールサーバーの詳細な設定は、一般ユーザーにはわかりません。<br />そこで、Magentoが動作しているサーバーの担当者に聞いてみました。</p>
<p>その結果、私は、最近のメールサーバーの高度な動作を知ったのでした。</p>
<p>Magentoが動作しているサーバーは、テスト完了後に本番サーバーとして運用を行い、独自ドメインも、さくらから新しいサーバーへ移行する予定です。<br />そのため、ユーザー名やドメイン設定は、本番運用予定のものが設定してあります。<br />つまり、現在、さくらで運用中のものと同じドメインが設定されていたのです。&nbsp;</p>
<p>今回、クライアント担当者にメールが送信されなかったのは、Magentoが動作しているサーバーに設定されているドメインと同じドメイン宛のメールであったために、サーバーが内部処理でメールを受信箱に移動させ、<strong>外部に送信していなかった</strong>ということなのです。</p>
<p>ということは、メールサーバーの動作確認のために、自分宛にメールを送るという操作は、あんまり意味がないということなのですね。<br />単にメールサーバーの内部処理テストを行っているだけだということですか・・・</p>
<p>すみません、私が無知でした。</p>
<p>というわけで、Magentoが動作しているサーバーへのドメイン移行が完了すれば、問題が解決するということがわかり、一安心です。&nbsp;</p>]]>
</content>
</entry>
<entry>
<title>Magentoに「のし」機能をつける</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/technical/20110710231016.php" />
<id>tag:www.cherrypieweb.com,2011:/weblog//2.302</id>
<published>2011-07-10T14:10:16Z</published>
<updated>2011-07-15T16:18:53Z</updated>
<summary>Magentoを日本仕様にするカスタマイズ。既存の機能を流用して「のし」機能をつけてみました。</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
<category term="magento" label="magento" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>お中元の季節ですね。</p>
<p>日本でECシステムを作る上で欠かせないのが「のし」機能。<br /> Magentoには当然ありませんが、既存の機能でなんとかしてみたいと思います。</p>
<p>使うのは、「ギフトメッセージ」機能。<br /> これを、のしに改造してみます。</p>
<p>実際には、このようになります。 <br /> <img src="http://www.cherrypieweb.com/weblog/img/technical/noshi-01.jpg" alt="のし" width="658" height="676" /><br /> あて先は「表書き 」、メッセージは「のしの種類」に修正しています。</p>
<p>手順は以下の通りです。</p>
<ol>
<li>ラベルの修正</li>
<li>フォームフィールドに初期値が自動入力されないように修正</li>
<li>テキストエリアをセレクトボックスに修正（のしの種類を選べるように）</li>
<li>管理画面でも同様に修正</li>
</ol>
<p>&nbsp;</p>
<p>データベースをいじるような、お行儀の悪いカスタマイズはしないように心がけました。（笑） <br /> 基本的に、翻訳ファイルとテンプレートファイルを修正するだけのカスタマイズです。</p>
<p>なお、ここで説明しているのは、onepage checkout の場合ですが、multi shipping でも応用がきくと思います。</p>
<h3>ラベルの修正</h3>
<p>Magentoの日本語表示は翻訳ファイルで行っているので、極端な話、翻訳ファイルを変更するとか、直訳機能で修正するだけでも何とかなります。 <br /> 以下は、日本語ロケールファイルを導入しているとして説明します。 <br /> （導入されていない方は、「Magento 日本語ロケール」などで検索してみてください。 <br /> 私は、<em>「PepMaq_Japan_Translation」</em>というエクステンションで日本語化しています。 <br /> 1.4用ですが、1.5で使っても問題なさそうです）</p>
<p>ギフトメッセージに絡む翻訳ファイルは、下記です。</p>
<p><em>app/locale/ja_JP/Mage_Sales.csv</em><br /> <em> app/locale/ja_JP/Mage_GiftMessage.csv</em></p>
<p>上記の2つのファイルの中で、「ギフトメッセージ」、「メッセージ」という訳語を、「のし」に修正するだけで、見た目だけはのし機能がついたみたいになります。</p>
<p>しかし、実際に使用されている単語の中には、「From」、「To」、「Message」といった、非常に単純なものがあります。 <br /> <em>Mage_Sales.csv</em> の中で、これらはいろいろな画面で使用されているので、うっかり他の画面に適用されてしまう危険性があります。</p>
<p>今回は、どうせテンプレートファイルを修正しますので、対策として元の英語を修正することにしました。</p>
<p>該当テンプレートファイルは、下記です。</p>
<p><em>app/design/frontend/base/default/template/giftmessage/inline.phtml</em><br /> <em> app/design/adminhtml/default/default/template/sales/order/view/giftmessage.phtml</em></p>
<p>これらを、テーマのディレクトリにコピーして、コード中に出てくる翻訳対象部分を下記のように一括で置換します。<br>
（フロントエンド（app/design/frontend）と、管理画面（app/design/adminhtml）で、それぞれ別のディレクトリになりますので注意してください）</p>
<pre class="prettyprint">__('From') &rarr; __('Noshi From')
__('To') &rarr; __('Noshi Title')
__('Message') &rarr; __('Noshi Message')
</pre>
<p>そして、翻訳ファイルに、</p>
<pre class="prettyprint">"Noshi From","お名前"
"Noshi Title","表書き"
"Noshi Message","のしの種類"
</pre>
<p>を追加しました。 <br /> 実際には、関連するものをすべて追加・修正していく必要があります。 <br /> 少なくとも、「Gift Message」という単語はすべて「のし」にします。</p>
<p>のしを使うのは日本だけだから、phtmlに直接日本語を書き込んでもいいように思いますが、Magentoのお作法に従っておいたほうが、多分、後々良いと思います。&nbsp;</p>
<p>（Mage_Sales.csv の例）</p>
<pre class="prettyprint">"Add Gift Messsage","のしを追加"
"Add a gift message for each gift item","それぞれの商品にのしを追加"
"Add a gift message for the entire order","すべての注文にのしを一つ追加"
"Gift Message","のし" <br />"Gift Message for This Order","このご注文ののし"
"Gift Message for the Entire Order","すべてのご注文ののし"
"Gift Message for this Order","このご注文ののし"
</pre>
<p>（Mage_GiftMessage.csv の例）</p>
<pre class="prettyprint">"Message","のしの種類" "To","表書き"
"Noshi Message","のしの種類"
"Save Gift Message","のしを保存"
"Noshi From","お名前"
"Noshi Title","表書き"
"You can leave this box blank if you do not wish to add a gift message for the item."
&nbsp;&nbsp;&nbsp;&nbsp;,"のしの種類を選択しないと、入力項目は消去されます"
"You can leave this box blank if you do not wish to add a gift message for this address."
&nbsp;&nbsp;&nbsp;&nbsp;,"のしの種類を選択しないと、入力項目は消去されます"
"You can leave this box blank if you do not wish to add a gift message for whole order."
&nbsp;&nbsp;&nbsp;&nbsp;,"のしの種類を選択しないと、入力項目は消去されます"
</pre>
<h3>フォームフィールドに初期値が自動入力されないように修正</h3>
<p>ギフトメッセージ機能では、すでに、送り主とあて先の欄に初期値が入っています。<br /> 今回は、あて先欄を表書きに使用するので、自動であて先を入力されると困ります。<br /> そこで、自動入力されないように修正します。</p>
<p>該当テンプレートファイルは、下記です。<br /> <em> app/design/frontend/base/default/template/giftmessage/inline.phtml</em></p>
<p>自動入力を行っている部分は、各inputタグの value属性の部分にある、</p>
<pre class="prettyprint">$this-&gt;getDefaultFrom()
$this-&gt;getDefaultTo()
</pre>
<p>ですので、これを削除します。</p>
<pre class="prettyprint">&lt;li class="fields"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class="field"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;label for="gift-message-whole-from"&gt;&lt;?php echo $this-&gt;__('Noshi From') ?&gt;&lt;/label&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class="input-box"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name="giftmessage[&lt;?php echo $this-&gt;getEntity()-&gt;getId() ?&gt;][from]"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id="gift-message-whole-from" title="&lt;?php echo $this-&gt;__('Noshi From') ?&gt;" &nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value="&lt;?php echo $this-&gt;getEscaped($this-&gt;getMessage()-&gt;getSender()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<del>, $this-&gt;getDefaultFrom()</del>) ?&gt;"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class="input-text validation-passed" /&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class="field"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;label for="gift-message-whole-to" class="required"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;em&gt;*&lt;/em&gt;&lt;?php echo $this-&gt;__('Noshi Title') ?&gt;&lt;/label&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class="input-box"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name="giftmessage[&lt;?php echo $this-&gt;getEntity()-&gt;getId() ?&gt;][to]"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id="gift-message-whole-to" title="&lt;?php echo $this-&gt;__('Noshi Title') ?&gt;"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value="&lt;?php echo $this-&gt;getEscaped($this-&gt;getMessage()-&gt;getRecipient()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<del>, $this-&gt;getDefaultTo()</del>) ?&gt;"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class="input-text validation-passed" /&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
&lt;/li&gt;
</pre>
<h3>テキストエリアをセレクトボックスに修正</h3>
<p>のしの種類を選ぶことができるように、テキストエリアをセレクトボックスにします。<span style="line-height: normal; ">&nbsp;</span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4; ">該当テンプレートファイルは、先ほどと同じです。 <em>app/design/frontend/base/default/template/giftmessage/inline.phtml</em></p>
<p>選択肢は、先頭のほうに配列で宣言しておくと、後の修正がしやすくなります。</p>
<pre class="prettyprint">&lt;?php
$_options = array(
&nbsp;&nbsp;&nbsp;&nbsp;array('label' =&gt; '－のしの種類を選択してください－', 'value' =&gt; ''),
&nbsp;&nbsp;&nbsp;&nbsp;array('label' =&gt; '紅白蝶結び', 'value' =&gt; '紅白蝶結び'),
&nbsp;&nbsp;&nbsp;&nbsp;array('label' =&gt; '紅白結び切り', 'value' =&gt; '紅白結び切り'),
&nbsp;&nbsp;&nbsp;&nbsp;array('label' =&gt; '弔事', 'value' =&gt; '弔事')
);
?&gt;
&lt;li class="wide"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;label for="gift-message-whole-message"&gt;&lt;?php echo $this-&gt;__('Noshi Message') ?&gt;&lt;/label&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class="input-box"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;select id="gift-message-whole-message"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name="giftmessage[&lt;?php echo $this-&gt;getEntity()-&gt;getId() ?&gt;][message]"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class="input-text validation-passed giftmessage-area"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title="&lt;?php echo $this-&gt;__('Noshi Message') ?&gt;"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onchange="toogleRequired('gift-message-whole-message', ['gift-message-whole-to'])"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php $giftMessageValue = $this-&gt;getMessage()-&gt;getMessage(); ?&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php foreach($_options as $_option): ?&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php $giftMessageSelected = $_option['value'] == $giftMessageValue ? ' selected' : ''; ?&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option &lt;?php echo 'value="'.$_option['value'].'"'.$giftMessageSelected ?&gt;&gt;&lt;?php echo $_option['label'] ?&gt;&lt;/option&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php endforeach; ?&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/select&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br /&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;p class="required"&gt;&lt;?php echo $this-&gt;__('* Required Fields') ?&gt;&lt;/p&gt;
&lt;/li&gt;
</pre>
<h3>管理画面</h3>
<p>ギフトメッセージ機能をのしに修正した場合は、管理画面での修正が必須です。<br />特に、自動入力は管理画面でも実装されていますので、これをそのままにしておくと、お客様がのしをつけていないのに、管理画面でのしが自動入力されてしまいます。</p>
<p>管理画面はコアファイルを修正する必要があります。<br /><em>app/code/core/Mage/</em> 以下のディレクトリにあるファイルのうち修正を加えたいファイルを、<em>app/code/local/Mage/</em> 以下のディレクトリに、ディレクトリ構造を保ったままコピーして修正してください。</p>
<h4>受注表示&nbsp;</h4>
<p><img src="http://www.cherrypieweb.com/weblog/img/technical/noshi-02.jpg" alt="のし-管理画面-受注表示" width="680" /></p>
<p><em>app/code/core/Mage/Adminhtml/Block/Sales/Order/View/Giftmessage.php</em> を、<em>app/code/local</em>にコピーして修正します。</p>
<p>関数からの戻りで、値を代入させないようにします。<br />安全のために returnを置き換えていますが、if文ごと削除しても問題ないかもしれません。&nbsp;</p>
<pre class="prettyprint">public function getDefaultSender() {
&nbsp;&nbsp;&nbsp;&nbsp;if(!$this-&gt;getEntity()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;getEntity()-&gt;getOrder()) {
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;getEntity()-&gt;getOrder()-&gt;getCustomerName();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}
//&nbsp;&nbsp;return $this-&gt;getEntity()-&gt;getCustomerName();
&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}
public function getDefaultRecipient() {
&nbsp;&nbsp;&nbsp;&nbsp;if(!$this-&gt;getEntity()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;getEntity()-&gt;getOrder()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($this-&gt;getEntity()-&gt;getOrder()-&gt;getShippingAddress()) {
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;getEntity()-&gt;getOrder()-&gt;getShippingAddress()-&gt;getName();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else if ($this-&gt;getEntity()-&gt;getOrder()-&gt;getBillingAddress()) {
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;getEntity()-&gt;getOrder()-&gt;getBillingAddress()-&gt;getName();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;if ($this-&gt;getEntity()-&gt;getShippingAddress()) {
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;getEntity()-&gt;getShippingAddress()-&gt;getName();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;} else if ($this-&gt;getEntity()-&gt;getBillingAddress()) {
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;getEntity()-&gt;getBillingAddress()-&gt;getName();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}
</pre>
<p>あと、受注表示画面で、なぜかギフトメッセージがフォームになっているので、通常のテキスト表示に修正したほうが良いのではないかと思います。<br /> こちらは、下記のファイルをテーマディレクトリにコピーして修正します。<br /> （フォームのままでも特に支障はないので、今回は説明を省きます）</p>
<p><em>app/design/adminhtml/default/default/template/sales/order/create/data.phtml<br /> app/design/adminhtml/default/default/template/sales/order/create/giftmessage.phtml </em></p>
<h4>受注作成</h4>
<p><img src="http://www.cherrypieweb.com/weblog/img/technical/noshi-03.jpg" alt="のし-管理画面-受注作成" width="680" /></p>
<p><em>app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Giftmessage/Form.php</em> を、<em>app/code/local</em>にコピーして修正します。</p>
<p>関数からの戻りで、値を代入させないようにするのと、テキストエリアをセレクトボックスにする修正です。<br />必須項目にするかどうかも修正しています。&nbsp;</p>
<pre class="prettyprint">public function getDefaultSender() {
&nbsp;&nbsp;&nbsp;&nbsp;if(!$this-&gt;getEntity()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;_getSession()-&gt;getCustomer()-&gt;getId()) {
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_getSession()-&gt;getCustomer()-&gt;getName();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;$object = $this-&gt;getEntity();
&nbsp;&nbsp;&nbsp;&nbsp;if ($this-&gt;getEntity()-&gt;getQuote()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$object = $this-&gt;getEntity()-&gt;getQuote();
&nbsp;&nbsp;&nbsp;&nbsp;}
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $object-&gt;getBillingAddress()-&gt;getName();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}
public function getDefaultRecipient() {
&nbsp;&nbsp;&nbsp;&nbsp;if(!$this-&gt;getEntity()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;$object = $this-&gt;getEntity();
&nbsp;&nbsp;&nbsp;&nbsp;if ($this-&gt;getEntity()-&gt;getOrder()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$object = $this-&gt;getEntity()-&gt;getOrder();
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else if ($this-&gt;getEntity()-&gt;getQuote()){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$object = $this-&gt;getEntity()-&gt;getQuote();
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;if ($object-&gt;getShippingAddress()) {
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $object-&gt;getShippingAddress()-&gt;getName();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else if ($object-&gt;getBillingAddress()) {
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $object-&gt;getBillingAddress()-&gt;getName();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return '';
&nbsp;&nbsp;&nbsp;&nbsp;}
public function _prepareForm() {
・・・
&nbsp;&nbsp;&nbsp;&nbsp;'label' =&gt;  Mage::helper('sales')-&gt;<del>__('From'),</del>__('Noshi From'),
&nbsp;&nbsp;&nbsp;&nbsp;<del>'required' =&gt;  $this-&gt;getMessage()-&gt;getMessage() ? true : false</del>'required' =&gt;  false
・・・
&nbsp;&nbsp;&nbsp;&nbsp;'label' =&gt;  Mage::helper('sales')-&gt;<del>__('To'),</del>__('Noshi Title'),
・・・
&nbsp;&nbsp;&nbsp;&nbsp;$fieldset-&gt;addField('message', 'select',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name'      =&gt;  $this-&gt;_getFieldName('message'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'label'     =&gt;  Mage::helper('sales')-&gt;__('Noshi Message'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'value'     =&gt;  $this-&gt;_getFieldName('message'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'values'    =&gt;  array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array('label' =&gt; 'なし', 'value' =&gt; ''),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array('label' =&gt; '紅白蝶結び', 'value' =&gt; '紅白蝶結び'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array('label' =&gt; '紅白結び切り', 'value' =&gt; '紅白蝶結び切り'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array('label' =&gt; '弔事', 'value' =&gt; '弔事')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'onchange'  =&gt;  'giftMessagesController.toogleRequired(\'' . $this-&gt;_getFieldId('message')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.  '\', [\'' . $this-&gt;_getFieldId('sender')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.  '\', \'' . $this-&gt;_getFieldId('recipient') . '\']);'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;);
</pre>
<p>以上で、のし機能が実現できます。</p>
<p>本来なら、エクステンションを作るべきなのですが、既存の機能を生かしてちゃちゃっと作るのもありですよね。</p>]]>
</content>
</entry>
<entry>
<title>Magentoのグリッド表示で１行あたりの商品個数を変える</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/technical/20110701110645.php" />
<id>tag:www.cherrypieweb.com,2011:/weblog//2.304</id>
<published>2011-07-01T02:06:45Z</published>
<updated>2011-07-13T02:06:39Z</updated>
<summary>簡単そうで意外にできないが、わかればなるほど！　の、商品一覧ブロック表示修正方法です。</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
<category term="magento" label="magento" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>Magentoのカテゴリトップページなどでグリッド表示を選択すると、商品が３点ずつ並び、区切り線が入ります。 <br />
１行あたりの個数は、レイアウトXMLで設定するようになっています。</p>
<p><img alt="category_columns.jpg" src="http://www.cherrypieweb.com/weblog/img/technical/category_columns.jpg" width="516" height="677" class="mt-image-none" style="" /></p>
<h3>レイアウトXMLで設定</h3>
<p><em>local.xml</em> に下記の記述を追加すれば、１行あたり２点ずつになります。</p>
<pre class="prettyprint">&lt;catalog_category_default&gt;
&nbsp;&nbsp; &nbsp; &nbsp;&lt;reference name="content"&gt;
&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&lt;block name="category.products"&gt;
&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&lt;block name="product_list"&gt;
&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&lt;action method="setColumnCount"&gt;&lt;columns&gt;2&lt;/columns&gt;&lt;/action&gt;
&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&lt;/block&gt;
&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&lt;/block&gt;
&nbsp;&nbsp; &nbsp; &nbsp;&lt;/reference&gt;
&lt;/catalog_category_default&gt;
</pre>
<p>setColumnCount の値が、１行あたりの個数になります。</p>
<p>管理画面のカテゴリ設定で、「Display Settings」タブの「Is Anchor」を「Yes」に設定している場合は、catalog_category_default を catalog_category_layered に変更してください。</p>
<h4>動作の解説</h4>
<p>カテゴリページの表示は、<br /><em>app/design/frontend/base/default/template/catalog/product/list.phtml</em> で行われています。<br />
このファイルを見てみると、１列あたりの個数は、$_columnCount という値で設定されているのがわかります。 <br />
この値を求めている、getColumnCount関数は、<em>code/core/Mage/Catalog/Block/Product/List.php</em> の派生元クラスである、<em>code/core/Mage/Catalog/Block/Product/Abstract.php</em> にあります。<br />
初期値は「3」に設定されています。</p>
<p>この値をレイアウトXMLにセットしてやると、１行あたりの商品個数が変更できるというわけです。</p>
<p><em>app/design/frontend/base/default/layout/catalog.xml</em> を見ると、アップセル商品にも同じような設定がされているのがわかると思います。</p>
<h3>体裁を整える</h3>
<p>１行当たりの個数を変更した場合は、スタイルシートを調整しないと体裁が崩れます。<br />
そのため、使用しているテーマのスタイルシートで、下記を変更してください。</p>
<p>まず、グリッドの横幅を調整します。<br />
グリッドの横幅はスタイルシートで固定されているため、１行当たりの個数を変えても右側に余白ができるだけです。<br />
きれいに見せるためには、グリッド左右のpadding を変更します。</p>
<pre class="prettyprint">.products-grid li.item {
&nbsp;&nbsp; &nbsp; &nbsp;float: left;
&nbsp;&nbsp; &nbsp; &nbsp;padding: 12px 10px 80px;　←　ここを調整（見本では 50px）
&nbsp;&nbsp; &nbsp; &nbsp;width: 136px;
}
</pre>
<p>グリッド横の罫線は、ulタグの背景画像に設定されているので、これを差し替える必要があります。</p>
<pre class="prettyprint">.products-grid {
&nbsp;&nbsp; &nbsp; &nbsp;background: url("../images/bkg_grid.gif") repeat scroll 0 0 transparent;　←　画像をさしかえ
}
</pre>
<p>他の部分も、おおよそ似たような構成です。 <br />
管理画面のレイアウトアップデートを使えば、カテゴリごとに個数を変えたりもできそうですが、このあたりは試していません。 <br />
応用なんかを教えていただければ嬉しいです。</p>
]]>
</content>
</entry>
<entry>
<title>Magentoの顧客管理でフィールドの順序を変える</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/technical/20110628163658.php" />
<id>tag:www.cherrypieweb.com,2011:/weblog//2.303</id>
<published>2011-06-28T07:36:58Z</published>
<updated>2011-07-11T15:13:30Z</updated>
<summary>Magentoは、妙なところでシステマチックなので、仕組みがわかるまでは本当に大変です。
</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
<category term="magento" label="magento" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>以前の記事「<a href="http://www.cherrypieweb.com/weblog/technical/20110525002008.php">Magentoの住所でフリガナが保存されない</a>」の続きです。<br />
コメントで、管理画面の表示順序を直せないかとリクエストを頂きましたので、その方法です。</p>
<p><strong>※この記事では、データベースを直接操作していますが、本来ならばセットアップ用のスクリプトを組むべきです。</strong><br />
このへん、まだ私はよくわからないのですよね。<br />
どなたか、ご教授いただけるとありがたいのですが。</p>
<p><a href="http://www.cherrypieweb.com/weblog/technical/20110525002008.php">前回の記事</a>の内容を適用しただけでは、管理画面で顧客情報を開いた時の項目の表示順が、日本の様式に合っていません。<br />
氏名は、「プリフィックス・名・ミドルネーム・姓・サフィックス・・・」の順に<br />
住所は、「番地・市区町村・都道府県・国名・・・」の順になっています。</p>
<p>これを、任意の順序に変更します。</p>
<h3>表示順はどこで決まっているのか？</h3>
<p>顧客データは、データベースの「customer_eav_attribute」テーブルで規定されています。 <br />
この中の、sort_orderフィールドが、フィールドの表示順になります。<br />
この値を書き換えてやるだけで、並べたい順序にすることができます。</p>
<h3>新しい表示順を決める</h3>
<p>しかし、「customer_eav_attribute」テーブルには、実際の項目名はありません。<br />
attribute_id フィールドが項目を表す一意の値ですので、これをキーにして、「eav_attribute」テーブルを参照します。<br />
frontend_label フィールドが項目名（英語表記）です。<br />
これをもとに、新しい表示順を決めます。</p>
<p>頭の中だけでこれらを考えるのは大変ですので、私はExcelを使って、下記の要領で sort_order の値を決めました。</p>
<img alt="admincustomer.jpg" src="http://www.cherrypieweb.com/weblog/img/technical/admincustomer.jpg" width="453" height="488" class="mt-image-none" style="" /><br /><br />
<ol>
<li style="list-style-type:decimal;">「customer_eav_attribute」テーブルと、「eav_attribute」テーブルをエクスポートする。<br />
phpMyAdminであれば、Excel形式がおすすめ。<br /><br /></li>
<li style="list-style-type:decimal;">エクスポートしたテーブルをExcelで開いて、「customer_eav_attribute」テーブルのattribute_idの値に対応する、「eav_attribute」テーブルの entity_type_id と frontend_label を得る<br />
（VLOOKUP関数を使いましょう）<br /><br /></li>
<li style="list-style-type:decimal;">Excel上で、並べたい順に行を並べ替える。<br />
（行番号をクリックして行ごと選択し、「切り取り→切り取ったセルの挿入」で移動）<br />
entity_type_id の値が1の項目はアカウント情報。2の項目は住所用のものなので、分けて考えること。<br /><br /></li>
<li style="list-style-type:decimal;">並べ終わったら、sort_order の値を、昇順になるように変更する。<br /><br /></li>
<li style="list-style-type:decimal;">phpMyAdminなどで、実際のデータベース上の「customer_eav_attribute」テーブルの sort_order の値を変更する</li>
</ol>
<br />
<p>Excelで並び替えたものをcsv書き出しして、データベースにインポートしてもよいのですが、失敗すると怖いですし、実際に修正する値はそれほど多くないので、私は修正したい部分だけ phpMyAdmin で打ちかえました。</p>
<p>これで、管理画面をリロードしてみれば、sort_orderの値の順に入力項目が並びかえられています。</p>
<p>なお、不要項目を非表示にするのは、また別の手段が必要になります。</p>
<p>こちらはまた、別の機会ということにさせてください。（今回も、力尽きました・・・）</p>]]>
</content>
</entry>
<entry>
<title>XAMPP環境でlocalhostに接続できない意外な原因</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/technical/20110620103729.php" />
<id>tag:www.cherrypieweb.com,2011:/weblog//2.301</id>
<published>2011-06-20T01:37:29Z</published>
<updated>2011-07-01T13:35:03Z</updated>
<summary>XAMPP環境でlocalhostに接続できないという話はよくありますが、うちの原因はこいつでした・・・</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
<category term="xampp" label="XAMPP" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>久しぶりにXAMPPで開発を行おうとしたら、localhostにつながらなくなってしまいました。</p>
<h3>疑う先はいっぱいあるのですが・・・</h3>
<p>Windowsにはいろいろ手を入れているので、疑う先はいっぱいあります。</p>
<ul>
<li>ファイヤウォールがポートをふさいでいる</li>
<li>hostsファイルが書き換えられている</li>
<li>Apacheの設定が間違っている</li>
<li>他のアプリがポートを使っている</li>
</ul><br />
<p>まずは、ファイヤウォール。<br />
ポート80がふさがれていないか確認します。<br />
ルーターの設定は問題なし。<br />
コンピュータのファイヤウォールも問題なし。<br />
以前つながっていたし、設定を変えた覚えもないので、当然です。</p>
<p>次に、念のため、hostsファイルを調べました。<br />
XAMPPでバーチャルドメインを有効にするためにhostsファイルに記述を付け足すわけですが、その時にうっかり間違えて、localhostを無効にしているのかな？　と思ったのですが、こちらも問題なし。</p>
<p>次は、Apacheの設定ファイル。<br />
こちらも、初期設定から触った記憶があるのはバーチャルドメインのあたりだけですが、いちおう念のために一通り調べてみました。<br />
結果、問題なし。</p>
<p>となると、他のアプリが悪さをしているということになります。</p>
<p>「そうか！　Skypeのバージョンアップのせいだな！　そうに違いない！」と思って設定を見てみたところ・・・きちんとポートが変えてありました。<br />
「上記のポートに代わり、ポート80を使用」のチェックが外れていて、全く違うポートが使われています。</p>
<h3>コマンドプロンプトを使うしかないか・・・</h3>
<p>仕方がないので、地道に使われているポートを調べます。<br />
スタートメニューのアクセサリからコマンドプロンプトを開いて、netstat -ano を実行。<br />
うあ、すごい情報量です。<br />
バッファの容量を超えてしまって、先頭のほうが切れてしまっています。<br />
これでは肝心のポート80あたりが見れません。</p>
<img alt="cmd20110620-1.jpg" src="http://www.cherrypieweb.com/weblog/img/technical/cmd20110620-1.jpg" width="446" height="442" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" />
<p>コマンドプロンプトの設定を変更します。<br />
ウィンドウ上で右クリックしてプロパティを開き、レイアウトタブから、画面バッファーのサイズを変更します。<br />
とりあえず、高さを800にしてみました。</p>
<br style="clear:both;">
<p>再度、netstat -ano を実行します。<br />
またもや大量の情報が表示されますが、スクロールバーで戻れば、ポート80を使用しているプロセスが確認できます。</p>
<img alt="cmd20110620-2.jpg" src="http://www.cherrypieweb.com/weblog/img/technical/cmd20110620-2.jpg" width="677" height="294" class="mt-image-none" style="" />
<p>どうやら、PID = 4772 のプロセスが邪魔をしているようです。</p>
<p>プロセスの名前を調べるために、tasklistコマンドを使います。<br />
<pre class="prettyprint">
tasklist /svc /fi "PID eq 4772"
</pre>
<img alt="cmd20110620-3.jpg" src="http://www.cherrypieweb.com/weblog/img/technical/cmd20110620-3.jpg" width="677" height="182" class="mt-image-none" style="" />
<p>見つかりました。GladinetClient.exe　です。<br />
これは、クラウドのストレージをハードディスクのようにマウントするツールです。<br />
Microsoft Sky Drive なんかをマウントして便利に使っていたのですが、こいつのせいだったのか。</p>
<p>とりあえず、Gladinetを終了させてみると、ブラウザからlocalhostに接続することができました。</p>
<p>次に、GladinetをXAMPPと同時に使えないか調べてみたのですが、どうやら、Gladinetの使用ポートを変えることはできないようです。<br />
仕方がないので、XAMPP環境で開発するときは、手動でGladinetを終了させています。<br />
同時に使えると結構便利なのですが・・・どなたか共存できる方法をご存じなら教えていただけると嬉しいです。</p>]]>
</content>
</entry>
<entry>
<title>Facebookページで、どうやっても縦スクロールバーが消えない</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/technical/20110617161751.php" />
<id>tag:www.cherrypieweb.com,2011:/weblog//2.300</id>
<published>2011-06-17T07:17:51Z</published>
<updated>2011-06-17T14:30:47Z</updated>
<summary>Facebookページをiframeで作成した時に表示されてしまう「縦スクロールバー」。
なぜか私の場合、JavaScriptを入れても消えないんです。</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
<category term="css" label="css" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="facebook" label="Facebook" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>Facebookページを作るときに、必ずと言っていいほど問題になるのが、<br />
「縦スクロールバーをいかに消すか？」<br />
ということだと思います。</p>
<p>縦スクロールバーを消す方法としては、</p>
<ol>
<li>アプリの設定で、「iframeサイズ：Auto-resize」を選択</li>
<li>JavaScript SDKを追加</li>
<li>JavaScriptでウィンドウの高さを取得して、高さを動的に変える</li>
</ol><br />
<p>といった手法が紹介されています。</p>
<p>しかし、私の場合、これらを行っても、どうしても縦スクロールバーが消えないのです。<br />
正確に言うと、空のスクロールバーが残ってしまいます。</p>
<img alt="facebook20100617-1.png" src="http://www.cherrypieweb.com/weblog/img/technical/facebook20100617-1.png" width="400" height="367" class="mt-image-none" style="" />
<br />
<p>情報を求めてネットを探し回りますが、みんな JavaScript で解決している様子。<br />
「困ったなー　また、俺だけかよ・・・」とか思いながら、検索範囲を日本語以外に広げたところ、ようやくこちらが見つかりました。</p>
<p><a href="http://stackoverflow.com/questions/6207403/facebook-iframe-vertical-scrollbar-wont-go-away">Facebook iFrame Vertical Scrollbar Won't Go Away</a></p>
<p>どうやら、ブラウザのデフォルトスタイルシートをリセットするCSSに、</p>
<pre class="prettyprint lang-html">html { overflow-y : scroll; }
</pre>
<p>が含まれていたのが原因だったようです。</p>
<pre class="prettyprint lang-css">html { overflow-y : hidden; }
</pre>
<p>を設定すると、スクロールバーが消えてくれました。</p>
<p>htmlタグではなく、bodyタグに入っている場合もあります。その場合は、</p>
<pre class="prettyprint lang-css">body { overflow-y : hidden; }
</pre>
<p>で解決します。</p>
<p>CMSを使っている人は要注意ですね。</p>
<p>というわけで、修正したFacebookページは<a href="http://www.facebook.com/pages/Cherry-Pie-Web/161875807211770?sk=app_127275080684787">こちら</a>。<br />
<a href="http://www.facebook.com/pages/Cherry-Pie-Web/161875807211770?sk=app_127275080684787">Cherry Pie Web</a><br />
「いいね！」お願いします。</p>]]>
</content>
</entry>
<entry>
<title>Magentoで日本語データをインポートしてみた</title>
<link rel="alternate" type="text/html" href="http://www.cherrypieweb.com/weblog/technical/20110606185220.php" />
<id>tag:www.cherrypieweb.com,2011:/weblog//2.299</id>
<published>2011-06-06T09:52:20Z</published>
<updated>2012-01-24T09:02:59Z</updated>
<summary>データのインポートといえばCSVファイルが思い浮かびますが、CSVファイルの扱いって、意外に難しいところがあるのですよね。特にExcelの対応が・・・</summary>
<author>
<name>さくらぎけい</name>
</author>
<category term="Technical" scheme="http://www.sixapart.com/ns/types#category" />
<category term="magento" label="Magento" scheme="http://www.sixapart.com/ns/types#tag" />
<content type="html" xml:lang="ja" xml:base="http://www.cherrypieweb.com/weblog/">
<![CDATA[<p>（2011年6月17日　追記あり）</p>
<p>MagentoをはじめとするECシステムを導入しようというお店は、ほとんどが、それまでに楽天とかカラーミーショップとかのECサービスを使用していると思います。<br />
すると、当然ながら、これまでの顧客データをインポートしたいというニーズがあるわけです。</p>
<p>データインポートと言うと、たいていはCSVファイルを介して行いますよね？<br />
このCSVファイル、何で作成しますか？</p>
<p>Web屋がやるのなら、高機能のテキストエディタがあればなんとかなります。<br />
でも、クライアントにお願いするとなると、そう簡単にはいきません。<br />
CSVをダブルクリックすると、普通はどんなアプリケーションが開くでしょうか？</p>
<p>Excelですよね。</p>
<p>では、MagentoからエクスポートしたCSVをExcelで開くとどうなるでしょうか？<br />
はい、<br />
<strong>文字化けしてしまうのです！</strong></p>
<p>理由は簡単。Magentoから出力されたCSVの文字コードがUTF-8だからです。</p>
<p>マイクロソフトサポートオンラインにも、はっきり書いてあります。仕様だから仕方ありません。<br />
<a href="http://support.microsoft.com/kb/821863/ja">[XL2002] UTF-8 形式のテキスト ファイルが文字化けする</a></p>
<p>もちろん、解決法は、いくつもあります。</p>
<ul>
<li>拡張子を.txt にする。（Excelで開くときにテキストウィザードが開いて、文字コードが選択できます）</li>
<li>UTF-16で保存しなおす。</li>
<li>外部データの読み込みを使う。</li>
<li>OpenOfficeを使う。</li>
</ul>
<br />
<p>いずれも、慣れた人には難しいことではありませんが、普通にパソコンを事務作業で使っているクライアントの担当者にやらせようとすると、Excelの操作以前に教えなければいけない用語が多すぎて、意外にハードルが高いのです。</p>
<br />
<p>しかし、Magentoなら、そんな心配は不要です。<br />
なぜなら、<strong>「エクセルXML」</strong>をサポートしているからです。<br />
Excelは、不思議なことに、UTF-8のXMLなら文字化けしません。</p>
<br />
<p>
流れはこんな感じになります。<br />
※インポート／エクスポートは、Customersメニューではなく、SystemメニューのImport/Exportを使用してください。</p>
<h4>サンプルのXMLファイルを取得する</h4>
<p>仮の顧客データを登録し、まずはエクスポートします。</p>
<p>プロファイル「Export Customers」を選択します。<br />
デフォルトから変更するのは、データフォーマットを、<strong>MS Excel XML</strong>にすることくらいです。<br />
あと、「Original Magento attribute names in first row:」は、必ず、Yes にします。</p>
<p>プロファイルを変更したら、必ず、保存してからエクスポートしてください。
<br />
</p><h4>Excelで顧客データを作成</h4>
<p>サンプルのXMLをExcelで開きます。<br />
関連付けされていなければ、ドラッグ＆ドロップでも開きます。<br />
開く際に警告が出ることがありますが、たいていは無視して開くことができます。<br />
開いたら、普通にExcelのデータになっています。</p>
<p>このXMLをベースに顧客データを作成します。</p>
<p>1行目の項目名は読み込みの際に必要なので、削除したり変更したりしないでください。</p>
<p>項目名があれば、列の順序が違っても問題ありません。<br />
不要な列は削除してもかまいません。</P>
<p>ただし、必須項目が空欄だと、読み込みがスキップされてしまいます。<br />
例えば、請求先の郵便番号が抜けていると、アカウントだけインポートされ、請求先住所は丸ごとスキップされてしまいます。<br />
郵便番号が抜けていることは、よくあることだと思いますが、マイクロソフトのサイトで、住所から郵便番号に変換してくれるExcelアドオンと辞書が入手できますので、活用してください。</p>
<p>なお、パスワードは、MD5ハッシュ変換を行う必要があります。</p>
<p>作成したら、不要な列やワークシートを削除して、<strong>XMLスプレッドシート形式</strong>で書き出します。<br />
※XML形式ではありませんので注意してください。</p>
<br />
<h4>エクセルXMLをインポート</h4>
<p>作成したXMLスプレッドシートをMagentoにインポートします。<br />
インポートの際は、プロファイル「Import Customers」を使用します。</p>
<p>デフォルトからは、下記を変更します。</p>
<ul>
<li>Number of records:を、顧客データ数より大きな値にしておく</li>
<li>データフォーマットを、<strong>MS Excel XML</strong>にする</li>
<li>「Original Magento attribute names in first row:」は、必ず、Yes に</li>
</ul>
<br />
<p>また、XAMPPなどWindows系のサーバーの場合は、Data transfer:は「Interactive」にします。<br />
パスの記号が合わないので、「Local/Remote Server」ではうまく行きません。<br />
Unix系のサーバーなら、どちらでも問題ありません。</p>
<p>「Interactive」を選んだ場合は、［Upload File］タブから、XMLファイルをアップロードします。</p>
<p>アップロードしたら、一度プロファイルを保存します。<br />
次に、［Run Profile］タブを開き、ドロップダウンメニューから、先ほどアップロードしたファイルを選択します。<br />
［Run Profile in Popup］ボタンをクリックし、取り込みが正常に終了したら、インポート完了です。</p>
<p>取り込めたら、必ず顧客データを確認してください。</p>
<br />
<h4>日本語化している際の注意事項</h4>
<p>「PepMaq Japan Package14」を使用して日本語化している場合など、Region（都道府県）を日本語にしている場合は、注意が必要です。<br />
データベース上で英語表記にしているときは、XML上も英語にしておく必要があるからです。<br />
XML上が日本語のままでは、すべての都道府県が「北海道」になってしまいます。</p>
<p>データベースの内容が確認できるなら、次の２つのテーブルを確認してください。</p>
<p></p><pre class="prettyprint lang-php">directory_country_region_name
directory_country_region
</pre>
<p>「region_id」の値で英語表記と日本語表記の対応がわかります。</p>
<p>「PepMaq Japan Package14」を使用している場合は、<br />
<pre class="prettyprint lang-php">magento/app/code/local/PepMaq/Japan/Region/sql/japanregion_setup/mysql4-install-0.1.0.php
</pre><br />
を開いても確認できます。</p>
<p>これらを基に、ExcelのVLOOKUP関数などを駆使して、都道府県を英語表記にしてからインポートしてください。</p>
<hr />
<br >
<p>ここまで書いていて気づきましたが、パスワードのMD5変換が必要な時点で、クライアントの担当者にお願いする話ではありませんね・・・</p>]]>
</content>
</entry>
</feed>


