にせねこメモ

はてなダイアリーがUTF-8じゃないので移ってきました。

このブログについて

文字・フォント・プログラム・技術・趣味などについて、Twitterでは書きづらい長い内容などをまとめるためのブログです。基本的には自分用のメモとして書いている部分が多いです。

リンク等

Pixiv http://pixiv.me/nixeneko
Tumblr http://nixeneko.tumblr.com/ 絵。Pixivアカウント持ってなくても見れます
Twitter https://twitter.com/nixeneko  
MediaMarker http://mediamarker.net/u/nixeneko/ 主に文字・言語関係の蔵書
GitHub https://github.com/nixeneko プログラム用、あまり使ってない
Amazon
欲しい物リスト
amazon.jp/registry/wishlist/1C43ZFBA4IL6Z プレゼントを下さい
ナナシスID ZhRYMnA
デレステID 421820148

同人誌(無料公開)

http://nixeneko.hatenablog.com/entry/c88_russian_alphabethttp://nixeneko.hatenablog.com/entry/c90_greek_latin_cyrillichttp://nixeneko.hatenablog.com/entry/20170811_dentyu

Raspberry Pi Zero Wのセットアップ(Raspbian Stretch Lite)をして超A&G+音声再生機にする

Raspberry Pi Zero Wを買ったが、ディスプレイ接続端子がMini HDMIということで接続ケーブルがなかった。
ディスプレイを繋がない状態(headless)でセットアップしようとしたが、上手くいかなかったのでMini HDMI-HDMI変換アダプタを買い、キーボードもUSB Micro-Bオス-Aメス変換アダプタを利用して接続して調べたところ、headlessセットアップのやり方がわかったのでメモ。

また、ついでに超A&G+(AGQR)音声再生機にしてしまう。


なお、セキュリティ関係の設定は省いているのでセキュリティ的には微妙なはずなので注意。

環境

  • 母艦: Windows 10 64-bit
  • Raspberry Pi Zero W
    • インストールするOS: Raspbian Stretch Lite (Version: September 2017)

手順

Micro SDへのイメージ書き込み

上のダウンロードページからRaspbian Stretch Liteのzipファイルをダウンロードしてくる。
解凍した中身の“2017-09-07-raspbian-stretch-lite.img”をWin32 Disk Imagerなどを利用してMicro SDカードに書き込む。

SSH有効化

sshを有効にするため、イメージを書き込んだSDカード(bootという名前になっている)を開いて、"ssh"という空ファイルを作成する。

Wifi接続設定

Wifiの設定を行う。

If a wpa_supplicant.conf file is placed into the /boot/ directory, this will be moved to the /etc/wpa_supplicant/ directory the next time the system is booted, overwriting the network settings; this allows a Wifi configuration to be preloaded onto a card from a Windows or other machine that can only see the boot partition.

https://www.raspberrypi.org/blog/another-update-raspbian/

とのことで、Windowsから開けるbootのパーティションに設定ファイルであるwpa_supplicant.confを突っ込んでおくと自動で適切な場所にコピーしてくれるらしい。

次のような内容でwpa_supplicant.confを作成しSDカードに突っ込む。一行目がないと接続されないので気を付ける。

ctrl_interface=/var/run/wpa_supplicant
network={
    ssid="xxxxxxxxxxxxxxxxxxxx"
    psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    key_mgmt=WPA-PSK
}

起動

USBで電源に接続すると起動する。USB端子は2つあるが、端の方にある方は電源供給専用らしい。
起動すると自動的にWifiに接続される。IPアドレスRaspberry Pi Zero Wにディスプレイを繋げていればそこに表示されるが、分からない場合はAdvanced IP Scannerなどを利用して調べる。

SSH接続

sshで接続する。
この環境ではCygwinにOpenSSHのsshクライアントをインストールしてあるので、Cygwin端末を開き、Raspberry Pi Zero WのIPアドレス(例では192.168.11.10)を指定して次のように実行する。(Cygwinを入れてない場合はTera Termなどを利用して接続する)

ssh pi@192.168.11.10

