ウクレレやギターや

投稿日:

 時疫(じえき)(ごも)りの無聊(ぶりょう)(まぎ)らわすためとて、妻がウクレレのセットを買い、長女がフォークギターのセットを買った。楽しそうに(つま)()いている。

 妻がウクレレを弾いているのを見ていると、自分も触ってみたくなり、「オイ、俺にもちょっと貸せ」と借りてみた。

 弾きたい曲のメロディーが根音かどこかに混じった和音を弾けばコードになることがわかった。C、F、G7、その他少しのコードを覚えると、「海行かば」(大伴家持作詞・信時潔作曲)が弾けることもわかった。

♪ ( C)(Dm)(Em)
 (G7)(C)くかば(G7)
 ( C)(E7)(F A7)
 (DmG7)生すか(C)(C7)……

……おおっ、こ、これは面白い。歌いながら弾くと楽しい。弦楽器ってこんな面白いものだったのか。

 ひょっとすると、この調子ならギターも弾けるかも!?というわけで、「オイ、お前のギターをちょっと俺にも貸せ」と、長女のギターを借りてみた。

 だが、「F」のコードのところで挫折した。……指が変になりそうだ。ギターを弾ける人はスゲェ。どんな指してるねん。指に骨が入ってないのとちゃうやろか。あんな変な指の形、変態やないとでけへん。

 などと吐き捨てつつも思い返すに、ピアノが少し弾けるようになった頃、そのことを人に話すと、「あんな左右の手や足がバラバラに動くようなことは常人のなしうるところではない。キチガイだ」というようなことを言う人がいたことを思い出す。

 キチガイでもなんでもない。相当上級の曲を弾く人のことは別として、ピアノの手足は、実はバラバラになんか動いていない。一定のリズムと規則で動いており、バラバラではないのだ、ということを、ピアノを1年ほど弾いてみているうちに実感・納得したことを思い出す。

 だから多分、ギターにも音楽のルールがあって、Fコードも多分なんてことはないのだろうと思うが、しかし、門外漢には極めて難しいのである。

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分ほどで完了するようになった。かつて誰かが言っていたが、「稚拙で鈍足なアルゴリズムでも、意外にマシンパワーの進歩で解決されてしまう」ということの実例を目の当たりにした次第である。

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

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

【妄想】システム開発・設計基本指針第九項

