Ejectコマンド工作入門2019 / 20190601-osc19do-eject

Ejectコマンド工作入門2019 / 20190601-osc19do-eject

OSC2019 Hokkaidoにて発表

74476e142a767a018d68c5e72e34ee2f?s=128

Akira Ouchi

June 01, 2019
Tweet

Transcript

  1. Ejectコマンド工作入門 2019 Ejectコマンドユーザー会 あっきぃ ( id:Akkiesoft ) 2019/02/23 OSC2019 Spring

  2. 自己紹介 • あっきぃです (@Akkiesoft@social.mikutter.hachune.net) – Mastodon。自分でもサーバー運用はじめました • Ejectコマンドユーザー会主宰 – eject.kokuda.org

    安定の放置サイト • Raspberry Pi ユーザー会 – raspi.jp こっちはブログ書いてます • ミクだいすきー
  3. 今日のブース • 貼り忘れてなかったらここに今日のブースの写真 がある • あなたの予想に反して、この文字が見えているで しょうか?

  4. イジェンダ • Ejectコマンドユーザー会とは • Ejectの10年を振り返る • 最近の活動 • Eject入門2019 •

    いまEjectを使う必要があるか問題
  5. EJECTコマンドユーザー会とは

  6. Ejectコマンドユーザー会とは • CD-ROMドライブのトレイ開閉と • PCやRaspberry PiなどLinux機を 組み合わせて • 主にホームオートメーションを実現する •

    IoT系工作を作るユーザーの集い • Ejectコマンド工作と呼んでいる
  7. Ejectコマンド工作とは • Ejectのソフトウェア制御によるト レイ開閉を利用して、トレイの開 閉運動と連動した工作物をつく ること • ピタゴラスイッチっぽいもの

  8. Ejectコマンド • https://linuxjm.osdn.jp/html/eject /man1/eject.1.html • 要約 – ソフトウェア制御によってイジェクトできる – CD-ROMドライブのトレイを開閉できる

    – マウントされていたらアンマウントする • 現代的にはUSBメモリなどにも有用 • umountでいいんだけど、まあ。
  9. トレイ開閉を利用する • CD-ROMドライブはEjectコマンドを実行すると、ト レイの開閉運動を得ることができる – Ejectする=トレイで物を押しだす・突くなど • こらちを主に利用 – Loadする=トレイでものを引く

    • 5インチベイタイプのドライブの場合、開閉の運動 を繰り返し得ることができる 9
  10. リモートやタイマーでEjectする • SSHからリモートで実行 – データセンターではサーバの特定に使われるいたずら にも利用される • Ejectコマンド工作的にはPHPやPythonやRubyな どの言語を利用してWeb画面からEject •

    cronやatdを利用して決まった時間にEjectコマン ド工作を実行 • TwitterやSlackなどSNS連携
  11. ユーザー会の活動 • ない – OSC出展時が活動タイミング – 最近はラズパイユーザー会にくっつく形でMaker Faire にも •

    Webサイトは昨年2年くらい放置した分を補完し た • ML…そんなのもありましたね… • (たぶん)相変わらずのひとりコミュニティ
  12. EJECTコマンド工作の10年を 振り返る

  13. お、俺の10年は一体ッ… • 人の寿命によるけど、80歳まで生きたとしたら 人生の1/8をEjectに費やしたことに • おもな作ったもの – ハムスターの餌やり – エアコン

    – スマートコンセント – カーテン – 植物の水やり – CDTea • 同人誌4冊、雑誌とかの執筆少々
  14. はじめてのEject(2009) • OSCに遠征(北海道)に出かける間、ハムスターの 自動給餌をしたいと思った • 時間が限られた中で、家にあるものを見ていたら CD-ROMドライブとIDE-USB変換ケーブルがでてき た • 自宅サーバーに繋いで

    工作してしまった
  15. ハムスターの餌やり(2009) • 装置系 – ML110/115に付いていたCD-ROMドライブ – IDE→USB変換ケーブルと電源(自宅サーバに接続) • エサ格納 –

    ヨーグルトのカップとヒモ – ダンボール – セロハンテープとか •ejectコマンド
  16. しくみ 1. ドライブにejectコマンドを送ってトレイをオープン 2. トレイがカップ(傾斜付き)を倒してエサが落ちる 3. エサやり完了 独自の(ナゾの)エサ飛び散り防止機構付き

  17. 動作の様子 • カップは(メッシュ)棚の上の段から吊されている • トレイのスキマからエサが落ちる • 1つ問題が発生:CD-ROMドライブにエサが詰まる – ドライブ入り口にガード(付箋)を設置して解決

  18. 現在の給餌(2013〜) • ダンボールとテープだけでできるよう簡素化。(縦に 積み増して)複数回餌やり対応

  19. 金魚の給餌も(2016) • フレークタイプはEjectでできた • ろうとをトレイでつつくと餌が落ちる

  20. 今の給餌(2017〜2019) • 2年たってめちゃくちゃでかくなったので粒タイプの 餌に変更 • Raspberry Piとサーボ モーターで給餌に • この金魚はこないだ外出中に

    水槽から飛び出して死んだ • (◞‸◟)
  21. エアコンの電源操作(2010) • はじめはボタンを直接押した • 次世代では電源ボタンの回路を取り出してアー ケードスイッチで押せるようにした

  22. 現在のエアコンリモート(2013〜) • Raspberry PiによってCD-ROMドライブとアーケー ドスイッチがフォトカプラーに置き換えられた • リモコンは変わっていない • Raspberry Piで

    "卒Eject"した例
  23. 除夜の鐘 • 「除夜のEject」 • 毎年12月31日にYoutubeで中継 • Mastodon/Twitterを通じてだれでもEjectで鐘を つくことができる • 結果は中継で確認

  24. スマートコンセント(2011) • ホームセンターからタンブラースイッチを買ってきて 節電タップを自作 • Ejectコマンドの-t(閉じる)/-T(トグル)を活用してオ ンオフ両方を実現 • 節電タップは100円ショップの ものに変更してさらに簡単に

    なった
  25. カーテンオープナー • 毎朝カーテンをオープンする工作 – 紐を引くとカーテンが開く工作(両開き対応) – 紐につけたおもり – おもりを落とすドライブ •

    閉じられないのでリセットは手動
  26. 植物の水やり • スマートコンセントとペットボトルとチューブの組み 合わせ • ポンプでボトルに空気を送り込み、水を押し出す • 1回しか使わな かった •

    多分便利
  27. Ejectコマンド工作式CDTea • 光学ドライブでお茶を淹れる装置 • オリジナルである海外の事例は ドライブの内部を魔改造していた が、スタンドを作成してベゼルに 改造に留めることでejectコマンド で実現 •

    実用性は不明
  28. 同人活動 • Ejectのうすい本を4作発表 • 今は4作まとめた総集編「EJECTO 2012-2017」を 頒布中(800円) • 本日10部限定で頒布中です。 •

    COMIC ZIN, とらのあなでも委託販売中です – ZIN 新宿店がおすすめ • って書いてたけど閉店するらしく(◞‸◟) – 通販できます
  29. 書籍への執筆 • Raspberry Pi [実用] 入門(2013) • シェルスクリプトマガジン(2015) • Software

    Design – 2017/1 除夜のEject – 2017/9 Ejectスマートコンセント – 2018/3 CD-ROMにRPiを内蔵 – 2019/1 垂直Eject
  30. 最近の活動

  31. Software Designへの執筆 • 年1〜2回ほどEjectでネタを執筆 • Ejectコマンド工作はソフトウェアなのか? • 同人誌からの使い回しでいいですよと言われてる けど、使いまわしつつ新規ネタを混ぜ込んでます

  32. OSC2019 Osakaを欠席 • 帯状疱疹がでたので出展をキャンセル • 自宅にリモートブースを構えてRaspberry Piでスト リーミング配信 してみた •

    (工作はなし) • 意外といけた
  33. 構成 • PiZero W+カメラ – 雑に無線LAN – ドライブをUSB接続 • Python簡易HTTPサーバー

    スクリプト – PiCameraでストリーミング配信 – ボタンを押すとEject • 自宅のWebサーバーから リバースプロキシで配信
  34. PiCameraのストリーミング • ドキュメントのサンプルだけで十分動く • https://picamera.readthedocs.io/en/latest/rec ipes2.html#web-streaming • mjpegでやるらしい • 時間が経つとスクショみたいな感じで映像が荒れ

    るのは謎
  35. スクリプトはGitHubに • https://github.com/Akkiesoft/Eject- Command-Users- Group/tree/master/EjeStream • ブログ – http://akkiesoft.hatenablog.jp/entry/20190127/1 548588834

  36. 生き物の観察と組み合わせ? • ハムスターの餌やりとかと組み合わせたら観察しな がら餌をあげられそう • ネットワーク帯域との兼ね合いもありつつ – 見るときだけストリーミング起動できれば良さそう

  37. EJECT入門2019

  38. 何作ろう • スマートコンセントの作り方でもやりますか • Amazonだと1,900円くらいで買える – スマートスピーカー/IFTTT連携付き! • Ejectは…プライスレスだよ! –

    どのくらい家にあるものが使いまわせるかによる – ラズパイ持ってなかったらそれだけで1,900円超えるよ ね、でもみんな余してるよね、はい解決 – 一通り持ってたら100円でできる
  39. 必要なもの(Ejectまわり) • CD-ROMドライブ(IDE or SATA) • IDE(SATA)-USB変換ケーブル – 電源ケーブルとセットで •

    Linux PC(Raspberry Pi) – USB電源とMicroUSBケーブル
  40. 必要なもの(工作まわり) • 100円ショップの節電タップ • テーブルタップ • 100円ショップのカードケース – ドライブの高さ調節ができれば適当なあり物でも •

    養生テープ
  41. タップを固定する • 名刺ケースは乗せるだけ

  42. 節電タップを乗せる

  43. ドライブを置く

  44. ドライブを固定

  45. 位置について • 節電タップによって正面にしかないやつがあるので こんな感じで配置 – ダイソーの節電タップは今これが現行モデル

  46. IDE-USBケーブルとRPiを接続

  47. Ejectする • Ejectパッケージをインストール • コマンドを実行 $ apt update $ apt

    install -y eject $ eject (トレイを開く) $ eject -t (トレイを閉じる) $ eject -T (トレイ開閉を繰り返す) $ eject /dev/sr0 (デバイスを指定)
  48. 操作でき…!でき…!!

  49. できなかった(◞‸◟) • 例に使用した節電タップはONが触ってわかるよう に盛り上がっていて、そこに引っかかった – メジャーどころのダイソーの節電タップでできないとは • 削ってしまうと良いかも(雑) • できる例はブースで展示してます(・ω<)

    – べつの100円ショップで見つけたけど買って以降みかけ ない
  50. ダイソーさん… • 1口節電タップの下向きになってるバージョンほし い!(Eject的に) • スイッチはONの方の出っ張りがないとうれしい! (Eject的に) • スイッチ操作は軽いのがいい!(Eject的に) –

    重いとEjectでのオンオフが難しい
  51. いまEJECTを使う必要があるか問題

  52. 2009年当時のその手の工作 • わたし「ハムスターの給餌をやりたい!」 • まだ「電子工作と言えばPICとかなんとか」の印象 が濃い世界 – 敷居高 – Arduinoはもうあったらしいけど気づいていない

    – それらを使う発想がなかった • 血迷ってEjectに頼ったらなんとかなった – LTにしたらウケて承認欲求が満たされた
  53. CD-ROMドライブを使う意義 • 当時の主張 • Ejectコマンド工作の大半は電子工作で解決 • 電子工作を勉強したら楽しいはず • しかし、電子工作に抵抗がある人はいる •

    電子工作ができない人は諦めなければいけない か?→NO • CD-ROMドライブを使って工作したら少しカンタンにで きないだろうか?
  54. Ejectコマンド工作のメリット • カンタン(電子工作ができなくても大丈夫) • 手軽(物品調達は難しくなく、比較的安価) • わりと安全(ハンダ付けとかほとんど無い) • Linuxの知識が身につく(かも知れない) –

    atd, cron, udevなど、ふだんあまりさわる機会がない 部分も色々触れる
  55. Ejectコマンド工作のデメリット • 工作の実行成功率にムラがある – 正直、工作による • 場所を取る • サーバー構築の知識はある程度必要 •

    Ejectコマンド工作は万能ではない – 可能性は無限大とは言いつつ、できることは実はあま りない – 出来る範囲のことをやろう
  56. Raspberry Piの登場(2012) • Raspberry Piとか言う安いLinuxPCが出た • 感想 – 「ML110/ML115をサーバーにしなくても これでEjectできるじゃん」

    – 「OSCのデモもネットブックやめてこれでいいじゃん」 – 3500円くらい(当時)?OpenBlocksよりはるかに安い • Eject的には革命が起きた
  57. Raspberry Piがもたらしたもの • しょうもない用途にも気軽に使える 物理Linuxサーバーとして威力を発揮 • 電子工作の敷居をめちゃくちゃ下げた – 豊富すぎる作例。ググって材料を揃えて作ればそのま ま使えるものがゴロゴロする世の中に

    • EjectじゃなくてもRaspberry Piで”かんたんに”実 現できることもできた – エアコン – 金魚の餌やり
  58. IoTブーム • IoT製品がめちゃくちゃたくさん出てきた • エアコンのリモート操作が法律的にいいのか悪い のかもめてたのももはや遠い昔 • Ejectでやってた製品は大体IoT製品になったし値 段も安くなった –

    給餌装置 – リモコン類 – スマートコンセント – カーテン操作
  59. はたして……Ejectが この先生きのこるには? • 今も毎日稼働しているのはカーテン装置だけ • その他は大体役目を果たした気がする • 生き残る必要は無いのでは?

  60. どちらを取るか OR

  61. どちらを取るか https://mornin.jp/ OR OR

  62. Ejectである必要はない • 問題・課題があった時、その時代にある適切な 手段でいい感じに解決しましょう • 電子工作ができる人はそれでやれば良い • 市販品が良いならそれを使えば良い – 普通の人が注目するソリューションなので、

    ブログに書くとブクマとかアクセス数とか稼げる – 価格も手頃になった • Ejectで良いと思ったらそうすれば良い – すぐできるし工作する時間は楽しいしネタになる
  63. Ejectコマンド工作は手段 • ハムスターの世話をOSC遠征中もできるようにした いという課題を解決するために作った • 単にEjectをしたくて作ったわけではない • いまの自分なら多分サーボモーターで作ってしまう かも? •

    どちらが楽だろうか。
  64. まとめ • あっきぃは大事な20代をEjectに費やしてしまいま した • でも私が欲しかったものはIoTデバイスとして後から ついてきて、みんな簡単に使えるようになった • いまもEjectが必要かと言われると、やはりその時 の課題と課題達成のための難易度による

  65. おわり