Formのdisable、readonly属性でスタイルを変える
いつも忘れるのでちょっと備忘録代わりに書いておきます。
- フォームのdisableとかreadonly属性を指定してスタイルを変える。
input[disabled][readonly]{background-color:#CCC;}
とか。ちなみにdisabled属性を指定すると、その要素のデータは送信されません。
EC-CUBE3対応!デザインカスタマイズガイドブック
新しくなったEC-CUBE3に対応したデザインカスタマイズブック。2017年1月現在 EC-CUBE3のデザインカスタマイズについて解説されている書籍はこれだけです。とりあえず買いましょう!
EC-CUBEとローカルの基幹システムを安全な通信で連携させる。
最近、EC-CUBE(WEBサーバ)と社内の基幹システムとの連携カスタマイズのお仕事が増えています。
もう何年も前から思っているのですが、システムの肝は他のシステムとどれだけシームレスに連携出来るかだと思っています。*1
全部繋がった時のパフォーマンスは素晴らしい物があり、もはやそのシステムを手放せなくなります。
EC-CUBEには各種CSV出力機能など、他のシステムと連携させるための機能がいくつもあります。
あまり知られていませんが、売上情報の集計やメール配信等をバッチで処理するインターフェイスも準備されています。
ただ、自動で社内の販売管理システムなどの基幹システムと連携させるには、もう少し工夫が必要です。
単純な定期バッチで、社内のサーバからFTPでファイルを取りに行くだけなら簡単ですが、FTPはネットワーク上をデータが暗号化されない状態で流れるため、セキュリティ上あまりよろしくありません。
また、社内のローカルシステムとデータセンターにあるEC-CUBEのサーバとを定期バッチで連携させる為には、タイミング等難しい問題もあります。
EC-CUBE(WEBサーバ)を連携処理の起点として社内のサーバにアクセスさせるのも、社内ネットワークに穴を開ける事になるので、出来れば社内のサーバからWEBのデータを取りに行きたい所です。
社内のサーバからWEBサーバにアクセスして、データの集計、出力処理を実行し、データを社内のサーバにダウンロード、基幹システムに取り込む、といった感じです。
では、安全に確実これらの処理を自動で実行する為にはどうしたら良いでしょうか?
まず、WEBサーバのデータ出力スクリプトは社内のサーバから実行します。*2
WEBサーバには安全に接続、データの送受信を行うため、SSH(SFTP)*3というプロトコルを使います。
sshでWEBサーバにアクセスするのは簡単です。他のサイトで詳細に説明されているので、そちらをご参照ください。
sshでアクセスする際に重要なのが、「鍵認証を使う」という事です。
これによりセキュリティも向上しますし、バッチスクリプトからもパスワードの入力無しで接続出来る様になります。*4
WEBサーバに接続して、データ出力スクリプトを実行し、ダウンロードするバッチスクリプトはシェルスクリプトで書きます。*5
例*6:
#!/bin/sh#まずWEBサーバに接続してWEBサーバのデータ出力スクリプトを実行します。
#WEBサーバ側で実行するスクリプト(get_order_data.php)はフルパスで指定しておきます。
ssh -q -o BatchMode=yes hoge@example.com /home/batch/get_order_data.php
#次にWEBサーバ上で作成したデータをSFTPでダウンロードします。
#SFTPのコマンドは別のファイル(get_ecdata.command)にまとめて書いておきます。
sftp -b get_ecdata.command
あとはこれをローカルのサーバでcronとかで定期的に自動実行してやれば、安全に確実にWEBサーバとデータのやり取りが出来るようになります。
concrete5日本語公式サイトにユーザフォーラムが開設されました。
「卵が先か、鶏が先か」サイト構築の見積もりと予算の関係
最近、EC-CUBEのカスタマイズに限らず、コーポレートサイトから販売管理等の業務システム、SNSまで数多くの案件のお話を頂きます。
いや、本当にありがたい事です。可能な限り早急に対応する様、努めています。
お問い合わせ頂く際に必ず聞かれるのが
「いくら位かかりますか?」
という質問です。
そして僕も必ず
「ご予算はお幾らくらいですか?」
と伺ってます。
まさに「卵が先か、鶏が先か」の状態です。*1
よく、お客様で「予算はまだ決まっていない」と仰る方がいらっしゃいますが、実はそんな事ないんですよね。
だいたい「100万以内には抑えたいな〜」位の予算感は皆さんお持ちです。
では予算は実は決まっているのに、何故予算が決まってないと仰るのでしょうか。
主な原因は2つあります。
予算を言うとその金額に近い見積もりを出されると思っているケース
このケースはきっと、適正な見積もりを出さない会社が多かったという事ですね。
「予算は100万円」と言うと、100万の見積もりが出てきて、実はそんなにはかからない物だった、の様な経験があるのではないでしょうか?
つまり、「ボラれない」ために言わないケースです。
大体の相場は掴んでいるが、いくらで提示するかを見ているケース。
このケースはその会社の規模や、信用度を図っているのだと思います。
大手の企業ほど、社員が多い(=マネジメントコストが高い)など経費が高いので、見積もり金額も高くなりがちです。
また大手の場合、自社のリスクを回避する為にいろんな保険をかけています。ある程度予備の人員を確保していたり、何か問題が発生しても保障出来るだけの資金を準備しています。場合によっては「完成保証」なんて物もあります。
いわば「安心料」ですね。
複数の会社に見積もり依頼を出し、ある程度の相場感を掴んでいる場合は、その会社がどういう見積もりを出してくるかで信用度を図っているケースもあります。
企業規模等を考慮しても、あまりにも相場から離れた見積もりを出す会社は、たとえ見積もりが安くても、ちょっと信用しづらいですよね。
なぜ開発会社は予算を聞くのか?
この理由も2つあります。
ひとつは、悲しい事ですが「予算いっぱいまで取ってやろう」と考えている場合です。
どことは言えませんが、僕もそういう会社を知っています。
傾向としては、自社で実際の開発作業をほとんどしていないシステム営業会社さんに多い様です。
もうひとつは、どの程度のサービスを提供すれば良いかを図っている場合です。
例えば、「ショッピングモールを作りたい」という要件の場合、やり方は複数あります。
高機能で、運用効率も良く、可用性の高い細部まで手の入ったシステムは、当然費用も高くなります。
ものづくりを仕事としている身からすれば、こういう自分の技術を100%発揮出来る案件は幸せな案件です。
でも、実は顧客はそこまでの物は求めていないケースも多々あります。
見積もり金額は、このサービスレベルと「こういった事が出来るシステム」という様な機能レベルの二つの要件で決まります。
もし、顧客の第一要件が「可能な限り安く」と言う事であれば、真っ当な技術者なら嫌がる様な「裏ワザ」的なやり方もあります。
この場合、ビジネスマンとしてのやりがいが出てきますね。
真っ当な会社であれば、顧客のニーズを汲み取った予算いっぱいの提案をしてくれるハズです。
あまりに予算が多すぎる場合は、
「要件の分の見積もりは〇〇円です、でも、こういった追加機能の提案もあり、〇〇円です」
といった様な顧客のビジネスにプラスになる提案をするのではないでしょうか?
「予算」は重要な顧客のニーズのひとつと捉え、ニーズに合った提案をする会社は良い会社だと言えると思います。(普通だと思うんですが、予算をニーズではなく、「売上の上限」とだけ考えている人も少なくありません)
予算が聞けない場合、この辺のニーズをヒアリングしたり、経験からの感で補ったりするので、ちょっと見積の精度は落ちてしまいます、また、見積もりを出すまでの期間も長くなりがちです。
適正な見積もり金額を取るには
適正な見積もりを出すのにもスキルが必要ですが、適正な見積もりを取るのにもスキルがいります。
これは僕も外部に作業を依頼する時に必ずやっている事ですが、
「予算を取るための見積もり」以外で、概算でも予算が決まっているなら、予算を伝える事を強くオススメします。。
また、
- どういう目的のサイトなのか
- どういう機能が必須と考えているのか
- 出来れば欲しい機能
- 依頼したい作業範囲
- 希望納期
を出来るだけ具体的に伝えた方が良いです。
そして、面倒でも複数の会社に見積もり依頼を出しましょう。
もし、要件が固まりきっていない状況であればフェーズ分けする事を強くオススメします。
要件が固まりきっていない状況で見積もりを取っても、不明確な部分のバッファが乗った高めの見積もりしか出てきません。
要件定義、基本設計、開発、運用保守くらいでそれぞれ見積もりを取った方が良いでしょう。
*1:余談ですが、「卵が先か、鶏が先か」の議論に決着がついた?様です。http://slashdot.jp/article.pl?sid=06/05/28/0856249
EC-CUBEの登録実績が1,000件突破!実稼動店舗数は1万店以上
最近twitterでつぶやく事が多く、このブログの更新が疎かになってしまいました。
ちょっと気合を入れなおして、頑張って書くようにします。
先日、EC-CUBE開発元の株式会社ロックオン様よりリリースがありましたが、EC-CUBEの公式サイトに掲載されている構築事例が1,000件を突破したそうです!
申請されているだけでこの数字なので、実際にEC-CUBEで稼働しているネットショップは10,000店以上ある様です!
いやー、スゴイですね。
ネット上では、EC-CUBEに関する苦情、悪口?、を書いている人を多々見る事があります。
一部は納得する意見もあります。*1
でも、これだけ導入されているって事は、そういう人達もなんだかんだ言ってEC-CUBEを使っているんでしょうね。
個人的にはEC-CUBE大好きです。
使いやすいし、作りやすい。
でも、一人勝ちになるとガラパゴス化したり、進化のスピードが遅くなるなるので、他のECパッケージにも頑張って欲しいです。
最近注目しているのは、Magento*2、EC-Rider*3、Live Commerce!*4あたりでしょうか。
僕が初めてEC-CUBEに触れたときは、まだVer.1.2くらいだったと思います。
その当時はオープンソースのECパッケージと言えばZenCartが主流で、OsCommerceが廃れてきたくらいの時代でした。
海外製特有の管理画面が使いにくく、何か良いものが無いかと探していたところ、同僚の技術者よりEC-CUBEを教えてもらいました。
管理画面の使いやすさにはホント感動しました。*5
今、EC-CUBEは開発コミッターで活躍されている方達を中心に、コミュニティ版と正式版のマージ作業が進んでいます。
これからもっと使いやすく、セキュリティ的にも強固になっていくでしょう。
色々新しい機能も続々開発されているみたいです。
これからのEC-CUBEにも期待!ですね。
セカイカメラAPI OpenAIR API公開イベント、Bootstrap 1.0に行ってきました。
とても注目しているiPhoneアプリ、「セカイカメラ」のAR空間にアクセスするAPI(OpenAIR API)の公開イベントがあったので、行ってきました。
感想を言うと、エアタグ情報を使ったWebアプリを作ってみたいと思っていたので、ガッカリでした。
今回発表されたのは、セカイカメラのAR空間に独自のエアタグを配置出来るAPIです。
今のところ有償版のみ(価格はケースバイケース)で、今後個人向けの無償APIも公開するそうです。
とりあえず現時点では何もできそうにありません。
APIの使いかたとしては、サービス提供業者(パブリッシャー)が自社のエアタグ情報を配信するサーバをたて、セカイカメラのサーバ経由でユーザがアクセスするという物です。
イベントで聞いた事を備忘録代わりに以下にまとめます。
・APIのサイト
http://openair.sekaicamera.com/ja/
・APIのドキュメント
http://sekaicamera-api.pbworks.com/OpenAirForPublishers
・サービス提供業者(パブリッシャー)
- 楽天トラベル(旅行情報)日本
- みんなの経済ネットワーク(地域ニュース)日本
- マツモトキヨシ(ドラッグストア店舗情報)日本
- ぐるなび(レストラン情報)日本
- HOME’S(不動産情報)日本
- スマイティ(不動産情報)日本(価格コム)
- HotPepper(レストラン情報)日本
- カーセンサー(中古車店舗情報)日本
- SUUMO(不動産情報)日本
- じゃらん(旅行情報、2010年3月下旬開始予定)日本
- 東急ハンズ(商品情報、2010年4月開始予定)日本
セカイカメラEvernoteと連携
今回、一番「お!」と思ったのが、Evernoteとの連携です。
今年後半にサービスイン予定との事です。
具体的にはEvernoteのnoteをエアタグとしてセカイカメラのAR空間に配置出来るという物。
これなら色んなものをエアタグ化する事が出来てセカイが広がる感じがします。
昨日日本語版も公開されており、今後日本での普及がますます進みそうですね。
EvernoteにもAPIはあるので、うまく連携させれば、Evernote経由でエアタグ(Evernoteのnote限定でしょうが)情報を使ったWebアプリとかも作れそうです。
・Evernote APIドキュメント
http://www.evernote.com/about/developer/api/
・Evernote API規約
http://www.evernote.com/about/developer/api/api_license.php
開封率90%以上!のメールを有効活用していますか?
ネットショップを運営している方なら、どなたでもメルマガは発行した事があると思います。
セールの情報や、新着商品のお知らせなど、様々な情報をユーザに届けるために、メールの文言やキャッチコピーなど苦労されているかと思います。
EC-CUBEにもメルマガ発行機能は標準で付いています。また、大量にメールを配信するための外部メール配信サービスとの連携も可能です。
まず、メルマガで大切なものは「件名」ですね。常識ですね。
この件名でそのメールが開封されるかどうかが決まります。その先にもちゃんと呼んでもらうためのキャッチコピーや文章の作りなど、敵を攻略するためにはいくつもの難関があります。
しかし、こんな難関を突破しなくても、かなりの確率で開封され読んでもらえるメールを知っていますか?
それはショップから送信される各種確認メールです。
- 会員登録時の確認メール
- パスワード変更の確認メール
- 注文情報の確認メール
等です。これらのメールはかなりの確率で開封され、丹念に読まれます。
特に、注文情報の確認メールは、ちゃんと注文できたか、金額は間違っていないか等、確認のためにしっかり読まれる傾向にある様です。
これを放っておく手はありません。
EC-CUBEの注文確認メールにお知らせを入れる
これだけしっかり読まれるのですから、ここに告知を入れない手はありません。
新着商品やセール情報、ショップの近況など、お客様にショップのファンになってもらう為に、邪魔にならない程度にお知らせを書きましょう。
EC-CUBEでは、「基本情報管理」>「メール設定」から変更出来ます。
実はこの注文メールに告知を入れる手は、結構使われています。もはや常識に近いものになっています。
しかし、このオーダーメールは、テンプレート機能を使って、どんなユーザでも定形のメールを送っています。
そのため、ついついテンプレートを更新し忘れがちです。せっかく高確率で読んでもらえるメールなんですから、常に最新の情報を送りましょう。同じ情報を同じ人に何回も送るのは、あまり効率が良いとは言えません。
EC-CUBEでは、いくつかのメールテンプレートを自由に管理画面から登録出来る機能があります。
この機能をカスタマイズして、いくつか作ったテンプレートからランダムに選択したテンプレートで、注文確認メールを送る様にするカスタマイズはそこまで難しくありません。
また、レコメンドエンジンと組み合わせて、レコメンドメールを送る事も可能です。
(「お客様が購入された商品を買った人はこんな商品も買っていますよ」とメールで知らせるのです。)
注文されたお客様であれば、地域や年代、性別等がわかっている事が多いと思います。そういったセグメント分けされた情報を元にレコメンドすれば、かなり効率の良いレコメンドが出来るハズです。
(「レコメンドエンジン?高いよ〜」という方には、ライブドアさんが開発したオープンソースのレコメンドエンジンもあります。 > Cicindela)
このレコメンドと、いくつかのパターン分けされたテンプレートを使えば、まるで人間が送っているかの様な楽しいメールを送れるのではないでしょうか?
(商品単価が高く、注文自体が少ないネットショップであれば、自動送信ではなく、一通一通人の手で送っても良いかもしれません)
少なくとも僕は「来月お誕生日ですね。」とか言ってもらえたら、たとえメールでも少し楽しくなっちゃいます。
EC-CUBEをカスタマイズしてサイトマップページを追加。
EC-CUBEの開発コミュニティにて、「サイトマップページの作成」というスレが上がっていました。
検索エンジン用のサイトマップ(XML)ではなく、サイト閲覧者用のサイトマップページ(HTML)を作りたいとの事でした。
そう言えばずっとEC-CUBEには無かったな〜、と思い簡単そうなので、EC-CUBE標準のxmlのサイトマップ生成スクリプトとカテゴリブロックのスクリプトをカスタマイズして作ってみました。
EC-CUBEの管理画面から追加した静的なページは自動的に追加されます。
現状ではまだ会員登録ページや、キャンペーンページ等は対応していないので、その辺のページに対応したら、XROSS CUBEのサイトで公開しようかと思ってます。
EC-CUBEに集客サービスが登場!EC-CUBEでのSEO対策
昨日、1月5日にEC-CUBE公式サイトにて、「EC-CUBE集客サービス」がリリースされました。
主にSEOを主とした集客サービスで、ある程度のネットショップであればどこでもやっている事かと思いますが、初心者の方には良いサービスだと思います。
私たちは、ネットショップの運営者はSEOの事を学ぶより、その時間を使って販売戦略を考えた方が費用対効果が高いと考えています。
その上で余裕があれば、社内にネットマーケティングの専任者を置き、SEOだけでなくネットマーケティング全体を自社で行うのが良いでしょう。
「餅は餅屋」です。余裕が無ければこういったサービスに任せてしまいましょう。
こういったSEOに関連するサービスの良い点として、「自分たちで試行錯誤しなくて良い」というのがあります。業者が長年試行錯誤してきた結果の良い施策だけを利用出来るという点です。
それだけに業者の選択は慎重に行った方が良いでしょう。
ただ、個人レベルでショッピングサイトを始めて、こういったサービスを利用する余裕も無いという方の為に、基本的な事をご紹介いたします。
EC-CUBEでの内部施策
SEOとは、「Search Engine Optimization(サーチエンジンオプティマイゼーション)」の名の通り、「検索エンジンへの最適化」です。
これはサイトのページを検索エンジン(コンピューター)が解りやすい構造にするという物です。
一般的な文書でもそうですが、段落も何も無く文章が脈絡なく羅列されている文書では、何を伝えたいのかわかりません。タイトル、見出し、段落等文書としての構造を考えてページを作りましょう。
EC-CUBの商品詳細ページでのSEO
具体的に言うと、EC-CUBEの標準のテンプレートの商品詳細ページの場合、metaタグのページタイトルが
- サイト名+商品名
となり、ページ内では
- サイト名+商品名(ヘッダーのロゴ部分、H1見出し)
となっています。
ここで各見出しにターゲットとなるキーワードを入れる事、そのキーワードを本文(メインコメント、サブコメント)に適度に入れる事が重要です。
つまり商品登録で登録する「商品名」が重要になるという事ですね。*1
また、どちらかと言えばページの上部にある要素の方が重要視される傾向があるので、メインコメントも重要です。
検索エンジンは画像の中の文字までは解読出来ないので、メインコメント等に画像を利用する場合は必ずalt属性にその画像が表す事を書いておきましょう。
ここでのページ(商品情報)作りで重要なのが、「SEOにとらわれすぎ無い」という事です。
SEOを意識し過ぎて、人間が見た場合に不自然な文章になったり、冗長にならない様にしないといけません。最終的にページを見て商品を購入して頂くのは検索エンジンではなくお客様(人間)だと言う事を忘れない様にしてください。
あまりにSEOばかりを意識したページを作ると、逆に検索エンジンよりペナルティを課せられます。検索結果に表示されなくなってしまいます。
情報量も大切です。ページが長すぎても短すぎてもいけません。SEO的にもですが、人間から見た場合に短すぎても長すぎてもよく解りませんよね?セールス文句だけでなく、しっかり商品の情報も説明してください。
これだけでもかなりの作業量になると思います。
実際、当方で商品情報の登録を請け負う場合でも、かなり時間を取られるので他社に比べて費用は高めです。上記のポイントをお客様にお伝えして、お客様に作成して頂く事が多いですね。
EC-CUBEの商品カテゴリ
上記の商品詳細ページでも重要な位置にいる商品カテゴリですが、EC-CUBEでの商品カテゴリの階層構造も重要です。
あまりに階層の深い構造では、深い部分のページを検索エンジンが重要なページでは無いと判断する場合があるからです。
とは言え、人間から見て解りやすい構造にしておく必要もあります。
目安としては、大カテゴリ-中カテゴリ-小カテゴリ程度にしておいた方が良いでしょう。また、可能であればの当方のEC-CUBEカスタマイズデモサイトの様にサイドバーのカテゴリ一覧を展開しておいた方が良いです。*2
商品カテゴリ名はEC-CUBEの商品詳細ページの見出しにも使われる重要なワードです。可能であれば、ターゲットキーワードとなるワードを選択した方が良いでしょう。
検索エンジン、SEOは日々変化しています。
ここまで書いてきて何ですが、実はSEOという言葉はあまり好きではありません。
検索エンジンは日々進化しています。現在は有効な施策でも検索エンジンのアップデートにより無効になったり、ペナルティを課せられたりします。(metaタグのキーワード何かは現在ではほとんど評価されません)
こういった検索エンジンのアップデートやペナルティの被害から回避する為に重要なのが、「検索エンジンが何を目指しているか」を知る事です。
検索エンジンはユーザ(人間)に対して最適な検索結果を提供する事を目指しています。つまり人間から見てどのページが最適か?を日々追求している訳です。
なので、WEBページを作成する際はSEOのテクニックよりも「人間から見て理解しやすいページ構造か?」を考えて作成すれば、自ずと最適化されたページが作成されます。
仮に今現在で検索エンジンの評価が低くてもその内検索エンジンが追いついて来ます。
- 検索エンジンのアップデート情報
くれぐれもフッターに誰もクリックしない様な外部へのリンクを大量に羅列しないようにしてください。
EC-CUBEの脆弱性をチェック!
あけましておめでとうございます。
本年もクロスキューブをよろしくお願いいたします。
さて、昨年末にEC-CUBE2.4.1に考えられ無い様な脆弱性が発見され、即修正されていました。
この脆弱性が公表される前に、私たちの様なEC-CUBEインテグレートパートナーには事前に連絡が回っていた為、被害は出ていなかった様ですが、内容を聞いて驚きました。
電話やFAXでの注文を管理者が登録出来る様に、新しく管理画面より受注情報を入力出来る機能が追加されていたのですが、この受注情報入力時に「どの顧客からの注文か?」を顧客検索フォームから検索して入力します。
この顧客検索フォームは子ウィンドウで表示されるのですが、何とログインせずとも子ウィンドウのURLを直接叩けば顧客情報を検索、表示出来てしまっていたのです。
つまり、「顧客情報ダダ漏れ状態」だった訳です。
幸い、当方では該当するバージョンのEC-CUBEはまだお客様のサイトには利用しておらず、特に問題も無かったのですが、この脆弱性を知った時には驚きました。
通常、当方でEC-CUBEを使ってサイトを構築する際は、一通りチェックを行い、バグを発見した場合は修正して納品しています。
EC-CUBEはオープンソースであり、GPLで利用するのであれば全て自己責任となるので、バグを修正するのも利用者の自由(責任)です。
また、管理画面等の重要なページは、アクセス出来るIPの制限や、ポートの変更もしておいた方が良いでしょう。
ソフトウェアにバグは付き物なので、利用する際は必ず自分でチェックしてから利用しましょう。*1今回の様なバグであれば、一通りブラウザからチェックすれば簡単に発見出来るハズです。
ただ、クロスサイトスクリプティングやSQLインジェクション等の一般的なWebアプリの脆弱性を、手作業でひとつひとつチェックするのは大変です。
そこで今回は、簡単に使える簡易チェックツールをご紹介いたします。
WinでもMacでも使えるWebアプリの脆弱性チェックツール「Paros」
脆弱性チェックツールにはサーバーにインストールする物や、クライアントPC上でプロキシとして動作する物など、いくつかのタイプがありますが、今回はクライアントPCにインストールするだけで簡単に使えるプロキシタイプの「Paros」というソフトのご紹介です。
[公式サイト]http://www.parosproxy.org/
インストールや利用方法は検索すればすぐ他のサイトに詳しい説明が掲載されているので、ここでは割愛します。
Parosをインストール、起動し、ブラウザのプロキシ設定をParosに設定します。*2
この状態でEC-CUBEのサイトにアクセスすればParosでEC-CUBEのサイトのURLがセットされるので、Spiderでクロールし、scanすれば簡単なチェックが自動で実行されます。
非常に機能が多く、使いこなすにはちょっと時間がかかりますが、これだけでも意味はあります。(標準で、勝手にフォームを発見し、XSSやSQLインジェクションはチェックしてくれます。)
EC-CUBEに限った事ではありませんが、オープンソースのWebアプリを使う前には一度チェックすることをオススメします。