あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

OSC2018 Kagawaレポート

忘れずに書いた!

技術書典があった週末の土曜日はOSC2018 Kagawaでした。ちょうど台風が近づいて通り過ぎたタイミングだったので、行きも帰りも大丈夫かとヒヤヒヤしたのですが、いきが天候調査になってちょっと危なかった(けどなんともなかった)以外はかすってくれてなんとかなりました。

とりあえず今回のブース。Ejectコマンドユーザー会でしか申し込んでなくて、ラズピッピの展示のことを忘れていましたが、雑に圧縮展示をキメてgot kotonaki.

f:id:Akkiesoft:20181019210653j:plain:w480

今回のOSC2018 Kagawaから、Raspberry Pi 1 Model A(と必要に応じて各種オプション)をタダで配るという企画をはじめました。どこかで廃棄寸前だったラズピッピを200台ほどお譲りいただいたもので、せっせと配布できる状態にバラす作業をしてから各地で配っていく予定です。OSC2018 Tokyo/Fallでもやります。で、香川では10台ほど用意したのですが、学生さんを中心にもらわれていきました。良かった。課題は電源の配り方で、バラし前の姿は丸DCアダプターだったので、そのまま配ると使えない物体なので誰も持っていってくれませんでした……。最後は河野さんがゴソッと回収してくれて助かりました。。

f:id:Akkiesoft:20181019210756j:plain:h480

はい、あとは観光の話!

讃岐うどん、今回はしっかり食べた気がする!結構カレーうどん推しの店が多い?ようで。

f:id:Akkiesoft:20181019211634j:plain:w480

おしい。前日入りした日の観光はまずはことでん。空港からバスで空港通りまで移動すると、空港通り駅に乗り換えできます。今回の目的はIrucaのチャージを使い切ることでしたので、しっかり乗りました。途中チャージもしつつ使いまくりましたが今回は最終的に230円残りました。

f:id:Akkiesoft:20181019211947j:plain:w480

f:id:Akkiesoft:20181019211959j:plain:w480

ことちゃん

f:id:Akkiesoft:20181019212009j:plain:w480

栗林公園してきました。ココの景色はすごい良かったけどココが一番虫が多かった。さておき、池でコイとかカメとかスッポンに餌をやれてなかなか楽しかったです。

f:id:Akkiesoft:20181019212031j:plain:w480

日曜日は技術書典の準備に備えて早めの便で帰ることにしていたので、高松城跡の散策と、ことでん志度線を軽く乗鉄して終わりました。

f:id:Akkiesoft:20181019212512j:plain:w480

f:id:Akkiesoft:20181019212516j:plain:w480

高松築港駅からの移動でレトロ電車に遭遇。普通列車として運用されているのを初めて知りました。

f:id:Akkiesoft:20181019212550j:plain:w480

んで志度線琴平線は元京急とか元京王が多いですが、こちらは基本元名古屋市営地下鉄車の宝庫。どんなもんか乗ってみたくて来たのでした。

こっちはもともと先頭車だったオリジナル顔のようです。

f:id:Akkiesoft:20181019212837j:plain:w480

こっちは多分中間車に顔をつけたやつ。改造は京王重機。サイクルトレインとして自転車を載せられる車両になっていました。

f:id:Akkiesoft:20181019212953j:plain:w480

反対側は…貫通していない。サイクルトレインとして週末に増結する専用みたいな感じなんでしょうか。これ1両で走れないじゃんね、行っても帰ってこれないタイプの単行車両じゃんね。ちょっとシュール。

f:id:Akkiesoft:20181019212958j:plain:h480

数駅のって1駅歩きで戻ってから戻り方向の電車に乗る感じの散歩をしましたが、途中でンゴのジムを制圧してたら時間ギリギリになってしぬかと思いました。

行き帰りの飛行機は両方ともA321でした。シートの端末でいろいろいじれるの楽しいですよね。飛行機のカメラを見るのが好きです。

f:id:Akkiesoft:20181019212139j:plain:w480

Raspberry Pi TV HAT

ってのがリリースされたので、という話をraspi.jpに書いといたので見てね!!!!!

www.raspi.jp

こっちの記事はちょいおさわりした話。なんでもう持っているのかと言うのはもう毎度ですが、Raspberry Piモデレーターの太田さんのお手伝いです。

