平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26...

17
平成 26 年度卒業研究論文 RaspberryPi 監視カメラの可能性:出席確認 近畿大学工学部 情報システム工学科 情報メディアコース 学籍番号:1010960007 和泉 大介

Transcript of 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26...

Page 1: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

平成 26 年度卒業研究論文

RaspberryPi 監視カメラの可能性:出席確認

近畿大学工学部 情報システム工学科 情報メディアコース

             学籍番号:1010960007  和泉 大介

Page 2: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

             平成 27 年 2 月 10 日提出

目次

1. 研究の背景と目的

1.1 RaspberryPi とは

1.1.1 RaspberryPi のハードウェア

1.1.2 RaspberyyPi のソフトウェア

1.1.3 RaspberryPi を windows でリモート操作する

1.2RaspberryPi の実用例

1.3IoT とは

1.4 目的

2. RaspberryPi を使う上で知っておきたい知識

2.1 sudo 2.1.1 sudo のリスクとメリット

2.2 パッケージマネージャー

2.2.1 パッケージマネージャに必要な要素

2.3Apache 2.3.1Apache とは

3 環境構築

3.1CGI の導入

3.1.1Apache の設定

3.1.2CGI4 機能

4.1 動作を確認し自動撮影

4.2 ブラウザで現在の撮影状況を確認

4.3 ブラウザで撮影した画像確認

5.まとめ・考察

6. 謝辞

7.参考文献・引用

8. 付録(ソースコード)

Page 3: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

1. 研究背景と目的

 世代を問わず PC が必要不可欠になっている現在,PC の値段はだんだんと安価になってきた.しか

し,中高生が自分で購入するには高すぎる値段なのには変わりない.RaspberryPi はそういった,PC は

欲しいが,高すぎて自分専用の PC が手に入らないといった人や,研究などで PC に色んなものをダウ

ンロードした事で今の開発環境に悪影響を及ぼしたくない人にはうれしいハードウェアである.その

PC を使って何か役に立つものはできないかと思いついたのでこの研究に取り組んだ.

1.1 RaspberryPi の概要

 RaspberryPi(ラズベリーパイ)とは,ケンブリッジ大学のエンジニアの人達が制作したもので,低コス

トであり,クレジットカードサイズのコンピュータである.スクラッチや Python のような言語でのプ

ログラミング方法を学ぶためすべての年齢の人が使える小さなデバイスである.RaspberryPi はイ

ンターネット閲覧や高精細ビデオの再生から,表計算,ワープロ,ゲーム作成まで,デスクトップパ

ソコンができるすべて事が出来る.

  図 1 RaspberryPi 接続前 [5]  図 2 RaspberryPi 接続後[6]

               

 

1 電源・2 HDMI・3 ランケーブル・4USB・5 SD カード(図 3) 図 3 接続場所を数字に見立てたもの

1.1.1 RaspberryPi のハードウェア

 RaspberryPi は CPU プロセッサコアとして 700 MHz の ARM1176JZF-S、GPU に VideoCore IV、当初出

荷分は 256MB、後の出荷分は 512MB に増量した DRAM を内蔵した Broadcom BCM2835 SoC を搭載し

ている[10].Soc(System-on-a-chip)とは,ある装置やシステムの動作に必要な機能のすべてを、一つの

半導体チップに実装する方式[11]のことで,RaspberryPi に搭載されている Soc のBCM2835 の性能はコ

ストを重視したスマートフォン程度である.

1.1.2 RaspberryPi の OS RaspberryPi の OS には Linux を使用して走らせる事を意図しているため,Debian をカスタムした

Raspbian の仕様が推薦されている[10].Raspbian の他の OS との違いとして,RaspberryPi を使用している

人達が簡単にインストールできるようコンパイルされた 35000以上のパッケージが付属されていると

いう点がある[7].

1.1.3 RaspberryPi を windows でリモート操作する

Page 4: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

 RaspberryPi を windows でリモートそうするまでの過程として,

