あっきぃ日誌

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

OSC2019 Tokyo/Springレポ。

22日、23日はOSC2019 Tokyo/Springでした。ブースに遊びにきてくれた方、セミナーを聞きに来てくれた方、ありがとうございました。

早速ですが今回の展示ブース。Ejectと1机をシェアになってしまったので、展示スペースに余裕がなく、毎回出してる系の展示物は減らしての展示としました。

f:id:Akkiesoft:20190224225302j:plain:w640

前回に引き続きPicadeを展示しましたが、実は今回はディスプレイがすこし大きくなっていました。Picadeは10インチディスプレイやボタンを光るタイプに変更できるアップグレードオプションをラインナップしています。隣のPi-topは、実は前からユーザー会が所有していたものの、なんか不安定で放置していたものを久しぶりに出したものです。なので旧モデルなんですが、いつものマイクラ+SkyWriter HATのデモをこれにやらせてみました。Pi-top OSよりはマシっぽいんですが、それでも突然死ぬのはやっぱ電源とかディスプレイの方のアレなのかしら。あと私自信が忘れていましたが、このPi-top、バッテリーが載っていて充電したあとはケーブル無しで持ち歩きできます。

f:id:Akkiesoft:20190224225327j:plain:w480

ノベルティ配布とその他ラズピッピの展示。Raspberry Pi 3 Model A+は日本の認証通過がまだですので、静態展示です。それでもヒートシンクを貼ってるのは、動かせる日を夢見て貼っただけです。

f:id:Akkiesoft:20190224225953j:plain:w480

Ejectブースはいつもの鐘と、Software Design 2019年1月号で紹介したベゼル強化型ドライブを縦置きで展示しました。スーモは多摩センターの乗り換え経路の途中にあるゲーセンで100円で取ったもの。SDではお茶をいれてましたが、OSC会場でやるわけにもいきませんからね。

f:id:Akkiesoft:20190224230427j:plain:h480

セミナーは久しぶりのEject入門セミナー。10年ぶんの作品を振り返りつつEjectコマンド工作入門としてスマートコンセントを作り、最後はラズピッピで電子工作の敷居がめちゃめちゃ下がり、IoT製品が安く手軽に買えるようになった今Ejectコマンド工作は必要かという話題にも触れました。

speakerdeck.com

懇親会ではラズピッピプラレールのブログをLTに落とし込んで発表しました。なのでブログを見てもらったほうが良いですが、一応上げときました。

speakerdeck.com

話を展示物に戻して、一応目玉のラズピッピプラレールの話。置き場がなく床において展示したため、目立たないどころかたまに蹴飛ばされる始末でしたが、場所がなかったので仕方ないなあという感じでした。会場の無線LANの混雑で走らなかったり、例によってバッテリー容量が少なくて充電時間が多かったのは惜しいといった感じでした。バッテリーはとりあえず改善したいところ。

ブースに置く前、プラレール加算器のレイアウトを走らせてもらいました。手持ちの古い高架橋と高さが違ったため、高さの建築限界問題が起きましたが、側面には余裕がありそうだったので、横に張り直してgot kotonaki。見栄えは餅からアレなので、これでもまあ良いでしょう。

f:id:Akkiesoft:20190224232536j:plain:w640

今回の加算器は16層積み上げつつポインターの0/1を可視化できる鈴木さん特製アタッチを使ったビットカウンター!構築は私も少しだけお手伝いさせてもらいました。

f:id:Akkiesoft:20190224232913j:plain:w640

走行の様子。まさかこんなに縦に積まれると思っていなかったのでビビりましたが、いちおう難なく登ってくれて一安心でした。

youtu.be

その他ネタ。今回の学食でラーメンを食べたらピリ辛ネギラーメンなるものがありこれを食べたのですが、うまいかわりに辛さで鼻水が出まくって、ティッシュもなく鼻を垂らしながら食べてました……。

f:id:Akkiesoft:20190224234527j:plain:w480

2日目はンゴイベントがあり、少し遅刻して多摩センターでチェックインしてからOSC会場に行きました。明星大学はストップが2〜3個と寂しいのですが、会場の26号館はストップがないわりにモンスターがスポーンするので、いちおう取るものはしっかり取れました。よかった。

