増子良太のブログです

増子良太が書いているブログです。テーマをしぼらず、思いついたものをただひたすら書いていきます。

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

      2016/01/31

MovableTypeでログ出力したい!

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

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

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

プラグイン作ってみた

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

 

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

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