27
Part1 みんなでカンタン! Ejectハンズオン Ejectコマンドユーザー会 あっきぃ ( id:Akkieso3 ) 2014/9/27 出張このべん:猫カフェ×Ejectユーザー会、 奇跡のコラボハンズオン!ConoHa by GMO 1

みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

Embed Size (px)

DESCRIPTION

「出張このべん:猫カフェ×Ejectユーザー会、奇跡のコラボハンズオン!ConoHa byGMO」にて発表 http://conoha.doorkeeper.jp/events/14471

Citation preview

Page 1: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

Part1  みんなでカンタン!  Ejectハンズオン  

Ejectコマンドユーザー会  あっきぃ  (  id:Akkieso3  )  2014/9/27  出張このべん:猫カフェ×Ejectユーザー会、奇跡のコラボハンズオン!ConoHa  by  GMO  

1

Page 2: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

Ejectコマンドユーザー会とは

•  CD-­‐ROMドライブのトレイ開閉を利用して  •  トレイに色んなことをさせる工作を作り  

•  リモートやタイマー等で実行することで  

•  QoLの向上を試みるユーザーの集いです  

•  主にオープンソースカンファレンスで活動  

•  [Eject    ]  [検索]  

2

Page 3: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

ユーザー会のアクティビティ

•  現在約50名(ML参加人数)  •  Google  Groupsへの入会お待ちしています  

•  OSC等に展示参加するメンバー3人(私を含む)  

•  今後の出展予定  – OSC2014  Tokyo/Fall(10/18-­‐19)  

•  OSC初45分セミナー  

3

Page 4: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

トレイに色んなことをさせる工作

•  ハムスターにエサをあげる  •  エアコンの電源を操作する  

•  AC電源を操作する  

•  除夜の鐘をつく  – 去年もやりました  

4

Page 5: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

VPSでEjectをするとどうなる?

•  物理的には何もおこらない  •  VPSは仮想マシンだから……  

– ConoHaはKVMハイパーバイザで動いている  

•  仮想マシンにメディアがマウントされていた場合は仮想的にEject(unmount)される  

•  今日のハンズオンでは、VPSから手元のCD-­‐ROMドライブをEjectする  

5

Page 6: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

VPSからEjectする利点

•  自宅でWebサーバーを公開しなくても良い  •  プロバイダから動的に割り当てられるグロー

バルIPアドレスを気にする必要がなくなる  

•  ポート開放などの手間がなくなる  

•  セキュリティリスクの低減

6

Page 7: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

仕組みを考えてみよう

•  VPSにWeb  APIを用意  •  ユーザーがVPSのWebにアクセスしてボタンを

押すとAPIがEject可の状態を返すようになる  

•  遠隔地にいるマシンが定期的にAPIにアクセスして、Eject可の状態だったらEjectを実行  

ConoHa  VPS

(1)Web画面から   Eject実行

(2)Ejectフラグを取得   (ポーリング)

(3)Eject

7

Page 8: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

Twi\erを活用してもできる

•  専用Twi\erアカウントを用意  •  ユーザーが専用アカウントにメンションを送る  

•  遠隔地にいるマシンがストリーミングAPIによってメンションを受信して、Ejectを実行  

•  ふぁぼEject(  h\p://j.mp/faveject  )を参照  

Twi\er

(1)Eject用Twitter  アカウントにメンション

(2)ストリーミングAPIで   メンションを受信

(3)Eject

8

Page 9: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

用意するもの

•  ConoHa  VPS  – みなさんCentOS  6.5は用意しました?✌  ՞ਊ  ՞)✌  

•  Raspberry  Pi  – もしくは常駐させられる適当なマシン  

•  CD-­‐ROMドライブ  

•  IDE(SATA)-­‐USB変換ケーブル  

•  Web  APIの仕組み  

9

Page 10: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

Eject環境の用意

1.  ConoHa  VPS上にWeb  APIスクリプトを設置  2.  Raspberry  Piの用意  

1.  OSインストール(設定済)  

2.  ejectとphp5-­‐cliをインストール(設定済)  3.  ポーリング用PHPスクリプトを設置してConoHa  

VPSのIPアドレスを設定  

4.  crontabの記述  

3.  Ejectのテスト  

10

Page 11: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

[演習]ConoHa  VPSの環境作り

•  ApacheおよびPHP5をインストール  – yum  install  -­‐y  h\pd  php  

•  以下のコマンドを実行してファイアウォール設定を行う  

11

#  iptables  –I  INPUT  –p  tcp  –dport  80  –j  ACCEPT  #  service  iptables  save  #  service  iptables  restart  

Page 12: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

[演習]ConoHa  VPSの環境作り

•  以下のURLからPHPスクリプトを取得  – h\p://eject.kokuda.org/slides/140927handson.tgz  

•  /var/www/html以下にファイルを展開  

•  remouiiin.phpを開いてパスワードを設定  (任意)  

•  h\p://<VPSのIP>/remouiiin.php  を開く

12

Page 13: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

remouiiin.php  について

•  Webページでボタンを押すとカウントアップするだけのスクリプト  

•  GETパラメータにパスワードをつけるとカウントを取得&リセットできる  – 実際はPOSTとかのほうが望ましいけど今回はテ

スト用なので略  

•  ソースコードは別紙参照  

13

Page 14: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

