亭主ドライバ

投稿日:

 去年のいつぞやの夕刻のこと。

 ウィスキー呷ってダラダラしてたら、「ちょっとお父さん、台所手伝ってよう~」と妻の悲鳴である。どうも洗い物など、台所がたまってしまったようだ。

 もとより、家庭において妻の命令は絶対厳守である。妻は家庭の首相であってみれば、その命令はたとえ家長の私であろうと、墨守死守でなければ近代立憲制度の実をないがしろにすることに繋がっていってしまう。

 それはさておき、妻は台所に私を呼びつけるや、じつにテキパキと私をドライブしはじめるのである。

「抽斗からラップ出して。……違う、右の抽斗ッ。もう~」

「冷蔵庫あけて水に漬けた生姜の鉢をだして!」

「それにラップかけて、野菜室にしまうのよ。」

「それから、フライパンの生姜焼きの残り、アルミカップに小分けにして。」

「それをラップに包んで。休み明けにお父さんのお弁当に入れるんだから。……あーっ、だめよ、ピチピチに包んだら。ふんわり包むのよ。……あーっもう、それは、こう!こういうふうに!!」

「終わったらアッチの椅子に座ってて!」

 これらのことを、自分は洗剤を計ったり皿を洗ったり製氷皿に水を足したり布巾を漂白したりしながら、ピシピシと責め立てるように命ずるのである。

 随所にパイプライン処理や、時として分岐予測なども入ってその最適化っぷりは有無を言わせぬ。

 多分、妻は私よりCPUコアや同時処理可能なスレッドが多い。

 ……ああ、妻はウチの総理大臣なんかするより、4ビットCPUのプログラマになったほうがよっぽど向いていたのではないかと、腹の底から思うわ。

うぉーっとっとっとっ……

投稿日:

 ぐは、……。マジかい。やりおったの~……。

 IoT、携帯、まあ、その辺だろうなあ。孫正義、「一人あたり千台、一人につきIPアドレス千個必要」とか言ってたから、本当にそのあたりにコミットするつもりなんだろうなあ。

 それに、なんつったって、Raspberry Piなんかも、CPUはARMなんだよな。

構造化できるToDoアプリケーション、ないしアプレットがほしい

投稿日:

 職場でMicrosoft Outlook の機能のひとつ「タスク」を愛用している。これは手軽にToDoリストを作ることができるものだ。

 私のような程度の低い人間は、自分のやることをいちいち書き出してそれを見ながらでないと、漏れなく順番に仕事をすることができないのである。いわば業務予定やToDoはコンピュータのプログラムみたいなもので、その例えでいくと私など、コンピュータのCPUなみのバカである。……いえね、コンピュータのCPUなんてものは、バカなんですよこれは。書き出してあることしかできないんですからな。

 おっと脱線しそうだ。

 Outlookの「タスク」はうまくできており、時間をセットしておけば実施時間になるとアラームが鳴るし、必要に応じて予定表にドラッグドロップすれば予定表に入るし、メールなどをドラッグドロップすれば添付ファイルや必要な資料もまとめられる。私は使用していないが、コストを入力する機能や進捗度を入力するところもあるので、簡単なEVM等のもとネタ帳に使用することもできる。

 てんやわんやの今の職場で、このToDoにどれくらい助けられたかわからない。これがなかったら、一つふたつ、重要な仕事を忘れるか、期限に遅れてしまい、取り返しの付かない失敗をしてしまっていただろう。

 ただ一点惜しむらくは、このToDoは「階層構造化」ができないのである。「階層構造化」と言ってわかりづらければ、「各項目にインデントがつけられない」と外面から言えばわかると思う。

 つまり、タスクにも構造がある。ある仕事はある仕事の子項目であったり孫項目であったり、親項目、兄弟項目であったりするのである。

 しかも、それが随時変わることがあり、かつ、ある子項目に親が複数あるなどというネットワーク構造じみたものになることもある。

 工夫すれば階層構造の表現は、Outlookでもできないことはない。フィールドを必要な個数追加する。この個数が構造化の階層の深さの制限になる。そして、そのフィールドに数字を入れ、それにしたがってソートするのである。

 しかし、その工夫の仕方だと、ぱっ、ぱっと思いついた「今日やるべきこと」を素早く入れておき、後で整理するということができないのである。

 適当に入力した後で、例えばWordのアイコンにある「インデントの追加」のようなものをクリックすると、インデントと同時に直前の項目の子項目になる、というふうになっていたら、手軽なのになあ、と思う。

