このエントリーをはてなブックマークに追加

WEB+DB PRESS vol88にMQTTの記事を書きました

2015年8月22日発売のWEB+DB PRESS vol88速習 MQTTというタイトルでMQTTに関する記事を書かせていただきました。

内容は以下の通りです。

  • MQTTとは
  • MQTTの利用場面
  • MQTTの特長
  • その他のプロトコルとの比較
  • MQTTを使ってみる

速習、というタイトルの通り、利用場面や特長の説明がメインの、MQTTという聞きなれないプロトコルの内容を一通り説明する内容になっています。一応MQTTを使ってみる、という箇所でMQTTを使うアプリをpythonで実装してみていますが、eclipse pahoのおかげもあり、非常に短い行で実装が完了しており、分量は正直あんまりです。

最近すっかりバズワード化してしまい、「MQTTはIoT時代の主役となるプロトコルだ」「MQTTで全部できる」というような言説をたまに目にするようになってきました。今回の内容は、MQTTの実情をなるべく正確に伝えることを目指しました。MQTTの使い道は限られたものであり、もちろん完全に適した利用形態もありますが、他のプロトコルを使う方がいい場合も多々あると考えています。その辺りを過不足なく伝えられたらと思います。

Sphinx InDesign Builder

さて、本題です。

今回、reStructuredText(rst)形式で執筆しました。しかし、rst形式ではいろいろそのあとの作業が発生することは分かっていたので、Sphinx Indesign BuilderというSpinx拡張を作成しました。

% pip install sphinxcontrib_indesignbuilder

でインストールした後、conf.pyにて

extensions = ['sphinxcontrib.indesignbuilder']

と書けば準備は完了です。

あとは、

% sphinx-build -b singlewebdb -d build/doctrees source build/singlewebdb

とすれば、build/singlewebdbにWEB+DB PRESSで使用するためのInDesignのXMLファイルが作成されます。singleと付いているのは一つのxmlファイルにまとめる場合で、一つにまとめないことも可能です。WEB+DB PRESSの編集さんはこのXMLをInDesignに流しこみ、図などのフロート要素を配置すればPDFが作成できる状態になります。md2inaoを使うのとほぼ変わらない手間となったとのことです。(ただし、md2inaoで実現できる機能のうち、現時点では今回の原稿に必要であった機能のみ実装している点に注意)

実際には、フロート要素の配置には人力が必要なため、rst形式ファイルからPDFまで一貫したフローにはなっていません。そのためにはInDesgin力がかなりいろいろ必要そうです。

なお、webdbと付いているように、今回作成したのはWEB+DB PRESS用のsphinx拡張です。他の本や雑誌ではスタイル命名規則が異なるため、そのままでは適用できません。しかし、今回作成した拡張を参考にすれば、他のスタイル命名規則に沿った別の拡張を実装するのはかなり簡単だと思います。もしかしたら、ある設定ファイルを読みこませればそれだけでそのスタイル命名規則に沿ったXMLを書き出すことが出来るかもしれません。そうなれば実装は必要無くなります。

reStructuredText(rst)形式は、そのままの形式でも可読性が高いという点も重要ですが、拡張ポイントが決まっていることによる高い拡張性が魅力です。例えば「この文章のこの部分は特別にこういう表現にしたい」という要望に対しても柔軟に応えられます。これにより、表現力は他の記述形式に比べて非常に高くなっています。

まとめ

  • WEB+DB PRESS vol88にMQTTの記事を書きました
    • MQTTのできること、できないことを一通り解説する内容です
  • Sphinx InDesign BuilderというSphinx拡張を実装しました
    • reStructuredText(rst)形式 で脱稿しました

WEB+DB PRESS vol88はモバイル開発やLINEの開発、Elixirについての記事も載っていますのでぜひ買ってください。