f:id:Akkiesoft:20190224233721j:plain:h480

おわり。そして来週はRaspberry Jam Big Birthday Weekend 2019 in TOKYOです。会場で再来週って言っちゃった気がするけど来週でした。Picadeは来週の展示ではボタンが光るようになっている予定です。是非参加登録を!

www.raspi.jp

Anker PowerPort Atom PD 1を買った

Ankerから昨年末に発表された、GaN(窒化ガリウム)を採用してめちゃくちゃ小さくなった30W USB Type-C 電源アダプターがいよいよ日本でも発売されたらしいので、早速ポチりました。めっちゃ気になってたし、MacBook Air 2018と持ち歩く用のアダプターはなにかしら1つ欲しかったので。

21日配達予定でしょんぼりしていたら何故か今日(20日)届いてラッキーな気持ちになりました。

会社に到着して即開封して、iPhoneのACアダプターと比較。お、さすがにこれよりは一回り大きいですね。けど出力は6倍(5W vs. 30W)と考えるとこんなに小さくなるんか!という感じしてきますね。

f:id:Akkiesoft:20190220230019j:plain:h480

製品写真を見ていて、プラグはたため……ない?と見ていましたが、たためませんでした。これがたためるとなお良しだったような気がしますが、あの部分が壊れやすそうという見方もできるので、悩ましいです。

f:id:Akkiesoft:20190220230005j:plain:w480

帰宅してMacBook Air 2018のアダプターとも比較。すでにシール貼り付け済みだけど許せ。そしてまあ、小さいですね。

f:id:Akkiesoft:20190220230410j:plain:w480

f:id:Akkiesoft:20190220230413j:plain:w480

MacBook Airと接続中(充電済みの状態)の本体は体感で40度弱くらいのぬるくて今時期には程よいと感じられる発熱具合でした。

あと、MacBook Air 2018のアダプターが106gに対してAtom PD 1が55gと、重量でも有利なのもポイントそうです。軽いは正義。

お値段は3,499円とまあまあなお値段ですが、MacBook Air 2018のアダプターも買えば4,800(+税)なので、実は価格も有利と。なにこれめっちゃすごいじゃん。

まとめ: 新素材を使った軽量小型ニューガジェットという聞いても触っても使ってもワクワクするガジェットでした。アリ!

Raspberry Piで走らせるカメラ付きプラレール

年末に東急2020系のプラレール車両を買いました。ほしかったのはおまけの2020系のカタログの方だったのは言うまでもないですが、せっかくなので車両も何かしら遊んでみることにして、1月から気が向いたときにちまちまといじくっていました。

f:id:Akkiesoft:20190220133335j:plain:w480

で、いじくった結果がこちら。元の車体に穴を開けたりするような破壊的な改造は加えないとだけ決めて、Raspberry Piを載せたりなんだりした結果、リモートから運転操作しながら運転台からの映像が見られる物体になりました。

f:id:Akkiesoft:20190220222450j:plain:w640

f:id:Akkiesoft:20190220140117j:plain:w640

動画で。

youtu.be

……あらかじめ書いておくと、こんなことをしなくてもタカラトミー自らがそう言う製品を売っています。しかし、私ドクターイエローいまだに見たことなくて身近な乗り物ではないからなあ?

使った部材

使用した部材は、Pimoroniで販売されているPiZero向けの小型カメラモジュール、LiPo SHIMとLiPoバッテリー、前にイジェピラーで使っていたL9110Sモータードライバー、単3形ダミー電池、細い電線です。あと、本当は2.5インチSSDのシャーシに埋め込んで使うつもりだったPiZero W。

Wide Angle Camera Module for Raspberry Pi Zero – Pimoroni

akkiesoft.hatenablog.jp

LiPo SHIM – Pimoroni

akkiesoft.hatenablog.jp

www.dx.com

単3型ダミー電池 UM-3Dの通販ならマルツオンライン

https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-585G

組成

