RaspberryPi & シングルボードコンピュータ
Raspberry Pi3で作るtwitter温度計(1)【マルツ実験の素】
ラズベリーパイ3を使って工作しよう
名刺サイズの人気基板「ラズベリーパイ」を使って電子回路とプログラムをつくっていきましょう.最初のテーマは「温度計」です.
マルツエレック×大学生協の月替りパンフレットに掲載されている「実験の素」シリーズは、エレクトロニクス以外の分野を専攻する学生さんに電子工作の楽しさを伝えることを目的としています。エレクトロニクス専攻でない方にもわかりやすい記事を目指しています。パンフレットの限られた紙面には掲載しきれなかった、詳しい情報をマルツオンラインの技術情報に掲載します。
流行っているよね −ラズベリーパイを使ってみよう
2016年現在、書店でエレクトロニクス関係の雑誌の表紙をチェックするとラズベリーパイを取り上げている雑誌がたくさんあります.ここまで流行るのには理由があります.ラズベリーパイは従来にない融通の効く小型コンピューターなのです. 今,一般の人が使えるコンピューターを考えてみましょう.
種別 | 特徴 |
パソコン |
|
スマートフォンタブレット |
|
マイクロコンピュータ(組み込み分野) |
|
今まで電子工作に使ってきたマイクロコンピュータは小回りがきくのですが,センサーで収集したデータの統計処理などをさせようとすると能力が足りません. 逆にパソコンは,小さな回路を接続しようとしたとき,複雑な仲介回路を間に挟まなくてはなりません. 数年前まで,電子工作で収集したデータを統計処理するときは,データ収集にArduinoというマイクロコンピュータをつかって,USB経由でパソコンにデータを転送していました.でもラズベリーパイが現れて図1のように世界は変わりました.マイクロコンピュータのように小回りがきいてセンサーICなどを直接つないでデータを集めることができ,パソコンのように複雑な処理ができます.最新型のパソコンと比べるとまだ1/10くらいのスピードですが,1台でデータ収集から統計処理まで出来るので重宝します.
ラズベリーパイで何をしよう?
せっかく能力の上がったラズベリーパイで工作するのですから,今までのマイクロコンピュータの力ではできなかった(できたけど難しすぎた)分野に挑戦してみましょう. ラズベリーパイの特徴の一つは,ネットワーク通信が得意というところにあります.今までのマイクロコンピュータでは,接続した電子工作機器のデータはせいぜい同じ室内のパソコンに届けておしまいでした.でも,ラズベリーパイは違います.ネットワークカメラのように,収集したデータをインターネット経由で世界中に届けることもできます.
ネットワークをどう使う?
研究室で測定したデータをリアルタイムにチェックする仕組みを考えます.測定装置の異常報告や,実験成功などをインターネットを経由して移動中のスマートフォンで確認する状況を想定しています.
どんな方法が使える?
すぐに考えつくのは,以下の3つです.図2に示します.
- ショートメッセージやメールによる通知
- WEBサーバーで情報公開
- Twitter,Facebookなど民間会社のサービス経由
それぞれ,検討していきましょう.
メール送信は?
研究室の測定データを毎日数回記録して,研究者にメールで配信できると便利です.今から15年前にラズベリーパイのようなコンピューターがあったら,多くの研究者がメールで通知していたことでしょう.かくいう筆者も2000年頃にIntelパソコンを使ったインターネットショップを実装,運用していて,システムの異常報告をメールで自宅に通知していました. 現代は,図3に書いた通り迷惑メールを減らすために,メール送信の手順が以前より複雑になりました.ラズベリーパイから送信することも技術的に不可能ではないですが,契約しているインターネットのプロバイダ(あるいは研究者が使っている大学ネットワークの管理組織)によって,メールサーバーの管理ポリシーが異なります.メール送信の手順もプロバイダ毎に少しづつ違うでしょう.
ショートメッセージは,携帯電話会社毎に違う仕組みを使っていて,一旦携帯電話会社のサーバーに届いた後会社間の連携システムで別会社にも届けられます.契約している電話会社によってサーバーへのアクセス方法が違いますし,そもそも自作ソフトウェアからではアクセスできないように保護してあるでしょう.
WEBサーバーを立てるか?
ラズベリーパイをWEBサーバーにすることができます.定期的にHTMLファイルを書き換えて見せたり,CGIを使ってアクセスされるたびにデータを更新したりできます.最新のネットショップのように,美しくかつダイナミックに表示が変わるシステムを構築することもできます. 問題は,外からラズベリーパイにアクセスする方法を用意するところです.学校でも企業でも,メンテナンスのいい加減なサーバーが乗っ取られて悪事に転用されるのを防ぐため,外から簡単にアクセスできるサーバーを増やすことを嫌います.サーバー設置の申請は手続き上可能かもしれませんが,侵入者対策としてネットワークに詳しい管理者を常時貼り付けるように要求されることでしょう.インターネット全体からアクセスできるWEBサービスの構築と運営は,専門家にまかせておいたほうが良さそうです.
民間会社のサーバー経由でデータ送信?
自前でメールやWEBのサーバーを用意するのが難しいので,インターネットにあるサーバーを利用してしまいましょう. 図4では,Twitterを例に取り上げます.もともとTwitterはブラウザから人間がメッセージを送信するシステムでしたが,APIが公開されているのでソフトウェアからメッセージ送信することもできます.Twitter以外の会社のサービスを使う時には,設定手順がサービスごとに違いますが,動作原理は一緒です.
基礎知識1 Twitterのサービスをソフトウェアから使う方法
Twitterのサービスをソフトウェアから利用できるように,利用方法(API)が公開されています. そもそも,人間がメッセージをやりとりするサービスだったTwitterになぜソフトウェアから投稿ができるのでしょうか.運営会社の人に確認したわけではないので想像になりますが,今回作成したシステムのように,機械から定期的にメッセージを送ることができるとさらに便利になるからだと思います.Twitterが始めたことでなくても,似たようなサービスを提供するどこか1社がAPIを公開すると,同業他社はユーザーに乗り換えられないように同じサービスで対抗する必要があります.
TwitterもAPIを使うには認証が必要
TwitterのAPIも認証手続きが必要です.そうしないと,誰かのアカウントを悪意ある人が利用して広告を連続して発信するなど,みんなに迷惑をかけることが可能です.TwitterはOAuthという外部の認証サービスを利用しています.
数年前MashUpって流行ったの覚えている?
Web2.0なんてバズワードが流行った頃でしょうか.MashUpという遊びが流行りました.TwitterのAPIやその同類を利用して,付加価値を付けたサービスを提供するアイディア勝負のことです.インターネット上の天気予報情報をプログラムに検索させて,集まった情報をTwitterに流すシステムなど,お手軽でちょっと便利なシステムをみんなが競い合って作っていました. 今では流行が終わって,TwitterのAPIはこの記事のような地味な工作に使われています.
基礎知識2 今やネットワークサービスに認証手続きは必須
認証手続きとは?
認証手続きを簡単に言うと,ネットショップで買い物するときなどに,ユーザーの名前とパスワードを入力しないとアクセスできない仕組みです.
認証手続きは何のため?
ネットワークサービスが一般の人に普及した時,大きな問題が見つかりました.迷惑メール送信者や,他のユーザーになりすまして他人に損害を与える悪意あるユーザーの存在です. 今の人は,「なんで最初から悪意あるユーザーによる妨害を想定していなかったの?」と疑問に思うでしょうが,そもそもインターネット基礎技術の開発を始めた頃は,世界中がつながるなんて夢のまた夢でした.とりあえず学校内のコンピューターだけをつなぐ時でも,目先の技術的問題を山ほど解決することが必要でした.世界中をつなぐためには,新しい技術の発明や,法律の整備,ネットワークを運営するための会社設立,ユーザーからネットワークインフラ維持費を徴収する仕組みの考案と周知など,超えなければならない壁がたくさんあったのです.悪意あるユーザーへの対策は,結果として後回しになってしまいました. 後回しになったものの,できる限りの対策を打たなくてはなりません. そこで,インターネットのサーバーを使うときは,認証手続きが必要な仕組みを作り上げたのです. 今では,メールの読み書きも,WEBサーバーのプライベート領域へのアクセスも,その他もろもろのインターネットサービスを利用するときも,パソコンを起動した時のようにユーザー名とパスワード入力が必要です.
認証手続きは面倒くさい
パスワードによる制限は,完璧ではありません.パスワードを忘れる人がいるでしょうし,パスワードが通信路を伝わっていく途中へ,盗み見る仕組みをこっそり埋め込む悪人もいるでしょう.『HTTPSによる暗号化通信を使えば途中で盗み見られる心配は無い』と考えるかもしれませんが,途中の回線に違法な仕組みを割りこませれば,盗み見ることも絶対不可能ではありません.セキュリティの防御技術に完璧はなく,常に攻撃技術とのいたちごっこを続ける運命にあります. またパスワードを管理する側からは,いろいろと指示がきます.
- 8文字以上にしろ(逆に文字数上限があって5文字以上入らないケースも)
- メモを取らずに暗記しろ
- アルファベット大文字と小文字と数字と記号をそれぞれ最低1文字は含めろ(場合によっては記号が入力できないケースや,大文字/小文字を区別しないシステムも)
- 2週間毎にパスワードを変更しろ
- 過去に使用したパスワードを2度と使うな
- 一つのパスワードを別のサイトと共通に使うな
- 自分の誕生日をパスワードに使うな
- 辞書に載っている単語は使うな
- 入力するときはCAPSキーや仮名漢字変換の状態を確認せよ
とはいえ、こんな条件を全部守ってネットショップ10箇所にアカウントを作ったとしても、管理する人間の側の負担が大きくなります。そこで一括管理できたら楽ですよね.
基礎知識3 インターネット上の認証を一括管理する試み
認証と個人情報管理をインターネット上で一括管理しようという試みは,とっくの昔に始まっています. パソコンを立ち上げて,いつものポータル(TwitterでもYahooでも)にパスワードを入れてログインしたら,その他のサイトに移動してもすでにログイン済みとして扱われるサービスです.
有名なところでは,Open ID Connectなどが提案されています.すでに実用化の段階なのですが,複数の方式が提案されていて相互乗り入れが面倒だったり,仕様が巨大で実装が難しく,利用するだけでもネットショップの実装者の手にあまるようです. またネットの世界では,認証に限らず年中新しいサービスや新しい規格が提案されています.ネットサービス実装者としてその全てをキャッチアップしていくのは,大変です.ネットサービスを作る側だって,「認証システムを誰かが一括して管理してくれればよいのに」と思っています.
一括管理で悪用封じ込めも簡単に
これらの一括管理の利点は,ログインの手間を省いただけではありません. ある日突然,ネットショップのオーナーが悪意ある人物に入れ替わって悪さを始めても,外部の人間が気づいた瞬間にそのネットショップだけを一括管理システムから切り離す機能を持ちます. オーナーが変わらなくても,ユーザーの気が変わってそのネットショップを使わないと決めたら,利用者本人が手続きすることで一人分だけアカウントを無効化するように設定変更ができます.
厳密に言うと今回使用するOAuthは人の認証ではなくてプログラムを認証する仕組み
ここまで認証の話は,人間がどこかのサービスを利用する状況を想定してきました. でも,今回はプログラムが自動的にTwitterにアクセスするわけであって,だれか人間がTwitterにアクセスするのとはちょっと違います.許可を求めるのが,人ではなくてプログラムなのです.MashUpの世界では,プログラムに特定のユーザーが結びついていないかもしれませんし,大勢のユーザーが同時に同じサービスを利用するかもしれません.そんな時に,プログラムの一括認証を担当できるのがOAuthなのです. この辺の話はよく理解できなくても,『プログラムからTwitterに投稿するためには,OAuthという認証を通るのがお約束になっている』とだけ理解してください.