今日も微速転進

ここではないどこかへ

ラズパイ関連本の比較(2018/09)

Raspberry Pi(以下、ラズパイ)の関連書籍の紹介です。 数が多いので2017年以降のものを中心にレビューします。

おすすめは『みんなのRaspberry Pi入門 第4版』。電子工作をがっつりやりたいならブルーバックスの本。

前置き

ラズパイ関連書において重要なのは、Raspberry Pi固有のノウハウ、Linuxの基本操作、電子工作、プログラミング(ほぼPython)の3つのどれに重点をおくか、その配分。またはラズパイを何に使うか(用途)。

ページ数という制約があるのでどこかでトレードオフが発生します。そのため想定読者からマッチしているかが本を選ぶ上での最重要ポイント。

本を書いている人の経歴によって得意分野が違うので本によっては説明に問題があるケースがあります。

ハードよりの人はどうもLinuxのお作法*1やセオリーを知らずに書いているケースがあります。非常に残念です*2

ブルーバックス

内容はいいが新書サイズなので開いたまま固定しにくいのが難点。新書サイズでブックスタンドに固定しにくいのでKindle版か洗濯ばさみで固定するとか。

『カラー図解 最新 Raspberry Piで学ぶ電子工作 作って動かしてしくみがわかる 』

評判の良かったRaspberry Piで学ぶ電子工作 超小型コンピュータで電子回路を制御する (ブルーバックス)(モノクロ版)の改訂版+カラー化したもの。

面白いのはタミヤの工作キット+WebIOPiを使ったキャタピラ式のラジコン製作記事など。

回路図、配線図がしっかりしていて丁寧。

あえてモノクロの方を買う必要はまったくないです(内容が古いので)。

かなり丁寧で初心者向け。発売時期の関係で新しいモデルについて記載がありません。

『実例で学ぶRaspberry Pi電子工作 作りながら応用力を身につける』

上記の応用編的な位置づけ。他のシリーズ本と違ってカラーではない点に注意。

『カラー図解 Raspberry Piではじめる機械学習

Tensorflowについては記載されてない(Kerasは紹介している)。 前半はちょっと退屈かも。

『みんなのRaspberry Pi入門』

みんなのRaspberry Pi入門 第4版

みんなのRaspberry Pi入門 第4版

出版社サイト:リックテレコム、「みんなのRaspberry Pi入門 第4版」発刊——Python 3に対応 | fabcross

書店の店頭に古い版が置いてあることがあるので購入時は注意。

  • カラー
  • 紙質がいい感じ
  • Python 3
  • 日本語の入力はibus-mozc
  • RaspbianのインストールはNOOBS経由

Pythonの解説とRaspbianのセットアップに重点を置いている。 LED、モーター、カメラモジュール、センサなど基本は押さえている。

良書。一番バランスがいい本。

Raspberry Piで遊ぼう! 改訂第2版 』

Raspberry Piで遊ぼう! 改訂第2版

Raspberry Piで遊ぼう! 改訂第2版

2017年発行の版が最新です。改訂第4版というのが存在しますが、内容が古いです。購入時は発行年を確認して下さい。

どういう経緯なのかさっぱりですが、改定第2版をリニューアルして2017年に発行しており、こちらが最新です*3

他とはちょっとタイプが違う本。ラズパイをデスクトップPCのように使ったり小型サーバーとして使うノウハウなど何でもあり。

装丁が非常にいい。

  • 実用性はともかく、帯の折返しにgpioのピン配置図がある(表紙側と裏表紙側)。
  • 章ごとに見出しの色とサンプルコードの背景色が違うようになっている
  • Raspberry Pi 3 model B+についての補足のチラシがはさまっている
  • PythonだけでなくJavascriptを使用したサンプルあり(逆に言うとPythonの解説はほとんど無い)
  • WebIOPi *4
  • radikoや動画再生、Webカメラなど
  • ラジコン戦車

サポートページのURLが不明です。

『これ1冊でできる! ラズベリー・パイ 超入門 改訂第4版』

サポートページ:これ1冊でできる!ラズベリー・パイ 超入門 改訂第4版 サポートページ

総論賛成各論反対という感じ。ちょっとどうかと思う。正直微妙。

なぜかsloginコマンドを使用している。とっても不思議。sshなにか恨みでもあるのか?

素直にsshコマンドを使うべき。

  • raspbianのguiを解説
  • 小型pcとしてのラズパイ
  • Lチカ、センサなど
  • 日本語入力にibus-mozc、フォントはIPAフォントとtakaoフォント
  • pythonの解説は数ページ。