先頭動力車には屋根にPiZero Wと、運転席に小型カメラモジュールを設置。車体は非破壊の方針なので、固定はひっつき虫です。電池は単3ですが、加工したダミー電池(後述)を差し込み、ここでの電池交換は基本的にしません。

中間車にはモータードライバーとLiPo SHIMを搭載。LiPo SHIMはLiPo電池のコネクターがあり、抜き差しできる必要があるので屋根にひっつき虫で固定しました。配線は極力車内を通しています。モータードライバーは車内に雑に放り込み、固定はしていません。ピンヘッダーとかがついていて扱いやすいモジュールですが、面倒なのでケーブルはすべてはんだ付けしました。配線のため、先頭動力車とは連結解除できなくなっています。

付随先頭車である反対側の先頭車にはLiPoバッテリーを固定無しで放り込んでいます。コネクター部分だけ外出ししてあり、中間車と接続するか連結解除して充電器につなぐかができるようにしました。

各部の工作の過程

カメラ

とりあえずPiZero Wとカメラをつけて、走行は制御せず走るようすが録画できるみたいなものを作りました。

f:id:Akkiesoft:20190220134257j:plain:h480

後からカメラを小型に変更しました。

f:id:Akkiesoft:20190220134222j:plain:w480

ダミー電池の加工

モーターの制御は、モータードライバーでPWMコントロールするため、プラレールに入れる電池はダミー電池として、ダミー電池の+と-からそれぞれ伸ばしたケーブルをモータードライバーと接続します。ダミー電池は+と-がワイヤーでつながった状態なので、ニッパーで切り離して、ケーブルをはんだ付けしました。試作段階では、単4電池を単3電池に変換するアダプターを使い、-側にアルミホイルを詰めていました。このまま使っても良かったのですが、ケーブルを補足するタイミングで交換しました。

f:id:Akkiesoft:20190220133523j:plain:w480

モータードライバーの追加

リモート走行するためのモータードライバーを追加し始めた様子。

f:id:Akkiesoft:20190220134534j:plain:w480

テスト段階ではひとまず屋根上に載せていましたが、結構かさばって見栄えが悪いので後から車内に格納しました。

youtu.be

モータードライバーには3V以上の電源が必要ですが、Raspberry Piの3.3Vを利用するのと不安定っぽいので考えていたところ、LiPo SHIMにバッテリーの電源(3.6V or 3.7V)がそのまま取り出せる穴(BAT+, GND)があいていたのでここから取るようにしました。バッテリーの容量が小さいのでどのみちすぐ容量がなくなって不安定になるんですけど。

中間車に詰め込んだ後の様子。

f:id:Akkiesoft:20190220135037j:plain:w480

LiPo SHIMの配置

試作の段階ではLiPo SHIMはピンソケットがつえた状態で、PiZero Wもヘッダーがついた状態でした。ただ走らせるぶんにはこれでも問題ありませんが、橋をくぐるときに建築限界を確実に超えてしまうため、ヘッダーを外して分散させる方法にしました。

ピンソケットの取り外し。買ってすぐの状態に戻したとも言う。

f:id:Akkiesoft:20190220135528j:plain:w480

ブックオフのホビーコーナーで仕入れた橋を無事にくぐる様子。

f:id:Akkiesoft:20190220222709j:plain:w480

Web UI

カメラモジュールの映像をライブストリーミングする方法を調べたところ、PythonのPiCameraモジュールのドキュメントにサンプルが載っており、そのまま使えるレベルだったので使用しています。これは先日のOSC2019 OsakaでEjectコマンドユーザー会のリモートブースで使用したのと同じです。

akkiesoft.hatenablog.jp

マスコンはINPUTタグのスライダーを90度回したものをそれっぽくカラーリングしました。マスコンの操作で現在の位置を出す部分にはイベント駆動を利用して、移動結果をAPIに送るにはonupdateを利用しています。

f:id:Akkiesoft:20190220222937j:plain:h480

f:id:Akkiesoft:20190220223000j:plain:h480

モーターの制御は先述のイジェピラーのコードを少し流用する形で実装しつつ、マスコンの位置に合わせてスピードを変えたり、ブレーキのかかり具合を決めたりしています。w