パスワードを求められるので、Raspbianの初期パスワードraspberryを入力するとログインできる。(ついでに、rootパスワードはadminであるらしい)

あとはCLIでやりたい放題。Debianなので楽。

ソフトウェアを最新版にしておく:

sudo apt update
sudo apt upgrade

ラジオにする

pHAT DACセットアップ

まず、Raspberry Pi Zero W側にピンヘッダ(別売り)を、pHAT DAC側にピンソケットをはんだ付けし、それらを接続する。
また、pHAT DACのミニジャックにスピーカーなどを接続しておく。ヘッドフォンを繋ぐ場合、音量が結構大きいので注意。音量コントロールのついているものを接続するのがよいと思う。

次にソフトウェアのインストールを行う。次のコマンドを実行:

curl https://get.pimoroni.com/phatdac | bash

その後、再起動する。

ストリーミング受信に必要なソフトウェアのインストール

sudo apt install rtmpdump ffmpeg

超A&G+ (AGQR)音声の再生


↑を参考に、次のコマンドを実行するとpHAT DACから音声が流れる。

rtmpdump -r rtmp://fms-base1.mitene.ad.jp/agqr/aandg22 --live -o - | ffmpeg -i - -vn -f s16le -ar 48k -ac 2 - | aplay -f dat

起動時に自動再生する様に設定

再生用シェルスクリプトの用意
nano playagqr.sh

playagqr.shを次の内容で作成:

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
rtmpdump -r rtmp://fms-base1.mitene.ad.jp/agqr/aandg22 --live -o - | ffmpeg -i - -vn -f s16le -ar 48k -ac 2 - | aplay -f dat

実行属性をつけて/opt/にコピー。

chmod +x playagqr.sh
sudo cp playagqr.sh /opt/
systemdを利用した自動起動

systemdを利用して起動時に自動実行されるようにする。

sudo nano /etc/systemd/system/playagqr.service

playagqr.serviceを次のような内容で作成する:

[Unit]
Description = Play AGQR radio

[Service]
ExecStart=/opt/playagqr.sh
Restart=always
Type=simple
User=pi
Group=audio

[Install]
WantedBy=multi-user.target

自動起動を設定する:

sudo systemctl enable playagqr

これで、電源を繋いでしばらくするとAGQRの音が再生されるようになる。

粗大ごみを持ち込むと安くなるらしい

粗大ごみは勝手に捨てることができず、処分する場合は自治体に連絡して、指定された日に出さないといけない。
少なくとも2週間以上前には申し込んでおく必要があるようである。

ところで、その申し込みをしていなかったので、いざ申し込もうという段になって、引っ越しの日に間に合わないということに気が付いた。
一つの手として、引っ越し業者に処分を依頼する、粗大ごみ処理業者に依頼する、などが考えられるが、場合によってはかなり高額になる。


ところで、大田区は、大田区在住の人に限って、粗大ごみの持ち込みを受け付けている。

少なくとも持ち込みの2日以上前に申請が必要だが、京浜島にある回収拠点に持ち込みを行うと、手数料が無料または減額になるらしい。これに申し込んでみた。

今回申し込んだのは、事務椅子、突っ張り棒、アイロン台の3つ。どれも手数料は無料となった。また、申し込み時に搬入場所についての案内があった。


それで、である。京浜島のアクセスが悪い。観光地でもないのでそれはそう、って話ではあるが、一番近い駅が東京モノレール昭和島駅で、そこから2km程度歩く。車を持っていたり借りられる場合であれば良いが、徒歩だと厳しい感じがする。

持ち込み

f:id:nixeneko:20171004180543p:plain
昭和島駅。狭い。エレベータやエスカレータもないので狭い階段をどうにかいかないといけない。

f:id:nixeneko:20171004181406p:plain
椅子は分解して袋に入れて運んだが、椅子のままローラーごろごろ転がして行った方が楽だったかもしれない。途中袋の持ち手が切れたのでガムテープで即席の持ち手を作ったりした。

f:id:nixeneko:20171004181646p:plain
2~30分歩くと搬入場所についた。道筋としては単純で、一回左折するだけ。

