OSC2015 Hokkaidoにて発表。
Ejectの premiamuな 45分セミナー
View Slide
夕方にLTは ない
意識の高い Ejectファン
(?)
事前登録実績 (OSC2014 Tokyo/Fall) 31名
今回事前登録 16名
みんな
もっと有意義なセミナーに 参加しよう!
Ubuntu JUJUとか 小型衛星 とか
Ejectコマンド工作、 その魅力に迫る。 / OSC Hokkaido 2015 Ejectコマンドユーザー会 あっきぃ ( id:AkkiesoI ) 2015/06/13 OSC2015 Hokkaido
自己紹介
自己紹介 • あっきぃ です • 1988年(昭和63年)生まれ/27歳 • 北海道根室市出身(日本最東端の駅の近く) • OSC北海道皆勤賞(2005年から11回目) • 渋谷で仮想化エンジニアしてます • @AkkiesoI – ツイート量多いのでフォロー非推奨
本日のイジェンダ(内容) 今ではめったに使われないPCパーツである5インチベイタイプのCD-‐ROMドライブを使って生活に役立てるEjectコマンド工作。その素朴な工作はたくさんの人々を苦笑させ、しかし記憶に残るインパクトを与えています。そしていまや全世界にファンが存在するEjectコマンド工作には、一体どのような魅力があるのでしょうか。本セミナーでは、Ejectコマンド工作の真の魅力についてご紹介します
本日のイジェンダ(内容) • 最近の活動内容とか、北海道でまだ発表していないLTとかをここでまとめてやります • LTではすっ飛ばすページも丁寧に解説します – じゃないと時間が余るっしょ!₍₍ (ง ՞ਊ ՞)ว ⁾⁾ • Eject工作入門 • EjectとIoT • 最近のイベント参加レポート • [LT]ドライブ軽量化作戦
Ejectコマンドユーザー会 とは
Ejectコマンドユーザー会とは • CD-‐ROMドライブのトレイ開閉を利用して • トレイに色んなことをさせる工作を作り • リモートやタイマー等で実行することで • QoLの向上を試みるユーザーの集いです • 主にオープンソースカンファレンスで活動 • 公式サイトは Eject で検索 • Google Groupsへの入会お待ちしています
「トレイ開閉を利用する」とは • CD-‐ROMドライブはEjectコマンドを実行するとトレイの開閉運動を得ることができる – Ejectする=トレイで押す – Loadする=トレイで引く • 基本的にはトレイで押すときの動きを使うことが多い – ボタンを押す – おもりを突き落とす 20
トレイに色んなことをさせる工作 • ハムスターにエサをあげる • エアコンの電源を操作する • AC電源を操作する • 除夜の鐘をつく – 去年は実家でやりました
ハムスターにエサをあげる • 初めて作った作品 • 外出先からハムスターの餌をあげられる • ドライブを積めば複数日の給餌に対応 • 2代目ハムスターが 春に亡くなったので 今は使う用事が なくなってしまった
エアコンの電源を操作する • 2010年ごろ開発 • トレイでボタンを直接押す→リモコンから電源回路をハックして外付けボタンをトレイで押す→Raspberry Piで、 予めハックしたリモコン を操作するように進化
AC電源リモート操作 • AC電源をEjectでON/OFFする • ホームセンターで買える スイッチと電線で作れる • プログラムタイマーとしても 使える • 節電とかできそう
除夜の鐘 • 通称「除夜のEject」 • 毎年12月31日にUSTREAMで中継 • だれでもEjectで鐘をつくことができる • Eject結果はUSTで 確認 • 昨年は実家でやった ものの、失敗した
Ejectカーテン • 朝になったらカーテンを開く装置 • カーテンにヒモを通して、おもりを 落とすとカーテンが開く • おもりを落とすのがCD-‐ROM ドライブ • このためだけに RasPiを1台消費
リモートやタイマーでEjectする • PHPやRubyなどの言語を利用してWeb画面からEjectできるようにして、Ejectコマンド工作を実行させる – エアコンの電源ON/OFF • cronやatdを利用して決まった時間にEjectコマンド工作を実行 – 朝カーテンを開ける
QoL向上を目指す • ハムスターに餌をやる – 短期の出張時にどこかに預けなくても良くなる • エアコンの電源を入れられるようにする – 帰宅直前に電源を入れて快適な室温を作れる – エアコンの電源切り忘れを阻止できる • カーテンを開ける – 朝の目覚めを快適なものにする
ユーザー会のアクティビティ • 現在55名強(ML参加人数) • OSC等に展示参加してくれた方は これまで5人(私を含む) • 先月のOSC2015-‐Nagoyaではブースの 半分以上が私以外のユーザーによる展示! • アクティブユーザーは若い • 今、ナウなヤングが集まるアツいOSS?コミュニティはここ(確信)
[LT] ドライブ軽量化大作戦 (Rev.2) これを発表したイベント(Rev.1) 2014/7/12 カーネルVM探検隊 @北陸(予告編) 2014/8/2 OSC2014 Kansai@Kyoto 2014/10/19 OSC2014 Tokyo/Fall
OSC2014 名古屋にて • 東芝の無線LAN内蔵SDカード「FlashAir」がGPIO制御っぽいものに対応したと聞く • CD-‐ROMドライブに内蔵してドライブ単体でEjectしてる風に見せられたら楽しいね、という話題になる • ( ՞ ‸ ՞).oO(それはたのしそうだ) • とりあえずポチった
ドライブをバラそう • 帰宅した翌日朝起きて早々にドライブを分解 • しょっぱなから手を切る • 気をつけよう
さっそく趣旨からズレる • スペースはFlashAirなら普通に押し込める だろうって感じだった(完) • ドライブ内はいくつかの基板とレンズとがリボンケーブルで接続されていた – リボンケーブルを外したらどうなるだろうか? – レンズの部分の稼働を止められたら省電力化 できるか? • 調査からエクストリーム分解に変わった
結果 • トレイ開閉に関係ないリボンケーブルを外しても大丈夫っぽかった • レンズユニット(170g+ちょっと)が取り外せた
ドライブが軽くなった • 634g – 184g == 450gになった • シャーシがないと152gになる
スペース確保できた • FlashAirどころかRaspberry Piも入りそう • 電源もドライブから取れそうなのでGOOD – 12V – 5V
Raspberry Piを内蔵してみよう • FlashAirは制御の難易度が高そうなのでとりあえずRPiを埋めることにした • ちょうどModel Bが1台空いてたからこれを埋めよう • 埋まった (やったぜ)
材料 • SATA接続DVD-‐ROMドライブ • 2.5インチSATA HDD-‐USB変換 • Raspberry Pi Model B • SATAケーブル • ジャンパケーブル • USB無線LANドングル • SD-‐MicroSD変換アダプタ • 養生テープ
ドライブとRPiの接続部をつくる • SATAケーブルを適当な長さに切り出す • ドライブのSATAコネクタ(データ側)破壊して基板にケーブルをハンダ付け • 2.5インチSATA HDD-‐USB変換のコネクタを破壊してSATAケーブルをはんだづけ • USB-‐MiniUSBケーブルでRPiとドライブを接続
こんなかんじ だいぶ強引だった
RPiを埋め込む • 横向きは難しく、縦でもぎりぎりの配置だった – 本体よりも、本体から生えるケーブルが諸々はみだす • ドライブの電源から5V電源を引き出して、RPiのGPIO 5Vに接続 – GPIO 5Vは入力もできる • USB無線LAN、ドライブをUSB接続 • MicroSDカードを挿入
固定 • 養生テープや針金を使って固定 • RPiはSATAケーブルに足をつけて(ホットボンドで固定)ネジで固定 • 最終的には安定 しなかった • B+/A+を使った方が 良さそう?
小窓をつけてみた • ドライブのてっぺんは 実は開く • トレイのディスクを押さえ る部品が入っている • ここを鉄板からプラ板に 変えて中を見られるよう にした
ソフトウェアの実装 • デモ用途なので、TwiierでふぁぼられたらEjectするFavEjectを使用 – hips://github.com/AkkiesoI/Eject-‐Command-‐Users-‐Group/blob/master/faveject.py • OSはもちろんEjebian – RaspbianをEject仕様にカスタマイズしたもの – 不要パッケージ削除+ejectインストール+SSH公開鍵登録済 – NOOBSイメージ化されていていつでもデプロイ可
できあがったら 自慢したい
スタバドヤリングした • おかのさんが自宅近所に来ていたのでスタバで迎撃するついでにドライブを持っていった • 学生が勉強したり、大人がノートPCを広げている中Ejectドヤリングに初成功 _人人人人人人人_ > まわりの邪魔 <  ̄^Y^Y^Y^Y^Y^Y^ ̄
モバイルできるようにしたい • 製作中はコンセントから電源をとっていた • 乾電池8本+モバイルバッテリーはあるけど、一工夫したい • じとめすきーさんから 5V→12V変換ボードを 教えてもらったので 使ってみた
工作 • ペリフェラル4ピンコネクタを自作 • 5VはそのままUSBケーブルを接続 • 12Vは、変換ボードを経由してUSBケーブルを接続
接続してみよう • バッテリーによってはうまく稼働しない – ループ検知している? • Panasonicのバッテリーがいけた • コンパクトになり、軽く、見た目にもすっきりした
Ejectヘルメット復活? • 久々にかぶってみたけど頭痛がしそうな気がして怖くてやめた • 復活やっぱなし
まとめ • ドライブはレンズユニットを取り外すと軽くなる – 軽くなるので工作によってはドライブの力が弱まる • 空いたところに物を埋め込んで何か作れる • モバイルEject環境は個人的には便利(人に見せやすい)な反面、説明は複雑 • ドライブがアイデンティティを失う
後日談: FlashAirも内蔵した • Flash Airではフォトカプラを使って物理ボタンの回路をハック
FlashAirの実装 • RPi内蔵ドライブを流用 • 先駆者の情報を参考に、既成品のSDモジュールでサクッと設置
操作画面の作成 • Web画面もサンプルの HTMLをベース作りこみ • むだにWebフォントを使用 • ( ՞ਊ ՞)の文字は機種依存 なのでSVGデータにして ボタン風に配置 • 麦子ちゃんでシャレオッティに コッディネーヨっ
できあがり!
Ejectコマンド工作 入門
Ejectコマンド工作とは? • CD-‐ROMドライブのトレイ開閉の動力を使って物理的な"しかけ"を動かすもの • Linux環境(Ejectコマンド)と組み合わせて使用することでリモート操作を実現
CD-‐ROMドライブを使う意義 • Ejectコマンド工作でやることの大半は電子工作などで解決する • 電子工作を勉強したら楽しいはず • しかし、電子工作に抵抗がある人はいる • 電子工作ができない人は諦めなければいけないか?→NO • CD-‐ROMドライブを使って工作したら少しカンタンにできないだろうか?
Ejectコマンド工作のメリット • カンタン(電子工作ができなくても大丈夫) • 手軽(物品調達は難しくなく、比較的安価) • わりと安全(ハンダ付けでやけどとかはそんなにない) • Linuxの知識が身につく(かも知れない) – atd, cron, udevなど、ふだんあまりさわる機会がない部分も色々触れる
Ejectコマンド工作のデメリット • 工作の実行成功率にムラがある – 工作による • 場所を取る • サーバー構築の知識はある程度必要 • Ejectコマンド工作は万能でない Ejectコマンド工作は万能でない – 可能性は無限大とは言いつつ、できることは実はあまりない – 出来る範囲のことをやろう
Ejectである必要はない • 自分で実現可能な方法で自由に実装しよう • 電子工作ができる人はそれでやれば良い – 私のエアコンリモートはRasPiに移行した • 市販品が良いならそれを使えば良い – 普通の人が注目するソリューションなので、 ブログに書くとブクマとかアクセス数とか稼げる • Ejectで良いと思ったらそうすれば良い – すぐできるし工作する時間は楽しいしネタになる
Ejectコマンド工作は手段 • 当時飼っていたハムスターの世話をOSCで遠征していてもできるようにしたいという課題解決の必要に迫られて作った – 数週間くらいしかなくて悩んでいた – OSCなどのイベントのネタにしたかった、というのも…あるよ( ;`ω´) • 単にEjectをしたくて作ったわけではない – Ejectだけで喜んでいるのはちょっとやばい
まとめ • Ejectコマンド工作はトレイ開閉の動力を使った工作 • 電子工作しなくてもCD-‐ROMドライブで簡単に実現できる(かもしれない) • Linuxの勉強にもなる • Ejectは手段であり、目的ではない – 無理にEjectですることを考えてはいけない
工作に必要なもの • Eject機材 – CD-‐ROMドライブ(¥100〜¥300) – IDE-‐USB変換ケーブル(¥1,000) – 余っている適当なマシンなど • Raspberry Pi(¥4,000くらい) • 工作の材料 – ダンボール片・紙の小箱・ヒモ – エアコンのリモコン・スイッチ – はさみ・カッター・のりなど文具
CD-‐ROMドライブの入手 • 基本的に5インチベイタイプの大きい物を使用 • 薄型のものはトレイを閉める動作ができないのであまり向かない • トレイが開閉できれば良く、ドライブ本来の「読み込みできるかどうか」は重要視されないので、ジャンクでも良い • ハードオフや秋葉原のジャンク屋などで入手
IDE-‐USB変換ケーブル • 本来はむき出しの内蔵HDDをUSB接続するために使用される – 外付けディスクとして – データレスキュー用に • 秋葉原・家電量販店・Amazon等で入手可能 – ヤフオクにも安いのがあるっぽい • 外部電源が付いているタイプを選ぶ – ついていないものは2.5インチHDD向け
マシンの用意 • Linuxが入っている適当なマシンを用意する • 軽くにお試しするときにはなんでも良い • 常時稼働させたくなった時は、省電力なマシンを選択すると良い – ノートPC(昔のネットブックとか)、Raspberry Piなどの小型PCボード
工作の材料 • やりたいものの内容に応じて変化する • ハムスターの餌やり – ダンボール片 – セロハンテープ等 • エアコンの電源操作 – エアコンのリモコン – ケーブル – アーケードスイッチ等ドライブで押しやすいボタン
Ejectする手段を確保する 方法 外出先から実行できるか SSHでログインしてEject 外に公開するか、VPNがあればできる Web画面からEject 外に公開するか、VPNがあればできる。もしくは、VPSなどから間接的に実行する方法もある TwiierからEject できる
いちおうオープンソース • WebからEjectも、TwiierからEjectも、やり方はソースを公開しています • hip://github.com/AkkiesoI/Eject-‐Command-‐Users-‐Group/ • WebはPHP、TwiierはPythonで実装 • どうぞご利用ください
そうしてできあがり • 何を作るかはあなた次第 • あったら便利そうなものを思いついたら自分で作ってみよう(私に言ってもダメ)
こういうのがたまにくる • つらい♡ 私「久しぶりに鉄道模型楽しい」 ??「Ejectですか?!」
EjectとIoT
IoTブーム到来 • IoT(Internet of Things/モノのインターネット)のブームが到来、と言うかバズってる • スマホとか家電とかセンサーとかタグとかをインターネットにつないでやりとりしようみたいなやつ、ということらしい • 家電がどうこうみたいなものが多い
例えば…… • Casi( hip://casi.com/ ) – ネコの餌やり・水やり機 – 体重計がついていて、ネコの体重を記録できて、スマホから見られる – カメラがついていて、ネコの顔認識が できるので複数ネコの認識や、どのネコ がどのくらい飲食しているか記録できる • hip://www.itmedia.co.jp/mobile /artcles/1506/03/news112.html
例えば…… • Ambi Climate( hip://www.ambiclimate.com/ ) – hip://thebridge.jp/2014/10/ambi-‐climate-‐starts-‐kickstarter-‐campaign – エアコンをリモート制御できるIoTガジェット – スマホで温度とかを見られるようになる – KickStarterで$25,000を目標にスタートしたところ、$114,892集まった模様
例えば… • スマートコンセント – hips://newspicks.com/news/664829/body – これも、スマホからコンセントのON/OFFできるようにするものを目指しているらしい – 節電に役立つね
もしかして… • 餌やり、エアコン、コンセント…… • Ejectでやっていたものでは? • もちろん、製品として出てきているものを利用したほうが、よりコンパクトで、安全に、確実に利用できる • Ejectでできないことももちろん多い – センサー類とか
エアコンリモートの場合 • 地味に進化を続けている – リモコンの電源ボタンを直接Ejectで押す – 改造したリモコンとアーケードボタンでEject…
現在 • Raspberry Piとフォトカプラを使用して 改造リモコンのボタンを押す – あいかわらず 電源ボタンしか 押せないし、 ステータスが 見られるわけ でもない
制御ソフトウェアのリニューアル • 社内でネコを飼い始めた人から頼まれて制作 • GitHubで公開しているサンプルから大幅にリニューアル • Webサーバーを持っていない人でも外出先から操作できるような工夫→Twiierを使用 • 室温は60分間保持してグラフで表示 • 電源ボタンのところは変わらないw
スクリーンショット
Twiier連携
『エアぴっぴ』 • Raspberry Pi Model B (私の中古)を使用 • リモコンはAmazonの激安 学習リモコン(370円) • 温度センサーはDS18B20 (300円) • RasPiを新規で買っても4,000円くらいで作れる
公開中 • 改良したい部分もまだあるけど公開中 • hips://github.com/AkkiesoI/airpippi • Ansible playbook形式で配布。ダウンロードしたらさくっとインストールできる(完全にできるとは言っていない) • 無線LAN対応が 急務! !?
ああ^〜〜〜♡♡♡
wwwww
EjectでIoTは「できる」 • やり方がちょっとかわってるだけで、やってた事自体は時代の先を行っていたっぽい • Ejectを卒業したプロダクトはそのままIoTの並に乗れそうな感じがした • IoTのプロトタイプ制作としてのEjectコマンド工作と言う可能性があるのでは? • 乗るしかない、このビッグウェーブに。
IoTとして売り込んでみた • シェルスクリプトマガジンに寄稿させてもらえることになったので、EjectをIoTと言い張って記事を書いてみた – Vol.25(2015/05) • 今のところ、どの方面からも特に怒られていない • 反響のほども不明
最近のイベント 参加レポート
最近参加したイベント • 各地のOSC • Kernel/VM探検隊@金沢(7/12) • Ogaki Mini Maker Faire 2014(2014/8/23-‐24) • 出張このべん:猫カフェ×Ejectユーザー会、奇跡のコラボハンズオン!ConoHa by GMO(2014/9/27)
各地のOSC • 展示中心で、EjectのLTは量を減らしている – 少しずつ軸足をEjectからRaspberry Piに移したい – 新しい人たちにLTの枠を譲り、貴重なセミナー枠を獲る→人の少ない朝イチに割り当てられる • 名古屋はEject界のホープであるあひるさんや、2box2boさんなどアクティブユーザーがいるので必ず参加、展示もわりとお任せ • 私がいなくても出展みたいなことができ始めている。良い。
OSC2015 Nagoya(5/23) • ピタゴラ装置もどき(私)、Ejectカー(かまぼこさん/れったーさん)、Eject枕(あひるさん)
Ogaki Mini Maker Faire 2014 • Ejectコマンドユーザー会初のMaker Faire参加 • 初の "私が参加していない" Eject出展 • 中京圏のユーザー(2box2boさん、あひるさん、じょりろじゃさん+おおたさん@東京)による出展
出張このべん • ConoHa(by GMO)さんとコラボレーション企画 • 猫カフェでEjectコマンド工作ハンズオン • 内容 – ConoHaのVPSとRaspberry Piを組み合わせてEjectコマンド工作を作る – 猫の餌やり装置を作る
VPSとEjectの連携の仕組み • VPSにWeb APIを用意 • ユーザーがVPSのWebにアクセスしてボタンを押すとAPIがEject可の状態を返すようになる • 遠隔地にいるマシンが定期的にAPIにアクセスして、Eject可の状態だったらEjectを実行 ConoHa VPS (1)Web画面から Eject実行 (2)Ejectフラグを取得 (ポーリング) (3)Eject 97
猫の給餌装置 • 箱の側面の下の方を下・左・右の3方向切る • 下の部分にレバーを付ける • 切り込みの上から1/3くらい の部分に輪ゴムを付ける • 箱のなかに滑り台状に板を 敷いて餌が落ちやすくなる ようにする 98
参考元 • 海外の事例を参考にした(2006年) – hip://www.leeholmes.com/blog/2006/08/ 22/diy-‐cat-‐feeder-‐and-‐water-‐dispenser/ • レバーを押している間餌が出てくる ←CD-ROMドライブ 給餌装置→ 99
イベントの風景
総まとめ
総まとめ • Ejectはあいかわらずまじめにくだらないことをしている • でも、Ejectは手段であり、目的ではない • アクティブなユーザーが増えてきた • IoT入門としてEjectをゴリ押ししてみたい • Ejectやらないか
おわり♡