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

投稿日:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

投稿日:

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

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

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

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

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

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

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

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

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

秋葉原ヨドバシとiPhone

投稿日:

 秋葉原ヨドバシ1階のスマートフォン売り場、その中でも特にカバーや充電器類などのアクセサリー売り場を見て歩くと、スマホのシェアが機種ごとの面積比となって露骨なくらいに現れていることが見て取れる。ヨドバシという大きな企業の市場調査の結果を立体図として体感し、かつまた拝借できるので、私はよくここを訪れる。

 秋葉原ヨドバシオープンから5、6年このかた、それは間接的に、学ぶべきプログラミングの属性にさえも多大なる示唆を与えていて興味深い。スマホのシェアとプログラミングは、一見無関係なようでいて、実はかなり強く関係している。

 フィーチャーフォンのアクセサリやフィルム、カバーを満艦飾に陳列してあったこの売り場が、突如としてスマートフォン関係8割という占有率になった頃のことを思い出す。5年くらい前だろうか。それと見るや、予感のとおり私の手元にも、Android、Javaテクノロジ周辺、Eclipse、IA以外アーキテクチャと言った関連物の調査の仕事が舞い込んだものだ。おかげで、予感にしたがって多少の準備もしていた私は、少しばかり上司の覚えもめでたくなったものだった。当時手がけていた研究の一環として、私もみずから幾つかのプログラムを書き、私物の電話もAndroidに変えるなどした。

 今、このスマートフォンのケースやカバー類の売り場の、ざっと6割以上はiPhone用で埋め尽くされている。タブレットのアクセサリも同じで、iPadが過半である。Android勢で元気なのはSONYのXperiaシリーズ、タブレットで台湾ASUSがNexus 7メーカーとして頑張っている程度のもので、あとはジリ貧だ。Androidの売り場はどんどん狭くなっている。

 これまでどおりであるなら、さっさとiPhone流のObjective Cのプログラミングを体験するなり身につけるなりすればいいようなものだが、私は日本語の参考書で自由に楽しくプログラムを書きたいと思っている変なおっさんであり、こうしたiPhoneの天下を苦々しく感じている一人でもある。なかなかどうして、Apple派になれるものではない。「野球は巨人、お笑いは吉本、戦争はアメリカ、電話はiPhone」て、なんでもかんでもそんな、一番モノばっかりって、なんっか、腹立つじゃないですか(笑)。

(この文章は、当時Facebookのストーリーに書いたものです。(そのストーリー))