課題/TODO

  • バッテリーがすぐ無くなる。デカいバッテリーは車内に入らないのが難点。
  • バック機能。優先順位が低いだけ。
  • WebUIのデザインセンスを磨く(?)

展示予定です!

Raspberry Piで走行可能にしたカメラ付きプラレールは、今週末のOSC2019 Tokyo/Springで展示予定です。建築限界的に問題なければ、加算器とのコラボもできるかも知れませんね(建築限界を気にしていたのはこれが理由!)。

event.ospn.jp

また、3/3に日本橋サイボウズさんの会場をお借りして、「Raspberry Jam Big Birthday Weekend 2019 in TOKYO」と題し、今年もラズパイのお誕生日を祝います。こちらでも展示予定ですので、ぜひご参加ください。

www.raspi.jp

充電時間のほうが長いかも知れませんが、ぜひ見に来てくださいね。

じゃがビー山わさび5倍味

日高晤郎ショーフォーエバセブンイレブン探検隊タイアップ商品のじゃがビー山わさび5倍味!実家に頼んで箱で送ってもらいました。スキマには北の勝の酒粕初音ミクの全面広告の新聞紙入り。

f:id:Akkiesoft:20190219092728j:plain

箱は今回パッケージの蓋をコレクションできるようになっていて、そこに伝票がはられないようにカレンダーで包んでもらっていました。ありがてえ。実際にはそこから更に根室クロネコヤマトの営業所がビニールとバンドでガチガチに留めてくれていました。根室のヤマト梱包好きだなあ!

f:id:Akkiesoft:20190219092908j:plain

んで今早速1個開けて食べてるんですけど、うまから〜〜。名言は「あ〜がとちゃんぽこりんのけ」。いきなりすごいのが出てきたな。

f:id:Akkiesoft:20190219092938j:plain

先週のラジオでも、見つけ次第箱買いしている人のお便りが読まれていて、ガチ勢すっげ…と思って聞いてました。が、先週のエンディングの時間、自転車で散歩に出ていて聞き逃したら、3月23日が最終回との告知がされていたんですね……。radikoのタイムフリーで聞いてポカーンとなってしまいました。

www.stv.jp

曰く、当初はひとまず3ヶ月、そこから半年に変わり、1年続く結果になったと。吉川アナのラジオけっこうすぐ自分の中では馴染むくらい楽しんでいたので、とても残念です。次の番組、どうなるんだろうなあ。

radikoプレミアムはもともと日高晤郎ショーフォーのために契約していたので、聞くことがなくなってしまうと解約が視野に入ってしまうなあ。いま他にはマッキーのWho Cares?を聞いているところですが、これは関東にいるなら無料で聞けるので……。

2018年(度)はいろんな人がこの世を(しかも大体突然に)去っていったり、あれやこれやが終了したりと、なんか平成の終わりを爪でこれでもかとぎっちり印でもつけているんじゃないかと思うくらい、はっきりと区切りがつけられているような気持ちにさせられる今日このごろです。自分で何言ってるのかよくわからんけど。

はてなハイクのデータをはてな製CSVより充実したJSONで自力エクスポートする

ハイク終了1ヶ月前まで焦らしておいて、ようやく出てきたエクスポート機能。

d.hatena.ne.jp

えっCSV……?必要な項目があったら連絡してね……?何言ってるんだろうと思いながらも、早速ダウンロードしようとしたら、エラー吐いて死んだんですが、これは????

f:id:Akkiesoft:20190214000147p:plain

は?バカにしてくれちゃって〜www。自分で書きました。こんなギリギリまで引っ張ってこんなゴミ機能しかリリースできないとは笑止!(ここにタテジワネズミの画像を貼る)

私のスクリプトではAPIが返すJSONをそのまま保存するので、一見よくわからん情報もあるように見えますが、はてな謹製のエクスポートデータよりも完全なデータが取得できます。ハイクがなくなった後で「このパラメータがほしかった」となっても、もう手に入らないので。

Python: https://gist.github.com/Akkiesoft/afd6a0d2aeaac95780c651d8f759b7b7

