Fedora 31で自作の株式売買シミュレーションシステムを動かす

投稿日:

 自宅で10年以上の間、株式の売買シミュレーションシステムを運用してきた。Linux上で作動する。

 以前、このブログでも少し書いたことがあるが、これで多少儲けても来ている。

 このシステムは、株価をネットからダウンロードするプログラムをPerlで、これを格納するRDBはPostgreSQL、シミュレーションはCで、ユーザインタフェースはPHPで、というハイブリッド(笑)なつくりである。プラットホームは古いIntel Cerelon D “Prescott-V” 2.66GHzのマシン上に最初Fedora Core 5をインストール、順次アップグレードし、最後はFedora 9となっていた。

 2年ほど前からだったろうか、株価をネットからダウンロードするプログラムがうまく動かなくなってしまっていた。株価は「Yahoo!ファイナンス」の時系列データから無料で頂戴してくるのだが、これはデータではサービスされておらず、htmlの中から特徴的なタグに正規表現でマッチングさせて株価を取り出してくる仕組みになっていた。なので、うまく動かなくなっていたのは、さしずめYahoo!ファイナンスの仕様が変わり、htmlのフォーマットなどが変わったのだろう、と思っていた。実際、正規表現でマッチングさせて目的のデータを切り出すコードになっているから、わずかでもhtmlが変わると、途端に消化不良を起こすのである。

 原因究明や修理が面倒で、また、しばらく株式も値動きがあまりなくて面白くなかったから売買もしておらず、シミュレーションシステムも放りっぱなしになってしまっていた。

 そんな折も折、ここへきて、新型コロナウイルス蔓延により外出の自粛が推奨される事態となった。ために、やむなく家に垂れこめている。平日は仕事に(いそ)しんでいるからあまり暇はないが、休日などはどうしても無聊(ぶりょう)となる。

 そこで、意を決して上述のシステムを修理することにした。多分、Yahoo!ファイナンスの仕様、就中(なかんづく)htmlのフォーマットを分析すれば、すぐに修理できるだろうと思っていた。

 ところが、その推量は全然違っていた。

 株価ダウンロードプログラムは、htmlをダウンロードするのに、CPANの「LWP」ライブラリ等は使わず、Perl内から「wget」を呼び出して使っていた。そうしないとSSLの部分が面倒だからだ。

 問題は、このSSL部分にあった。Yahoo!全体の仕様が、TLS1.2未満のSSLを拒絶するよう変更されていたのだ。Fedora 9は、OpenSSL0.9.8までしか対応しておらず、そしてOpenSSL0.9.8はTLS1.0までしか対応していない。

 そこまで確かめて、やっと思い出した。私のシステムが動かなくなった2年ほど前というと、ちょうどSSLのセキュリティホールやSHA-1アルゴリズムの危殆(きたい)化などが取り沙汰され、あちこちのサイトやブラウザがどんどんバージョンアップされて行っていたのだ。

 私はその頃、仕事が非常に忙しく、自宅のPC環境など(かえり)みている暇がなかった。それで、他人事のようにそれらのニュースに接していたのである。

 原因は、wgetとOpenSSLが古い、ひいてはプラットフォームOSが古いことにあった。

 最新のFedoraシリーズのバージョンは「31」になっており、そもそも平成17年(2005)発売のCerelon Dのような32ビットCPUには対応していないから、もう、古いLinuxマシンはそろそろお払い箱だろう。

 私のデスクトップマシンはCore i7 4790K 4GHzにメモリは32GBをブチ込み、ストレージは1TBのHDDから、先日2TBのSSDに換装したところだ。されば、ここはもう、仮想化しかあるまい。

 VMWare Playerをダウンロードしてインストール。非営利であれば無料である。これにFedora 31のisoイメージを本家サイトから貰ってきてインストールする。

 動かしてみてびっくりした。私のような商用のSystem V育ちの者にとって、Linuxの「init」システムは長年慣れ親しんだシステムなのだが、Apache2を動かそうと/etc/rc.d/init.d/の下を覗いてビックリ仰天!何も入っていなくて、空っぽではないか!(笑)

 こ、これは……!とGoogle先生にお尋ね申し上げ、今は「init」は否定の憂き目にあい、「systemd」というものに置き換わっているということを知る。

 「systemctl」というサービス・コマンドの操作を調べ、これでhttpdを動かす。PostgreSQL、PHP、wgetなど必要なものをyum改め、「dnf」で次々とブチ込む。

 それから(おもむ)ろに株価ダウンロードシステムを動かす。……まったく何の支障もなく、プログラムの変更もなく作動するようになった。

 phpで作られたユーザインタフェースについては、POSTやGETの引数を直接グローバル変数として扱うことのできるかつてのPHPの仕様が廃止されてしまっており、そのままでは動かなくなってしまっていたが、そこは彌縫(びほう)的にパッチ当てをした。

 SELinuxを調整しないとPostgreSQLとPHPが協調動作しないなど、多少ひっかかったところもあったが、元の通り株価売買シミュレーションシステムは作動するようになった。

 さすがは Core i7 だ。生マシンから仮想マシンへの移設とはいえ、もはや骨董(こっとう)品に近い Cerelon の生マシンから移設しただけあって、C で書いたシミュレーション部分は、目を見張るような素晴らしいスピードでカッ飛んでいく。

 もともとこのシステムでは、過去5年分の株価データに対し、8900通り×49銘柄の売買シミュレーションを行っていた。Yahoo!ファイナンスに株価の整理値が出揃う20時50分頃から「cron」でこのシステムを起動していたのだが、これだけの組み合わせのシミュレーションを行うと、全部終わるのは23時くらいにはなってしまっていた。

 ところが今回の移設で、それらシミュレーションがなんと10分ほどで完了するようになった。かつて誰かが言っていたが、「稚拙で鈍足なアルゴリズムでも、意外にマシンパワーの進歩で解決されてしまう」ということの実例を目の当たりにした次第である。

 さて、そのようにしてシミュレーション結果を見てみると、やはり、新型コロナウイルスの影響で、相場は鉄火場と化している。大変な勢いで売買指標が出ている。これは大変だ。

 今この鉄火場に飛び込むのは危険である。ウイルス禍が一段落し、上昇相場になったところからが勝負だろう。

