「あったらいいな」MTRSが提供する(予定の)Movable Type プラグイン「MT-Raniking」の紹介

mt-Ranking

Movable Type Advent Calendar 2021

Movable Type Advent Calendar 2021 の24日目の記事です。

自己紹介

3年目3回目の参加です。株式会社ワールドイズマインでMovable Type の構築をメインにWebデザイン〜システム開発を行っています。 Teruki Kato(加藤輝樹)です。

MTRS(MT リモートサービス)を運営し、パスワード復旧や、サーバー移行、アップグレードなどの代行サービスの提供やプラグインの販売をしています。

メディアサイトの構築であったらいいなと思う機能

今年はメディアサイトを構築する機会が多かったのですが、
機能要求のトップ3は

3位 タグサーチ
2位 レコメンド
1位 ランキング

でした。

次点でSNS連携がありますがこれはMT-IFTTTをご利用いただければバッチリです。

タグサーチはデフォルトの機能で実装できるので問題ないのですが、CMSサーバとWEBサーバの分離が進むご時世なので、なかなか難しいです。そんな時どうするかというと、

  1. mt-search.cgiだけwebサーバに設置する
  2. それができない場合は、コンテンツタイプで逆引きさせるプラグインを利用して実装する
  3. プラグインを入れられない場合は、タグフィールドでタグは管理しつつ、jsonとJSでなんとかする

といったようにあの手この手で実現しています。

レコメンドについてはまだ僕の中で最適解が見つけられていなくて、

  1. カテゴリやタグを利用したグルーピング
  2. 手動で管理する
  3. サービスを導入する

といった感じで対応しています。

最後にランキングなのですが、WordPressではランキングを簡単に実装できるプラグインがいくつか存在するので、MTでもできるよねって思われがちな機能ですね。

現状僕たちがランキングを実装する際は、我らがアイデアマンズ宮永さんのRanklet一択です。
Rankletは超オススメで、よく利用させていただいています。

簡単にRankingを実装できるプラグインが欲しい

ランキング機能が欲しい理由はサイト内を回遊させたいということだと思いますが、
規模が大きくなればなるほど、カテゴリやタグやいろんな切り口でグルーピングが必要になります。そうなった時には当然、記事の一覧にはそれらの情報も表示したいですよね。
ということはランキングのリストにもMTで管理しているカテゴリやタグなんかも表示したいというのが世の常です。
でもそれを実現できるプラグインは見当たらないので、作っちゃおうというのが今回のお話です。

まずは実現可否は考えず、僕が欲しい機能をリスト化してみます。

  1. ランキングしたい(あたりまえ)
  2. ブログごとのランキングがしたい
  3. カテゴリごとのランキングがしたい
  4. タグごとのランキングがしたい
  5. 表示件数は自由に設定したい
  6. ランキングには載せたい要素を好きに載せたい
  7. サーバー配信しててもランキングは使いたい
  8. プラグインをいれればMTMLでお手軽に実装できるようにしたい

こんなところですかね。
これをエンジニアにぶつけて顔色をうかがってみます。

「できるけど、いろいろ考えないといけないことがあるから簡単じゃない」とのお返事。

「WordPressと違ってページ表示のリクエストをMTが処理できないからGAと同じように各ページにトラッキング用のスクリプト埋め込んでMT側にデータを送り込む必要あってその度にCGIを動かすからサーバパフォーマンスが心配......」
「ランキング情報を毎回DBで集計すると重いからキャッシュが欲しい......」
「MTだと基本再構築が必要だと思うのでなかなかリアルタイムなランキングが見せられない......」
などなど。

たしかにおっしゃる通りです。やっぱむつかしいのかなぁとさみしい気持ちになっている、その時!

MT-Ranking 開発プロジェクトが動き出す

「シンプルに作って、GA対応・外部サーバー対応はバージョンアップで考えるのが手かな」

エンジニアのこの一言からプロジェクトが動き出した!

基本方針はこんな感じ

(A)ミニマム実装でお手軽ランキングできる「MT-Ranking」をつくる!

機能要件概要:

  1. 専用のcgiを作って、ページにアクセスが来たら集計する
  2. 呼び出すスクリプトはMTタグで制御できる
  3. MTタグによって記事の持つフィールドおよびカスタムフィールドを呼び出せる(再構築が必要)

(B)細かいところまで設定できる「MT-Ranking-Pro」をその次につくる!

機能要件:

  1. ダイナミック用のMTタグの追加(リアルタイムランキング表示)
  2. 呼び出すスクリプトはMTタグで制御できる
  3. アクセス数カウント方法の選択(GAとの連携が可能)
  4. サーバ配信対応

あとは作るだけ、作るだけ!!

僕にできること。。ロゴだけ作った。

1年に1本はプラグインをリリースしたいなと思っているのですが、今年はありがたいことに構築案件で手一杯でプラグイン開発までリソースが回せず、今日までになんとかと思っていたものの、全然間に合わなかったです。

春までにはなんとか通常版をリリース予定なので期待してね!!

前へ

MT-IFTTTの使い方。〜IFTTTとコンテンツタイプを連携する〜