ユーザー作ったりとか

投稿日:

 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

電気、電波その他

投稿日:

 昨日、友達がチャットで「夏のせいか、どうもPCが過熱気味のようだ」と言った。

 チャットしながら、昔学んだ電波や電気のことを思い出した。感懐片々、思いつくまま、次のようなことを友達に話した。

 もともと、「電気」というものは、自然現象を人間の生活に応用したものだ。したがって、簡単な電気の働きは、ごく天然自然の性質を出ない。

 自然のままに放っておかれている電気の、さまざまなはたらきや特性をグラフに取れば、雷のような急峻なものを除けば、多くは2次曲線や正弦波のような美しいグラフになる。

 電気の眷属である、交流や電子、電波と言ったものもこれは同じで、まことに多くのことが2次曲線や正弦波で説明がつく。これらは「微分可能」なはたらきであり、大変自然なものだ。

 ところが、電子計算機だけが、異質である。

 電子計算機はスイッチの入・切という、まことに単純きわまる論理ですべての計算をまかなっている。二進数を使用するゆえんがこれである。

 スイッチの入・切によって生じる電気の経過をグラフにとれば、これは「矩形波」となる。

 正確な矩形波は、微分できない。つまり、自然なものではない。

 このような、大変人工的なものを、この小さなPCのケースの中に無理矢理に閉じ込めて使役しているのであるから、熱も出ようというものだ。

 ここをもう少し、違う方向から見てみたい。「微分できない」と書いたが、実際のコンピュータの内部では、スイッチの入・切をそれほど急峻に行うことができないので、矩形波の形は少し「ナマッて…」いる。くだけて書けば、カドが少し、斜めだったり、丸かったりする。

 このような矩形波は、実は、正弦波を組み合わせて作ることができる。

 いま、理論的に、3GHzの矩形波を正弦波から得る。それには、まず3GHzの正弦波を作る。美しく、なめらかに上下する波だ。これに、周波数が3倍(9GHz)、強さが3分の1の波を足す。そうすると、波の頭のところがふたこぶラクダのようにへこんだような形に変化する。

 更に、周波数が奇数倍、強さが奇数分の1の波をどんどん足しこんでいく。次第に形が四角く整えられていき、矩形波が作られていく。つまり、数学で習う「フーリエ展開」のところがこれである。

 ここには逆のことが含まれている。つまり、3GHzの矩形波には、その奇数倍の周波数の電気エネルギーが内包されている、ということである。

 3GHzくらい、と言えば、今一般に入手可能なパソコンの、CPUのクロック周波数がこれくらいである。パソコンの内部ではこれくらいの矩形波が作られて、計算のリズムをとっている。

 そのパソコンの中には、9GHzや15GHzや21GHzという、たいへん高い周波数の電気エネルギーが、同時に閉じ込められている、ということだ。

 電気のエネルギーは、周波数が高くなればなるほど、媒体の外へ外へと出て行こうとする。ラジオやテレビにしても、電気エネルギーのこうした性質を用いて、遠隔の場所にエネルギーを伝達することにより、情報を伝える。

 パソコンの内部の、大変高い周波数の電気エネルギーが、「外へ出よう出よう」として、あるものは熱の形となって外に出て行くのは、こうした点からも無理からぬことだ。

 また、この「3GHz前後」の周波数は、電子レンジにも使用されている。水分子の共振を行わしめるのにちょうど良い周波数がこれだからだが、われわれが使用するIT機器、パソコンのCPUのクロックだけでなく、無線LANや携帯電話なども、似たような周波数を使う。煮炊きに使えるような周波数なのであるから、ざっくりと言えば、そりゃあ、熱も出ようというものである。

 …そんなことを話した。

 ただ、この友達は女の人で、たいへん女性らしい人でもあるので、あとから考えてみると、だいぶ退屈な話だったかもしれない。

