個人出版した電子書籍の表紙画像をプログラムで生成してみた

f:id:karaage:20210702093543p:plain:w480

個人出版した本の表紙をどう作るか問題

 先日KDP(Kindle Direct Publishing)で「ゼロから始める情報発信」という書籍を個人出版しました。

 書籍を個人出版したとき、何に一番悩んだかというと装丁ですね。電子書籍の場合は、ずばり「表紙画像」そのものです。書籍の表紙は、顔のようなものですからね。いくつかKindle個人出版関係の書籍も読みましたが、読まれる数に直結するのが表紙のようです。

 表紙の重要性は、出版社から出る商業誌でも同じです。出版社から出す場合は、出版社が、それはもう力を入れて表紙を作ってくれるので、作者は悩む必要はありません(作者が表紙まで意図的にコントロールしたい場合は別)。前に、出版社から出した書籍「AI自作教室」の装丁に関しては、詳しくは以下ブログ記事参照ください(なんとあの「FACTFULLNESS」の装丁をデザインした方がデザインしてくださっています)。

 ただ、当然個人出版の場合は、出版社におまかせとはいかず、自分で用意する必要があります。調査したところ個人出版での表紙画像の作成方法は、大きく「クラウドソーシングに依頼するよ」派と「アプリやWebサービスで自分で作るよ」派に分かれるようです。

 自分は、どちらもピンと来なかったので、第三の選択肢「自分でプログラム組んで生成するよ」派になってみることにしました。どうせなら、自分で工夫して作ったほうが楽しいですしね。

表紙画像生成プログラムのアルゴリズム

 書籍のアルゴリズムですが、出版社から献本いただいた「日経ソフトウェア2021年7月号」を参考にすることにしました。

 具体的には、P.142〜の『プログラミングで理解する「数学」』という特集記事に掲載されていたアルゴリズムです。

 書籍では「ランダムウォーク」的アルゴリズムを用いた線香花火のシミュレーションプログラムとして紹介されています。

 概要を説明すると、空間を格子状に区切って、格子の区切りに一定のスレッショルドを設けます。そのあと、ランダムな位置(書籍では中央に固定)から、上下左右で、決められたスレッショルドより格子の区切りが小さかったら進んでいくということを再帰的に繰り返すプログラムとなります。

 全然わかりませんね(笑)イメージ的には「抜け道が色々ある巨大迷路に入れられた人がさまよっている経路を、上から見た図」と書くと伝わりやすいでしょうか。以下そのイメージ図です。

f:id:karaage:20210702095430j:plain:w640

 ランダムな点(上の図だと、赤・青・緑・黄の1のセル)からはじまり、上下左右に、迷路の抜け道を探してうろうろして、いけるところがなくなったら終了ということです。

 このアルゴリズムの振る舞いが、書籍の内容にある「情報発信による、情報の拡散」「情報発信により生まれる、人と人とのつながり」のイメージに近いなと思い、表紙に使うことにしてみました。ここまで読めばもう分かりますね、こじつけです(笑)。

 書籍では、ProcessingのPythonモードのコードが掲載されていたのですが、ネットでコードの公開もなかったこと、ライセンスが不明だったことと、個人的に変更したいなと思う点がいくつかあったことから、自分で書籍のアルゴリズムとコードを参考に1からPythonとPyxelで実装し直すことにしました。Pyxelを使ったジェネラティブアートに関しては、以下記事参照ください。

 コードは、以下リポジトリの sparkler.pyというファイルです。

 使い方はコードを参考にしてみてください。こちらを使うと、以下のようなデザインの画像が自動で生成されます。パターンは実行するたびに変わりますし、格子の壁の抜けやすさ(スレッショルド)を調整することで、パターンが大きく変わります。

f:id:karaage:20210702093543p:plain:w480

まとめ

 個人出版した電子書籍の表紙画像を、プログラミングで生成したという話でした。表紙のデザイン、クラウドソーシングも良いかもしれませんが、せっかく書籍を作るなら、表紙も自分で工夫して作ってみるのも面白いのではないかなと思います。

 プログラムで作った表紙が目印の書籍「ゼロから始める情報発信」は好評発売中です。表紙と同様、中身も力を入れていますので、よろしければ購入検討してみてください。

関連記事