日付変わっちゃいました・・・
2015年ECCUBE アドベントカレンダー 23日目の記事です。写真はECCUBE開発合宿の深夜の1コマ。
当初、作ったプラグインの案内でもしようかと思ったのですが、バグだらけで改善作業中なので、自分がECcubeを理解していく中で(まだまだわかってないですが)、自分なりのベストプラクティスを、これからECCUBEの開発を始めるヒトに向けて共有したいと思います。
ちなみに、バグだらけのプラグインはgithubベースでメンテするというか、メンテフリーで行く予定なので、自由にパクって下さい。
「ECCUBE3-InfiniteScroll 」「MECCUBE3-Masonry 」「ECCUBE3-Loveit 」(3つありますが、内容似てまして、松竹梅的な。)
思ってたのとなんか違う。
まず、私個人としては、Laravelは半年弱ほど触った程度。
LaravelはSymfonyベース、ECCUBEはSilexベース、そのSilexはSymfonyベース、だからきっとなんとなくわかるはずと思ってたんですが、いざ蓋を開けてみると、「これ、思ってたんと違う。。」というのが正直な感想。
Symfonyを理解していないからか?と、そう考え、ECCUBEの開発合宿へ参加したついでに、たまたまその翌日、東京はメルカリさんで開かれたsymfony meetup に寄ってきました。
つい先日、待望のsymfony本「基本からしっかり学ぶ Symfony2入門 」の出版されたけども、その著者が登壇されるということだったので、行かなきゃとい思いまして、毎度のことながらスケジュールつめこんで。
Symfonyを学ぶことは近道。
ECCUBEを始め、最近は著名なCMSやフレームワークがこぞってSymfonyを採用しはじめていますが、なぜSymfonyが選ばれるか。なぜSymfonyが王道なのか。そういった内容を話されていました。(そのスライドはこちら⇒ Symfonyを選ぶ理由とその他の話 )
CakePHPでも、Laravelでも、それぞれのフレームワークでCakePHP Way、Laravel Wayみたいな◯◯Wayというベストプラクティスや強い主張があったりするけど、Symfonyというのは、主張してこないフレームワーク であると。自分流にアレンジしやすい とのこと。
主張してこないとはどういうことかというと、Symfonyのコアが担うのは、
「リクエストを受け取り⇒レスポンスを返す」
というところ。つまりは、Webアプリケーションの根本的な所を学ぶことができると。
王道を知ることは、今後他のフレームワークを理解するうえでも、それぞれの◯◯ Wayの解釈ができるようになりますよ 、とそういった内容でした。
(※ちなみに、Symfonyの日本語ドキュメントのサイトは遅れているようで、翻訳ついていくのは諦め気味とおっしゃっておられました。)
Symfonyの基礎をわかるとどうなる?
symfony本「基本からしっかり学ぶ Symfony2入門 」全300Pぐらいで、早速ですが簡単な所は読みました。初期の構想から発売まで二年半ぐらいとおっしゃっておられたような。書籍の構成としては、
フレームワークとはなんぞや
Symfonyとはなんぞや。
デバッグバーの使い方
Routing
Controller
View (Twig)
Entity (Doctrine)
Repository
Form
Validation
メール(Swiftmail)
機能の拡張
フィクスチャ
Console拡張
API実装
サービスプロバイダ
テスト
が順に解りやすく落とし込まれてあり、読み進め、実際に手を動かしながら、一つのWEBアプリケーションができます。Symfonyの基礎が中盤ぐらいまででわかります。後半で、サービスプロバイダの解説がされてありますが、ここを理解することがSymfonyおじさんになる手段であり、みながSymfonyを採用する肝のようです。ここまで読みきれてません、まぁ正直難しいです。
ECCUBEおじさんになるためには
先に述べたとおり、基本的な所を読了するだけで、ECCUBEのディレクトリ構造がざっくり理解できる ようになります。
するとまぁ、ECCUBEとSymfonyとの違いがなんとなくわかりはじめます。
Symfonyは個性を主張してこないと述べましたが、Symfonyのチュートリアル的なものをしていると、アノテーションとか、手軽だけど、なんか魔法ばっかり。思っきり個性を主張してきます。。。(目をつぶります)
このせいで、Doctrineでもフォームでも何でも、ECCubeが吐くエラーメッセージの解決策をググりますと、概ね、Stack Overflow様がSymfonyの解決するための黒魔法 を教えてきます。ECCUBEではこの魔法が全く役に立たずハマります。
そこで、Symfony本に目を通しておきますと、ホグワーツ魔法学校に通ったようなものですから、この先生の言ってることは、こう読み替えればよいのかとか、Silexの領域だなとか、ほんの少し見えてくるようになります。
で、最後にSilexやDoctrine、Symfonyのドキュメンテーションへと理解を深めていく旅に始まります。
Silexにどっぷりは必要?
おそらく、ECCUBEを深く知る上では、
Symfonyの基礎を把握する
⇒必要に応じてSilexのドキュメントを見る
という流れではありますが、Silexのドキュメントもなかなかしんどいです。
ECサイト作成程度の話であれば、Silexには触れず、
Symfonyの基礎を把握する
⇒ECCUBEのコアのコードからパクる。
⇒必要に応じてSilexのドキュメント
というのがベスト・プラクティスじゃないかなと思っています。といいますのも、Symfony基礎がわかるとディレクトリ構造がわかるので、コードのたどり方がなんとなくわかってきて、ECCUBEコアに、ピンポイントで似た例がでてくるのがほとんど。Silexのドキュメント見るより手っ取り早いと感じるからです。
コア開発者になるなら、SilexもSymfonyサービスプロバイダもしっかり理解してください。ということになるんだと思います。
さいごに
ECcubeの話というより、Symfonyの話がほとんどになってしまいました。
最後になりますが、ECCUBEはSilexベースですが、Symfonyかじらず、いきなりSilexから入っちゃうと遠回りになると思うので。まずは王道からと、オススメしつつ、アドベントカレンダーをバトンタッチしたいと思います。
最後になりますが、Symfonyを初学者向けソースを、Symfony meetupで知った部分貼っていきます。
参考になれば幸いです。
2015/05/18、個人的にどっぷりな、wordpressプラグイン本の著者さんがセッションするということもあり、第41回 WordBench 大阪 「VCCW vs Wocker」 に行った議事録と感想。
結論からいって、Dockerについてかなり理解が深まった。
きっかけを与えてくれたWockerの作者のKiteさんにはただただ感謝。
触発されて、今日ずっとDockerfileの書き方しらべてた。
あとは、TDDの必要性だとか、CIの必要性だとかへの理解が深まり、ついでに、OSSの貢献の方法というか考え方だとか、いろいろと参考になった。
本題のテーマはvccw vs wocker 。つまり仮想環境を利用しての開発環境についてのセッション。
そのまえに、まずDockerについて触れておく。
続きを読む »
久々に書くよ。2015のGWを使ってざーっと調べたメモとして。
wordpressの開発環境とデプロイに関して調べてて、というかWP-CLI使おうかなーって重い腰を上げただけなんだけど、wordpressでも結構モダンな、いろいろおもしろい発見があるもんだなとおもった。やる人はちゃんとやってんだなーって。(受託のお仕事の場合、意識しなければこれら何一つ触らずに済ませれる)
ひとつひとつ、掘り下げてたらきりがないので、エントリのタイトルのとおり、vccwとWordMoveで開発するのがいいかもって話、なにがいいかってところだけ書いて、一つ一つは別エントリで掘り下げていくことにする。今回はコードは書かない。
続きを読む »
グランフロントで実施されたWordCamp Kansai 2014 ですけど、記憶に残ってるうちに忘れないようにメモポスト。
日本語いいね。隅々まで理解できるや。前回 きつかったから。。。
というわけで、見たセッション順にレポート。
基調講演
WordPressのco-founderのMattの公演。
元々ミュージシャン志望で、出身高校は音楽系の学校、ビヨンセを送り出した学校でもあり、そこではサックスばっかりしていた。1時間あたり$50のレッスン料が高いので、友人のミュージシャンのwebサイトや自作マシンを作る代わりに、レッスンをしてもらったって話。
過去から、現在、近い将来のはなしへと。
Gigazineが早速記事にしてたので、詳しくはそちらをみたほうがよさそう。
http://gigazine.net/news/20140607-wordpress-matt-mullenweg-speech/
世界中にスタッフがいて、リモートワークで成り立ってる企業だけど、来年150人雇用するとのこと。
日本は大好きだけど、日本のことが一生理解できる気がしない(トイレとか特に)から、現地スタッフはどうしても居るよねって。
リモートで成り立ってるところ、どうやって信用できる人間をえらべてるのか、最近個人的にすごい気になってて、人事まわり結構興味があったんだけど、いっぱい並んでて聞けなかった。
続きを読む »
Sublime Text 2では、Ctagsプラグインを使うことによって、コードナビゲーション(Class/Functionが定義されてるところへジャンプ)できるようになります。
これ、僕のベスト10には入ってくる、お気に入りプラグインです。
コーディング中にふとClassやFunctionの動作を知りたくなった時にいちいちFunction名をサイト内検索したり、ドキュメントサイトを開いて探さなくても、キーバインドで瞬時にそのClass/Functionが定義されてるところへジャンプして確認できると。
(こういった機能のこと、コードナビゲーションとかコードナビゲートと呼ばれているようだ。NetbeansやEclipseなんかでは標準でついてる機能なのかな。Sublime Text 2では標準で付いていない。)
WordPressのテーマ、プラグイン開発などの小中規模の開発や、その他CMSやフレームワークを利用する際、ドキュメントを見るより、コードを見たほうが早く解決できることも多いので、効率的に開発できるようになります。
と、文章で記述しても伝わりにくいので、英語ですが動画見てもらった方がイメージをつかみやすいかなと。(4:10~6:00ぐらいまで)
VIDEO
次の上2つについては以前紹介しましたが、加えてコードナビゲーション機能があると、軽量で高機能のエディタへと進化します。
FTPが使え、保存と同時にアップロードもできる。
Sass/SCSSのコンパイルが簡単。
コードナビゲーションが使える。(←これ)
プラグインは以前からインストールしてマニュアル通り設定していたものの、どうもSublime Text 2からCtagsをリビルドできない状態でして、Terminalから.Ctagsファイルを作っていたのですが、エディタ設定を見なおしたらすんなりSublime Text 2からCtagsをリビルドできるようになりましたので、共有したいとおもいます。(Macでの手順です)
続きを読む »
Drupalでサイトの改修していて、既に設定した任意のContent Typesの一部のフィールドの型を変換する必要がありました。(「Integer」型→「text」型へ)
Drupalの管理画面から行えず、Moduleもありませんでしたので、直接データベースの値を修正することになりました。作業時間1時間弱といったところです。検索してもみつからなかったので、せっかくですので、その手順を残しておきます。
手順
この手順は、Integer→textへの型変換の方法です。他の型の場合は手順2,3,4あたりの値が異なってくると思います。
Databaseバックアップ
Table「field_data_field_xxx」の構造を変更
同様に、Table「field_revision_field_xxx」の構造を変更
Table「field_config」のレコードを変更
Table「field_config_instance」のレコードを変更
フォーマットを指定していた場合、Manage Displayページからフォーマットをリセット。
Drupalキャッシュクリア
続きを読む »
VancouverのBCITで開催されたWordCamp Vancouver 2012に行ってきました。WordCamp東京でもWordCamp大阪でもありませんのであしからず。非力の英語力ながらもレポを残します。
WordCamp Vancouver 2012
http://2012.vancouver.wordcamp.org/
案の定、英語が難しい。
ボイレコ持参し、自宅で聞き直してみても、やっぱり難しい。現地にいるときより難しい。勉強不足だね。
というわけで、まとめます。ボイレコの内容しっかり把握できたら書き直します。
2部屋で行われ、全体の参加者は300人前後ぐらいかなと。
続きを読む »
CMSなんかをいじっていると、.po、.mo、.potファイルなどで、多言語サイトができると。
といいますか、翻訳するためのファイルが、.po、.mo、.potファイルのこと。
難しそうだったのですが、すごく簡単でした。
(WordPressの場合は、PHP-gettextという仕組みで多言語化をおこなっている。)
po、mo、potファイル説明
まずどいういったファイルなのかという所から。
.pot :poの元になるファイル(テキストファイル)。
.po :potファイルに翻訳文を記入したファイル(テキストファイル)。
.mo :poファイルからgettext により作成されたバイナリファイル 。作成するにはツールが必要。WordPressが参照するファイル。
この3つだけ。
.potファイルは翻訳元の文章のリストをまとめたテキスト。.poファイルはテキストエディタで編集できるが、.moはツールを使わなければ変換できない。
続きを読む »