Google新OS、脱Linuxのマイクロカーネルと来た

投稿日:

 ほほ~……。

 ヒジョーに興味が持たれる。

Facdbookアプリ、やっぱりダメ

投稿日:

 先日アップデートされたAndroid版のFacebookアプリ、OSごと落ちる現象が改善されたかな、と思ったが、やっぱりダメである。

 現象が9割がた再現できるかな、というパターンは、携帯電話を起動した後、最初に立ち上げたアプリがFacebookだと、間違いなく落ちる、というところである。

Facebookアプリ調子悪い

投稿日:

 Android用のFacebookアプリ、調子が悪い。起動するたび、2回に1回はOSを道連れにして異常終了し、携帯電話全体が再起動するので、手間がかかってしょうがない。

 先月頃のアップデートから変になった。その後、更に1回アップデートがあったが、全く改善されていない。

 知っている人のアドバイスで、フィードバックを送るなどしてみたが、全然ダメである。

 「キャッシュ」や「データ」を削除してログインし直してみるなどしたが、ログインした途端OSごとリブートされてしまう。

 うーん、どうにかならんのか。

情報システム利用者に個人認証情報を正しく行使させるための着想

投稿日:

 ネタの中に一掬(いっきく)の真実を混入して書いてみよう。

 「会社や事業所の公用パソコンを私用に使うことを認めれば、情報セキュリティが弱くなるように見えて、実は強くなる部分もあるのではなかろうか?」という、公私混同を奨励しかねない馬鹿々々しい着想を得たのだ。

 以下、陳者(のぶれば)

 「情報セキュリティは『C・I・A』だ」と巷間(こうかん)よく言われる。「Confidentiality(機密性)」「Integrity(完全性)」「Availability(可用性)」の略である。

 この「C・I・A」なる見事な頭文字語(イニシャリズム)の出典を権威性のある文書に求めるなら、例えば「JIS Q 27000」というものがある。

 「JIS Q 27000」の標題を全部記すと、

jis_q_27000_1
JIS Q 27000『情報技術―セキュリティ技術―情報セキュリティマネジメントシステム―用語 Information technology – Security techniques – Information security management systems – Overview and vocabulary

……と、随分長ったらしい。

 ともあれ、この標題にある通り、「JIS Q 27000」は情報セキュリティに関する国定規格だ。日本工業標準調査会(JISC)のサイトで検索すると閲覧できる。

