ブログ

ryuzeeによるブログ記事。不定期更新

Middlemanで使うと便利なプラグインの一覧

しばらく前に僕のサイトをWordpressによる動的生成からMiddlemanによる静的生成に変えたのですが、その際に調べたMiddlemanの便利なプラグインについて紹介します。

middleman-blog

いわずとしれたMiddlemanにブログ機能を追加するプラグイン。詳細はこちらを参照。

詳細はMiddlemanのサイトに詳しく載っているのでそちらを参照すればすぐにブログを作れると思います。 僕のサイトの場合は、もともと使っていたWordpressとURLを同じにして移行したので、ページのpermalinkにカスタム属性である{id}を使っている点が通常の使い方と異なる点です。

activate :blog do |blog|
  blog.prefix = "contents/blog"
  blog.permalink = "{id}"
  blog.taglink = "tags/{tag}.html"
  blog.tag_template = "tag.html"
  blog.year_template = "calendar.html"
  blog.paginate = true
  blog.per_page = 10
  blog.page_link = "page/{num}"
end

middleman-livereload

詳細はこちら。 Middlemanでは、serverの機能が内蔵されており、

bundle exec middleman server

とすると、http://localhost:4567にアクセスすることで、ビルドせずとも実際のコンテンツを確認することが可能です。 ここで、middleman-livereloadを使うと、テンプレートやコンテンツを修正した際に、自動で変更が読み込まれて反映されるため、serverの再起動を行う必要がありません。 なにはともあれインストールしておいて損の無いプラグインの1つでしょう。

middleman-syntax

詳細はこちら。 ソースコードをコンテンツに入れる場合に、言語に応じてキーワードがハイライトされていた方がやはり見やすいはずです。以下のように記述することでハイライトできます。

def my_cool_method(message)
  puts message
end

middleman-s3_sync

詳細はこちら

Middlemanの最大の利点というか利用の動機は静的ファイルに出力できる点です。 静的ということはAmazon S3のWebサイトホスティング機能を使うと、非常に安価でサーバをたてることなくWebサイトを運営できます。

設定ファイル(config.rb)には以下のような記述を追加します。 なお、Amazon S3を操作する際には、AWSのアクセスキーとシークレットキーを利用する必要がありますが、 端末の環境変数で、AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYが設定されていれば自動的にそれを読むようになっていいます。 それを使わない場合は、aws_access_key_idaws_secret_access_keyを以下の中で指定してください。ただし間違ってもインターネットに公開されているレポジトリにそのまま登録してしまわないように注意が必要です。

activate :s3_sync do |s3_sync|
  s3_sync.bucket = 'static.ryuzee.com'
  s3_sync.region = 'ap-northeast-1'
  s3_sync.delete = false
  s3_sync.after_build = false
  s3_sync.prefer_gzip = true
  s3_sync.path_style = true
  s3_sync.reduced_redundancy_storage = false
  s3_sync.acl = 'public-read'
  s3_sync.encryption = false
end

このプラグインでは差分更新の機能を備えている点もGoodです。

デプロイする際は以下のようにします。

bundle exec middleman s3_sync

middleman-deploy

詳細はこちら。 ビルド結果をサーバにデプロイすることができるプラグイン。Rsync、GitHub pages、FTP、SFTPに対応しています。 また複数の環境を定義することができるので、ステージング環境と本番環境を定義して、同じ手順でデプロイできます。

設定ファイル(config.rb)には以下のような記述を追加します。

activate :deploy do |deploy|
  deploy.method = :rsync
  deploy.host   = 'sushi.ryuzee.com'
  deploy.path   = '/var/www/html2'
  deploy.user   = 'itamae'
  deploy.clean  = false
  deploy.flags = '-rlOtuz --no-p --del'
  deploy.port  = 22
end

デプロイする際は、単純に以下のように実行します。

bundle exec middleman deploy

middleman-google-analytics

詳細はこちら。 アクセスログの解析にGoogle Analyticsを使うのは定番で、もちろんテンプレートにベタに記入しておいて全く問題ありませんが、プラグインを使えばもっと簡単です。

設定ファイル(config.rb)には以下のような記述を追加します。

activate :google_analytics do |ga|
  ga.tracking_id = 'UA-3012324-1'
end

また、レイアウトファイルに、以下を追加します。

<%= google_analytics_tag %>

これによってビルドした際に自動的に以下のようなトラッキングコードに置き換わります。

<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(["_setAccount", "UA-3012324-1"]);
  _gaq.push(["_trackPageview"]);
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>

middleman-search_engine_sitemap

詳細はこちら。 検索エンジン用にsitemap.xmlという名前でコンテンツのリストや重要度を用意しておくことで、SEO対策を行えますが、このプラグインを使うことで、sitemap.xmlをビルドプロセスの中で自動で生成できます。

