Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ほんとにあったプラグイン開発事例集

 ほんとにあったプラグイン開発事例集

趣味や仕事で作成したプラグインのごく一部について、ご依頼から私からの提案、実際の成果物までの流れについて簡単にご紹介させていただき、「こんな流れで作ろうってなるんだ」「こんなことできたよ」とお伝えしたいと思います。

Yuichi Takeuchi

April 23, 2016
Tweet

More Decks by Yuichi Takeuchi

Other Decks in Business

Transcript

  1. 竹内雄一(たけゆーさん) • フリーランス Web 開発者 • 2000 年( 0x10 歳)

     フリーゲーム作りを通してプログラミングにはまる • 2008 年  個人事業「タケユー・ウェブ」開業 • 2009 年  趣味で Movable Type 5 用携帯メール投稿プラグイン KetaiPost を作成、無償公開 • 2016 年( 0x20 歳)  個人事業主として 毎月複数の MT/PowerCMS 開発案件をこなす  CMS 設計  プラグイン作成、カスタマイズ  テンプレートコーディング  バグとり
  2. 要望 • ダウンロード販売サイト •MT サイト制作はできる • 商品ページは MT ブログ •

    他社製会員サイト構築プラ グインと連携 •PayPal による決済 • 販売数の集計等管理 • 補助金の関係で予算はこれ とある制作会社さま
  3. タケユーの提案 • 商材ファイルをカスタム フィールド(アイテム) •AmazonS3 で購入者だけが 一定時間利用できる URL を発行 •PayPal

    連携書く • 会員サイトプラグインを 読んでハック •MT Listing Framework で 購入データ管理 「その予算に抑えたいならこんな感じで ありものを利用しましょう」
  4. 要望 • 既存サイトを CMS 化し たい •Dreamweaver や Contribute で作成

    • 数千ページ規模 • 手作業は無理なのでなん とかしてほしい とあるメディアサイトさま
  5. タケユーの提案 • サーバ内のファイルを探索 •HTML を解析して MT ウェ ブページとして登録 • 画像やダウンロード用ファ

    イルを記事アイテムに登録 • リンクの書き換え •SJIS や EUC を UTF-8 に •100% は無理なのでいった ん下書きにして確認 「自動化は怠惰なエンジニアの得意分野 ですよ」
  6. タケユーの提案 • 記事編集画面に GoogleMap を表示しマーカーや住所検索 で緯度経度設定 • カスタムフィールドでは SQL での位置情報検索難しいので

    独自カラム追加 • 地図表示ファンクションタグ • 近くの記事検索ブロックタグ • Data API に位置情報検索機 能を追加 「位置情報検索系サービスは何個か作っ たことあるんで、いけますよ」
  7. タケユーの提案 •AmazonWebService • 利用者ごとに見た記事を蓄 積 Cognito + DynamoDB • 機械学習で記事の関連性を

    解析 DataPipeline + EMR + Apache Mahout • 結果を MT で取り込んで DB に反映、再構築 Lambda + SNS 「クラウドで処理しましょう」
  8. タケユーの提案 • 各機能をプラグインで  会員ダッシュボード  視聴プラン契約  プラン自動更新バッチ 

    動画購入・購入管理  クーポン発行管理  決済方法を増やせる決済 システム  追加の MovableType ログ イン方法(楽天など) 「腕が鳴りますね」
  9. 要望 • ASP から移転 • メルマガ会員 7000 人 • HTML

    メール • ガラケー向けメール • バックナンバーページ • 自動登録・解除 • MT サイトは店舗スタッフが 構築済み • レンタルサーバー(エックス サーバー) とある玩具店さま
  10. タケユーの提案 • ブログのテーマとして専用の テーマを適用  メールテンプレート  バックナンバーページ  登録・解除ページ

    • ブログ記事をメルマガ記事と して利用 • ブログと同じように装飾や画 像を利用可能 • 少しずつ分割して送り負荷をか けない安心設計な配送管理 「ブログ記事をうまく使えば、バックナ ンバーも MT で普通に作れますし一石二 鳥じゃないですか」
  11. タケユーの提案 • コミュニティ・ソリュー ションを拡張するプラグイ ン •PowerCMS 会員サイト機 能をハックしてアカウント 利用 •

    いいね!ボタン的なの • コメントにコメントを • ファイルをアップロード • 投稿確認画面 「 MT 標準でフォーラム機能はあるので、 それカスタマイズして使いましょう」
  12. 要望 •PowerCMS 会員サイト機 能で構築 • 会員の投稿を受付 • 受け付けた要望は管理者が 確認して公開 •

    対応ステータスを設けて対 応状況のトラッキングと会 員への通知 •Excel で管理したい とある企業団体さま
  13. タケユーの提案 •PowerCMS のコンタクト フォームをカスタマイズ  項目追加  メール通知追加  確認画面追加

    など • 会員がフィードバックを検 索、表示できる独自 MT ア プリ •CSV インポート / エクス ポート( Excel 管理用) 「 PowerCMS なのでコンタクトフォー ムが使えますよ。」
  14. 要望 • オンプレ、企業間 VPN • 分析機器と連携してデータを 共有 • 別のサーバーに FTP

    ファイル 転送 • 専門家同士で意見を交換でき るサービス • メール通知 • トラブルを考えて、独自開発 ではなく弊社の実績のある MT ベースで とある SIer さま
  15. タケユーの提案 • PC から直接 FTP 転送などが必要 なのでブラウザでは無理 • 専用 Windows

    ソフト作りましょ う • 閲覧・回答だけはブラウザ版も • MT ブログ記事にデータ蓄積 • MT ユーザーでアカウント管理 • Data API で MT データ操作 • MT プラグインで通知とか 「最近 Data API という仕組みが追加さ れたので、ちょうどよいと思います。こ れ、使いましょう。」
  16. プラグインの闇 • 可能 と 推奨 は違う!  どうしても実装が難しいものもある  複雑に入り組んだコールバック

     実行順に依存したコード  MT 本来の処理を横取りしたモンキーパッチ  トランザクションの不備  途中でエラーが発生して不整合・・・  アンドキュメントな方法はあるにはあるが  読めないテンプレート  テンプレートで複雑なだし分けとか  セキュリティの低下  特にユーザーが操作する画面でフォームを提供したりする奴  管理画面で動くものも権限チェックが甘いとつらい  最近ニュースにも・・・
  17. 無理すると・・・ • 技術的負債  コードの複雑化。メンテナンス困難・バージョンアッ プ追従が難しい  管理画面の操作の複雑化 • MT

    らしさ  標準の操作感と剥離したものは使いづらい • 動的処理に不向き  実行効率の悪いクエリ  現実には CGI が多い
  18. 経験と主観による ほどよいつきあい方 • 汎用 CMS はあくまでも汎用  妥協も時には必要  無理にすべてで使おうとしない

     ほかの製品  Rails や Cake 、 Play などフレームワークを利用した開発 • がんばって実装しない  工夫を凝らした実装は保守しづらい  がんばらなくてできるやり方を考える  それがプラグインならそれはあり