本文のコマンド紹介でkillコマンドをー9オプション付きで載せている。むやみに使うコマンドではないのですけど。

また巻末のコマンド解説は順序がちょっと変。いきなりリダイレクトの説明とか。

ちょっと偏った知識で書いているようにと思います。

同じ著者の他の本はともかくこの本はおすすめしない

『電子部品ごとの制御を学べる! Raspberry Pi 電子工作実践講座』

  • 部品の仕組みや構造の解説は有意義
  • Python3
  • 個別の部品をつかうサンプル付き
  • RaspbianのインストールはNOOBS
  • Raspbianの解説はイマイチ
  • Wringpi
  • 索引が貧弱
  • 巻末付録の部品リストはなかなか良い(特に通販の商品コード)

見開き2ページの右ページ右下にPythonのコードが掲載されている。しかし掲載エリアの比率としてはページの6分の1〜2分の1ぐらい。

Pythonのコードがいわゆるラムネ付きの食玩のラムネみたい。

センサやモーターの解説書と電子工作の本とラズパイについての解説を足して2.5ぐらいで割ったような本。

子供の好奇心を満たすという上ではいい本だけど、人によっては中途半端。コンセプトは悪くないが索引がしょぼくて本としてのつくりに疑問。

『ここまで作れる! Raspberry Pi 実践サンプル集』

ここまで作れる! Raspberry Pi 実践サンプル集

ここまで作れる! Raspberry Pi 実践サンプル集

確かにAmazonのレビューどおり、あまり読みやすい文章という感じではない。

なぜか日本語フォントとしてkochi-gothicパッケージをインストール……。他に利用できる日本語フォントがあるのに東風ゴシックは選ぶ必要性がわからない*5

2017年7月発行の本でIPAフォントのパッケージがあるのにわざわざ古いフォントをインストールする理由はない。ラズパイの日本語フォントが問題になることはまずない。その点では細かいことを気にする必要はどこにもない。書くならちゃんと調べてほしいという話。

また冒頭部で唐突にswapを無効化する手順を説明しているけどswapの仕組みの説明はなく、ちょっと不親切。

作例サンプル集としては有意義だと思う。ただし目次をよく見て自分がつくりたいものと類似しているサンプルがあるか要チェック。

なお、日本語フォントとしてはfonts-ipafont-gothicfonts-noto-cjkというパッケージがあり、コマンド一発でインストールできます。

まとめ

本を買わなくてもネット情報で十分なことも多いですが、電子工作にガッツリ取り組みたいならラズパイ関連の本を1冊、ラズパイ関連ではない電子工作系の本を1冊でやっぱり2冊は買う必要があると思います。

ラズパイの初期設定に関してはどの本もちょっと中途半端な印象です。ラズパイで何をするか、はっきり目的を決めないと、どの本も中途半端だと思います。

*1:常識といったほうがいいか

*2:出版社に紹介してもらってチェックしてもらえばいいのに

*3:混乱させてどうするのか

*4:新しいモデルでは動かないかも

*5:ライセンス問題の発覚前ならともかく、それほど品質がいいわけでもない。

KDPで電子書籍を出版しました

電子書籍をリリースしました。PythonからGoogle Cloud Vision APIを使って文字認識(OCR)する方法の解説書です。

また黒歴史が一ページ。何はともあれ実績解除。

7月中に書き始めて、途中で方針転換して内容を一部カット、紆余曲折の結果どうにか書籍としての体裁を整えたという感じ。

バージョン1.1.1が最新です。いきなりヘマをやらかしているので奥付に記載のバージョンが1.0の場合はコンテンツを更新してください。

続きを読む

Pythonで複数の画像をPDFにする(1画像1ページ/圧縮なし)

スキャン済みの画像データをゲットしたのはいいけれど……。

PNG形式のバラ画像200枚というのは不便ですねって話。

ImageMagickで一気にPDF化することはできないので……。

1画像ずつPDFにして結合すればいいんだけど、それはそれでめんどいのでPythonでやってみます。

続きを読む

Pandocで生成したEPUBをRubyで修正してみる

Pandocネタの続き。おそらく正しい対処法はPandocのfilter機能を使う方法。解説というよりは備忘録です。あしからず。

その場しのぎのやっつけとして適当なスクリプト言語で書き換える。

背景

PandocでEPUBを作る際に、--number-sectionsオプションを使うと章番号、セクション番号を自動的に割り振ってくれる。

しかし、「第n章」や「Chapter n」のようにはしてくれない。CSS疑似要素である程度は設定できるが、いずれにしろ標準機能では対応していない。