投稿日:

 例のアレをシステム開発で例えるなら、コーディング規約や設計規約よりも上位に置かれる「開発・設計基本指針」といった高レベルのルールと言って良いだろう。

 その会社は、無理なシステム化戦略によって一度は倒産寸前にまで傾いた経営をようやく立て直し、まさにこれから、というところであった。全社員が路頭に迷うかと思われたあの恐ろしい時代の経営の第一の反省点は、技術的にエレガントとは言えない開発・設計基本指針にあると考えられた。

 とりわけ、旧開発・設計基本指針では、ハードウェアへの直接アクセスについては最高経営責任者がこれを判断するとされていたため、結果的に総合的な経営陣の合議判断が排除される状況となり、ついには技術陣の専権事項となって、メンテナンスが不可能となるほどの複雑なハードウェア・アクセスがソースコードに埋め込まれていく状況となってしまっていた。

 新しい開発・設計基本指針ではこうしたことを深く反省し、技術的なエレガントさが追求された。株主の要求により、会社再生のおり経営陣に加わって再建に尽力した権威ある社外専門家達を招聘し、その意見を取り入れた。結果として、開発・設計基本指針の第九項に「ハードウェアへの直接アクセスを禁止する」という内容が盛り込まれた。また、ハードウェアにアクセスするための技術やノウ・ハウ、ハウ・ツーも、研究したり保持したりしない、と付記された。

 だが、経営立て直しから間もなく、いよいよ自社の基幹システムをこれにより刷新しようとしたとき、システム開発を取り巻く技術的トレンドは変わってしまっていた。標準化によるシステム・ライフサイクルの一元管理が新たなシステム開発パラダイムだと見なされるようになったのだ。そこで、会社の経営判断は、工場の生産ライン制御だけでなく、工場建屋管理システムの制御や、通風や採光、また給与、会計、人事システム、フィジカル・セキュリティなどの異質なシステム群をも単一システムとして一元管理し、これによりシステムの安定的な保守とコスト削減を実現するに決したのである。

 経営陣は商機に投じたシステムの早期完成を至上命題とした。このため、システム開発における技術的な適切性は、今回は二の次とされた。

 技術者たちは可及的速やかにシステムを完成させた。工場のラインを制御するとともに、給与や会計、フィジカル・セキュリティなどまで標準化・一本化することにより総合的で高速な経営判断が可能になった。またこのシステムは大幅なコスト削減も実現しており、会社の経営に大きく寄与することとなった。

 建屋管理システムのうち、特にフィジカル・セキュリティシステムはドアや窓の施錠機構、警報・監視装置などまで制御するため、ハードウェアへの直接アクセスが必要だったが、これは「最小限必要とされる矮小な事項に過ぎず、技術陣が当時当時の状況で判断して実装すべき事項である」とされ、技術陣の奮闘により最小限のハードウェア・アクセスでうまくシステム化された。

 一時期倒産寸前であった会社は、このシステム開発の成功もあって業界でも2位か3位の時価総額規模を回復し、有数の技術企業となっていた。

 このシステムはなんとはない不明瞭さと不安を(はら)みながらもその後長期間運用される結果となった。

 ところが、現在も稼働し続けているこのシステムのうち、特にフィジカル・セキュリティサブシステムのハードウェアへの直接アクセスが問題視されるようになった。

 ハードウェアへの直接アクセス部分は、はじめは規模も小さかったが、システムがメンテナンスされる際にソースコードもリファクタリングされ、個別にその場その場で書かれた間に合わせのコードでは既になく、気が付けばハードウェア直接アクセス用ライブラリとなって、全システムで最大のソースコード行数を費やす一大サブシステムとなっていた。

 だが、開発・設計基本方針の第九項には、「ハードウェアへの直接アクセスは、これを認めない。その技術は全社的にこれを保有しない」と書かれてあることには変わりがないのだ。

 当時の状況はこうだ。

 ハードウェアへの直接アクセスが禁じられているのに、ハードウェアの制御を実質的に命じられたプログラマたちは、

「ハードウェアアクセス用の海外製COTS利用ライセンスを購入してもらうしかない」

「だけど、海外製COTSは滅茶苦茶に高いし、それにウチの会社のフィジカル・セキュリティのハードウェアには合致しないから、特注カスタマイズしてもらうしかない」

「海外製COTSへロックインされる問題も怖い」

「だいいち、以前ウチの会社の経営が傾いて倒産寸前にまで追い込まれたのは、あの海外製COTSのメーカーにやられたようなものだ。だから、社内にはあの海外製COTSに対する感情的なしこりもある」

「これは上の方にかじ取りして貰うしかないよ」

……と、開発を暫時(ざんじ)停滞させざるを得なかった。

 そこへ、システムの早期完成を督励するため、本社から企画本部長が乗り込んできた。彼は

「君たちは何を屁理屈を言って手を(こまぬ)いているのだ?やるべきことであれば、テクニカルな規約や方針なんか、そんなもの、なんだというのだ。今すぐ技術者としてやるべきことをやれ!」

などと、いかにも琴線への触れ具合がいいようなことを言って技術者たちを鞭撻(べんたつ)した。

 技術者たちはこの本社企画本部長の容喙(ようかい)に従った。C言語で書かれたプログラムに、躊躇(ちゅうちょ)なくインライン・アセンブラのコードを埋め込み、ハードウェアに直接アクセスすることで問題を打擲(うっちゃ)ってしまった。まあ、ゆくゆくは経営トップから何らかの判断がなされ、そのうちにこの問題も整理されるだろう、それまでは辻褄(つじつま)の合わぬことは先送りだ。

 ところが、それから年余の時間が経つというのに何の判断もなされぬまま、このハードウェア・アクセス部分は、前述のように「社内申し継ぎ」の壮大なライブラリに成長してしまい、のみならず会社の資産にまでなったのだ。ところが、この大資産は経営トップの認めているものではない。

 中間管理層は困った。プログラマ個々が勝手にハードウェアにアクセスするコードをこっそり書いたと言うなら、それはプログラマの責任にして、露顕すれば個々のプログラマを叱責するなりして処分してしまえばよい。しかし、大きくなってしまったライブラリは、実質上会社の資産となっており、今更もうどうしようもない。それどころか、そのライブラリはもともとファクトリ用に書かれていたのに、パッケージ化されて社外に販売された金融などの大システムや、一般向けのホーム・セキュリティにまで組み込まれ、役立てられるようになってしまっているのだ。

 仕方なく、「このハードウェア・アクセスライブラリは、開発・設計基本指針には合致している。それは、ハードウェアにアクセスするための必要最小限の方法しか用いていないからである」という解釈が本社経営会議で議決された。全社が曖昧な薄笑いのうちにこれを聞き、受け取った。あの壮大なサブシステムが、「必要最小限」とな……?

 社員たちは、ひそひそと「どう考えたって開発・設計基本指針に違反しているよな、ウチのシステム」と言い合った。新入社員を教育するとき、教育係は