(直リンクを張りたいところだが、ダウンロードや印刷を制限するためのスクリプティングが施してあり、リンクを張っても無効になるので、検索ページに「JIS Q 27000」を入力して検索するのが手っ取り早い。)

 参考までに、この「JIS Q 27000」は「ISO/IEC 27000」を翻訳し、(わず)かな部分を削除したものだ。「ISO/IEC 27000」と言ってピンと来ない向きも、「ほら、『ISMS』のことだよ」と言うとパッと合点(がてん)がいくだろう。

jis_q_27000_2 この文書を繰ると、その中の「2.33 情報セキュリティ」という項目に、情報セキュリティとは何か、という用語の定義としてこの「C・I・A」が記されている。

 曰く、情報セキュリティとは、「情報の機密性,完全性及び可用性を維持すること」である、と。

 この「C・I・A」についてはよく言われるし、情報セキュリティの勉強などしている者なら誰でも(そら)んじているものだ。

 ところで、この「C・I・A」には、実は忘れられがちな「付け足し」がある。前に揚げた用語の定義の後半に、次のように書かれているのだ。

jis_q_27000_3「注記  さらに,『真正性』,『責任追跡性,否認防止』,『信頼性』などの特性を維持することを含めることもある。」

 JISによる翻訳が成るよりも古い頃に、ISMSを直接翻訳する等して使用してきた企業や事業所などでは、この「真正性 Authenticity」「責任追跡性,否認防止 Non-repudiation」をそれぞれ「識別認証」「否認防止」という風に翻訳し、ルール化等している場合がある。

 この「付け足し」、すなわち「注記」部分が実に味わい深い。この記事の着想の肝がこれである。

 「C 機密性」「I 完全性」「A 可用性」という情報セキュリティの三つの主要素は、すべて目的指向である。ところが、場合によっては含めることとされている「注記」のいくつか、特に「真正性」「否認防止」は、目的を達成するためこれを支える「手段」を指向している。そうした手段指向の点でも、この付け足しは味わい深い。

 「真正性」「否認防止」とは実際にどのようなことかを具体的かつ端的に言えとならば、例えば、利用者に固有のユーザIDとパスワードを必ず行使させる、ということなどがそれだ。つまり、

否認防止の図
否認防止の図
「X月X日XX時XX分XX.XXX秒に事務所の端末からログインし、許可されざるバイナリを外部メディアからコピーしたる何某(ナニガシ)、これにより今般(こんぱん)端無(はしな)くもウィルスをバラ()き、(あまつさ)えこれを因とする情報漏洩インシデントを惹起せしめ、会社に損害を与えたる段、誠に()って不届至極(ふとどきしごく)。よって切腹申し付くるもの也。仍如件(よってくだんのごとし)、上意ッ!」

……という沙汰がはっきりと決定され、それを何某氏が

「いえ、私はそんなことはしていません、誰か知らない奴が私のIDを勝手に使ったんです、私じゃありません、そうでなければこれはシステムのバグ、そう、バグですよッ!!何卒穏便(なにとぞおんびん)寛恕(かんじょ)下されたくお願い(たてまつ)りまするッ、上様お慈悲を」

などと言い逃れることが全く不可能な状態、つまり、

「ええい、その方のデジタル署名がなされたアクセスがログに残されておるッ!! しかも、その方のIDは、決して他人が行使することができない状態にあったことは、かくかくしかじか、これこれこうこうをもって技術上明らか!申し開きなど致すまいぞ、神妙にせい」

……という状態になっている、ということだ。

 それがまた、情報セキュリティ上の不手際な使用を利用者にさせないための冷厳な抑止力にもなる。この抑止力は「C・I・A」を支える手段となる。

 だが、「ユーザIDとパスワード」という、古くからある識別認証手段は、単純でコストが安いという大きな利点がある反面、それを適正に行使させるには、「ルールで利用者を縛り、ルールを守るという『人力』でシステム運用をするしかない」という欠点がある。社則や規則に「ユーザIDとパスワードは自分で管理し、特にパスワードは他人に漏らさないようにして、机の裏に付箋なんかで貼っておいちゃダメ」と書いておき、社員はそれを守る、という方式になってしまうのだ。この方式では、ルールを破る奴がいると、そこで識別認証の仕組み全体がまったくグダグダにダメ化してしまうということである。

 多く見られることだが、ユーザIDやパスワードが「共用」になっていて、何人もの人が使いまわしていたり、個人IDになってはいても、それを貸し借りすることがある、などという場面もかつてはよくあった。今でも所によってはそんなシステム利用を漫然と続けている企業や事業所もあるだろう。私がかつて見た光景には、利用者は共用IDでログインするのだが、端末の前に記録簿があり、ログインの都度氏名と利用時間を記入捺印する、というのもあった。こんなの、記入をサボッてもバレないから、即、無意味である。まあ、その方式を採用した管理職が、