設定ファイル(config.rb)には以下のような記述を追加します。

set :url_root, 'http://sushi.ryuzee.com'
activate :search_engine_sitemap

これでビルドすると、以下のようなbuild/sitemap.xmlが生成されます。もちろん重要度や更新頻度は自分で設定できます。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://sushi.ryuzee.com/contents/blog/7030</loc>
    <lastmod>2014-12-31T15:36:19+09:00</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>http://sushi.ryuzee.com/contents/blog/7029</loc>
    <lastmod>2014-12-30T09:07:02+09:00</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
</urlset>

middleman-blog-similar

詳細はこちら。ブログサイトを構築する場合に、その記事に関係する他の記事の一覧を出したいというニーズがしばしばありますが、このプラグインを使うことで簡単に実現できます。

(ただし、コンテンツを分かち書きなどして関連性の高いものを特定するようになっているので、プレビューやビルドに時間がかかるようになることは注意しておくと良いでしょう)

たとえば、mecabを使う場合、あらかじめマシンにMecabと辞書がインストールされている必要があります。Ubuntuの場合だと以下のようにすることでインストールされます。

sudo apt-get install mecab mecab-ipadic-utf8

あとはテンプレートの中に以下のような記述を入れます。この例では関連度の高い5つの記事へのリンクを貼るようになっています。

<% if  current_article %>
  <ul>
  <% current_article.similar_articles.first(5).each  do|article| %>
    <li><%= link_to article.title, article.url %></li>
  <% end  %>
  </ul>
<% end  %>

middleman-xmlvalidator

詳細はこちら。非常に単機能ですが、Middlemanが生成したXML形式のファイルがXMLとして妥当かどうかを検証してくれます。たくさんのXMLを生成するような用途でMiddlemanを使っている場合には使うと良いかもしれません。

middleman-minify-html

詳細はこちら。ビルドの際にHTMLなどに含まれている余計なスペースを除去してくれます。 これによって応答サイズを小さくできるので大規模サイトの場合は効果があると思います。

設定ファイル(config.rb)には以下のような記述を追加します。 さまざまな要素を取り除けますが、やり過ぎるとコンテンツ自身が崩れる可能性もあるため、ほどほどの設定にしておくと良いでしょう。

activate :minify_html do |html|
  html.remove_multi_spaces        = true   # Remove multiple spaces
  html.remove_comments            = false   # Remove comments
  html.remove_intertag_spaces     = false  # Remove inter-tag spaces
  html.remove_quotes              = false   # Remove quotes
  html.simple_doctype             = false  # Use simple doctype
  html.remove_script_attributes   = false   # Remove script attributes
  html.remove_style_attributes    = false   # Remove style attributes
  html.remove_link_attributes     = false   # Remove link attributes
  html.remove_form_attributes     = false  # Remove form attributes
  html.remove_input_attributes    = false   # Remove input attributes
  html.remove_javascript_protocol = false   # Remove JS protocol
  html.remove_http_protocol       = false   # Remove HTTP protocol
  html.remove_https_protocol      = false  # Remove HTTPS protocol
  html.preserve_line_breaks       = false  # Preserve line breaks
  html.simple_boolean_attributes  = true   # Use simple boolean attributes
end

それでは。

アジャイルコーチングやトレーニングを提供しています

株式会社アトラクタでは、アジャイル開発に取り組むチーム向けのコーチングや、認定スクラムマスター研修などの各種トレーニングを提供しています。ぜひお気軽にご相談ください。

