Slide 1

Slide 1 text

ほんとにあった プラグイン開発事例集 MT 東京 23 春のプラグイン祭り タケユー・ウェブ竹内雄一

Slide 2

Slide 2 text

竹内雄一(たけゆーさん) • フリーランス Web 開発者 • 2000 年( 0x10 歳)  フリーゲーム作りを通してプログラミングにはまる • 2008 年  個人事業「タケユー・ウェブ」開業 • 2009 年  趣味で Movable Type 5 用携帯メール投稿プラグイン KetaiPost を作成、無償公開 • 2016 年( 0x20 歳)  個人事業主として 毎月複数の MT/PowerCMS 開発案件をこなす  CMS 設計  プラグイン作成、カスタマイズ  テンプレートコーディング  バグとり

Slide 3

Slide 3 text

プラグインとは? Wikipedia 『アプリケーションソフトウェアの機能を拡張するために 追加するプログラムの一種。』

Slide 4

Slide 4 text

特別なもの? 「プラグイン作ればできますよ」というと、「いやそこまでは・・・」とか 「えっそんなことできるんですか?」と言われることがあります。

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

事例 01 携帯メール投稿

Slide 7

Slide 7 text

要望 • 子供の成長記録 • 実家の親に見せたい • 簡単に載せられる • 無料で使えるメール投稿 プラグインが見つからな い •Wordpress は PHP だから やりたくない 竹内さん

Slide 8

Slide 8 text

タケユーの提案 •Movable Type は Perl • 写メール(死語) • ガラケーの絵文字変換 「メール投稿や絵文字変換なら仕事で やったことあるし」

Slide 9

Slide 9 text

タケユーの実装

Slide 10

Slide 10 text

タケユーの実装

Slide 11

Slide 11 text

事例 02 Basic 認証管理機能

Slide 12

Slide 12 text

要望 •MT で限定コンテンツを 管理したい • ディレクトリ別 • 複数の ID/PASS とある SIer さま

Slide 13

Slide 13 text

タケユーの提案 • 管理画面に専用画面追加 •.htpasswd を生成 「それならかんたんですよ。」

Slide 14

Slide 14 text

とある SIer さま タケユーの実装

Slide 15

Slide 15 text

事例 03 プレビュー URL 発行

Slide 16

Slide 16 text

要望 • 取材元に公開と同じ体裁 で確認させたい •PC に疎い方なのでログ インとかは無理 • メールは使える とある地域情報サイトさま

Slide 17

Slide 17 text

タケユーの提案 • プレビュー用 URL を記事 下書き画面に表示 • コピペしてメールで送る • ブラウザで開くと 公開時と同じように構築 して表示 「だったらこんなもんでしょう」

Slide 18

Slide 18 text

とある SIer さま タケユーの実装

Slide 19

Slide 19 text

事例 04 コンテンツダウンロー ド販売

Slide 20

Slide 20 text

要望 • ダウンロード販売サイト •MT サイト制作はできる • 商品ページは MT ブログ • 他社製会員サイト構築プラ グインと連携 •PayPal による決済 • 販売数の集計等管理 • 補助金の関係で予算はこれ とある制作会社さま

Slide 21

Slide 21 text

タケユーの提案 • 商材ファイルをカスタム フィールド(アイテム) •AmazonS3 で購入者だけが 一定時間利用できる URL を発行 •PayPal 連携書く • 会員サイトプラグインを 読んでハック •MT Listing Framework で 購入データ管理 「その予算に抑えたいならこんな感じで ありものを利用しましょう」

Slide 22

Slide 22 text

とある制作会社さま タケユーの実装

Slide 23

Slide 23 text

事例 05 CMS 化支援

Slide 24

Slide 24 text

要望 • 既存サイトを CMS 化し たい •Dreamweaver や Contribute で作成 • 数千ページ規模 • 手作業は無理なのでなん とかしてほしい とあるメディアサイトさま

Slide 25

Slide 25 text

タケユーの提案 • サーバ内のファイルを探索 •HTML を解析して MT ウェ ブページとして登録 • 画像やダウンロード用ファ イルを記事アイテムに登録 • リンクの書き換え •SJIS や EUC を UTF-8 に •100% は無理なのでいった ん下書きにして確認 「自動化は怠惰なエンジニアの得意分野 ですよ」

Slide 26

Slide 26 text

とあるメディアサイトさま タケユーの実装

Slide 27

Slide 27 text

事例 06 位置情報検索

Slide 28

Slide 28 text