「このライブラリのコードは、ハードウェアへの直接アクセスを行っていない。素人がパッと見ただけならそのように見えなくもないが、これは、経営目的を達するため、必要最小限の処理を行っているのである。したがって、開発・設計基本指針の精神には合致している。……このコードがそう見えない者は、精神力でそのように見えるようになるまで頑張れ」

……などと教えるので、新人の失笑をかう始末である。

 社員一同、特に技術陣は釈然とせぬながら、ハードウェアに直接アクセスして迅速に目的を達することができるこのライブラリの恩恵に(あずか)るしかなかった。

 何度か、

「おかしいじゃないか、現にうまく動いているシステムが数多くあるにもかかわらず、これらは全社的な開発・設計基本指針とはまったく一致しておらず、経営トップもこれを資産として認めていない。ならば、開発・設計基本指針を変更すべきではないか」

という発議が行われたが、

「そのような現実路線は、技術的にエレガントとは言えない。技術至上主義を社是とするグループ会社全般の方針に違背する。この問題には、多くとも、コーディング規約などの部分的な改正や、パッケージ化して社外に販売しているものについては納品物メンテナンス規約などの新設により、限定的に対処すべきだ」

などという変ちくりんな理由で発議は認められなかった。枝葉で限定的に対応するなどということの、どこが技術的にエレガントなのか。

 だが、たしかに経営トップレベルの苦し紛れな判断回避も(もっと)もなことである。それはそうだろう。「できてしまったシステムに合わせて設計を変更する」などということがエレガントであるはずはない。それは出てきたバグを修正せずに、テストケースのほうを変更するようなものだ。設計に合致していなければ、そのシステムは作り直すべきなのだ。

 無論、現実には設計が間違っている場合もある。部分的な間違いが製造中に見つかり、設計を修正するということはあるだろう。だが、問題はそのような部分部分の誤りとは異なる。全員が薄々開発・設計基本指針の欠陥に最初から気づきながら誰もそれを言い出そうとはせず、本社の監査と株主が怖くて、開発・設計基本指針の欠陥をその場その場でうまくかわしながら大システムを製造してしまったのだ。

 もともと、この開発・設計基本指針は、一度は倒産寸前にまで傾いてしまった経営の反省点から生まれたものであり、トップからボトムまで、社員全員、倒産して路頭に迷うあの恐怖がトラウマとなって胸底に残り、この現状と乖離(かいり)した開発・設計基本指針に手が付けられないのだ。

改元・差別・多様性・測地系・カレンダー……

