カテゴリー
movabletype(mt) Perl

MovableTypeのPluginを作って公開してみよう(失敗談付き)

MovableTypeでログ出力したい!

久しぶりの記事ですが、この記事は Movable Type Advent Calendar 2015 の4日目の記事です。

本当はDataAPIを使って何か作って解説しようとしていたのですが時間切れ・・・

今回は自分の経験も生かしてプラグイン公開のお話を書こうと思います。

プラグイン作ってみた

デバッグ時にMTログを画面からアクセスしてみるのではなくて、純粋にログだけをみたいという時があります。例えば全画面共通で呼ばれるheaderテンプレートのコールバック処理なんかを書いている時、デバッグでログを出力する処理を書きます。たとえば

MT->log('blog_id: ' . $app->param('blog_id'));

 

これを目的の画面を表示し、ログを出力させ、その結果をログ画面を表示してみてみると、、、

blog_id: 1
blog_id: 0

あれ?どっちがさっきの画面のデータだ?となります。これは簡単な例なので判りやすいですが、もっと複雑なデバッグログなどを出力しているときには大変です。また、Dumperなどを使ってオブジェクトの中身をデバッグしたい時など、画面が縦に伸びたり非常に見づらくて、嫌になります。

かといって、MySQLなんかに接続してSQL文で表示もできますが、いちいち叩くのめんどくさい。

apacheやnginxなどのログはtailできるのになぁ。tailできたらうれしいなぁ。流しっぱなしにしたいなぁ。あ、作っちゃえ!という勢いで何も考えずに書いて、プラグインが出来上がりました。

できたプラグインがこちら → rmasco/Log4mt

おお!tailができる。検索で目的のデータが見易い!と、一人調子にノッテました。。。

せっかく作ったし公開してみよう

前職でもプラグインは相当な数を作っていましたが、あくまで製品用のCMSの機能の一部だったので公開するという機会もなかった(言い訳)ので、良い機会だと思って公開してみることにしました。

せっかく作るんだから、ブログに書いてでも良いけど正式なプラグインとして Movable Type Plugins And Themes Directory に登録してみよう!と登録してみることにしました。

登録する上でプラグイン名を適当につけてしまっていたので、公開するのにふさわしい名前にしよう!ログを吐き出すモジュールで有名なのが「 Log4** 」**にはperlやJなどいろいろな言語に実装されているモジュールがあったのを思い出し、思い切って「 Log4mt 」と名付けました。必要な情報を管理画面にポチポチ入力し、いざ!と登録ボタンを押すと、「作品をご登録いただきありがとうございます」というメールが届きます。そこから8日後、「プラグイン: 'Log4mt'が公開されました。」というメールが届きます。

やった!これで俺もようやくMovableTypeのプラグインを作っていると名乗れる!と思っていましたが、この後悲劇が待っていました。

そのプラグイン、もうあるよ?

Faacebook上に作成したLog4mtのリンクがシェアされ、やったね!なんて喜びの中、1つのコメントで衝撃の事実を叩きつけられます。

https://github.com/openmelody/mt-plugin-log4mt

あれ?俺のリポジトリじゃないけど、log4mtってかいてある?あれ?なんで? このあたりで気づき、まさか!と思ってGoogleにお尋ねします。

「log4mt」

すでにあるよー!同じ名前のプラグインがー!中身はくわしく見れておりませんが、2013年から開発していて、すっごい長い事メンテされてらっしゃる。

オーマイゴー!

そうです。開発者の端くれである私は、やってはいけないミスを犯しました。名称かぶり。

名前付ける時最初に検索するでしょ?と思われたあなた、正解です!

プラグインができた喜びでそのまま登録処理までしてしまっていたため、名前がかぶるなんて発想はその時にはありませんでした。

しかも、おそらく名前がかぶっているという事は、おそらく目的も同じ。

まとめ

遊びで細かいものを作ったり、それをセミナーでLTしたりってことはしていましたが、世間様に向けて作ったものを公開するということは、あまりしたことありませんでした。

今回、色々と失敗もありましたが、プラグインを登録するというフローが実際に経験できて理解できたことや、すでに世の中にあるプラグインを作ってしまうという経験から今後はちゃんと調べた上で公開しようと反省できたので、結果としては良かったと自分の中ではしています(無理やり)

ただ、最近車輪の再開発は悪!みたいな、フレームワークで最初からやったほうが早いよ!という流れはちょっと違うかなと思っていて、上記のような失敗をしなければ学べないこともあるし、やってみて公開してみたから指摘をもらえて気づくことができることもあります(この後ライセンスについてもツッコまれたりしてライセンスについても勉強し直す機会があったりもしました)

だから、失敗を恐れず、MovableTypeでこうなったらいいのに!という人はプラグインを書いて、便利だと思ったらそれを世の中に公開してみましょう!(自戒)

今ならDataAPIを拡張したりとかが需要ありそう!

でも恥ずかしい思いをする前に名前と同じようなものが世の中にないか、確認はしましょう。。。

カテゴリー
movabletype(mt) Perl

ログ表示が便利に!出力プラグイン作成してみました

雨が多くて嫌になります。増子良太です。

本日は久しぶりにMovableTypeのプラグインを作りたくなってというか、開発しているときに少しだけ便利にしたいと思って書いてみました。

rmasco/MTLogger – github

MTでプラグイン等開発していると、ログに出力してログを見るという方法が一番お手軽なデバッグ方法ですが、ログも管理画面内から見るのでソース書いて、実行してログを見るという作業が頻繁に発生します。

しかもテンプレートの処理の開発などをしている場合にはもっと厄介で、ログを出力するコードを書いて、該当となる画面を開いてログをだし、ログ画面にてログを確認しようと思ったら、、、ログ画面にアクセスしたときのログなどが大量に保存されていて、探すことも困難になります。

apacheのログみたいにファイルで出力されて、tailなりlessなりコマンドで追いかけられれば良いのになぁと思って、作ってみました。

インストール方法などは簡単でプラグインフォルダに入れるだけです。

ファイルに出力するメリットはもう少しあって、データベース内に溜まったログを定期的に削除したときにも、ファイルは残るという点です。

運用上定期的にmt_logテーブルを削除してしまうが、ログのバックアップは取っておきたい、でもSQLでとってもなぁ。。。というときにもファイルに吐き出されるので便利です。

作っていて今後の課題として、MTが出さないログとか出せたらいいなと思いました。管理画面をDebugModeにするわけにはいかないけど、ログの出力だけ細かく出したいとか。そういう場合にも対応できるようにしたいです。

また、他にもこんな機能あったら使いたいという要望があれば、コメントしてください。

久々にプラグイン作ったけど、やっぱりMTはコールバック処理とかしっかりしているから、基本的にはプラグインでなんでもできてしまうところが良いところですね。

カテゴリー
Perl

吉祥寺.pm (kichijojipm) #2に参加してきました

Perlって今まで7年くらい触っていたけど、ほとんどMovableType(mt)のプラグインを書いたりmtのソース読んだりってのを仕事としてやっていて、ほぼ独学だったのに、勉強会とかに参加したことは、良く良く考えてみるとありませんでした。

たまたまお誘いされたので、吉祥寺.pm (kichijojipm) #2に参加して、ずうずうしくLTまでさせてもらってきました。