要望 • 記事に位置情報を追加 • 簡単に入力できるように • 記事ページで地図表示 • 「ある地点」から近くの 記事を検索 • ある記事から •GoogeMap で表示中の範 囲で記事 とある地域情報サイトさま

Slide 29

Slide 29 text

タケユーの提案 • 記事編集画面に GoogleMap を表示しマーカーや住所検索 で緯度経度設定 • カスタムフィールドでは SQL での位置情報検索難しいので 独自カラム追加 • 地図表示ファンクションタグ • 近くの記事検索ブロックタグ • Data API に位置情報検索機 能を追加 「位置情報検索系サービスは何個か作っ たことあるんで、いけますよ」

Slide 30

Slide 30 text

とある地域情報サイトさま タケユーの実装

Slide 31

Slide 31 text

事例 07 「この記事を見た人は こんな記事も見ていま す」

Slide 32

Slide 32 text

要望 • 「この記事を見た人はこ んな記事も見ています」 をつけたい。 • 好みの記事をおすすめす るやつ。 • 専用のサーバは増やせな い とあるメディアサイトさま

Slide 33

Slide 33 text

タケユーの提案 •AmazonWebService • 利用者ごとに見た記事を蓄 積 Cognito + DynamoDB • 機械学習で記事の関連性を 解析 DataPipeline + EMR + Apache Mahout • 結果を MT で取り込んで DB に反映、再構築 Lambda + SNS 「クラウドで処理しましょう」

Slide 34

Slide 34 text

とあるメディアサイトさま タケユーの実装

Slide 35

Slide 35 text

事例 08 会員制動画配信サイト

Slide 36

Slide 36 text

要望 • 既存のサイトをリニュー アル • 動画コンテンツページ (数千)から会員( 10 万 以上)まですべて管理し たい とある動画配信事業者さま

Slide 37

Slide 37 text

タケユーの提案 • 各機能をプラグインで  会員ダッシュボード  視聴プラン契約  プラン自動更新バッチ  動画購入・購入管理  クーポン発行管理  決済方法を増やせる決済 システム  追加の MovableType ログ イン方法(楽天など) 「腕が鳴りますね」

Slide 38

Slide 38 text

タケユーの実装 • (スライドできてないよ) • 現在も運用中 とある動画配信事業者さま

Slide 39

Slide 39 text

事例 09 メールマガジン

Slide 40

Slide 40 text

要望 • ASP から移転 • メルマガ会員 7000 人 • HTML メール • ガラケー向けメール • バックナンバーページ • 自動登録・解除 • MT サイトは店舗スタッフが 構築済み • レンタルサーバー(エックス サーバー) とある玩具店さま

Slide 41

Slide 41 text

タケユーの提案 • ブログのテーマとして専用の テーマを適用  メールテンプレート  バックナンバーページ  登録・解除ページ • ブログ記事をメルマガ記事と して利用 • ブログと同じように装飾や画 像を利用可能 • 少しずつ分割して送り負荷をか けない安心設計な配送管理 「ブログ記事をうまく使えば、バックナ ンバーも MT で普通に作れますし一石二 鳥じゃないですか」

Slide 42

Slide 42 text

タケユーの実装 • (スライドできないよ) • 実際に毎月 7,000 人以上の顧客に配送 • オープンソースで公開 とある玩具店さま

Slide 43

Slide 43 text

事例 10 フォーラム(スレッド 型掲示板)

Slide 44

Slide 44 text

要望 •PowerCMS 会員サイト機 能で構築 • 会員同士が情報交換でき るフォーラムが欲しい • いいね!ボタン的なの • コメントにコメントを • ファイルをアップロード とある企業団体さま

Slide 45

Slide 45 text

タケユーの提案 • コミュニティ・ソリュー ションを拡張するプラグイ ン •PowerCMS 会員サイト機 能をハックしてアカウント 利用 • いいね!ボタン的なの • コメントにコメントを • ファイルをアップロード • 投稿確認画面 「 MT 標準でフォーラム機能はあるので、 それカスタマイズして使いましょう」

Slide 46

Slide 46 text

タケユーの実装 • (スライドできないよ) • 実運用中 とある企業団体さま

Slide 47

Slide 47 text

事例 11 意見要望受付・追跡

Slide 48

Slide 48 text

要望 •PowerCMS 会員サイト機 能で構築 • 会員の投稿を受付 • 受け付けた要望は管理者が 確認して公開 • 対応ステータスを設けて対 応状況のトラッキングと会 員への通知 •Excel で管理したい とある企業団体さま

Slide 49

Slide 49 text