f:id:nixeneko:20171004181930p:plain
この奥で受付をやっている。免許証などで住所を確認して、終了。

まとめ

車で運べないのであれば止めた方がいい。特に重いものは歩いて運ぶのが辛く、また大きいものは運べない。
自己搬入したら手数料が無料になるっていったって交通費と相殺されてあまり金銭的なメリットはない。
とはいえ、すぐに処分しなきゃいけないものがある場合はうまく利用できるかもしれない。

JPEGのヘッダからクロマサブサンプリングを調べる

JPEGはクロマサブサンプリングに対応しているわけだが、画像ビューアや画像編集ソフトで開いてもその辺りの情報が得られなかったりする。
なので、JPEGのバイナリを読んでクロマサブサンプリングがどうなっているか理解できる様にしたい。

JPEGに記録されたクロマサブサンプリング情報

まず、imagemagickでクロマサブサンプリングを次のように設定して書き出した。
そしてそれをバイナリエディタで開き、対応するSOF0タグ内の構成要素のサンプリング値を調べた。ここで、数字は16進数である。

設定 Y Cb Cr
4:4:4 11 11 11
4:4:0 12 11 11
4:2:2 21 11 11
4:2:0 22 11 11
4:1:1 41 11 11
4:1:0 42 11 11

Y, Cb, Crについて、上位4ビットが水平方向、下位4ビットが垂直方向のサンプリング値を示す。
要するに、4:4:4であればY, Cb, Crそれぞれの1x1のブロック同士が対応する。4:2:0であればYの2x2ブロックとCb, Crの1x1ブロックが対応する、などといったことだろう。


JPEGのバイナリを開いて、9E番地から始まるSOF0が

FF C0 00 11 08 02 D0 05 00 03 01 22 00 02 11 01 03 11 01

となっていれば、赤がチャンネル数(3=YCbCr)、太字が各チャンネルのサンプリング値であるので、ここからYCbCr 4:2:0だとわかる。

J:a:b表記について

ところで4:2:0みたいな表記をずっと分かりづらいなと思っていたのだが、次のような事情があるらしい。

これはもともとは水平方向のY:Cr:Cbのサブサンプリングの比率を表していて、垂直方向のサブサンプリングは考慮されていなかった。そのため、人間の目の空間的な解像度が、青/黄色の方が赤/緑より小さいのを利用して、4:2:1みたいなクロマサブサンプリングも存在しているらしい(今ではほとんど使われていない)。

この後、縦方向のサブサンプリングを考慮するようになり、縦方向の色成分の解像度を半分にする場合、表記として、三番目の数字に0を指定するようになった。現在のこの書き方をJ:a:b notationという。縦方向解像度を0で示すようにしたのは、おそらくそれまでの表記法との互換性を保つためだろう。縦方向にクロマサブサンプリングをしない場合に4:2:2や4:1:1と書くのも過去の表記との整合性を考慮してのことで、過去の表記法でも現在の表記法でも同じクロマサブサンプリングを示すことになる。

同人誌向けプリントオンデマンド販売サービス

本の販売方法で、在庫をもたず、注文が入ってから本を印刷・製本し発送するものをオンデマンド販売とかプリント・オン・デマンド(POD; print on demand)という*1

同人誌通販でPODが利用できるものはあまり聞いたことがなかったのだが、いくつかあるらしいので調べたものをまとめてみる。
基本的に、初期費用がかからないものは、売り上げから印刷代や手数料分を引いた金額が著者の利益となるようである。

「POD出版」で検索すると自費出版系のサービスが引っかかる。無料で出版できるものなどをいくつか挙げたが、二次創作関係はサービスの規約で禁止されている場合があるので、同人誌向けのサービスを使った方が良さそう。

自前の販売システムを持ってるとこ

製本直送.com / どこでも印刷

http://www.seichoku.com/user_data/publish_button_std.php

  • 初期費用無料・月額利用料無料
  • 製本代・送料のほか、決済額の15%が手数料としてかかる
  • 「ディズニー(キングダムハーツを含む)、ポケットモンスターハリーポッター、サンリオ」は不可。それ「以外のキャラクターにつきましては(略)お客様ご自身で判断をお願い致します。」とのこと*2
  • 成人向け可