「いや私は、現状でできるだけの、精一杯の管理の仕組みを整えたんです。だから無罪です。記入をサボッた部下が悪いんですし、記入を徹底させられなかった中間管理職が悪いんです」

と、後で言い訳をすることができるという意味なら、あることはあるのだが。

 もちろん、単純な「ユーザID・パスワード」でなしに、認証トークンとかカードとか、生体認証などを導入すれば、こういう「ダメ化」への相当な解決にはなる。しかし、こうした色々なデバイスは運用できる寿命が短かったり、値段が高かったり、適合するOSやハードウェアに制限があったり、導入は簡単ではない。

 これら諸々(モロモロ)を沈思黙考するうち、ふと考え付いた。

 合理的で安くつくのは「ユーザIDとパスワードの適正な行使を、利用者がどうしても自ら守らざるを得ない」という状況を作り出すことなのではなかろうか。「自分のパスワードなど、死んだって他人になんか教えるもんかい!」と、利用者自身が必死になる状況だ。

 そのような状況とは、どういう状況か。

 もし私が情報システム利用者で、自分のパスワードを上司にも同僚にも部下にも知られたくない、百歩譲って家族にも友人にも絶対知られたくない、自分以外の人間にユーザIDを行使されるなんて絶対嫌だ、……という理由があるとすれば、それは例えば

  • 「他人に自分のお金を使われてしまう」
  • 家族などのプライバシーに関する情報が見られてしまう」
  • 「ディレクトリの深いところにエロ写真を隠している」
  • 「ネットの変な閲覧履歴を見られたくない」
  • 「FacebookやTwitterなど、SNSのパスワードがバレると嫌だ。ライバル社員に俺の友達限定タイムラインを盗み見られてしまう」
  • 2ちゃんに書いたあの誹謗中傷、実は俺!!」

……などの、しょうもない理由だ。人によっては「浮気や性的嗜好などの、私行上の非行がバレるのが嫌だ」などという、オイオイオイおっさん大丈夫か系の秘密もあるだろう。女の人だったら、家族や恋人、あるいはスッピンとか変顔(ヘンがお)で写っている自分の写真データなどを見られるのが死ぬほど嫌だったり、もっと言えば乳だの胴だのの寸法とか体重、歳が明らかになるのなんて言語道断もってのほか、なんてのもあるかも知れない。

 どれもこれも実にクダラネェが、しかし個人にとっては喫緊(きっきん)の重大事である。クダラネェことばかりではない。病歴犯歴など、シャレにならないプライバシーだってあるだろう。

 しかし、上例は多分に冗談を含むものの、ある意味、人の世の真実ではないかと思う。スノーデンだのウィキリークスだののキーワードを散りばめるまでもなく、国や大企業の秘密が暴かれてざまぁ見ろと人々は溜飲を下げ、反面、プライバシーがネット流出すると青筋立てて損害賠償騒ぎになる、というのが現代の偽らざる世相であることを、誰でもが認めざるを得まい。昔とは違う。

 これを単純に表現すると、今日(きょう)び、

「天下国家の秘密なんかより俺の秘密」

……なんである。

 今はそんな世の中だ。いやまあ、これは人によるとは思うが。政治家や行政の首長(クビチョウ)さん、あるいは会社の経営者だったら逆に、「馬鹿野郎、俺の秘密なんかより天下国家の秘密にきまってンだろがボケッ!」と思うだろう。

 さておき、しかし、BYODで、「半分私物」のPCを仕事で使っていたら、そりゃもう、利用者はユーザIDやパスワードを全力で隠すと思う。恥ずかしいから。

 そこで逆に、天下国家の秘密を隠すためには、「天下国家の秘密と俺の秘密」を()()ぜにして、「天下国家の秘密をバラすような奴は、『俺の秘密』も同時にバレる」というふうな状況、つまり、