タケユーの提案 •PowerCMS のコンタクト フォームをカスタマイズ  項目追加  メール通知追加  確認画面追加 など • 会員がフィードバックを検 索、表示できる独自 MT ア プリ •CSV インポート / エクス ポート( Excel 管理用) 「 PowerCMS なのでコンタクトフォー ムが使えますよ。」

Slide 50

Slide 50 text

タケユーの実装 • (スライドできないよ) • 実運用中 とある企業団体さま

Slide 51

Slide 51 text

事例 12 オンプレ・特定用途向 けサービス

Slide 52

Slide 52 text

要望 • オンプレ、企業間 VPN • 分析機器と連携してデータを 共有 • 別のサーバーに FTP ファイル 転送 • 専門家同士で意見を交換でき るサービス • メール通知 • トラブルを考えて、独自開発 ではなく弊社の実績のある MT ベースで とある SIer さま

Slide 53

Slide 53 text

タケユーの提案 • PC から直接 FTP 転送などが必要 なのでブラウザでは無理 • 専用 Windows ソフト作りましょ う • 閲覧・回答だけはブラウザ版も • MT ブログ記事にデータ蓄積 • MT ユーザーでアカウント管理 • Data API で MT データ操作 • MT プラグインで通知とか 「最近 Data API という仕組みが追加さ れたので、ちょうどよいと思います。こ れ、使いましょう。」

Slide 54

Slide 54 text

タケユーの実装 • (スライドできないよ) • 実運用中 • Windows クライアントアプリは設計のみ、 実装は知人に外注しました。 • Web 版(シングルページアプリケーション)は タケユー開発 とある SIer さま

Slide 55

Slide 55 text

まとめ

Slide 56

Slide 56 text

タケユー・ウェブの 進め方

Slide 57

Slide 57 text

ヒアリング • 実現したいこと • 必要な理由 • 代替手段は? • 時には逆提案

Slide 58

Slide 58 text

いろいろやって見えてきた 光と闇

Slide 59

Slide 59 text

プラグインの光 • 使い勝手の向上 • テンプレート保守性の向上 • 全く新しいことが可能になる • 独自機能でも MT の管理画面を簡単に実装できてよ い

Slide 60

Slide 60 text

プラグインの闇 • 可能 と 推奨 は違う!  どうしても実装が難しいものもある  複雑に入り組んだコールバック  実行順に依存したコード  MT 本来の処理を横取りしたモンキーパッチ  トランザクションの不備  途中でエラーが発生して不整合・・・  アンドキュメントな方法はあるにはあるが  読めないテンプレート  テンプレートで複雑なだし分けとか  セキュリティの低下  特にユーザーが操作する画面でフォームを提供したりする奴  管理画面で動くものも権限チェックが甘いとつらい  最近ニュースにも・・・

Slide 61

Slide 61 text

無理すると・・・ • 技術的負債  コードの複雑化。メンテナンス困難・バージョンアッ プ追従が難しい  管理画面の操作の複雑化 • MT らしさ  標準の操作感と剥離したものは使いづらい • 動的処理に不向き  実行効率の悪いクエリ  現実には CGI が多い

Slide 62

Slide 62 text

経験と主観による ほどよいつきあい方 • どうしても必要?  やたら厳密なパスワード文字種指定(実体験) • 過剰な機能ではないか?  複雑な承認ワークフロー  詳細に分けられた権限管理  最終的に使われないやつ(実体験) • ほかの機能で代用できないか?

Slide 63

Slide 63 text

経験と主観による ほどよいつきあい方 • 汎用 CMS はあくまでも汎用  妥協も時には必要  無理にすべてで使おうとしない  ほかの製品  Rails や Cake 、 Play などフレームワークを利用した開発 • がんばって実装しない  工夫を凝らした実装は保守しづらい  がんばらなくてできるやり方を考える  それがプラグインならそれはあり

Slide 64

Slide 64 text

これ、できるかな? と思ったら・・・

Slide 65

Slide 65 text

タケユー・ウェブにご相談下さい • こんなことやりたい! • MT/PowerCMS を指定されたけどわからない・・・ • MT でどうするか? • MT を使うべきかそうでないか • MT 以外も、 Ruby on Rails だいぶできます

Slide 66

Slide 66 text

業務連絡

Slide 67

Slide 67 text

法人成りします • 2016 年 6 月~ タケユー・ウェブ株式会社 NEW

Slide 68

Slide 68 text

タケユー・ウェブ㈱にご相談下さい • こんなことやりたい! • MT/PowerCMS を指定されたけどわからない・・・ • MT でどうするか? • MT を使うべきかそうでないか • MT 以外も、 Ruby on Rails だいぶできます