DLmarket / 製本販売機能

https://www.dlmarket.jp/user_data/seichoku.php

  • 製本直送.comとの連携により、ダウンロード販売に加えて製本版も販売可能
  • 製本版単体での販売は不可
  • 製本代・送料のほか、販売価格の20%が決済手数料としてかかる

ライブラ

https://libra.sc/

  • 現在事前登録中。2017年9月に作品登録開始予定らしい。
  • 初期投資なし。
  • 基本料金+ページ印刷料金+作家利益が販売価格となる。利益は自由に設定可能。
  • 同人誌向けっぽいので、二次創作でも使えそう
  • 成人向け可。

BCCKS

https://bccks.jp/

Amazon PODを利用したPOD出版サービス

NextPublishing著者向けPODサービス

https://open.nextpublishing.jp/author/

  • 基本無料
  • 販売手数料は販売価格の40%
  • 販売価格は100円単位で設定でき、印刷費と販売手数料を引いた額が利益として支払われるとのこと。
  • 成人向け可。
  • 「他者の著作権を侵害するものなど知的所有権を侵害する書籍は販売できません」*3とのことで二次創作は難しいかも。
  • 「製本可能なページ数は、24〜828ページです(カラーは500ページまで)」*4

MyISBN

https://myisbn.jp/

  • 自費出版向けのサービス。Amazonや(取り寄せれば)書店で購入可能。
  • Amazonのオンデマンドサービスを使ってPODが実現できる。
  • 本の登録費用が4980円で、それ以外に費用は掛からないとのこと。

BookSpace

https://bsworld.jp/pod

  • 電子書籍出版サービス。Amazon PODを使ってPODができる。
  • 無料らしい。
  • 「各配信ストアから実際に支払を受けた金額から35~43%を有料会員のアカウントに計上します*5」とのことで、6割前後が手数料として引かれるらしい。
  • 売り上げが5,000円を超えない場合、退会するまで利益の振込はされないとのこと。

*1:「必要なときに必要なだけ印刷する」という意味で、印刷方法としてのオンデマンド印刷(製版工程の要らない、レーザープリンタによる少部数印刷)のことを指すこともあるが、ここで扱うのはそれではない

*2:https://www.seichoku.com/user_data/kiyaku.php

*3:https://open.nextpublishing.jp/author/#q_6

*4:https://open.nextpublishing.jp/author/#q_9

*5:https://bsworld.jp/download

あにつく2017「デジタル作画導入スタジオが語る これで解った! デジタル作画のはじめかた」まとめ

あにつく2017での「デジタル作画導入スタジオが語る これで解った! デジタル作画のはじめかた」についてまとめておく。

登壇者、講演の概要については次のページを参照。
www.too.com

3社の使用しているデジタル作画ソフトについてまとめる。

グラフィニカ

使用ソフト

  • Clip Studio
    • レイアウト、1原
  • Stylos
    • 2原、動仕

Clip Studio

  • 書き味がよい
  • 前から使っていたStylosに加えて最近導入し試してる段階
  • 2原をClip Studioでやろうとしたこともあるが、補正の関係で描ける線がトレス向きでなく、補正がないStylosの方がなぞるのはやりやすい
  • パース定規機能……レイアウト向き
  • ペンの種類が多い、描画にタイムラグがない
  • 紙に近い
  • 自分でブラシを作れる。「見ました」みたいなブラシをつくってスタンプを押すみたいなことも
  • Clip Studio→Stylosのデータの移行はPNGを介して
    • PNG出力は制作さんがやっている
    • 人によって描き方(データの作り方)が異なるのでどうしても手でやる必要があるらしい

タイムシートについて

  • (紙で運用しているという話だったと思う)
  • (Stylosから?出力しても)AEにタイムシートを読み込ませることができない
  • 撮影会社に出すときに、紙でないと対応できない場合がある

オーエルエム

使用ソフト

  • Toon Boom Harmony