1・RaspberryPi の LXTerminal で「ifconfig」の命令を行うことによって RaspberryPi の IP アドレスを確認

する.

2・先ほどと同じく LXTerminal を使い「sudo apt-get install xrdp」という命令を実行し RaspberryPi にxrdp をインストールする.xrdp とは,RDP(Remote Desktop Protocol)プロトコルのフリーかつオープン

ソースのサーバーである.[9]

3・windows にはじめから搭載されているリモートデスクトップを使い過程 1 で確認した IP アドレスを

入力する(図 4).

        図 4 リモートデスクトップ Windows での設定画像[8]

4・リモート接続確認の注意が出てくるのではいを選択する(図 5).

          図 5 リモート接続許可の確認画面[8]

5・RaspberryPi のアカウント名とパスワード入力画面が出てくるので入力する(図 6).

      

図 6 Windows でリモート接続した RaspberryPi のログイン画面[8]

6・RaspberryPi のホーム画面が確認できれば接続成功である(図 7).

Page 5: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

 

      図 7 RaspberryPi をリモート接続した Windows の画面[8]

1.2 RaspberryPi の実用例

・天気ステーション

 RaspberryPi を使って降雨から風速まですべて記録するように RaspberryPi にプログラムできる.そこ

からさらに,気象情報を掲載したウェブサイトを自動的に更新するように RaspberryPi をプログラムす

ることも可能である.

・デジタルフォトフレーム

 家電量販店で高価なデジタルフォトフレームを買う代わりに,半分のコストで 2倍の機能を持つ製

品を RaspberryPi で作ることができる.機能としては,写真だけでなく動画,音楽,天気予報なども表

示可能である.

1.3 IoT とは

1.4 目的

今回研究する目的として,近畿大学の研究室は教授とゼミ生の部屋が別れていることが多いため教授

がゼミ生の出席状況を自分の研究室にいながら把握するのはできない現状である.なので RaspberryPiの機能を生かしてブラウザを使ってリアルタイムでゼミ生のいる研究室の状況を把握できれば教授の

研究の妨げにならないようになるのではないかと考え出席確認という点に着目した.

2. RaspberryPi を使う上で知っておきたい知識

2.1 sudo RaspberryPi を使う上で LXterminal という RaspberryPi にソフトウェアをインストールさせたり,その

ソフトウェアをアップデートする為に必要なコマンドプロンプトがあり,その LXterminal を使う際,

命令の最初にほとんどの場合 sudo を使っていたので気になり調べるに到った.

2.1.1 sudo のリスクとメリット[3]

 パソコンのセキュリティ上 root権限または root パスワードを一般ユーザーに与えるのは大変危険な

ことである.しかし,正当な理由があって root権限下での処理を実行する必要に迫られた一般ユー

ザーが出てきた場合はどうすればいいか.そうした問題には非常に簡単に解決できる方法がある.sudoを使えば,root パスワードを公開することなくアクセス範囲を最小限化した上で必要な権限を一般ユー

ザーに与えることができるのである.

Page 6: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

 sudo(superuser do の略)は,管理権限を制限付きでほかのユーザーに与えるためのプログラムで,

実際これで許可される権限では事前の指定範囲内のコマンドしか行えないようになっている.また

sudo で行われる操作はすべてオーディットトレール(追跡記録)に残されるので,仮にこうしたユー

ザーが何らかの方法で権限外の処理を行ったとしても,システム管理者がログ記録を確認すれば問題

点の特定と修正が行えるはずである.そのほかに sudo 設定を介して複数のホストに与える権限を中央

管理するという使い方も可能である.

 sudo のインストールおよびホストの設定が完了すると,指定されたユーザーは「sudo aForbiddenCommand」という構文を用いることで,新たに許可された範囲のコマンドを実行できるよう

になる.sudo の実行には root 用とは別のパスワード入力が必要とされているが,これは端末から目を

離した隙に第三者が不正使用することを防止するための措置である.また sudo により本来の権限を越

えた操作を許されたユーザーであっても,各自の欲しいままにシステムを自由に操作できるという訳