投稿日:

 以前、GIS(空間情報システム)について深く考えていた時、「地球上のある一点」とか、あるいは「宇宙のある一点」を何らかの座標で表した時、現実の空間に存在するその地点はただ一つであるにもかかわらず、使用する座標系によって表現や数値が異なり、あたかも違う地点が複数存在するかのようになってしまうのは、何としてもどうにかしなければならない、と思った。

 その頃、ちょうど日本では「測地成果2000」という標準が行き渡り、明治時代からの伝統である「ベッセル楕円体」を使用した所謂(いわゆる)「日本測地系」の使用をやめ、国際標準の「GRS-80」にほぼ完全に切り替え終わっていたが、切り替わる前後しばらくの期間、旧ベッセル楕円体測地系と、新GRS-80測地系が混在し、地球の同じある一点を示すのに、複数の数値が混在していた。

 そこへ、GPSの普及、またこれを活用したカーナビの普及で、米国主導の座標系である「WGS-84」も混在して使用されるようになった。そのため、当時の情報システム内部では、旧日本測地系、GRS-80測地系、WGS-84測地系の三つの測地系を矛盾なく混在させて作動させる必要があった。

 プログラミング技術上では、例えばC++やJavaなどのオブジェクト指向言語なら、こうした事態を解決するため「座標」のクラスを作り、クラス内部ではいずれか適切な座標系で数値を保持させる。その数値は「プライベート」にして隠蔽し、クラス外からの直接操作はこれを禁ずる。「アクセッサ」のみを使用して座標を操作するのだ。そして、いずれの測地系を使用して値を入力しても、内部では必ず空間の一点のみを指す値に変換して保持し、また逆に、値を取り出す際には、いずれの測地系での値を要求しても正しく取り出し可能とする。

 こうしたふるまいをするクラスを作ることで、プログラム内部では混乱も矛盾もなく座標を扱えるようになる。無論、アメリカの旧測地系であるクラーク楕円体をはじめとして、世界中の測地系を詰め込んでクラスをデラックス化するのもよい。

 さて、こうしたことを思い出していて、日付についても似たようなことを考える。

 世界には多様な文化があり、そのため、「ある日ある時間」を表すにも、文化や地域によってさまざまな表し方が存在する。思いつくまま挙げるだけでも、例えば教祖イエス・キリストの生誕を基準とする西暦、ヨーロッパのグレゴリオ暦やユリウス暦、太陰暦を基本とするイスラム暦、同じ太陰暦でも中華文化圏で用いられてきた干支(かんし)を使用する日付表現、日本の元号や朝鮮、就中(なかんづく)北朝鮮の現在の革命年号、日の出・日の入りを基準とした不定時法など、様々だ。

 だが、どんな日付表現をしようが、科学的には「ある日ある時間」は、ただ一つである。

 一方、コンピュータシステムは人間を支えるものであって、人間がコンピュータに奉仕しているようでは本末転倒だ。コンピュータはあらゆる日付の表現ができ、かつ、あらゆる日付の表現を受け取ることができることこそ望ましい。世界中の多様な文化を矛盾なく受け()れ扱うことができてこそ、人間に奉仕するためのあるべきコンピュータシステムの姿であると言える。

 しかるに、現在のコンピュータシステムはその点が貧弱である。「建久二年辛亥(うるう)十二月(ついたち)」と入力しても、「1192年1月17日」と入力しても、はたまた「587年のズー・アルヒッジャの13日」と入力しても全てこれを許し、かつ、それが同じ日付を指しており、また逆に、どんな日付表現の出力を要求されようと、考え得る限りの多様さで人間にこれを返すようでなければならない。

 今このようなことを考える理由は、ただ一点、畏きあたりにおかせられて、近々まさに譲位あそばされんとし、恐れながら改元の沙汰もこれあることと考えられるからだ。

 改元であろうと何であろうと、人間に奉仕するべきコンピュータシステムは、これを平然と受け()れるものでなければならない。そこに多大のシステム保守作業があるなどもってのほかである。

 だが、現代のコンピュータシステムはそこが貧弱であるため、改元で右往左往しなければならないのだ。

 それどころか、コンピュータシステム運用上の煩雑さを理由として、元号制に反対したり、イスラム文化やアジアの文化を否定し、「西暦で統一すべき」などと、多様な文化を蔑んでそれでよしとする差別主義者がIT技術者にすら少なからず見受けられるのは、あまりにも残念である。

SSLと株

