「司政官 全短編」読了2019年03月06日 23:19

 「司政官 全短編」を読了。

 「引き潮のとき」をリアルタイム連載で読んでいたのはずいぶん以前のことになった(歳がバレるか…)。久しぶりに眉村卓の司政官物を読んだ。作品発表順ではなく、作品世界の世代順というところがポイントである。

 人類が宇宙に進出し、新たな可住惑星を発見、植民地化していく未来。惑星探査と入植初期は軍の管轄であった。原住知的生命体への対応や、入植者との軋轢を強引かつ暴力的に解決し、入植した人類側の完全支配(つまり事実上の征服)を目指そうとする軍に対し、原住知的生命体を尊重し、入植者との平和裡な形での共存社会を目指そうとする中央政府が生み出したのが司政官制度ということになる。常に沈着冷静、私情を交えず、中立の立場で植民惑星を統治するために厳しい訓練と競争を勝ち抜いてきたエリート中のエリートが司政官となる。

 その当初は軍への遠慮、原住知的生命体の理解の壁、理想と現実とのギャップに苦しみ、やがてシステムが安定すると平和に倦み、次第にシステムが崩壊し、司政官制度そのものが立ち行かなくなるまでが、時系列順に並べられた短編によって俯瞰できる。

 司政官シリーズといえば、状況説明や心理描写といった「ひとりつっこみ」文体が印象的だ。延々と、見ようによっては後知恵の説明や言い訳のようにも感じられる一人称の内面描写が、孤独な司政官のありようを浮かび上がらせていく。ある意味、非常に特殊な設定の「私小説」とも言えよう。情緒に流れるきらいのある作品が発表初期のものにはあり、あとがきの作者自身がそのことを指摘している。だが、この作品はむしろ、大きな政治的動きの中に身を置き、それに翻弄される個人の物語であり、個人の力ではどうにもならない状況にある人間の非力さ、虚無感が強く感じられる。

 司政官の夢の跡には風ばかり。

らじる★らじる録音サーバの構築2019年03月10日 23:26

 らじる★らじるを録音したいことがあって、いままではPCを起動し、ブラウザから再生させた音をaudacityでタイマー録音し、その後編集していた。だがこれだと、PCをつけっぱなしにしておかなければならない。電気代もバカにならないので、思い切って録音サーバを構築。

準備するもの
*raspberry pi本体:残っていたraspberry pi B+を利用(旧型シングルコアで十分、消費電力も低いし、発熱もほとんどない)
*micro SD:ありあわせの16GB:15Gは記録容量に使える
*raspbian stretch lite:GUIは使わない。リモートで操作

1.raspbianのインストール:サイトからダウンロードし、etcherでmicroSDにインストールする。

2.raspberry pi B+にHDMIでモニターを接続。USBにキーボードを接続、microSDをセットし、電源を差し込む。CUIで起動。

3.ログインする。初期のユーザ名はpi、これはこのままとりあえず使い続ける。パスワードはraspbian

4.起動したら、sudo raspi-configをenterを押して実行。入力後enterは以下全て同じ。

5. Change User Passwordを反転表示させ、Tabキーで<select>を選択、enterを押して次へ。次の画面で<OK>、ターミナルに戻るので、画面の指示にしたがって、最初に初期パスワードを、次に変更するパスワードを入力。変更するパスワードをもう一度聞かれるので、再び入力。パスワード変更が成功したとメッセージがでて、画面が戻る。

6. Interfacing Optionsを選択、P2 SSHを選択、Would you like the SSH server to be enabled?で<OK>を選択。これでSSHでリモート操作できるようになる。

7.画面右下の<finish>を選択して、一旦この画面から出る。

8.sudo nano /etc/dhcpcd.conf でIPアドレスを固定に変更するようファイルを編集する。
末尾に次のように追記。

interface eth0 (raspberry B+は無線LAN内蔵なしのため、eth0を指定)
static ip_address=192.168.XXX.XXX (自分のLANの中で割り振れるIPアドレス)
static routers=192.168.XXX.XXX (自分のLANの中のデフォルトゲートのIP)
static domain_name_servers=192.168.XXX.XXX(static routersと同じIP)

