Business and Web Work Memo

Webプログラマーのビジネス&仕事メモブログ

「WordCamp Osaka 2012」Webアプリ用カスタマイズに役立つセッション(by 野島さん)のメモ。

2012/11/03に大阪で行われた、「WordCamp Osaka 2012」に行ってきました。 今回かなり関係者の方々が頑張って宣伝されていたので、その成果があったのかものすごい数の方たちが来場していました。 同じ時間に複数セッションが組まれていたのですが、自分が参加したセッションの中で特に自分にとってためになったと思うセッションの自分用メモを掲載します♪

Session : エンジニアの為の WordPress入門 〜WordPressはWebAppプラットフォームです〜

@yuka2py / 株式会社フォーエンキー代表 野島祐慈さん

野島さんはプログラマーでありながらデザインのセンスもおありでとても羨ましいお方です。ご発想も豊かなので、予想以上のものをご提案いただけるかもしれないです。お人柄も優しい方なので、気持よくやり取り出来ると思います♪中国語や韓国語圏のサイト制作サービスもされるそうなので、ご興味ある方はぜひお問い合わせしてみてください♪^^

企業サイトやWebアプリを作る場合もWordPressは便利!

  • 必要な機能が大体そろっていて自作不要。→ 本当に作りたいものに集中出来る!
  • カスタマイズが簡単
    • functions.phpに追加処理をPHPでどんどん追記可
      • カスタマイズのルール:
        フックの登録・削除、テンプレ以外のPHPは「wp-content/themes/利用テーマ/functions.php」に書く
    • リクエストからレスポンスまでほとんどのポイントに処理を差し込める

おすすめプラグイン

  • キャッシュ「WC Total Cache
  • フォーム「Contact Form 7
  • ソーシャル投稿「WP Social Bookmarking Light
  • ソーシャル認証「Gianism
  • メルマガ「Subscribe2
  • バックアップ「BackWPup
    • ファイルとDBの両方をバックアップ
    • スケジュール実行
    • 実行結果のメール通知
    • リストアもブラウザから可能
    • バックアップ保存先を各種ストレージに設定可能
      FTP, DropBox, AmazonS, Google Strage, Microsoft Azure, BackSpace Cloud)
  • データ永続化の拡張「Types
    • 3つのカスタム機能を一度に管理
      (カスタム投稿タイプ、カスタムフィールド、カスタムタクソノミー)
    • 異なるカスタム投稿タイプに親子関係を持たせることが出来る
  • SEOAll In One SEO Pack」※最新のSEOについては個々で勉強要
  • 汎用サイトの機構
  • スマートフォン対応「WP Touch
  • フューチャーフォン対応「Ktai Style

カスタマイズするためにはまずWordPressの仕組み理解が必要

  • WordPressにはMVCでいうコントローラ的なものがなく、テンプレートが直接呼ばれる
  • 処理割り込みのフック箇所と、表示テンプレ箇所がカスタマイズ可能箇所になる
  • テーマのファイルは「wp-content/themes/利用テーマ/」に入れ、「style.php」にテーマのmeta情報記述
  • 表示の優先順位があり、順番にチェックされ、該当テンプレがあればそれを表示。

    参考:http://wpdocs.sourceforge.jp/テンプレート階層
  • 「メインクエリ(URLに対応した記事を検索し表示するクエリ)」をフックで変更し取得内容を変更可能
    • フックはドキュメントも豊富
      参考:http://wpdocs.sourceforge.jp/プラグイン_API#Actions
    • フックにはアクションフックとフィルターフックの2種類ある
          アクションフック:WordPressのイベントや処理に応じてプログラムを実行する

    • フィルターフック:入出力テキストなどのデータを加工する

データの永続化:投稿タイプ

  • データベースの主要テーブルは「posts(投稿)」「comments(コメント)」「links(リンク)」「users(ユーザー)」「term_taxonomy(分類)」の5つ
  • 投稿には自由に設定可能な投稿タイプがある
    • カスタム投稿タイプは「posts」テーブルの「post_type」に独自の設定を与えたもの
    • デフォルトの「投稿」や「固定ページ」もその中の1つ
  • 投稿記事(posts)には画像だけでなく動画・音声・書類などいろんなファイルを格納可能

    商品情報・製品情報の掲載などアイデア次第で使い道が広がる♪
  • カスタム投稿タイプの利用
    • 管理画面で通常の投稿とわけて管理が出来る
    • 基本はfunctions.phpに記述していく
    • 「Types」などプラグインもあるが、Webアプリとして利用する場合はAPIで自作がおすすめ

データの永続化:カスタムフィールド

  • 足りないデータを補う3つのメタテーブルは「postmeta(投稿用)」「commentmeta(コメント用)」「userdata(ユーザー用)」の3つ
  • 「key/value」形式で各対象データに紐付いている
  • PostgreSQLの配列型のように複数値も扱える

    参考:http://wpdocs.sourceforge.jp/カスタムフィールドの使い方


  • メリット
    • アプリが扱うデータ内容の変更が比較的容易
    • WPのレールの上で管理できる(他プラグインから扱える)
  • デメリット
    • DBクエリ増加∼処理速度 → キャッシュのプラグイン利用
    • データの扱いがやや面倒 → 独自テーブル作成の方法あり(但しバックアップ系プラグインの恩恵が受けれなくなる)

データの永続化:オプション

  • 投稿などに紐づかない、データを簡単に保存(key/value形式)
  • 「key/value」形式で各対象データに紐付いている
  • アプリケーション全体の設定値などの保存に利用

WordPressアプリ制作事例

WordPressに向いているアプリ、向いていないアプリとは?

  • 向いているアプリ
    • 何らかのコンテンツをストックし公開するサイト
    • いわゆるWebサイトに必要な要件がたくさん詰まってる
      (プラグインの利用で開発コストを低減)
  • 向いていないアプリ
    • 全く外向きに公開しない
    • 複雑なデータ構造
    • データの集計や計算が主題
    • 管理画面のカスタマイズの比率が非常に多い

失敗しない方法