(この文章は当時Facebookのタイムラインに書いたものです。)

電波と熱と女の人

投稿日:

 昨日、友達がチャットで「夏のせいか、どうもPCが過熱気味のようだ」と言った。

 チャットしながら、昔学んだ電波や電気のことを思い出した。感懐片々、思いつくまま、次のようなことを友達に話した。

 もともと、「電気」というものは、自然現象を人間の生活に応用したものだ。したがって、簡単な電気の働きは、ごく天然自然の性質を出ない。

 自然のままに放っておかれている電気の、さまざまなはたらきや特性をグラフに取れば、雷のような急峻なものを除けば、多くは2次曲線や正弦波のような美しいグラフになる。

 電気の眷属である、交流や電子、電波と言ったものもこれは同じで、まことに多くのことが2次曲線や正弦波で説明がつく。これらは「微分可能」なはたらきであり、大変自然なものだ。

 ところが、電子計算機だけが、異質である。

 電子計算機はスイッチの入・切という、まことに単純きわまる論理ですべての計算をまかなっている。二進数を使用するゆえんがこれである。

 スイッチの入・切によって生じる電気の経過をグラフにとれば、これは「矩形波」となる。

 正確な矩形波は、微分できない。つまり、自然なものではない。

 このような、大変人工的なものを、この小さなPCのケースの中に無理矢理に閉じ込めて使役しているのであるから、熱も出ようというものだ。

 ここをもう少し、違う方向から見てみたい。「微分できない」と書いたが、実際のコンピュータの内部では、スイッチの入・切をそれほど急峻に行うことができないので、矩形波の形は少し「ナマッて…」いる。くだけて書けば、カドが少し、斜めだったり、丸かったりする。

 このような矩形波は、実は、正弦波を組み合わせて作ることができる。

 いま、理論的に、3GHzの矩形波を正弦波から得る。それには、まず3GHzの正弦波を作る。美しく、なめらかに上下する波だ。これに、周波数が3倍(9GHz)、強さが3分の1の波を足す。そうすると、波の頭のところがふたこぶラクダのようにへこんだような形に変化する。

 更に、周波数が奇数倍、強さが奇数分の1の波をどんどん足しこんでいく。次第に形が四角く整えられていき、矩形波が作られていく。つまり、数学で習う「フーリエ展開」のところがこれである。

 ここには逆のことが含まれている。つまり、3GHzの矩形波には、その奇数倍の周波数の電気エネルギーが内包されている、ということである。

 3GHzくらい、と言えば、今一般に入手可能なパソコンの、CPUのクロック周波数がこれくらいである。パソコンの内部ではこれくらいの矩形波が作られて、計算のリズムをとっている。

 そのパソコンの中には、9GHzや15GHzや21GHzという、たいへん高い周波数の電気エネルギーが、同時に閉じ込められている、ということだ。

 電気のエネルギーは、周波数が高くなればなるほど、媒体の外へ外へと出て行こうとする。ラジオやテレビにしても、電気エネルギーのこうした性質を用いて、遠隔の場所にエネルギーを伝達することにより、情報を伝える。

 パソコンの内部の、大変高い周波数の電気エネルギーが、「外へ出よう出よう」として、あるものは熱の形となって外に出て行くのは、こうした点からも無理からぬことだ。

 また、この「3GHz前後」の周波数は、電子レンジにも使用されている。水分子の共振を行わしめるのにちょうど良い周波数がこれだからだが、われわれが使用するIT機器、パソコンのCPUのクロックだけでなく、無線LANや携帯電話なども、似たような周波数を使う。煮炊きに使えるような周波数なのであるから、ざっくりと言えば、そりゃあ、熱も出ようというものである。

 …そんなことを話した。

 ただ、この友達は女の人で、たいへん女性らしい人でもあるので、あとから考えてみると、だいぶ退屈な話だったかもしれない。