ではなく,あくまでシステム管理者が sudo 設定で許可した範囲内でしかコマンドを実行できないため,

システムがダメージを受けるリスクは最小限化できると考えられる.

 sudo の設定で注意すべき点は,想定の範囲外の権限を与えないようにすることである.当然ながら

su の実行を許してしまうと,実質的にそのユーザーに root権限を与えたのと同じになる.ある意味こ

うしたものは明白な設定ミスと見なせなくもないが,それよりも厄介なのは,ある程度の経験を積ま

ないと気づきにくい形で小さな罠が隠されていることである.例えば「sudo less」を実行できるユー

ザーがコマンドを使うと,そのほかのコマンドを root権限で実行可能となってしまう場合がある.い

ずれにせよコマンドへのアクセス設定に関しては慎重な姿勢で対処するのが重要であり,SANS Institute などのセキュリティ問題を扱ったサイトを参考にして,この種類のリスクにおいてどのような

脆弱性や手口が確認されているかをチェックしておくべきである.

 そのほかに犯しやすい単純なミスとしてコマンドを相対パスで指定するというものがあり,ある程

度の知識を有すユーザーであれば,これを糸口にしてすべての権限を取得されかねない.例えば FOOというエイリアスに bin/foo と設定したとしよう.その状況下においてあるユーザーが適当な場所に binディレクトリを作成して,その中に自分が実行したいコマンドを格納しておくと(ここでの重要なポ

イントはその名称を foo としておくこと),これを root権限下で実行することであらゆる操作が行える

ようになってしまう事がある.

 残念ながら,一般のユーザーがいわゆる特権昇格(privilege escalation)を行う手口を見つけて不正に

root権限を取得してしまうような事態はあり得ないと保証することはできないのだが,特定ユーザーに

のみ上位のアクセス権限を必要とする一部の操作だけを許可するという処理を簡単に実行できる現実

的な手法は,sudo のほかに存在していないのである.

 このように sudo の使用にはある程度のリスクが伴うが(その大部分は設定時のミスで余分な権限ま

で与えることに関連している),指定ユーザーに通常以上の権限を与えて特定タスクの実行を許すと

いった柔軟なシステム運用を可能にしてくれる存在という点には間違いがないといえる.

2.2 パッケージマネージャー

 パッケージマネージャとは、コンピュータに何のソフトウェアがインストールされたかを記録し、

新しいソフトウェアのインストール・新しいバージョンへのソフトウェアの更新・以前インストール

したソフトウェアの削除を容易に行えるようにするプログラムである。名前が示すように、パッケー

ジマネージャはパッケージを取り扱うということである。パッケージとは、ファイル群を一つにし、

インストールや削除をまとめてできるようにしたものである。RaspberryPi のアップデートを行う際に,

パッケージマネージャーが使用されているため,調べるに到った.

Page 7: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

2.2.1 パッケージマネージャに必要な要素[4]

・パッケージマネージャに必要な要素としてパッケージのバージョン管理

・パッケージをそろえる事で同じ環境が再現できる.

・パッケージのインストール/アンインストール

・パッケージのアップグレード/ダウングレード

・パッケージ間の依存関係の管理

 まず,パッケージのバージョン管理について,パッケージと呼ばれる単位に何らかのバージョン識

別子をつけて,中身を細かく比べることなく更新を知ることができるようにする.もしバージョンの

概念がないと,git や svn(Subversion)のような管理システムなしにソースコードを管理するようなもの

でそれはとてもできないことだといえる.

 パッケージをそろえることで同じ環境が再現できることについて,同じ環境を再現するためには

様々なバージョンのパッケージをホスティングされる方法も柔軟に指定できることが必要である.

パッケージは大体の場合自分が開発したもの意外を使うわけだが,そのものをどうやって入手すれば

いいかということを含めて確保しておかなければ,たとえ入っておかなければならないパッケージと

リストがあったとしても入手できずインストールできなくなってしまう.

 パッケージのインストール/アンインストールについて,通常のパッケージ管理というと,インス