「俺の秘密が情報セキュリティの『人質』にとられている」

……という、そういう状況を作為してやればよいではないか。

 簡単だ。会社や事業所のPCを私用に使わせましょう。私用メール、私用ネット閲覧、私用データ保存、バリバリ一緒くたに公私混同させちゃいましょう。

 そうすると、もう、みんな必死で自分の情報と一緒くたになった会社の情報を守ってくれますよ。パスワードなんか、絶対に机の裏に付箋で貼り付けて置いたりしないでしょうよ、恥ずかしいですからね、浮気とかエロ写真とかスッピン顔とか2ちゃんに書き込んだ罵詈雑言とか盛ってない方のホントの乳のサイズとか色々とバレちゃいますからね、ええ、ええ。


 ……いやあ、こんなしょうもないこと書くのに、何も「JIS Q 27000」なんか持ち出す必要もなかったかなあ。途中から論がズコッ!っと音を立てて落っこちた気がする。うん。

最近の一般向けワンボード・コンピュータ、なかんづく「Arduino」「Raspberry Pi」の状況

投稿日:

平成28年2月
JISTA ML リレーコラム 第1回
会員 関東支部 jista1197 佐藤俊夫

1 はじめに

 このところ、若い方やDIYなどを楽しむ一般の方向けに、ワンボード・コンピュータが売られています。しかも、相当な売れ行きであると仄聞(そくぶん)します。

 「Arduino」や「Raspberry Pi」、「IchigoJam」「Intel Edison」「mbed」と言った製品名を聞いたことがある方も多いでしょう。秋葉原を歩くと、店の表にこれらのカラフルな箱が山積みになっています。また、イタリア人マッシモ・バンジ氏の「TED」スピーチを見たことがある方もたくさんおられると思います。

 数年前から、普及価格帯の3Dプリンタが出現してきたことにより、一般人でも小規模の製品を作り、それを世に問うようなことが可能になってきました。そこから、「Makers Movement」と言われる流行が盛り上がりはじめました。これはオープンソース・イノベーションの自然な興隆ということに加えて、出版と連携した一種のマーケティングの成功であるとも言われているようです。ちなみに、この「Makers Movement」について著書を出し、流行に火をつけたのはクリス・アンダーソンと言う人ですが、この人の名を覚えている方もJISTA会員の皆さんには多いことでしょう。そう、かの「ロング・テール」の著者その人です。

 古くから言われる「DIY」と、最新流行の「Makers Movement」との違いは、そこに「ネット」が介在するか否かだ、と言ってもよいと思います。物を作る上での発想やハウ・トゥ、設計図、使用感などは、インターネットを通じて迅速に共有され、改良が加えられ、更に共有されます。

 こうしたことを背景に、3Dプリンタを使用してものを作り、作ったものへデジタルやITのパワーを盛り込むことが広く行われるようになりました。ものへデジタルやITのパワーを盛り込むのには、廉価なワンボード・コンピュータがうってつけだというわけです。

 実際、巷間ではArduinoがこれまでに100万台、Raspberry Piが700万台売れたと言われていますから、これらのワンボード・コンピュータは、ITのプラットフォームとして無視できない勢力になっていると言えます。また、これらは安価に数を得られることから、「IoT」流行の趨勢とも関連する雰囲気が濃厚に感じられます。

 私は仕事の上ではこれらと関わっておりません。しかし、その一方で、ITストラテジの道というものは、ITワールドを形作るもののうちの何が将来の影響要素としてつながってくるかわかりません。そうしたことから、これらワンボード・コンピュータを体験しておくことが何かの足しになることもあろうと思い、ArduinoとRaspberry Piを少しばかりいじってみておりましたところ、ちょうど今般リレーコラム執筆の機会を頂きました。

 そこで、この機会をお借りして、ArduinoとRaspberry Piについて、その状況などを簡単に紹介させていただきたいと思います。

2 Arduinoについて

 「Arduino」はイタリア人のマッシモ・バンジ氏を中心に、平成17年(2005)から開発が始められたワンボード・コンピュータです。バージョンアップや派生を含め、既に数十種類の製品があります。現在店頭で入手可能な製品には、代表的な「Arduino UNO」があり、これは本日(平成28年2月7日)現在、税込み2,940円で手に入ります。

 その特徴に、次のようなことを挙げることができます。