[演習]Raspberry  Piの環境作り(1)

•  Raspberry  PiにCD-­‐ROMドライブを接続する  •  ejectコマンドを実行して動作を確認する  •  Raspberry  Piの電源を入れ、SSH接続する  

–  IPアドレス:  10.0.10.(ふせんの番号)  – ユーザー名:  pi  – パスワード:  ejectuiiin  

•  /boot/ejepoll.phpを開き以下の値を設定  – ConoHa  VPSのIPアドレス  – パスワード(任意)

14

Page 15: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

ejepoll.php

<?php  $password  =  md5("uiiin");  $addr  =  '<VPSのIP>';  $count  =  file_get_contents(    'http://'.$addr.'/remouiiin.php?remoget='.      $password  );  if  (intval($count)  >  0)  {      exec('/usr/bin/eject  -­‐T');  }  ?>  

15

※ /bootはFATフォーマットのためrootユーザー権限で編集する

Page 16: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

[演習]もしSSH接続できない時は

•  MicroSDカードを取り出して、手元のPCに差し込む  

•  /bootがマウントされるので、ejepoll.phpをエディターで開いて編集する

_人人人人人_ > チート <

 ̄^Y^Y^Y^Y^ ̄

16

Page 17: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

Raspberry  Piの環境作り(2)

•  crontab  –eを実行して、以下のとおり記述  (10秒ごとにremouiiin.phpのカウントを確認する)  

•  今日は設定済み(確認してみてください)

*  *  *  *  *  /usr/bin/php5  /home/pi/ejepoll.php *  *  *  *  *  sleep  10  ;  /usr/bin/php5  /home/pi/ejepoll.php *  *  *  *  *  sleep  20  ;  /usr/bin/php5  /home/pi/ejepoll.php *  *  *  *  *  sleep  30  ;  /usr/bin/php5  /home/pi/ejepoll.php *  *  *  *  *  sleep  40  ;  /usr/bin/php5  /home/pi/ejepoll.php

17

Page 18: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

[演習]動作を確認する

•  ブラウザからVPSにアクセスして、「リモートEjectを実行」ボタンを押す  

•  10秒前後でEjectされれば成功  •  Ejectされない場合は以下の点を確認  

– ドライブが正しく接続されているか  (ドライブの電源ON→ドライブ側ケーブル→RPi側ケーブルの順に行う)  

– ドライブが認識されているか  (ls  –l  /dev/sr*  や lsusb など)  

– スクリプトの記述ミスがないか  

18

Page 19: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

まとめ

•  VPSでもEjectはできた  •  remouiiinが返す値を変えたり、ejectコマンド

へのエイリアスにすればもっとそれっぽくできると思われる  

•  気をつけるべきはEjectは手段であり目的ではないこと  – この結果を見て「たのしい!!」で終わるだけで

はだめ

– Ejectで得られるトレイ開閉の運動を活用すべし

19

Page 20: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

Part2  ConoHa連携の猫まっしぐら給餌Ejectシステム  

Ejectコマンドユーザー会  あっきぃ  (  id:Akkieso3  )  2014/9/27  出張このべん:猫カフェ×Ejectユーザー会、奇跡のコラボハンズオン!ConoHa  by  GMO  

20

Page 21: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

トレイ開閉の運動を活用しよう

•  CD-­‐ROMドライブはEjectコマンドによってトレイの開閉運動を得ることができる  – Ejectする=トレイで押す  – Loadする=トレイで引く  

•  基本的にはトレイで押すときの動きを使うことが多い  – ボタンを押す  – おもりを突き落とす  

21

Page 22: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

給餌の例

•  ハムスターの給餌  – 私が開発した初めてのEjectコマンド工作  

– 現在も出張の時などに使用  

•  トレイで餌を押して下に落とすパターン

22

Page 23: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

猫への給餌

•  海外に事例あり(2006年!)  – h\p://www.leeholmes.com/blog/2006/08/  22/diy-­‐cat-­‐feeder-­‐and-­‐water-­‐dispenser/  

•  レバーを押している間餌が出てくる=押す・引く両方使うタイプ

←CD-ROMドライブ

給餌装置→

23

Page 24: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

用意するもの

•  餌を入れる箱(牛乳パックなど)  •  輪ゴム数本  

•  厚紙かダンボール片  

•  のりかテープ  

•  ハサミ・カッター  

•  土台の箱  

24

Page 25: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

給餌装置の作成

•  箱の側面の下の方を下・左・右の3方向に切りこみを入れる  

•  下の部分にレバーを取り付ける  

•  切り込みの上から1/3  くらいの部分に輪ゴム  を取り付ける  

•  土台を用意して、やや  斜めに取り付ける  

(試作品)

25

Page 26: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

[演習]やってみよう&改良点

•  本日はカフェ内で工作ができないので、完成品をいくつか用意  

•  Part1で作ったEject環境に設置して、餌をあげてみよう  

•  海外の例のように、段ボールでカバーをすると、よりそれらしい見た目になる、はず  

26

Page 27: みんなでカンタン!Ejectハンズオン/ConoHa連携の猫まっしぐら給餌Ejectシステム

アンケートにご協力ください

•  出張このべん:猫カフェ×Ejectユーザー会、奇跡のコラボハンズオン!アンケートフォーム  

•  h\ps://www.conoha.jp/survey/3495.html  

27