テーマに機能を含めちゃダメなんて誰が決めた!...

39
ーマに機能を含めちゃダメなんて誰が決めた! ーマをモリモリにカスタマイズする WordBench東京2016 /02 (C)2016 高橋文樹

Transcript of テーマに機能を含めちゃダメなんて誰が決めた!...

Page 1: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

テーマに機能を含めちゃダメなんて誰が決めた!テーマをモリモリにカスタマイズする

WordBench東京2016/02 (C)2016 高橋文樹

Page 2: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

おまえ誰?• 高橋文樹といいます。小説家です。

• WordCamp Tokyo 2016の副実行委員長です。

• 公式プラグインを6個ぐらい公開しています。

• 僕のプラグインを3回以上インストールした人は僕のKindle本を全部買ってください。子供が飢えています。

Page 3: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

免責事項

この発表はWordPressを使ってサイトを作るにあたり、 どれだけやれるのかということを主題にしています。 もしあなたがWordPressによる受託開発を行っており、 コーポレートサイトやらなんやらをたくさん作ることで

生計を立てているのであれば、 全然役に立たない発表になってしまいますので、

その点ご了承ください。

Page 4: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

よくある誤解• 「テーマは見栄えでプラグインは機能」なの?

• コード的にはどっちも大して変わらない。違うのはエントリーポイント(WordPressのどこで一番最初に実行されるか)ぐらい。

• 実現可能かどうかと、特定の誰か(WordPress.org)がそうしてほしいかどうかは別問題。

Page 5: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

公式リポジトリの規約• Use WordPress functionality and features first, if available.

• Don’t include admin/feature pointers.

• No pay wall restricting any WordPress feature.

• No disabling of the admin tool bar.

• Use get_template_directory() rather than TEMPLATEPATH to return the template path.

• Use get_stylesheet_directory() rather than STYLESHEETPATH to return the stylesheet path.

• Avoid hard coding to modify content. Instead, use function parameters, filters and action hooks where appropriate. For example wp_title should be modified using a filter.

• Able to have child themes made from them. (Child theme ready)

• Include comments_template().

• The theme tags and description must match the what the theme actually does in respect to functionality and design.

• Use template tags and action/filter hooks properly.

https://make.wordpress.org/themes/handbook/review/required/#core-functionality-and-features

Page 6: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

そうなんだ! でも公式テーマじゃないから!

Page 7: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

解決

Page 8: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

プラグインとテーマの 違わなさ

wp-settings.phpの 251行目か364行目か

Page 9: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

唯一の違い• テーマはプラグインより後に読み込まれるので、プラグインがテーマを変更することはできるが、テーマがプラグインを変えることはできない。

• テーマは定数で読み込まれるので、UserAgentでテーマを切り替えるようなことをテーマ自身は基本的にできない(テーマスイッチ系プラグイン)

• initやadmin_menuなどのクリティカルなフックは全部after_setup_themeフック以降なので、違いは大してない。管理画面を追加したりすることはテーマにもできる。

Page 10: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

ところで

Page 11: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

Terminology

【プラグイン】

語義: コンセントのように差したり抜いたりできるもの

【テーマ】

語義:主題

Page 12: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

デモ

Page 13: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

WordPressは プラグインがなくても動くが、 テーマがないと動かない!

Page 14: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

人生で重要なのは……

 主題 > コンセント テーマ > プラグイン

Page 15: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

破滅派のテーマ

• 後ろ向きのまま前へ進め!

• パブリッシング・プラットフォーム

• DIY(Do It Yourself)

Page 16: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

やってみよう!テーマから色々やるよ

Page 17: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

composerまず、テーマにcomposerを含め

ます。

Page 18: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

読み込みますvendor/autoload.phpを読みこめば、require地獄から解放!

Page 19: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

WPametuとは?

Page 20: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
Page 21: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

WPametuのここがすごい!• 設定ファイルを置いておくとデータベースを勝手に作ってくれる

• なんちゃってORマッパーがある!

• HTMLメルマガに欠かせない外部CSSをインラインCSSに展開する機能がある!

• コントローラーがある! クラスを置くだけでリライトルール追加

• if( $_POST[‘hoge’] ){}とか書かない! if($this->input->post(‘hoge’){}でno warning!

Page 22: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

昨今のPHPフレームワークは• CakePHPとかは特定のフォルダに特定のクラスを継承したクラスを置いておくだけで、RESTfullな作りになる。

• たとえば、http://exaple.jp/post/create/ にアクセスすると投稿が作れるとか、そういうの。これを理解していなくて、ルートにわけわかんないフォルダいっぱい作ってるヤツを死ぬほど見てきた。

• WordPressのリライトルールは少し複雑なので、ここで苦労しているプログラマも多い。

Page 23: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

WPametuなら……

Page 24: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
Page 25: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

というわけで テーマで色々できる

Page 26: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

アンチパターン

• 神(ゴッド)オブジェクトを作らない。$myapp->post->custom->event_limit とかダメ!

• シンタックスシュガーを多用しない$this->i18n->_(‘hogehoge’) = __(‘hogehoge’, ‘hametuha’)

• Well Documentedは正義! コメント最高!

Page 27: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

とはいえ……

• プラグインで機能を細かくわけた方が効率がいいのでは? という疑問が必ず来る。

Page 28: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

汎用性と開発効率は トレードオフ

Page 29: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

たとえば、匿名掲示板

Page 30: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

破滅派の場合

Page 31: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

プラグインにした場合

Page 32: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

13kb < 177kb 13,312文字 < 181,248文字

桁が違う!

Page 33: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

あと、こうなる

Page 34: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

プラグインにする条件は?• その機能が汎用的であること

• みんなが使うであろうユースケースをきちんとカバーしており、それに意味があること

• 管理画面以外にUIを伴わないこと

• お金儲けしたい

タイトル ブラックジャックによろしく著作者名 佐藤秀峰

サイト名 漫画 on web

Page 35: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

プラグインのつらみ• WordPressはテーマに異常な裁量を置いており、テーマ作者は好きなUIを作ることができる。

• となると、プラグイン側で困るのはUIを作ること。たとえば、Twitter BootstrapでUIを作ることが決まっていれば、プラグインから好きなようにUIを作れる。

• 結果、プラグインからクソのようなCSSが大量に読み込まれ、どうしようもない結果になる。

Page 36: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

デモ

Page 37: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

今日の学び• テーマの方がプラグインよりずっと大事! 人生のテーマはあるけど、人生のプラグインはない!

• なんだってやろうと思えばできる!

• WordPressのTheme RequirementsにCSSフレームワークを含めろ! BootstrapでもBourbonでもFoundationでもなんでもいいよ、ないよりマシだよ!

Page 38: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

‒マルクス・アウレリス・アントニヌス

“なにもしなかったということは、 悪いことをしなかったということではない”

Page 39: テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする

ご静聴 ありがとうございました