○ ハードウェアが「オープンソース」であること。

 仕様も設計もオープンで、一般人がネットから基盤のパターンなどをダウンロードしてそっくり同じものを製作することも可能です。また、そのため、世界中にArduinoのクローンを作っている企業やグループがあり、それら自由なクローンの種類を数え上げることはもはや不可能と言う状況にあります。

○ 開発環境が無料で配布されていること。

 開発環境は統合環境(IDE)になっており、これも無料です。様々なライブラリが日々提供され続けており、一般に入手可能なほとんどのハードウェアやIC、電子素子などを扱うためのライブラリがGitHubなどですぐに手に入ります。

○ アナログ入出力、デジタル入出力が簡単に可能であること。

 「Arduino UNO」の場合、基板上にはデジタルI/Oが14本、アナログINが6本、アナログOUTが6本あります。これにさまざまな電子部品をつないで制御することができます。

○ C++で簡単にプログラミングできること。

 従来の「マイコン」はアセンブラ一辺倒でしたが、ArduinoはC++でプログラミングでき、しかも、ややこしいハードウェア・アクセスはC++のクラスの中にすべてカプセル化され、手軽に扱うことが可能になっています。ユーザはオブジェクトを生成し、入出力ピンを開いて読み、書くだけでさまざまなことができます。

 こうした特徴があるため、Arduinoを使用すると、一般人がデジタル・プロダクトを簡単に製作することができます。

 かく言う私も次のようなことを試しました。

「スマート・ファン」

 安物の扇風機にArduinoとEtehrnetインターフェース、温度センサをとりつけ、Webサーバをこの扇風機に実装してブラウザから制御できるようにし、温度によって風量を変え、1/fゆらぎ送風ができるなど、ものすごく無駄にリッチ化した扇風機です。

 1980円の安物扇風機をめっちゃ高機能化(笑)して、結構遊べました。

ウェブ扇風機

「メールサーバ監視ランプ」

 メール来着状況を監視し、ランプの色で教えてくれるもの。昔はISDN用のルータにこうした機能があり、パソコンのスイッチを入れていなくてもメールチェックのタイミングを教えてくれて便利だったのですが、今はこういうものがなくなってしまったので、意を決して自作したわけです。実は、今はスマホでこれは出来てしまうのですが、LEDの輝度のパルス幅変調などを試して遊ぶのに格好の題材でしたので、あえて試してみました。

メールサーバお知らせランプ

「多機能リモコン」

 赤外線リモコンのある電化製品を、Webで制御するようにしたものです。パソコンからでも、スマホからでも操作できます。赤外線LEDは秋葉原などで100円ほどで手に入りますので、これを試す人は非常に多いようです。

いよいよ多機能リモコン

「モーターで動くおもちゃの類をデジタル・パワードにする」

 おもちゃにArduinoを積み込むと、男の子などは大変喜びます。ここでは、モーターで動く自動車に超音波センサをとりつけ、自律制御させるとともに、その自動車にデジカメを乗せて動画を撮影しています。

虫瞰(ちゅうかん)カメラ

 私には男の子供はありませんが、私自身が男の子じみた中年(笑)ですので、みずからこういうことを試して遊びました。

 このように、Arduinoを使うと、手軽にさまざまな機器を制御したり、デジタルパワーを盛り込んだものを作ることが可能です。

 伝統的にArduinoにはAtmel社のマイコン「AVR」シリーズが使われていましたが、最新の製品「Arduino 101」にはIntelのCurieが採用され、Bluetoothや6軸の加速度ジャイロセンサーが搭載されるなど、大変高機能化しています。

 さて、目が離せないArduinoですが、昨年ごろから、長年Arduinoを牽引してきた5人の人たちが仲違いし、分裂騒動を起こしてまだ決着がつかず、もめているようです。Arduinoコミュニティは既に大きなものになっているので、この騒動は残念なことであり、かつ、目が離せないところです。

3 Raspberry Piについて

 「Raspberry Pi」はイギリス人のイブン・アプトン氏を中心に、Raspberry Pi財団というところが開発しているワンボード・コンピュータです。SONYなども深くかかわっていると聞き及びます。

 平成24年(2012)に最初のモデルが発売され、バージョンアップ等で数種類の製品があります。現在店頭で入手可能な製品の代表的なものに「Raspberry Pi 2 Model B+」があり、これは本日(平成28年2月7日)現在で税込み5,000円です。

 次のような特徴があります。