トールができることを指すことが多いと思われる.もちろんパッケージとバージョンを指定したら,

その OS 上で使うことができる様にインストールしてくれるのは大事な機能である.インストール時に

はコンパイル済みのバイナリを配置するだけのものもあればその場でコンパイルするものもある.も

ちろん,先の依存関係に基づいて必要なパッケージも同時にインストールしてくれる必要もある.難

しいのはそれを再起的に解決しなければならないところである.アンインストールは色々と気をつけ

なければならない点がある.なので標準では実装していないパッケージ管理もある.気をつけなけれ

ばならない点として,例えばプロセスが起動するようなパッケージだとプロセスを止めないといけな

いなど,先の依存関係で自分が誰かに依存されてる場合は,それらのパッケージもアンストールしな

いといけない点である.さらに,インストール前にあるファイルを変更するようなパッケージの場合,

完全にアンインストールするためにはその一行をきれいに消さなければいけないが,一行消すのはか

なりの手間が掛かってしまう.

 パッケージのアップグレード/ダウングレードについて,yum update と打てば一回で最新のパッケー

ジ群にしてくれるのは一般の人とってはとても頼もしいものである.これができるためには,バー

ジョン,依存関係,インストールとすべてできる必要がある.ダウングレードはアンインストール以

上に難易度が高い.なぜならほとんどの開発者がアップグレード方法に気は使うが,ダウングレード

方法には普通気を使わないためである.

パッケージマネージャ間の依存関係の管理について,バージョンを持ったパッケージ間に依存関係

を記述できるようにすることである.あるバージョンのパッケージ A を使うためには,バージョン何

とか以上のパッケージ B が必要になるような感じである.使う側が完全に依存を把握できていて順番

を定義可能であったら,パッケージ関係において依存関係の記述はいらないと考えられる.だが,

パッケージ管理では色んな人が作ったパッケージを組み合わせることが多いわけであり,そうなると

他人の作ったパッケージの中に自分が依存するパッケージ記述するほうが効率が良いと考えられる.

Page 8: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

3.環境構築

3.1CGI の導入

3.1.1Apache の設定

・Apache のインストール

図1のように打つことにより Apache をインストールできる。

図 1 Apache を導入するための命令

・Apache の設定

/etc/apache2/mods-available/mime.conf の AddHandler cgi-script .cgi(図 2)のコメントアウトをはずすことに

より CGI を使えるようにする。

図 2 #AddHandler cgi-script .cgi の#をはずす前

docroot で cgi を利用できるようにする

/etc/apache2/sites-available/default を編集して /var/www/(図 3 の 10行目) の設定に「 +ExecCGI」を追記

する(図 3)。

図 3 10行目に「+ExecCGI」を追記した後の設定

これで設定完了したので図 4 の命令を実行して Apache を再起動する。

Page 9: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

図 4 Apache を再起動する命令

3.1.2CGI図 5 のように命令を実行することにより leafpad を開いた後 test.cgi の名前でファイルを作成する

図 5 ディレクトリを指定して leafpad を開く命令

図 6 の命令を実行して test.cgi を実行可能にする

この作業をしないとブラウザで確認した際 InternetServerError がでる。

図 6 chmod を使って test.cgi を実行可能する命令

図 7 のように test.cgi にプログラムをかくことによりブラウザ上に図 8 のように HelloWorld!と表示される。

図 7 ブラウザに HelloWorld!を表示させるためのプログラム

図 8 CGI を使ってブラウザ上に HelloWorld!を表示したもの

・CGI を使ってディレクトリ内の画像一覧を表示する

Page 10: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

監視カメラとしてやく立てるためには motion を使って撮影できた画像を一覧としてブラウザで確認で

きればいいと考えディレクトリ内の画像一覧を取得できるプログラムを作成した。

/var/www/motionImage の中にある画像をブラウザ上に表示する。図 9

図 9 ブラウザに表示するための画像一覧

次に図 10 にあるプログラミングを打つことによりブラウザに画像一覧図 11 が表示される。