UserScript: https://gist.github.com/Akkiesoft/bf94c62e993174e29411475eca456a70

Python分かる人は普通にこれでやったらいいような気がします。わかんない人はUserScript版をChrome + TamperMonkey環境で実行してください。

Tampermonkey - Chrome ウェブストア

UserScriptをインストールすると、ハイクの投稿ボックスの上になんかメッセージが出始めます。「ダウンロード」ボタンを押すとデータをハイクから取得します。取得中はこんなかんじでデータの取得状況が出ます。タブを閉じたり、ページを移動したりしないで待ちます。

f:id:Akkiesoft:20190214210113p:plain

取得が終わったら「ダウンロード」というリンクが増えます。これをクリックしてZIPファイルをダウンロードします。

f:id:Akkiesoft:20190214220127p:plain

というわけで、私の場合は複数のJSONが27MBくらい分降ってきました。12年の重みよ……いっかいエクスポートした後全消しやったので別のところにもうちょっとあるんだけど。

FAQ

スターの情報とかスタコメ(吹き出しマーク内のコメント)は入ってるの

はてなハイクはてなスターはもともと別サービスなので、ハイクAPIで取得ができません。今回終了するのはハイクなので、スターは終了しません。スターの情報はURLに紐付いて管理されているので、URLがわかればスターやスタコメも参照できます。むかし作った謎ページで見られます。なんか適当なハイクのエントリーURLを入れて見てみてください。

https://kokuda.org/service/star.html

ちなみにJSONにはスターをつけたユーザーのユニーク数がfavoritedに格納されています。

写真は

はてなフォトライフにアップロードされているので消えません。はてなが提供しているCSVでどういう書かれ方をしているか知りませんが、記法かURLであればそれをたどって画像を参照できるでしょう。

時刻は入ってるの

UTC+0なので自分で+9時間する必要はありますが、入ってますね。APIから帰ってくるのはunixtimeではないので。

JSON取って何するの

今のところ何もないけど、誰かがデータをインポートしてなにかできるサービスとかを作ったときに、手元にデータが無いと何もできないよ。私が取得したということはなにかしようと思っていないことはないよ。

特定の日付まで云々の入力ボックスについて

初めて取得した時点から、ハイク終了日までのエントリーをエクスポートをするときに使うやつです。

取得したZIPファイルに含まれている「ID-<数字>.json」のファイルのうち<数字>が一番大きいやつをボックスに貼り付けてからダウンロードボタンをクリックすると、途中でダウンロードを終わってくれます。

200エントリー単位で処理するので、データの重複が発生しますが許せ。

技術的なおもしろかったところ

jszip.jsをUserScript内で使ってみたんですが、大量に取得したJSONJavaScriptでZIPにまとめてダウンロードできるようにするとかめっちゃおもしろかった。ローカルに溜め込めるってことなんたよな。そんなこんなでハイクから引っ張ってくるのが130行ちょいでできちゃうと。すごい時代よね。

さいごに

データのエクスポートはいつまで提供されますか?って問い合わせたら、ハイクのサービス終了と同時にエクスポート機能も終了しますと回答を得ました。素敵ですね。終了直前のハイクははてな謹製エクスポートツールではエクスポートできないことが容易に想像できます。最後はスクショで保存しろと?笑

Haiku2Twitみたいに、登録してもらったユーザーのハイクをクロールして、転送ではなく保存しておくようなサービスでも今から書くべきなのかしら。悩ましい。

あと仕事中に書いてしまい、反省している。

CSV

どういう形式で降ってくるのか、ダウンロードできないから相変わらずわからなくて、どういうのか見たいんですけど。

追記

ダウンロードしたJSONを読み込んでそれっぽく表示するHTMLファイルというものも試しに作ってみました。思いつきで随時更新してます。とりあえずそれっぽい整形とスター・スタコメが出る辺りまで。いやほんと、今どきのJavaScript何でもかんたんにできるなまじで。

ハイクから拾ってきたJSONを食わせるとハイクっぽいTLに仕上げるやつ。JavaScriptまじで何でもできてすごいわね。 · GitHub