○ れっきとした「PC」であること。

 前述のArduinoは「マイコンボード」であり、OS等は載っておりません。しかし、Raspberry PiはSoCを利用するれっきとした「パソコン」で、OSを載せて作動します。主としてRaspberry Pi用に最適化されたLinux(「Raspbian」というディストリビューション)が作動するほか、マイクロソフトからは「Windows 10 IoT core」というWindows製品が、なんと無料でコントリビュートされています。余談、最近のマイクロソフト社の変革ぶり、オープンソースやフリーへのコミットぶりには驚くばかりです。それだけ、IoTにからむ製品に注目しているということでしょう。

 また、HDMI端子やUSB、Ethernetの端子を基板上に標準で備えているので、キーボードやマウス、ディスプレイをつないでPCとして利用することができます。

○ あらゆる開発環境が利用可能なこと。

 「Linuxマシン」なので、Linuxで利用できる開発ツール類は全て利用できると言って過言ではありません。Raspberry Piになじみの良いのはPythonで、入門本などにはPythonの作例が多く載っております。他にRaspberry Pi向けに最適化されたビジュアル言語の「Scratch」などもあります。しかし、別にこれらにこだわる必要はなく、GCCが走りますから、C/C++も使えますし、他にシェル、PerlやPHP、Ruby、Javaも扱えます。極端な話、g77をインストールして「FORTRAN」でハードウェア制御を行うことも可能でしょう(聞いたことはありませんが……)。私などは、RubyやPythonに暗いので、CやPHPでRaspberry Piのプログラムを書きました。

 エディタやIDEも、自分が使い慣れた好きなものが使えます。私はviが好きなので、Raspberry Pi上でももっぱらviを使っています。

○ 簡単にデジタル入出力が可能なこと。

 「GPIO」と呼ばれるデジタル入出力端子を豊富に備えていますが、これらは、ユーザからはUNIXで言う所の「ファイルシステム上にあるスペシャル・ファイル」に見えます。ですので、このファイルをオープンし、読み、あるいは書くだけで外部に入出力ができ、ハードウェアの制御が可能です。

○ あらゆるミドルウェア等が利用可能なこと。

 Linuxであるがゆえ、Linuxで使えるミドルウェアなどはほとんどのものが利用可能です。例えば、MySQLやPostgreSQLなどのRDBも扱えます。また、ApacheなどのWebサーバ、sendmail、DovecotなどのPOP/IMAPサーバなども走ります。

 こうした特徴があるため、既存のオープンソース・ソフトウェアを用いて、相当複雑なことも可能です。

 Arduinoと違って、Raspberry Piは単体ではアナログ入力ができません。そこで、私はRaspberry PiにADC(アナログ・デジタル変換)のICを接続し、これにサーミスタを取り付け、Apache+PHP+C言語を使用して「ウェブ温度計の製作」などを試してみました。

Raspberry Piで温度を測ろう

 また、PHPでハードウェア制御もできます。私はこんなふうに、PHPを使用して、Webインターフェイスにより家電製品のスイッチをオン・オフすることなどを試しました。

そうか、PHPでもモノにつながるな

 Arduinoに比べてRaspberry Piの歴史は浅いのですが、その出荷台数などから見ても新進気鋭の勢いを持っており、躍進中であると言えます。

 もともと5,000円ほどの値段で、高価ではないRaspberry Piですが、昨年(平成27年(2015))11月に流れたニュースでは、なんと650円(5ドル)という驚くべき価格の製品「Raspberry Pi Zero」もラインナップに投入されました。

Raspberry Pi Zero

 この値段と大きさでLinuxが走るのですから、驚きです。さすがにEthernetはついていませんが、USBの無線LANドングルを接続すればネットにつながります。

 「Raspberry Pi Zero」は、この値段と大きさのゆえに数量を稼ぐことができますから、IoTにからむ何らかのブレイク・スルーをもたらす可能性も相当にあると言えるでしょう。

4 むすび

 私などが若い頃には、ワンボード・コンピュータというとNECのTK-80にとどめを打ったものです。一定の年齢層の人には大変懐かしいものの一つです。

 他方、ここまで触れましたように、現在のワンボード・コンピュータは長足の進歩を遂げており、ますます興味の尽きないものに変貌しております。

 今回紹介したものは一般向けのものなので、エンタープライズでの応用については、別途考察と検討、研究が必要であると思われますが、既に一般向けには広く普及していることから、早晩業務用途にも応用が広がることが想像されます。