投稿日:

 もう10年以上くらいにもなるだろうか、株式売買の指標表示を自動化し、「小魚を釣る」ようにして株を売買している。ところが、先週頃から、その自動化システムが動かなくなってしまった。

 私の株式売買は、夜に自作の株式売買シミュレータを作動させ、そのシミュレーション結果に従って手動で翌日の注文を出すという方法だ。注文そのものの自動化もやればできるだろうが、証券会社がAPIを公開してでもくれない限り、多少技術的な敷居が高いので、そこまではしていない。

 株式売買にはいろいろな指標があるが、その指標を使うのに必要な日数などのパラメータは、銘柄ごとに違う。また、指標ごとにも違うので、色々な組み合わせが出てくる。サラリーマンの場合、何十もの銘柄について、銘柄ごとに手作業でそんな組み合わせ作業を毎日している時間など、あるはずがない。

 そこで、色々なパラメータを組み合わせて、過去のデータを使って売買のシミュレーションを行うのだ。トレーディング用語では「バックテスト」と言う。私のシミュレータでは、現在は1銘柄につき約1万通り程度の組み合わせで売買を試す。

 そのシミュレーション結果で、「90%~100%成功するパラメータの組み合わせ」を抽出して表示するのである。実際のところ、そのパラメータの組み合わせで売買サインが出た時に売買すれば、まず9割は儲かる。1割の確率で損をするのだが、これは10銘柄を束にして注文しておけば、「1銘柄はハズレでも、残り9銘柄は当たり」になる。つまり、期待値として「9割は儲かる」理屈になるわけである。

 だが、私が最も工夫した点は実はそこではない。

 私は勤めており、職務に専念する義務がある。これはサラリーマンなら誰でも同じだと思う。仕事中に株式の売買などすれば、免職になってしまう。そこで、このシミュレーションは、売買サインをリアルタイムの株価で出すのではなく、「前日までの株価でシミュレーションし、翌日約定の注文を出した場合で最適なパラメータの組み合わせ」をシミュレーションにより求める。こうすることで、「前日の夜から当日の朝にかけて、自宅で注文しておく」ことができる。つまり、「サラリーマンが職務外の余暇に自宅で自分の金融資産の管理をしているだけ」という形を整えることができるのだ。

 多くのサラリーマンは株で損をするが、それは、株式の必勝本などには、「今の株価」で売買しなければならないような方法しか書かれていないからだ。これだと、例えば、ある日の経済ニュースなどでその日の株価について知り、夜帰宅して、翌日の注文などを出しても、もう手遅れなのだ。だが、私のシミュレータは翌日の注文で十分なように計算するので、サラリーマン向けなのだ。

 シミュレーションに必要な日々の時系列データは、「Yahoo!ファイナンス」から無料で拝借してくる仕組みである。夜にその日の終値が確定した頃、自動的に株価をダウンロードしてくる。無料で済ませるため、生のhtmlを持ってきて株価データをその中から切り取り、データベースに格納する仕組みだ。

 システムはLinux上で動作する3層クライアントサーバシステムである。ユーザインターフェイスはphpで書かれており、Webサービスだ。株価データは、Perlで書かれたスクリプトを定期起動して、前述のようにしてネットから無料で持って来る。データベースはPostgreSQLを使用している。シミュレーションは高速化を図るためCで書いてある。

 ここ数年、何ら不調なく快調に作動していた。ところが、先週から急に動かなくなってしまった。

 短期の株式売買は毎日の値動きに注意していなければならない。私はこの値段の監視を自動化していたわけだ。ところがこれが動かなくなるとお手上げだ。自分で毎日株価を見なければならなくなってしまう。私もそれなりに忙しいので、何十銘柄もの株価チェックを自分でするなんて馬鹿々々しいことは御免である。

 早く原因を調べなければならなかったが、春の人事異動で職場が変わったりして、手が付けられないでいた。ようやく、今日になって原因を調べることができた。

 調べてみると、どうやら、株価データの拝借先である「Yahoo!ファイナンス」の仕様が変わったようだ。これまで非SSLでもサービスしていたのだが、先週頃完全にSSLに改まったらしい。他方、私の「株価データ拝借スクリプト」はPerlで書いてあり、内部で「wget」を呼び出し、これを用いて「時系列株価ページ」を持って来て、その中からデータを切り出す仕組みなのだが、ハードコーディングしてあるURLのスキームは「http」なのである。

 なるほどよしきた、とばかり、これを「https」に変えて試したが、wgetはブラウザのように簡単にはSSL証明書を扱うことができない。

 ググッてみると、「そういう時にはwgetのオプションに『––no-check-certificate』って書いとけ!」と、どなたかが既に調べて書いておられる。ありがたや。

 そこで、作動させるwgetのコマンドラインは次のようになるわけだ。

$ wget --no-check-certificate -q -O - https://info.finance.yahoo.co.jp/history/?sy=1983&sm=1&sd=1&tm=d&code=銘柄コード&p=1 | nkf -w 

 URLのスキーム部分を「https」にし、「––no-check-certificate」にするだけである。

 株価時系列データのページの作りが変わってしまっているとこれだけでは駄目なのだが、どうやらページの作りは同じらしく、今のところうまく行っているようだ。