ctrl+oで保存、ctrl+xで終了。
 これで最小限の本体を直接操作する段階が終了。sudo halt で一旦raspberry pi B+をシャットダウンし、ディスプレイ、電源、キーボードを抜く。LANケーブルを差して、ネットワークにつながる環境で再び電源を接続。1〜2分経って、raspberry pi B+の起動が終わった頃にネットワーク上の他のPCからユーザ名piでSSH接続。このあたりは各自の環境で準備を。私は母艦がlinuxなので、単純にターミナルから

ssh pi@XXX.XXX.XXX.XXX(sudo nano /etc/dhcpcd.confで設定した固定IPアドレス)

パスワードを入力すれば完了。

9.アップデート

sudo apt update
sudo apt upgrade

 この2つはお約束としてやっておくこと。upgradeでインストールのY/Nを聞かれたら、もちろんY。

10.日本語環境のインストール

sudo apt install fonts-ipafont fonts-ipaexfont
sudo apt install ibus-mozc

11.ファイルサーバーのインストール
 ネットワーク上の他の端末から録音したファイルにアクセスしたり、スクリプト等を移動したりするのに便利。

sudo apt install samba

12.ffmpegのインストール
 今回の録音に必須アプリ

sudo apt install ffmpeg

13.ntpサーバのインストール
 正確な時刻をネットワーク経由で校正するために必要

sudo apt install ntp

(デフォルトでインストールされているなら、インストール済と表示される)

14.デフォルト設定の残りを済ませる。

sudo raspi-config

2 Network OptionsからN1 Hostnameを選択、次の画面の<OK>からPlease enter a   hostnameの画面でこのraspberry piの名前を適当に、短めにつけて、<OK>
3 Boot OptionsでB1 Desktop/CLIを選択、Piユーザのみで使うならB2を選択。
4 Localisasion OptionsでI1 Change Localeを選択、しばらく待つとlocale選択画
面が現れるので、en_US.UTF-8 UTF-8、ja_JP.EUC-JP EUC-JP、ja_JP.UTF-8 UTF-8
の3つをスペースキーで選択(en_US.UTF-8 UTF-8は最初から選択されている)して、
<OK>、次の画面でDefault localeをja_JP_UTF-8を選択して<OK>
I2 Change Timezoneを選択し、しばらく待つとtzdata設定画面となるので、Asiaを選択し
<OK>、次の画面でTokyoを選択し、<OK>
 この後

sudo reboot

で再起動。SSH接続は切れるので、しばらくして再度ログインを。この時点から日本語表示が可能となる。

15.ntp設定

sudo nano /etc/ntp.conf

 開いたファイルの14行目〜17行目の

pool 0.debian.pool.ntp.org iburst
pool 1.debian.pool.ntp.org iburst
pool 2.debian.pool.ntp.org iburst
pool 3.debian.pool.ntp.org iburst

の各行の先頭に # を入力してコメントアウトし、18行目以下に次のように入力

pool ntp.jst.mfeed.ad.jp
pool ntp.nict.jp iburst

ctrl+o、ctrl+xで終了後、
 ntpq -pを実行。リストの中に今入力したntp.jst.mfeedとntp.nict.jpが見えればOK。

16.samba設定

sudo nano /etc/samba/smb.conf

 で、samba設定ファイル編集。末尾に次の内容を追加。

[(ネットワーク上で見えるこのraspberry piの名前)]
comment = (ネットワーク上で見えるこのraspberry piの説明)
path = /home/pi (ここは公開するフォルダを任意に作り、変更して構わない)
guest ok = yes
read only = no
public = yes
brawsable = yes
force user = pi
ctrl+o、ctrl+xで終了後、
sudo service smbd restart
sudo service nmbd restart

 これでsambaが再起動する。ネットワーク上の他のPCからファイルサーバとしてアクセスできる。ここまでで下準備完了。

17.受信準備
 今回はらじる★らじるでFM放送のみを録音する。まずは受信先のURLを手に入れる。ブラウザから読み取るのもいいが、ネット上にも散見されている。らじる★らじるのストリーミングURLは

https://nhkradioakr1-i.akamaihd.net/hls/live/511633/1-r1/1-r1-01.m3u8(R1)
https://nhkradioakr2-i.akamaihd.net/hls/live/511929/1-r2/1-r2-01.m3u8(R2)
https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-01.m3u8(FM)

