オープンソースの画像生成AIをセットアップから使い方まで解説する『Stable Diffusion AI画像生成ガイドブック』(ソシム刊)発売中(→本のサポートページ

『クラスタを自宅で学ぼう!Lifekeeper for Linux超入門』が出ました

f:id:Imamura:20180417101936j:plain

クラスタを自宅で学ぼう!LifeKeeper for Linux超入門

クラスタを自宅で学ぼう!LifeKeeper for Linux超入門

LifeKeeperは多重化したサーバを監視し、一方が落ちたらもう一方に切り替えたりするソフトウェアである。その解説書『クラスタを自宅で学ぼう!Lifekeeper for Linux超入門』を編集した。今回は原稿の整理、図版作成、DTP、電子版の出力までひと通り担当している。

これは自分から企画した本ではなく、また商業出版でもない。自社の技術をアピールしたいというシステム開発の会社から依頼されて、一種の同人誌を作った。といっても中身は手を抜かずプロの仕事をしている。

紙の本は一般には販売せず、Amazonでは電子版を100円で買えるようになっている。

制作上のトピックとしては、Re:VIEWを採用したことが挙げられる。詳しくは以下の記事を。

ここで紹介した、xsltprocを使ってInDesign向けXML(idgxml)を整形する方法はうまくいかず、Re:VIEWで.reからidgxmlにした中身をいろいろ置換するためのスクリプトを自分で書くことになった。一部を抜粋。

#! /usr/local/bin/perl
foreach $infilename ( @ARGV ){
	$outfilename=$infilename.".xml"; #「元ファイル名.xml」というファイルに出力
	open(IN,"$infilename");
	open(OUT,"> $outfilename");
	while (<IN>) {
		$out = $out . $_; #いったん全部の行をまとめて入れる(改行を含む置換をしたいから)
	}
#以下、$outにいろいろ処理

#p要素、table要素の手前を改行
$out =~ s|<p |\n<p |g;
$out =~ s|<p>|\n<p>|g;
$out =~ s|<table>|\n<table>|g;

#リード部
$out =~ s|<\?dtp level="1" section="[^"]+"\?>\n<p>([^<]+)</p>|\n<lead>$1</lead>|g;

#<p aid:pstyle="noindent" noindent="1">〜</p>を<noindent>〜</noindent>に
$out =~ s|<p aid:pstyle="noindent" noindent="1">(.*?)</p>|<noindent>$1</noindent>|g;
$out =~ s|<p aid:pstyle="noindent" noindent='1'>(.*?)</p>|<noindent>$1</noindent>|g;

#見出し
$out =~ s|<title id="[^"]+" aid:pstyle="([^"]+)">([^<]+)</title><\?dtp level="\d" section="[^"]+"\?>|\n<$1>$2</$1>\n|g;
$out =~ s|<title aid:pstyle="([^"]+)">([^<]+)</title><\?dtp level="\d" section="[^"]+"\?>|\n<$1>$2</$1>\n|g;

#<h2>3.1 hoge</h2>などの数字に続く全角スペースをタブに置換
$out =~ s|<h2>(\d+\.\d+) ([^<]+</h2>)|<h2>\t$1\t$2|g;

#「<img><Image href="file://images/image.png" /></img>」の<img>タグを除去、最後に改行を追加
$out =~ s|<img>||g;
$out =~ s|</img>|\n|g;

#<ul>の手前に改行
$out =~ s|<ul>|\n<ul>|g;

#</li>に改行
$out =~ s|</li><li|</li>\n<li|g;

#文字参照を置換
#$out =~ s|&quot;|"|g;
#$out =~ s|&lt;|<|g;
#$out =~ s|&gt;|>|g;
#$out =~ s|&amp;|&|g;

#最後に連続する改行をまとめる
$out =~ s|\n\n|\n|g;

#出力して終了
print OUT $out;
close IN;
close OUT;
}

ここでのポイントがいくつか。

  1. 段落スタイル、文字スタイル、正規表現スタイルを駆使して、XMLを読み込んだらなるべく自動でスタイルが適用されているようにする
  2. InDesign上の段落スタイル名を「h2」「p」などにしておくと対応がわかりやすい

こうやって最初に頑張っておくと、DTP作業が格段に楽になる。

実際ここでは、見出し、本文、箇条書き、コマンド文字列([Enter]キーの表記の処理を含む)などのスタイル処理だけでなく、画像の配置も自動で行われるようになっている。

たとえばこんな感じ。これは正規表現スタイルの例。InDesignに読み込んだ段階で下のようになっている。

f:id:Imamura:20160423225206p:plain

昔々その昔、QuarkXPress(3.3J)ではテキストを読み込んだらちくちくと段落ごとにスタイルを適用し、必要なら段落内の特定の文字にフォントやサイズを指定し(文字スタイルはなかった)、画像を配置して大きさと位置を調整し、表はタブと罫線でいちいち描いていた。当時XPressタグは使っていなかったとはいえ、あの頃に比べたら夢のような便利さだ。

それから図版の作成では、サーバやパソコンを3Dソフトでモデリングした。そこからいろいろやって、Illustratorで編集できるベクターデータにしている。その説明は以下。

それでこんな感じのができました。

書籍版
f:id:Imamura:20180507010456j:plain
電子版(制作中のEPUB
f:id:Imamura:20180503175330p:plain

今回は、Re:VIEW形式の原稿からInDesign向けXMLEPUBを出力できるようになったり、図版用に3Dのパースを作れるようになったりと新しい技術を勉強できたのがとてもよかった。特にEPUBはHTMLやCSSについての知識が役に立つとわかり有意義だった。

LifeKeeperの本を読んで役に立つ人は世の中にあまり多くないと思いますがどうぞご利用ください。

(2018年5月7日更新)