プログラミング言語はシェルスクリプトを使用する。図 11 の画像は同じに見えるが違う画像である。

図 10 ブラウザにディレクトリ内にある画像を表示するためのプログラム

図 11 ブラウザ上にディレクトリ内の画像を表示

Page 11: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

4.機能

4.1 動作を確認して自動撮影

RaspberryPi には motion という名前のパッケージがあり,それをインストールすることにより USB カ

メラや純正カメラ(カメラモジュール)を入力装置として使うことができるようになる.motion とは,カ

メラからの映像に動き(変化)があったときにのみその映像または画像を記録することができる.

3.2 ブラウザで現在の撮影状況を確認

motion の機能の一つとしてブラウザでリアルタイムに撮影している映像を 1秒ごとに表示するという

機能がある.ブラウザで確認するための方法はブラウザを起動後 url に http://{RaspberryPi の IP アドレ

ス}:{設定したポート番号}を入力するとログイン名とパスワードを聞かれるのでそこの欄に

RaspberryPi のユーザー名とパスワードを入力すればブラウザに表示される。

3.2.1 ブラウザごとの挙動

ブラウザごとに motion での撮影状況の確認画面が変わるため有名なブラウザの挙動をまとめる.

・ChromeChrome では URL を入力後応答なし.

図 3 Chrome で motion を確認しようとした結果

・IEログイン名・パスワードの確認画面はでるがその後応答なし.

Page 12: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

図 4 IE で motion を確認しようとした結果

・Firefoxログイン名・パスワードを聞かれその後ブラウザで確認できた.

図 5 Firefox で motion を確認した結果

確認したのは上記の 3 つのブラウザで他のブラウザでの確認は行っていない.

Page 13: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

4.3 ブラウザで撮影した画像確認

 撮影された画像は図のように保存されその保存されたものをブラウザで表示できるようにする図.

図では図で表示された画像がスライドショーのような形で表示される.

 図の機能として①で画像をスライドする速度を変える 100単位で 100~1000 まで変更可能.②を押す

ことによって画像のスライドをスタートすることができる.③で画像のスライドをとめることができ

る.④が表示されている画像をスライドさせている部分である.注意点として,①のスピードを変更

する際に一度③のボタンを押して画像のスライドをとめてからでないとスピードが変更されない.

Page 14: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

5.まとめ・考察

 今回開発したものは出席確認としては最低限の機能はしっかりと備わったものが開発できた.しか

し,更に機能を追加して精度や機能の充実度を上げることは可能である.たとえば,保存した画像を

1日ごとに別のフォルダに自動で移しメインのフォルダの中身は1日ごとにリセットされるや日付ご

とにブラウザで表示するなどが考えられる.まだまだ可能性はあったので自分の力不足であまり充実

でき無かったことは大変残念である.

この機能が完成すれば学生は少し窮屈な思いをするかもしれないが,教授にとってはかなりの負担削

減にはなると考えられる.

6.謝辞

7.参考文献

[1]サービスをセキュアにするための利用制限(3)~管理者権限の制限のための su と sudo の基本~http://www.atmarkit.co.jp/ait/articles/0311/05/news001.html[2]Sudo in a Nutshell http://www.sudo.ws/sudo/intro.html[3]ユーザーの実行権限を柔軟に割り当てる sudo のリスクとメリットhttp://www.itmedia.co.jp/enterprise/articles/0802/19/news013.html[4]若者がパッケージ管理について思うことhttp://blog.riywo.com/2012/03/29/043426[5]http://arctica.sakura.ne.jp/cent/wp-content/uploads/2012/12/R7568308-01.jpg[6]初回起動と初期設定http://www.hiramine.com/physicalcomputing/raspberrypi/setup_firstbootandconfig.html

Page 15: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

