2013年3月27日水曜日

Zabbix Sender に関する記事を書いてみました

前職、現職と統合監視ツールとして Zabbix にお世話になってるのですが、今回会社のエンジニアブログに Zabbix Sender の使い方に関する記事を書いてみましたのでご紹介です。

前置きとして Zabbix Sender と、似たような用途に使える UserParameter との違いをまとめてあり、「どっち使うのが良いのかな?」って時の参考になるかなと。具体例として Zabbix Sender による日次バックアップ処理監視用のテンプレートのサンプルも置いてあります。ご興味あれば是非ご覧ください。

2013年3月10日日曜日

Markdown 記法を他の軽量マークアップ言語と見比べてみた

以前に書いた Markdown の良さについて考えてみた の中で

  • 整形済みテキスト (pre)、リスト (ul,ol,li)、強調表現 (em)、コード (code) などの表現に関して Markdown は少ない文字列でスッキリ書ける ようになっており、RD、Textile、Pukiwiki、Trac Wiki に比べてプレーンテキストとしては読みやすいです。

と述べましたが、せっかく調べたので各種記法の具体例を列挙し、個人的な感想をば。

目次

記法に関して参考にしたサイト

Markdown

# Title

## Subtitle

- list1
    - list2

      リスト内にパラグラフを記載する場合はこんな感じ

    - list3 (行を空けて記載可能)

番号付きリストは以下のように記載

1. numlist1
2. numlist2

*強調表現はこんな感じ* [リンクはこのように](http://moya-notes.blogspot.jp/)

    整形済みテキストは半角空白 4 つ分のインデントで記載します。
    #!/bin/perl
    print ”Hello World!!¥n”;

HTML を使いたい場合は <sup>上付き文字はこんな感じ</sup> で普通に HTML を書いてしまって OK

テーブル書きたい時も普通に HTML で

<table border=1 align="center">
  <tr>
    <th>言語</th><th>特徴</th>
  </tr>
  <tr>
    <td>Markdown</td><td>プレーンテキスト読みやすい他</td>
  </tr>
  <tr>
    <td> : </td><td> : </td>
  </tr>
</table>
  • 感想
    • 強調表現やリンクに関して 少ない文字数 (たいてい1文字) の記号で括って表現 できるようになってることもあり、プレーンテキストとしても見やすいですね。
    • ざざっとメモを書いてるとリスト内にパラグラフ書きたいことが多いのですが、Markdown はそこら辺かなり自由に書いても Syntax Error にならないので楽です。空行を入れて OK なのもプレーンテキストとしての見やすさ向上に寄与してる気がします。
    • メモを元に記事やドキュメントを書く際、フォーマットを直したりするのを結構面倒に感じてた身としては、Markdown を使うと 1) メモの段階では Markdown 記法だけで十分、 2) 記事やドキュメントにする際、必要であれば HTML をそのまま埋め込めば良い、ができるのは良いですね。オーバーヘッド的作業が減るためかなり快適です。

RD (Ruby)

=begin
= Title

== Subtitle

* list1
  * list2

    リスト内にパラグラフを記載する場合はこんな感じ

  * list3 (行を空けて記載可能)

番号付きリストは以下のように記載

(1) numlist1
(2) numlist2