アンテナについて。変換コネクターは付属のものは日本では多分見かけないタイプのやつで、使えません。ただし、アキバとかでよく見るUSBワンセグチューナーの変換ケーブルが使えます。もしTV HATを使うならこのドングルを300円とかで買ってきてケーブルだけ使うみたいなやり方ができそうです。ロッドアンテナは、モノによるのかもしれませんが、なんか途中で出っ張っててつけられませんでした。

チップについて。SONYのCXD2880というものが使われています。SDRな方面だとRTL2832uというカニがポピュラーで、情報も豊富ですが、ツールもそれ用っぽいのであんまこのへんの情報は使えなさそうという感じです。SDR全然わからないんでもしかしたらなんかいけるのかもしれませんが。CXD2880自体はググるLinuxカーネルに取り込まれる感じのやり取りが見ることができます。なんかISDB-Tとか言う文字列が見えつつも問題があったらしく消えてしまってるのが気になります(別に普通にググって出てきただけなので……)。

ゆーてもなんか頑張れば見れたりするのかしらと思い、地デジの周波数で受信を試みましたがだめっぽそうです。以下はmumudvb( http://mumudvb.net/ )というツールで受信を試みた例。

$ cat chideji.conf
freq=539.143
bandwidth=6MHz
autoconfiguration=full

※539.143→テレ朝

$ sudo mumudvb -d -c ~/chideji.conf -s
MuMuDVB Version 1.7.3_20140822_master
 --- Build information ---
Built with CAM support.
Built with SCAM support.
Built with ATSC support.
Built with ATSC long channel names support.
Built with support for DVB API Version 5.4.
Built with support for DVB-T2.
---------
Originally based on dvbstream 0.6 by (C) Dave Chapman 2001-2004
Released under the GPL.
Latest version available from http://mumudvb.braice.net/
Project from the cr@ns (http://www.crans.org)
by Brice DUBOST (mumudvb@braice.net)

Info:  Main:  Full autoconfiguration, we activate SAP announces. if you want to deactivate them see the README.
Info:  Main:  Full autoconfiguration, we activate PAT rewriting. if you want to disable it see the README.
Info:  Main:  Full autoconfiguration, we activate SDT rewriting. if you want to disable it see the README.
Info:  Main:  ========== End of configuration, MuMuDVB version 1.7.3_20140822_master is starting ==========
Info:  Autoconf:  The autoconfiguration auto update is enabled. If you want to disable it put "autoconf_pid_update=0" in your config file.
WARN:  Main:  Can't create /var/run/mumudvb/channels_streamed_adapter0_tuner0: No such file or directory
WARN:  Main:  Can't create /var/run/mumudvb/channels_unstreamed_adapter0_tuner0: No such file or directory
Info:  Main:  Streaming. Freq 539143
Info:  Tune:  Using DVB card "Sony CXD2880" tuner 0
Info:  Tune:  Tuning DVB-T to 539143000 Hz, Bandwidth: 6000000
Info:  Tune:  FE_STATUS:
Info:  Tune:  Strength:      11687
Info:  Tune:  Strength:      11687
:
(中略)
:
Info:  Main:  Card not tuned after timeout - exiting

gqrx( http://gqrx.dk/ )っていうGUIで波形とか見られるツールもあるんですが、これはデバイスの選び方がわからないと言うか多分対応していないです。ただ、Raspberry Pi向けにdebパッケージを配ったりしててラズパイフレンドリーな雰囲気を感じるので、そのうち対応してくれたら道がひらけそうな感じもしています。

FMラジオとか聞けるのかしら。なんかナイスアイデアがあればぜひ。

紙っぽく曲がる電子ペーパーを買ってみた

WaveaShareから新しい電子ペーパーが発売されていたのでdx.comからポチポチしてしまいました。は~また増えちゃったよと思っていたところ、運悪くWaveShare版3カラー(赤)電子ペーパーのフレキシブルケーブルを切ってしまいました……。なのでプラマイゼロです。

電子ペーパーは、ボードからケーブルを外すときに留め具を外し忘れていて、引っ張ったらケーブルが切れて死亡しました。。幸い赤系のボードはInky pHATがあるので困りはしませんが、悲しい。

f:id:Akkiesoft:20181017135920j:plain:w480

そして新しい電子ペーパーがこちら。出荷時の画像データヤバないですかね?

f:id:Akkiesoft:20181017140038j:plain:w480

裏面。カッコの意味は、初代のカッコなしは白黒、(B)は冒頭で破壊報告した赤、(C)は黄色、(D)が今回の白黒です。初代と比較すると解像度が250x122から(B)と(C)に合わせた212x104に変わっている点ですが、さらなる特徴が……

f:id:Akkiesoft:20181017140108j:plain:w480

曲がる(!)

f:id:Akkiesoft:20181017140303j:plain:w640

ついに曲げられる電子ペーパーがラズピッピで遊べるようになったワケです。すごいですね。

サンプルスクリプトはメーカーのサイトからダウンロードできます。サンプルの中には出荷時のヤバげな画像を含むスクリプトなどが含まれています。ところで初代のサンプルも改めて落としてみたら、スクリプトが洗練されていて扱いやすくなっていました。えらい。

2.13inch e-Paper HAT (D) - Waveshare Wiki

購入時にペーパーの型番自体は同じだったので、他ボードを使い回しできるだろうと予想していて、今回はそれこそ赤ペーパーのボードを使い回すつもりでボードなしの電子ペーパーのみで購入していたのですが、赤ペーパーを壊してしまったので、そのまま付け替えとなりました。両面テープで貼り付ければきれいですが、そうするとフレキシブルの意味がなくなるので悩ましいですね。

自分でコソコソ作って使っていた、Inky pHATのライブラリにかぶせてWaveShare系のボードでも使えるようにするライブラリも色コードを適宜直せばそのまま使えることが確認できました。これならわりと簡単。

f:id:Akkiesoft:20181017141108j:plain

電子ペーパーだけだと10ドルちょっとで買えるので、↑の値札みたいに常時書き換えないのであれば、ペーパーだけ複数持って、書換のときだけつなぐ運用のほうがかさばらなくて良いかもとかは思いました。

WaveShareの電子ペーパーシリーズ、この次は何が出るかしら。そろそろ緑とか青もほしいなー(チラチラ

こくだランド同人作品がとらのあなで委託始まってます。

先週の技術書典5のときにとらのあなで委託したEJECTO、Ejectタオル、ラズピッピいじり3がとらのあな秋葉原店Aで販売開始されています。

news.toranoana.jp

今日早速見に行ったのですが、ご丁寧にもとらのあなのエンジニアさんがひとつひとつPOPを書いてくださっていて、とても嬉しかったです。ありがとうございます。

通販の方はまだ始まっていないようで、在庫はバツのようです。委託した量が少ないからかも。(16日追記)通販の販売も始まりました。

ec.toranoana.shop

なお、COMIC ZINのほうは見つけ方がいまいちだったのか秋葉原店での陳列は確認できなかったので、確実にあるといえるのは新宿店のみになりそうです。

MacPortsをやめてHomebrewにしたけどMacPortsに戻ってmikutter環境作り直した話

わたしはmikutterをまともに使えるのでMacPorts派なんですが、XQuartzもリリースされなくなって久しく、どうもMacPortsのリリースを使えということのようですが、そうするとmac-uimの調整が面倒そうだったので、Homebrewに移行してみました。

Homebrewは昔からmikutterとの相性が悪いと言うかGTK周りが微妙に不安定で使い物にならない印象(個人の感想です)だったのですが、昨今はXQuatrzなしでも動いてIMEMacで使用しているものがそのまま動くっぽいと聞いていたので期待していたのですが……だめでした。インストールとmikutter環境の整備自体はさっくりできたんですが、mikutterのウィンドウが非アクティブの間プロセスがスリープしたような状態になっていて、ウィンドウがアクティブになると我に返ったようにTLが流れ出すというもの。なんやこれ使い物にならんやんけェ!

というわけでMacPortsにカムバックです。が、これはこれでつまづいたのでメモ。

MacPortsのインストールとgtkのインストールは難なく。あと、XQuartzはmac-uimの調整を頑張るという意味でMacPorts版をインストール。

Rubyを入れてmikutterのbundleをしていたところでエラー。cairoのところで引っかかりました。

akkie@Soful-usb:~/mikutter (master) $ gem install cairo
Building native extensions. This could take a while...
ERROR:  Error installing cairo:
	ERROR: Failed to build gem native extension.

    current directory: /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/cairo-1.15.14/ext/cairo
/Users/akkie/.rbenv/versions/2.5.1/bin/ruby -r ./siteconf20181013-80742-1d89nxg.rb extconf.rb
checking for GCC... yes
checking for Win32 OS... no
checking for cairo version (>= 1.2.0)... yes
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/Users/akkie/.rbenv/versions/2.5.1/bin/$(RUBY_BASE_NAME)
	--with-pkg-config
	--without-pkg-config
	--with-override-variables
	--without-override-variables
/Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:299:in `parse_pc': .pc for xproto doesn't exist. (RuntimeError)
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:196:in `declaration'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:210:in `collect_cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:145:in `cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:215:in `block in collect_cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:214:in `collect'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:214:in `collect_cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:145:in `cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:212:in `block in collect_cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:211:in `collect'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:211:in `collect_cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:145:in `cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:212:in `block in collect_cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:211:in `collect'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:211:in `collect_cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:145:in `cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:215:in `block in collect_cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:214:in `collect'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:214:in `collect_cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:145:in `cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:212:in `block in collect_cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:211:in `collect'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:211:in `collect_cflags'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:154:in `cflags_only_other'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:475:in `cflags_only_other'
	from /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pkg-config-1.3.1/lib/pkg-config.rb:522:in `have_package'
	from extconf.rb:52:in `required_pkg_config_package'
	from extconf.rb:60:in `<main>'

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-17/2.5.0-static/cairo-1.15.14/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/cairo-1.15.14 for inspection.
Results logged to /Users/akkie/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-17/2.5.0-static/cairo-1.15.14/gem_make.out

pkgsrcのxproto.pcがないとのこと。しらべたところ、/opt/local/lib/pkgsrcと/opt/local/share/pkgsrcの2箇所に.pcファイルが分散していて後者を参照できていない様子だったので、.bash_profileに以下を追記してgot kotonaki。:$PKG_CONFIG_PATHこそつけていますが、echoしたら何もなかったです。念の為です。

export PKG_CONFIG_PATH="/opt/local/lib/pkgconfig:/opt/local/share/pkgconfig:$PKG_CONFIG_PATH"

libidnもMacPortsでlibidnを入れたり/opt/localを指定してgemをインストールする必要があるので以下の通りやっていきます。

$ sudo port install libidn
$ gem install idn-ruby -- --with-idn-dir=/opt/local

MacUIMは https://github.com/e-kato/macuim/releases から最新とMacUIM 0.6.16-2とMacUIM.appを持ってきてインストールした後にMacUIM.appを/Library/Input Methodsに放り込みます。

その他設定はあひるさんが私の過去の記事をアップデートしたものを用意してくれているのでそれを参考にやりますが、plistファイルは~/.MacOSディレクトリ以下に置いて良さそうなのでそうしました。

github.com

MacPorts版向けのmac-uimの調整。そのままuim-ximを動かすとコケます。

akkie@Soful-usb:~ $ /Library/Frameworks/UIM.framework/Versions/Current/bin/uim-xim &
[1] 866
dyld: Library not loaded: /usr/X11/lib/libXext.6.dylib
  Referenced from: /Library/Frameworks/UIM.framework/Versions/Current/bin/uim-xim
  Reason: image not found
[1]+  Abort trap: 6           /Library/Frameworks/UIM.framework/Versions/Current/bin/uim-xim

が、libXext.6.dylibは/opt/local/lib/libXext.6.dylibにあるようなので、/usr/X11を/opt/localに向ければOK。大変そうと思いきや大したことなかった。

akkie@Soful-usb:~ $ ls -l /usr/
total 0
lrwxr-xr-x    1 root  wheel      8  9 26  2017 X11 -> /opt/X11
lrwxr-xr-x    1 root  wheel      8  9 26  2017 X11R6 -> /opt/X11 ←こいつはsudoでも消えなかったので無視
akkie@Soful-usb:~ $ sudo rm -rf /usr/X11
akkie@Soful-usb:~ $ sudo ln -s /opt/local /usr/X11
akkie@Soful-usb:~ $ /Library/Frameworks/UIM.framework/Versions/Current/bin/uim-xim
uim <-> XIM bridge. Supporting multiple locales.
Using full-synchronous XIM event flow
(動いたのを確認したらCtrl+Cで止める)

これでひととおりMacPortsなmikutterが復旧しました。MacPorts版のXQuartzはオフィシャルのパッケージよりも新しいので、これは積極的に切り替えても良さそうな気がしました。Homebrewもプロセスがスリープするみたいなあの挙動がなければまあ良かったんですけどねえ。あと、「mikutterではIMEの切り替えは(MacUIMの)Shift+Space」という癖が完全に定着してしまっていて、Homebrewで普通に英数/かなで切り替えるという操作をめっちゃ失敗している自分に笑ってしまいました。もとに戻ってめっちゃ安心して草。