[7]Welcome to Raspbianhttp://www.raspbian.org/[8]RaspberryPi で遊ぼうhttp://assimane.blog.so-net.ne.jp/2013-05-12[9]weblio 辞書http://www.weblio.jp/content/xrdp[10]RaspberryPi ウィキペディアhttp://ja.wikipedia.org/wiki/Raspberry_Pi#.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2[11]e-Wordshttp://e-words.jp/w/SoC.html

http://www.e-ark.jp/2013/05/08/raspberry-pi-%E3%81%A7-cgibash%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99/http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230751/http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231159/?ST=osshttp://raspberrywebserver.com/cgiscripting/writing-cgi-scripts-in-python.html

https://github.com/carloscrespog/Berries-DrEWE/blob/master/motion-mmalcam.confhttps://ubun12.wordpress.com/tag/motion-conf/http://safe-linux.homeip.net/web/motion/motion-03.html

8.付録(ソースコード)

8.1motionImage.cgi

#!/bin/bashecho "Content-type:text/html"echo ""

echo '<!DOCTYPE html>'echo '<html>'echo '<head>'echo '<meta charset=UTF-8>'echo '<title>motionImage</title>'echo '</head>'

echo '<style>img{ display: block; position: absolute; top:50px; left:30px; width: 300px;}</style>'

echo '<body>'

files="/var/www/motionImage/*"

④for filepath in ${files}dofile=`echo $filepath | cut -c 9-45` echo "<img src="${file}">" done

Page 16: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

read wait

echo '<div>'①echo '<input id="timeSlider" type="range" min="100" max="1000" step="100" onchange="showValue()" />'echo '<span id="showRange">0</span>'②echo '<button onClick="startSlideShow()">slide start</button>'③echo '<button onClick="stopSlideShow()">stop</button>'echo '</div>'

echo '<script>'echo 'var intervalTime = 200;'echo 'document.getElementById("timeSlider").value=intervalTime ;'echo 'document.getElementById("showRange").innerHTML = intervalTime;'

echo 'function showValue () { intervalTime = document.getElementById("timeSlider").value; document.getElementById("showRange").innerHTML = intervalTime;}'

echo 'var photos = document.getElementsByTagName("img");'echo 'var timer = null;'echo 'var N = photos.length; //alert("N="+N);'echo 'var n = 0;'echo '//zBase = photos[N].style.zIndex;'echo 'zBase = 100 ; //alert("zBase="+zBase);'echo 'topZindex = 0;'

echo 'function nextPhoto(){ ++topZindex; photos[n].style.zIndex = zBase + topZindex; n++ ; n = n % N;}'

echo 'function startSlideShow(){ if( timer == null ){ timer = setInterval("nextPhoto()", intervalTime ); }}'

echo 'function stopSlideShow(){ clearInterval(timer); timer = null;}'echo '</script>'echo '</body>'

echo '</html>'

Page 17: 平成 26 年度卒業研究論文buturi.heteml.jp/student/2014/izumi/ronnbunsaisyuu1.pdf平成 26 年度卒業研究論文 RaspberryPi監視カメラの可能性:出席確認 近畿大学工学部

プログラムメモ書き

echo:引数に与えられた文字列を表示する。

files=”/var/www/motionImage/*”:files に motionImage下のファイル名を代入する

for filepath in ${files}:${}で{}ないの変数の中身を出力するという命令なので変数 file の中に入れた  

                files=”/var/www/motionImage/*”を filepath の中に入れるという命令

である。for do(正)done(誤)

``バックコート:バックコートの中にある処理の結果を返すという意味で

cut:文字列を抜き出す命令

cut -c:-c は cut のオプションで指定した文字数をとりだすというものである。

file=`echo $filepath | cut -c 9-45`:file に filepath に入った画像のファイル名の 9~45 文字めまでを入れると

いう命令になる

cut を利用した理由として<img src=”画像ファイル指定”>といった風にしたいのだが画像ファイル指定

の部分が「/motionImage/ファイル名」だと表示されるが「/var/www/motionImage/ファイル名」うまく表

示できなかった。なので cut を使い files に入れた/var/www/motionImage/ファイル名の前の/var/www の部

分以外を抜き出すよう設定した。