エレクトーン少女の Canon Rock

投稿日:

 この女の子、ちょっと前から有名だが、本当に楽しそうに弾いていて、すばらしい。美しいし、才能もある。

 「Canon Rock」って選択も、いいなあ。

(参考:本家Jerry Cの元祖「Canon Rock」)

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

投稿日:

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

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

 以下、陳者(のぶれば)

 「情報セキュリティは『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」なんか持ち出す必要もなかったかなあ。途中から論がズコッ!っと音を立てて落っこちた気がする。うん。

プログラミングを何読んで覚えたんだったか

投稿日:

 美しいお姉さんが電車の中で「たのしいプログラミング Pythonではじめよう」なんつー本を読み耽っているのを見た。そのお姉さんはどうもプログラマなどには見えない。カジュアルな感じのお姉さんが、カジュアル~、に、そういう本を読んでいる。ああ、時代だなあ、と思う。

 そういえば、私自身はプログラミングの入門本というものを読んだことがないことに気づいた。BASICで8ビットプログラミングをしていた頃は入門本などなくても、マシンのリファレンス・マニュアルで十分だったし、機械語やアセンブラなどは命令表を見てプログラムを作ったものだし、それ以降も、例えばCだったらカーニハンとリッチーの「プログラミング言語C」、C++だったらストラストラップの「プログラミング言語C++」、Javaだったらゴスリングの「プログラミング言語Java」など、それらの言語の開発者が書いたものを参考にして覚えてきた。

 今はほとんどネット上のリファレンスで間に合ってしまう。だからPHPや、あるいはCSSとかHTMLの参考書など1冊も持っていない。

 そうなってしまった理由は、多分古い時代からプログラミングに親しんできたからだと思う。世の中の進歩に合わせて、自分も少しづつ進歩してきたので、入門本を必要としなかったのだ。

 だから、私のやり方はこれから入門する若い人には全く参考にならないということになる。

 ということは、さしずめ私など、「参考にならない、何の役にも立たぬ先輩」ということになるわけだ。後輩の指導には向かぬ。ハァ。

Apple製品を買うのは初めてだ

投稿日:

 美大に進学した長女にMacBookを買ってやる約束だったが、今日まで忙しく、なかなか果たせていなかった。

 ちょうど今日は長女も暇で、私も休みになった。久しぶりに父娘肩を並べ、近所のPC-DepotのAppleブースと、秋葉原ヨドバシ1FのAppleフロアへ行って品定めしてきた。

 やはり絵画やデザインをやるのには、少々スペックを奢らなければならないようだ。「MacBook Pro 15インチ Retinaディスプレイ・モデル」のうち、Intel Core i7 2.2GHz クアッドコアのモデルを購入することにした。

 時代は「オムニチャネル」ということらしいが、なんというか、「コッチから手動オムニチャネル」というかマニュアルO2O(オー・ツー・オー)というか(笑)、店からさっさと帰宅して、Amazonにyodobashi.com、価格.com、もう、eコマースサイト総当たりである。

 やはり、価格.comの最安店にまさる店はない。アップル本サイトより2割くらいは安い。……というわけで、21万1千101円(税込)でポチ。

 それにしても、今までApple製品に縁がなかったのは、実は「嫌い」だったからである。開いているように見せかけて、実は閉じ切った商売っぷりや、作ったスノビズムっぽさなどが嫌いだったのだ。また、劇的な病死のこともあって尊敬されているジョブズ氏も実は嫌いで、ウォズニアック氏の真直さに比べたら、伝え聞くジョブズの若い頃の暴君ぶり、没義道(もぎどう)っぷりなんて、もう、辟易するほどのものだ。

 だが、長女のためとならば親馬鹿にもなるというものである。

 さて届くのは来週。なんだか楽しみだぞ。若い頃、Apple II c/eやMacintoshなんてものは、高価で手が出なかったんだもんなあ。長女のものとは言え、iPhone含めApple製品が我が家の敷居をまたぐのは全く初めてのことである。

最近の一般向けワンボード・コンピュータ、なかんづく「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にとどめを打ったものです。一定の年齢層の人には大変懐かしいものの一つです。

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

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