((*強調表現はこんな感じ*)) ((<リンクはこのように|URL:http://moya-notes.blogspot.jp/>))

 整形済みテキストは半角空白 1 つ分のインデントで記載します。
 #!/bin/perl
 print ”Hello World!!¥n”;
=end

=begin html
<p>
HTML を書く場合は begin, end で別途括り直す必要があります。
これで括られた部分は純粋に HTML の表記法が有効になります。
</p>

<table border=1 align="center">
  <tr>
    <th>言語</th><th>特徴</th>
  </tr>
  <tr>
    <td>Markdown</td><td>プレーンテキスト読みやすい他</td>
  </tr>
  <tr>
    <td> : </td><td> : </td>
  </tr>
</table>
=end
  • 感想
    • HTML に比べればかなりシンプルには書けるのですが、強調表現にせよリンクにせよ Markdown に比べると「もさっ」とする印象です。
    • Markdown 同様、リストの項目にパラグラフを書けたり、空行を入れられたりする点は良いですね。
    • HTML を表現できなくはないのですが、 =begin, =end という大枠の部分で再度くくり直す必要があるなど、Markdown に比べるとシームレスさでは劣るかなと。

Textile (Redmine)

h1. Title

h2. Subtitle

* list1
** list2

   リスト以下にパラグラフの記載も可能

   改行も OK
** list3 (続き物のリストにするなら直前の行との間に空行は入れちゃダメ)

番号付きリストは以下のように記載

# numlist1
# numlist2

*強調表現はこんな感じ* "リンクはこのように":http://moya-notes.blogspot.jp/

<pre>
整形済みテキストは pre タグで括ります。
#!/bin/perl
print ”Hello World!!¥n”;
</pre>

HTML の直書きは不可 ("<" や ">" は自動的に "&amp;lt;", "&amp;gt;" に変換され、HTML タグとは認識されない)

テーブル書きたい時は textile 記法で記載。

|_.言語|_.特徴|
|Markdown|プレーンテキストが読みやすい他|
|:|:|
  • 感想
    • 本来は Redmine におけるプロジェクト管理のためのチケットやドキュエント書きが目的のもので、チケット・ドキュメント・Wikiへのリンクが簡単に書ける点が特徴なのですが、ここでは独立したメモやドキュメント書きに使う事を前提にします。
    • Markdown とは異なりますが、多くの表現が 少ない文字数 (たいてい1文字) の記号で括ること で実現できます。スッキリしてて良いです。
    • テーブルに関しても "|" で区切るシンプルな書き方ができます。プレーンテキストとしても見やすいですね。
    • 基本的にシンプルで良いだけに、見出しの表記が hX. だったり整形済みテキストに <pre> を使ったり (原則 HTML タグは使えないのに) という点がメモとして見た際には違和感を感じますね。
    • リスト内のパラグラフの記載時、空行を入れていい場所と悪い場所があるのは気になってます。かなりマイナーなケチですが、以前 Redmine を使ってた際に調整が結構面倒だったので…。

Pukiwiki

*Title

**Subtitle

- list1
-- list2 (リスト内にパラグラフの記載は不可)
-- list3 (続き物のリストにするなら直前の行との間に空行は入れられない)

番号付きリストは以下のように記載

+ numlist1
+ numlist2

''強調表現はこんな感じ'' [[リンクはこのように:http://moya-notes.blogspot.jp/]]

 整形済みテキストは半角空白 1 文字分インデントします。
 #!/bin/perl
 print ”Hello World!!\n”;

HTML の直書きは不可 ("<" や ">" は自動的に "&amp;lt;", "&amp;gt;" に変換され、HTML タグとは認識されない)

テーブル書きたい時は Pukiwiki 記法で記載。

|~言語|~特徴|
|Markdown|プレーンテキストが読みやすい他|
|:|:|
  • 感想
    • Wiki を利用する際のメリットでもある、Wiki Name でのシンプルなリンク記述についてはここでは割愛します。
    • もちろん HTML 書くよりは全然いいのですが、Markdown や Textile と比べると強調表現やリンクの表現で「もさっ」と感がありますかね。
    • テーブルに関しては Textile 同様いいですね。
    • リスト内にパラグラフの記載ができなかったり空行を入れられないのは個人的にはデメリット大きいです。こういうふうに書きたいこと多くて、書けないと結構なストレス…。

Trac Wiki

= Title =

== Subtitle ==

 * list1 (半角空白 1 文字以上のインデントが必要)
   * list2 (リスト内にパラグラフの記載は不可)
   * list3 (続き物のリストにするなら直前の行との間に空行は入れられない)

番号付きリストは以下のように記載

 1. numlist1 (半角空白 1 文字以上のインデントが必要)
 2. numlist2

'''強調表現はこんな感じ''' [http://moya-notes.blogspot.jp/ リンクはこのように]

{{{
整形済みテキストは {{{ と }}} で括ります。
#!/bin/perl
print ”Hello World!!\n”;
}}}

HTML の直書きは不可 ("<" や ">" は自動的に "&amp;lt;", "&amp;gt;" に変換され、HTML タグとは認識されない)

テーブル書きたい時は Trac Wiki 記法で記載。

||言語||特徴||
||Markdown||プレーンテキストが読みやすい他||
||:||:||
  • 感想
    • Trac Wiki を利用する際のメリットである、チケットやレポートへのシンプルなリンク記述などについてはここでは割愛します。
    • Markdown や Textile と比べると強調表現やリンクの表現で「もさっ」と感が強いですね。
      • テーブルに関しても、 | で良さそうなんですが || なんですね…。
    • リスト内にパラグラフの記載ができない点、空行が入れられない点は Pukiwiki 同様に個人的にはデメリット大きいです。
    • リストの記載時に半角空白 1 文字以上インデントが必要といった微妙な縛りがある点も、メモ書きに使う上では嫌かも…。

まとめ

以上 Markdown を中心に据えつつ、いくつかの軽量マークアップ言語の具体例の紹介とその感想でした。メモ書きとしてはやっぱり Markdown は見やすくて/書きやすくて良いな、が私的結論ですね。テーブルの記法ぐらいはあっていいのかもと思う反面、あっても実際に使うかどうかは微妙です(編集が手間なのでリストで書いちゃう気もします)。

なお、そもそも Textile、Pukiwiki、Trac Wiki に関しては個別的なメモをとるためのものじゃないよね、というツッコミはその通りだと思いますし、私の個人的な利用を想定した比較であることと、選抜した言語も私がこれまで触ったことがあるもののみってのは公平さに欠けてます。ですが、実際に具体例を上げて「メモ書きとしてはどの言語が良さ気よ?」って記事って意外に少ないようなので、そういう要望がある方には多少のお役に立てるのかなと書いてみました。

本記事は Markdown の記法にフォーカスを当てたものですが、他に以下の点が気になる方は以前の記事 Markdown の良さについて考えてみた を参照下さい。

  • Markdown って広く利用されてる?
  • HTML への変換ツールはどこで提供されてる?

2013年3月2日土曜日

Markdown の良さについて考えてみた

先日「HTML に変換できる軽量マークアップ言語で良さ気なの知ってる?」的な質問されたので Markdown を勧めようと思ったのだけど、どういった点でオススメすればいいのか頭の中でまとまってなかったのでまとめついでにブログに書いてみようかと。

ちなみに私自身の Markdown 歴は半年ほど。GitHub を使い始めたタイミングで Markdown 記法を覚えました。使ってみると快適だったので、今やテキストはほとんど Markdown で書いてます。

追記: 実際に Markdown 他いくつかの軽量マークアップ言語でメモを書くとどんな感じになるか、別記事 Markdown 記法を他の軽量マークアップ言語と見比べてみた にまとめました。

Markdown ってどんな軽量マークアップ言語?

Markdown についてはググればいろいろ出てくるので詳しい事はそちらに見てもらう事として、個人的な印象をまとめると以下の通り。

  • 結構広く利用されてるっぽい
  • 記法がシンプルでプレーンテキストとしても読みやすい
  • HTML 文書に変換する Perl スクリプトを利用可能

それぞれもうちょっと詳しく説明してみます。

どんなところで使われてる?

結構あちこちで採用されてますし、専用エディタも存在していることから、軽量マークアップ言語としては結構普及しているものなのかなという印象です。

採用例については Markdown - ウィキペディアの利用例の項目 が詳しいです。

記法の特徴と雑感

これまで軽量マークアップ言語としては

を使ってきた経験がありますが、それらと比較して Markdown の良いところは以下かなと思います。ただ「読みやすさ」などは個人の趣味や慣れに依存する部分も大きいため、その点はご留意のほどを。

  • 記法がシンプルでプレーンテキストとしても読みやすい
    • プレーンテキストの状態での読みやすさをかなり意識して作っている印象で、記法もシンプルになってます。
    • 整形済みテキスト (pre)、リスト (ul,ol,li)、強調表現 (em)、コード (code) などの表現に関して Markdown は少ない文字列でスッキリ書けるようになっており、RD、Textile、Pukiwiki、Trac Wiki に比べてプレーンテキストとしては読みやすいです。
    • 別記事 Markdown 記法を他の軽量マークアップ言語と見比べてみた で実際に例を挙げて比較してます。
  • HTML タグ自体をそのまま埋める事ができる
    • Markdown は記法がシンプルな分、table などのタグについては独自に表現する記法を持ちません。その代わり HTML タグを挿入すれば、HTML へ変換した際にそのまま反映されます(例: <b>&lt;b&gt に変換しません)。
      • <b>&lt;b&gt のようにしたい場合は code タグ表現にすればよく、Markdown においてはバックスラッシュで括る事で表現できます。
    • このようなルールとなっている理由は Markdown: Syntax - Inline HTML (日本語訳) で述べられています。以下に一部抜粋します。割り切りが良くて初めて読んだ時は目からウロコでした。
      • MarkdownはHTMLタグの代わりにならないし、HTMLタグで表現できるレベルにも達してない
      • Markdownのルールのコンセプトは原文のままで読みやすく、書きやすく、編集できること
      • HTMLタグルールはホームページを作成するためのルール、Markdownは書きやすくするためのルール
    • どうしたって軽量マークアップ言語で HTML を全部表現するのは無理なので、プレーンテキストとして読みやすくできる範囲では独自の記法を持つけど、複雑な表現について独自記法で無理はせずに「HTML タグをそのまま埋め込めばOK」にしているようです。これにより、Markdown 記法の複雑化を回避しながら、HTML の機能もフル活用できるようになっているわけですね。
    • 上に挙げた他の言語だと、そもそも HTML タグをそのまま使用できないか、もしくはブロック単位で「この範囲内は HTML で書く」と明示的に指定するマーカを記載する必要があります。
  • もちろん一般的な(?)軽量マークアップ言語としての基本的な記法は揃ってる
    • 見出し, 引用, リスト, コード, リンク, 強調, 画像といった基本的な記法はちゃんとあり、個人的には必要十分です。

個人的に不満なところは無いですが、前述の通り tableを表現する独自の記法はない ので、 table を表現したければ直に HTML を書く必要があります。他の軽量マークアップ言語で table を表現する記法を多用している方はちょっとなぁ、かもしれません。また、HTML タグをそのまま埋めれる事をメリットとして挙げましたが、逆から見ると HTML タグについての知識が必要 とも言えます。これも人によってはデメリットになるかもしれませんね。

文法の詳細について知りたい方はこちらをどうぞ。

HTML への変換ツール

HTML への変換ツールは Markdown の本家サイトで配布されています。

1500 行程度の Perl スクリプトで特殊なライブラリに依存してもいないようなので、Perl が動く環境であればスタンドアロンで動くようです。私の手元の環境 (Mac OS X および Windows XP + DWIM Perl) でも簡単に動きました。使い方は以下の通り。

$ perl markdown.pl [Markdown書式のテキスト]

標準出力に HTML に変換されたテキストが表示されます。ただし、<body><head> タグは挿入されないので、そこは利用者の方で適宜用意してねというスタイルのようです。

私は Emacs で Markdown テキストを編集しているのですが、Emacs の markdown-mode を利用することで

  1. Emacs の markdown-mode が提供する markdown-export 関数を利用
  2. markdown-export 関数により、<head><body>タグを挿入した HTML を出力

するようにしています。具体的な設定を知りたい方は 以前の Emacs 記事 を参照下さい。

ちなみにこの記事も元は Markdown のテキストです。上記 Emacs で HTML に変換した後、一部のタグを sed で置換して後、Blogger の編集画面に貼り付けてます。前述の通り Markdown は HTML もそのまま貼り付けられるので、画像関連のタグについても一旦 Blogger 側で生成した後、その部分を元の Markdown のテキストファイルに戻してます。こうすることでブログの文章の管理は手元の Markdown のテキストファイルに一元化できるので助かってます。

まとめ

以上、自分なりに Markdown のオススメなところを簡単にまとめてみました。何かしらの文章を書くことを生業や趣味にしている人にとって、気持よく文章を書き込める/読める環境は大切ですよね。文章の記法も合うものが見つかると結構快適になれるのかなと思ってます。たかがメモ書き、されどメモ書きかなと思いますので、皆さんも是非自分に合う軽量マークアップ言語を探してみてはいかがでしょうか?