詳細はこちら
  • スクラム実践者が知るべき97のこと
  • 著者/訳者:Gunther Verheyen / 吉羽龍太郎 原田騎郎 永瀬美穂
  • 出版社:オライリージャパン(2021-03-23)
  • 定価:¥ 2,640
  • スクラムはアジャイル開発のフレームワークですが、その実装は組織やチームのレベルに応じてさまざまです。本書はスクラムの実践において、さまざまな課題に対処してきた実践者が自らの経験や考え方を語るエッセイ集です。日本語書き下ろしコラムを追加で10本収録
  • プロダクトマネジメント ―ビルドトラップを避け顧客に価値を届ける
  • 著者/訳者:Melissa Perri / 吉羽龍太郎
  • 出版社:オライリージャパン(2020-10-26)
  • 定価:¥ 2,640
  • プロダクト開発を作った機能の数やベロシティなどのアウトプットで計測すると、ビルドトラップと呼ばれる失敗に繋がります。本書ではいかにしてビルドトラップを避けて顧客に価値を届けるかを解説しています。
  • SCRUM BOOT CAMP THE BOOK 【増補改訂版】
  • 著者/訳者:西村直人 永瀬美穂 吉羽龍太郎
  • 出版社:翔泳社(2020-05-20)
  • 定価:¥ 2,640
  • スクラム初心者に向けて基本的な考え方の解説から始まり、プロジェクトでの実際の進め方やよく起こる問題への対応法まで幅広く解説。マンガと文章のセットでスクラムを短期間で理解できます。スクラムの概要を正しく理解したい人、もう一度おさらいしたい人にオススメ。
  • みんなでアジャイル ―変化に対応できる顧客中心組織のつくりかた
  • 著者/訳者:Matt LeMay / 吉羽龍太郎、永瀬美穂、原田騎郎、有野雅士
  • 出版社:オライリージャパン(2020-3-19)
  • 定価:¥ 2,640
  • アジャイルで本当の意味での成果を出すには、開発チームだけでアジャイルに取り組むのではなく、組織全体がアジャイルになる必要があります。本書にはどうやってそれを実現するかのヒントが満載です
  • レガシーコードからの脱却 ―ソフトウェアの寿命を延ばし価値を高める9つのプラクティス
  • 著者/訳者:David Scott Bernstein / 吉羽龍太郎、永瀬美穂、原田騎郎、有野雅士
  • 出版社:オライリージャパン( 2019-9-18 )
  • 定価:¥ 3,132
  • レガシーコードになってから慌てるのではなく、日々レガシーコードを作らないようにするにはどうするか。その観点で、主にエクストリームプログラミングに由来する9つのプラクティスとその背後にある原則をわかりやすく説明しています。
  • Effective DevOps ―4本柱による持続可能な組織文化の育て方
  • 著者/訳者:Jennifer Davis、Ryn Daniels / 吉羽 龍太郎、長尾高弘
  • 出版社:オライリージャパン( 2018-3-24 )
  • 定価:¥ 3,888
  • 主にDevOpsの文化的な事柄に着目し、異なるゴールを持つチームが親和性を高め、矛盾する目標のバランスを取りながら最大限の力を発揮する方法を解説します
  • ジョイ・インク 役職も部署もない全員主役のマネジメント
  • 著者/訳者:リチャード・シェリダン / 原田騎郎, 安井力, 吉羽龍太郎, 永瀬美穂, 川口恭伸
  • 出版社:翔泳社( 2016-12-20 )
  • 定価:¥ 1,944
  • 米国で何度も働きやすい職場として表彰を受けているメンローの創業者かつCEOであるリチャード・シェリダン氏が、職場に喜びをもたらす知恵や経営手法、より良い製品の作り方などを惜しみなく紹介しています
  • アジャイルコーチの道具箱 – 見える化の実例集
  • 著者/訳者:Jimmy Janlén / 原田騎郎, 吉羽龍太郎, 川口恭伸, 高江洲睦, 佐藤竜也
  • 出版社:Leanpub( 2016-04-12 )
  • 定価:$14.99
  • この本は、チームの協調とコミュニケーションを改善したり、行動を変えるための見える化の実例を集めたものです。96個(+2)の見える化の方法をそれぞれ1ページでイラストとともに解説しています。アジャイル開発かどうかに関係なくすぐに使えるカタログ集です
  • カンバン仕事術 ―チームではじめる見える化と改善
  • 著者/訳者:原田騎郎 安井力 吉羽龍太郎 角征典 高木正弘
  • 出版社:オライリージャパン( 2016-03-25 )
  • 定価:¥ 2,138
  • チームの仕事や課題を見える化する手法「カンバン」について、その導入から実践までを図とともにわかりやすく解説した書籍。カンバンの原則などの入門的な事柄から、サービスクラス、プロセスの改善など、一歩進んだ応用的な話題までを網羅的に解説します。
  • Software in 30 Days スクラムによるアジャイルな組織変革“成功"ガイド
  • 著者/訳者:Ken Schwaber、Jeff Sutherland著、角征典、吉羽龍太郎、原田騎郎、川口恭伸訳
  • 出版社:アスキー・メディアワークス( 2013-03-08 )
  • 定価:¥ 1,680
  • スクラムの父であるジェフ・サザーランドとケン・シュエイバーによる著者の日本語版。ビジネス層、マネジメント層向けにソフトウェア開発プロセス変革の必要性やアジャイル型開発プロセスの優位性について説明
  • How to Change the World 〜チェンジ・マネジメント3.0〜
  • 著者/訳者:Jurgen Appelo, 前川哲次(翻訳), 川口恭伸(翻訳), 吉羽龍太郎(翻訳)
  • 出版社:達人出版会
  • 定価:500円
  • どうすれば自分たちの組織を変えられるだろう?それには、組織に変革を起こすチェンジ・マネジメントを学習することだ。アジャイルな組織でのマネージャーの役割を説いた『Management 3.0』の著者がコンパクトにまとめた変化のためのガイドブック