なぜWordPressではなくconcrete5なのか その1
どうも、お久しぶりです。
お仕事に追われている間に、あれよあれよと時間が過ぎ、あっと言う間に前回の更新から4ヶ月近く経ってしまいました。
実は先日、僕が参加しているconcrete5というCMSの日本語コミュニティの主要メンバーで、コンクリート ファイブ ジャパン株式会社という新会社を設立しました。*1
僕も一応CTOという肩書きを頂きました。
そのせいか、最近ではEC-CUBEのお仕事よりもconcrete5のお仕事の方がずっと増えてきています。
今日は、なぜ今最も熱く、ノリにノっているWordPressではなくconcrete5という少しマイナーなCMSなのか?という事を書きたいと思います。
(書いてたら随分と長くなってしまったので、何回かに分ける事にしました。)
EC-CUBE3対応!デザインカスタマイズガイドブック
新しくなったEC-CUBE3に対応したデザインカスタマイズブック。2017年1月現在 EC-CUBE3のデザインカスタマイズについて解説されている書籍はこれだけです。とりあえず買いましょう!
concrete5でブログ?
EC-CUBEのカスタマイズを主な事業としてきたクロスキューブですが、ECサイト以外のWebサイトも数多く制作してきました。ただ、クロスキューブでは単純なHTMLのサイトを作った事は無く、私達に求められるのは何かしら機能的なWebサイトばかりで、WordPressやJoomla!を使ったりもしてきましたが、どうもしっくりきませんでした。
そんな時に出会ったのがconcrete5という非常に直感的な汎用CMSでした。
WordPressは非常に優秀な素晴らしいプロダクトです。
長年、多くの有志によって開発が続けられ、熟成した非常に考えられた素晴らしいプロダクトになっています。
ただ、僕がWordPressを使った時に思ったのは
「これはCMSじゃないな、ブログツールだ」
という感想です。
CMSとは「コンテンツ マネジメント システム」略です。解りやすく言うと「コンテンツ管理システム」です。
ここで言うコンテンツには様々な種類がありますが、WordPressはその歴史から「記事」というものをベースに構成されているので、記事以外のコンテンツの扱いは少々苦手です。
ただ、WordPressの素晴らしい点にプラグインの豊富さがあります。
こういったプラグインを活用し、ページやカスタムフィールドを活用する事によって汎用CMS的な使い方ができ、多種多様なWebサイトを構築する事ができます。
しかし、それはconcrete5でブログを作る様な物です。
もっと解りやすく言うとフライパンでケーキを焼く様な物です。
はたしてそれは最適解なのでしょうか?
これは何もWordPressに限った事ではありません。
EC-CUBEでもありますし、もっ身近なところでは何でもエクセルで作ってしまう「エクセル職人」という人々がいます。
多分、皆さんの会社にも1人2人はいると思うのですが、どんな物でもエクセルで作ってしまう人々です。
こういった場合、多くのケースで「一番慣れてるから」という理由でツールを決めてしまいます。
自分だけが使う物であればそれで問題ありません。きっと最も効率が良いと思います。
ただ、僕らの様なお客様の為にWebサイトを作る人間はそうはいきません。
僕らが求めないといけないのは、「クライアントに提供する価値の最大化」です。
「一番得意だから」「慣れているから」「いつも使っているから」「他所もそうだから」という理由で採用するツールを決めてしまうのは、ある意味思考停止と言えます。
クライアントにとって何が最適なのか?という思考をすっ飛ばして、「○○で作るためにはどうすれば良いか?」という考えに移ってしまっています。
- 「一番得意」
- 作業効率が良く学習コストがかからないので短期間で安価に提供できる
- 「他所もそうだから」
- ベンダーが数多く存在し、開発後のクライアントの選択肢が広い
など、何となく考えている理由にもちゃんとした理由はあります。
ただ、制作会社はもっと考える必要があると思っています。
- リリース後の管理運用は?
- ユーザの使いやすさは?
- 後々機能を追加したくなったら?
等々です。
だから僕らはconcrete5でブログは作りません。
ブログを作る時はWordPressを使い、国内向けのECサイトを作る時はEC-CUBEを使います。*2
次回は「concrete5は素人向けのCMS」です。
メンバー募集中です!
4年が経ちました
先月、おかげ様で法人として登記してから無事最初の決算を迎える事ができました。
最初、会社を辞めフリーランスとして活動し始めた時には「いつまで続けられるかな?」と思っていたのですが、独立してかれこれ4年になろうとしています。
今、こうして振り返ると、何とお客様に恵まれていた事かと驚きます。
正直、少人数でやっていると何かトラブルが発生した時にリカバリに時間がかかり、お客様にご迷惑をかけてしまう事もありました。
そんな時でも、一方的にこちらを責めるのでは無く、プロジェクトを成功させるために進んで協力して頂けるお客様ばかりでした。
本当にありがとうございます。この場をかりて御礼申し上げます。
人手が足りません。
とは言え、いつまでもお客様の好意に甘えている訳にもいきませんし、ご迷惑をかけるなんて二度とご免です。
そこで体制を強化すべく、今まで以上に広くメンバーを募集する事にしました。
募集ポジションは、
- アルバイト(時給)
- 役員(年棒制)
です。
「働いてもいいよ」と言う方は、 info@xross-cube.com までぜひご連絡願います。
求める人物像
- 国籍年齢経験学歴性別職種一切不問
- 「独立しようかな」って思ってる方、又は現在フリーランスで活動されている方はちょうど良いと思います。
- 「仕事をもらう」のではなく、「仕事を作れる」人
- 僕らが「一緒に仕事したい」と思える人
弊社で働く事について、メリットとデメリットをご案内しておきます。
メリット
- 自由です。
- 好きな事をやってください。
- 勤務時間、業務内容は法に触れない範囲で自由です
- 仲間がサポートします
- あなたがやりたい仕事に足りない部分を補います。マーケティングや営業、技術的なサポートなど、可能な限り協力します。
- 報酬は自分で決める
- 稼げる額だけ好きに決めてください。
- 出社しなくていい
- 弊社は基本在宅勤務です。出社する所がありません。
- コワーキングスペース、喫茶店、友達の家、プールサイド、好きな場所で仕事してください。
- 家族との時間を多くとれます
デメリット
- 責任があります
- 自由の代わりに重い責任があります。あなたの事業は全てあなたの肩にかかっています。
- あなたが稼がないと、あなたの報酬が支払えません。
- 資金力は皆無です
- 吹けば飛ぶ様な小さな会社です。
- まだまだ安定していません
- 安定を第一に求める方には不向きです
- オフィスはありません
- かっこいいオフィスで働きたい方には不向きです。
ここで、弊社の企業風土というか、どんな会社なのかをご案内します。
一般的な企業とは大きく違います。
独立した理由
僕は金銭的な理由から17才で社会に出たので、様々な企業でいろんな仕事をしました。
イケイケのバイト仲間で始めたベンチャーから、高学歴で頭の良い人ばかりのスタートアップ、1部上場企業など、大小様々です。
それぞれの会社で素晴らしい所があり、また欠点もありました。
ただ、共通して存在する問題は「雇う側」と「雇われる側」に埋められない非常に大きな溝がある事です。
どんなに社長と従業員の距離が近い会社でも、そこの溝はとても深く大きいものでした。
酷い場合だと、経営陣は従業員の事を使い捨ての駒としか考えておらず、従業員も自分の給料の事しか考えていませんでした。
その結果、
- 無駄な残業
- 今の自分の業務への固執
- 不信
- 不当解雇
などなど様々な問題がありました。
でも溝があって当然なんです。
なぜなら経営者と従業員には法で定められた責任や立場が大きく違うからです。
この事が解ったとき、少なくとも国内には自分が求める企業が無い事を知り、独立しました。
法人化した理由
お客様に「個人事業主だと稟議通しにくいよー」と言われた事も大きいですが(笑)、一番大きな理由は
1人の力は非常に小さいという事です。
人間の場合、1=1ですが、1+1=2じゃないって事です。
信頼出来る仲間と助け合って目標に向かって進んで行く時の破壊力は以前経験して知っていました。
「雇う側」と「雇われる側」に大きく溝が出来てしまうなら、「雇う側」しかいない会社を作ればいいと思ったんです。
僕らが目指すところ
僕らの求めるものは、非常に小さく一般的で「充実した人生」を求めています。
金銭的に困窮する事無く生活し、幸せな家庭を持って、自分がやりがいを感じられる仕事をして笑って死にたいです。
なので会社の目指すところは会社で働く人が幸せになる事です。
これは良く誤解されるのですが、自分さえ幸せならいいという物ではありません。
「自分さえ儲かっていればいい」という状況で本当に幸せでしょうか?
僕はそんな社会は嫌です。皆で笑い合える様な社会が良いです。
「自分さえ儲ればいい」と思っている人となんか働きたく無いです。
でも僕にはやりたい事がたくさんありお金もたくさん必要です。
お金大好きです(笑)
小さい会社のまま終わる気もありません。
なので弊社のスローガンは、「目指せ堅実に一攫千金!」です。
書き始めたら長文になってしまいましたが、興味を持って頂けたらぜひご連絡願います。
あなたがどうしたら充実した人生を送れるか聞かせてください。
FuelPHPとCodeIgniterでCMS作ってパフォーマンスを比べてみた
FuelPHP Advent Calendar 2011 ということで、PHP フレームワーク FuelPHP に関するブログをクリスマスまでお届けしています。前日の@9ensanさんの記事はFuelPHPで作るログイン管理
過去記事一覧は、FuelPHP Advent Calendar 2011
CodeIgniterという軽量で高速な非常に気に入っているPHPのフレームワークがあるのですが、最近ライセンス問題が怪しいのと、バージョン2系になってから開発体制も怪しくなっていたので似た様なフレームワークを探していました。
すると、concrete5でもお世話になっている@kenji_sさんがFuelPHPをベタ褒めしていたので試してみる事にしました。
なるべく実際の環境に近い様にと超簡単なCMSを作って比べてみます。
このWebアプリがやっている事は、
- ページのパスからDB叩いてページID取得
- ページIDからそのページのコンテンツをDBから取得
- テンプレートファイルで指定してある描画エリアをキーにしてコンテンツをテンプレートファイル内に描画
と言う様なconcrete5っぽい動きをしています。
時間の都合でトップページ分のデータしか登録していませんし、そもそもCMSなのにコンテンツの登録機能とか作っていません。
まあ、でもベンチには充分だと思います。
可能な限り似た様な処理になる様に同じ様にコントローラとモデル、ビューファイルを作って同じ様に処理しています。
DBも同じテーブルを使っており、両方ともmysqli関数で接続しています。
サーバはさくらのクラウドです。
使ったバージョンはCodeIgniterはVer.2.1.0、FuelPHPはVer.1.1-RC1です。
ちょっとFuelPHPのDBまわりの設定で手間取りましたし、そもそもFuelPHPの正しいお作法に則って書かれているか怪しいですが、とりあえず出来ました。
で、例のごとくapacheベンチをかけて見ます。
ab -n200 -c200 http://cloud.xross-cube.net/CI/ ab -n200 -c200 http://cloud.xross-cube.net/Fuel/
ベンチ結果
で、結果は以下の通りです。
Requests per second | CodeIgniter | FuelPHP |
---|---|---|
1回目 | 42.74 | 39.38 |
2回目 | 30.51 | 46.43 |
3回目 | 17.15 | 17.46 |
4回目 | 45.06 | 46.77 |
5回目 | 44.87 | 21.95 |
平均 | 36.06 | 34.39 |
結論から言うとパフォーマンスは変わらなそうな感じです。
今回の環境はクラウド環境なのでどうもムラがある様です。
ちなみに、APCを有効にしてベンチかけたら下記の様な感じでした。*1
Requests per second | CodeIgniter | FuelPHP |
---|---|---|
1回目 | 126.33 | 72.11 |
2回目 | 119.95 | 26.98 |
3回目 | 37.30 | 17.46 |
4回目 | 25.92 | 93.03 |
5回目 | 119.19 | 49.71 |
平均 | 85.74 | 51.86 |
ちょっとCodeIgniterの方が速いですね。
結論
FuelPHPは書き方や使い方もCodeIgniter近いですし、なによりライセンスがMITでパッケージ機能があるのでかなり良い感じです。
今後も引き続き使ってみたいなーと思いました。
次は@ounziwさんの「FuelPHP の view に PHPTAL デザインテンプレートを使う」です。
*1:アプリ側でキャッシュ指定とかはしていません。
超使える!EC-CUBEのAPI機能のモジュールが無料で公開されてました!
久しぶりのブログです。
気付いたら全開前回の記事から数ヶ月経ってしまっていました。
先日EC-CUBEのクラウドサーバがファーストサーバさんからリリースされ、色々な特典が付いている事もあって盛り上がっている様です。
その中でもfacebook連携機能と言うのが特に良い感じです。
どんな機能なのかな?と内容を見てみると、EC-CUBEにAPIモジュールをインストールし、facebookのアプリからそのAPIをたたくという物でした。
無料で公開中!
で、このAPIモジュール、株式会社ドリームブリッジさんという会社が開発されたのですが無料で公開されているんです!
EC-CUBE商品検索APIモジュール
しかも2.4系用と2.11系用両方あります!
いやー、素晴らしすぎます。
しかもxmlやjsonやphpのシリアライズ値とか色んな出力形式に対応しています。
元々、僕もEC-CUBEにはAPIが必要だと思って色々実装の仕様を検討していました。色々参考になる仕様があって、どの仕様に合わせようかと思っていて手が止まっていたんですが、ついに出ました!
EC-CUBE 2.11系で変わった事 -商品一覧の取得方法-
EC-CUBEも2.11.1がリリースされましたね。
遅ればせながら2.4系から2.11系*1で変わったところをご紹介していきたいと思います。
今回は遅いクソだと言われ続けていた商品一覧の表示処理の部分についてです。
2.4系からEC-CUBEをいじってる方はまずココで「アレ?」ってなるのではないでしょうか?
1回の表示でSQLを2回発行する様になった
EC-CUBEの商品情報は主に、メインの商品情報と、「規格」と呼ばれるサイズや色違いの商品情報を取得している商品から構成されています。
そこにカテゴリ情報なんかが結合されて商品一覧を表示しているのですが、MySQLではサブクエリからのSELECTでインデックスが利用されないなど、複数のテーブルを複雑に結合している為にパフォーマンスはかなり犠牲にされていました。
特にMySQLで動かした場合は規格を増やすと最悪サイトが止まるレベルの重さでした。
コアの開発者の大河内さんはこの部分にも非常に心を痛めており、「次のバージョンでは絶対に改善させる!」と考えていた様です。
2.11.0で新しく追加されたSC_Product
EC-CUBEの2.11では2.4系には無かったSC_Productというクラスが新たに追加されました。
MVCで言うと「Productモデル」の様な物で、商品の表示関連の処理はここに書かれています。
2.11系ではデータベースでviewを使わない様に変更されています。
なので商品一覧を取得する際は、まず検索条件とソート順で表示する分だけの商品IDを取得し、その後でその商品IDから一覧で表示する情報を取得する様になっています。*2
僕も最初見た時は
「何で2回に分けてるんだ?」
と思いましたが、理由を聞いたところこの方法がPostgreSQL、MySQL共に一番早かった様です。
なので、もし商品一覧で表示する項目や並び順をカスタマイズされたいのであれば、一度このクラスの動きを追っておく事をオススメします。
EC-CUBE2.4.4以前のバージョンに存在するクロスサイトリクエストフォージェリの脆弱性への対応
2011年5月10日、JVNからEC-CUBEの2.4.4以前のバージョンに存在するCSRFの脆弱性に関する情報が公開されました
JVN#37878530 EC-CUBE におけるクロスサイトリクエストフォージェリの脆弱性
*1
CSRF*2とは、簡単に言うと、どんなサイトやHTMLメールからでも、ユーザの意図しない情報をターゲットのサイトに送信させて、望まない操作をさせる事が出来るという物です。*3
特にサイト管理者の方はEC-CUBEの管理画面にログインしたままの状態で、よく解らないリンクやボタンをクリックしない様にしましょう。*4
2.11.0以降のバージョンには存在しませんので、2.11.0以降を利用されている方は大丈夫です。*5
2.4系から2.11系へのデータ移行ツールもリリースされていますが、2.11系は2.4系とは大きく変わり、簡単にはバージョンアップ出来ないのも事実です。
特に多数のカスタマイズを加えていると、より作業量は増えてしまいます。
とりあえず2.4系をそのまま使って、この脆弱性に対応する為のやり方を今回はご紹介します。
*1:クリックしなくても開いただけで攻撃も可能です
*3:具体的にどんな事が出来るかは、ここで書く事は控えさせて頂きます。
*4:管理画面にログインしている時は、ブラウザで他のウィンドウやタブを開かない様にして、コマメにログアウトすれば平気です。
*5:2.11の開発中にこの辺の話や作業をしました。
concrete5 の簡単なテーマの作り方
僕が日本語化に参加している、直感的CMS、concrete5の簡単なテーマの作り方をFacebookに書いたので、こっちにも書いておきます。
- 適当にHTML+CSSでページを作る。
- HTMLファイルのファイル名をdefault.phpに変える。
- DTD宣言の前に魔法の呪文1を追記する。
<?php defined('C5_EXECUTE') or die(_("Access Denied.")); ?>
- の最後に魔法の呪文2を追記する。
<?php Loader::element('header_required'); ?>
- ブロックを置きたいところに魔法の呪文3を追記する。
<?php $a = new Area('[area name]');//好きなエリア名を入れる、大体Side barとMain $a->display($c); ?>
- 直前に魔法の呪文4を追記する。
<?php Loader::element('footer_required'); ?>
- CSSの名前をmain.cssに変える
- typography.cssというファイルを作る
超省略して書くと、こんな感じです。
画像とかを使いたい場合は、
<?php echo $this->getThemePath() ?>
で、インストールしたテーマのパスが取得出来るので、
<img src="<?php echo $this->getThemePath() ?>/images/sample.jpg" alt="サンプル" />
とか書けば表示されます。
CSSに書く時は、
div.sample{background:url(images/sample.jpg);}
で、[インストールしたテーマのディレクトリ]/images/sample.jpgを参照してくれます。
尚、サンプルのテーマファイルは下記からダウンロード出来ます。
http://www.xross-cube.com/index.php/tools/required/files/download?fID=295
イイ感じのテーマが出来たら、是非公式サイトのフォーラムで教えてください。
EC-CUBEのゴールドパートナーになりました!
4月1日にEC-CUBEの開発元の株式会社ロックオンより、今回更新されたEC-CUBE公式インテグレートパートナーランクが発表され、私たちXROSS CUBEは、フリーランスとしては唯一、ゴールドランクのパートナーに認定されました。
http://www.ec-cube.net/integrate/partner/partner.php?partner_id=305
このEC-CUEBのインテグレートパートナーは上から、プラチナ、ゴールド、シルバー、ブロンズ、ノーマル、プレ、と5段階あり、ゴールドランクは上位7%になります。
ランクは、構築実績、コミュニティでの活動、EC-CUBE本体のコードへのコミット等で決定されます。
以前は、各ランクの認定基準があいまいだったのですが、今回から各活動を数値化し、明確な基準に基づいたランク制度になりました。このため、今までよりもより正確にその制作パートナーの力量等が解る様になっています。(詳細はこちら)
こういった明確な基準になってランクが上がった事はとても嬉しい事なのですが、その反面、気を抜いているとすぐランクが下がってしまいます。
クロスキューブはゴールドランクになれたのですが、ギリギリなのでこれからも頑張っていきたいと思います。
東北地方太平洋沖地震用のEC-CUBEのポイント寄付ブロックを作成しました。
2011年3月11日、東北地方でM8.9、最大震度7の大地震が発生しました。
私たちは何か出来る事が無いかを考え、EC-CUBEのコアコミッターの大河内氏と共に、EC-CUBEで構築されたサイトで、会員が保有するポイントを寄付出来るブロックを作成しました。
EC-CUBEでショップを運営されているショップオーナーの皆様、これ使って是非ご協力をお願いします。
ショップオーナー様で、会員のポイント分の金額を寄付しても良いという方は無償にてご利用頂けます。
2011-3-12 18:37 追記:
EC-CUBEコアコミッターの大河内様が管理機能を追加してくれました。ご利用される場合は、上記の「寄付ポイント管理アドオン」をダウンロードしてください。
EC-CUBE クラウドサーバを試してみた。速い!
前回のブログから気づけば1ヶ月以上も経ってしまいました。
なかなか継続して書くのは難しいですね...
最近の案件で、サーバ選定からするケースがあったので、ちょうどリリースされたばかりのEC-CUBEクラウドサーバを試してみました。
EC-CUBE公式のクラウド環境という事で、その実力が気になっていました。特に、EC-CUBEの弱点とされるパフォーマンスが気になって夜も眠れませんでした。
EC-CUBEクラウドサーバはファーストサーバさんが実際の環境を構築して運営されています。
サーバのOSはLinuxだそうで、聞いた話ではカーネルレベルでEC-CUEB用にカスタマイズしたそうです。いったいどんな事をしたんでしょうね。
ロックオンさんからファーストサーバさんのご担当者*1をご紹介頂き、検証用の環境を準備して頂けないか聞いてみました。
「ちょっとまだリリース前なので... 相談してみます」
との事だったのですが、もうその日の内に検証用の環境を準備して頂きました!
正直、いままでファーストサーバさんのサーバ(共有)は制約が多く、使いにくくてあまり好きではありませんでした。
しかしこの素早いご対応!ちょっと好きになりました。
準備して頂いたのは、一番安いプランの「ファースト」(月額1,785円)です。
管理画面は普通のファーストサーバ
サーバの管理画面は他のプランと同じ見慣れた管理画面です。
なので、「サーバの事はよくわからない」という方でも簡単に設定出来ます。
EC-CUBEがインストールされた状態で環境が準備されるので、インストールでつまづく事もありません。
早速検証。1,000点商品を登録してみました。
例の商品情報生成スクリプトでサクッと生成しました。
- 商品点数1,000点
- カテゴリ
- 大カテゴリ10個
- 中カテゴリ4個
- 小カテゴリ3個
- 規格 1も2も3個づつ
- 規格分類は100個
Apache benchをかけてみます。
とりあえず軽いのから
表示画面 | 全商品一覧 |
コネクト数 | 10 |
リクエスト数 | 50 |
*1:舟木様、非常に素早いご対応ありがとうございました。