となっている。試しにこれを使って短時間録音テストを行う。コマンドは以下の通り。

ffmpeg -i https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/
1-fm-01.m3u8 -t 30 -acodec copy "/home/pi/test.m4a"

 ffmpegの次の-iオプションの次は入力ソースの指定。ここではストリーミングURLを使う。手打ちだとエラーが出がちなので、十分注意を。-tオプションは録音時間。ここでは30と指定し、30秒録音とする。-tオプションには1:23:45といった具合に時間設定ができる。この場合は1時間23分45秒となる。いちいち秒に計算し直す必要はない。-acodecは出力ファイルの指定。いろいろなファイルが指定できるが、ここではストリーミングをそのまま無劣化コピーするオプション、copyを使っている。今回の場合、このcopyオプションを使うことができるのは、出力ファイルがm4aである場合に限られるようだ。
最後の"/home/pi/test.m4a"はファイルの出力先及びファイル名。フルパスで記載すること。末尾拡張子が.m4aであること。もちろん保存場所は任意なので、適当に。成功すれば30秒後には録音が完了している。リモートPCからsamba経由で保存したファイルにアクセスし、VLCなどで再生可能だ。録音が終了していないファイルは再生できないので注意を。

18.シェルスクリプト作成
 準備段階でテストが成功したら、まず録音したい番組の放送時間を調べ、-tオプションに与える時間を割り出す。実放送時間より10分程度長めの時間を考えるのが安全。ストリーミング遅延などがあるからだが、このようなゆとりはアナログ時代の録音、録画では常識。
 スクリプトは録音する番組ごとに作るといいだろう。テンプレート的にスクリプトを作り、録音番組ごとにフォルダを準備し、そこに落とし込むようにすればいい。ファイル名は date コマンドで自動的に割り付けさせればファイル名の重複も避けられる。次のようなスクリプトを番組ごとに作成する。リモートPCで作って、samba経由でコピーしてもよければ、raspberry piでnanoで作成してもよい。

#!/bin/sh
date=`date '+%Y%m%d_%H%M'`
echo "date = ${date}"

ffmpeg -i https://nhkradioakfm-i.akamaihd.net/hls/live/512290/
1-fm/1-fm-01.m3u8 -t (録音時間) -acodec copy "(録音フォルダのフルパス)
/${date}.m4a"

 最初の行はシェルスクリプトであることの宣言。お約束なので必要。
 次に date コマンドの出力形態の指定。+ に続いて書式設定。%Y は西暦4桁、%m は月、%dは日、%Hは時、%Mは分を表す。例えば2019年10月23日21時23分にこのスクリプトを実行したら、出来上がるファイル名は

20191023_2123.m4a

となる。作ったシェルスクリプトは

(任意の名前).sh

とする。拡張子の.shを忘れないこと。raspberry pi に保存できたら、実行権限を与えなければ起動しないので、

 sudo chmod 755 (スクリプト名)

を実行。

19.タイマーセット
 タイマーというが、実際には cron コマンドで実施する。

crontab -e

 で、起動条件をセットする。第一回の起動時には使い方の確認画面が出るが、sudo nano で編集すると返事すれば、次からは自動的にそのように動く。開いたファイルの末尾に、次の書式で入力する。

分 時 日 月 曜日 コマンド

 指定しないパラメータには*を使う。曜日は

0 日
1 月
2 火
3 水
4 木
5 金
6 土
7 日

となっている。例えば毎週月曜日の朝10時からの番組を録音したいなら、スタート時刻はその3分前として、

57 09 * * 1 (スクリプトをフルパスで)


月曜から金曜の午後3時からなら

57 14 * * 1-5 (スクリプトをフルパスで)

録音番組ごとに1列ずつ記載する。記載が終われば ctrl+o と ctrl+x で終了する。番組が終わるなどしてタイマーセットを解除したいなら、 crontab -e で設定ファイルを呼び出し、削除したい部分を削除してから保存・終了すればよい。

20.録音したら
 あとはsamba上からデータを受け取り、編集するなり、他のファイル形式に変換するなり。