Toon Boom Harmony

  • カナダ産
  • 使う理由: 海外(特に北米)と仕事をするため(使ってるソフトが違うと共同作業が難しい)
    • 海外はペーパーレス
  • エディションが2種類ある
    • Harmony Advanced: 動仕のみ。15万
    • Harmony Premium: コンポジットもできる。30万
  • AEで撮影するためには線の2値化が必要(ベクタ画像からTGAで出力しないといけない)
  • ポケモンでは1600x900の撮影フレームを使っているが、その解像度で2値出力すると思ったところにドットが出ない
    • 現状ペイントソフトで修正している
    • 高解像度で出力しリサイズすると高品質に出力できそう
    • もともとHarmonyだけで完結させる設計になっているので、2値出力してAEでコンポジットする様な変態的な使い方は考慮されていない
  • 版権ものの抱き枕などでは一辺が一万ピクセル以上になることもあるが、ベクタデータなのでそこまでのマシンパワーは必要ない
    • 4K, 8Kなどの時代になったら紙では難しい

タイムシートについて

  • タイムシートは紙として存在し、それを見ながらデジタル作画している
  • 細かい指示がエクスポートできないため

サンジゲン

使用ソフト

  • TVPaint Animation

TVPaint Animation

  • フランス産
  • ヨーロッパのアートアニメーション向けにつくられた
  • 「ペグホールスタビライズ」機能が強力……タップ穴を合わせて自動で位置補正してくれる
  • アニメーションブラシ、カスタムブラシなどの機能
    • 設定できるパラメータが多く、様々なブラシが作成できる
  • スクリプト機能……George Scriptという化石みたいな言語
  • 欠点: 解像度(dpi情報)の保持ができない(AEと同様)
  • AEに持っていくには2値線にしないといけないが、原画以降は最初から2値(アンチエイリアスなし)で描くことで解決

タイムシートについて

Twitterのフォローが減ってることがあるので、フォローのリストをログとして記録したい

Twitterのフォローが減ってることがある。
退会や凍結によりアカウントが消えたか、あるいはブロックされたかのどちらかだろうと思うが、今まで購読していたものが購読できなくなって、それが把握できないというのは切ない。
なので、Twitterのフォローのリストを定期的に取得しておいて、フォローが減ったときなどに比較して比べて、減ったフォローを確認したい。定期的と言ってもフォローの数が変化した時に取得しておけばよい。ひょっとしたらブロックされたことがわかってひどく凹むことになるのかもしれないが……。

手法

さて、Twitterにおいて、@で始まるユーザ名("screen_name")は変更することができる。一方で、ユーザには内部で一意の番号が振られていて("id")、こちらは、ユーザ名が変わっても変わらないはずである。
なので、idの集合を定期的に記録しておけば、フォローの変化を追跡することができる。また、ユーザー名が変更された場合もそれを把握できる。

idだけの取得であればGET friends/idsでいけるが、今回はscreen_nameなども欲しいのでGET friends/listを使う。


取得したユーザのリストデータを保存する際、辞書オブジェクトであるから簡単に考えるとpickleなどで保存するということが考えられる。一方でpickleで保存するとpythonのバージョンが上がったときなどで互換性がなくなる場合があり(2->3とかだめだった気がする)、CSVJSONなどの汎用フォーマットを用いた方が良さそう。今回はJSONでダンプする。


実装にはPython Twitter APIを使った。これは pip install twitter で導入できる。

取得のためのコードを次に示す。
同じフォルダに'consumerkey'という、"<Consumer Key>[改行]<Consumer Secret>[改行]"という様なTwitter API Keyを記録したファイルを置いて実行する。Twitter API Keyはhttps://apps.twitter.com/でAppを作成すると発行できる。


自分がフォローしているユーザが数百なので、API制限など考えずに作成した。もし3000以上のユーザをフォローしている場合だとAPI制限に引っかかることになると思う。

比較

要するにユーザーのidの集合について比較し、差集合を計算すればよい。
ユーザーのidをキーとする辞書オブジェクトを作っておけば、ユーザー名などを引くことができる。

以下にコードを挙げる。

ちなみにこれをフォロワーの方で行ってフォロワーの推移を追跡することもできるが、やりたくないのでやらない。