Pandocのバージョンは2.2.3.2。フォーマットはEPUB3。

EPUBと目次

EPUBの正体はCSSとHTML(正確に言うとXMLベース)の寄せ集めをZipで圧縮したものなので展開して編集して再度圧縮すれば問題ない。

EPUBには目次用のファイルとしてEPUB2用のtoc.ncxとEPUB3系のnav.xhtml、さらに目次ページが存在している。

問題はnav.xhtmlEPUBビューワーで目次ページとして表示する場合はCSSが使える。そのためCSS疑似要素で章番号のフォーマットをいじることができる。

残念ながらこのnav.xhtmlはナビゲーションパネルにも使用され、その場合はCSSは機能しない。故にCSSの疑似要素で章番号のスタイルを変えるという方式は 中途半端になってしまう*1

実際の対応

CSS疑似要素を使う方法+スクリプトによる修正。

hav.xhtmltoc.ncxスクリプトで書き換えて、本文側はCSSで擬似要素として実現する方式。

追加の要件として「付録」という見出しの章はセクションを含めて特別扱いする。

ただ、疑似要素による章見出しはKindle化した際に見栄えが良くないかも。

nav.xhtml<nav>要素で<ol><li><a>...というリストをラップしているだけ。もちろん<ol>要素が入れ子担っている点を考慮する必要がある。

NokogiriのXPath指定で<a>タグを取り出して条件に合うところだけ書き換える。XMLなのでnamespaceを考慮する。

chapter_node = node.xpath('./xmlns:a')

章番号、セクション番号ともに<a>タグの内側に<span>タグで囲まれているので正規表現でマッチしたところを書き換える。

toc.ncxの修正

章の見出しだけ書き換える。<navLabel>というタグの要素を取り出す。

ncx_xml.xpath('//xmlns:navLabel/xmlns:text') 

<navLabel>というタグの下に<navLabel>というタグがあるので親のタグだけ書き換える。

本文側の修正

./EPUB/text/ch00X.xhtmlの各ファイルを修正する。以下のような形式なので対して難しくない。

<h1><span class="header-section-number">5</span>

付録扱いしたいChapterだけ<span>タグのクラスを置き換えて対処。それ以外はCSSで対応。

h1 > span.header-section-number::before {
  content: "第" ;
}

h1 > span.header-section-number::after {
  content: "章" ;
}

スクリプトによる修正

EPUB_tempというフォルダに展開しているという前提。

  • 付録のChapter は「付録A」「付録B」でセクション番号がA.1、A.2となるように
  • 章見出しは「第1章」という形式に(目次はテキストをスクリプトで編集、本文側はCSS

EPUBビューワーの目次ページではCSSが効くが、目次パネル(?)ではCSSが効かないのでこういう微妙な対処方法に。

書き換えの対象

Nokogiriのインストール

$ gem install nokogiri

コード

Pandocで生成したepubファイルの目次情報と章番号を修正するRubyスクリプト

ザ・やっつけ仕事ですが似たようなことをやる人の参考になりますようにということで。

展開と再圧縮

これも備忘録。実際はRakeで一気にやっています。

展開

$ unzip -q temp.epub -d _temp

temp.epubというEPUB3形式のファイルを_tempに展開。

再圧縮

必要な箇所を修正したら再度圧縮する。mimetypeというファイルだけ圧縮率0にする。

展開先のディレクトリ(この例では_temp)に移動してから再圧縮。

$ cd _temp

まずmimetypeというファイルだけ入ったファイルを作り、その後で残りのファイルを圧縮してくっつけるイメージ。

$ zip -0Xq output.epub mimetype
$ zip -Xr9Dq outoput.epub *

これでOK。

参考

EPUB生成のpandocのコマンドは下記のとおり。

$ pandoc -f markdown -t epub3 --epub-metadata=metadata.xml -o temp.epub title.txt *.md --epub-cover-image=image.png --css=github.css --toc --toc-depth=2 --epub-chapter-leve=1 --number-sections --no-highlight

title.txtはタイトルと著者、元データはMarkdown

参考にしたサイトは次のとおり。

まとめ

EPUBがWeb技術ベースなのでこれまでの知識がかなり活用できている。EPUBの仕様策定に関わった方々の好判断の賜物。

ちゃんとPandocのfilter機能を勉強するのが一番だけど。

EPUB 3 電子書籍制作の教科書

EPUB 3 電子書籍制作の教科書

*1:もちろんナビゲーションパネルと目次ページ、本文で章番号の形式が変わってもいいなら問題ない

広告