ユーザー作ったりとか

投稿日:

 Raspberry Piで遊ぶ。

 私が買ったのは、「Raspberry Pi 2 Model B」という最新のものだ。オライリー・Make:PROJECTSシリーズの「Raspberry Piをはじめよう」で解説されているのは古い方の「Raspberry Pi モデルA」「同B」なので、少しづつ合わないところがあるが、ごく細部を除いては、特に気にする必要はない。細部の違いが影響してくるのは、よほど高度なことをやる場合だ。

 今さら私が述べ立てることではないと思うが、私と同じような人で、Rasberry Piのことを知らない、という人に向けて書けば、結局はこうだ。

  •  Raspberry Piは、GPIOインターフェイスボードを積んだ普通のPCだと思えばよい。
  •  普通のPCなので、Linux系OS以外にも、Windows10なども使える。だが、成果物のほとんどはRaspbianというLinuxディストリビューション上で得られているので、OSにはRaspbianを選択しておくのが無難。
  •  前記GPIOは、普通にファイルに見えるので(と言っても、/devの下にデバイスファイルがあるわけではない;もちろん、シンボリックリンクでそういうふうにすることはできるが)、標準出力でファイルを開け、書いて閉じれば、それでGPIOにつないだ電子工作をコントロールできる。
  •  Arduinoに比べると、ロジックが正=3.3Vであること、アナログ入力がないことなどが違う。解説書「Raspberry Piをはじめよう」にも、
    「最初にRaspberry Piのニュースが流れたとき、それがArduinoキラーになるのではないかと多くの人が考えました。値段はたいして違わないのに、Piはずっと大きなCPUパワーを持っています。だったらArduinoを使う理由はもうない、というわけです。しかし、やがて両者は補完的な関係にあることが分かってきました。以下のような状況を考えると、ArduinoとPiを組み合わせるメリットが見えてきます。

    • Arduinoの豊富なライブラリと作例を活用したい。
    • すでにうまく動いているArduinoプロジェクトにCPUパワーを追加して、もっと高度なことがしたい。
    • 5Vで動作する回路を扱いたいが、Piは3.3V動作で、5V入力に対応しない。
    • 誰かがプロトタイピングの過程で少しばかり無茶をしてチップがダメージを受けた時(Arduinoのピンにモーターを直結している人を見たことがあります)、Arduinoならば数百円以下でスペアのチップを買って自分で交換することもできるが、Piでそれをするのはほぼ不可能。
    •  3Dプリンタ用コントローラのように高精度なリアルタイム処理を必要とするものを作るとき、リアルタイムOSとは言えないRaspbianよりも、命令サイクルを計算できるマイクロコントローラのほうが要求に適う可能性が高い

    (p.88冒頭から引用)
    ……等とある。

  •  Linuxなので、使い始めるにはとりあえずrootを把握して、ユーザを作ればよい。作りつけのユーザもあるが、私のようなおっさんは、まず
    「# useradd -g pi toshio ; passwd toshio ; mkdir /home/toshio ; chown toshio:pi /home/toshio」
    ……なんてことをやらないと落ち着かないのである。
  •  さまざまな作例等はPythonの利用が想定されているので、さまざまな作品例のマネがしたければPythonを使えばよいが、前記したように「普通のLinuxマシン」なので、PerlだろうがCだろうが、おっさん系の言語も全部使えるから、私のようなおっさんは自分が使いたい言語を使えばよい。

 なので、例えば、「Raspberr Piをはじめよう」の102ページあたりに載っている最初のLチカの例は、次のような方法でも再現できる。

#!/usr/bin/perl
#  perl2LED
#    perlでLチカ
#    27.8.16(日)
#    佐藤俊夫
#
open(GPIO25, ">/sys/class/gpio/gpio25/value");
GPIO25->autoflush(1);
while(){
  print GPIO25 1;
  sleep(1);
  print GPIO25 0;
  sleep(1);
}

……などとPerlで書き、「gpio25」をユーザ空間にエクスポートして、

# ./perl2LED

 とやると、LEDが1秒おきにチカチカするのである。

Raspberry PiでのLチカ最初の例
IMG_3285